{"_id":"@ainuo-utils/storage-helper","_rev":"4-724df8ac203bb2063385db9a366e02c0","name":"@ainuo-utils/storage-helper","dist-tags":{"latest":"1.0.1-beta.3"},"versions":{"1.0.0":{"name":"@ainuo-utils/storage-helper","version":"1.0.0","description":"","main":"dist/index.js","scripts":{"dev":"vite","build":"tsc"},"repository":{"type":"git","url":"git+https://github.com/ainuo5213/storage-helper.git"},"bugs":{"url":"https://github.com/ainuo5213/storage-helper/issues"},"publishConfig":{"access":"public"},"keywords":[],"author":"","license":"ISC","devDependencies":{"vite":"^4.1.1"},"gitHead":"b4827c8648e1db4164566337ff0a941d2a144145","homepage":"https://github.com/ainuo5213/storage-helper#readme","_id":"@ainuo-utils/storage-helper@1.0.0","_nodeVersion":"16.14.0","_npmVersion":"8.3.1","dist":{"integrity":"sha512-EWvnldS5B6VglKP6BrzR4IJXbJiJPMdytMi3szkOZc4T/iYRfcwPUsczCSlDsYT1Hb3Jw5isAbaJ5bDyw57UyQ==","shasum":"10167c0c0b24dc4bbdceafbb86df487d383fbc3a","tarball":"https://registry.npmjs.org/@ainuo-utils/storage-helper/-/storage-helper-1.0.0.tgz","fileCount":25,"unpackedSize":21943,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICT5kOMO8ubtGnlz4cJ9Y5O7c6pfvtc7M0jCGMkFjf7dAiAdFdim3Wpdpj8V/dQ2xZZ8UAOw3OZENYjHNMrOmH3Uig=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj7IjwACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrfOA/+NWpQRPMeog5N/ROvazPiZHaxnYvy1AsXIFdaM2yK8o2fw+Wa\r\nROzliZn5P4ectSTc7o0QO9d8ldxu55+KmuyIXU+jRu8FRAk8kSmEr/oQ2hZA\r\nxsdSmN2Pmaf2KYqa1rWJpcLhyXCROtLnVTLZiSbXsX6e+ziPWg/jjvf7pbpO\r\n+XeEarkd8T/kXXS9yB23uD1wF6ew2pd3J+HI5FUBM+koQVwkwt8RJnzvOSNr\r\nRbOe+uk6Irco7BmOmcfY9aylamwXg8k+hdz/f3ZRYZF3EQf4S6AdMr17/rSY\r\noDOhShF12jN8R4CJl6C5cXLMlT5EripuyLTS2qoN+l8y9bBNHQPLxbZkZwG8\r\nRIYkCMBkr9hloBFPftx8prNV5UAKXKS9ruNBqYu4ZGPpP37JTyJSkWArU5xh\r\n9M+Bsk322fy3JitrAU4CcgIaAvbmKT9e567nRWBj8OBLyAfIV2eVWAAbAOvk\r\nZAUsx4VP5xtDIW9Ee5HY6aOWfm1weJpeo8dH4d8jh6LExH1rCIBlEsy/aSKc\r\nlzLgU/g1h3S8GdnzXeBE8wZx1cN+Kvf9F/P0BpsFlNxit8ZdQKNWL8sfN2hW\r\npA3RwsGd9OoatCkFWv0XMdNMaGhE8guGxzLNrVDyjkoErSQgLd3bqa5Jwvx+\r\n6+NTN/3qEeOwHOnKQLQXLHiciBr9lBs7Sbs=\r\n=EAYy\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ainuo5213","email":"1660998482@qq.com"},"directories":{},"maintainers":[{"name":"ainuo5213","email":"1660998482@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/storage-helper_1.0.0_1676445936687_0.8376909400523396"},"_hasShrinkwrap":false},"1.0.1-beta.0":{"name":"@ainuo-utils/storage-helper","version":"1.0.1-beta.0","description":"`@ainuo-utils/storage-helper` can help processing data more efficiently, no dependency!!! ### setup ```shell npm install @ainuo-utils/storage-helper // or yarn add @ainuo-utils/storage-helper ```","main":"dist/index.js","scripts":{"dev":"vite","build":"tsc"},"repository":{"type":"git","url":"git+https://github.com/ainuo5213/storage-helper.git"},"bugs":{"url":"https://github.com/ainuo5213/storage-helper/issues"},"publishConfig":{"access":"public"},"keywords":[],"author":"","license":"ISC","devDependencies":{"vite":"^4.1.1"},"gitHead":"5620270b09eca8296a1823a109aabcbae867a2ac","homepage":"https://github.com/ainuo5213/storage-helper#readme","_id":"@ainuo-utils/storage-helper@1.0.1-beta.0","_nodeVersion":"16.14.0","_npmVersion":"8.3.1","dist":{"integrity":"sha512-oDx1fZggeuzX3/vaCGxlOjSEZSzk3EXs/G2ysnYvbWwAjyVJWQo/P7Vj6Y1chODwcLMTo3EetkXDHyggqB8Xzg==","shasum":"2675570cbc349e6a244cab71f86fdab9e647fc63","tarball":"https://registry.npmjs.org/@ainuo-utils/storage-helper/-/storage-helper-1.0.1-beta.0.tgz","fileCount":26,"unpackedSize":23453,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCr9zXywRsWG8C2JK92luVD/Oqnv+xGz0wPgiOL2IvV1QIhALudAaI6cvyexElAYzcrjIVsDOG74XCsFofBFPN8Fdbq"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj7I47ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoOyw/+JFFasRfJ7+mZmz06N/np8Bz+b02x/YTRF26o9czWXNC+ce0N\r\nrMuJaXMPJG3V9VqEPdCt61V7Ys5gpQx4deySCv+KiMKK8EDfKxal2pl0KKOZ\r\np287VqM84yfPivLgKYFEZePwf4+7RUR4P5nKe/9MDQ3gbjDoZmD6dQ+LPbSz\r\nIgPbb256kdXuBUDkQzgMNwt/PS7NLvCU8jMBa+VJZ7DqSu2HvtmCuyVg3eg6\r\nVPDuZPjW8U6RnvllMkXZOFb/+0lW1fCeN2LcfO3auTxW/1daDx2NqOVGFZGU\r\nZHyv2fZOTAs1OdcykB6cXgTvU+W9anOEWYgQRXJLhXuhfgqHFp4iKretetWH\r\nsCgHvCD78OdOXr3gCcs6SrFeI0W6kjCSGtRRZx0EDkUX7nqMBqpQZYowzp+o\r\nvvbmZblJtyV+RQsWYl9rApWB3gjz3+uZzYAQ6o079Tgug1jp658HvI2Oc44A\r\nNzooXO3+cF+6Yd132HvDfPYE7iB1MLBx0v9GbY9Eua1ellTjyskp5KQnD/lc\r\nXOi/AgiDnZyidZ9qdF800Kxbo5ULBoXiObT6VV5LoC/D16FBByCPJfFc8lV2\r\nrAGZ+0aINx/kb4+hcbmXRuRy1WkI6xhDeHSfQmuUf9UEovog9nJ7cpSL63Oi\r\nXGGrWkv4vzP92gNMnpHdvgAxgnp2oX9G0Pg=\r\n=w7La\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ainuo5213","email":"1660998482@qq.com"},"directories":{},"maintainers":[{"name":"ainuo5213","email":"1660998482@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/storage-helper_1.0.1-beta.0_1676447291613_0.39528134320619435"},"_hasShrinkwrap":false},"1.0.1-beta.1":{"name":"@ainuo-utils/storage-helper","version":"1.0.1-beta.1","description":"`@ainuo-utils/storage-helper` can help processing data more efficiently, no dependency!!! ### setup ```shell npm install @ainuo-utils/storage-helper // or yarn add @ainuo-utils/storage-helper ```","main":"dist/index.js","scripts":{"dev":"vite","build":"tsc"},"repository":{"type":"git","url":"git+https://github.com/ainuo5213/storage-helper.git"},"bugs":{"url":"https://github.com/ainuo5213/storage-helper/issues"},"publishConfig":{"access":"public"},"keywords":[],"author":"","license":"ISC","devDependencies":{"vite":"^4.1.1"},"types":"./dist/index.d.ts","gitHead":"5620270b09eca8296a1823a109aabcbae867a2ac","homepage":"https://github.com/ainuo5213/storage-helper#readme","_id":"@ainuo-utils/storage-helper@1.0.1-beta.1","_nodeVersion":"16.14.0","_npmVersion":"8.3.1","dist":{"integrity":"sha512-1ug+TFZYlTuk8HglDhPltYAQSRKjwP/FUa1Zt+TgKBEzBykroHL3ZX/pw1m8ZWt58NceddknBAbdkoxsbSdUaw==","shasum":"feb8c20576f0b82049cc0f399e3f1f63dd59f0f9","tarball":"https://registry.npmjs.org/@ainuo-utils/storage-helper/-/storage-helper-1.0.1-beta.1.tgz","fileCount":45,"unpackedSize":44161,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCzKoi1zlWd8/MIl1QZOlnyQwPPHz5ehS1hc/SrpCDmiAIhAKWquWakkeq2oNPIGX1UpUYKu0TvTyBa1eLr5mNYgWP4"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj7JF2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpUXRAAizNHr09X6CK1hhpAwAohwMS1KJo//XxvZjxKWZuEfQJOXu8n\r\n0UObCWuFbZN4oJSsDccnkkUcZAcbCB4VNwvAFv6V5ZzOyfQiVZMdavaWCm+U\r\nQbCULAmd7nYXmmtPWrn4tpwOHZHyQFQ3jZ9WYkUHtvaZqfBshWUbkQoupAoH\r\nR7+f8DCTnbqhOWZkm7MD/CvH14wqdCWsTBQlYpxjgwdBd8J1bVxZsE7etmvC\r\nvM/tPwzeP823VrKuAg1HCtnpBCOI2HMnCUZ9xmdjLSRp8lsBfxxOg2ZVIMz5\r\nepqO63qxlFIbhOuqrvNN5XO2xlAABZryo4hS0mqshylFDsW/0Q//saE9TBO4\r\nxna0lDxnLIOdDae+e0HMs4cBg+Lx2ztFhvDTMrQ8azQw9dogTTvDmy/yTQbf\r\n6mTYaE6GNnHIl89Gj2jJSlx3XkpqSeLZIn2Ge0r+Azbe9ZxAfNLBgrGD1LL3\r\n+2qa9eQVQ3Tt9TvQVw+47aEQJ1Ry2STjov+JbhjD5cOpF8JXBE2lDs0MQax3\r\nI+s970ojegedDwtnkGjAh1FdXZJtawSAIT30/wtQQERJS23nGwZIpBvxnGp4\r\nTLrCayBxzMAv6j/CGu4C7TYBTtDFsw97As3EWDxrKngXXNOeUaSEqMzpMkIH\r\nHWbbA6bSts7hABv/PT3hO8zc1k5/G95oobc=\r\n=n0LI\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ainuo5213","email":"1660998482@qq.com"},"directories":{},"maintainers":[{"name":"ainuo5213","email":"1660998482@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/storage-helper_1.0.1-beta.1_1676448118119_0.16852861062994573"},"_hasShrinkwrap":false},"1.0.1-beta.2":{"name":"@ainuo-utils/storage-helper","version":"1.0.1-beta.2","description":"`@ainuo-utils/storage-helper` can help processing data more efficiently, no dependency!!! ### setup ```shell npm install @ainuo-utils/storage-helper // or yarn add @ainuo-utils/storage-helper ```","main":"dist/index.js","scripts":{"dev":"vite","build":"tsc"},"repository":{"type":"git","url":"git+https://github.com/ainuo5213/storage-helper.git"},"bugs":{"url":"https://github.com/ainuo5213/storage-helper/issues"},"publishConfig":{"access":"public"},"keywords":[],"author":"","license":"ISC","devDependencies":{"vite":"^4.1.1"},"types":"./dist/index.d.ts","gitHead":"6f794988c23b7e386bf237415797fb7db0e8756a","homepage":"https://github.com/ainuo5213/storage-helper#readme","_id":"@ainuo-utils/storage-helper@1.0.1-beta.2","_nodeVersion":"16.14.0","_npmVersion":"8.3.1","dist":{"integrity":"sha512-4xPAREDySFCDJtX4Ohw5qEfKTIlO2pZwXGk2HmCcuvUecsj9qlf3Jq35t185VUK6+bTAsGb8AbMvWQVxH5aRiQ==","shasum":"9e8b6ff5715b637f6751a7c1647b2f9224434065","tarball":"https://registry.npmjs.org/@ainuo-utils/storage-helper/-/storage-helper-1.0.1-beta.2.tgz","fileCount":32,"unpackedSize":27592,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICyYkWI7lu+UWI/Em24TCVV9xhEGAlMJRW2vxD891fZkAiEAovoDGYgHteeJ3UAGk1cn8gBBMEa0dMEnCQLhBiQLYO4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj7KIBACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrA5Q//ZVxnkrx/SLvFSfbz1edTHC6bmud09A50oUyv2XI9WCJDu0lJ\r\nFI/5gPG+sVJsMzQvOtpLiTuzX23nqZov6T9vfVPNriPLtUOlp23fJ7g8dBtA\r\nzxrDSd1PkFsi+rfcvWCmuTdMyxde29uPkIJwOEU2jibZ6+vP0urri/hYpN4u\r\neG/D8pG/r7nC6yZXBF1YmycMEzV71xw4lZ0kTPVb1+ObaVmLW8P3eq+ijRsw\r\nY9sCv3UFa4Ic7Iw76sGO/nieT5XLt7CvQcSxltxZZtS2GvCnNx7nmwmpECWD\r\ncjnWiMbCm5g4yTQnL3DWTHwf0HzBJYM6fwuJpM0VReBhfR1sUkJ/zrZlat3I\r\nxFGym8z5oBuAY9hs0ySjROwQMEr3BvmcG71xazFLrjSnhP8ngs2qI5wWxS8A\r\nvg48/ic5r5KgaTK/UXKcb8abfYfMmwaoaiOu5mMvCmcZv0OQm1+wzg2j1Ga1\r\nLZBph57z6i3BesDcztHkf6QkOuYWui3UAJXS/oVh5D7jqoJri8JRR48sEJvb\r\ni6KV3fZ0USNh17iWcHui1sCv8wbatInBp8EFEvmVnQmeeX/PSTOsyCShZX1u\r\nVd86SlkDmsJFJ8jci+66gjwYlmzTzm/nF9wcbmoOxb/KcpsTpP7x1QygBe1a\r\nTExxDxFftw1FLyfzDVivzIM/J1yxf/+Tutw=\r\n=g6SG\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ainuo5213","email":"1660998482@qq.com"},"directories":{},"maintainers":[{"name":"ainuo5213","email":"1660998482@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/storage-helper_1.0.1-beta.2_1676452352792_0.5542994637379426"},"_hasShrinkwrap":false},"1.0.1-beta.3":{"name":"@ainuo-utils/storage-helper","version":"1.0.1-beta.3","description":"`@ainuo-utils/storage-helper` can help processing data more efficiently, no dependency!!! ### setup ```shell npm install @ainuo-utils/storage-helper // or yarn add @ainuo-utils/storage-helper ```","main":"dist/index.js","scripts":{"dev":"vite","build":"tsc"},"repository":{"type":"git","url":"git+https://github.com/ainuo5213/storage-helper.git"},"bugs":{"url":"https://github.com/ainuo5213/storage-helper/issues"},"publishConfig":{"access":"public"},"keywords":[],"author":"","license":"ISC","devDependencies":{"vite":"^4.1.1"},"types":"./dist/index.d.ts","gitHead":"3447ad1a90075f5d208ee0524365fe8199887a94","homepage":"https://github.com/ainuo5213/storage-helper#readme","_id":"@ainuo-utils/storage-helper@1.0.1-beta.3","_nodeVersion":"16.14.0","_npmVersion":"8.3.1","dist":{"integrity":"sha512-RSzekkTYc3nYS+/UoePE5ky1npxuULPPo/KXsTezvpImZShn/dMRrD6CaUtW4l5CqIpVInvXvcFkti2QHuQ++g==","shasum":"55b4993d035c55cfe0ec457bd2966a0abee7b7cd","tarball":"https://registry.npmjs.org/@ainuo-utils/storage-helper/-/storage-helper-1.0.1-beta.3.tgz","fileCount":33,"unpackedSize":28568,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID6G8IKwkK2JQ5T6CJx1RFOAonnvuS/Ub2ktsGR0VqfHAiAGvrOaRlyWvWqNKLd3CwGExZ9vr7f8eGb61ndPpDgaOw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj7YGlACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqXZg//YCctvnMevdQNLUySsqHC9X+ds4Bwv6XWvJDhuWWCV5cjUuET\r\nu9CajWx6ajQgygKJWOo5swrhRdv7cyafWW3UWT3EPOtLzmcc/PjsYKiwLLLo\r\ngdGQbsI7YjcHHxZbwGLQKUBqelPFBhcW69i372W1ylRLx1QdTd0ORAU0wsNh\r\n3UwfXty0CwbL1WT2VZruDgN3rKjxCQBNDIGhBd5Oj5DGNEYWTa5AKFxYeSD8\r\nyIJ7z6jMrdsoosQkccROMK583AHCM4FmDXoWtEywN4V+rZjqbZROuCU1M6PL\r\nsDcGKYOedpdmqkAEg4qqzdYVDB+iAL4Z4z/X68QymHhObPtj/jHwq+MaNjNa\r\n70WI+Ud+ue4IjhwNuuRKk1GO5278j9eBpccfrOJk+EMZZeoDXHlxY56UJzDj\r\n915aElVzGG7lgLyg9rcQK290DT9K1PPCQXMD66w+BAaHCALYJEPJSmLeKHHn\r\nO7XOgqagx9MIg5WgqAmuWxl87Xi+mfNj+9MiaDdD0RYo/GPLE+EO/pOs7gh3\r\nuuczM4TayafEkKc6zBNuy/Defdtt8QYJ758YdaxLDskCpFPluEwh2y1y/l0h\r\nJhrd3piQzLhIA83jZGWp3nL5VHL+082OR0nP4TpChHgy42RYj9HCYNW8x+YK\r\nHASHKvGfJy8qQpE0Q5pVjOS3Flq5oZfWXSA=\r\n=iGCg\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ainuo5213","email":"1660998482@qq.com"},"directories":{},"maintainers":[{"name":"ainuo5213","email":"1660998482@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/storage-helper_1.0.1-beta.3_1676509605456_0.6145093068523904"},"_hasShrinkwrap":false}},"time":{"created":"2023-02-15T07:25:36.617Z","1.0.0":"2023-02-15T07:25:36.837Z","modified":"2023-02-16T01:06:45.744Z","1.0.1-beta.0":"2023-02-15T07:48:11.741Z","1.0.1-beta.1":"2023-02-15T08:01:58.269Z","1.0.1-beta.2":"2023-02-15T09:12:32.977Z","1.0.1-beta.3":"2023-02-16T01:06:45.640Z"},"maintainers":[{"name":"ainuo5213","email":"1660998482@qq.com"}],"homepage":"https://github.com/ainuo5213/storage-helper#readme","keywords":[],"repository":{"type":"git","url":"git+https://github.com/ainuo5213/storage-helper.git"},"bugs":{"url":"https://github.com/ainuo5213/storage-helper/issues"},"license":"ISC","readme":"`@ainuo-utils/storage-helper` can help processing data more efficiently, no dependency!!!\n### setup\n```shell\nnpm install @ainuo-utils/storage-helper\n// or\nyarn add @ainuo-utils/storage-helper\n```\n\n### usage\n```javascript\nimport { StorageHelper } from '@ainuo-utils/storage-helper'\n\nconst storageHelper = new StorageHelper({\n    key: 'ainuo5213',\n    version: '1.0.0',\n    timeout: 24 * 60 * 60 * 1000,\n    autoCommit: true\n})\n\nstorageHelper.set({\n    userInfo: {\n        name: 'ainuo513'\n    }\n})\n```\n\n### api\n#### constructor\n- `key`: **required**，it's the key of the cache data\n- `version`: it's used to control the version of the cache data, if it has changed, the cache data will be overwritten\n- `set(value)`: to save the cached data to the data source defined by the adaptor, if the `autoCommit` was switched on\n- `get()`: to get the cached data from the data source defined by the adaptor\n- `commit()`: to commit change to the data source defined by the adaptor. it will be called when `set`, if it's `true`\n- `timeout`: the expire time of the cached data\n- `adaptor`: the data source to be defined, if is not defined, it will be `LocalStorageAdaptor`\n- `onStorageChange(newValue, oldValue)`: called when storage changed\n- `incrementalUpdate`: whether to update cache data incrementally\n- `forceUpdate`: force update cache data every time\n- `autoCommit`: whether to auto commit storage data change to data source when `set` was called\n#### adaptor\n- `LocalStorageAdaptor`: the cached data will to be saved to `localStorage`\n- `CookieStorageAdaptor`: the cached data will to be saved to `document.cookie`, when cookie expired, there will be storage the newest data to `document.cookie`\n- `SessionStorageAdaptor`: the cached data will to be saved to `sessionStorage`, **`expire` not worked**\n- `BaseAdaptor`: the abstract adaptor, you also can use `BaseAdaptor` to create a custom adaptor\n\n","readmeFilename":"README.md","description":"`@ainuo-utils/storage-helper` can help processing data more efficiently, no dependency!!! ### setup ```shell npm install @ainuo-utils/storage-helper // or yarn add @ainuo-utils/storage-helper ```"}