{"_id":"@c-zw/accessor","_rev":"2-539f6193c564aba231ca0047105fe926","name":"@c-zw/accessor","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@c-zw/accessor","version":"0.1.0","description":"Defined multi-level data store and access by near first.","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["cache","accessor","tool","zero-dependency","tiny"],"author":{"name":"c-zw"},"license":"ISC","devDependencies":{"@types/chai":"^4.2.19","@types/mocha":"^8.2.2","@types/node":"^15.12.4","@typescript-eslint/eslint-plugin":"^4.28.0","@typescript-eslint/parser":"^4.28.0","chai":"^4.3.4","eslint":"^7.29.0","mocha":"^9.0.1","nyc":"^15.1.0","ts-node":"^10.0.0"},"dependencies":{},"repository":{"type":"git","url":"git+https://github.com/C-ZW/accessor.git"},"gitHead":"cc433a7504e36680f3d227010142f10ea69601e1","bugs":{"url":"https://github.com/C-ZW/accessor/issues"},"homepage":"https://github.com/C-ZW/accessor#readme","_id":"@c-zw/accessor@0.1.0","_nodeVersion":"16.4.1","_npmVersion":"7.18.1","dist":{"integrity":"sha512-CpewXTpZaWbrWKcTvcRPROycqLLadUVnapE+A7GNPywXsPhKcSdwf6Mi0065HTPaMdh572vFWSP0ITYeP4natQ==","shasum":"e55512d5796a8f5d5d7efdac9bd8355db86e0d1c","tarball":"https://registry.npmjs.org/@c-zw/accessor/-/accessor-0.1.0.tgz","fileCount":13,"unpackedSize":10908,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg4YeLCRA9TVsSAnZWagAAkBEP/2cI8ooHt3r2Knbumu0j\nQNRaT3tcLOjvdNa6my1lICaefPEC40AOeZys+ENSq4/QUgSJ+PPR4oRbf5zt\n6YVg+LjVDBBeL3lXqlP4Xbq4MMaF/1JcGyU1LhixjyyjzMTW6Q0QGKeHALuE\nCUYaO1iipIahBQCc9pObOPV3wanK7DOwtXSGGGRNaaIufwEp0BVPu0NTtLhi\nizebh53QcwcLz1ogcdBxLTTpT9w5aNyDQU6Lr8/6UKtTNB3kedCD5MMoOoiz\nAFKnIelnXaEjH2BqWJD+PdrloZ5+hwddnurCFnbRf4LSFcvXgdmjIUuJtJ+N\nNkltUa4qrCnl+KmMcSV6Esf3D2ksAshvAh1wsKBAopgdXRlxfSo8PEETtEec\nlV37i5rEn3jqzPjKbG2nxmu6MsBqFFVK6DMOZQNXOTgKqP1b7HpWN42GEgQU\nAjkqL3ZV63Yc1Bu02qm4uQvdv8G248/AOiRpWbx++yv7kBYBHF5PNatpjtiN\nJljH3Wamd2eXyuJxmZtZTHWCvrXEoNJu+6Sa/wTdGKZ+eJiRPJLYFn0BREi0\nMJ2tgYtuHjg9dzBvWeDTW+cSt+UpoMy+Wc0UkQ+gwnockq98+Onrh4ic3MmD\nTL4+xsZBFq+e9bzxl4sgQ5ZI9MB2U/0TiOSZ2OZceQC5NtKyHmAQ4nt8Lro5\n0Jil\r\n=S1zL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBytB83s8YbgJ4M4S7ZrLcdtU+8W6S9tSjUoQRW2YREZAiAzB2nr/X3Y7uj6VgvqH4cgWV9mFe3wyMS/5iVAW+Cgbg=="}]},"_npmUser":{"name":"c-zw","email":"a19575091@gmail.com"},"directories":{},"maintainers":[{"name":"c-zw","email":"a19575091@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/accessor_0.1.0_1625393035388_0.9249372013301782"},"_hasShrinkwrap":false},"0.2.0":{"name":"@c-zw/accessor","version":"0.2.0","description":"Defined multi-level data store and access by near first.","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["cache","accessor","tool","zero-dependency","tiny"],"author":{"name":"c-zw"},"license":"ISC","devDependencies":{"@types/chai":"^4.2.19","@types/mocha":"^8.2.2","@types/node":"^15.12.4","@typescript-eslint/eslint-plugin":"^4.28.0","@typescript-eslint/parser":"^4.28.0","chai":"^4.3.4","eslint":"^7.29.0","mocha":"^9.0.1","nyc":"^15.1.0","ts-node":"^10.0.0"},"dependencies":{},"repository":{"type":"git","url":"git+https://github.com/C-ZW/accessor.git"},"gitHead":"cd1f9b721fb3dfaa64ac4ea7b272a8f123c83f98","bugs":{"url":"https://github.com/C-ZW/accessor/issues"},"homepage":"https://github.com/C-ZW/accessor#readme","_id":"@c-zw/accessor@0.2.0","_nodeVersion":"16.4.1","_npmVersion":"7.18.1","dist":{"integrity":"sha512-RRmfUmctoy1j7QqPF0AcMo1TaoGUmMjJv+Wk8IOrqihneCgl9QfS8BkSczV5sBlGeqIH48KIGSlw3c47AoZ6iA==","shasum":"8ea6d3fc19fb48ffcce43922279520ae69dc2872","tarball":"https://registry.npmjs.org/@c-zw/accessor/-/accessor-0.2.0.tgz","fileCount":7,"unpackedSize":9312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg4YhOCRA9TVsSAnZWagAAHQgP/RHZm6+Xszbn7eUYD5SL\nMeHBQQkpFQ5867Aa2mTglEcT2Vd5uUWZHTmGfd9NgsupX07uju2yB54aiO5c\n8OERSwuLZSfYM/swBHCt4Sa7oh2OE6OuXbAM/t2GbsZvML48Q1EU/rjAWZYR\nqYeFqm5rJ+2afjj6eII6jpLVgo9JdQGS9c6HD+q/wo1AFleZiOPyqeJcBKAF\nE3PTA9f1VUfNZ7uHyyRC+XVmHmbJyDMyS5YL1u99oKNzo94KbFqZchBIWCIz\n+9uvrUaoauDU2n6yScsVra+LVA6a1i8DVg1IGQ7xeuSJMV0MP0NTrv0ZafsF\naYr5gMu3T7mYHqZLGD6rJQ//DtjYIE91jGzhW9UAUf1mNSj4NYM0Xawip15q\n9nkxx/uPCLvTPSOKnaRIt7gCMu0E5Tq/9JH9CrjO2IeMnUM7aM2KWR+HdBkl\nHHFlKX4A+Aj6alig2V7FWBZOSsgpXlvGG8KsU8GVFkto5dX/P95TULti9ZKj\nt6MdRvzOdgPBVsPMc0hmgCs/J9mxog9+JmmakCu8e/sPbG+HCmMlxMsoxDXs\nH4Aw4IsvIP3s8Af+JtbWPZhH+g6j6/vQXc22wi9dHuFAkgnuFZpJI0+mgylj\nnuJYCw67WsuMLEy4QLDo+EncZF9A78ZALWrb8GoBTQ5/bcHCzI57F28Ci/p1\nQK6C\r\n=/O4r\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHdlK2yVh8GYcTqXVCL3vBp/9FDgjnfm72/VGe0gwCT0AiEAtMb+E3+8jEiW7TwRPSMAGQnMi50+EflBL9kksWaswHA="}]},"_npmUser":{"name":"c-zw","email":"a19575091@gmail.com"},"directories":{},"maintainers":[{"name":"c-zw","email":"a19575091@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/accessor_0.2.0_1625393230388_0.6432018253339551"},"_hasShrinkwrap":false}},"time":{"created":"2021-07-04T10:03:55.339Z","0.1.0":"2021-07-04T10:03:55.510Z","modified":"2022-04-04T21:23:48.135Z","0.2.0":"2021-07-04T10:07:10.511Z"},"maintainers":[{"name":"c-zw","email":"a19575091@gmail.com"}],"description":"Defined multi-level data store and access by near first.","homepage":"https://github.com/C-ZW/accessor#readme","keywords":["cache","accessor","tool","zero-dependency","tiny"],"repository":{"type":"git","url":"git+https://github.com/C-ZW/accessor.git"},"author":{"name":"c-zw"},"bugs":{"url":"https://github.com/C-ZW/accessor/issues"},"license":"ISC","readme":"# Accessor\r\n\r\nDefined multi-level data store and access by near first.\r\n\r\n* Get near first data\r\n\r\n* Set and delete at same time\r\n\r\n* Accessor implement Accessible can be a member of others Accessor\r\n\r\n* Easy to use\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install @c-zw/accessor\r\n```\r\n\r\n## API\r\n\r\n### constructor(accessors: Accessible[], options?: AccessorOptions)\r\n\r\n```ts\r\ninterface AccessorOptions { \r\n    strict?: boolean // strict near first order when set, sync data\r\n}\r\n```\r\n\r\n## Example\r\n\r\n### use Map\r\n\r\n```ts\r\nasync function test1() {\r\n    const localCache = new Map();\r\n    const localCache2 = new Map();\r\n    const localCache3 = new Map();\r\n    const accessor = new Accessor([localCache, localCache2, localCache3]);\r\n\r\n    await accessor.set('1', 1);\r\n    console.log(`accessor get key 1: ${await accessor.get('1')}`);\r\n    console.log(`localCache get key 1: ${localCache.get('1')}`);\r\n    console.log(`localCache2 get key 1: ${localCache2.get('1')}`);\r\n    console.log(`localCache3 get key 1: ${localCache3.get('1')}`);\r\n}\r\n\r\ntest1();\r\n\r\n// accessor get key 1: 1\r\n// localCache get key 1: 1\r\n// localCache2 get key 1: 1\r\n// localCache3 get key 1: 1\r\n```\r\n\r\n## Accessible interface\r\n\r\n```ts\r\nexport interface Accessible {\r\n    get: (key: string) => any | undefined | Promise<any | undefined>;\r\n    set: (key: string, value: any, ttl?: number) => any | Promise<any>;\r\n    delete: (key: string) => any | Promise<any>;\r\n    serialize?: (data: any) => any;\r\n    deserialize?: (serializeData: any) => any;\r\n}\r\n```\r\n\r\n### Customize defined\r\n\r\n```ts\r\nclass LocalCache<T> implements Accessible {\r\n    map: Map<string, T>;\r\n\r\n    constructor() {\r\n        this.map = new Map();\r\n    }\r\n\r\n    get(key: string) {\r\n        return this.map.get(key);\r\n    }\r\n\r\n    set(key: string, value: T) {\r\n        this.map.set(key, value);\r\n    }\r\n\r\n    delete(key: string) {\r\n        this.map.delete(key);\r\n    }\r\n\r\n    serialize(data: any) {\r\n        return JSON.stringify(data)\r\n    }\r\n\r\n    deserialize(data: any) {\r\n        return JSON.parse(data);\r\n    }\r\n}\r\n```\r\n","readmeFilename":"README.md"}