diff --git a/.eslintcache b/.eslintcache index a0b1cf9..e57558e 100644 --- a/.eslintcache +++ b/.eslintcache @@ -1 +1 @@ -[{"C:\\Development\\IdleViteVue\\.eslintrc.js":"1","C:\\Development\\IdleViteVue\\postcss.config.js":"2","C:\\Development\\IdleViteVue\\tailwind.config.js":"3","C:\\Development\\IdleViteVue\\vite.config.js":"4","C:\\Development\\IdleViteVue\\src\\App.vue":"5","C:\\Development\\IdleViteVue\\src\\main.ts":"6","C:\\Development\\IdleViteVue\\src\\routes.ts":"7","C:\\Development\\IdleViteVue\\src\\shims-vue.d.ts":"8","C:\\Development\\IdleViteVue\\src\\store.ts":"9","C:\\Development\\IdleViteVue\\src\\components\\AntSimulation.vue":"10","C:\\Development\\IdleViteVue\\src\\views\\Adventure.vue":"11","C:\\Development\\IdleViteVue\\src\\views\\AntResources.vue":"12","C:\\Development\\IdleViteVue\\src\\views\\Home.vue":"13","C:\\Development\\IdleViteVue\\src\\views\\NotFound.vue":"14","C:\\Development\\IdleViteVue\\src\\stores\\adventureStore.ts":"15","C:\\Development\\IdleViteVue\\src\\stores\\gameStore.ts":"16","C:\\Development\\IdleViteVue\\src\\views\\Debugger.vue":"17","C:\\Development\\IdleViteVue\\src\\views\\Inventory.vue":"18","C:\\Development\\IdleViteVue\\src\\stores\\inventoryStore.ts":"19","C:\\Development\\IdleViteVue\\src\\components\\InventoryItem.vue":"20","C:\\Development\\IdleViteVue\\src\\types\\itemRegistry.ts":"21","C:\\Development\\IdleViteVue\\src\\firebase.ts":"22","C:\\Development\\IdleViteVue\\src\\components\\Modal.vue":"23","C:\\Development\\IdleViteVue\\src\\views\\PrestigeShop.vue":"24","C:\\Development\\IdleViteVue\\src\\views\\Settings.vue":"25","C:\\Development\\IdleViteVue\\src\\stores\\prestigeStore.ts":"26","C:\\Development\\IdleViteVue\\src\\types\\AdventureEnemyWaves.ts":"27","C:\\Development\\IdleViteVue\\src\\components\\StorageButtons.vue":"28","C:\\Development\\IdleViteVue\\src\\views\\Tunnels.vue":"29","C:\\Development\\IdleViteVue\\src\\stores\\tunnelStore.ts":"30","C:\\Development\\IdleViteVue\\src\\components\\PrivacyModal.vue":"31"},{"size":758,"mtime":1725657576729},{"size":83,"mtime":1725657576792},{"size":726,"mtime":1725826628130},{"size":177,"mtime":1725657576822},{"size":83,"mtime":1725657506695,"results":"32","hashOfConfig":"33"},{"size":1843,"mtime":1725898066056,"results":"34","hashOfConfig":"33"},{"size":272,"mtime":1725660566335,"results":"35","hashOfConfig":"33"},{"size":120,"mtime":1725474178300,"results":"36","hashOfConfig":"33"},{"size":90,"mtime":1725474178300,"results":"37","hashOfConfig":"33"},{"size":26740,"mtime":1726305836504,"results":"38","hashOfConfig":"33"},{"size":6455,"mtime":1726153438227,"results":"39","hashOfConfig":"33"},{"size":23448,"mtime":1726241735608,"results":"40","hashOfConfig":"33"},{"size":16193,"mtime":1726330714691,"results":"41","hashOfConfig":"33"},{"size":436,"mtime":1725474178301,"results":"42","hashOfConfig":"33"},{"size":21075,"mtime":1726174658422,"results":"43","hashOfConfig":"33"},{"size":37441,"mtime":1726323653628,"results":"44","hashOfConfig":"33"},{"size":5332,"mtime":1726308463102,"results":"45","hashOfConfig":"33"},{"size":6359,"mtime":1726062914087,"results":"46","hashOfConfig":"33"},{"size":5635,"mtime":1726220013557,"results":"47","hashOfConfig":"33"},{"size":1979,"mtime":1726080736057,"results":"48","hashOfConfig":"33"},{"size":8553,"mtime":1726173039206,"results":"49","hashOfConfig":"33"},{"size":1173,"mtime":1725903219799,"results":"50","hashOfConfig":"33"},{"size":1290,"mtime":1725801294724},{"size":7345,"mtime":1726330753691,"results":"51","hashOfConfig":"33"},{"size":2260,"mtime":1726320294613,"results":"52","hashOfConfig":"33"},{"size":17281,"mtime":1726319298557,"results":"53","hashOfConfig":"33"},{"size":15448,"mtime":1726174658427,"results":"54","hashOfConfig":"33"},{"size":824,"mtime":1726217231395,"results":"55","hashOfConfig":"33"},{"size":5123,"mtime":1726232778366},{"size":6082,"mtime":1726232892390},{"size":3897,"mtime":1726321869441},{"filePath":"56","messages":"57","suppressedMessages":"58","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"adzkch",{"filePath":"59","messages":"60","suppressedMessages":"61","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"62","messages":"63","suppressedMessages":"64","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"65","messages":"66","suppressedMessages":"67","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"68","messages":"69","suppressedMessages":"70","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"71","messages":"72","suppressedMessages":"73","errorCount":0,"fatalErrorCount":0,"warningCount":41,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"74","messages":"75","suppressedMessages":"76","errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"77","messages":"78","suppressedMessages":"79","errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"80","messages":"81","suppressedMessages":"82","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"83","messages":"84","suppressedMessages":"85","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"86","messages":"87","suppressedMessages":"88","errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"89","messages":"90","suppressedMessages":"91","errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"92","messages":"93","suppressedMessages":"94","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"95","messages":"96","suppressedMessages":"97","errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"98","messages":"99","suppressedMessages":"100","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"101","messages":"102","suppressedMessages":"103","errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"104","messages":"105","suppressedMessages":"106","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"107","messages":"108","suppressedMessages":"109","errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"110","messages":"111","suppressedMessages":"112","errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"113","messages":"114","suppressedMessages":"115","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"116","messages":"117","suppressedMessages":"118","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"119","messages":"120","suppressedMessages":"121","errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"122","messages":"123","suppressedMessages":"124","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"C:\\Development\\IdleViteVue\\src\\App.vue",[],[],"C:\\Development\\IdleViteVue\\src\\main.ts",[],[],"C:\\Development\\IdleViteVue\\src\\routes.ts",[],[],"C:\\Development\\IdleViteVue\\src\\shims-vue.d.ts",[],[],"C:\\Development\\IdleViteVue\\src\\store.ts",[],[],"C:\\Development\\IdleViteVue\\src\\components\\AntSimulation.vue",["125","126","127","128","129","130","131","132","133","134","135","136","137","138","139","140","141","142","143","144","145","146","147","148","149","150","151","152","153","154","155","156","157","158","159","160","161","162","163","164","165"],[],"C:\\Development\\IdleViteVue\\src\\views\\Adventure.vue",["166"],[],"C:\\Development\\IdleViteVue\\src\\views\\AntResources.vue",["167","168"],[],"C:\\Development\\IdleViteVue\\src\\views\\Home.vue",[],[],"C:\\Development\\IdleViteVue\\src\\views\\NotFound.vue",[],[],"C:\\Development\\IdleViteVue\\src\\stores\\adventureStore.ts",["169"],[],"C:\\Development\\IdleViteVue\\src\\stores\\gameStore.ts",["170","171","172"],[],"C:\\Development\\IdleViteVue\\src\\views\\Debugger.vue",[],[],"C:\\Development\\IdleViteVue\\src\\views\\Inventory.vue",["173","174"],[],"C:\\Development\\IdleViteVue\\src\\stores\\inventoryStore.ts",[],[],"C:\\Development\\IdleViteVue\\src\\components\\InventoryItem.vue",["175"],[],"C:\\Development\\IdleViteVue\\src\\types\\itemRegistry.ts",[],[],"C:\\Development\\IdleViteVue\\src\\firebase.ts",["176","177","178"],[],"C:\\Development\\IdleViteVue\\src\\views\\PrestigeShop.vue",["179","180"],[],"C:\\Development\\IdleViteVue\\src\\views\\Settings.vue",[],[],"C:\\Development\\IdleViteVue\\src\\stores\\prestigeStore.ts",[],[],"C:\\Development\\IdleViteVue\\src\\types\\AdventureEnemyWaves.ts",["181"],[],"C:\\Development\\IdleViteVue\\src\\components\\StorageButtons.vue",[],[],{"ruleId":"182","severity":1,"message":"183","line":287,"column":49,"nodeType":"184","messageId":"185","endLine":287,"endColumn":62,"suggestions":"186"},{"ruleId":"182","severity":1,"message":"183","line":289,"column":62,"nodeType":"184","messageId":"185","endLine":289,"endColumn":75,"suggestions":"187"},{"ruleId":"182","severity":1,"message":"183","line":291,"column":49,"nodeType":"184","messageId":"185","endLine":291,"endColumn":62,"suggestions":"188"},{"ruleId":"182","severity":1,"message":"183","line":293,"column":62,"nodeType":"184","messageId":"185","endLine":293,"endColumn":75,"suggestions":"189"},{"ruleId":"182","severity":1,"message":"183","line":317,"column":3,"nodeType":"184","messageId":"185","endLine":317,"endColumn":13,"suggestions":"190"},{"ruleId":"182","severity":1,"message":"183","line":614,"column":3,"nodeType":"184","messageId":"185","endLine":614,"endColumn":13,"suggestions":"191"},{"ruleId":"182","severity":1,"message":"183","line":617,"column":3,"nodeType":"184","messageId":"185","endLine":617,"endColumn":13,"suggestions":"192"},{"ruleId":"182","severity":1,"message":"183","line":618,"column":3,"nodeType":"184","messageId":"185","endLine":618,"endColumn":13,"suggestions":"193"},{"ruleId":"182","severity":1,"message":"183","line":619,"column":3,"nodeType":"184","messageId":"185","endLine":619,"endColumn":13,"suggestions":"194"},{"ruleId":"182","severity":1,"message":"183","line":620,"column":3,"nodeType":"184","messageId":"185","endLine":620,"endColumn":13,"suggestions":"195"},{"ruleId":"182","severity":1,"message":"183","line":621,"column":3,"nodeType":"184","messageId":"185","endLine":621,"endColumn":13,"suggestions":"196"},{"ruleId":"182","severity":1,"message":"183","line":622,"column":3,"nodeType":"184","messageId":"185","endLine":622,"endColumn":13,"suggestions":"197"},{"ruleId":"182","severity":1,"message":"183","line":623,"column":3,"nodeType":"184","messageId":"185","endLine":623,"endColumn":13,"suggestions":"198"},{"ruleId":"182","severity":1,"message":"183","line":624,"column":3,"nodeType":"184","messageId":"185","endLine":624,"endColumn":13,"suggestions":"199"},{"ruleId":"182","severity":1,"message":"183","line":627,"column":3,"nodeType":"184","messageId":"185","endLine":627,"endColumn":13,"suggestions":"200"},{"ruleId":"182","severity":1,"message":"183","line":628,"column":3,"nodeType":"184","messageId":"185","endLine":628,"endColumn":13,"suggestions":"201"},{"ruleId":"182","severity":1,"message":"183","line":629,"column":3,"nodeType":"184","messageId":"185","endLine":629,"endColumn":13,"suggestions":"202"},{"ruleId":"182","severity":1,"message":"183","line":630,"column":3,"nodeType":"184","messageId":"185","endLine":630,"endColumn":13,"suggestions":"203"},{"ruleId":"182","severity":1,"message":"183","line":631,"column":3,"nodeType":"184","messageId":"185","endLine":631,"endColumn":13,"suggestions":"204"},{"ruleId":"182","severity":1,"message":"183","line":632,"column":3,"nodeType":"184","messageId":"185","endLine":632,"endColumn":13,"suggestions":"205"},{"ruleId":"182","severity":1,"message":"183","line":633,"column":3,"nodeType":"184","messageId":"185","endLine":633,"endColumn":13,"suggestions":"206"},{"ruleId":"182","severity":1,"message":"183","line":636,"column":3,"nodeType":"184","messageId":"185","endLine":636,"endColumn":13,"suggestions":"207"},{"ruleId":"182","severity":1,"message":"183","line":637,"column":3,"nodeType":"184","messageId":"185","endLine":637,"endColumn":13,"suggestions":"208"},{"ruleId":"182","severity":1,"message":"183","line":638,"column":3,"nodeType":"184","messageId":"185","endLine":638,"endColumn":13,"suggestions":"209"},{"ruleId":"182","severity":1,"message":"183","line":639,"column":3,"nodeType":"184","messageId":"185","endLine":639,"endColumn":13,"suggestions":"210"},{"ruleId":"182","severity":1,"message":"183","line":642,"column":3,"nodeType":"184","messageId":"185","endLine":642,"endColumn":13,"suggestions":"211"},{"ruleId":"182","severity":1,"message":"183","line":643,"column":3,"nodeType":"184","messageId":"185","endLine":643,"endColumn":13,"suggestions":"212"},{"ruleId":"182","severity":1,"message":"183","line":644,"column":3,"nodeType":"184","messageId":"185","endLine":644,"endColumn":13,"suggestions":"213"},{"ruleId":"182","severity":1,"message":"183","line":645,"column":3,"nodeType":"184","messageId":"185","endLine":645,"endColumn":13,"suggestions":"214"},{"ruleId":"182","severity":1,"message":"183","line":649,"column":5,"nodeType":"184","messageId":"185","endLine":649,"endColumn":15,"suggestions":"215"},{"ruleId":"182","severity":1,"message":"183","line":650,"column":5,"nodeType":"184","messageId":"185","endLine":650,"endColumn":15,"suggestions":"216"},{"ruleId":"182","severity":1,"message":"183","line":651,"column":5,"nodeType":"184","messageId":"185","endLine":651,"endColumn":15,"suggestions":"217"},{"ruleId":"182","severity":1,"message":"183","line":652,"column":5,"nodeType":"184","messageId":"185","endLine":652,"endColumn":15,"suggestions":"218"},{"ruleId":"182","severity":1,"message":"183","line":660,"column":3,"nodeType":"184","messageId":"185","endLine":660,"endColumn":13,"suggestions":"219"},{"ruleId":"182","severity":1,"message":"183","line":667,"column":3,"nodeType":"184","messageId":"185","endLine":667,"endColumn":13,"suggestions":"220"},{"ruleId":"182","severity":1,"message":"183","line":671,"column":7,"nodeType":"184","messageId":"185","endLine":671,"endColumn":17,"suggestions":"221"},{"ruleId":"182","severity":1,"message":"183","line":672,"column":7,"nodeType":"184","messageId":"185","endLine":672,"endColumn":17,"suggestions":"222"},{"ruleId":"182","severity":1,"message":"183","line":675,"column":7,"nodeType":"184","messageId":"185","endLine":675,"endColumn":17,"suggestions":"223"},{"ruleId":"182","severity":1,"message":"183","line":677,"column":7,"nodeType":"184","messageId":"185","endLine":677,"endColumn":17,"suggestions":"224"},{"ruleId":"182","severity":1,"message":"183","line":678,"column":7,"nodeType":"184","messageId":"185","endLine":678,"endColumn":17,"suggestions":"225"},{"ruleId":"182","severity":1,"message":"183","line":680,"column":7,"nodeType":"184","messageId":"185","endLine":680,"endColumn":17,"suggestions":"226"},{"ruleId":"227","severity":1,"message":"228","line":153,"column":24,"nodeType":"229","messageId":"230","endLine":153,"endColumn":29},{"ruleId":"231","severity":1,"message":"232","line":37,"column":15,"nodeType":"233","endLine":37,"endColumn":60},{"ruleId":"231","severity":1,"message":"232","line":119,"column":15,"nodeType":"233","endLine":119,"endColumn":62},{"ruleId":"227","severity":1,"message":"234","line":5,"column":25,"nodeType":"229","messageId":"230","endLine":5,"endColumn":31},{"ruleId":"227","severity":1,"message":"235","line":559,"column":17,"nodeType":"229","messageId":"230","endLine":559,"endColumn":26},{"ruleId":"227","severity":1,"message":"236","line":601,"column":22,"nodeType":"229","messageId":"230","endLine":601,"endColumn":28},{"ruleId":"227","severity":1,"message":"237","line":617,"column":15,"nodeType":"229","messageId":"230","endLine":617,"endColumn":25},{"ruleId":"227","severity":1,"message":"238","line":71,"column":15,"nodeType":"229","messageId":"230","endLine":71,"endColumn":21},{"ruleId":"239","severity":1,"message":"240","line":110,"column":18,"nodeType":"241","messageId":"242","endLine":110,"endColumn":21,"suggestions":"243"},{"ruleId":"227","severity":1,"message":"244","line":30,"column":9,"nodeType":"229","messageId":"230","endLine":30,"endColumn":17},{"ruleId":"227","severity":1,"message":"245","line":2,"column":24,"nodeType":"229","messageId":"230","endLine":2,"endColumn":34},{"ruleId":"227","severity":1,"message":"246","line":4,"column":10,"nodeType":"229","messageId":"230","endLine":4,"endColumn":28},{"ruleId":"227","severity":1,"message":"247","line":4,"column":30,"nodeType":"229","messageId":"230","endLine":4,"endColumn":49},{"ruleId":"248","severity":1,"message":"249","line":84,"column":27,"nodeType":"250","endLine":84,"endColumn":55},{"ruleId":"227","severity":1,"message":"251","line":129,"column":9,"nodeType":"229","messageId":"230","endLine":129,"endColumn":18},{"ruleId":"239","severity":1,"message":"240","line":26,"column":29,"nodeType":"241","messageId":"242","endLine":26,"endColumn":32,"suggestions":"252"},"@typescript-eslint/no-non-null-assertion","Forbidden non-null assertion.","TSNonNullExpression","noNonNull",["253"],["254"],["255"],["256"],["257"],["258"],["259"],["260"],["261"],["262"],["263"],["264"],["265"],["266"],["267"],["268"],["269"],["270"],["271"],["272"],["273"],["274"],["275"],["276"],["277"],["278"],["279"],["280"],["281"],["282"],["283"],["284"],["285"],["286"],["287"],["288"],["289"],["290"],["291"],["292"],["293"],"@typescript-eslint/no-unused-vars","'event' is defined but never used.","Identifier","unusedVar","vue/v-on-event-hyphenation","v-on event '@upgradeMax' must be hyphenated.","VDirectiveKey","'setDoc' is defined but never used.","'errorCode' is assigned a value but never used.","'result' is defined but never used.","'credential' is assigned a value but never used.","'height' is assigned a value but never used.","@typescript-eslint/no-explicit-any","Unexpected any. Specify a different type.","TSAnyKeyword","unexpectedAny",["294","295"],"'useToast' is defined but never used.","'collection' is defined but never used.","'initializeAppCheck' is defined but never used.","'ReCaptchaV3Provider' is defined but never used.","vue/no-v-html","'v-html' directive can lead to XSS attack.","VAttribute","'onMounted' is defined but never used.",["296","297"],{"messageId":"298","fix":"299","desc":"300"},{"messageId":"298","fix":"301","desc":"300"},{"messageId":"298","fix":"302","desc":"300"},{"messageId":"298","fix":"303","desc":"300"},{"messageId":"298","fix":"304","desc":"300"},{"messageId":"298","fix":"305","desc":"300"},{"messageId":"298","fix":"306","desc":"300"},{"messageId":"298","fix":"307","desc":"300"},{"messageId":"298","fix":"308","desc":"300"},{"messageId":"298","fix":"309","desc":"300"},{"messageId":"298","fix":"310","desc":"300"},{"messageId":"298","fix":"311","desc":"300"},{"messageId":"298","fix":"312","desc":"300"},{"messageId":"298","fix":"313","desc":"300"},{"messageId":"298","fix":"314","desc":"300"},{"messageId":"298","fix":"315","desc":"300"},{"messageId":"298","fix":"316","desc":"300"},{"messageId":"298","fix":"317","desc":"300"},{"messageId":"298","fix":"318","desc":"300"},{"messageId":"298","fix":"319","desc":"300"},{"messageId":"298","fix":"320","desc":"300"},{"messageId":"298","fix":"321","desc":"300"},{"messageId":"298","fix":"322","desc":"300"},{"messageId":"298","fix":"323","desc":"300"},{"messageId":"298","fix":"324","desc":"300"},{"messageId":"298","fix":"325","desc":"300"},{"messageId":"298","fix":"326","desc":"300"},{"messageId":"298","fix":"327","desc":"300"},{"messageId":"298","fix":"328","desc":"300"},{"messageId":"298","fix":"329","desc":"300"},{"messageId":"298","fix":"330","desc":"300"},{"messageId":"298","fix":"331","desc":"300"},{"messageId":"298","fix":"332","desc":"300"},{"messageId":"298","fix":"333","desc":"300"},{"messageId":"298","fix":"334","desc":"300"},{"messageId":"298","fix":"335","desc":"300"},{"messageId":"298","fix":"336","desc":"300"},{"messageId":"298","fix":"337","desc":"300"},{"messageId":"298","fix":"338","desc":"300"},{"messageId":"298","fix":"339","desc":"300"},{"messageId":"298","fix":"340","desc":"300"},{"messageId":"341","fix":"342","desc":"343"},{"messageId":"344","fix":"345","desc":"346"},{"messageId":"341","fix":"347","desc":"343"},{"messageId":"344","fix":"348","desc":"346"},"suggestOptionalChain",{"range":"349","text":"350"},"Consider using the optional chain operator `?.` instead. This operator includes runtime checks, so it is safer than the compile-only non-null assertion operator.",{"range":"351","text":"350"},{"range":"352","text":"350"},{"range":"353","text":"350"},{"range":"354","text":"350"},{"range":"355","text":"350"},{"range":"356","text":"350"},{"range":"357","text":"350"},{"range":"358","text":"350"},{"range":"359","text":"350"},{"range":"360","text":"350"},{"range":"361","text":"350"},{"range":"362","text":"350"},{"range":"363","text":"350"},{"range":"364","text":"350"},{"range":"365","text":"350"},{"range":"366","text":"350"},{"range":"367","text":"350"},{"range":"368","text":"350"},{"range":"369","text":"350"},{"range":"370","text":"350"},{"range":"371","text":"350"},{"range":"372","text":"350"},{"range":"373","text":"350"},{"range":"374","text":"350"},{"range":"375","text":"350"},{"range":"376","text":"350"},{"range":"377","text":"350"},{"range":"378","text":"350"},{"range":"379","text":"350"},{"range":"380","text":"350"},{"range":"381","text":"350"},{"range":"382","text":"350"},{"range":"383","text":"350"},{"range":"384","text":"350"},{"range":"385","text":"350"},{"range":"386","text":"350"},{"range":"387","text":"350"},{"range":"388","text":"350"},{"range":"389","text":"350"},{"range":"390","text":"350"},"suggestUnknown",{"range":"391","text":"392"},"Use `unknown` instead, this will force you to explicitly, and safely assert the type is correct.","suggestNever",{"range":"391","text":"393"},"Use `never` instead, this is useful when instantiating generic type parameters that you don't need to know the type of.",{"range":"394","text":"392"},{"range":"394","text":"393"},[9905,9906],"?",[10048,10049],[10143,10144],[10282,10283],[11025,11026],[20194,20195],[20253,20254],[20279,20280],[20343,20344],[20403,20404],[20464,20465],[20529,20530],[20555,20556],[20611,20612],[20680,20681],[20706,20707],[20755,20756],[20804,20805],[20853,20854],[20902,20903],[20967,20968],[21039,21040],[21065,21066],[21150,21151],[21224,21225],[21299,21300],[21325,21326],[21423,21424],[21496,21497],[21629,21630],[21657,21658],[21705,21706],[21763,21764],[22061,22062],[22164,22165],[22299,22300],[22324,22325],[22460,22461],[22558,22559],[22652,22653],[22679,22680],[3553,3556],"unknown","never",[519,522]] \ No newline at end of file +[{"C:\\Development\\IdleViteVue\\.eslintrc.js":"1","C:\\Development\\IdleViteVue\\postcss.config.js":"2","C:\\Development\\IdleViteVue\\tailwind.config.js":"3","C:\\Development\\IdleViteVue\\vite.config.js":"4","C:\\Development\\IdleViteVue\\src\\App.vue":"5","C:\\Development\\IdleViteVue\\src\\main.ts":"6","C:\\Development\\IdleViteVue\\src\\routes.ts":"7","C:\\Development\\IdleViteVue\\src\\shims-vue.d.ts":"8","C:\\Development\\IdleViteVue\\src\\store.ts":"9","C:\\Development\\IdleViteVue\\src\\components\\AntSimulation.vue":"10","C:\\Development\\IdleViteVue\\src\\views\\Adventure.vue":"11","C:\\Development\\IdleViteVue\\src\\views\\AntResources.vue":"12","C:\\Development\\IdleViteVue\\src\\views\\Home.vue":"13","C:\\Development\\IdleViteVue\\src\\views\\NotFound.vue":"14","C:\\Development\\IdleViteVue\\src\\stores\\adventureStore.ts":"15","C:\\Development\\IdleViteVue\\src\\stores\\gameStore.ts":"16","C:\\Development\\IdleViteVue\\src\\views\\Debugger.vue":"17","C:\\Development\\IdleViteVue\\src\\views\\Inventory.vue":"18","C:\\Development\\IdleViteVue\\src\\stores\\inventoryStore.ts":"19","C:\\Development\\IdleViteVue\\src\\components\\InventoryItem.vue":"20","C:\\Development\\IdleViteVue\\src\\types\\itemRegistry.ts":"21","C:\\Development\\IdleViteVue\\src\\firebase.ts":"22","C:\\Development\\IdleViteVue\\src\\components\\Modal.vue":"23","C:\\Development\\IdleViteVue\\src\\views\\PrestigeShop.vue":"24","C:\\Development\\IdleViteVue\\src\\views\\Settings.vue":"25","C:\\Development\\IdleViteVue\\src\\stores\\prestigeStore.ts":"26","C:\\Development\\IdleViteVue\\src\\types\\AdventureEnemyWaves.ts":"27","C:\\Development\\IdleViteVue\\src\\components\\StorageButtons.vue":"28","C:\\Development\\IdleViteVue\\src\\views\\Tunnels.vue":"29","C:\\Development\\IdleViteVue\\src\\stores\\tunnelStore.ts":"30","C:\\Development\\IdleViteVue\\src\\components\\PrivacyModal.vue":"31"},{"size":758,"mtime":1725657576729},{"size":83,"mtime":1725657576792},{"size":726,"mtime":1725826628130},{"size":177,"mtime":1725657576822},{"size":83,"mtime":1725657506695,"results":"32","hashOfConfig":"33"},{"size":1843,"mtime":1725898066056,"results":"34","hashOfConfig":"33"},{"size":272,"mtime":1725660566335,"results":"35","hashOfConfig":"33"},{"size":120,"mtime":1725474178300,"results":"36","hashOfConfig":"33"},{"size":90,"mtime":1725474178300,"results":"37","hashOfConfig":"33"},{"size":26740,"mtime":1726305836504,"results":"38","hashOfConfig":"33"},{"size":6455,"mtime":1726153438227,"results":"39","hashOfConfig":"33"},{"size":23448,"mtime":1726241735608,"results":"40","hashOfConfig":"33"},{"size":16193,"mtime":1726330714691,"results":"41","hashOfConfig":"33"},{"size":436,"mtime":1725474178301,"results":"42","hashOfConfig":"33"},{"size":21078,"mtime":1726330870032,"results":"43","hashOfConfig":"33"},{"size":37441,"mtime":1726323653628,"results":"44","hashOfConfig":"33"},{"size":5332,"mtime":1726308463102,"results":"45","hashOfConfig":"33"},{"size":6359,"mtime":1726062914087,"results":"46","hashOfConfig":"33"},{"size":5635,"mtime":1726220013557,"results":"47","hashOfConfig":"33"},{"size":1979,"mtime":1726080736057,"results":"48","hashOfConfig":"33"},{"size":8553,"mtime":1726173039206,"results":"49","hashOfConfig":"33"},{"size":1173,"mtime":1725903219799,"results":"50","hashOfConfig":"33"},{"size":1290,"mtime":1725801294724},{"size":7345,"mtime":1726330753691,"results":"51","hashOfConfig":"33"},{"size":2260,"mtime":1726320294613,"results":"52","hashOfConfig":"33"},{"size":17281,"mtime":1726319298557,"results":"53","hashOfConfig":"33"},{"size":15448,"mtime":1726174658427,"results":"54","hashOfConfig":"33"},{"size":824,"mtime":1726217231395,"results":"55","hashOfConfig":"33"},{"size":5123,"mtime":1726232778366},{"size":6082,"mtime":1726232892390},{"size":3897,"mtime":1726321869441},{"filePath":"56","messages":"57","suppressedMessages":"58","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"adzkch",{"filePath":"59","messages":"60","suppressedMessages":"61","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"62","messages":"63","suppressedMessages":"64","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"65","messages":"66","suppressedMessages":"67","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"68","messages":"69","suppressedMessages":"70","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"71","messages":"72","suppressedMessages":"73","errorCount":0,"fatalErrorCount":0,"warningCount":41,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"74","messages":"75","suppressedMessages":"76","errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"77","messages":"78","suppressedMessages":"79","errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"80","messages":"81","suppressedMessages":"82","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"83","messages":"84","suppressedMessages":"85","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"86","messages":"87","suppressedMessages":"88","errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"89","messages":"90","suppressedMessages":"91","errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"92","messages":"93","suppressedMessages":"94","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"95","messages":"96","suppressedMessages":"97","errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"98","messages":"99","suppressedMessages":"100","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"101","messages":"102","suppressedMessages":"103","errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"104","messages":"105","suppressedMessages":"106","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"107","messages":"108","suppressedMessages":"109","errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"110","messages":"111","suppressedMessages":"112","errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"113","messages":"114","suppressedMessages":"115","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"116","messages":"117","suppressedMessages":"118","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"119","messages":"120","suppressedMessages":"121","errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"122","messages":"123","suppressedMessages":"124","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"C:\\Development\\IdleViteVue\\src\\App.vue",[],[],"C:\\Development\\IdleViteVue\\src\\main.ts",[],[],"C:\\Development\\IdleViteVue\\src\\routes.ts",[],[],"C:\\Development\\IdleViteVue\\src\\shims-vue.d.ts",[],[],"C:\\Development\\IdleViteVue\\src\\store.ts",[],[],"C:\\Development\\IdleViteVue\\src\\components\\AntSimulation.vue",["125","126","127","128","129","130","131","132","133","134","135","136","137","138","139","140","141","142","143","144","145","146","147","148","149","150","151","152","153","154","155","156","157","158","159","160","161","162","163","164","165"],[],"C:\\Development\\IdleViteVue\\src\\views\\Adventure.vue",["166"],[],"C:\\Development\\IdleViteVue\\src\\views\\AntResources.vue",["167","168"],[],"C:\\Development\\IdleViteVue\\src\\views\\Home.vue",[],[],"C:\\Development\\IdleViteVue\\src\\views\\NotFound.vue",[],[],"C:\\Development\\IdleViteVue\\src\\stores\\adventureStore.ts",["169"],[],"C:\\Development\\IdleViteVue\\src\\stores\\gameStore.ts",["170","171","172"],[],"C:\\Development\\IdleViteVue\\src\\views\\Debugger.vue",[],[],"C:\\Development\\IdleViteVue\\src\\views\\Inventory.vue",["173","174"],[],"C:\\Development\\IdleViteVue\\src\\stores\\inventoryStore.ts",[],[],"C:\\Development\\IdleViteVue\\src\\components\\InventoryItem.vue",["175"],[],"C:\\Development\\IdleViteVue\\src\\types\\itemRegistry.ts",[],[],"C:\\Development\\IdleViteVue\\src\\firebase.ts",["176","177","178"],[],"C:\\Development\\IdleViteVue\\src\\views\\PrestigeShop.vue",["179","180"],[],"C:\\Development\\IdleViteVue\\src\\views\\Settings.vue",[],[],"C:\\Development\\IdleViteVue\\src\\stores\\prestigeStore.ts",[],[],"C:\\Development\\IdleViteVue\\src\\types\\AdventureEnemyWaves.ts",["181"],[],"C:\\Development\\IdleViteVue\\src\\components\\StorageButtons.vue",[],[],{"ruleId":"182","severity":1,"message":"183","line":287,"column":49,"nodeType":"184","messageId":"185","endLine":287,"endColumn":62,"suggestions":"186"},{"ruleId":"182","severity":1,"message":"183","line":289,"column":62,"nodeType":"184","messageId":"185","endLine":289,"endColumn":75,"suggestions":"187"},{"ruleId":"182","severity":1,"message":"183","line":291,"column":49,"nodeType":"184","messageId":"185","endLine":291,"endColumn":62,"suggestions":"188"},{"ruleId":"182","severity":1,"message":"183","line":293,"column":62,"nodeType":"184","messageId":"185","endLine":293,"endColumn":75,"suggestions":"189"},{"ruleId":"182","severity":1,"message":"183","line":317,"column":3,"nodeType":"184","messageId":"185","endLine":317,"endColumn":13,"suggestions":"190"},{"ruleId":"182","severity":1,"message":"183","line":614,"column":3,"nodeType":"184","messageId":"185","endLine":614,"endColumn":13,"suggestions":"191"},{"ruleId":"182","severity":1,"message":"183","line":617,"column":3,"nodeType":"184","messageId":"185","endLine":617,"endColumn":13,"suggestions":"192"},{"ruleId":"182","severity":1,"message":"183","line":618,"column":3,"nodeType":"184","messageId":"185","endLine":618,"endColumn":13,"suggestions":"193"},{"ruleId":"182","severity":1,"message":"183","line":619,"column":3,"nodeType":"184","messageId":"185","endLine":619,"endColumn":13,"suggestions":"194"},{"ruleId":"182","severity":1,"message":"183","line":620,"column":3,"nodeType":"184","messageId":"185","endLine":620,"endColumn":13,"suggestions":"195"},{"ruleId":"182","severity":1,"message":"183","line":621,"column":3,"nodeType":"184","messageId":"185","endLine":621,"endColumn":13,"suggestions":"196"},{"ruleId":"182","severity":1,"message":"183","line":622,"column":3,"nodeType":"184","messageId":"185","endLine":622,"endColumn":13,"suggestions":"197"},{"ruleId":"182","severity":1,"message":"183","line":623,"column":3,"nodeType":"184","messageId":"185","endLine":623,"endColumn":13,"suggestions":"198"},{"ruleId":"182","severity":1,"message":"183","line":624,"column":3,"nodeType":"184","messageId":"185","endLine":624,"endColumn":13,"suggestions":"199"},{"ruleId":"182","severity":1,"message":"183","line":627,"column":3,"nodeType":"184","messageId":"185","endLine":627,"endColumn":13,"suggestions":"200"},{"ruleId":"182","severity":1,"message":"183","line":628,"column":3,"nodeType":"184","messageId":"185","endLine":628,"endColumn":13,"suggestions":"201"},{"ruleId":"182","severity":1,"message":"183","line":629,"column":3,"nodeType":"184","messageId":"185","endLine":629,"endColumn":13,"suggestions":"202"},{"ruleId":"182","severity":1,"message":"183","line":630,"column":3,"nodeType":"184","messageId":"185","endLine":630,"endColumn":13,"suggestions":"203"},{"ruleId":"182","severity":1,"message":"183","line":631,"column":3,"nodeType":"184","messageId":"185","endLine":631,"endColumn":13,"suggestions":"204"},{"ruleId":"182","severity":1,"message":"183","line":632,"column":3,"nodeType":"184","messageId":"185","endLine":632,"endColumn":13,"suggestions":"205"},{"ruleId":"182","severity":1,"message":"183","line":633,"column":3,"nodeType":"184","messageId":"185","endLine":633,"endColumn":13,"suggestions":"206"},{"ruleId":"182","severity":1,"message":"183","line":636,"column":3,"nodeType":"184","messageId":"185","endLine":636,"endColumn":13,"suggestions":"207"},{"ruleId":"182","severity":1,"message":"183","line":637,"column":3,"nodeType":"184","messageId":"185","endLine":637,"endColumn":13,"suggestions":"208"},{"ruleId":"182","severity":1,"message":"183","line":638,"column":3,"nodeType":"184","messageId":"185","endLine":638,"endColumn":13,"suggestions":"209"},{"ruleId":"182","severity":1,"message":"183","line":639,"column":3,"nodeType":"184","messageId":"185","endLine":639,"endColumn":13,"suggestions":"210"},{"ruleId":"182","severity":1,"message":"183","line":642,"column":3,"nodeType":"184","messageId":"185","endLine":642,"endColumn":13,"suggestions":"211"},{"ruleId":"182","severity":1,"message":"183","line":643,"column":3,"nodeType":"184","messageId":"185","endLine":643,"endColumn":13,"suggestions":"212"},{"ruleId":"182","severity":1,"message":"183","line":644,"column":3,"nodeType":"184","messageId":"185","endLine":644,"endColumn":13,"suggestions":"213"},{"ruleId":"182","severity":1,"message":"183","line":645,"column":3,"nodeType":"184","messageId":"185","endLine":645,"endColumn":13,"suggestions":"214"},{"ruleId":"182","severity":1,"message":"183","line":649,"column":5,"nodeType":"184","messageId":"185","endLine":649,"endColumn":15,"suggestions":"215"},{"ruleId":"182","severity":1,"message":"183","line":650,"column":5,"nodeType":"184","messageId":"185","endLine":650,"endColumn":15,"suggestions":"216"},{"ruleId":"182","severity":1,"message":"183","line":651,"column":5,"nodeType":"184","messageId":"185","endLine":651,"endColumn":15,"suggestions":"217"},{"ruleId":"182","severity":1,"message":"183","line":652,"column":5,"nodeType":"184","messageId":"185","endLine":652,"endColumn":15,"suggestions":"218"},{"ruleId":"182","severity":1,"message":"183","line":660,"column":3,"nodeType":"184","messageId":"185","endLine":660,"endColumn":13,"suggestions":"219"},{"ruleId":"182","severity":1,"message":"183","line":667,"column":3,"nodeType":"184","messageId":"185","endLine":667,"endColumn":13,"suggestions":"220"},{"ruleId":"182","severity":1,"message":"183","line":671,"column":7,"nodeType":"184","messageId":"185","endLine":671,"endColumn":17,"suggestions":"221"},{"ruleId":"182","severity":1,"message":"183","line":672,"column":7,"nodeType":"184","messageId":"185","endLine":672,"endColumn":17,"suggestions":"222"},{"ruleId":"182","severity":1,"message":"183","line":675,"column":7,"nodeType":"184","messageId":"185","endLine":675,"endColumn":17,"suggestions":"223"},{"ruleId":"182","severity":1,"message":"183","line":677,"column":7,"nodeType":"184","messageId":"185","endLine":677,"endColumn":17,"suggestions":"224"},{"ruleId":"182","severity":1,"message":"183","line":678,"column":7,"nodeType":"184","messageId":"185","endLine":678,"endColumn":17,"suggestions":"225"},{"ruleId":"182","severity":1,"message":"183","line":680,"column":7,"nodeType":"184","messageId":"185","endLine":680,"endColumn":17,"suggestions":"226"},{"ruleId":"227","severity":1,"message":"228","line":153,"column":24,"nodeType":"229","messageId":"230","endLine":153,"endColumn":29},{"ruleId":"231","severity":1,"message":"232","line":37,"column":15,"nodeType":"233","endLine":37,"endColumn":60},{"ruleId":"231","severity":1,"message":"232","line":119,"column":15,"nodeType":"233","endLine":119,"endColumn":62},{"ruleId":"227","severity":1,"message":"234","line":5,"column":25,"nodeType":"229","messageId":"230","endLine":5,"endColumn":31},{"ruleId":"227","severity":1,"message":"235","line":559,"column":17,"nodeType":"229","messageId":"230","endLine":559,"endColumn":26},{"ruleId":"227","severity":1,"message":"236","line":601,"column":22,"nodeType":"229","messageId":"230","endLine":601,"endColumn":28},{"ruleId":"227","severity":1,"message":"237","line":617,"column":15,"nodeType":"229","messageId":"230","endLine":617,"endColumn":25},{"ruleId":"227","severity":1,"message":"238","line":71,"column":15,"nodeType":"229","messageId":"230","endLine":71,"endColumn":21},{"ruleId":"239","severity":1,"message":"240","line":110,"column":18,"nodeType":"241","messageId":"242","endLine":110,"endColumn":21,"suggestions":"243"},{"ruleId":"227","severity":1,"message":"244","line":30,"column":9,"nodeType":"229","messageId":"230","endLine":30,"endColumn":17},{"ruleId":"227","severity":1,"message":"245","line":2,"column":24,"nodeType":"229","messageId":"230","endLine":2,"endColumn":34},{"ruleId":"227","severity":1,"message":"246","line":4,"column":10,"nodeType":"229","messageId":"230","endLine":4,"endColumn":28},{"ruleId":"227","severity":1,"message":"247","line":4,"column":30,"nodeType":"229","messageId":"230","endLine":4,"endColumn":49},{"ruleId":"248","severity":1,"message":"249","line":84,"column":27,"nodeType":"250","endLine":84,"endColumn":55},{"ruleId":"227","severity":1,"message":"251","line":129,"column":9,"nodeType":"229","messageId":"230","endLine":129,"endColumn":18},{"ruleId":"239","severity":1,"message":"240","line":26,"column":29,"nodeType":"241","messageId":"242","endLine":26,"endColumn":32,"suggestions":"252"},"@typescript-eslint/no-non-null-assertion","Forbidden non-null assertion.","TSNonNullExpression","noNonNull",["253"],["254"],["255"],["256"],["257"],["258"],["259"],["260"],["261"],["262"],["263"],["264"],["265"],["266"],["267"],["268"],["269"],["270"],["271"],["272"],["273"],["274"],["275"],["276"],["277"],["278"],["279"],["280"],["281"],["282"],["283"],["284"],["285"],["286"],["287"],["288"],["289"],["290"],["291"],["292"],["293"],"@typescript-eslint/no-unused-vars","'event' is defined but never used.","Identifier","unusedVar","vue/v-on-event-hyphenation","v-on event '@upgradeMax' must be hyphenated.","VDirectiveKey","'setDoc' is defined but never used.","'errorCode' is assigned a value but never used.","'result' is defined but never used.","'credential' is assigned a value but never used.","'height' is assigned a value but never used.","@typescript-eslint/no-explicit-any","Unexpected any. Specify a different type.","TSAnyKeyword","unexpectedAny",["294","295"],"'useToast' is defined but never used.","'collection' is defined but never used.","'initializeAppCheck' is defined but never used.","'ReCaptchaV3Provider' is defined but never used.","vue/no-v-html","'v-html' directive can lead to XSS attack.","VAttribute","'onMounted' is defined but never used.",["296","297"],{"messageId":"298","fix":"299","desc":"300"},{"messageId":"298","fix":"301","desc":"300"},{"messageId":"298","fix":"302","desc":"300"},{"messageId":"298","fix":"303","desc":"300"},{"messageId":"298","fix":"304","desc":"300"},{"messageId":"298","fix":"305","desc":"300"},{"messageId":"298","fix":"306","desc":"300"},{"messageId":"298","fix":"307","desc":"300"},{"messageId":"298","fix":"308","desc":"300"},{"messageId":"298","fix":"309","desc":"300"},{"messageId":"298","fix":"310","desc":"300"},{"messageId":"298","fix":"311","desc":"300"},{"messageId":"298","fix":"312","desc":"300"},{"messageId":"298","fix":"313","desc":"300"},{"messageId":"298","fix":"314","desc":"300"},{"messageId":"298","fix":"315","desc":"300"},{"messageId":"298","fix":"316","desc":"300"},{"messageId":"298","fix":"317","desc":"300"},{"messageId":"298","fix":"318","desc":"300"},{"messageId":"298","fix":"319","desc":"300"},{"messageId":"298","fix":"320","desc":"300"},{"messageId":"298","fix":"321","desc":"300"},{"messageId":"298","fix":"322","desc":"300"},{"messageId":"298","fix":"323","desc":"300"},{"messageId":"298","fix":"324","desc":"300"},{"messageId":"298","fix":"325","desc":"300"},{"messageId":"298","fix":"326","desc":"300"},{"messageId":"298","fix":"327","desc":"300"},{"messageId":"298","fix":"328","desc":"300"},{"messageId":"298","fix":"329","desc":"300"},{"messageId":"298","fix":"330","desc":"300"},{"messageId":"298","fix":"331","desc":"300"},{"messageId":"298","fix":"332","desc":"300"},{"messageId":"298","fix":"333","desc":"300"},{"messageId":"298","fix":"334","desc":"300"},{"messageId":"298","fix":"335","desc":"300"},{"messageId":"298","fix":"336","desc":"300"},{"messageId":"298","fix":"337","desc":"300"},{"messageId":"298","fix":"338","desc":"300"},{"messageId":"298","fix":"339","desc":"300"},{"messageId":"298","fix":"340","desc":"300"},{"messageId":"341","fix":"342","desc":"343"},{"messageId":"344","fix":"345","desc":"346"},{"messageId":"341","fix":"347","desc":"343"},{"messageId":"344","fix":"348","desc":"346"},"suggestOptionalChain",{"range":"349","text":"350"},"Consider using the optional chain operator `?.` instead. This operator includes runtime checks, so it is safer than the compile-only non-null assertion operator.",{"range":"351","text":"350"},{"range":"352","text":"350"},{"range":"353","text":"350"},{"range":"354","text":"350"},{"range":"355","text":"350"},{"range":"356","text":"350"},{"range":"357","text":"350"},{"range":"358","text":"350"},{"range":"359","text":"350"},{"range":"360","text":"350"},{"range":"361","text":"350"},{"range":"362","text":"350"},{"range":"363","text":"350"},{"range":"364","text":"350"},{"range":"365","text":"350"},{"range":"366","text":"350"},{"range":"367","text":"350"},{"range":"368","text":"350"},{"range":"369","text":"350"},{"range":"370","text":"350"},{"range":"371","text":"350"},{"range":"372","text":"350"},{"range":"373","text":"350"},{"range":"374","text":"350"},{"range":"375","text":"350"},{"range":"376","text":"350"},{"range":"377","text":"350"},{"range":"378","text":"350"},{"range":"379","text":"350"},{"range":"380","text":"350"},{"range":"381","text":"350"},{"range":"382","text":"350"},{"range":"383","text":"350"},{"range":"384","text":"350"},{"range":"385","text":"350"},{"range":"386","text":"350"},{"range":"387","text":"350"},{"range":"388","text":"350"},{"range":"389","text":"350"},{"range":"390","text":"350"},"suggestUnknown",{"range":"391","text":"392"},"Use `unknown` instead, this will force you to explicitly, and safely assert the type is correct.","suggestNever",{"range":"391","text":"393"},"Use `never` instead, this is useful when instantiating generic type parameters that you don't need to know the type of.",{"range":"394","text":"392"},{"range":"394","text":"393"},[9905,9906],"?",[10048,10049],[10143,10144],[10282,10283],[11025,11026],[20194,20195],[20253,20254],[20279,20280],[20343,20344],[20403,20404],[20464,20465],[20529,20530],[20555,20556],[20611,20612],[20680,20681],[20706,20707],[20755,20756],[20804,20805],[20853,20854],[20902,20903],[20967,20968],[21039,21040],[21065,21066],[21150,21151],[21224,21225],[21299,21300],[21325,21326],[21423,21424],[21496,21497],[21629,21630],[21657,21658],[21705,21706],[21763,21764],[22061,22062],[22164,22165],[22299,22300],[22324,22325],[22460,22461],[22558,22559],[22652,22653],[22679,22680],[3553,3556],"unknown","never",[519,522]] \ No newline at end of file diff --git a/src/stores/gameStore.ts b/src/stores/gameStore.ts index ccc9057..7bcbd1a 100644 --- a/src/stores/gameStore.ts +++ b/src/stores/gameStore.ts @@ -258,6 +258,107 @@ export const useGameStore = defineStore('gameStore', { this.resources.seeds += seedsToAdd }, + // Export game data as encrypted string + async exportData() { + const userId = await this.getUserId() + const dataToExport = { + game: this.getGameState(userId), // Entire game state + timestamp: Date.now(), // Add a timestamp + } + + try { + // Generate an IV + const iv = crypto.getRandomValues(new Uint8Array(12)) + + // Encrypt data + const encryptedData = await this.encryptData(dataToExport, iv) + + // Combine IV and encrypted data + const exportPayload = { + iv: Array.from(iv), // Store IV as an array of numbers + data: encryptedData, + } + + // Return the base64 encoded JSON string containing IV and encrypted data + return btoa(JSON.stringify(exportPayload)) + } catch (error) { + console.error('Error exporting data:', error) + return null + } + }, + + // Import game data from a string (decrypt and load into state) + async importData(encryptedString: string) { + try { + // Parse the base64 encoded JSON string to retrieve IV and encrypted data + const decodedString = atob(encryptedString) + const { iv, data } = JSON.parse(decodedString) + + // Decrypt the data using the stored IV + const decryptedData = await this.decryptData(data, Uint8Array.from(iv)) + const { game } = decryptedData + + await this.loadStateFromFirebase(game) + + console.log('Import successful!') + } catch (error) { + console.error('Error importing data:', error) + } + }, + + // Encrypt the game data with provided IV + async encryptData(data: any, iv: Uint8Array) { + const key = await this.getCryptoKey() + const encoder = new TextEncoder() + const encodedData = encoder.encode(JSON.stringify(data)) + + const encryptedData = await crypto.subtle.encrypt( + { name: 'AES-GCM', iv }, + key, + encodedData, + ) + + return btoa(String.fromCharCode(...new Uint8Array(encryptedData))) // Convert to base64 string + }, + + // Decrypt the imported string using the provided IV + async decryptData(encryptedString: string, iv: Uint8Array) { + const key = await this.getCryptoKey() + const encryptedData = Uint8Array.from(atob(encryptedString), (c) => c.charCodeAt(0)) + + const decryptedData = await crypto.subtle.decrypt( + { name: 'AES-GCM', iv }, + key, + encryptedData, + ) + + const decoder = new TextDecoder() + return JSON.parse(decoder.decode(decryptedData)) + }, + + // Generate the encryption key + async getCryptoKey() { + const keyMaterial = await crypto.subtle.importKey( + 'raw', + new TextEncoder().encode('YourSecretKey12345'), // Use a secure key + { name: 'PBKDF2' }, + false, + ['deriveKey'], + ) + + return crypto.subtle.deriveKey( + { + name: 'PBKDF2', + salt: new TextEncoder().encode('YourUniqueSalt'), // Use a unique salt + iterations: 100000, + hash: 'SHA-256', + }, + keyMaterial, + { name: 'AES-GCM', length: 256 }, + false, + ['encrypt', 'decrypt'], + ) + }, // Function to upgrade seed storage upgradeSeedStorage() { if (this.resources.seeds >= this.upgradeCosts.seedStorageUpgradeCost) { diff --git a/src/views/Settings.vue b/src/views/Settings.vue index 6e60134..f88b655 100644 --- a/src/views/Settings.vue +++ b/src/views/Settings.vue @@ -19,7 +19,7 @@ @cancel="handleDeleteCancel" /> -
+
+ +
+