{"_id":"fusion-tokens","_rev":"468-a17487488173a6dd6be920faa7ddf2e4","name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","dist-tags":{"latest":"3.0.2","prerelease":"1.1.0-0","canary":"0.0.0-canary.ca778ef.0"},"versions":{"0.0.2":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.2","files":["dist"],"main":"./dist/node.cjs.js","module":"./dist/node.es.js","browser":{"./dist/node.cjs.js":"./dist/browser.es5.cjs.js","./dist/node.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.cjs.js":"./dist/browser.es2015.cjs.js","./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.cjs.js":"./dist/browser.es2017.cjs.js","./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.cjs.js":"./dist/browser.es2017.cjs.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.0.0-beta.35","babel-eslint":"^8.0.3","create-universal-package":"^2.1.1","eslint":"^4.13.1","eslint-config-fusion":"^0.2.1","eslint-plugin-cup":"^1.0.0","eslint-plugin-flowtype":"^2.40.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.4.0","eslint-plugin-react":"^7.5.1","flow-bin":"^0.61.0","nyc":"^11.4.1","prettier":"1.9.2","tape-cup":"^4.7.1","unitest":"^2.1.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","transpile":"npm run clean && cup build","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run transpile"},"license":"MIT","gitHead":"4f808e06bf72516facbbabed1bc24a39b919656b","_id":"fusion-tokens@0.0.2","_npmVersion":"5.5.1","_nodeVersion":"8.9.0","_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"dist":{"integrity":"sha512-qicfd8utQHNW/C3PQk0jtWS3iESPfcJpLAtNES9+x9aTmF27WRfuXVM28bHRZv/eCkHdHzDR2Be8GMumih7+uQ==","shasum":"971272fcb6a338518fda85ee913a7e115ac1a436","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFlpHViTADShmjJaX7OpwZs5BmIn7w9u5YiL1R6WWjLmAiEAlStS26gIR82nvTgVoVyPGfvWCpwtgYT3P+Z5l3KWOcc="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens-0.0.2.tgz_1515541852202_0.014909389894455671"},"directories":{}},"0.0.4":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.4","files":["dist"],"main":"./dist/node.cjs.js","module":"./dist/node.es.js","browser":{"./dist/node.cjs.js":"./dist/browser.es5.cjs.js","./dist/node.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.cjs.js":"./dist/browser.es2015.cjs.js","./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.cjs.js":"./dist/browser.es2017.cjs.js","./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.cjs.js":"./dist/browser.es2017.cjs.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.0.0-beta.35","babel-eslint":"^8.0.3","create-universal-package":"^2.1.1","eslint":"^4.13.1","eslint-config-fusion":"^0.2.1","eslint-plugin-cup":"^1.0.0","eslint-plugin-flowtype":"^2.40.1","eslint-plugin-import":"^2.8.0","eslint-plugin-prettier":"^2.4.0","eslint-plugin-react":"^7.5.1","flow-bin":"^0.61.0","nyc":"^11.4.1","prettier":"1.9.2","tape-cup":"^4.7.1","unitest":"^2.1.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","transpile":"npm run clean && cup build","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run transpile"},"license":"MIT","gitHead":"6b763611d162d9c667d86a6913575ca61dad9505","_id":"fusion-tokens@0.0.4","_npmVersion":"5.5.1","_nodeVersion":"8.9.0","_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"dist":{"integrity":"sha512-Oq0YEDXaw4clULvp6241tCnYPekzYrZN0uwUo2CDb3koSVjlrWRfHw+bzzd287TxdrwGia2fPcA4iZk/e/6+fg==","shasum":"b84c58e2de8e06d3e63c2c182da7e023ccfb50ec","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.4.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD5bVYgh6LZpDVFwe0/XmqYX3s5tQPERt79hkUgwiNu2wIgRcSrY1Sb4YFwMR1kX/ogAHiKX0NJOZaKQVUHE5L5alI="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens-0.0.4.tgz_1515615183930_0.5594790142495185"},"directories":{}},"0.0.5":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.5","files":["dist","src"],"main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.0.0-beta.38","babel-eslint":"8.2.1","create-universal-package":"3.2.5","eslint":"4.15.0","eslint-config-fusion":"0.2.1","eslint-plugin-cup":"1.0.0","eslint-plugin-flowtype":"2.41.0","eslint-plugin-import":"2.8.0","eslint-plugin-prettier":"2.5.0","eslint-plugin-react":"7.5.1","flow-bin":"0.63.1","nyc":"11.4.1","prettier":"1.10.2","tape-cup":"4.7.1","unitest":"2.1.1"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","transpile":"npm run clean && cup build","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run transpile"},"license":"MIT","gitHead":"58191e03361721d09d85f5c311ce4c104db0b983","_id":"fusion-tokens@0.0.5","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"dist":{"integrity":"sha512-MTR+QNWUR7hW/X3HRTkToOhXBNY3qYfPJoiLX1i5OGUgo1ZLDebe6mJnvLL089q/Mbg6BW93UXdEmVqf/B24pQ==","shasum":"71af057ab696046c43e89ca06dfe47cdbaeac6d8","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.5.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDEZRLHrPjjgj2XSM9tGIImPSjDIcbS5Mvjwmqn4MC6nwIhALYVAuOn5DF7io7g42tHTOJqgJDXS2w+X6gDYuA62AwE"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens-0.0.5.tgz_1516236213670_0.34952384256757796"},"directories":{}},"0.0.6":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.6","files":["dist","src"],"main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.0.0-beta.39","babel-eslint":"8.2.1","create-universal-package":"3.2.5","eslint":"4.16.0","eslint-config-fusion":"0.2.1","eslint-plugin-cup":"1.0.0","eslint-plugin-flowtype":"2.42.0","eslint-plugin-import":"2.8.0","eslint-plugin-prettier":"2.5.0","eslint-plugin-react":"7.6.1","fusion-core":"0.3.1","flow-bin":"0.64.0","nyc":"11.4.1","prettier":"1.10.2","tape-cup":"4.7.1","unitest":"2.1.1"},"peerDependencies":{"fusion-core":"^0.3.1"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","transpile":"npm run clean && cup build","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run transpile"},"license":"MIT","gitHead":"3065cb22106345d08578d75a7e0b04447775fbac","_id":"fusion-tokens@0.0.6","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"dist":{"integrity":"sha512-J6Ggy+VdM7zt2NA7rs/UJPCFMCuFljrsC7P8XbBuRrRYEWNLXPKJYEP52EnEfvglKU0cT9BL90Vi08vIt06gNQ==","shasum":"71606a0109918dc098eb43cc0a3b877beb111d4d","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.6.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD2dxUH3RWdQOQAhtfIYsnpV9FyUSlQwQzdtwrgaXHSMwIgfgyzyacd2vdwG6nZ9KxUVE78sSGYjmFArkmvARZME8w="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens-0.0.6.tgz_1517529599160_0.2471267362125218"},"directories":{}},"1.0.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"1.0.0","files":["dist","src"],"main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.0.0-beta.39","babel-eslint":"8.2.1","create-universal-package":"3.4.0","eslint":"4.17.0","eslint-config-fusion":"^1.0.0","eslint-plugin-cup":"1.0.0","eslint-plugin-flowtype":"2.42.0","eslint-plugin-import":"2.8.0","eslint-plugin-prettier":"2.6.0","eslint-plugin-react":"7.6.1","fusion-core":"^1.0.0","flow-bin":"0.65.0","nyc":"11.4.1","prettier":"1.10.2","tape-cup":"4.7.1","unitest":"2.1.1"},"peerDependencies":{"fusion-core":"^1.0.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","transpile":"npm run clean && cup build","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run transpile"},"license":"MIT","gitHead":"6036715a6ea3e244d048d03e73421f2eb0443c78","_id":"fusion-tokens@1.0.0","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"dist":{"integrity":"sha512-o1hO64g5Ec0zSqJwPkHjhbaEOV228gGqP2CUa3BoKl3IMhxnsbQ9Mw0pF1TOVuvGfE535XqwxpfeTjQvfbHmRg==","shasum":"84ce2755ef444259a63b6287d6b279c48e5f4f62","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-1.0.0.tgz","fileCount":18,"unpackedSize":13569,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFZRVU1LYQSGGX9ZZZXyMXkN+dJ05JMsDDk45TObWyMBAiBng/CT4xbT5MYrYSbY0vejKGzUeKLrao3zyDBV7bd43g=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_1.0.0_1518214497778_0.9645220591752923"},"_hasShrinkwrap":false},"1.0.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"1.0.1","files":["dist","src"],"main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.0.0-beta.40","babel-eslint":"8.2.1","create-universal-package":"3.4.0","eslint":"4.17.0","eslint-config-fusion":"^1.0.0","eslint-plugin-cup":"1.0.0","eslint-plugin-flowtype":"2.43.0","eslint-plugin-import":"2.8.0","eslint-plugin-prettier":"2.6.0","eslint-plugin-react":"7.6.1","flow-bin":"0.65.0","fusion-core":"^1.0.0","nyc":"11.4.1","prettier":"1.10.2","tape-cup":"4.7.1","unitest":"2.1.1"},"peerDependencies":{"fusion-core":"^1.0.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","transpile":"npm run clean && cup build","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run transpile"},"license":"MIT","gitHead":"bafa1807467197e6e94359a7b25c264bde476838","_id":"fusion-tokens@1.0.1","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"dist":{"integrity":"sha512-RAysVOu0ZCOJ8DHImp4uE9kWADzAeRYE1my1W36/OV5yRJ5QrPRckC0E3xGMN0AOBtZGpBmXAejjfAjNLI3oyA==","shasum":"b2ef62f515c1a314c7d2590a6e7caf5dca737cc4","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-1.0.1.tgz","fileCount":18,"unpackedSize":13638,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDTYjHuHbhJyv+s2nJc8GNBJphYQ59l9RyHR99HEOrPjAiAJtqLQcRjVTTTBwYAbPiiZChc9EzZu7jdZiG9yv9SvyA=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_1.0.1_1518461187780_0.38775823751140526"},"_hasShrinkwrap":false},"1.0.2":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"1.0.2","files":["dist","src"],"main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.0.0-beta.40","babel-eslint":"8.2.2","create-universal-package":"3.4.1","eslint":"4.18.1","eslint-config-fusion":"^1.0.0","eslint-plugin-cup":"1.0.0","eslint-plugin-flowtype":"2.46.1","eslint-plugin-import":"2.9.0","eslint-plugin-prettier":"2.6.0","eslint-plugin-react":"7.7.0","flow-bin":"0.66.0","fusion-core":"^1.0.0","nyc":"11.4.1","prettier":"1.10.2","tape-cup":"4.7.1","unitest":"2.1.1"},"peerDependencies":{"fusion-core":"^1.0.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","transpile":"npm run clean && cup build","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run transpile"},"license":"MIT","gitHead":"368125580d7a59e913550b1ec99ec49d9f5dd051","_id":"fusion-tokens@1.0.2","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"dist":{"integrity":"sha512-weSmngZbA2U/cQAqRAYk4mfSp8BX9Pgj0fERxVi+DAXf+437eTAyTk4VzcevKTVep9LWLyFD5ISitESL95FL+w==","shasum":"86ffd5a4377d0cb4448176fa2dc6bfc8657913e5","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-1.0.2.tgz","fileCount":18,"unpackedSize":14460,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQChuxpnenpac25WaRBZzQgVIoLWd5zu82rlWwujF4wpwgIgOG0cQ+2xZ0N+M59AQeubjMjgVDYKaXajFrUaUpM2vJY="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_1.0.2_1519954554167_0.048816717771881235"},"_hasShrinkwrap":false},"1.0.3":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"1.0.3","files":["dist","src"],"main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.0.0-beta.40","babel-eslint":"8.2.2","create-universal-package":"3.4.1","eslint":"4.18.1","eslint-config-fusion":"^1.0.0","eslint-plugin-cup":"1.0.0","eslint-plugin-flowtype":"2.46.1","eslint-plugin-import":"2.9.0","eslint-plugin-prettier":"2.6.0","eslint-plugin-react":"7.7.0","flow-bin":"0.66.0","fusion-core":"^1.0.0","nyc":"11.4.1","prettier":"1.11.1","tape-cup":"4.7.1","unitest":"2.1.1"},"peerDependencies":{"fusion-core":"^1.0.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","transpile":"npm run clean && cup build","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run transpile"},"license":"MIT","gitHead":"ea3127435daef4651bbf9d2ab7fe0a04fa152279","_id":"fusion-tokens@1.0.3","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"dist":{"integrity":"sha512-CkPcQquODgujmwXfpDl4aoF0V8yZnepY/FNMeqHBqiGCUBlN9N3w0ZnNkdzbf/5RYSqNsbB7dW08Yuxn6b8pmg==","shasum":"e247a076ef145337287e103ecbc42486594e96c5","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-1.0.3.tgz","fileCount":18,"unpackedSize":14471,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCytqtzeeRlAYxy/HvbNIJH/MMPNFPCtTuJiaFNjkWnPgIgf6nkZjO63d/3qYien7fr9EQ8OZFILlXDjBxv1mMd5nY="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_1.0.3_1521749769637_0.0816786763866626"},"_hasShrinkwrap":false},"1.0.4-0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"1.0.4-0","files":["dist","src"],"main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.0.0-beta.51","babel-eslint":"8.2.5","create-universal-package":"3.4.4","eslint":"4.19.1","eslint-config-fusion":"^1.0.0","eslint-plugin-cup":"1.0.2","eslint-plugin-flowtype":"2.49.3","eslint-plugin-import":"2.11.0","eslint-plugin-prettier":"2.6.0","eslint-plugin-react":"7.7.0","flow-bin":"0.72.0","fusion-core":"^1.0.0","nyc":"11.7.3","prettier":"1.12.1","tape-cup":"4.7.1","unitest":"2.1.1"},"peerDependencies":{"fusion-core":"^1.0.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","transpile":"npm run clean && cup build","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run transpile"},"license":"MIT","gitHead":"9b873c68472b4009c4e854da703f352fe61b657e","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n","readmeFilename":"README.md","_id":"fusion-tokens@1.0.4-0","_npmVersion":"5.6.0","_nodeVersion":"8.11.3","_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"dist":{"integrity":"sha512-QX8xoB1uctHgz6FcboTOSPTG0DMv4lDnsmj2SkERBHAt5oALdi3vCnXRd7EhASxmWR/cGn9BGtQSaqN3nMbvow==","shasum":"fe2a8b5aef497c358e6c82ed21566d0d67ee3181","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-1.0.4-0.tgz","fileCount":18,"unpackedSize":19241,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbNnb6CRA9TVsSAnZWagAAy/AP/iqfoCLwL9Om1Onp1P1q\nbeT1XX9/5c+4tHH5ojCKyWpTnXdzZSEbeFT76meTs4za9/AYXVw2MHqACYLA\nsTT8iPEkkYTvIu354rPjk4VNYuJnJza0qJmllbGRvejeQCYgqEViee6gG37/\nr5/aFERxMcigEVu56ZH1qEnf3WxguAyZ+HTAalToWNHqbaI5afNB7nEiIa91\nZ5JXWBgUW+kCdidvXFYHO2wXSN8I9KxsyXfI1KaUN/pXA260vstIwn8ijLcq\nYoncQ8ypaR8/aVvgvURTLL1gWkn27AKvSAJBRxTVKK4Q+wfnz4zCIDfR+WYp\nWiPf0Np16XT43tZhy+s/wZgBG6SAlv00+EaA7IlJqFilZ+5duztRH6GbJow5\nzzeaLSEX2mIqRa/OWD6+mXrxSOjJLLLb8ZTcNPJRuSV9oKUbAuXolYczLedo\njK7sucDuNCd5kZmLCatpJakX7gkTkiw/zdbqL7GVMsCvpVZ2JDRXuP0N0jp6\ndFY3d56IkFhiSYHXAr7+Z5C3N+TAlNSGe+iTkBLq8gl5bbhR92vnP1ozaKif\nJ7/wxr56qq2sbRL6BF/6sxDMYiRYbSVon/hpqM3i9q91KnWfUIJF3iTy4FEJ\nsUzCzEXgEGHR9ZWVFkjV9q5DN29rYvdMhhisABDbAHNmnAGLwXZUuoV6HRi2\nIgxA\r\n=Zwlq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIALfGl7gGOGLPRy9tfKWlE+rJo3migv9Y17yfTTxeN05AiBb5fiY4su1fDncx5yJSVH0yzNFH0kkd5qkU1cEJqu5IA=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_1.0.4-0_1530296058842_0.24293554657380434"},"_hasShrinkwrap":false},"1.0.4":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"1.0.4","files":["dist","src"],"main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.0.0-beta.51","babel-eslint":"8.2.5","create-universal-package":"3.4.4","eslint":"4.19.1","eslint-config-fusion":"^1.0.0","eslint-plugin-cup":"1.0.2","eslint-plugin-flowtype":"2.49.3","eslint-plugin-import":"2.13.0","eslint-plugin-prettier":"2.6.0","eslint-plugin-react":"7.7.0","flow-bin":"0.72.0","fusion-core":"^1.0.0","nyc":"11.7.3","prettier":"1.12.1","tape-cup":"4.7.1","unitest":"2.1.1"},"peerDependencies":{"fusion-core":"^1.0.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","transpile":"npm run clean && cup build","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run transpile"},"license":"MIT","gitHead":"f839f539e8daabb43e598116c16da53993eecd1e","_id":"fusion-tokens@1.0.4","_npmVersion":"5.6.0","_nodeVersion":"8.11.3","_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"dist":{"integrity":"sha512-RZPJoQCW9CsxLtcn9jioUwbLoUFRa+CeUi4LMD3dDxn0hA5muCBnh8QVpbylmaC9l+HxEehh5ca868sUDkmc0g==","shasum":"26068aed8ab66a2719e97f24e4c0c3a7f372defc","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-1.0.4.tgz","fileCount":18,"unpackedSize":19245,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbPBxwCRA9TVsSAnZWagAAzr4P/1smCwEHf9cCoI6iuIMg\n9GvaiZV/+kIhe3UDms7pvg9AO+P8E3FR4/BVKW0gGfm7jUVnQ4dGxC3g37pk\nWZs/O2ONzRpfiRWWUQHleM2QCtxR6Zpyvo63UBqpkPTzFr4t5MLmxhLPR8uE\nk7ZvsuSfE/lyJbfi9zznrJgakn0yRLQdv8EWOxIV+d06wDnAKs3xuHcU5N06\nxdYs/qAvYnnX81VoXPAtQ6VuKYSNprVpZuQOQGHJMQ2CleOcz72jMcDaVYw/\n2jEf2YDStgN8aIlm5rYGDvYtENYyVcNApgawJZDV45T81cs013HVqvUIYh4B\nIsi/5RVpe8SS5oBrc3fNVrc7ilVrHB2piePBsa3m+f9WyNiCpR/FE/zlKlEM\nbZMykK2ClPlgdH3Z1iN2ttRSO6WDbcuaK7eMdytCclt1FNJNAdub1tIq9KFz\npxl4tuaHQfkp3bhZcbLufBza3lES1iOyT8jGOhr8II7DV3Wmvlll6Xl/RPRh\n7aZmb8Zs1Ibc8D84e+4TehnBQDOUAHXyJ3xG5jDTJZC6LLmHu9pU+SxOrAvz\nFcSOgLC4IcZ5VMVTx6wqXlVcS1pViAQmIXjka+u7FELMTbqi28J3EVdDuAe+\nOIjt1xYoVhTQBROFxkiqcSMkJ9rqweJALnxpYXxSk0TP4byNbdW19NJeLy3N\nK70G\r\n=Hf/5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDM4uTQtf6OB2jh4sCoB7a4tVFiwAIto6B7wJ5ti6KVIgIgGKMVIsOOHfaaDBz6+oU4zOafh0FlM9JY7Nd541vNhSs="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_1.0.4_1530666096819_0.17542976801586718"},"_hasShrinkwrap":false},"1.1.0-0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"1.1.0-0","files":["dist","src"],"main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.0.0-rc.1","babel-eslint":"8.2.6","create-universal-package":"3.4.6","eslint":"4.19.1","eslint-config-fusion":"^1.0.0","eslint-plugin-cup":"1.0.2","eslint-plugin-flowtype":"2.50.0","eslint-plugin-import":"2.14.0","eslint-plugin-prettier":"2.6.2","eslint-plugin-react":"7.11.0","flow-bin":"0.79.1","fusion-core":"^1.0.0","nyc":"11.7.3","prettier":"1.14.0","tape-cup":"4.7.1","unitest":"2.1.1"},"peerDependencies":{"fusion-core":"^1.0.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","transpile":"npm run clean && cup build","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run transpile"},"license":"MIT","gitHead":"4fb5bb01149ae4e870a6392552e49062fa2f9494","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","_id":"fusion-tokens@1.1.0-0","_npmVersion":"5.6.0","_nodeVersion":"8.11.3","_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"dist":{"integrity":"sha512-Elg/ZlrgjE/LstQyF74y7k4iZxMUTLgLme/5yBc9lTDvogHaY/c5kd13vXIAkzX5ZJJWyfqxOnusNQU5UxFTWw==","shasum":"bc472a46ef02235d0ab452fae48a41e835f7a132","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-1.1.0-0.tgz","fileCount":18,"unpackedSize":22123,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbgICOCRA9TVsSAnZWagAAHkwP/3DDfdee9T1O3/Hm4phS\nnza5Epr0A//V2KALrOzef6CkMVgOqyx+6su87xIzmQ0StH3mSXsb6Ml2wGnH\nrYc6pW/QlBx2PzImEQChjpZe9RwNSWbOOZpJJWT5DWq1pdFwmKhwGMnlvw3J\nKW+gv6NwlUtcerHMztwnzNLSq++SbvYnv1Q24DLl2Od/VNBL2/Fh5BdIpTRI\nLO1gxwxBbYeaj8U6gzX1cIkTKv0IJq3gP6A0okiYCzg+Y7dojdu3bHCJVUTq\n5h2kWrvsfsjrmTwA5BPPQ+BJC6fhtMcEwljDfeIeDtodBbatJI1GMMsR4psl\nu/oSzhRsmgKASXjT4ov7h20T1SvO/WZPPZafGd8+t7MCfwg3PVEp9Xs63O8z\npHSx5nCRo7kYd6PJUvLJSlGbo9icqWmJ21gr87zVLMWBTo6F9Ayc4jbyQBuZ\nAZVyp2I3wnbErF0f5dKdYwnbrL/jQ7/N+CXzvwJKgywB4nPjo2PQSzqYVIUh\naQ6DWl7JNnHIDBqkY5dkzic/5R2hjdGHGtLZ6iZ11TRXwxMCjJXDIiBeoumE\njcnwUv+/lU6R7v6UNIRElQr/rh1Uxt3oZq4DeteBSMPCh1l+whmRg5cjKxAz\n937ceCLHnIyaDUouCD4FGPDnt2QLpYTM3txeN318q4lz8dKdn6riySQUYsZ9\ns97D\r\n=yeI8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDRx6XcDOgrS326sN+CyF7T8aVp5cQhRDsO9WrCBo+0EQIgDXSn00RQ3wKgX+D2yT9ePuqNsx9kKYkFJ9c1SxTLOwE="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_1.1.0-0_1535148173835_0.6400224986890235"},"_hasShrinkwrap":false},"1.1.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"1.1.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.0.0-rc.1","babel-eslint":"8.2.6","create-universal-package":"3.4.6","eslint":"4.19.1","eslint-config-fusion":"^1.0.0","eslint-plugin-cup":"1.0.2","eslint-plugin-flowtype":"2.50.0","eslint-plugin-import":"2.14.0","eslint-plugin-prettier":"2.6.2","eslint-plugin-react":"7.11.0","flow-bin":"0.79.1","fusion-core":"^1.0.0","nyc":"11.7.3","prettier":"1.14.0","tape-cup":"4.7.1","unitest":"2.1.1"},"peerDependencies":{"fusion-core":"^1.0.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","transpile":"npm run clean && cup build","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run transpile"},"license":"MIT","gitHead":"71cde14ad4b22f5db9605fd0a18032c478cf4832","_id":"fusion-tokens@1.1.0","_npmVersion":"5.6.0","_nodeVersion":"8.11.3","_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"dist":{"integrity":"sha512-QsBCkXZc3tXR1DawUT1NlADi5TZlVdFiFasz2jLkzTfGlA9+fk7kvDoC2N7mM9Vd1WU5K2ISbkxNRg+Ty3xWFg==","shasum":"d4d3147be4a3bdb1ebc4c59196e927f60fe73097","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-1.1.0.tgz","fileCount":18,"unpackedSize":22121,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbkBYzCRA9TVsSAnZWagAAniAQAJO63GSOY6MAxPSd2ETi\nnpNshnIhHBXrcSUNQ9PqUpK5h8hRYwl3/XhN3YsYYreuLRnBBxXwcfhvH+Nq\naKHim2CdV4us1w1Lm3l3ILyC6vhT0KGxXIR5amtbtoPK7iUo/h4aD6lF2sD7\ny8xm6JjUt+4C0v7U8dszcETPLZqo/9Rg3gd2ezAbHv3aC0Aaf834vOgpcKG3\nV4W/9VhTZODhSQeAPMJUk7rDqm6JdOL7Dw4uKuh6fyCWPEO/UI1LygKrj0RF\nNZCbuw1p4DC/Z8HHchSsh06OyaZeU/X17AJXHzmzdKSgKeeiwu29uUIyzbWa\nNAWD+PdcwMVHFyAr0MoIKYQTuwbjUqEnyARcckeHOkRgYg1w5sfjvzJhjoYq\nb25fWGGPqRl/o/evRUNUtk/0PdYkjGDNhfgexxkEF3HvaaSGL2TWuPYgy3kN\nnXs0sAB0aec2k00em/aEXUEs7kue8T4NxmYnmLy1u6gyIuZLWsi7cmEwNJOO\nOP1QMpKywMN4OgVBFZg4zfqT1mPvPlzmHvxH5WGkDqNk0Kd4MMGlltGqa4SZ\nlWnMC8cIEMeZ2Lf+5OHIYrSZX2IjiF/Q4mQmBbjlS3ec2c3Qs9Qmuaw2eq82\nkLvYtIHP0ZFt8aiBl1w3gmc76A6rvpIh0pWMc8AVKRiCSA2SPkCY6CoKptnq\nw5iF\r\n=SyFV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDgneWePKMCrax8oCAp1RPwJxFuf6fGk75rYahYVtM/mQIgOgrvJto/bWBcbDwcor21T3a5mtLpDzEm1VoAd+m3/Mg="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_1.1.0_1536169523040_0.9842873571053157"},"_hasShrinkwrap":false},"1.1.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"1.1.1","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.0.0","babel-eslint":"10.0.1","create-universal-package":"3.4.6","eslint":"5.7.0","eslint-config-fusion":"^4.0.0","eslint-plugin-cup":"2.0.0","eslint-plugin-flowtype":"3.0.0","eslint-plugin-import":"2.14.0","eslint-plugin-jest":"^21.24.1","eslint-plugin-prettier":"3.0.0","eslint-plugin-react":"7.11.1","flow-bin":"^0.86.0","fusion-core":"1.9.1-1","nyc":"13.1.0","prettier":"1.14.3","tape-cup":"4.7.1","unitest":"2.1.1"},"peerDependencies":{"fusion-core":"^1.0.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","transpile":"npm run clean && cup build","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run transpile"},"license":"MIT","gitHead":"126142e47895122ccc1aca63db8ab9c0cd655050","_id":"fusion-tokens@1.1.1","_npmVersion":"5.6.0","_nodeVersion":"8.11.3","_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"dist":{"integrity":"sha512-AQ0edpYQqstPMHnWhFb+Kgi4JY7aJ/koH4wFmMMY8U8UwqR4S8MED72fF+O0ynj4cykuiJdCNZXKKn8Qa+OK6A==","shasum":"5b29b7d8397d186ed3d459c4e7bbd2de3f3303b6","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-1.1.1.tgz","fileCount":18,"unpackedSize":22155,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb6icXCRA9TVsSAnZWagAAkz8P/3TEGI/db25yFQoGiaW7\n4+wm67ZM5RUjhNAKkfinrUG63Jk5eK2J0RkG3hwlo7qcAh/09vsHIZlydR0x\nGXMRGSHtHHi7cwsFujsN4FmFqHXOh3zQi0e6/GcFMbgtNZJNHLrT1dKtyM9U\nPW9RZoHkQthSl28Do0Icv6qNxj+0S+vE9/w7qFziyl3hL882UbF1OgBlSwMy\nBXSuzYoHPKYqUb4JvGVxoSgRCuI3yZQ4ubrQq7n9lTT8iEtRUqhmiTNlzdng\n7/l6F3PJfXgynIDHk75bHEPwXwysBkwSWUK/ll9Li77WGw3E3H2rVerUk7r3\nslvgmyQcM7vNE9OpQHiVH/yb1TgRtuf+BJ1gLl5Tp7e+vKJUjzjNzp7jHqMF\nekb2pfzcDq1J9/MEMjHW5USuI0cx4o0HBzuQXqWOorenzGH5TTjS4iegK6ST\nFWiUdCUnOk6Az7Px9VJcMIvrJ/Fz+3Phl0Zj/Us/S9kdOsAWMttmVUvT0t19\nxjh5akp/MQLUCvrytyd/tCELYSTn8WbbHVi5EPsq+6twsiTimh1ssyyKabK1\nRv5s8ZwGquCxcaDxuDGDxZLsQ+QCnZ+B6jjRZH7LUJKchLjHlCl8BMW1nU7X\nq9BUhs8pdSfR/f2ZSsoiQSUePar/kzds3kwTHwmNnlkt5kBXzk2EsOFK1Fco\nS8uj\r\n=4L4A\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDQnDFPH0K1HgnQ03NnTUFCguV4UFg6lJemwiuOa+OYegIgV5As8Kf8i7hsBnXhMcSM1FDKNRa37I6sPPY3jLPt2nQ="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_1.1.1_1542072086446_0.1975032261182843"},"_hasShrinkwrap":false},"0.0.0-canary.309a1d1.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.309a1d1.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"0.0.0-canary.309a1d1.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.309a1d1.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.309a1d1.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.309a1d1.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.309a1d1.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-/cF0zRvU5BiUCQsZh0i+JFHgpLN1IH2rhRmQDNADijfsXdGTJfiHwfFTZ32I7n9bx2PIX/G1V81REiceOoCoQA==","shasum":"476797fc8f6b1c4000606e8b14ea418e444256b8","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.309a1d1.0.tgz","fileCount":12,"unpackedSize":9753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc5e5fCRA9TVsSAnZWagAAE9AP/3+1/B1yRGFAJNp17heV\n8Z9e+AYnMIlJoWq3ZdsODMMdz69lZbsRyQaS14RdFnem3I8vrau8hGyyeHMy\nz+8HtcIm1594jTJ4cqi0jlymRNc0+Fqp1uHpEyphxYXrXSSrChNefq/c0nPZ\nr1urbgbq2RzDyJM1lKE/pGJ8nfUqkaoGL0JfyCfcVPiBYc1z4nrgyyyInUQW\noL1iSBdcIWhUZShBBAQifCEbxY6I4r+mTlkvvZc7JiMqwAWT+Y8NPsRyZntg\nsbJPXSwwd1tPn9mTkGHu3khV8jdxfAbAUtW44u4p3tTY6HPgWYTDwjrWXskf\nszk9I9QbX2LEiFIjpFb1SIGkcPiXvh3Fu+Z/TdTifBpSNf0hZHpXeVBnXBbU\ngXHvJQkrcuCEr38/t6xvjmMKAttRHRld8y/0EywM0N3aHhGX6WopBhJCl1dv\n1mjq+KAjB6hDKRu/tRjpcED9zTBsf6Qz+WADQySjyWDypKzQWupOIACZTdlj\namNGP8fs1fLXSCGU38O4shIghM+d2IoS7suzHP1dQ4jMWsjVTLfytORopyOQ\nmGV/ke0g2b1jtmXIYzj0nuSRqd88O6r2lrQVm90aIcJAuwx5NxYBfWivJNxl\np37wre2gQexBYXPjU7XugZIg8DAm8S3JwptrfKnQtAlWBnYRI17xQhbLQan/\nF62g\r\n=9m3h\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCGXodrqw3xxW1XjIbi9Zstl+7Hlw+Ra5iBptOQBsJ4JQIhAJVaBxTBdjVuWXd9V33+HMpI1NB4prZDXKGuoIvN2VpZ"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.309a1d1.0_1558572639317_0.24623919074692657"},"_hasShrinkwrap":false},"0.0.0-canary.309a1d1.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.309a1d1.1","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"0.0.0-canary.309a1d1.1","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.309a1d1.1","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.309a1d1.1"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.309a1d1.1.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.309a1d1.1","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-RgHSClUPMeCqL5wgJXxHaR+M56GkkwKSWy5nq4jCSWjDImrTwHejyxK4uWZjsYNF3bQyC75froTyOUOuxFZPSQ==","shasum":"9fdcfd4ac97730efdd215f3670d55d352e4017c9","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.309a1d1.1.tgz","fileCount":12,"unpackedSize":9753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc5fe6CRA9TVsSAnZWagAA1ZwP/iS3YfIrv2E4Kbxq6Ijd\nI5xz/tY3ifzltfxIXEKmQ7rfCwiYgcmMmW8DJRNlyYADiwnTqqTmjgUMJfHs\nWLKta8vE8V1ih69j53IjoumgX2++AIo5sdfHShlZ4y+xXtRZp/JDx36lf0ev\nBp6qddYSS6JdOKr0pmClFqbNgmoXQegykvYAh/IVa6nwo9towXq7IyXIFA0S\n7Gkc0h3lO1aldSVJBDQvSyU1fGLaVJ7eBhf4+NMol3LxueiZzalK0G5cQ0wp\nZACjR/piU8ZneQ5nZ0cATxvZ9VeJa7hroVxJmDOBvkpqL2hNaStJCjv2MykL\nICzg/wUfat318qU4DHXiZhidlA5x5VfBvHW+Egsm1ugYIhpYwCahn+lpVuej\nKd6mxOLqn8iKg/0f2cCsXp1AIzF//WK7cQWyb50YoAjWY6J1TqyQHNW/0R2z\nHWmGnPJEd8fWz99mkmStwwOSNX3UbbWOQm+Rodl0yb14PnvBPADdBMyNBAlS\ny8M+izPqNntwJPRU5PNH+a8Bg09tg7ryGcgbfrThfTiEbKFXXFMdmMGS1ERY\nudvA5xtZ0vzcQ1ESH1RqABpXkeTaU6avgy3ZHqmKx9abnkb85UQybSNseNV7\nEcjX1RkbJyrb8NyMQ0ZdYZh4tKszkYECLSPQ8QXGLqZumQ8QrbjjnXZYnfwE\nP8W7\r\n=6rgT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICcUBTcuCh2Jx/dFBU6mB87ExSEHzgY4xiV29356kfv3AiBi29deC58yLggfuoTEcI9eMhmnk7bbUvX5yRLhbIzcxQ=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.309a1d1.1_1558575034119_0.27674253362313483"},"_hasShrinkwrap":false},"0.0.0-canary.9941505.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.9941505.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"0.0.0-canary.9941505.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.9941505.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.9941505.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.9941505.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.9941505.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-uU7Qk1h71Tmn14g0PUvCPzvTJaqlRxsFEzFbeQpLEtLJnjsodyTcjR6MNtP8yFK9A3a+Yw+DJngBIY7k7diB2w==","shasum":"e52ede120967f8f4199053eebe1448aff7cdbd6e","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.9941505.0.tgz","fileCount":12,"unpackedSize":9753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc5fzGCRA9TVsSAnZWagAApv4QAIZ8DZklcfkG58yf3M0x\nNQOrYeJSdZxnWX0+zsDUrGKBxPCF4y2MP58wohonNiuQHE/pZsuBmpEb81MB\nWHhoA6mQQMNB6Xr9e0aj3WVbjaL/GembJwvOaL3wr54Z2zOTI6xf4pFo3Xmc\n7l0oMykyxEjbqrsGiJ9VQQlz32DKFhQngugiuKmGK1111ZJGEi1mm7XpleuY\nP0KSBnNVW/K+cyu9qYcHwjTBIEyfZO8h6xRNXlo1jMeSXX8NOOESvWNmrAR/\nvGVnYg98A+Jdgc7RMYhlzwsbwqwcBY68XeaWExDtWTM+oQQWVY/Wp53z5cw3\nOhx4bn/HW6TBI8FLaO/0biLL5dsTpHT98q38pfXToL51ikPrseFC3LV3fmgx\nK1RPtCn+e7SbQbDMVYwLd7ElTaBQmf3bcLOtIWSBFPRTXBdC+1g+fbTarJ9P\nSHzgG4+EaOmKmHOsNiIiCT7wSwpXIN8MVneXTnGg+dO8T07eGztHjSsljxUU\nVof/nBNeS7KMBPASkoePH2ZZcB2U1Fk2Poha+au3ULm2Tt40Ts4C+v2GOXZl\n3E4LnN923TECJYufbIi5/N9LvCNg9I1GQdxjFw6bxyqV+8F0RRG1GPSMf67w\nabz8oUwDdA82O3iIb3bgvycD6pa/+ZAQLVSu3i39UZv1aCdVZMxHIVV8CI76\nADNL\r\n=0Bnl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDeBSWSPe7TCj7Tw2uWBQ+gQKxJZOf5YhAkjdGyKQ8AZgIgaiywPly9UPAbXqQqfvM9m4CaJ5nD3rpQHsJm+jPk50A="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.9941505.0_1558576325912_0.43481308678248487"},"_hasShrinkwrap":false},"0.0.0-canary.3811188.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.3811188.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"0.0.0-canary.3811188.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.3811188.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.3811188.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.3811188.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.3811188.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-p5eHK5qxT8cXO1zU+wBLbyIMmMP8/p+IWxm3LRDUtxjhwyVqO7EcNebO51oLQx9WkTEQL5Qh4mH8ZhHyOcGWQQ==","shasum":"569d5f96df0d4f1a66058c20412adf3597964082","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.3811188.0.tgz","fileCount":12,"unpackedSize":9753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc5yKFCRA9TVsSAnZWagAACboP/3gLt4vUQA/5ZLw0nF76\nIjTW0IRe6iG+AD5vDtJC8IkrtvohLTS1JNt7IUVeRlZVHg1pgn7I+X2OqYCq\nd2l2q1vWJO1pOlYwci2mC7uZagd4JUkxwNSStPEFWTWKwHLWV9WljcTGW/IC\ndRTRysL3GUcZGGcHUkfSc3h1ss/UuC4tz9egLKDHARq8eN7657cTDglk0o9V\ndSBtZp7dVno2hXtgBftANUXGV++QQG4cqgUBDbN7veKyS03l39UeZzxZDFkh\n66NnikzR9QIA4wCrEa6UKKsNoojR8vVWRXUR7rrZWjhsdsBZ7acpE2QblhUI\ngyQql49GnRPey9OQIT/3QoYCctKLveHRIvWKs6idaWuRoCHDfIvX+5AuFR0J\nmhF06uCd/N7XWzjxWias1zx15rjarKbBrX51jEWeFFK4MJbcxgnksdHFBlAy\nIC8TYdNXK8tu0ap+HlsGl10zVfKqDAz8XIir5hvnSPtLHknPQkE6P/4XCMwL\nvD7mBvzhsJR1K/bqc0gpZ5YuxJlnog81sor2/ppHGeoC3y4SiZAGWizKPZKF\nUK7ps+va1taXK+sNaq1z3boqWWBOKYPqBGSUwtc8/ubnIIcQz8HJvhR+nJBW\n4afOKfo/McKcskg81wPimtTlZ/YoD6QW6dXM0rz4zkZ9KdV4V1IVhZY3hM/y\nE5OX\r\n=AAM4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDloFiZkxFFHA2t6qNNdU+QVFiz1x9ULCw7YmX0KpCiTAIgCZ0nElzpSJXtowyYKMVgZ8cFm+Ereh9TPQUq8f3e8E4="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.3811188.0_1558651525084_0.4860529721263962"},"_hasShrinkwrap":false},"2.0.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"2.0.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"6.0.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"2.0.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"2.0.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-2.0.0.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@2.0.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-XMPaOX0mFig21K/oz1XXe0flRv8ioeoecnqSeX6oVWfop6DPA7Mtt7lGJ0Aw+KAX66WQjL3kmtdhP9YdGL5Fcw==","shasum":"d77c41b976adefdadb1f829a4f8c0f40f6591946","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-2.0.0.tgz","fileCount":12,"unpackedSize":9685,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc5yY4CRA9TVsSAnZWagAAntMQAJfVUxfDclJxDsorctb6\nyiumV8yfyEpWqK95ZX8akNa/N53xvW4hPCuzFBlOcPP5Rr8pBDF2pz3iH3FU\ncSVihNA36Rme81A8FfHQWBL3tMg4nFagtsyIrcqkEoudxEjhVPqMJmPGY21t\n13k3yhExV28EYyvqLyqrXQfayH8Bj4Ye8TyPcaNclCvn7YFIPBsWJqeSjwvM\nUxeCTIF8pqcVHtOaHfNW/XVeZMQchWxxd+RtPpGISNvlWL+g1PZH17dfLd9W\nAYFmtOFR47JlPJs3wuf074p5z1Z2K1fn6umzLxv5dfVwuH/RqVhYnbh0bNDI\nWjeYn9XzIrW+xcDiWMtwebt+OX7lvN/wrU6w+n38I9/+RlmT0X8OxXMHyvYt\nUNKmTQIdAElTsItlMDjjXwrbMOIVYeJxyVHu1dMdk/CJGkW6j8/BfggnTEoo\nUNMuSg/NUvmjSjvH+PB35nMQ2x9u+Z73fO45kY48jE8kBINOXygI/xN4U5K/\nkfatjVzwO/PnEkTpMt5PwpqNhGWwPMhvh+FL8jwBwJM21h+fU29ZHK1YnK2+\n6FjSCJ/EVPXvzfdojIqhOC8ggIbS851WDtjL2Q4cwmNTQzcG7SkxhiJWpxNE\nFMWCTcbi9Jblswa7KS1wz2VOXQ3Fm1RSwAOvdrD7QHbc4WvQBUEy9y52hCRA\ngXdg\r\n=C/8L\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGSVO5C+OUAE2xqN/DBBYbIRDEvPrebCWm7wRnYiQZHSAiEAvjrxscbIbwTSeaKQ0jtwodhI3vlJucmJw/hl5QZfyCU="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_2.0.0_1558652471887_0.9077004788297649"},"_hasShrinkwrap":false},"0.0.0-canary.872b547.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.872b547.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"0.0.0-canary.872b547.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.872b547.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.872b547.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.872b547.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.872b547.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-KuJw3anBNGQUzeVMBn0SZsiLFv/IRukP/r+s2BdmBoun3jq01/0v7YdvJbjjEubsrXfHgK74f76oKHAjUmemHA==","shasum":"5f8093c6fdbf5f8c4470741dea37d165facf0ae3","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.872b547.0.tgz","fileCount":12,"unpackedSize":9753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc6CXgCRA9TVsSAnZWagAAz3oP/jwAaBQIY/gguJON74mi\n2UUmN4zn5Xy76Or2EbGJt5Ep/QnAuxscTo+dREdepYYRp9NGSHxn7UTWwLdB\nxhzbW1ToYoErw/lHFHB3l8a0BHy1cbGYhyolkDVz72x+UdZgA9GEdSC4ZzNY\nxU+EQcuINyg5cHn885J/zmrrpLULnYVyC0U9V07LfC9zuKKIzCFt/kD0ylID\nymuW5njJGX7X4gohx1MkTCY985gdbP9i2qemqT8lUIn+BYuQuoqWqDK5Cpzh\nkdl9gSGJ6c/Os1IjLyGIsr1mEowBOlGAAH/REa9NBRoEjNBEWApRKOHQNltF\nlYbjnrFhutLuQPh+IYUNKC1zi/cV75Q8o8JqgpI4R1KmuIZhUUZn9E4pi06f\norrH4qFO1N6UvtJ/Rw/QGCLcy+oyTgNFnHDxc9eWaTTAnmH/fIaFJ6fmv7YQ\nT3D+gUmrZKpqi8Ebg6HKPdVuORhJmjyNBvGztsxpjbfLFyUC/wEaZXnOqun/\n9W0ia7iGQF8kqhU8mQ+UDEmHgOzriCkTBTWmnYe5QOkfznU0BebHjjJRtB9a\n1oawj4aPZWvbj3LlUxV5zwRShl4Ic8MLLYJKBkzwIMfOR6Fj76DnYkRD57RU\n1r98fQ2JHq2EzzQ1cbGNgNHMywolKKgVIqy5cl9oWFNSFOInT58lum3mF2Jx\nOIUl\r\n=Cvhb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICaUMVp70vXERgdPvz2yazsvwhadnys9hKMipYGsivsPAiBT0lpgkgFxUdf75VdCBYnte3or2QMqzEbq0UWDEkAXVg=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.872b547.0_1558717919228_0.18081225608516371"},"_hasShrinkwrap":false},"0.0.0-canary.fd5a750.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.fd5a750.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"6.0.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.fd5a750.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.fd5a750.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.fd5a750.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.fd5a750.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-gBUpFQQhPHSmw+YFsyOpwZoNC5ATdPx37KK0zveo2U6JnHMTyrq1jTwbEJgSB3vlASGFbC5YmVmyaU5IEk6bsQ==","shasum":"cf6ed709b6191b3bc4d243e0c65275703e175694","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.fd5a750.0.tgz","fileCount":12,"unpackedSize":9736,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc+VybCRA9TVsSAnZWagAAHGoP/RVsnTklxvLlf0TC5+W6\n6NYMDhhHtoyLlasetqfaLXh2m15fCHR3913my3k0fJ9wZQ3GY1gZ4A7geKOj\nQXIcvyL5ty5BWhIgIgxp1IAyAULKhwstb7ZavTrhdkYDJTQMezyH9PySm+nG\nmDuX3QaH9zuFaU8EhNHVijaZJ91Jhnanfk5vKPu5uqPxCf1mn+aWtJb76RdV\no0BiVZCnWtbcwXqodEfQVU6aqDwUCDe9P/OYj+306Z8HG0e39XCeN0m9lMX+\nyQA/6aDXlitqR/ml/wHV38wlrVmN/JrM6OYHoFOi0rj0nrxRQGJTOLNQ0oax\nJJlw4Rn0GbvB1MZBYaidzXgGdFN5q24n3QoCI/7PM5b41Lm5xD5cevDneksW\nRTlHegOsw/xNP5903qxRvVqiLqUc7uR45CjtS/6Ry3Lqbmgva+mxjBn/xd3F\nlSEaP0ldv01/QE3E86nF7Kl77JiHYYylAcfJphtFJHGkeMhTktyAGPZe/w6w\npDbWm6Y9qQCOrrmo41lXv3gE1k+P+EP1LIlrGcYj/+ESgmNg0ERkGrVGNAZh\n9guVhU9lfm2WIP922OZz0x06M5Snj6ZPYN0/gIWOEeiaAt7nYiakyx0ojB8n\njcGOp3utUUPZR6stmJOAUEYJ02JMDCqZ6v4fE9rKHWghwDuoPNnJ9Ppsskxg\nfwIV\r\n=MlKy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFdbs317h0kknOJuPTKiv1dwDqBFznev6dMoq5UhCYdiAiAnithg60Not7Or+6hYBuNp2Gg1RymHZl/6sbANO564JA=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.fd5a750.0_1559846042405_0.38381819365587666"},"_hasShrinkwrap":false},"0.0.0-canary.4e310bc.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.4e310bc.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"6.0.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.4e310bc.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.4e310bc.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.4e310bc.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.4e310bc.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-0+BnqsQVV4aczUrm5yPBTIvuNloakXRH6gQbaU9tpUc223JCL3q7i31x0ki8V9zPaRSIhP+tD27aPkW2siPBLw==","shasum":"f146e28ed60ebf3896f825acfdf25259d69ad502","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.4e310bc.0.tgz","fileCount":12,"unpackedSize":9736,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc+XI3CRA9TVsSAnZWagAA8j4P/AvNZNNGoSQmIva54+I2\nuQ6eXob+oypD/Ru0iWKSxQRRQgrGcXgAgWxQ/k5xwH0GU+dUnXvwJKYMS7Gl\nXJgUiq067URKF34WdLA5Yu9a1eIW+bPHzsH5/j6Sndv1uFZklvjh3GvmniTO\np/GY0p/OSyiRHQ3Q0V8D3h8rLvro/hoslOiN/+rrYXFp0HLCyiduqhrQnqFJ\n+RfZkZaMXcN41IsTQzSByCADPTXTfu1yDmOlcLho8VCnt2BjCRo0Bw3K6DmC\n0+0rXPlEMhu0w9WM30IgQHQEwb5ybGLZPinMrMxYYBnHxkW326+dibdnQdBH\nGuBjSze9ZgX9wKH3kq/618Vu5Ujv/cwpoAf2vbyPqQoo/UksEhQUdq7c0yTk\nNMVQyEcTCUFzc9DUO7NDX3HMyrpx0Md99ElPtMbgLPMilMSbJKsehPh9/MW9\nmFCiU6QwkkvgUSHCw6FXFoSdLhkn4iYBG8ApCWE+8Ct/bWs33eQdCkluThgX\nmph2+gg4BCep0dLDWbXIWsjUkSpM4MS0VV80+dfYXq+0PM0qjprI9CVE5cGT\n7Szv68xAgoRjCAAEtdziAipQIpZ5CxKfSMtP25rTKRwak9PJjTXoOrzaoaVP\nWMBJNjNGiyI/qlUaFU/nZ0FJSdX5LMsg6kDenS9OgKdyLmtOsY2b05evDtMB\nOm1F\r\n=37P4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCAPJb+ezdOPhQ6c+BBqvHXeKwuifWe3w6htysVYhq0dQIgWAlDL4zIE6DAJxVZXc/eloYBhYL4zo2TLkHqRc99OG4="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.4e310bc.0_1559851574844_0.45120987742085106"},"_hasShrinkwrap":false},"0.0.0-canary.5bf099f.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.5bf099f.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"6.0.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.5bf099f.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.5bf099f.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.5bf099f.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.5bf099f.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-4fRaNHUypG+m63qNokMtTYXSHNia0eAPZJSLhuauPKZtAaGkVgYnAojE3KBoIFFMYzngqA8neJrJg72PO+tNLw==","shasum":"ddd34cfc5c17ddd2f242f1130d78063ea39ee689","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.5bf099f.0.tgz","fileCount":12,"unpackedSize":9736,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc+aLXCRA9TVsSAnZWagAA49YP/2aw9MU17OSm6ZetZ1ED\n5so0kpIrvDJgG0D8zr3s80b95RXSgM9SWz9JontrQVO4Q0MgzIOOsV+waafW\nNbVfyday4R5p3w7Pw6ocdJD6k+0sjPuvngAwZHjdde1PxOkoXRD5ZSRfCMgc\nXmvTCPL2blxkbOjSUL8JYUUtb5YuZx5lLb0pzvMQ3KagE38FRs11lOxJEqhk\nFu73unSOCw7x9D53sRyAt5bKKAQCH5bghGw+yvV5jKDsu/PdGHJXBlzxa36s\n5kJs5uM/rnioYTdPq8k1g2CvmEO2WERTDeKDU4nBnsV1ZB++z83nEWaO3lXr\nDXO+4tqa2dARBhTCCCma/r6isxMkmq8nEs64dv5lEhl5J/p/sn6EmROeS/UL\nPajcPDyp3CTH43TkMBYuzSx8boHOLq9Q8Ad8tlKgyISooo7umRC844p3r0r6\naYbmmIYlDnJ9s3cKvp4srCFI0Uuwi+XvbdRBarKlN0iBht7v9RXMgSHbZPhP\nlB16UxnEBrCAIgAYx5wC74FMC9V/nLoRSQaclZPY0jtwVdt7SAz61FIoV7nt\nuAb26KHstUygI+cGqMd8Mc/0/+0GG9ZhMrhj+9UCBXtbcpbrTj7ayBdG/lgu\nPzs0ERmIX4uzqDzZC4oTmSELG9yfJqrbLWr1VbDWCrZjk1LiAXX2POEXRhZl\nDBVD\r\n=Mbbk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDVyHGGcCI2nEu/BdG6nrBR53u/Q64VOHVI3WrOW2u5HAIgaiOx5MtHlg7125KWcO/8IcZYfTEzX5xxn5FZ22MFP7g="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.5bf099f.0_1559864023190_0.6583004319377965"},"_hasShrinkwrap":false},"0.0.0-canary.2fb1140.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.2fb1140.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"6.0.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.2fb1140.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.2fb1140.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.2fb1140.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.2fb1140.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-/jIBxHJEaCvQL5c1HuVBWsru92Gjw/xvDZeZ7z9z5VQOU8q8xdJWioeoAoSuVujYMDG1RKFFxfMTpQjbNKeIEA==","shasum":"336020a0ba31ff3db60d11283984d02d7de60cb9","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.2fb1140.0.tgz","fileCount":12,"unpackedSize":9736,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc+qY8CRA9TVsSAnZWagAANqcP/3nV2nQkiZpYsfHryZWr\nGALEX35MFPI+CMHBYvS2r4HrXWg0/KJcbEBkad9tBtLmWPC3AE5XN7memGUY\nWMB4kvDG5jYn/GONuiOyfa0TWgBHQKD8KnDvzn5rKj+u2vf9LU2tyaIdK9RQ\nw0NUiEeiTy+9C36Y42R9o6GBLz1QIdKqJrgmbQLFd9emt13Bivixq4tE1C11\nDQXOXBJnicZzcqH4m88E2lQOkbPPPGQLnFMeRnw5HNAy+u28Yhz1teVufLJ5\nQf9o0vVeHUbNG2XeMzk6/cfEYW2ESs3+rZfkJnlvmwRqGWHOnXOUo6dS3uR6\nrfLXnBTZkrViJyIjmokKbEYZFu6+EGXlBUwOtAwf7J5YRReQ4TnZ1i5oyPDa\nfs4BRSkCLnKumvCjg2MTPCs4Isi4y6b8U7gBYLv4LpcUFsH2emXGjG3rMQPU\nrbmfpB0gwueFUS5+dXxq3IQi6PSovpOu0l4EaoDqOeljhoU1lmO2kub8Yhud\n1oUloqM57w5WUUrrHm/dG6SUjR2tRxoCYgKw11LukUTJB5p4I2/qlsK2h3nX\nXGxWA/fsovy+5vh/eEwY1KVjQ2Hrby2oH0+tPVAWysNw2MiUA/a08rxQEa+p\n72EG1MQrFDk/7o6MB5z/1lpzOJR7oTYzlg37fr3yU3M81h7FYe7v81A64EpT\nIsY7\r\n=v+6Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFHuA/9Qa9c+1lM70O6c9QkZ5MrHEwU9vqOWSi4r056ZAiBmb7ahV81NFKQEXWo130cRrlFpmHbC5SxO1pX0eW5lXQ=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.2fb1140.0_1559930428304_0.4740415326685328"},"_hasShrinkwrap":false},"0.0.0-canary.d9a277c.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.d9a277c.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"6.0.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.d9a277c.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.d9a277c.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.d9a277c.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.d9a277c.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-m8Nrn44rj7U2TNe3BiXAzfqlzarLrLGhnAMBkjD/YCvYTgOSOgG78mzaz9iANGjco/Cjg6m8p5TgpWbMUaHJ0Q==","shasum":"73f2de3a03ae25e9f2ce2f93eb68eed2eb0f32ee","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.d9a277c.0.tgz","fileCount":12,"unpackedSize":9736,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc+quhCRA9TVsSAnZWagAACxkQAJpDOC0quwSbTwycfWn1\n1vgth/e+u8qtFLJ15sJ7RoVvbpyoQdzO6JeGn02McuAXGnVXfXZWjH3rx3fm\nbspx5DyM5bymo3cO0eX8gvHBZ3AAKA1Hxd7ffyTK441E3eLXSporxDYn+IIf\n+wDeQz/NeAg6UFP5+IDcpAAAn8uPNg52sb3eDjl1rS0TiGkRoArainjv86ov\ngwTHsugwk1uisv/2ZChlaSzOJ60Yy1MnfBKexTlN9XAbZt5quE8UdyCkaOyO\n6crrjW7Rwm/+efr/OGkB0yFgMy/sDsiQrxCneiyMPfd5fG+sgjYMiO2IJa/a\nOIb7Okq/2nhrYD1P5YdsGIDP1di7ZunqqwlknFkxTfjKpOewvssj+Tu0L8iZ\nmKHRBt9vHS82jyB6p+WJ0SwzSbBEfH9vzl6OEejj9Ps2YVBy3C27Q02ifFCj\nBBmMd5Sfi3W66kAgeazn6t8LgzuWrO4l64UT8Gh8FndvXR2vzywHQ7isCgXI\nobAjt9yx+cF1/tkBMKUHqS65BPLYDP9TtMBCNziIVvgFR+9ql1E8qIiaxvLa\nEOd8q0qy/g4LYtGMUTORHPWfor8l90XotgcK8hfsFDoSfN8ekjIm1VaJH7B0\n1RF9aOQCQCtvCAqG3DzG3c4zX4I10SnWWNaFCob39sjlZuf8jFyiyPdDV+Jd\nekFi\r\n=P1AE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC5yn9RleJmp2BYLzulun/1vyyio60nbZIWGRjRs76tVAiEA6AEazX1wSua5UH7RMeDMrnZyjy9sDOQJSIDFBJ322wA="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.d9a277c.0_1559931808552_0.1598936875716701"},"_hasShrinkwrap":false},"0.0.0-canary.9b5e4cf.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.9b5e4cf.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"6.0.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.9b5e4cf.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.9b5e4cf.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.9b5e4cf.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.9b5e4cf.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-nRAfgjDBqy5zmr1od/jqe5hiac5mgmEZjpJ5O3E5e8AzQ4hli4qmk8nhQ+MwFP7GeZGU6nPazkZCN+eI0uFqfw==","shasum":"0a50576bb2a00c04fd0dc23019cec0ded2f83f48","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.9b5e4cf.0.tgz","fileCount":12,"unpackedSize":9736,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc+wQxCRA9TVsSAnZWagAAn7cP/i0cajqwT4vCAZwJWpx9\nBNtI8LJ18e/SieVDI6jE3DccgZFSaq7qhg/raR97z3UaFHcIifZ/OlGoRPZe\nRF3GK2NTXiDbN+7M1Dz9Gb29J1OVfP/Xrgq4PjxM1C29vs1XEsSD57lxYpLq\n5bWrg3KQ4SXXJZcXLOwPBY7uB6H5pw7ZouA2JE439ON0cGI7QUUCfdUAw3/m\n1RMlGAhbVdDpcRcy7BFaHR0D+g2CxbaQ3zRo/FItdJ/SLD5tSBsk5siOaLn3\n/1ctEfMBuY02ycbdt3Qmo0Mq7xpeLQrjzg5GZMnVryfMHbLUd8JYirVUiNrA\n37Hg3RIYKzKDXX/p5m7qs9hy/3U0+fk32iP609ZVuEcAAUUKQe9ZSiVGtYgY\ntAJmoSxglEVmnIlC41SC6hl0AzbPfqtxb13pwdGuhDe7VUEkC5HneH7coIDo\nZoIM14UwAxOGpnqshNt3G8LniE9zu16qi5wjrLvJ5n441Ug9qroFDSIuPvXM\nkLZ8lLz0zNHKvVrnBB6l5RzpBUJxGtPJXox+HBxKMxaPOnDOLJ0V5V1GlI7L\nQEkR7jZHGS45dQFgdIXQsyz1aUtyGtbKvlXjR2RWnqNsDbIF1POwlgKQbBfq\ndSutm2jOHf3CV5hOHeT5sAiFnZKtoOzDvTVZXFsRTXfF9MlF3Iao8Ue2HU6M\n96JK\r\n=humk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDakwj5V/WVY+zo48r7cHJQdjn/NXIiS+tstoc9CTMojwIgLTHNUoaBkKj3HdDKwHoTD4EfGrUaZmXYycoLOrqXWDA="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.9b5e4cf.0_1559954480262_0.3699393532440307"},"_hasShrinkwrap":false},"0.0.0-canary.43352f4.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.43352f4.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"0.0.0-canary.43352f4.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.43352f4.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.43352f4.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.43352f4.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.43352f4.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-cm8c1icXqlRx6kXR4aPK+7Q0fiVWBcdVIHfLrlRLUfVLGTpcas/4jUIgGEhRjBZyyMwyNAhKhUCgk06xIV1Zcw==","shasum":"19bb5ce7f2a5a40ca4dc1c1a0cea37717434f80b","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.43352f4.0.tgz","fileCount":12,"unpackedSize":9753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc/qdLCRA9TVsSAnZWagAAGqMP/09KXe9oj8bFfgqvmoZI\nOYfOhTRe/kU8cquMgkIszDhWWet0SpaUczuOUnx8d1yatrEiSMO1IYDRxXze\nYYJ4kc4+AyUxDcY93Oi9KZ5aOy+JO56mYuIilHVirupWqA3D45B0MawnZmgz\nR5+KBCYO1AuirlgdjESD6uwOCp7j3gTMdtp29XldDSNR6vpBHJNz7wry+HJf\nFQW8E6e60wztrN3e/74qm8Kvcb2BPkLFZcapBsK+gFnDxiwJsCusLtsVOXTu\ncMt2KgeTxka4Kj6/R//ksUHOhBCFs2HRN/rPlnyy179cWrAheAdevfCEhHOq\npRJj6/oSmTYl3krm8/fbyUd8hXQ5U45Tr26HZyT1lW78Trcdh+QVQkibozZv\n/KxHmYhm3xCJo1qYyYrfhbCAWKV5NhkJjzLxF71jUrBiyjfy+mdWnhudkdsa\nIQIlhpGCwOPIRcb1zvKdSnLv3idZrrRHfvupg1wNTXvudQ/WWm13GfyiFjse\nWIEV7EsaXyAurae0cub2ekV/IN5zAiO+tjKfEQqkkH03H0y3rlGdzHEe5/VQ\nOsdDqwJy83h4N39/TSKG3kpJQiGMvlGqs0nlKilBP7Ly5pmCjWv8yj79RzxJ\nrzIEGgwsY+ErqB+p3Ss7T5HJLds9256wif9OUqGyK0CEuPNXEAv82ICUErYO\nToZe\r\n=58Xh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC4bWkdKhMYSABCspDgH3g9lVl6xl/a2VrdAIPma8f/GAIhAJYOypHedjKJlFaXTZl4mnuH/5gc+Pp8FTg4WnseBY+l"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.43352f4.0_1560192843000_0.3794474372120593"},"_hasShrinkwrap":false},"0.0.0-canary.43352f4.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.43352f4.1","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"0.0.0-canary.43352f4.1","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.43352f4.1","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.43352f4.1"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.43352f4.1.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.43352f4.1","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-lLtosbBPgxTTksZqCWPYa/d5VeoJONlDMuPpBPb2cFrQSstVpa5e4nHAVhd2jnQrC2Ruc6U3l2IVy4wVwI+Neg==","shasum":"617c05f2c34708393a24edfc5a367d580ece8200","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.43352f4.1.tgz","fileCount":12,"unpackedSize":9753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc/qfECRA9TVsSAnZWagAAW50P/jVQ9nI0dKsTILzFxZRN\nrh+fNt4kutNJO98nd1jNsgnJ8iB1/uBW5iiFhxdSYKFSN5G5BeEaHGAQkqRA\napV6doeaHz6zHWJJgC/Em+g1q/Dhx9ERoLhrkzKwgL57DxL7nWydMI6jgA30\nnfcSCJLA6J1Lth++6EOU00D23pOmHNhwEkcVaWsWmYBSJnapQp96Thu+GjJ6\npv0TytoeEcHs6sw+rErcoIuW2pfQUIdK+a9gyS2nd2bccDEYVYj1ItT6z2XK\nB7ozb9dNfvZd2FZB1x6LRkrD4QeY3zTsoBJ4wH/PZnNT8vSqsd2IvkoJrA9I\ngHtK8q2vfc8VS/1+IS3DwZ2ioQVNICEDohW2YTpQ4GRHC/7PpZPpdlMi4HGs\nZKsADrzJ0PwETUKCLv0cHq8/b9+AEYxCosCD30QCwQYBUMbBxpBtL6x7FiQe\n9eDg7HlKGOH7uVc4vhuW5fBMh3zcRKNS6/zVSzNn9hRcM2pNsTxyWA0QMxmO\ncOl5yrzqqB2GBxU7I1t7NWSjK0uSVw4sl2Y+515RXs44ZD+We7tTdIzzSlaS\nlLadOmtV1yYs043sWa2e59MGv5C2QwG8fkx6JemyXvv0ykZuWZc/Zwl4Qb4p\nMUvUTMEUDStRkhy7RcCWz8+Mk9z6ghipThEi5/Ja6TjxhD1xi8QdGKxk8sjQ\niFxf\r\n=4BDB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCR9OBspbvDcV5zKoW6l5wCfpiitJRfoUQ10WnJ0BUR1gIhAMNa/HPAr3wzkhOhzyruC66LoEx88c3mJS9X+9u0AHwd"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.43352f4.1_1560192964109_0.7586469273003327"},"_hasShrinkwrap":false},"0.0.0-canary.4fb3fa6.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.4fb3fa6.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"6.0.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.4fb3fa6.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.4fb3fa6.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.4fb3fa6.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.4fb3fa6.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-1ibAMPqdVyX9vF7YCp0E49uUOpwz7T/1t25ZE4wtwO1KMBP1nEzkCK6qs4dpsXe3aVvUwt5K9c+DQaUqcp/2Jg==","shasum":"463ffb13b84290d4b20e5cf35edb1b42a2fc11c6","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.4fb3fa6.0.tgz","fileCount":12,"unpackedSize":9736,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc/qlNCRA9TVsSAnZWagAA1GcP/2JprRlSbfwXkoyM0l/V\nPYfTaogNZ/l7uFqJsZZ2ZUV+igtdMDnVO+OGQ74j2MN7MCuyp4/jamfmAI7L\neW2jjdSRoXBiliAI8g4PP3MTHPoASYBFDIAY1KPrUUW3hyOU7ELD23p0u5sr\noAQJG7rT7ubeYWMQr4zCq0tQQyOEmHIQKCvSBF52nXone0zpsf6sALgOeoOF\nIp8Z73wPAsq4Xeh3ATliI3QowhIcGJJZIQbeYaPvXh94MIyHRog021P5cUVV\n/9o8qICskTZeMuxOBAeU/WyRQLfaKDZm0Je1Y6GgcP0Eajk5dRAe+W6wTFuC\nD3TtbeTg6NOskrCFS66kTr7jVBDQY8G/tsE8NMYGulbV+t5VB6FW4MzNgTof\nzSzs418Yq8IPxBeMI7/58pQ98MlyOrM2MyBpUMRXiX6QR3h5SXoJP2g9zrPT\neWXoL9hBtVBVRKJS98tWHVaMrg2MTPKvkE91LFtgX3Tqbl5sB3cKCSlPlMua\nRXkqVUYHJUAj1xaqFWSFGgXcDX6S2ygEA4sxwzw5wUjAt/h5ccQ+XDd9p8Dp\nOVaOPBNUCZxY+Mh/nYW2P0kOSue8rrvOT7zJcfthZfijMIy4IPa8mMuoBj8i\n3z25BmvBPot/6U4HALgDZj36ufFbwf6RgqE0NJtcosITxhSpktxTLyzlm3cH\n7Z7j\r\n=sMxk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEhskO/153B5mxqhv0OoWCsTmZPBDoO8edMM9td+pFcAAiByaD8RnRmtY2zZhJr6LPy0ItWIUgP9kUdiXflGc5JDrA=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.4fb3fa6.0_1560193356259_0.651376926337242"},"_hasShrinkwrap":false},"0.0.0-canary.4fb3fa6.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.4fb3fa6.1","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"6.0.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.4fb3fa6.1","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.4fb3fa6.1"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.4fb3fa6.1.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.4fb3fa6.1","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-BVUHFpMEtNz7aelXlpE4gEgzam73oN8ExqgRcmBoWfQTZGKjviny1kNhdV8bfIXrvTb65VIpeL9ROsQJon6FDA==","shasum":"bdcd49f1aef7487815e4e7fa7effbf664088cf76","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.4fb3fa6.1.tgz","fileCount":12,"unpackedSize":9736,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc/ufdCRA9TVsSAnZWagAArWkP/3l8MEP6HBnbh4UsQZ/0\nAtvxrIqw6I4T57YhGV+7pgNOIPBeWh9B0S3BFKfBOlXciXZ+MUxabFvbXa5J\nuU80LzJMFuuNv0VJmSZ5+h0OfoMpCcyf7J0d6wlkjdUornx4w2sAjRJR3Ypz\nn+8xVJjUw5qXDobl1rmGs8SgOR2iZe7m6kI19Kp7WOeMXYyv0hvhwq8U1eSQ\neoB0cxzyBIWxazlhhaG7sNHcvoF37AxMrboMHJnCEjAJUDcACJrNBENIGHfu\nFEktiRQhc33vhoRqui8l1LI1Pb2fSBzNQDFjk0K4rwPyjaz0TGTRwFvIWU1b\nARAkJMcL59xtJFMAWPuBSiwgcXJxNRP6CwNVFlAT+ml3loxb48zjfaRZyIEu\nx5AwyfO7mrDuxB1kFOQpA1974225IRk/dJo8YTTGf1rtzUETxeXswlaZyhkp\n62vQC0MNYqXHPwYoJ9UYe+c26b2us86bgacoz8jEF7mv9qwC9so4XOcVVztK\nljE+Vrk98ul0dOx5nUNEuxNM4YqK2TjRrZ6Sqk7cF0MNa48yYMLJzdfmPDp3\nugbP7mtNBytpLXRvxx/jUo/pB0OJ0YBzCGRee1xOtJ+XXHVGRi5TPYp014LX\nzX1BfL8MJCXmwTIePVjyfW2SGNba+G8vnQghMZ4iJ/Hvf5JtCRnp3xvQy4hx\n7all\r\n=mJKD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCQKA0oU6hFT/gt+5Syf7qarEVHoYsw+RDQx5vI1RtIKwIhAOya+LNREFVuW3qCiSfOj4oSAz8Os6TtBIrOGzCy1W4v"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.4fb3fa6.1_1560209372584_0.3814806194920861"},"_hasShrinkwrap":false},"0.0.0-canary.72a6835.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.72a6835.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"6.0.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.72a6835.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.72a6835.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.72a6835.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.72a6835.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-DhDX2mU5+ru4qNQW9J8SDAoxq0rAWduQo5yS2b5zpTyTQhjlUYB2x6MobuhyaL+JUw70bc50ao8GfGd65ghHAw==","shasum":"1c3cb0be7b9c9e8a4fd9bd66eae6a7dcf016e678","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.72a6835.0.tgz","fileCount":12,"unpackedSize":9736,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc/vTYCRA9TVsSAnZWagAAxZ8QAKLxkwwZUTm1MAATTrYu\nUVub2eZ8dek7LmdqBKAlZF7nvU5TN8KIkjfBUsqrdUuAdDgMf6vvGTCD6Z32\n2Op5PXNeHyL1eIIi4uLO6PyKWo/GzCRdsQksPqhTolX//wIOLaaJyVL7D37u\ntxPB/NJWVsVFQ63ptunS5u3ngOEdQ26e4w7PkV3z5j3tmbU6pXA9xD05/DDW\njjPG1aEGFKaj+ng9POuVpEbFHUVS0oKjHqPggveAZt5bvI3XabH0vt3qQWo8\nH/+TgstmJd4IHWxE826Cra2HqaQdNINRx/hTZyF16GGj+/hTeDtsc2ITm82t\nsipwvsNblZm5PB80tFULufMRrv3CPikH33tYm+gKailYpSnlosk8YsHmCAUu\n7BcbXerAw+SkyrYCgP0PpSyr2XW+MwN6YG4CGZD30ZbtzsZuICvlUKS5QqFz\ndVwKJ8wlwYUNzbgU4gCWgzgxW9JBMGHF6OYi2zSKI52dam4dhHZB0OxU78Up\nXcSVDepudcEsI74A1fJav3Yf+LXNsMy+wD3OTH3Y0p04d54Z2GUZ76v9XhK6\nTsAjxo+gtCsf6Tzzp4RLIxd5KOxIrHpw0g4AJpCsLtNkJG/8dLryALHp/6Ak\n8Y4PCXniqsweGpszKK40iJjjwppyMMvARQzYxQ9WsuqfmcF4WwM+0grofQzJ\nY/nA\r\n=4nf4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFViPVIadm0SjaO6SUyAwvGTw9M/AweJ8DD5zPu1zrhcAiAE5imxYPZusZgUk7A4H/lLrikdYnLblDiNRTjxGwikmg=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.72a6835.0_1560212696117_0.15108969798343175"},"_hasShrinkwrap":false},"0.0.0-canary.af0fe55.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.af0fe55.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"0.0.0-canary.af0fe55.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.af0fe55.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.af0fe55.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.af0fe55.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.af0fe55.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-TN0SnSIw3J04qq1sRBC4c/PErVCK6Ptt2HqGaDzXXkuyJbc/P3cql3JddUgcUVUmsOWxUIJHYrSRwhiu37zXOw==","shasum":"fdf7ef966c222250f9ff9b4be774eabbda131ff5","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.af0fe55.0.tgz","fileCount":12,"unpackedSize":9753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc/91ACRA9TVsSAnZWagAAR1QP/0vUh2DdWrq+jA4YzMwT\n8T+ytiehZiRIis3NxDSCSZs7Sr66BA5ZLxlTOUcu5m/d20yX8Tb8ji7yAILo\nLFZpEkusGl5uwyu/AHHKB0+CmxK9a2Y2/C0Rv5aKjs35pszoHB0Fbgep8H62\n1udbp8Bbp6fYliCYV68ddPAlKMvqPSU+7HWkYlPOJ1Er7wv8RnQOJW152GO7\noT8BupWMP0eilDNoLZ6UCBI15NesCni+Na1lp8qP7UG0lmPCF/3+shG30rH5\nTTzn1yErBBkojQtcqMs93S50tjzv1ogahzTzmbOu0aXpNYIaSB/WZLizCWg6\nrdzcXGkViJEQRlaLpL2IeTuFI+DnybtaaIU9e5WmcvcZi6Nms1r3xirocVVP\nIhC/tZf8HjSOR7HSMAZyKkf9PeFcL8myN7lel07D0xoakpCFewmzltLjRXP1\nE/wNgxSyXXulcKRZnsPHZT1WeIRZnoPvSfz81ObtZOvRQmBXQJbmoZ0YGAbH\nUPq7OfNs8KQ7mOP+nNXAWZ+Q1PaxXwzkUatcgSytHHApSE3uaEkcjAaE3Saz\n5yEkd7pe1dubWqHGVNuOWDBcuPVDQjbgw+k5rAgrmV2GiNNc2qCMMMyQunPV\nS4NW9mOETAvSlUxI8B2SfnAGYRBHgc9VLzBPGq2iuJzJ5RZ7+8MGEOi4qqnz\ngXbC\r\n=6ht9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCnHFOPnS3rHjlexko4DcuJvfZPKefk2d/pXRjv5fIeJAIhAMRNpDDFoWufzwzVFE5MTD+8A9jLJHIdKLFS8cD+c0HJ"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.af0fe55.0_1560272191348_0.5207360533414742"},"_hasShrinkwrap":false},"0.0.0-canary.af0fe55.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.af0fe55.1","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"0.0.0-canary.af0fe55.1","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.af0fe55.1","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.af0fe55.1"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.af0fe55.1.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.af0fe55.1","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-qWwO6CFFkQB8CpOQYsIeqL3O4bUftdF7ZGHZPHxWYWWiJSqJcEcixG+K/I8OVMvb5KA1US7WrrL5ABtz6+BDaQ==","shasum":"da15a0f9ace55da4ded4e3ac02090226398f0302","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.af0fe55.1.tgz","fileCount":12,"unpackedSize":9753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc//CoCRA9TVsSAnZWagAAEIQQAJ/FeVNsuFLloM6zlJkw\nouk88jZXCFquAXfEgUetsIhF7gSZNslypZFIUnPcHMpoPC9ahmDJhS81dFAz\nD3RuSCFD6iSPW1u6EjUdrzXQPNu7Ca1DktVOnNT1bFrUm0XFpB9fKiVzjIUa\nriYmDyucupJ+ev4/CHjTpHxfJJW9v8HWiWkVK0p/BOHz0ub8oYG5P3tJ4tXN\nf62lrFor5mee/7mScltUQv4kDh+QGh1Jhk/crijA38/0kjedeAWqzIVT4AXm\ndc5+iquhbl2HJJGnH3N93/nKAzeOx/MknP40tnIa4pJhvCFkFNLf9jHTF7a4\nPRaiJn4+c7S2k/hMKfIe8Y7OeDcx5OebGSOFMJ/aRIjXvjZV5tEBsvIstbBK\nK0JEm8Ivbws1m6jScgQ/VqtoR3TVCNNIpWVtlXs4Jy+HkjzdOXIYA7pEElkM\nmo2qwxT5NmgZl6zqakUIu+g6cYfxe1XrsFh+91dOAV2i/o6l/ylPn1RteIBX\nAGELbn+kzQYFuX6ICViZPZ5jsPOASJZU09ziCaoomt5dU94lSlKcu6vjJK6l\nGroLCRKuyH+8W+nXvsSEks3Vlgv7zrbAwa91LLNhT3Thr6cBe5qyQomDmtSd\nPTCopRYjP6keiCDEuhxF/r6oPXSOhnCF6a0ldnPXKRPFg0S6JfiVMlzgooym\nWo0T\r\n=4RF1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCQtYKrWOWZTwjR2VOf0bwkfz+KIeg7AtMg3vHTDvo5JgIhANjT/rPq7CQodHjD2NRFIV6nUVKYxsinT2Aw9HhMSmAS"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.af0fe55.1_1560277159630_0.0986205696477469"},"_hasShrinkwrap":false},"0.0.0-canary.1131efb.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.1131efb.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"0.0.0-canary.1131efb.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.1131efb.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.1131efb.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.1131efb.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.1131efb.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-XMOnJEVGSvGs55agSuALJFU7oTK4J4R+BH4wCPaWD7yV5YMVu9HePuM38ykeuSTHsuylLJxfPe+rWEKq41l3KA==","shasum":"2d3c4f18f318012513bc43ac6eaf99d6561a2b48","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.1131efb.0.tgz","fileCount":12,"unpackedSize":9753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc//UDCRA9TVsSAnZWagAAkKQP/j6EsOHyekYrol3qwRmE\nKERqvQWS340KPQlVRx5LQ6x2yCrd7sVviz8q64jWM4aGJAbuMA0TxkkZVlxJ\nSDhaS0/o6tWSeKxci+Hmx5RWVztZ+mwdACkeKrtqeQ/JF8ow4I317B9J5Hem\nB8/n6OyzmK4GHtvc0ddskhYvvNld+Lugol2TOzzHs+qiqoNaO8W/3J4Z8oXm\n3t0763veHK8jENRJyfhcHxI7GZURQ8Duv6lSVgDJmOQ5n/X6uS33U2HezmkX\njxE54fQ7rvPW+vQ8mO9AUCdlw/0L4hSsPI6bLNCBSrbLoRMxx7vO7i4X/0Hu\n3JuivWguBQh2UrpmBaAvKzfwVntfUm1p2yQvWqz5crhVgO3PZax0XZuZyQ9V\nSrzviczZ6w/AoVZiD59jTc68NSykcvnG6XdMYZ/Pct7mk9Asuvc+GbLT/Stw\n/4f9VNFbbRMxWi1mKmyQlP6AUCHmU52i6+qlx4KAmqE94B0+TbOUFr0O/ivG\ns9G9e7eshZNtM1prTZWsa7CnhlKXro2xpe6kDfSpo0TVXyq3InxkT6PNQ1MW\ndVSmxwf+Q6mSJFojeJ63q7Dt9lSEdQ4wT+cLVOWEulEqpcJD8A13BhzeT6CM\n9NhGGJCNRnLjgkxmqk1lCF5bobB8J2W1fvJljnl06DAnlDQh7/cg/6vu0E7L\nyxAF\r\n=Tm2R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBW22I0YDpGG9GwNrTmk8SG5mNcuIYoyO/S7SHGmzNCdAiAT/xNsGBzX+rpBLueY4DgpFs8q7DUvXzHCxQlIOAt3yQ=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.1131efb.0_1560278274404_0.4565348940255083"},"_hasShrinkwrap":false},"0.0.0-canary.2fcf0b5.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.2fcf0b5.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"0.0.0-canary.2fcf0b5.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.2fcf0b5.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.2fcf0b5.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.2fcf0b5.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.2fcf0b5.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-r1Q2se2wIqawTixDsV1BPcwSTb9JSircQP5aQdVxUARkbIkew3+MiKGOg/yWpBFOfNG10E/ZJcE+7Ztxf+a/EQ==","shasum":"fd3478f8a8629be41d9fa4f6ae361bb3dd682b82","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.2fcf0b5.0.tgz","fileCount":12,"unpackedSize":9753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdAAwXCRA9TVsSAnZWagAAEBsP/0hwSiudvr6YqUYBrvJt\noPzUyRc/lkHlAQciJKkVc9YW/0h9Vjfya9id3l2S9WI0TrIBI2cOqfLQ77Iy\njWPqkLOTuguu6SH48BSoe9s+rvi6QSXOrz0o7mR29YHoVxa1sbpN9Ex+9Ejk\n4wYybl5u9n0WClIfBZJx6UkypgAhj7KivnweelQJGdODKIK4FKia4C8ZEiRc\nw/8Qk26UlLFOn3/Nd7eruOTgiuQTNVyodndCyBAjmQSIN9jlr47kIIBZQ338\nJcbAhS4xQiWoTHLx+oNQ4BoNdY5fkYiMHm/Ns28UhZZEOeHAxDdO/hnxPC19\n9y4C+Yu/BUvIqyifYEkHwEgmRMVXo933NZu186/7I0mThTyS1jw7dGgTU4oq\nyFCc1q8ORt6W686p+QrZ22tFCg/jMdMS1+bgOQK5jm4f2VerRPLyEJu5KAcc\n8a3LGloi+UzJuPB4nq8UUHSol+KH9GCk+H9fO7ceQAOIZihKR+HJ64bBWC3T\ngNykG1KzIl9f0GauK9nFLajWqFcybyIgo8h4GZXtJRii5XaC6apM86tJx/1T\nPvenAI/Fgj6ijeCkTaU0KDzQVnktyAHhqNYRfe4yIc2zXdv/j7cS6IjQRzPW\neVWwDzeBxETQt+JbRzMHUdgztFd0Ak9b43xcG3Ydc+Aewc1v0X4F+1MbBihG\nVqZR\r\n=7Zxo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC2yoyqvu5CsuRcfPWQbl26S6Dp2UYb+T3lq2ThPrWScgIgTiQ5EnwopIB8E8h+xWLInNUK/pFtGI2c2y6zW8LVqXY="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.2fcf0b5.0_1560284182522_0.6762118412946971"},"_hasShrinkwrap":false},"0.0.0-canary.2fcf0b5.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.2fcf0b5.1","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"0.0.0-canary.2fcf0b5.1","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.2fcf0b5.1","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.2fcf0b5.1"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.2fcf0b5.1.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.2fcf0b5.1","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-gd0q6+4oUt8+EAXWx50kgIKsrg1RcZh5P8o3uzy/3rwyuAjtw7X3+8iJGrQupNHSUsPiGx7sTZfsGKE06uUyIg==","shasum":"d503567094b0fed85e018d4ccda7e0e466ce8659","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.2fcf0b5.1.tgz","fileCount":12,"unpackedSize":9753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdAA0xCRA9TVsSAnZWagAA/JcP+wQQ8AMA/qMLHL5O4U9G\nO0puLmUBSVgog3cp4neAQhLR2r9WwAaobqV94+NMgpzXyKqPmqo+IHxuMRbZ\n+YRF3AFBzxH+7aYcoKoo+aDsOH/6i/ZY0SiENW8Y6soDGHW4RMesj1MAX6Hw\nJCQXX78uE9QmpuxR8msea204o/jcU7nRcBuVgwas3kgvh5hLSmJ2RwjJ9rk/\nRgFkkQ/vVn1DQCBPbHZC3Er7ClnQmwphbHOZjTMkJ8W6hjIuHqKTsVxlZuhn\nPRMci363Pgbcnv2yppK/gvQFGO3AetQXOpxGiNOapKZL1UcGpskiXXmyhX3v\naXsAlkFWRM9vsihZYEv4o8+HPvEB1+sbSrD+qi8D4PQIRjA1z1Q/CgLRP/Ek\nqhgMxR/mSpTaf0rxhl3zs+5VOdGR9fv3QWjfRDEUHExiE8KuVAzC33lDAxuq\nRA4qF/mhsjUAd9pAz8pkPWWB/q7xj/MI+oKgBT87lWe/rNWpyQoUc6QpibaJ\nTGybf4wXca7iDweuYJkoPDJGZf6Dwm7izP1iMObA8EteuDzOkG3jDLHsMWzy\nMau1eve6zlhte3alFje3u9bM0NWyLZnLkb6FIp0MYtj4w1updvggwUYiXo13\nvgoomR2KdMcNfXOACIG5d0XaENI6oA+dlIwN0tdm50cSpnNQU6vqAQw7kqp9\nZvGw\r\n=teCU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCn/Ewo19AY13gkzhVQA76ZAuLy7uMXYLEPCYmNS6Al/gIhAN9naybawWjQkQYrqSuIjMW0JOe9Vs8HrnWnUmJX0R2D"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.2fcf0b5.1_1560284465406_0.3874684985613901"},"_hasShrinkwrap":false},"0.0.0-canary.c237758.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.c237758.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"0.0.0-canary.c237758.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.c237758.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.c237758.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.c237758.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.c237758.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-wrMte4ZdJr8PA9Bvru+4r+unsfnJNoD7SmzHx7oO8fsGXN6HHOJoDDvDR/RwMR9z23HBwrOEoYi3mNCMW4GEZg==","shasum":"7cdb2df10c05618885e8540b62cec3224d21559e","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.c237758.0.tgz","fileCount":12,"unpackedSize":9753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdAESRCRA9TVsSAnZWagAA0dMQAKA8MFUJg+7ZI7sXEToC\n8fy6ATnRdEidJuqp14eVz//Dy2BBSfST4nKPIX9x/xtyEW0hSgI++d8rM/Fj\nlCGthp4/UXHjxQn9KiWXmIb82rsXnIA5U6Bfp/EZzFRsojv5/ueaB1zSD9xy\nSLy5aOFzB+smr1zvZdHDz1AHXw9QdrRrJ32YoXp5Nw/gZCiP1iq6r34vGwfo\n8lrxfq+ggnsMRM24DawXUC7AREFqBw/6DLG+C0UZJZn4UOPxuCRR1k13GAu0\nMaSp2TCqZBmEoribly+AvT31Cwv0Gs2oFNGYq12mT/1AVUfCwQjNo5+6Qn3d\n49m/qCRKd3dhT1zlFHm0xL441423WiUS/n1r4ql25smQGG+Am39oZHE6UCJR\nlxiwj5carzWFBdeb8m5HXoUZJX68q0NlYFLwUNJfmROHEBq5aShpXTJP+b65\nNJ8yjoVzwy2sJgu5FWyVGZmlj3H+r2fjEbpn6cR5eDugpvFbP+M6FmwJQ3sf\nq5SkAjUZaRt11PqMCdPplQntEmbSnpxV3AXlfqqzpvLahgkdvMm7RRuvHgTE\n60CIGhoP84QJepzCNcRobhFGPHHNojIMuK5+DS6wkd+/F43KmMylVBqIeTgi\nxvGGy78Ra7aSnRfPhOe5IEAyOjANu3ziJ8OAGQ3OJMkbnF53QSXyB3ANhX4S\nMxpz\r\n=tBvQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC+Kkl5AhGmUY4djYjEwlFuql+oRXO7hdz+FAtEKN1t1AIgATekmPt4IAgdciB2NCgqd7lUhpFdcxE7IsfJxiWKpmg="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.c237758.0_1560298641104_0.3153052524831039"},"_hasShrinkwrap":false},"0.0.0-canary.8c0849b.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.8c0849b.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"0.0.0-canary.8c0849b.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.8c0849b.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.8c0849b.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.8c0849b.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.8c0849b.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-8NsSC0r4KUZ7Y7agkujdlenKsQlKmk7e2zEiGNSxrGd75bQJCGXV/BzltnCG/7+O9E4f5pKGfEGUfxSqL/wnhA==","shasum":"17199a5d7b4b3635e95aa7a5503a773ddd3d6313","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.8c0849b.0.tgz","fileCount":12,"unpackedSize":9753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdAG/9CRA9TVsSAnZWagAAzlAP/29VT6711rWFeOLoZG4o\nymHinuoQ5FiG1MIvH8mgCDMoxtc62BppvfDXwsvsLvGJ2AzRhq0PDoeLYRgD\nVtvJsmP4G/naUxTqVJxIzCa6m8rVqWkc6sFVMizphSbfjH2pRPF1GX6dIqf2\nHn1fDcRehDyetfQX8J1qzpxiDAplL8UlYpn1hoUv7RvYFon3AJRC2CLN+GkX\nCRjVxRaO3Z3RIg/2BwJNBvcef24aXF4EQ8t+7IxrVvgR1+BWccoMBv/tHQGp\nE0kjgNg7lDq3Yik81rzPJm8OoKD0DicQfbozLd2pgL+jXcnmN53bDSvNAFip\nOxfbjMcijvHTw/tq0Clo5bOXDCib0liXL2wpoPAnj9IgOBseRW+EBcjuaHeX\nlSRGQC2ys/XTsv5T4EQWAMxsONmdMfsHlEDE8AynXfaag0YVgstXOzgbJBSd\nnRfS2pd8QgoSqvSVwjvS6U/hZFOo0FBty7inUMZVpGiasw+6krCxbsAtLPh3\nvHSwrqkimOAgSzK8EUDzCW32NLFU0vE5Olz75Uyzit9nCIeZ5cOpYuH6zPVF\nUMu0sExmR9V+Zv2mhFTtzcuMUD9pOhRurwXgeYHKDKbkGyN9AZALQ7jN88kA\n+uSCdviIfIv/zA3/+uA4kr3lN2isxOscW0Dmb6HEF8OzoNkAA4L1qBEBSbbn\nJT5v\r\n=JkMV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFKZcWRm48rTO3um+H6aqmxr8RGo7vID1xjp7t7OVm9BAiEAh9f6Ch632KIO+3+1Kb2Qvs1Vz2uhZSkDxim/hssoFGc="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.8c0849b.0_1560309756746_0.3789112560924901"},"_hasShrinkwrap":false},"0.0.0-canary.0b1303b.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.0b1303b.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"0.0.0-canary.0b1303b.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.0b1303b.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.0b1303b.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.0b1303b.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.0b1303b.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-f8VmXf6GR0AZayYuhFFNuQJ86fXxY3ngtGclo+GUEIM8u85lIv841nM3TBMapjObVdQzJF6SOhiwkz3XeHxDHQ==","shasum":"d0299967f081d26a9c39fd96bf84af80ee79bbf5","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.0b1303b.0.tgz","fileCount":12,"unpackedSize":9753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdASzKCRA9TVsSAnZWagAA3CsP/2tPBhHjOpn4ir2QV+/V\npVCv/HxTP7v5opCFgPTL8G7aq5vbPJczbrqeQ6Or2yGP4jGv8HV7iq1gA6BQ\n9l1D5DNPvQH3QzEhUGO8FD55EovHppfPpQbRVradv0NaBbnh2TWHGLQskIPk\njiD1pOC+QVAlX5yM5u0jD7mCYUPb1ppRipGktftLu3lUI8SONZGEga7RsfbB\nRFw0Kap8F44nU1v7nH64mCAYtbXUL69tgPslZrnrbA6OAxdb0JaveWgV5GU5\nChXq2QSU9YApWh1dZkCc3Od9sWX1+MzUR3HQBRW+IYtU+R2YgGHflVUSznBb\nIwLE9K4e+s6aT68jQcbirPgMGrW2rvqe6X7AGbuTyoUcik+7scnAoNnw+dYj\nyKbS4V4hapHAQaicirM2gNohquWfKEPM1HV9ZwCPyW3clph6OCqzIzCQDFB8\nM9cuT283H/d6VTFMNSozBtjVDnhZg332SsCEmolb+2GBIdAW6Dp4G1PcDnAJ\nCBGOI3296xMCMEp8dw2ggO1QXovvyzhAxYllOEL0eNTrOgauvwOCATgnbEhi\n+ipN8KK5x2aLuoUPIFEPMk/rOoeT3b6OiuDFJO+OivzbeajHDndwJIxwS+6N\nJrvmQT4L1dffj0vnt2T/GHgBwSUsseXWsRI2eHh6eLCWMG5wUXOh2W3Cdneg\nRYmn\r\n=PNe3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFXZ5fuJvlyMhP18Z1OyhJSmhgrQeUIYXjm+W93Wgq3kAiBDfNBz9QCDz6VcQfgRG1DrOGYT9Y9nrcFef3SGpHl5qQ=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.0b1303b.0_1560358089839_0.4059026370867911"},"_hasShrinkwrap":false},"0.0.0-canary.7cfc88b.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.7cfc88b.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"0.0.0-canary.7cfc88b.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.7cfc88b.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.7cfc88b.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.7cfc88b.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.7cfc88b.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-uP4S2vCavHluJqspka+//a4e5k6/KvWJ6hcPI8bay79s6pJIdP8crXs81ULEMHs/k5p7oCqmAn8mz6Ua3T3IeQ==","shasum":"cb9271167c9f13805ca929cbfad8e77b488a54ee","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.7cfc88b.0.tgz","fileCount":12,"unpackedSize":9753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdAS+6CRA9TVsSAnZWagAA6RoQAJxSy7Y95cgFfh/X+NuO\nXvmtqFsAhU676Vmo+VM47uqIj1LaNbc5O6EXlwhf5ICBdgOaMXQcUfPkTOXd\nWJ4ogz1watnHYazfxHDSpew8QvZn6VCdvEniQndfAixau0bqMVF9yx2m/D2J\nUIll71umNiYMtz5D+IouNql6dO21F6p9IwDG5U8LF9wlVQbxrtF2ZpumaPt9\nVxkWuhA0SZmDkO7jetrxS4JvzPCaewqocIuVKipj6bLvivZtWficLJ857kWU\nbFCyIbToWzRb1IbQZ/Arn1jXozg5XVIMSudMjpKSHJI6v11CN+rAkUF8V709\nr5zzzg9Y8vwlLp5AbNyloOEic0xxmrjUr88JX2IBlzHd3dVQxh4R+0czHMG/\nMFfkRt45M45h/uZq9EgFmjCL5Zp3lO2zxr/00HmDKAcPx83YOKsm10OeQPV0\ncqN1/Y+mu1EGoDntf9z1ePdhJTNt6RvXOnpQ0UrnypaogJSFUCMctOqqeHLI\nvGiuazFI+nGxtU+chJ5e0rmjbaaszD+uPimDT1H3q3UDYZSxlcgAeNnbXm4g\nQ3p+tfSqYz3uORPG9IfuUd8PA4y5gnQbtf93Wt10uL9rlQlekgmeWq5Dr3ep\n9TqH1I5GDmOXG4ZPJxvIOwMUNeXOltek1YuCAgr4whDopR8d20Ny/rzqswB+\nDxoj\r\n=RE4o\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEASfDlwulAnHN172A/eScC34FVisfs1twkPdeK7Vf0cAiEA1cD0WAMNdK84WKyHnYFIjlMiJrcxL64Wdcwy4xipBhU="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.7cfc88b.0_1560358841558_0.7143243770414338"},"_hasShrinkwrap":false},"0.0.0-canary.b7caf15.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.b7caf15.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"0.0.0-canary.b7caf15.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.b7caf15.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.b7caf15.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.b7caf15.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.b7caf15.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-3NLk4BmaIi3hNmyPsbYkVmTNny0GS5RDkN0/Q/a3Pl0KEK3hjGUCr7fWVRXuzdQwcpSKyE3jzkObXki5PkoWwA==","shasum":"a6c1e2869f2c269ee45fad1439eead24af5456ad","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.b7caf15.0.tgz","fileCount":12,"unpackedSize":9753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdAWjRCRA9TVsSAnZWagAASHsQAJ3wn70tUUAz275HKuBP\nqpSWYhkED7XnihmHKuiMmGfgVN7hquXAC0a1Zxs6j4/ERLn6DOFvzM7FHAmw\n5WWbnp1kCY88hW+E+ThVrI+y1S/qQBgoD4GsVURM/JSVGNn79TsZwJ9dl6rc\nUOOfveeZv8qvK4VYmDGg5gxKyKdG4MZkMus8diIGOJ50s7QRH8PQ3Z29ggO5\nfnNMebjEs74DeciCTIWkqCXdzLquI7HKc42OQBuN1Usv2DmYTrJStejZBqzh\nJ0ikRh1ONm6jlVi4GInc5op2O2XXITvogZBii5FDewy+9h7sZW7pI+A/9ebh\nltHqt7E6jstk3dClKo43wLYuLWyN33yeUpJk9iIkpHPulvBZvrzOuOfQ9VHr\nZ25Y5rgBm+x5XpmiRZ9PpY0Gjji+kCrmnqK5/KwsXo2aH8jYr6tP2HaY+tZa\nwJjHeYsfJacwNBOvEPswJZ8FrTlWV33eshGx8xnfoED6JTBgYG2h6B/BWvt+\n0OZZLuvf6kJ/oEV6M8Aff721fZ8g7MSu3FzpnAKDwbBOrKbq9C4hjD2nV0Qj\nYubkj9yFdwxgjfM88wVM3XH+NSvk3DDi4nApIrmiA+G9FklslmFdbUK1VDNA\nHTbClL//ZAgZ4Zql4vLsLkAv/tZoYWU8IgiCC3KUIEBS6cZrYNL9SvXYArQc\nCVqZ\r\n=j7CZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEUXwcQ/A6OI0zwOKZru0UVIehYSq82RC6k1NaNj2aHBAiEA74+WJvAQIt8l8Cnek7/leHz/p+lDOfUm5c2tjmgVM2o="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.b7caf15.0_1560373457321_0.7605832199341698"},"_hasShrinkwrap":false},"0.0.0-canary.b7caf15.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.b7caf15.1","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"0.0.0-canary.b7caf15.1","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.b7caf15.1","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.b7caf15.1"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.b7caf15.1.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.b7caf15.1","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-GuzDwNaqxNPHUBq+0euaS7oYAFo3/lPA0NdOMQRJrb3NleoaNUtW4VVUheWz4hRZoHoj9uy0qgbChkL646DFgg==","shasum":"e5053605f013be9c703730147f9e1e2f83010b2f","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.b7caf15.1.tgz","fileCount":12,"unpackedSize":9753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdAW10CRA9TVsSAnZWagAA350P/1/0VnHjOOIPOFKAj/bB\nhwDFtHHtk5YUKx3z40e1g9+ozYeYjO3HuOX6bl/Q/gNHt4BV7HomAspKvz07\n2ia+rgjvGBigUFjC95YV+UPcv0azffWSNkplldV7ZLr6y6JY1tL7spKc1he1\najYfJBPZAcxeMvZcEi+mHkqMPInOshXF7xd0JIELsL+SJHNuhIS+5aSQDWma\nHUOAkQ5hnc6JeEasVN2ecXfHiS+dUjaK/sE6mxikZKsdKeygQ0GdYzE2gGuF\nQ84dnBOmvuUWVIEag27EiqJSA2ViHznAhNYfvgZlZT0zJTWp3Rpk6xTyaGmL\nKSx4KoFrPz9YlWVfCZ5XK/PA9qJ2WBUSqkgG1XFvReMcPVmRGr4QuB9PE18i\neAXrcpAgzIahgCFy2IhaVr0BoX01rotf1Il5287iW0vf1RS7nkFf57z7R/aP\nVD/EkeBL77rU94JO16/zJeDjRjCBIETRTwoSd5fzHb2d5QZsk51bjh8sy7UE\n3MOKtQbWQD6jGBu59jzqwBemq7XzLUKYuQ6evGNGnaCmjcy2hsUl+Xl/jIKQ\n9ty04juHxuVlv2fDETgM0DPCn6gM9anymISjo+NwA9eIaWYpqeU1V2ildmzU\nv9PrvBq7Iu1wCoYp/th7sOyi4rnumwUEHL9BVgFlRkdgSh9hHH55h4JKWXBr\nFmTa\r\n=EWH1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDw5cwJRsY6H/c9tZ1frnAQ+jFB3aq+hd55wiYHNlpWZgIgGmGzpsK2anG1QNqLgIHdYCm4mjH8AA/iU4U8ttvSFEY="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.b7caf15.1_1560374644432_0.6976927588616433"},"_hasShrinkwrap":false},"0.0.0-canary.8ae44a5.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.8ae44a5.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"0.0.0-canary.8ae44a5.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.8ae44a5.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.8ae44a5.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.8ae44a5.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.8ae44a5.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-P9X1Kk9/XwcJxrz4xfWgwIyHJ1RSlzqzT3DA7OecOX9oE5QSskOhyVVECpr1FGi8zCm+xpHG/nCsHGVmDWzGFA==","shasum":"8cec6994aebcee18485566d9f567b3fddd630389","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.8ae44a5.0.tgz","fileCount":12,"unpackedSize":9753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdAXoYCRA9TVsSAnZWagAAEswP+QA+LWgayfu3mjuqvKwV\n/slKpHX9NPkZIHBdWjEyMO+hkw0K4EjOyqdcxiUl10WspfJI/blJnXAmVaX0\neLcdZUWgEkTrX6+92E3jkDRMDlG0CWHswjcjB7KjvVsjs9mS3mMoGGHg/UNn\nSWZ0RkXX6EJLtm0kFJg0Jo9DHHslxc3NbsceBPQxHMLd0H/zWd/BTRLKrujb\nx/HZmkyuBQziMOubFCvKsmz/U8AFbyAgIqUwKVmNVfV2ko0Bl51oAlWJMzI+\nq/eb9rROJmFOAumEtA0H7fViyOf9a6N+U+PFz86PwG5vHumBQdtlBZB2OyhM\n6YoSREGvrDYr09nthQ1HUIU/8flilX9b8TQQtZ6aEOOH8JoSoeOiT3H2Bm1U\nakFbjVvKzocwhQfOdFn5GDjLiv2Tj6qh43p2eMTB95+FNxboaPbds4dgRlTw\nMAUl047cpwP1JyogsKWJ8RWGodHlGzGGZznAFRwykPRXmNXo/7jngzpihxp9\nc65uQJRs8kJmB0ybk+78SMZJAIS6xrfyxxqESicRDI1PXJcZWsBbAl/DJhjk\nLR1mJg22Ai39dwKUIyail+0LW+U6Qakwt+iPC0aLOSO/ivAa7b45L5YUWZ4P\no5yhGvfk935b88O+ZLf5g5Es4+yUSZxS/+yG0IXNhXy9ETopu1EY48DkxIfk\njLfC\r\n=TRb7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBMD+Xc+/2XL3rud/Ddu24dn5b2ih3HpxkL9cp0tHxK+AiAUpL7sVjDFkJ/+QYXW6NvvHY9u6RNf8kwUOjHD55791w=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.8ae44a5.0_1560377880083_0.4178446164742131"},"_hasShrinkwrap":false},"0.0.0-canary.8ae44a5.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.8ae44a5.1","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"0.0.0-canary.8ae44a5.1","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.8ae44a5.1","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.8ae44a5.1"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.8ae44a5.1.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.8ae44a5.1","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-hNdjCpnoPKiGFlxDVPas5/9/zlDLT+GLOzptuxMxSiuYbjeS4hQN6OKcRZOTkqBuyzSeFr1sy0nnVwInHkV9nA==","shasum":"0298811545fca47ddb1c1d309179baf08989eed1","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.8ae44a5.1.tgz","fileCount":12,"unpackedSize":9753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdAXuQCRA9TVsSAnZWagAA3mIP/AhjZtHLq/Bj5uvx8w80\n3nbflTrr/9dH0pgyAKiM/brENboLrmMzBoobAZsisw71G1sX2XDW/sbbx3+5\nwycPeulUWdE7lSiDYkhdy1dSgjEFoBqskANf7TZQCGht4jNttSP4lMfY+pFc\nTX4NrsZSVQGnfTMTwwxHfQHS/+BPSHdm7SEC6XClDLa7bCPIY1imEO/5UtlN\nuDeWginxubyWy3PokF/MOtHmRU8EMgaZu/P9PSm4LJw9k5BIwsAIOJPWXbb5\nhCl63zFrpL4K8g8Or7jhXreoaqHspqEfwZxqbjYqFkjxqpu+/yDWsanp63Wu\nbvDPjQZUELby5zaLrD8BPC6DO2adL9PCBJTFxIdXH9/oC2VQ+6aIDzTkctaD\neZpNkQF4DhHidJmG5/7THmEW7042KM3aZk5SACeTort+ui3gfWRBfjBnyx+A\nWFRoRtIjc09GQOCErUTr52W/eGMa0RgVspDtY3E855S+hDOj+STY6xqeW9aq\nTjnNnyvCFzeW9go2yZMO/WBlNH8Z+Qyaf/jAaQz6QOnMmCbSnlqn2ZQjHlR6\naQ47pww4GrOn9MF9cCRAbY78aeGnD4Vv3tl6BY/t/kfXwDFGdH/J5TcI8i/y\n7vM1s19Cl6ceaLO1KaWA5L377U3v4pU4dKTt+cKb8qAz5YNXGL1NH0b036kW\n0tWj\r\n=I1Rl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDDR5g3eAar10khW3DajKi+z0CK+qzHJ7R06sEv4iWigQIhAMtTHOaO/7xJwUoxBgboHhgbnkRDbkwWTFWOSLO3tZOp"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.8ae44a5.1_1560378255821_0.1518789030464951"},"_hasShrinkwrap":false},"0.0.0-canary.51752cd.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.51752cd.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"0.0.0-canary.51752cd.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.51752cd.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.51752cd.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.51752cd.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.51752cd.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-KuBbyGrkflZ9k7P8nv+G9Ifdj7T/KhtGL9M3pYCgPcjXpx/0gsgEa3Z0L6RRjTmPnGbX7JYivW0f7/X80boWaA==","shasum":"1e0cda7586dce73b1f70165d19db8e85f35de36c","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.51752cd.0.tgz","fileCount":12,"unpackedSize":9753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdAZSFCRA9TVsSAnZWagAAPJQQAI8wrgpM4J67iyH3dAiE\nH/VWk0l4cQVzueyV7PbBGTjczUtEtOpbMLcGkiBXseot4qWNPz/uBurpS/00\nRkiSc6MyDxwUbIU3QlJiGBFuhJW6mq+/sueTLTy4uFPoT0OJ6b8nA4PEb+ag\nQSjtg59FA7jG8Lz0qb/AI5l3Mftn9CxSFTtnAcpNK41vUZ39twt82lB1cx0K\n0+Yh+BvhEQOkSwaYPw+vmJ8GOBWFyuAruB8h8Hrlbk61+ilA0u4n7Y+0BUVy\nrl1vOQfTAG0FiYa0z5qL4KDroXdmQIzLDPPsIOl3V0JML6wktZPAHJ6Hpx8J\nD7jX5d05HCVXnwzf+45ZNAOvkvmGggIvsH62d2cv98EW81vzMzd7F/sC9uID\nQt/n9VeCw/XZP/2d+WqX8VTdEPWfe6Sr6Q7qVI8XfY83cZTh159Vo4cXtuAF\n/Hq7olch5nMjHjlCFrBCtVmlbVvC4z4CdkMbK/JpOuAG3GTUc33G40+xf8jU\na5SS2OvlNykx79dNbK0EAopMByz5n+UgVeeeT6A3FkIxQx66l/2Jj5jxgRAX\nv2rCe85BEERlkwFaSpFmFvpMNMJDW8B9KoNzzAUuXbwvqz08++BR0DPKknHB\ndNcT0gKPgG/3gpkaLQ/wG4VhH0pke3E2AXrFThrh8mLmSMmgvk+mmZR1MaG8\n1uZL\r\n=ZLOt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDA4klWzuwa+/kIUmXKsUsrsYmmQbA1TYcQ7G0fUieoFgIhALwrCZfGUPNuOZCRbDLYcL0XKaXAm9YraNBV1B0BNuwb"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.51752cd.0_1560384645038_0.7277126749243641"},"_hasShrinkwrap":false},"0.0.0-canary.27245f3.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.27245f3.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"0.0.0-canary.27245f3.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.27245f3.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.27245f3.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.27245f3.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.27245f3.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-uJ8Vj/5fy001Qlub0sPlm1ggIrz4m/ntUkR3GNaXnTLgD02SAeuYijodPeDYqIg68d7hsoOv4hDX1p8LUJxJUA==","shasum":"34735ba6c1749ec13ac7d1bf3498501fc00db50a","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.27245f3.0.tgz","fileCount":12,"unpackedSize":9753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdAooUCRA9TVsSAnZWagAAK0UP/3GMXSeK7M/pXzI7PSqR\nlQb8l9NzghN7CVUeJzNPdkzj4khQZZC7JC9UGVEcV2zGzy1Up+jZQ+J5keI3\n38N9C1Y68pdpYhEefPnEhbhoiGvSPz2dn510jdpxS+j+dmvJrBP+fjx8MnrS\niZzGOxEcyyqnRUzHCp1Wb95c/zSRheRriLALy0JDHE/i6QByRxiOobZaELhx\nK21RSbmNw9W0xWZmVKu6PurSs4kSoEmvjKZZGABT0P33WbZT2Cfeit7+TL5i\nBJ7qeTrIwXbIJHC8L2oA08lt4ibvF2JyCqWr0FSfLlzTonhmtNqv5TqelIoy\n4HaQePOkFvaK4FARpoxonJ4h365Zv7NTvSgmxRAB5RQyx2i/vV5efhfbEmiv\nSjS4VDl8d3W7Ctx2cMohsXWK/lRuBPLr5AsCuL3Ij6HUD6nCgLYXR/tMmE5L\n//RzotiD7rh1RjSu5KydVlt1PlNEmk4AMR5Q9lZ5GWeVeqhnkW4sMq5MvUmc\nkctUlwNKpcpxa+gDrvDsWFi6FnKu287JO9iEQH3Dtl98MfYNwRiBTi7xRHL1\nmk7nUD7Rf4t9SjMifO2KpPmReHrw4vD8W0ScgRlPlQtrcDfnRv5wTlSiAXT2\nc0snjXSGAJGPDsXqopfKNx0h42jLpsO1n31A7I1yIKuR++mi2weYgCXCVwE3\nQrOc\r\n=84dx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDdfMj3toX7NwKMEBGM61zXQP0nFOONbkpYCZLbYhJ95AiEAhNLv1bpiu+U/DckKMZlGJtzDKafRBc+KrObGFEBOH7w="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.27245f3.0_1560447507957_0.17123908176559044"},"_hasShrinkwrap":false},"0.0.0-canary.3703af8.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.3703af8.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"0.0.0-canary.3703af8.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.3703af8.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.3703af8.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.3703af8.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.3703af8.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-HnUmIP5pTfQpSBPJe1HG6JAGur4Q+p/kGLeNsyuNgEERsxXzPwzMV5OZ414BtSH76v/9lIdqQ6k6dSaNFUiwbg==","shasum":"8b799fd2010614bf2811b7d51cdaf005fd18c89f","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.3703af8.0.tgz","fileCount":12,"unpackedSize":9753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdAw5JCRA9TVsSAnZWagAAwswQAI9CzyA6Jokq3oh8PsvM\nthyJ4kq6tB6NeySWSg+1fsYdUjXPYW5NM0bndiWSA2ZzBfUDEs7kzDWq8K3D\nQfSmnSnqYzYjFysEZE9/2iEg7u6131/Ep4oj+1IEaGLIXLI5kTf9UPiDozqU\nPtqDQIVMG7ObZ5rfHWC6Cno5PbgKA2blpszfZk5ArtrWkx13Hsfzk8D/pD5j\niu0w57U38dAn1GNPspiv8cHy/1LNzi4FKStS1oOEM5xq0N05Ez7lf97G2TPV\nwdvp4Ql8d7R5t0lWhqM2gCUR7jhYL9LwWMUH7xWCppQWB/OvQ0LWvmgdrdz0\nw8hIxOvHMrOg93P8RLkvpkJwUHLJS7mGYWMorAqKySBOKcLe8y4iNhJjXaFn\nzKAAhPQymA1tkXyLyjD41s3xEOuHT8Pbx4WPOs9jC1eV7R8Zhuni9t7+Ow6P\na7a2UHrMcv7HUBtIAmZtPZDknHp2O1dMPwEOb9yvqRtZAGgJlmXjSCjp1JSU\nDG3seHw/SyP0aQfZGnNUNgNt0c+Kn83+ZXcWYg5qOrgVdA8x2IwPeTmMEhTg\n98PgdtcbQmFrAezqEWbmb1HCrjK9a5qEOME6pNLp5EgDR+fUPo82aCvLx9HQ\nmStKjV0kkfaSPQGxI89HOXM/sGufnXRv7AaEqUEi3mbXlA2GKZkhCaxzGs+Q\nA4r1\r\n=7zqr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAzwdifYKzY/Z/oHuPvLrqtj1TuOcaYjKCmNzRZ2O6osAiEA5cu6Dw4GSDraFH3V8X3cFPampSwe5oKHdbO9hFPT8C0="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.3703af8.0_1560481353415_0.4386887963364323"},"_hasShrinkwrap":false},"0.0.0-canary.3703af8.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.3703af8.1","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"0.0.0-canary.3703af8.1","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.3703af8.1","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.3703af8.1"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.3703af8.1.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.3703af8.1","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-8Fi6bn1Wg47EAQga/VsdeZwAg4uJ7NvyaFRya/G0muSE+RocOHz/JMK0gK2PSWinQopSE3AVylgpD2BfRZwJ5g==","shasum":"39c5aff68b8fa1c694bab42217d5c27d4bb0393a","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.3703af8.1.tgz","fileCount":12,"unpackedSize":9753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdA7nVCRA9TVsSAnZWagAA3EYP/1pl3JwfbHSUgFaOhkt7\nkPryGaewVKEVpzRbZySAIm4nd9l6UKtQMmoFP5iQUEkxw7sbW+N656z0ZmfN\nYnpJgMOUOV2DuPLZeC25Vdf7IdMzWuy0WCPwymio9KeHOVXNnBb412/4MUT3\n+nM3uxQlu0bT03aDzT8xvulvfYeltHxOWuC5G2symMyWKFtqyK9EdfCBBUS0\n0GwFI31NmIvFjTzvOch+cRIkU1WRvCSd7i8pDH88a/UprP3NK7qdaM09AJAn\nNvSEnCLElDNF8Vldowc/FwwJ9Y5oEPWBZ9hN/o/ZZKLkvGa7wShPn8pKZMzu\nNFs8gOQlfUtVjtjGmoVDQRfEm5a6OVtg3g05MxhbGdzfzfl8g44Yb7ydvoVw\nL/6BUhqzOYu7PygRhSN6raCRKMwy6Uve0dkp44xAt0PiZLtJwXHCK6temfa4\nP8zpBxM4WT3zmkDilcu+/o19hHCI0AsDj/TAyoqzpaB4kfrAJg6rhtipfByM\npZhWvgfVoaiEnrO04B5bjMkJWuEZgguFHlNXA5gs8IpqwH6Cs8LJvmP5lrZN\nKIGTvlAHrt63xnT0/6NLa8oNLXgvZofEvra5ZPtpljZaTCtvFQ6E0Qn/r9In\nttRijl7TBhKl3PpjoWl6U7mlb+dZi8La7MC3yNNBfKn0x4PAdAPZdiWO6S0d\n6hdX\r\n=L+7O\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCkEmVtk+FTC6eNUq+yV2FCUWG4OJLU8PaXkySvdsvJGwIhALsl0X/OZPyZpVNXDhUdsDXcVJNJnsK0mOAaJgogFiHl"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.3703af8.1_1560525268716_0.9818335824263029"},"_hasShrinkwrap":false},"0.0.0-canary.d93b398.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.d93b398.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"0.0.0-canary.d93b398.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.d93b398.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.d93b398.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.d93b398.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.d93b398.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-9rBHpwrjii9cb/HyNyjXqcBCr8dqVf3TWB2pi8yDjpKpHiPSI6XSzHHNWuVDxLVNTVl4dhgO0Gg8MsgUBffFTQ==","shasum":"23ef35a7c04348e77b901cd3978adbfae47eb393","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.d93b398.0.tgz","fileCount":12,"unpackedSize":9753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdA8ycCRA9TVsSAnZWagAAaBMP/iDS5win0K8CGjsyTC3M\nnTotd1iTc5/gc/5/d+uucR2DrGmLxxvApYiOmkj8NCiTdcMyidLBPB73SKyG\nMy73rbZGcnnO45yyqrteELhAC4mbhx0wmK5D8oGURCw+IJq9Y62uWtYp5LYA\nx8sfVxCech3DD3DyCOAl94wWXY+wAiHIdZJzG1o2xevO9GGbOkjxrnWEXk5m\n8oMHc9Tz8gkJa5GnDCqQF+8YRXWao1CHrHw3I7oClO+Eax+SaNp0nKBPitxQ\nWbarABg1rokztm/WIGfJnOyeln3TdKtprpiMNuUmf4pK8BJmxLub6k3naGwh\n7nVbXkNVE9mTa8ofprcEbUgyN9COekyLSq0JSRC2WHV0pZkb63Z2kcVqeQ8Z\nZ8kKLQ3WjiGNWvEjIJ66hxgWZEV1dhNXeZ3wPhqA5NyOoazSnqdkPEw4hFo4\nIqx/IM3CfG8QT6km6EBBW9YvNVEcBcPDF7i9U7qtCCBAk5s3870Sn//+QvuX\nexlAI5lot6llGWs7BOvCI+rZHT7hrpDP+F0XIzVhRfD+DU9qNLf+RINZN0YZ\nf5YjA1OAaa1c+1tYb6pW7pi3i2dQZEuqWeamz+5Qi0vV8VnMaE5nEul+lrPQ\nIdk1rXx7SEZEgHPdr9DJ5UG7qrHtq4SemaXz5klvpm+QhPH8gdk7nwjHpySy\nqPwe\r\n=2wi1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE19mZAgMcxoQutvq54uQKYRWb0/jdudQ4A1UwtQmz9YAiEA7GC16kTYZTauN98kHH7qHO4qzWIk77hB9T2fAbWNkoI="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.d93b398.0_1560530075899_0.15559012349683377"},"_hasShrinkwrap":false},"0.0.0-canary.d0b5703.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.d0b5703.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"0.0.0-canary.d0b5703.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.d0b5703.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.d0b5703.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.d0b5703.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.d0b5703.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-Tis4PBkIyRFvGshNJadhhTMUtNi+Pk6xMnMPWeeEgXZVWHKnOZf5mLQlRYQaJXN9c7I+O700H1Gd4rGPiKA4Dg==","shasum":"bd009e9e3f03206063ec61d3c372193efa9b91c5","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.d0b5703.0.tgz","fileCount":12,"unpackedSize":9753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdBBWiCRA9TVsSAnZWagAAeu0P/j6HlK28OTVnC4H0C7M8\nR/amZl98eeoYS20US561S0ONGk6m415ulcPb2oaNNEx7IJEvTKPcQhmHF/CD\nwvdwi2eDay27Ht/p0ZTmyNs8zLLdk6CTt2WbugWR8bP553xQB/xE5lX2Exf1\n9c5t5iaK/RkYgL7xOPmIzZ/F3B9kKd7cAXFc9sIoJThV2BMO36cdHmn+ge0t\nEY/wg2InCi5ZVcpzlm7FMcnpLcrISh6QkzP/se2BF1rdHUPDbQWEdlhZ7CBu\n9JkjNVNj+1J2FJhMRrh7wpdUFwlpRWttJ7XCWktqZODfNp08BAv0PFD1ULRq\nT1GsPNWboVUT2Je2jsxFVz1TeupdraOjPrER7XSBsspJzcD4dfCX8yYgWIMP\nRt9F3YJf0KfrHKHr0cN6ooJ8Rby+Qsq6OKzxAl5yxXjtWa3lc2j1iHN/TcSs\nvAjFuzhtKMWbCA4uhTxsS8zjAsXHipSTiLRcjsZAq5SYpaEemQeIEQmubhTw\nVsrgHcvxHMj5X5CGu1NccHjGTiADKA1jqfCd6eqlUQHG7t7mo6mP5U+e/rbu\nK6LB2C0CYKw+sS5bCJALIYvq88fOjK+5WY6uPNnvtUdV1kQo5vZk35IyN/NP\nXiy7pow5v6gd/RQHsnzVu2zutwnDuVAk57nMrp1Skfw7CgxDcYPvaspKmCvJ\nTCqP\r\n=LI2l\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD+zCEJRuig9CVX4qqTTGQv51hzhxI7iLiGTp4zKd8cOgIhALK/wxuQ2+q4OGoXCnjw/S71a3LfmTVNE0VnhNgsnQOU"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.d0b5703.0_1560548769422_0.5567798991450295"},"_hasShrinkwrap":false},"0.0.0-canary.801e47f.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.801e47f.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"0.0.0-canary.801e47f.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.801e47f.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.801e47f.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.801e47f.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.801e47f.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-1PTQwhNsOlMX3GBobKXK8PUj0A4g5yDabEpn7ksRw2+FmiUS2v3FNLRXEwlxQ3fWgI70qMkdlU0f75w4LcKFRw==","shasum":"913ca6eac3f58c08774b8eb0ed7a6b12ba279645","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.801e47f.0.tgz","fileCount":12,"unpackedSize":9753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdB760CRA9TVsSAnZWagAAn/oP/RkSRN24mdWOnP47bBeU\n8+qngLy8V6zu9GexmwIBi/UG0JU9/XGdTnV+zbBe75GBS1M0Fr65mZghEJW/\nf6+Wnbh3iwsFVScASwGbV9flkcL2znxTa+uB2JVnd0T3WXj0+1LSrKBzYK4W\nM0wOkepYGBxaTjnQbtavkgcK1qy9RiSzCsVRC82oNLdNJPlaI9yCFwjUcm5e\nd9SlLzFg3RRlhpkZK9z96ckdDYBt7YnQc0Jh+5LivrIskONHtM6EEfwe7DFH\nJcXPDk6XRMFIYZZjbrPlten6TrzhpFKUoNcsERRiPYr+kb8p8Ul7eT5KDkbr\nZeh95MZbe6nN304ezwHt5hXnl8F2e5S88JYLCTMXIXRBc+3kUoQs3ECpU265\nzFz+ykQgQui8iC4dgDq7RmS9/0/ZiFoGF0H3am0OGkIgaWW/oq//sMYbr6OO\n+l1rTlyI0DUZaSPhbh2njeapVi1QZWj9eeeYAgfHSFdhamvITqEwAgUCP9lu\nh/xEzpPh13fFQ1LQJZQwrslgbhT+j+L4BWmnLoegaR/iXlhqsTfefsbTUC7q\nO+SZJ0udqr0/TYvHbEXwhw4wrZLRp8IWEbLEeTY0hL57VadMFSBqL9b3hhx3\nNs9R7pLubtTLjmJKks9WiVpj9Zqq0F6es/5FJg9TWJwcX2RmeAigOI8XtoCA\ny8/s\r\n=p2jZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHmbAED39p4Qqy3Bcjpw3T/kfeWcs491r3DnfIBFjplFAiBfr38VoG7FhMWPFyK1DCepjoFPhXgLngw8b0JS11C84w=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.801e47f.0_1560788659963_0.8534587543468295"},"_hasShrinkwrap":false},"0.0.0-canary.63145f9.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.63145f9.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"0.0.0-canary.63145f9.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.63145f9.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.63145f9.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.63145f9.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.63145f9.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-hfZ4HbDZhj+IPZLrRoDWbo+7i3o+9rOxjHv8Co+tv7okJkXj9xicN9wuXhokaOeeEZFJq7NNmoSHjlKAC5WxpA==","shasum":"4e1a41c1d7d687536a357d6e81e6ed8a50f56f73","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.63145f9.0.tgz","fileCount":12,"unpackedSize":9753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCC0eCRA9TVsSAnZWagAA8aoP/00f9ih/+KR0KdPcVF9C\nQkSYMXe/Epm8nSTOSE9ejODnA3fe4dyUOfp4r4wFatCSugbNXFCpXnTgFY9v\nVCw+jIJCdF2CdFuOEXAq1jbzo9msA6G+/Et1WbAYn/m6bu1Yy0PFPQ/EtLzj\n/PnfAQi3s0W+om3q3OSCYBgbbVVyeBhBLRGwrSPgwsnH1QYH4YYFWi9/zGHl\nH7jykM9sadiKXnJw+wRuIAXVVP0JkJMS6e6lOffVfnJW3a70+E41o6L3SG19\nUyOk4XT1+GSBO9vra0Y+yKEbM4EtR+F4l2/G6E2ctmPlNQhIiXrfIa/B+utl\nvyH2UXK8IjnRMMFIzqrwJc5UHlCQxgiB0B5J3s2c4jdLwjhp99BmJ4kthe+x\nGJEkf0Gw9PzkjEUkqsm1gyUO9S0JLfgOdB10QLUcrnZ4H+3ZYAUlZbkRB941\ngbOdB7v8KO631HOdhNyB8vl6Tt/Vgxe5isgKcDG6rvsUaUEOQAax+VuDpv73\nxjCrZKUroTh+atbO4Ude0u0W8AU22JVl2Bh16zjXQv/DtPfGhLD/I3GHe6BK\nWz8NSQZmNHL9J1Km0x4hLsc0LtePt9DZuW4VzHFUyJxs8UT66zBtJLEGRqXm\n9c/hXMOmLUj8OMgbEHrz3+sfxOLBRNKRllHGhp7CTIgD5qyFsv4cCth2K4EG\n7E3Q\r\n=94GA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDPRqXhPJqFmdFegIf1u6ksnT7jM46gdD/c4lK50mCGqgIhAKUGYniOp2w2Gp007tTqZEPfnWMBQyz0YO2C488l3WeB"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.63145f9.0_1560816925817_0.21188014467329097"},"_hasShrinkwrap":false},"2.0.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"2.0.1","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"6.0.1","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"2.0.1","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"2.0.1"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-2.0.1.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@2.0.1","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-8VwCcRdx/mOwuOEFDrUC4Sj2pPQJpIFpQdF7dO6Sm5P09dXKGJicm7j1u3QXKNz3GtHVvoaEIFKEWjaP1+68rw==","shasum":"842bf391b6444e61a2dcdf1535cd121d92599a31","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-2.0.1.tgz","fileCount":12,"unpackedSize":9685,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCDHLCRA9TVsSAnZWagAAa/MP/jYb+GNUhZyuqhptprjF\nUUwzS+i3E0YhmBYcZVk/3Gv46CGdR38a/rlYiFId8Mpp8BEx0jEOAsziBzl1\npQoeXtdqlnAC86FHkBCr9KdBsBZNZTxhGYqcS8QlTkmKpx2IZSkdzi1pWAjW\nBLm/n1EQa0PDmvuM8AixnRE8UOX6StyYWYwDYdV127w5EfXfsBSVmwdFIod8\nJ1dFSTH4S2vWXw52Dhyn1vQ+8hdHlBLqe3AtfVg1PEMsTnQnzgUo4JQqyClk\nOCO7OQ6cikncQEQDC+PMxvwKrx0Mir35L/hOKhgRKydZ+XKltrHbqY4iHlQ4\n6Y3tilhp/jYk3QtU0XBR9YdjA1j9BJEPkLRxet9gP2wG752WyPZyF+K+wQK/\n3UZNJWbj8xi5bEFvRAuFfHuraoxrDXObc9uKNWC2H8YZHlrpUv2tEbKTkAih\nm4tOQqvqSQSswaf03SJK9U2kPQuwyGh/GbHurT9Ct+Ji/ApzSJyO5onR9T0P\nX1dTWeh4Hk1HMChlNweOekWujbrs1yZdtmU3GQCDV5+L24AL3blC2pacyJYw\nVK5vwJA1vYrakVczx1qodd1MjGrRjjpfvg2cIVwb1O0ZmI64G6zXF+6dJIKl\n7TmqRfAuL/w7/hbucrtUksFumBmwI+0hGmgw3jjPI5dWfo5HzVcqO67IjIcl\ndNPH\r\n=rg0R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDyWXBYaxf0qT1jXf7XOZ+bDh1O4Kaf/+gsFga0kZkgTQIhANhijM1rybC6Nbdi11qCE3Or/ch7kcE5esDQbmJqn/7r"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_2.0.1_1560818123173_0.4736865799318155"},"_hasShrinkwrap":false},"0.0.0-canary.407b8e4.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.407b8e4.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"6.0.1","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.407b8e4.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.407b8e4.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.407b8e4.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.407b8e4.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-LEGnUwS6RAeLWbM7qHys+1o93xkFCedUVy7pBUXOSZmSNO8I3NplreS8KuMluHe6Up4NhAG5JGZOcT/uDolqhw==","shasum":"f49fd44b5f73368faeb02fe4fa410892399afe8e","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.407b8e4.0.tgz","fileCount":12,"unpackedSize":9736,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdE9VVCRA9TVsSAnZWagAAZesP/2ML7e/BimkuGXnLuadY\na0TE4tbjXiLzr3xQlSUp1fkYLjNdbBfXR/4c9uuSotdVbAmkJoHNc5A5Em/5\nXGIP9betqzsq77pWCA+iBqoVUYWaNX7SyLaDOLc6i8cddSH/z2NNi3QwMaM0\nWYw0r0F38QTEGuD+HPGgtbVZpxtARZKDSRN9k5wjkdRXu7zyGUITW2kPds/M\ntVm824GaQ67xPRWELAUnWOB9vYnHVQJzCu2wF2mvA2MgcFXDBwhHsZEP2Kwf\nY6UoO6NlSqOexrJDDoL1gw0nftLLWNxmJgo2Pbdp38KpaAMd6O6jYBgERrbT\nV8VrHIB9rV17raPThvK37g5s9MiwdgC0gTv9QJTLuZQ2G/4ipXG/Gr89RR1S\nCykHScUFHtMS5PI05ui57YjyQtbP24YRi+3987MyZ2G4uteeJrFwEGe3kkET\nO4+LtpeiPfknfgu9XeakHMuIQGzX5vabVUAoGZdw66aYRrAFhP//D2ZcRqyq\nzLHHRYZ5uLBknkZlGzpheZE4FtedaXwvCJKPvG1M7lW2rgJWvMV0qF9JFRPO\nnEhPBEnnNnGWszdIjkRTItZa0EUlumZ2fkbZFBsjdtv5xKzPtzT9wQvDnRFH\nkxcFjpDlWn5vcsVQDkz/poL4q2lz2sCOwKhXw604vLwHt0gSRhRMLKyQfvyQ\nehdY\r\n=1T+J\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAdaVo8u/bCFAy2q3/oAxx0+YumCQ5J4qzzk3N4IzpQyAiEA4ckhlBHLN22lcNpEoioOdcoymfMLY4Q2wMeuQFbfDSM="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.407b8e4.0_1561580885163_0.13031273520191045"},"_hasShrinkwrap":false},"0.0.0-canary.ed79452.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.ed79452.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"6.0.1","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.ed79452.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.ed79452.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.ed79452.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.ed79452.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-cVat1x9+jt6NnhfWaDYaOAshD++CIqbITPMfwWMwKrpZyNrA7qyjkRVcM9zFeM3AKpBT/EQba6Ct24Bj/uT8GA==","shasum":"056d4b77c51e6734699af8059774cef5dfa82216","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.ed79452.0.tgz","fileCount":12,"unpackedSize":9736,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdFRBcCRA9TVsSAnZWagAAe3cQAJFjksDNU6HeAycVLxz1\nHSYeKCA4IorfgeC8b7oLssOMl5cl+DxKR4IcbpyMjxka8shWk9jde6xR5Hvm\nTVRvrKxGMdEvgaewBWvdAW6TF8vcuCnqlmbHaNcZpNM1wpHM6jtZz2Xg863e\nW/7BzW/rgFF1C5dFcDJbPdhJKqb9ylHX1gVDgYpoCPrY2TYxY2PXi619FNro\nDtrAH9tAGeu96R3lX+0MrXWwm92QCqTajH3ZTRotWyYyFSryaJCZA0WlDzPg\nRRmCiKc0HHx/5MG/oZ1l0xl3UvELscN4sdnt/caRVyckazLNsa+vLbJgpHhU\ns3Am+rhOXd5p1uZAt/pi4V6+cX7IlO1Rgo63PjMvPiBIh7PT/MnV16lDLOJi\njI3oQzdV6xwTL48jTLtIAXQZ2DSGiNIgn0myTqian9zv6r+3yt1Rnz0fQguQ\nHjDnntzrtG0dtcwjHAx0+pcQ4i06GpgREhrIrZSsgs2VG3qWcGQd9W+sWoub\nHxdkNqWiprIDVMtv0uVIma0OY/WrneCJNg08yvkmScb+KdIVxN11YtOXExye\nKlHTYua4Zw17WbVoTfO9oMgMU46Nsg7stJpE2Z/tTQBAj4TDiBJO6C+ZoKBt\nxxfSJ8grqb1ZCXPzaAeADlca+L01PHxAnw1QtvHszzRC6UAAwJ87OGByCRiH\nZCqt\r\n=FTV6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCO/PiTh/n9ijTW0s0ilERmZCHfrGZh0PKvk+OTqs523wIgHwonTAAIh0hrFpi2CAqFPp9SQyntncTyL9mk9fz1Pq4="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.ed79452.0_1561661531781_0.2038847402886459"},"_hasShrinkwrap":false},"0.0.0-canary.3e2cc31.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.3e2cc31.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"6.0.1","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.3e2cc31.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.3e2cc31.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.3e2cc31.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.3e2cc31.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-xaMoB7yphUihLDOXn5TvQcbA2yaV42jy2WuW/+CJ/0osekzof03WPm8JQDvpXQHh0KYBCwcK9QzBIZKAvShy4A==","shasum":"1870c16a69ba567674eb5a070ede42539843e0ac","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.3e2cc31.0.tgz","fileCount":12,"unpackedSize":9736,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdFlJ5CRA9TVsSAnZWagAAY6MP/Rj0NNkbXnYlwrt8+1Nw\n5hkLJuKdgt4Rwog6HEtG3pMgv6IGMV11m99zZVWOBU/xwNRxVtKjdvRTiKLl\nPR168D9Fzl/43Nt35yfUUYQMuI+JT4RNVd2WNYXN90yuhhPZe8ov/ypQQsCL\nxhh8R9YfdGZb/nrhTS1IOQI4Gy2xtiKHNdrHEpdWM8IQIywYkutehJD8zrN9\nKl0BoOJRpnE5WY6eS0tY2dQsViixzNvfydIGFGopKPG5Z/5OacBQ2gul4Wzs\n1PnqRdBI/TQB1HkKlfjqX/92q7DUrBMFwFib3skm60WdLM1RE29g8IJyX4sA\njev8uiScB+sv15rHXODoO+64086iUMm7lS8tTNgdi5gzPkwS4b0XyI6JkUAA\nCVwK7IRYBTVsr9C4+MZloNGBekXdMp++npOl6xKojXCYeR13yuufQqDyRnGp\nRll7/1AhHjwBesxHV8ehRKb3q4CZ11jJLYDu1/yzmv8ARGxscNso/XgB4+2/\ncnUDCXgwb9b+hsdSRGEy6G0iLVeylJMMSj5zHDaRDRyjIL/2TNIrpVRocLzs\nvkx5zmRI9h2S5HQROtD7/pebvGDmL2VmGVgLdo7m2wG9Iw3RQnvY2P+IfnIf\n0P3gl1ISvHBSARkI1Jm+oLWMG1lJxPissbRUaNHmtlAYio/u15V2VpWnJTyF\nWkz5\r\n=pa+l\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDMNgcTtT+0iPibJLS/gxlD19Ql1t+tENaYG1aMG5RpjAiEAqE2wXRCb648U69H5lXdW2443YNbUaGcqYSgVeYRZepk="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.3e2cc31.0_1561743992291_0.7004301433910698"},"_hasShrinkwrap":false},"0.0.0-canary.5c3b351.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.5c3b351.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"6.0.1","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.5c3b351.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.5c3b351.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.5c3b351.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.5c3b351.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-Qfel6IbIvp9SAs4h/8UPD+4lCQMKwN0Qi59E//xLGINIV5o0W+Qs96Gg1ZMFMfjYf/Mo/QwDQKOFd7Lc3kxa4Q==","shasum":"b248155b44e4e37ca43f34aaa359d8c399545b2d","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.5c3b351.0.tgz","fileCount":12,"unpackedSize":9736,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdGnz5CRA9TVsSAnZWagAA5n0P+wZBuQ98d0NJ83Rr0PTm\nY0SR2w5wbeTcB1UnBAqvJb3SJUYcPh8mLLB6VQ9BHLJ28xUiALZ4E3+IQB4s\nHaljCxTy0viHubiFtkFp+PQZkwHs/Dvlw//7UpBrgMZ5yuwx9x2GPdZncDio\nhv3A7TJHF0p0y97rNespwoNpBijH9V8MPBmYJNShB1iYW8eM6aubI208TSTW\nADKs5RTFHhwvyXZSdKIeN0Oo7X47K4gy7GfYS9B7ectqsP3Tkat0k83yGI4y\n9PKKTja1RAizouuWS6ofcWNB5VWXJGaAucJUKiuG621mY2Mc4xFAMpYaWjCv\nRwk1kXHdKcGKGWzqcMTeDRYl3wx7IoZMx/Qq35XUzdcHcJV7vpntn37hSE3N\ntUMnPDZuC/rpvZw5z7bqoWk0Db+A42eZIkBzazTI7GjHnY1YXXdYd1urn0XO\nLMKn1+6EKrHFOFme5UHW68bBMkASLfSEYFnUe66KTiXMgRecmoDGCQoMe5DQ\nkV5uwFavYk3Dc3T1i1GOfcakIzIuwBIFGSijSDrxzv4fUlgSOy/JS6OJwaD8\n5GANFDW86Fpa+P0LOZ9R06vK5yLwq8WzJ/Aluyq+ngaMp2BLheu2ia1bY+Yw\nyQG0PTQ2t+rnTMq+pJW6c+AQ6Bd8OwNa/2eK22xT4cKolkQEJR2plE1ddnxb\nARGv\r\n=DvF7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB7hzV8LjBNU+ny7wLZlv6f8iNRO55IqHV7IKviEn/dZAiAkYRoLg0fzedkG3jiXKdeilGrd1UyK5WxvaCKvFUdXRQ=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.5c3b351.0_1562017016732_0.39991455801965525"},"_hasShrinkwrap":false},"0.0.0-canary.16ee004.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.16ee004.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"6.0.1","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.16ee004.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.16ee004.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.16ee004.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.16ee004.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-9EuzfMhuKe7eoNiZcvA9dE+qzOiQyjpAsLO0DSuPFAKc2eduqUbq9Hp+2tdkbeEbGk2mnYp5Aqy5h2YGSsDTug==","shasum":"22a061d3366257828829ded283e2641bbd23031f","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.16ee004.0.tgz","fileCount":12,"unpackedSize":9736,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdGpO6CRA9TVsSAnZWagAANS0P/2fO43EX/BJlUGiMohut\nsZXY+gQQifKpNPjKPBFFuRdp5Jg+OdEoUigg6vJKcDt+yE8RBO8uWGXtuGfF\nw5h8dxtN4xQ5sxMkPhxrN5ECTM2DIvB2uP7CrdpqF8vVunHsbeTIAMwHZbJv\n5A6BMo51kT6ubLviIm/VHbOzCff4FVqTiD7Q6H/qMmMUMHp1N6FtoPqGzbvY\nH//zwLxMQIumCXCOTWfIkTAE8TQ52/hlkMiQZqiu6TBlj+hVB1D54NHrxueu\n3XB4Ah083EhQzSB5UVGD3rsx65VppDrA1wauqz7Hp8rC+DbemUFwHHafDQ20\nPXRV56dl8cFWSsU3TlE0+igI3+mAqYZOg07eUcPg8lobNhr3i6cTPOE8Duwf\nPXecUUJJ8/qOSdrk44oobbkRE5FiNGBR8FiTbr+KkunAT7IV34d0CKFJMbOz\nMAA4F1pndb8rEZ/K+9I1Q3V+Sb2C1tmUi+4e98TXzxpPS9rmtLk2DGjwjUqf\nsRnJQFOqv1SLcAZqEPDMImqI/y3Hjd8T4H57GOHz0fNaRg5Ol6q61JWLCKUt\nzWeRSn3CdOLGrSQujtKMw+IirNExuKRsaQyXlrJ/U9bVWsuwb9ovWrYYDoKt\nUbSE5533UWlMCJ3OLHcFyKp4yZAmudIErqobJiU2natH7wZ9mRv1H9SWTxux\nFhIl\r\n=COsI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCH88niwvTHp00gMhxaz1AYGO9hyeVAnJ4kFfpVekYfnQIhAOWc3DW6zLzeUU0/TRCZJY0AO8ir5dL4Sig9W02NrYXN"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.16ee004.0_1562022841907_0.20275176249025417"},"_hasShrinkwrap":false},"0.0.0-canary.69d2497.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.69d2497.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"6.0.1","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.69d2497.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.69d2497.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.69d2497.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.69d2497.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-gUty/wrKLXdO/RIKXfL2rRg+1LZtXyv7AMGUV97d0sGr7zegat+MHCzMjyRgIilZSRURXjyh0OYUAcZ+zpt2CA==","shasum":"6648facfed8ca0a80a79f0b1d53dc1bd01f20fd0","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.69d2497.0.tgz","fileCount":12,"unpackedSize":9736,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdHO+TCRA9TVsSAnZWagAA3yAP/AxlWRv50LYivuhpmaNv\n7EP9OetZvcrASmvBTGVc5yC0Upde15cQZW4a3PBaSb1UCJ7/i+fNC7y7VYdi\na+puhluiRe2oOVe641sp6pIu7JRqbg5z66aIxyqyspySA+XFpC+DI6CvaUMx\nhuTiqNXzax9zR+zqDPFIDHGjFUffLgfLtVMXUdcE4ag0zu//74G9mF3fWO5U\nuE91RpgFtTPC9DgzHukiyfq51unDl3DFY2OIuFDa3LDrgC12y07XFgE5DaJP\n5Ldpovadx02Vgowz4yjKMio9nRtJPJhHwhvbXGSH05KJzzFVPuyd57Xpw4dY\ncgTs/cRPzIaDQdUqqBxVWmCiKMnvfZdNf63SdP7tVYomOXPct0rMxBuST1p5\n+NeEuo8ML/418pIl5P6yGp1JNsQxKFMR4TfqtzAtPEnCosXs3Iljx2F07GBv\naYC5SgTI3Y3iqcUSNRMX8wG0HyiHoRAeWWgZF5tYjDvMEpEe6DAuKzHkyEvf\nPkODmC+z1U8pk0I2Z1CRg4D9/hvAyKejJ+rxz1b8UO77nGPxMcak0LMA30mN\ng/xBydF6LJ9j+AxJRIYnvprXVDOD7kWqI7tj/wnIrjoiyH30GRbs+q3UOdf3\nOO7lUBg2syq10SIghO8RB9MB0ohEd7ztTDWh+oo0w7lsfS6vpJ9xVi7d9Izn\nAhBO\r\n=iPXw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDrqWvVCnD7LTCKZUqt0Fl+iNufzbdfvmSOpy4PUPvYggIgBPTSURPP851q9VM7Ps4FblQIDb+eWdgCNgb+R5KQUik="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.69d2497.0_1562177426467_0.27906756475791195"},"_hasShrinkwrap":false},"0.0.0-canary.69d2497.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.69d2497.1","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"6.0.1","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.69d2497.1","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.69d2497.1"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.69d2497.1.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.69d2497.1","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-u7qVOMwAFwq0l4Fu1kURVws6FBRxqxw1zv1NwEZ/bfbyCVCWxgA3Au0hTzMTYoteIoQOytcMC4Bbx3j7/epLlg==","shasum":"00cb6aa80e1dded5f6c2221a10cc0356539d9ced","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.69d2497.1.tgz","fileCount":12,"unpackedSize":9736,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdHPCQCRA9TVsSAnZWagAAkL8P/Aud/5Y5m/QqtFUif+Xl\nJWD/OLehreupF5gH9DXCBTCr3+udhYXpbBP+HMyg7GQAyx8Stpt0eb4wlU3/\nUdSf47u3YkWa4JtRlMPb3iXOxT2BZJdYDCKVIYk8qEOHVgtk7wRNOfD/RL+8\nVWZ7QPT2lNaT1PO4AXAxf/dJmX2gYU57LDRgeCb9m0XZhLUo8P0GRD8Lo2Sc\nqUirEYNSh5dGoKegcUJimK0fTKOk529LysR9hQQNvJVLThC/Xei2LSvTWTxy\noo1m9UbS7ivQu10UrCl+PludORHVzMDu0IgBn8oCtVp12KN6B6tVZMqs2cNy\nmp5kfUrWjXfNEmIIr/3/SZOS2bTbiIixDVXvzeRrZhWXLxOy4yQaHYC+/yEd\nj2MmoetnDwPNSi4f+lkM6i0mAqYzCAC+G+wX3tYsUfKwPn7rJqMXxG1T97jZ\n0Vb0iLeVu8CmHVyTfqrmb8TZqKVvfBu2RYimnSLE0q7AF+Unief0h+uy+yYU\nobDx7QoOG6FXorDfUq0CRHVcaqA5GfeTVbCg2u9CtaZl3UVsm79cfTJcbD3W\nXJ1ATrYnqrzkFEY2gLS/3rdtcRr0QEjSWszxd4UKj6Vjykjq/5TNeIgwfO7v\nNI3rUv1zXXUANyFEWcPNb19a/FTYtNjHOvxi03VbFCe7Vwgh5TuJU6xyC+BX\nKP3i\r\n=oTPf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCuJCDGn8Yj+4aXvJ8HQFwmF9kPO9wXj3JRxxmHO3LwDgIhAMWGiX7HHr0yYyued0Qbqp2fXlbBJ/TEHW+4YgnvZJ+j"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.69d2497.1_1562177679868_0.8518930656082209"},"_hasShrinkwrap":false},"2.0.2":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"2.0.2","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"6.0.1","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"2.0.2","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"2.0.2"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-2.0.2.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@2.0.2","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-w2t56UOleTH41FO33cv6VqeMyOuPRdMwlebdckgCmkmSEUoDnt++ZX8c3Bvm4+Br0l7MSLs3RFhzpmy4xqRvsA==","shasum":"0c910921ab7b7f877f32afd4cecbe8f0cf9ee3b6","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-2.0.2.tgz","fileCount":12,"unpackedSize":9685,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdHSlXCRA9TVsSAnZWagAAIPoP/24F9vau0sUTN8i0wP2J\nxlYToCzzvTRXCTx3TlRo4dmhuCEIviOhzTYrx/eArHrFv9++2EtJrWDiEuoe\nykU+tzmyih9O6K0Zkndw271Iktg2TZ6TlusbXDdbAFZztZSvFGMBb3Uq0DN8\n3/WP4PnLmSs3yLeTBTCpu8RKthRKuaGzPR+vwbdxkes0ePkigUkoik5MmAut\nBNBU4IyLAasK4lkCzxDFymY5wKGyeAMkFFAQx8/oC5E+99PyRqcBtjnr3RJu\nCR0MuFSqtPns4S6nFmgxq/FUJP6V8IQm1YSBvWwu2e8TIGxpYf4NxTs6PrpH\nnGN6AC5HZn/OmzuI1+bfiv1tXr+ORpYq3Qw68s0NhTCF+/NW0IbGBddkOiZ8\nzbNs4+fE1sC+JgEpMNgE59Bv6sU1axi3ynveiKcgt62FDCR/R5rVEgHFnstC\ndmRTs7HBGN6VDLr+O/Z0nAKWeH4bzMTM1Fv2lxXs9JBhmIVshx0IAIUNrRVE\nmBiGJDERTZBRlxs2w8iZkamWIzcQ3z9wORPyZUnM3sFiP31vrZn7hLr4gjKj\nnsW+MYlWVQgLY714xQBqo860wjhnK56lw7cR1Db5f0+ep4UGbOWFzZW+AzxK\nEIMBaOadHLGPVhkVWIsotIFdwM0EK5bBftMmBLWO2pZvIlZuEW11HHhnOdcv\nAHA6\r\n=dOse\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICe+MEk+MCMAB1Zj+QzWtnvXrUVYDxbMdgEbt2IA2ixTAiEAuoQI2DKjOfeagcErLPOdQZgDLIXretb/h4vkYHbcXNI="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_2.0.2_1562192215026_0.35934205208415015"},"_hasShrinkwrap":false},"0.0.0-canary.98adb08.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.98adb08.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"0.0.0-canary.98adb08.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.98adb08.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.98adb08.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.98adb08.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.98adb08.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-a7QeTAyUXoQuFz+26Ikvwo8aLyryT+5ipwqzGQixrYL1lOqhaQ15vjSgbZcDbgxhqrsp1W5pz1RjfjWxrlK30g==","shasum":"1d70179df8da09bb893a4301797cf7264f27d7e8","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.98adb08.0.tgz","fileCount":12,"unpackedSize":9753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdI71aCRA9TVsSAnZWagAAFjMP/2TRyxB4Oe2DFN2kjURn\nUBvVLbZiSEBPJkyEDG+kMr+MO+G8FuL6dgNrv2BSjDIvtd3WxAfY6MGOvjNh\nPSWhgpDAr9G7Cz2g1BIy93oPl8jQ3B46kr1NDM+KbGI9r+4IQ09rOOw4aQK6\nTdZYkkytK8TsREllvWyE/7e+qsBPlcGcz9+/0bfR52i1NaGjUUDfpogFeRQn\neDtGXBGlDK78U03ksN3+0EXlszwe4VyHgoQVHtjKqXBavNUP0tWq6eVa7jIg\nHyupysF2AESI2UAPP+lrCYeALZIDdZiLUFLrJeqlySSyMAVbGApQ54mIahUJ\nosm3aNmO1hovDJZymOmcJKDv+pC4M39CwtKTN9GQAq/y8HT+QB1+77/E2rNC\nElENBM1xcQ8Pb25ojmvc/DgUmCTvojfjDPPpmHczBZjdEDspqniUSoTSEaLO\nlfhSLrou017XoMgoFK448GtgMj5peQyfNHUgZxbkteugeTfpk9D6axAUdb2w\nEdaxSgnIZLxO0ujIdcU0w6bbvar30M1DirMuMeEtXROkcUH+chwgnBny6J2R\nh1v6yYqnxsPEpMkSxo4X4AjdvhZ1TfuuBYAvWP0P7gMNYuARIs15Yt22mDwZ\njn+IZwg7e/qhaGRnIkR8aTB/ty7Y/qEm3FoNJn4r5qQb+PC5AgFisZaGgVvV\nJGZX\r\n=aIa5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDRyTFrtTpU7MaH3l9qoFax4+LpWv3v4ACVFUJ2WpSZDwIgP/ckT2HoyPLikvLD7D2SU0I6+8Dfngdt22bwOUJG+Ak="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.98adb08.0_1562623321793_0.12394304038902781"},"_hasShrinkwrap":false},"0.0.0-canary.016f954.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.016f954.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"6.0.1","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.016f954.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.016f954.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.016f954.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.016f954.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-nTfd9jvIyjZ+U1cx/Ld5ldS9Ja0MGIccNGTIASiwRcqDFTgNWU8BiSo3mCefpk2KTfBJFYjM3kr+E/ZXkYwKyw==","shasum":"434a36fc8fa08ac06676b745fbf94722c0de6bc3","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.016f954.0.tgz","fileCount":12,"unpackedSize":9736,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdI+CDCRA9TVsSAnZWagAAbcEQAJVFxNbB46xrNl2Rvzy0\n4W85FYax0yi+G/CL0pLZkatrFExsytUk2O7mdTI/xr02lb3Ur07FYEPk9GKF\n/vd7vhARYIhRnX+8wmwb5Co/GfLX5FhDEkE9lxEC5AzlzmC3p8KUOHbhdgwu\nR8aTfn5UMRBOzIezp/AxWL7zmWuytagzseNDxoaKh2zxwK2MKmAtqyuoqEkJ\niy8kkZAsY8PPclwyQ615Go0/E3EcwvrX7nn2PheffoEjYgK5lhn7Poz1GMET\nK3ILD5XnU3IecfXOSruulYXz1n11t7MkqPvJ+1Zya0FxLLf6MdWDhqa20VyA\nt0Mf2JQP+nDeuEpkhbTcqVjCwB7mL58AWzumpMakKU+udnsxLX2WRGcqh8fQ\nh932nQiqEFnIckuJmwYkXWViwA3NPHRGiMAQZf10chpMJhhT1SjcEKc4X6Bz\nTVr9Vvd/2aSzyRlPhK75TpR2bXJaAUDNRo3a+/hzAAbBBZ+3ZpRNnpiyuYPX\nQb2cme5vj7IjtGZiIdWIcGG59VILhg+wSg9ycNNwfzAkosh1D2eyMpTXz799\naVv60U4uxG1JXOaECxJx+MDu8emKmOXkHxG9620kawy9ss/yBytAGHFM9SAX\n/ss58IpMmTSLQj0akkobLvsTxHcGCMWZmu4DO7GVNlSJMYMK+H6LFYsStMJT\nMjB3\r\n=UJnz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCNLYCYjawLt4TPmLJSGG6YP8QgRImDYYJuqPsghyJuogIhAM5lc5WWWrITvLvLVKGVUAfUEkr93vLzQe41AE8H/XJK"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.016f954.0_1562632322482_0.22931044070978435"},"_hasShrinkwrap":false},"0.0.0-canary.1ddabc1.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.1ddabc1.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"0.0.0-canary.1ddabc1.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.1ddabc1.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.1ddabc1.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.1ddabc1.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.1ddabc1.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-ymHvuLUn83qqrbfcTqKeUHNWnzqsRAB4t/OPxtGO5PVP00G/oIa8iZlQUYVbvnxKMspUe0vTkoHTv7oMI3A88Q==","shasum":"2facae6dc45286aeab21b763f9e227fb9913875e","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.1ddabc1.0.tgz","fileCount":12,"unpackedSize":9753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJNriCRA9TVsSAnZWagAAnM0P/iS2J1xr5lwJQFKpPlyF\nT4Vfju6jXBt7Fq9gUTNKKXBL3cY+/g/uXI9kqEmeZUkMLBm11hALp+QlyIBX\nNh+OXsRnPnGkabghnUYV6BLKO+hRkmQI2edAysnBE91B14itKBrPxf90SQtT\njRW8chRERLu0pUWHkdOLkVhWvmhJU6cPybCloFodi8Tu5P7AnspFzv4il/Dc\nApC6vuQyOdcabB2vmkRNzxE+mWO4tO0UPR6e2+e8Jm7YgwMSd617GWIfJT/O\nk8sqOuEIZWNdvVrWBPb1d0STQUodT/+Y4eczpgIq/dWNwE5CXqGuqhb+ofbf\nldjaPsK06HyAcqv7jcQW84pr9ApA8wsW8izO6/1pH/YdvPMvEPOEihVQrHQg\nb2kgQuXHuMNNfjujTcxil/HFlCtRcXfJ2RhGu8P+z7Hr+5p/1rcWmWrisqjO\ny9wVQFNeGZfwFaS6OXPAvup0/r/dIck1PnLNIuItuAfYFmLKJoix8pGN/x48\nJcXM0olxkEFzf4Gdl1g/lfnLzYnitO2xJou3q+x2oqo6AfKxsDOUrPnSDL9+\nQjYQSGhz3kIEX0rYuGFFpNhozm/j0oAwFNdsvkYvyzi8hK+yHonGTN4u+BbG\nlMqGQ/PddRehIQhOy4A0Q4rL4RxUAwmcsK8lp0pleDAD5RNIJvPBzhy7Jfgj\nBNIe\r\n=ZQNG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD3aezqb5LebCBGAObveAPQpPJc5DHc2OHTdPVaJUqy9gIgVno6EEHf0j+j+fJwLgQz/G2bz4gD0jhBHu43QSafmEI="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.1ddabc1.0_1562696418248_0.000722115709893778"},"_hasShrinkwrap":false},"0.0.0-canary.1ddabc1.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.1ddabc1.1","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"0.0.0-canary.1ddabc1.1","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.1ddabc1.1","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.1ddabc1.1"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.1ddabc1.1.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.1ddabc1.1","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-zfG//0jXAkke/7hbFMKx0RF7pX47jr0dUxVUEeZoXuaHznLmhdO4Y6DPG7IAHKmriTOf6qC3dny2w92iMOdLDA==","shasum":"98d13571818fcaa003ee5f3e8ed4def8ecca4344","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.1ddabc1.1.tgz","fileCount":12,"unpackedSize":9753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJNtxCRA9TVsSAnZWagAA+UIP/04eGIejcq97mniSlmBR\n5yScPTxBOc034fbV9ZiXwdi5Ys5n+mgNsaIy32d39p5gDSLDpadcpL97EAVi\nzWQbiTvI7qYgrCQ7cCKEIntflFYy1tHkq17uQpqLXt/bsOmzRDtdQvv7+0oB\nx61D6oHnWC595mEMfUdxi/MgloIr77MmFgG1MIPVJBtMoKDePdYDONh5EN4F\npsrBql1+l5xYjqaKY28bjhCgcD+AexhTYmMLL3Est5ZA1zcFZT1IHoATfedU\nE8raH+wy242jwspB6kcnMIuX1uMqgE7HfMoFps5vjAK+qtOi4ioqFOVaam1U\nt2KTvmA/1lbOmh/Jo0avuiB1W7jW24UMtgK3SGMuaCEkjsmH6MZXQByI6a3L\nFBrBgS0liSITGPA1+Em1g6gOQ9N1xUuMCMcIZilZQDwvK3JsQjGg5ySC+vYe\n1CMeNmZNoe5CMrryfH7M3Y5G31Qyqbp/wpOVEZT/E9IFhzN0nzLsrGZlFbZV\numc10zyIqo6LyomZmPmv81X0haeR6TXDa5511phvnlXlkFc6zUS+pX0bcle+\nP8/JZKlVXFhGjz74stI4UMGl1zOR9hy7xsJ3xugOMds5Urge278zwKCJ/Ucm\nLsFdsbEhXcHt3ZWm/IkB7MUEtL/QGDwyygLJd8oeM0lj1Oa69cvm4NhQ15TI\nodoa\r\n=oghn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICxl2x4KmepHafJGpSYeZtJA0xbY9BNt1eHYRG2nalnPAiBpkOe5H0nHfQiPAWIIUfq36cd6FAYOjFoMbbi5p7mx0g=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.1ddabc1.1_1562696560988_0.40868961053544073"},"_hasShrinkwrap":false},"0.0.0-canary.40eb0a5.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.40eb0a5.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"0.0.0-canary.40eb0a5.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.40eb0a5.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.40eb0a5.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.40eb0a5.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.40eb0a5.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-lRhHhxr5jinVOk6//Jy+T42C5IOoYnksfZuLeZKIN+ifuGfUKuDrHJ8f5BWhGWwLGe3oI79V8ZVADkiqLF5cog==","shasum":"3747a4f17185d6617f83d8db127c319fa7d55856","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.40eb0a5.0.tgz","fileCount":12,"unpackedSize":9753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJPLQCRA9TVsSAnZWagAAS1EP/2O/okMxYNUAfv6FRVtc\nPzFMpy7J4uXGh4y1MsGvVkWGAc0PAQhIps1y15t2YFLgU1Hnwm31bUp1F8lH\nkyAD+BxdIMsU8H2MgzeMrmteKMv+csjdrOWRB0kEPJFTveXxtPXwn6eqzlhb\nJ5zjAs1IeYKBT1SzebNIG6aQKyQ/d0E2T1rlCMdhX85ZZ+IWs5XW7e+0rLyr\nDOIK5ye9OfZqEJ+fy1UcZAv5/sjg+o4Epd09igGVdmAqtpsGEMoQpCxgyaVG\nwXawEP45t6dj8JqRxmJ9XCysGnt1jjMQOdhs6OyAnJ7Bwp2SrrROfNLM0S3J\n5gKBVDbXdfKGEqaQCktfp+dU8kW+uTzGW8n3V35zCMz7+Ru4g4GqmJBXP1wR\ngPjBP2VY44qGsFyLKVsdhC9nifyIZu2pzEuGn6FjNSo8qtDSeadKoYfPvrT/\nixc9U3ONZnUSx8lzMdoHLxspcC970eizX7BmItLF3qNWgA8udqcSxUpTTrqE\nFFcW3ZXkZYsxorqGv+dL43y0jNZSUrzMs4B6WS984gFLqU0YVGCeM3vTqEPQ\nQW7vTgbATq4jAHmHaAQcOaeKTIq4Ftvq4z+jEtdDYbwFKYio9efPkOe2z1CX\nuVwzboH5181/viob2V89kMngmhNGkXjv9IViWZzR6wHArTtPoP+Iw4xa/+zD\nJd9H\r\n=c403\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCbOlSDq4GPUP1jSiYw6Vtm9e5BJQFjDJnZnK1mDPFP2gIhALy5b0pg0lsdF0wvoTalI995bOJ2DAd1+31ekvTwwZYn"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.40eb0a5.0_1562702543443_0.631730911111078"},"_hasShrinkwrap":false},"0.0.0-canary.40eb0a5.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.40eb0a5.1","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"0.0.0-canary.40eb0a5.1","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.40eb0a5.1","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.40eb0a5.1"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.40eb0a5.1.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.40eb0a5.1","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-doGs4nhNp6Pgzney5k/fJQw3Y0SEpMe5zob3qjSBQ6Oxxo2f2BPSkZqsFFBvBixy97tW8QmtQcAzmQ50EJR01A==","shasum":"8e0766c9c1b43cd7efbc1a1e47eb0d0f29863f41","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.40eb0a5.1.tgz","fileCount":12,"unpackedSize":9753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJPOWCRA9TVsSAnZWagAAKikP/3p3pae4Fv6QLGcVKk0M\nJe168K77qNDaXNXiPLxlxA7JYOWCyQJ+8fRB8lFr5q+gFWo5pMu6dAqqkNbW\nbP9mYq6ShepwtI41vj+F6MTDXIi09wduUmH1Xhc+m7IBGzHic9lcOVC2H/Mz\nDNyd0+4VwyVqY1RHArp7IyU30UXJZOkwORqFYp+pwn+Qjj/AC6Dv9UZt2+05\nQXkD5QojiyLtkgeiZLiiRX+qQiKSjxjKLAvXQ5p0cbeFGegiPC8zAtdG+2Qw\nQoJ7Igch3jCpC6yDmGGvH71O1TdedN0Pjhmcbmb/qCrRmX62PFMmgLm1haF4\nnS42D54/qRoxB529o/aA5590uU2JE8EWOr2Uj/ZrdSzQ1HabUNcSIv34pLSG\nz4wzgwX7uU3rmq+v/Jg+/wKT2w9aZ+rfmzhe0NhBNqRqnqDFubg1XR7g2qbZ\nmqkLeD7AsoiyJxUsrjxiyeKS/DL8W9Ns2jJJIOqf3X5eCyBZPLFWIp7x1DjV\n+SOJv11NHU/Ef3m+cllnyKRuBW+Psy9KkEDiNheZN0vddX730Haxs4yHo8HH\n1YP0PDOG+NAlSJwsov1puomWhHUJt5Wh0GCsQTriFpPdh/L1Omgt4MHFl/AS\noekfsTnYUhSGzhXvcLsX5d/iiqj8M7r4vLOR9MFLG9ohqHmvFZeqOLb/3l+i\nL1x2\r\n=+nVJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDIILCOi2vOCrf2PSV7i3JyGpH83N37UN+XCeSrq4qu4QIhAKQuDmF6uxAPmJW8FoRZ+qHR96jUxkUs/IQaAUwBU9lO"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.40eb0a5.1_1562702741251_0.33516884136125635"},"_hasShrinkwrap":false},"0.0.0-canary.fbfd207.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.fbfd207.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"6.0.1","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.98.1","fusion-core":"0.0.0-canary.fbfd207.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.fbfd207.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.fbfd207.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.fbfd207.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-MSwu44HcbBLsfVsrcWgt8SU1iLpNwkOIOGJppUDY3qdoPXKa+9b63BEcRqL5BowlxC7luD45KAkMK3CeP2/U1g==","shasum":"bb2be7fccbfc8a7ef7525f3cde04458347061d62","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.fbfd207.0.tgz","fileCount":12,"unpackedSize":9736,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJi1MCRA9TVsSAnZWagAAraIP/1Tv2YDoVkOVISFcgczl\nryooaeiEuQT9u3ohiaBS5I22PrsHVO+3+U0Klmpdp0/49XSog8qvhgdWsHIX\ndldts34fdT7CZjXeNnC4rj3zMdgsqyU7qJDsD4lanNe51C4h8wFcgO3GFLdI\nek0V3agxy53OYD53Zu+dECMKEoCJa9AopP/yc6wajDDOx8ilbwfxRk+J0Cjt\n7yT4LLIzMS+d4ZSrJBdqxm/y/I03+t4/P1wNr1msTSojrm5shbCYpM4A47+B\nViMCkhkZAw0tLscYcVpvsBW64ycr3sr6F66mDunc9AFWsSRFaRM4f2MMCwBW\nbWLCoflrZEcwBIWvGFMvUFiMZUzQIGFdTVjmh+jraQC3Qnz5XTXJJ6tXMvhp\nHueNod9WCPcUNeQaOrLCZo/JJdP89TZZ84kOi29+tVRf60EMq89sqbzKQO5C\naxY4e/o36BqyrwUElBdUVvSFMTy87fd/LAyXfaqZkkG7TwXcAeOjzX8bPao7\nut7K5vRjvxOnC0Cf5nQR+OjBl0MbunQNQWdMKHK00C8c7qeymLoU/cZrJ3Cv\n2HsL9HlRZd8aF9+iIEBOvzAgAK9jzxUxdIe3stzMcrAc8Q93G6cM8CJeOCCB\npQBBD5I7K8agsU1J8bBC6pQNtxkjJS80kU01520JrBDhwkHDxExYX7/u5TGy\nmNN8\r\n=ycPG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDkztk6pHWw4Dj7DJ7npJ+dc0+EhG6Fb5RFWh7pRvLZIQIhAJGSJQ5tXLkwOCWcMTtf9gmU7X/8BUBAerT8V4W+aX8e"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.fbfd207.0_1562783052124_0.29588229733654314"},"_hasShrinkwrap":false},"0.0.0-canary.4c30d33.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.4c30d33.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"0.0.0-canary.4c30d33.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.4c30d33.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.4c30d33.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.4c30d33.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.4c30d33.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-tgA3VgMtdcr8K7x0IQFt6VGasjLrIbEMr8SIE0J1S8l43DXk7F6xt3d4i09fbMzlwqn7qA7wrfavJMK1Rnx4wQ==","shasum":"7c9e468790743bd4ce562c82514c9d7e07a1a2bb","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.4c30d33.0.tgz","fileCount":12,"unpackedSize":9754,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJlNOCRA9TVsSAnZWagAABYEQAKR9JRwuz5A2wm3oFWCl\n7pU9BwffQkM33H/MQCQr3tMyEGJ1EZxicF8jxvjiLNN8vutMr8SN8sripMng\n6W0fBfkzbNxQz+hZx0WOY/wwVcwGiUpS7gc+WLMIR+7kuSdrCSBCqdtOcRRm\nLIGp5KuTsOjT37V8MsY/0zZSmFqAoQY83WRZ/q2UOvX8NaPBzvhuvhWv2Rsj\nm/ydSdRZr9b1TQx5uiPuvrlzRkllCTgNzdc/fttzF8E1Scb9eyqYA/p+wvpS\nFvKsvrVgh6v2g3puqbzglmCB8H3baaX014lEoo81WWZ3rXflOtNA5bEsvqty\n6hcQqVneTeu8iux8jafbJepVMEaoKmaDrtMo6VX4sg1rXE4nMlwcLKpWtT+H\ngZfgeWbs0vDJcrH18mQCwzS45rRQkro9ecn2X5K2y3FHVBfYBzAafbgtU8Dg\nNhc6U5TRvbVLTwwHSaoL8jJNbIIow3tZUfhcb74llorZs7d9T1HdOnOH4yOA\nCcZBaxAr1Tudp6DsccIjpx8K/ec4mY4jXkUarrBkKxfjfbCzNlcrLgJB283p\nzREd+RSaWgYlQ8HxMLvoowWMHOKC40MhMhr28s8iVRedlBMwTYzwxjfe5r8M\n66D5+OBQiDToLB2xdJ1Y5kPDB0EfOrIjFJ/JXyo/02ry1WsX1DAAZHBxLNIb\nxWwH\r\n=yKuN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFTmhjGPuBKyBXFpN0utXwe0TG+Zoe9+Kam8Wu0oxSUBAiEArss7zkqbnQyqnfsQMRVag56RbM44zc+KqtuCcAr8FKA="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.4c30d33.0_1562792781956_0.7889938060808306"},"_hasShrinkwrap":false},"0.0.0-canary.4cb9c2b.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.4cb9c2b.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"0.0.0-canary.4cb9c2b.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.4cb9c2b.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.4cb9c2b.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.4cb9c2b.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.4cb9c2b.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-BNBXXSasM5n2GWKUMis1KHfTLjBMPRG4dFGxqkpIBbU6+jcq0XxARL2495bFFsHa6f08r3AdJZ8wuEWdGgdkIA==","shasum":"01884b9e35c17b33783b4bba1711f7173e112b0c","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.4cb9c2b.0.tgz","fileCount":12,"unpackedSize":9754,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJ228CRA9TVsSAnZWagAAm8EQAI3cJPZNAD+L/wlWV6PD\n/fEvWKDpviP7jSfhfINaeyq2KK8f8Tqxeyt5/GiAzMLF1W56OSCyoYxT4hdz\n8k7n1954kWJ8H7gAN73E7DADAmm6OaJHYv2bOSlJHZ+s1U+YVKJvabX3EP1o\nbhLxO+XSDmMud3qKrJDCVso0XPLAVVaIRx//n1E+7TMhJmLuJIGMrQkVmZNf\ndAVwjd9LQxMVNqV1B5WXVUcujuXsXSbCRgBKjKCnM5a6YusweOgcp/C9HqfG\ndipttJNUkQKWvnHt1qFKQ3NZCJLDAlLARO/ZvooNesXkxcDNejaij+cuPsVM\nKC+xi6TLLwXIYiYcwieWsu0dD5J4HHUyaR26bqXWJeG8mOD4unur3F9F+ac3\nXyBgUzKjhcyTSZjn6oDBrk629ZVV8Qx0Or8ZKewCC/aNlUgcxQeDYpSOesDt\nKDv6VhhyCjHdjZwpaod8XLN3tQ6LQt3f5SQKWm+YuICHF4B6XtG+hvb/HW8w\ngvS/2MBt3j1zAQmoWc6oINzLYgDFe9uiVMZeaZuIzeunrPwoDb6YIiyxDJX7\nyAfaihA78ijkcxes2bijX6qhJBAxB2GPQbz9xZnfpi7b8ocQc4qTAaF2irRX\nYd6onuc/cRoA9U3k/KPAUvzaZnlWB3bTG/GrTb7ICzTnj7PwVyXHoA/grMYp\nbj3b\r\n=j3uP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCDThxkzvU8T98+M+4TAIN3FrAnwPzqhrox6iw4awgDbgIhAPfpD1m7L9mTt6EGuj9TY75H2lRMJWGCprKON3MEa7N5"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.4cb9c2b.0_1562865084268_0.18902416359744878"},"_hasShrinkwrap":false},"0.0.0-canary.b0e5994.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.b0e5994.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.b0e5994.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.b0e5994.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.b0e5994.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.b0e5994.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.b0e5994.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-gpth48wtKRw2JZhHWD2oSqDacDFGH6ML+opt6TIwDjIYT1nGtx/MWw1euU3aWX8G5p58lOeoxAlTia10Odfn6w==","shasum":"a35e37b3c62cf6001e056d84d768a383c1c3bec7","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.b0e5994.0.tgz","fileCount":12,"unpackedSize":9798,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJ8SkCRA9TVsSAnZWagAAiYYP+wTt1h4B6S0xVzDkNMLh\n4go0G688y82RWtCdJLQrWpGDRHMFr/Ba3agTjzu0VrEmhKxajPe5lYPnLTxd\nqUEqUMODan9Il0vimFdvzCR6MRsGFBn/E/am0K3S7Xcsmek/TDodJA0Ox/1x\nL6x0VoAsOxO5uHMfWtNAph7pFbaOMD3cl3Mz50lOH8dSLy8wU9t118ivVOwV\nvVV9MZX4B4dnWKE/WIiVghLOGpoa19h6rlLADHxD9+WlzdX0ypc0xq4T6FEk\n7be6A76XXjb4+XummreEAfTC+ZSxDdre2vNB+BocJsuPDc8kN82aP8DbsIgZ\nVvAANH2STAB7YY1/7o2s0FZNEP0Kxs83ZY0HFM4cCjfQ+VbIV/euDeAySdwL\nMwNLwTPfFB5j02ef3AF4tKZeIQev/RWm/Yomc064Y4nypsW/KFXkeYcwB0cS\nwwIkvTssflzV2WG0JKXuEIcM9x9pK3k6j59TjnGCAbqKMfltbHuN0zHQCdhn\nMMXEUqR/mveGXsozqkAkU3Qg6wlq/KVoK9biznFOHJDc4hdmFeHwS2wLfmqr\nfFfpUDIl3zizSQsbIa7X7zmYcna5twZahTV5tMKXDiP/uxfSh6d3ZPMV0VpF\nTG71IDWLit2OQeUZP9+gzwLysGkKufugwrtagI8gPQZ6CTj0d157ywncRDpU\nxP1s\r\n=pEcR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCoQDDBTkb37xxjpdCuNkmaeAUAM5HrxAa6mfMXag3lpAIgAkLlYxL2R74NeheGAsZ02xjHAWuB7ICLicoiyvTQTwQ="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.b0e5994.0_1562887331439_0.5892908247980162"},"_hasShrinkwrap":false},"0.0.0-canary.50aa07c.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.50aa07c.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"0.0.0-canary.50aa07c.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.50aa07c.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.50aa07c.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.50aa07c.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.50aa07c.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-dCJ34lCf41YOQiViKd3yMPsQqB079iwMgXiowIlxOAfpuut2yZnzzDri1DmCiE7d30LeeJ/0xZa9GW3C3JxOKA==","shasum":"cf946eaa7c99458e32c92aa0e0f20fce08bb44f4","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.50aa07c.0.tgz","fileCount":12,"unpackedSize":9754,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdKLJFCRA9TVsSAnZWagAAKtsP/3BZ+bfV3P5f/tK4pLaX\n8OZV/iizSK1AtA6qlsVHVZkq2RYVyca74Zjir6HsuV7oVFMwy3zCvppV1OIE\n3hlv/ELkp01XTNJqtF7oaPACTZGUrg+ueGDbyr8B/SCYFIlitnXdPbCi3s6j\nslNjBg01MuMys/YnD2yrOyhJOwfJIjRTX/FbbNsqTijUCVhTesiyMpWmkMyh\nsMQaGKeT3FGt+vM+8KhQBm/YfBtrCdQf4ADDtAMwviIpjfLLqu1kG6VHKiLv\nYWl2Qv8OYduFQb1V/SMuOX4hTfQelSO/QyFujrVJhwj6Fo452gsDxW2B0XpR\nV6Pzhvj4e+Qtuqi1bWSmrQusUwXULqAYO1exliJD+BrGPMcW+7Piu7KoTPsT\n5GUSe5Ks13ZYaPRQyYh9mRpUycQgvvDXTuDBUpOu2mq1DuL50gY2ITk60tYp\nBYm+gHu/f9srnF5qnxyFOe8IXEDzcqhRcDETythmHOdperA3gQno7Nql6rpF\nB9QACyYl/x2NFBAgjgW+HGG2BkFB9//LEXwIjIY5yLBHp+vFZy8UEKtTuJo/\n7U//WY6BAYKS1IHG4ZpelWjPjrPWVHXhF87Q1x+gHWDNgwH6SCreBgv66Fb1\nU2t5ya4ASsc6csBVMm/HrR7WWKq59GyEi+wazu9ndJkQc4GGawfRLKdRLfnV\nC1a/\r\n=4i6C\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICbdzMDGaFqpDwSe4fGDajw05i/dlh1i9yx7XcmdKLFIAiEAiKvT02qs49phUO5NVFnM/+c90UGwL3x/yfk1NgAAiVQ="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.50aa07c.0_1562948164523_0.27423845859416307"},"_hasShrinkwrap":false},"0.0.0-canary.0a4669b.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.0a4669b.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"0.0.0-canary.0a4669b.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.0a4669b.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.0a4669b.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.0a4669b.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.0a4669b.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-D4OXhi99wZbNjd8cRSq0H7iKqes3PHknmR5PevU6obT9TniD3EFgAOpxIxu7H+PSaXMWTUaJ4k2PgRMQ2oGdzw==","shasum":"abbdc45da2884a9cada378a75b499cb72042bc74","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.0a4669b.0.tgz","fileCount":12,"unpackedSize":9754,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdKOS3CRA9TVsSAnZWagAA2f4P/jhlG9gljYJMKKtvd/CZ\nqUrCl9+bPtbXZY76Qfzy3vLQsvGnqQQ8y4WvkEQh0aqitFJt7AO0XCKgxTQa\nTIssGq4Ut9ogbP80kePF8BM51MVE89URzA2blPozp0K2p9iUj73jHDjE6Bzy\nOn8r5rMEafwbWBl18vWT6NA3DTNHTzcdIof6ls8UR+MVxZLwf4KwDNNW4XGJ\n4Otu+tGfqZzXmoju+Kct1FGDQZs7q98DkS4mu3AQ8PQuagVOYkKkrf2Hjx2t\nUi9B5Eyv7pLbBI8Q9MAG4o2JvCxQXZjUaQ74G3umUjcsRViZ5ISDtafUhWXt\nQo32o44ha/8AOsgQmIg84Cz9w718BHx1B64vF7tyrQZbS11auBTmnB8PhMRW\nZTuvJ8NnxIcOWh+SQDqI9pT0KeTqCCbIECZDeh8Bl7wOGt4Kz6yQSLmYNOm0\nwFEJILERLie8sLoSj6Vp5o9GzGq18MNCnf0uV5HqJP4gV9rm8bAwU5pczMVH\ntu4GxtgY/PIvUR/coPnADm77zmBz16AwrhEapFTD9oUScJyGIrr60q2qrODD\n6JipWKEKcrUjL1MJTlleN9ce6mkXcdESIxrIYyEy6X8ysgpz5A1vTIpCxrGU\n5mIkWnxWfF/dB9FxreDIDxSLgMnb7Vsh7b+RjNPJAUBrbE+DotlIcLkLTZFR\n0NBy\r\n=rAeY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCxdO1L2OvM7kxRUvflE0yqlIeQFxMSNK4VfhSOakdXMQIgG7pD3nttXtxtoAnYAwmmWTeDzgh/CoWp2u5EHHH1q6Y="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.0a4669b.0_1562961079345_0.5715890250120548"},"_hasShrinkwrap":false},"0.0.0-canary.0a4669b.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.0a4669b.1","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"0.0.0-canary.0a4669b.1","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.0a4669b.1","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.0a4669b.1"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.0a4669b.1.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.0a4669b.1","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-Aq36RN0SF2jlLe14hEGLmTjyNlOUVm7p57RA5nFIw5CkdDzR5Gr/yCSnVYjGgaCCM3bNJZ90A3APSaOv35q7aw==","shasum":"9ae2793c1a6cf1f56a63a6ade6ce4a1a90c70e3d","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.0a4669b.1.tgz","fileCount":12,"unpackedSize":9754,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdKOndCRA9TVsSAnZWagAAuCEP/3qkXA48t/17MLC1dBv1\nuyR8l6kCQPmo2XveVIrma1Jb9p+Rhel6X2zjx5HqB3eKs+i8D8UgueOdV6NF\n2itRCnAZYiwuBoC4BsHY1MGDzn22U+6TxSvqxaXmmytyY9JKWtTaVH1Ccp45\nhQZHm8sWXPPQLKJlgOAuw7EhHcRpuIUc/W3UfDsqDpPwNjrta+CIlsowx7dw\nA2Yn1rogn58XbtcA9s+RonDz2OBm0553s+NduinjYXd2R6ruQiXsIh2SPjyW\noZgWiiAgAmKw6C1lMBs9mzxuF3C0KAAZmH30NoPO48yiln3/i9gEOzjzEQPn\niXqQeYhw9GOuck/OXuaL3r864+FXyejkWC0MCD2kWM+0EPsfr3qWPEyJIkQE\n2B/A8oYRVqAnPcTXuvoi+lJg8g06Bj9InCAVTNQz8NiDXbG+5l5OAaRLrEUy\nCQ+sUmrr4dJ/T2Ee/pUjdQgPDew1xNf+E8QFwtpIoc/i4g8OHMdYDMPlVLvW\nTnxRAUUjUkxM8sTLGFipNQXk9OWUNuEMB1alKUkvpie8tJ9UX77SQC+5fDF+\no6L2at+LXhKRo6/WPQDtCZiM5xLZR3LS8hhozA/TaWsIFvSm25P95VasoHTd\nVgmRufGFwueFStQhnZnI2uqW/76wv4/snjHqS2QWdrhLpVP9NFyGaMUvWqIk\nHd1n\r\n=H35U\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAkU3yjthob/qdG66BEVI4XlazcNltvcYHUFtz2cmSsnAiEArfJqt3Ez65PsAy30jRWKACF/6eEZnqb32FFQywzh2fE="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.0a4669b.1_1562962396527_0.24354199983057967"},"_hasShrinkwrap":false},"0.0.0-canary.3b5ed2f.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.3b5ed2f.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"7.2.3","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^5.16.0","eslint-config-fusion":"0.0.0-canary.3b5ed2f.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.8.1","eslint-plugin-import":"^2.17.2","eslint-plugin-jest":"^22.5.1","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.13.0","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.3b5ed2f.0","nyc":"^14.1.0","prettier":"^1.17.0","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.3b5ed2f.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.3b5ed2f.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.3b5ed2f.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-L0J3BWm9J8UjT/yjvSHTxiNC/xIPdZPYikVcgi6vHSsSXuqG5ij8WA7q1yKsijMkBaYITqL0TMtt1j3JzojIeQ==","shasum":"6fed02d63fd41f936ee7edc2946e4ed03433ae31","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.3b5ed2f.0.tgz","fileCount":12,"unpackedSize":9754,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdKPCiCRA9TVsSAnZWagAADF8P/0wEJcqQJs/9W6xOnr7R\nF50cfLH00CkAjec8LTqCwu5U5Q1mjaDoqoGl4SVEvNHm/dkYzWbuAefpV2eP\nGWcY1NHEAbjRF6eOUmFB8gkVuXkD0OWqRigW26nw2jKZX5uqiHe5IW1NOM+v\neir8gYih6nPoUcmeyTzUfWxcaHldgJt8T5rZEJNaPoFwxRs3I619lMKiS2YH\n50F59QmJKLkmAeNHAzkYIeBiTFW8Y1/Uv1Z58pwVsjAiPIYnZsMUxE/L/ukF\nilgicJjgeRDf6avDwGabO4hSZR0nRRlBT0L1TPP1fqlYYMdP4kdCd/KFgCya\npPwawnTmDZoAP5M0Vno9Y+Q1jKzndOMZoq0qw8qeOfLMQ5HVvmVsP1elCAeK\nwDFL7+AqX7hPvycbolRKTTIDkLTKCQd84a/UDtKz12xlxwpuoctlAs0RmJWm\nPKIXxs99+ypsUqVzIb5iHtez7Faag3cYohNB59Hik876qrE+fEHaBD2uig02\nSCaI0jWNsn836CDqJiqkg+490LRbLfvhQFWaY0dLeYg0RMHP1FR60yzM78++\nU1B4tMLrhoNY7ZgI2MKGfr518lQb6n8bjCh9keNXW10CMLtRtRwjPP4slq/I\nJHMSvDxJ0sOMOCM/dqdDejBgX+unc41C7uEjDs9l87nzwWNCmm+1EEeNtjHQ\ngq5l\r\n=VD1p\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD0VoC8LBf0tTFN5pSUotwf29SE2yM9/uQ36ED2oL089AIhAID+vg7Pa9ivU5PLeHo3IfwSc19ouka+A0SdukxP1txd"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.3b5ed2f.0_1562964130037_0.27807527081596217"},"_hasShrinkwrap":false},"0.0.0-canary.db655de.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.db655de.1","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.db655de.1","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.db655de.1","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.db655de.1"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.db655de.1.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.db655de.1","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-mMidld+NQfikams/GmQ//nK1EZbCoSnvbJDN9kxw4icYnzS4dbPxDt0MXkaiwwu5Z2uMlSFxOosoRc7VV83okg==","shasum":"a97887948aedca30ce056eb00dd70d1cc8181b01","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.db655de.1.tgz","fileCount":12,"unpackedSize":9798,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdLSLGCRA9TVsSAnZWagAASlgP/3ql2n/UYQypOzcyfWxm\n2xxE9KCN1HlUn2H1vLQapkdnOcn3Rl4N842T9P9+RF/ZgmXPHSfC200mnp59\nMQrk9IuGdBdgCsD5jYovs3sca02QwEnmX9XewUmwsv45fn6uvOO1sj/b8kPg\nxg1PUrTAipaps8e7FUVQq7t1fC0dhCbclkVXevFO7Liov4QEvJVw/h62AngG\nNYaQFDWdwwxDLIceNSWIQoGPPdMvvFmA2xiXNFvobgKk0/EDAsteTzUesWIu\nXme2xAQn/779t9zsYi+9mZzIiPefy0159ssEqdWkPqAjUst4Td+D88hqX/Mo\nleqVZh41sApMcY15C+l3i4cz43k7LW2S8QoLWIoxUQc3LbUYfqk6Pik3opdP\nLEHFj3Txth1PnANV5qLYaetBfqf5dOOrzUBJJgE7lhlS8LSs1MyP3FPUiZgU\nSHNBkEglnJTsjSI0tZyLFbxzEaN9pSCCnr87lSE6VOLt4nkERMonHpcLOony\nR+eNRum3mnf4ziLmEtnSI+4+m3JkWgixRs3Q9hfHDG1MHiWs9mXXuMESx/Zo\n7PJkMC7XMCPRiIolWjHXZwKVFDqV153C0Q7vSi+CFu5hWPZzk3to5hbuBAYZ\nGZMKYrBmS/eLmSidsbiTU7rbqlljJ/tqizbswyAtgsOpYs2Oi3+OALDlR7xF\nFe73\r\n=95Jh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICim3iLs0LNi9EHqOaA3OgEwM2fPGgo3St9eKMqb2ihrAiEAweH1fyuEOy5crYlBYkM+2E2AsklPLn5L7uj5BQZrnLI="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.db655de.1_1563239109591_0.1282297458209749"},"_hasShrinkwrap":false},"0.0.0-canary.396f8bb.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.396f8bb.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.396f8bb.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.396f8bb.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.396f8bb.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.396f8bb.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.396f8bb.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-oU2aGpWsEOQRhnnJ3pfHymGLhdFO+wmkvYbjtip4npQSCLq+7suiEifCj4spUHQWD0s/6chIHNtBeBvdIiv4Og==","shasum":"8aadd8d587bb755769178f6e6f27dc27be9f55fe","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.396f8bb.0.tgz","fileCount":12,"unpackedSize":9798,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdLhPsCRA9TVsSAnZWagAArGcP/3+cQ76mlBKmW/PvSi2F\nu7J4CvrQhIzLUW8m1GSMm7ufcBO9qk345aSxmpLoRI2UYaTb0YpDjwsWAoX1\nc6DYAn+8AOF/+1aS39Z9pOyl0q9tg7PS5BKkeM7fkYHzkyrbeGjTsz59Vmmz\ncSjY2Q34kN0iOvT8U+QLxsFaZM7P+TPbtX0tkIGx97kYq3xzRnz1jM6qT/0Y\nL2tsdWFl7LU9HUidwqMmg3PoWExiYR8fV59DmKi9hQybMqHUkVPOhQft97Zn\nKSi2GaKAf2rhdHubhbp5D82t/A8NA/hW0zy4btPSrPp8Bfn24VmyHecO+MLS\nBO5JDu3+Il76qhE0k8w/cKSIAdi7UhBwMftVhI6wgaYdq4bqktVO16mcd5w0\nbq7K6hi0rG4o4ghbUfFNaxrte60IqYkd2vYc8Xtgi7xGWGPPeJ9SYzcq98zd\n8UZShhyd9G5XNqH+v/pSKEkBDvtu/0MEg0E3sedum0U2myZ5iBLO4R3v2AD5\nJQW+UObP4tu03Bhp5oB2v41ejiHJhjDz0L/Hcu/D6vyl4GNuvBvpdVVq7miu\ntJGC7EIBQ4c9/vpcKB48qhS5WNEjrMaXuPWULMMi224NeJ/DTGBHU39DCI3N\nxDSrtpdnG3emWQmiwx7gjp3hIUh6eO3YNMQfUWsXkVxgRalihLI1iLxGNY00\nmRjy\r\n=u8yl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE+4kcv8BjBsmWLpk5h3r3VPgEBP4AAmzPhCj6F4yibTAiAEKCGg0S6nt/Ccbn3peJ8rOg5cISEORBwgah6XlQlPqw=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.396f8bb.0_1563300843577_0.7772454252652594"},"_hasShrinkwrap":false},"0.0.0-canary.66cfac0.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.66cfac0.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.66cfac0.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.66cfac0.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.66cfac0.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.66cfac0.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.66cfac0.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-Q2qshqKRBFCGem6h/RNCVYnLzv+cUs8urnCU0zh8woRQyvNAweSCiEzQ3CYXjEf5Isc386E1rytugGJy/JX4Bw==","shasum":"e71826b8e1cf5fdcc59dc3ece9432662f5d7a295","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.66cfac0.0.tgz","fileCount":12,"unpackedSize":9798,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdLh/ACRA9TVsSAnZWagAAa28P/ilmlBLu70JsXhJa3w5Q\nRuWNzypkqeBaYgHBTGx8DxJGpQ4m5EydbWidoo1iTrlrKugLFrNl9O9yLuEp\nHcKZ76dckwWx/ibGdkuwI4Tp6bFKTMpVuJMx4V9IT4T0PgdKe4J0YKTrGGYc\n95kJcM3QQHYjJq8gssNyOUJ6q1UEINFz3dwNNIEiPFy6Ro237gwNWqLHKz/P\nWHHLkVehzgaDe4/eZivu97KASjNrDsjo7EydPgl2zRxZ7lLqsIm5mYfptYe3\nQynxXPsSFooDfzFW6jJRTneir7C0zXNu7UgEQuZ5fEPkQlEpojcBe6GirhMK\nsBCdA0lfSoULHUz0Ce/0W9TlkEVcYUE3Twcfk0Ne+OgYDjfgcRwxDBcy7aUw\niqgFSwstv5QWvyjLL41TV/HgQqT70ktZEB8vL6jG0HH2Ir/+ajZXQO7fwtKM\nRNYFDZznglgBPEUi+0tsI26QbMK8yEEUDlhIUUIdoHIO47KDME0ODq8jktVu\nBwYmby02HIqqsviAK+kMxYe0K0hrBH408Uuz9PQ+pN5EjIpxH5l3Tb94njtr\n5e+BOJN2vA8tO7bI0XDmsQUZYCekbwSzrUWqZW9Ap5W4SW6kkz/sfQEwZuDe\nn/0n0CT5xwYrrN93FNiAp1JlzqhHc7msXi9G/11i1RmAxCNAl4cXZFXO7ZVW\nUQCu\r\n=Kk+N\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHYvjlmSFVSwrG1OMNQMgVMBmpacktKmEsJZ1UmrWWWbAiEA809Vus6UjIYRno4+0tPkOy/8SUuxb0Nav5FhH/QvFZ4="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.66cfac0.0_1563303872294_0.38052518305805894"},"_hasShrinkwrap":false},"0.0.0-canary.403f456.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.403f456.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.403f456.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.403f456.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.403f456.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.403f456.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.403f456.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-MctTTvcxNQwi8MJGihKRExud8TkPM9HFJhkMoUHiYP1nUGsQ/9krC+SLxHPuieGUR4ZCMkmwZiQtayy+5UpKeQ==","shasum":"e2922a8cb2ccda81cb6655fc8042527cb727c69f","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.403f456.0.tgz","fileCount":12,"unpackedSize":9798,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdLnFMCRA9TVsSAnZWagAACwgP/iDMF0dEvmK/oe0vGSR3\n2XVdiHkRApDMuIF+W51JfxUtiFiz73OKFXkZcAlC5jneCpfj28TSWsXSDpST\n3s/8kR/aE3PaJ4N0rsN5zVphBRUJ0Zdp3NCZP/zXeVZ3Ua2JphmZYeMhmA/a\nw9LUSsaru4lmvbH2vaxwalPayZusHk/hMtH+LTC2a9jUYMZ7cKFzJcYPuwPM\nKtVtRtiQm1UKy7I+aBf7Qa9hqVa5sNJ4KzC183gzeu5En49Ex1ndunMzbh1c\ne15iTwSMqoQkAWT60vhu4k35fNrBlI6LF8WkxScL9kidzA8BRQmnIYbwT0HW\nFw8/UI9cC5vKqVGBKW3U3EkhgPkhIUHlcrJ2SYy12+XKgtep7nHz+AjnrTFB\n+I69C5VdFDLqkGZhJvsYopE6WLFmzwg4nT37BQWO2aEmE7geBV9vWgm0QM80\naNSfHIvrdosz3QjE0c1Nhu34I9YLps61RciQqG1zZyNZuDoklsGbXC5dKLu+\nnUXi0oiU5h+/MMTI8toneyTOGxnK18pNefw3x1PMGdG4wyJPwFpojqpsr8ce\nAnHB5aROROV1sOVvbmWgdXyZr3KZBloBxuhhs1XC/EEXxt4M0onQO8BQvypB\nkv2kxjIEmxZz3pcd/Ok3LuC0lVRp+XPZCQWndYxmNMPK/C/gb942NIqATvIZ\nh8df\r\n=/OgT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDjzlihxdCiW417LHTc9gcFoMZAsfsz3tJ11ah6MZqkLwIhAKJiwjMMSWSCDQCPwYm3sxK/kArznpOxx+Zd3gptw82N"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.403f456.0_1563324747955_0.06615803372033424"},"_hasShrinkwrap":false},"0.0.0-canary.ec8188c.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.ec8188c.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.ec8188c.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.ec8188c.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.ec8188c.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.ec8188c.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.ec8188c.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-UZ7iIoPV6cg6UQ3qMrjQOddMD4Q9LOTM8HPtcSVtS/JxWFv2vSg+wUfGSvWvk3zqSzQsIv/W4FkXjAkYZMIHLA==","shasum":"20367d5f5421e7eb818890adfd443e112642c5ed","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.ec8188c.0.tgz","fileCount":12,"unpackedSize":9798,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdL0PqCRA9TVsSAnZWagAAQZgP/jw9xLnhbhsyeV0rVz7i\nI4E5gjKYybKdud2X4z6CPnb4bb/d6IEtaoW8GUGnaj0usnJioP/6LVsLNBaX\nfi3PAYr8KmRbB04tfx/Z7kAn3VXXVb4lD6alz11m5VQPf6g1mYlV1snFDVR3\nr1PnrOywNmU9boocE5RxxT+ZQPDBWhtqTOvatUzBT8iPW56C7CUHOzQP8c0r\nAb3rsoTU0tjcZ9YSi3wtt9iLmgofcUYrTk04LjaIBBe0QkY2MPfQD6WUlJzI\nhn8Dgu71+/bHj92Cv+7RLse1uN4T50Bcx+xow2Q9/0S8zof66/TOYq80CX66\nshFVweWT+y17KF4vL8VqjiIbBBRogOAtpErt69vPzNLRqElDi7kTyUuP6M/8\ngc5FPp/vXW7y2gWQGHv70fdL0hafYHSLQKsOcLdeLKta0vyJn8GmxiSDl3ue\nkI9AxYvxuBS4YPeQZ3Idb7bzkKzj8c92JIYt5hZ3rO4PKx2ieXqbB6ZOzjU4\nTNOfFqkdSQzeSvPTQpuhr2REGX1wZMN/4wNqH08rp6fjETMd2jZty9e9I7dK\nrvqCNw/UGZ7qoq2K4aQHbLyLjRP43kS4bq2ptejRb7qbHIYYUpbr5ZNLYz0u\nxsMSK77Tx1MgilZb1ShFjUwPFyrJCnMYXgOfk4dJGSL5hddv2Rp5k3fyxaNA\nywwM\r\n=codX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAhLQk7Wb6vqMLCYc8wra1bq6MoM/D6x4oLJT1N/g9udAiEAoWpJdFIa40fTbWiVw8o4oYUmIl52+4XYC3Mqd/gc9Lo="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.ec8188c.0_1563378666070_0.6938529500751589"},"_hasShrinkwrap":false},"0.0.0-canary.e9f07ef.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.e9f07ef.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.e9f07ef.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.e9f07ef.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.e9f07ef.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.e9f07ef.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.e9f07ef.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-wqMywv4zznBjkp1aUSsm4prUCsQqcqe0Xb6XmwhScdG74NRi/opouNchbG0wMZbIdodM1376cr0ke6zjHvFJhw==","shasum":"dea50f141613393ebd7953ef528f92384428a9b8","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.e9f07ef.0.tgz","fileCount":12,"unpackedSize":9798,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdNepOCRA9TVsSAnZWagAARPQQAJ9ppGiK7yXGk/d52/hi\nyrkg5Mqi9wH/cemZN5BiQPhp6kRYI88rQAPYjAoB9QbxNq/WV/Nw2NqOZSzz\nnVePy8GzxJKKdA1CFPKhsONTykZ1CyjAocty1i3GQdoIzBqjScEBQXqPpZ4+\n+9lyRvZqBPXQlxGOj+3XM62MbhfvLUyL7udSUgc4D+hia+4odpivtk56ien3\nZUODpYY55Q6taff6lEQY8LFOhBT6DynpfVAFbP60Wh/G0lrUYhhxUTni79b3\n5gLK2DzpQNMTwMQJkMq50ajhQqMsrnzgYboILDAuwjZtliRDM1mBBMmGOEOM\n8CAOL6+UhRkHlVEvhRRH7zEVZwbronBIzv+6gjGGb6rX+6dI9kxf1DtyR+9P\nrWjys1Wsdzx62EHVm6rf4WmKWqVMdvuqHyMx7JEsH0h8MqFtyrTgZtUaQJLb\nYSksrUbUepj7QVtxzoaLrm6kDa2ytOW219DNhkThhJujx/Lsavs6UWy1LZhE\nHzkUBzsFRkyeH0z2U0c9DmaOPNNd7BjK5URcN4E1Dqr3L6Alt1CggewsxOSg\n0T06aPLDfWbq8aBhNOX4j/Y5FnjbVGjzoznVmAexTqWhYDwlOOo7RDxZPbVp\nSl5IOIlVN8tdArMjAjfcV9Oe5C4LBrHz/vQmkZJxATcDq3i2ymlecHPZMlL4\nmfyg\r\n=V6ns\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDZ5OgrzblD+Co0+We7R4L0CjDCJ1XirugfGs/5D4AfsAiBZy4m2KQMIxUkWC1Ogm8DDXPWgG0Szl2TlRFryIVmcsQ=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.e9f07ef.0_1563814478062_0.3205704125544184"},"_hasShrinkwrap":false},"0.0.0-canary.fc2bf62.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.fc2bf62.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.fc2bf62.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.fc2bf62.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.fc2bf62.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.fc2bf62.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.fc2bf62.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-GWZBOwWN64M8p7MjgrrXhC5M4XdUROuWvtpAyHZePbz0su0DwnFRCtFHrhsEt7CS+G24gEvPGB9WuFKbglc9aA==","shasum":"7e8aa462447a5fce1c7935db19f85a2ceb64e32c","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.fc2bf62.0.tgz","fileCount":12,"unpackedSize":9798,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdNheECRA9TVsSAnZWagAAo+cP/AweU0ThHXq2xajhEfl8\nsWEN+D9ag1XNT/uh/qGEc8tC3YN4mS8OfY573fx0ZsSNnKKwTtynjy4RLj5P\nX4xTa6MvnKOUudYtG5xf9LhT+vjUHNuTc3LGZYJDLwEyWAgenyGmmE9tv77J\nPwLzSxHZiT+qS8mzG0FNs6stUpP1qi1PTYkoA8lssg7EyY3Hxt9sNsYUooZU\nVdyzWVsytmuLIOowxL4YXYCnMIj2uh0xykibYg/0sNN0igtWjMM1Ua2qbhNf\nXwBnmoeQvRHI0kYTwt3xTX+keVLF93/5PG/ziE+9sIjnZvSGSOQF/laYpFvH\nfYDPFd6NUGwQgdYAsmUoCQ9bfusRljdAxBm8ztZ0G28UsJHuxjRIHg/0tqyj\n/qhdvKCJ/n8bCvNii5orUypBT+nyiMqiGxuTXzkDWhGG/eTqooyDIQht9V45\n0YtQcmhiXUqvgh1n+eoYp4Ex8iiSx7mhLMmiT1BvXcHYBlouEJzkOdzvdIvo\nhx1IFVkt1iJo5/SDWA5gc/8K2pHEzOAu217eLqF4qHKh46++MSBITYExwoxA\nUEhsm2s0oAlGzmFwqAQ3FNy1dH8BXyEFHzUhPvhGuATcIruVynMeYhxIsspe\nyOg1R2SZHxMXWqYjSL9y/OJ+4QtrnRLz8ld65OU0+PzuOq45oQ/fBTW/DYZR\n8jzA\r\n=FxC1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDcW8nkl5wGG9ED9JoCrgHnFbVXe0V4p7s8mQfQs1qcsgIhAPRsbEyroRNTuGf6qBFlpBOeSYH5inHhOrR6mdP2ULU6"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.fc2bf62.0_1563826051890_0.4617733574777869"},"_hasShrinkwrap":false},"0.0.0-canary.a8de467.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.a8de467.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.a8de467.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.a8de467.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.a8de467.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.a8de467.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.a8de467.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-ytlkjUr+Tk2t/AIFN77UZIv5eXnFSXnhsFutwntJ/M34Y9vqChTqehr1CP0pESeUfKQn+fxH4msLTFrZdLnfbw==","shasum":"aec6ae7c615b2793b961fde2be58ecc293e04af0","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.a8de467.0.tgz","fileCount":12,"unpackedSize":9798,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdNjRFCRA9TVsSAnZWagAAPRUP/i4b5klGywHHo0FpIp9z\nyLP4Qsfb09SpxqHdf13YtnUjAoBWJOkW5PtzqjtCmq0E6H2yrGCLHV7QfLr4\n/9N2/OCHFeZu9SCNrbobhkOMj0Jqh/lRJZEjJWgoiEHPYvKLJya0H4OYRyY1\nVqhSzLcbbgBjylPFQrtHngfwh1tTLsgsaRdQ1iJ3pHvKnT/BWogDCMAgZme9\nAjBtccA6xVaaQHDvSZsOGgiHdGXKvmzWEwoGuqOss4EcWYZ86KGhYivg6+wd\nRM9l/nBMB6nLRf39nOp5BwsP8kcuKbL/S2ljxPbTLKpufDuzuZJSY1omxcla\nKN+RkBZ7+tGaDEmVujJfxGmXE/l+ZT/R3tuzSARhfeqsbUD6c+GdwM9fhKQk\nKePYNaIl4U4b/AmiIIm0WwuQ/FG3I1sgVzZjOOXay1Gy1isJTz/blKV9UoQ9\nOUhuVJu44xxBEyJ48LYE8sUgeU7xp3ygkoobWSUyF9P2HG5HrUvnfRR2Clw+\nWxvgaRcpqktAiZA7dEpdQwZzMqfP1akT5Gooqy96q8DT01ClVTmnhV/mu7hq\n32NSlsHEBt8cUAnZ7QuvGUxTMN3SysgZfjYGS3+vD0LeGVpP7ggk2LvTX8n3\n65AsLOlepFBXtPJPA3x/SKZGYiymNQHfgYBet1TjLL5ocBvjoHTdcq6b1Lis\nqG39\r\n=DubJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDWWkyDleq4IBQlBj61DUb2J4KkFGj6AxF+w+CBJBCP8AiEAoKHcP8lrHDLo0BBLHmlkPMABIxjFbQGAJJWODxv/di8="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.a8de467.0_1563833412763_0.7713679711394188"},"_hasShrinkwrap":false},"0.0.0-canary.a8de467.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.a8de467.1","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.a8de467.1","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.a8de467.1","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.a8de467.1"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.a8de467.1.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.a8de467.1","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-RogFHtPum1RQwE6ufZUzrf7Kb4mRQxT0qWoNbUKOTNMuFMoWNhHNh15vT+dAwrthumpBW1stwNT8JeQ0ArF3Dg==","shasum":"1eb230c3b911db21ca00e3fdd9827de9a6407e61","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.a8de467.1.tgz","fileCount":12,"unpackedSize":9798,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdNjWmCRA9TVsSAnZWagAAXS8P/ApmsW8WBbpzsLUkZNjE\nY5HeHAzZ8DNkSQfY3Y7ucb4y4nASSg2fF3IzHoOjI2+z6ihPlwBmnsrkW0j/\npV/ArnFXwiQIGZ5UjVgqC+cjdkAWSVTpGGtRNEb+GoRbTLJhh5K7BtcK/zQV\nwGTD55gb8mjpQlOa2MKwoH3N6Bnj4pb6OQfYVU7QrlsIgHglgAkbcZmIffg/\nDtAF9Ox6PcmIuJo8n1XgKk8EFaB4yCgxOEtOmVQXNLF+l1bdt9w6vSlSzmUu\nYEf3jF3nTbkVeWazwq4yd0/+DBOO4qZGAQqngTD9JBWTlUj8NZIkA+YA752z\nb7CGatI4vGGGnbj+ZvOwFFNMWVE9FqByMjyXnFby5s7mrJiZ1u5X17n7TkDN\nOJFgagqQ0G9ai8fuad2t9xT0PfY9Zv7DukoBY3vJDfYuzb1aLQFW+dMVvIXN\nc37J+CdUT2V0CUO+vOAORBungnxvkBaomQ+Rw8Wavtk2b/BSSq5svNynk5c/\nmYK74NHPiVL3YkMrgJMSdkHPzBBtWdaZKHeREeLeLq3muNOQOBjOhJPptIfa\n3FtCE7+0CSKLRkpHpndDvE/BzAgnDEB3LM/U1umeRYiQ6fqhVd4dZLLaVGmr\n/3SwON4eaNh46gdOA7jMrfefo2Z9J7JsaRTk6565A3wzZeG8S3fG+iMXw+Z3\nvTZc\r\n=ZMkq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEf5vWV0UdwGznVWHF7/896R9aNVujaZSfMhzbfUgiQKAiA9DQ5+61Ew+e+rGNs8cFqyGKPqB0lgJBPEPXUAzOk7nw=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.a8de467.1_1563833765595_0.12699012224267636"},"_hasShrinkwrap":false},"0.0.0-canary.02195f4.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.02195f4.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.02195f4.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.02195f4.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.02195f4.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.02195f4.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.02195f4.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-LLC3tQrU1bPhDtiJ8/CylK/VDjgRPAz5ITgcO2LelcIhvc75sZ8Do8LAsnBAb9N/pkmin9QTWFzG3418UqqAkw==","shasum":"b270c7aedcb0c3e9c19b59d0dcd1e67f9fdc78aa","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.02195f4.0.tgz","fileCount":12,"unpackedSize":9798,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdNnvRCRA9TVsSAnZWagAAOkYP+wbD/vnysV1W8ro8o1ux\n0eDCHHodPv3dxGB/TBOHv0XByb+k/GrKzQsLjvua63FCQzicTSLC/+73eBw/\ni7FEUAt6XxFrZKWE4RfrWgE8XIyFPdpS4B5jD+1tEcXZjTPAjVh5XonB7ki7\nnCzPDP+6lRGJRCCMreqdK3FRpwLaLFz65PSgTEkPU5MdhyDdf1VibAyNeCSV\nOrNiLZ8icv1g1keO4KEQ1EoFT3qLi8kUDxAa/qVdgVv8M50Mu8ODcSn3qVU6\n5igz4LU7w71QvuqAFv/tIHOGp1e23ykKjhQvHipCOH4Oqjdbtss+JduyDZ07\n2uD6WBWzX2cT5zpgHZB07B5eR+meuM3CgZoNY7eg0Jj0DaoKhtS2OjBlnq8h\nK5P5t2WXDdKbcIPD4lpkHL1O4gYLaC21U+StnrOpkgWs/P2ABctd+wTwlSJP\n/E/lMc3nBhi0TrJb86oKkLeAfRt7/+YcmW78TUkrI4+VD9IctTIfvciP5XId\njIqhufTL0fk+b0jN1bdnE9UpL8yd0RJy0rsc1UuN795DqnVSvyhWTOfWwAWX\nwwfY3IO3T9Ddnz6A0Lgsmdqn1yPwzFdwwXZX1xeVXKDwxrbnKCvMxKym0UbY\n9juaTRd3v6VYpQMKSaAbRRIIWHk4oAckh1uKzSCbEs+Shfo56tDtFP0cNmHQ\nkhCL\r\n=0Chg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFNwLnds0PTa2zMKmoDlx7ovQDGDWUSqPiYgx5UQz/MlAiBUFvj9ZCB8edxW8/kRyJrhP9VnsLvDei0Az5vexV93JQ=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.02195f4.0_1563851728706_0.7982961445314976"},"_hasShrinkwrap":false},"0.0.0-canary.da2cfec.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.da2cfec.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.da2cfec.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.da2cfec.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.da2cfec.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.da2cfec.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.da2cfec.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-xmgT8M9QQbx6XSeaqgsqC/TdeFaMHsi2nk3IUJ+L6j0nYX342WKfLBN1Y3oI2e2N/DEuasirdScgeMxxqsDMeQ==","shasum":"d0de1d35046c0190073c0451108f5ec1000932d4","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.da2cfec.0.tgz","fileCount":12,"unpackedSize":9798,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdNzanCRA9TVsSAnZWagAA7pEP/A8cOouhFfDJlGiD9VDA\n5Hj/efyS1mAgzZ51UBhdcYQSBq2i/aMzynsLFTnvfsZsdVxskCr/Xkpulfe3\njHTQCs+yICk6AJWjsTP9KSvncQyBKIwIaUNWIGsU1Ml7btcuCFru3zEF8Uf/\npFz0ozLKhcU4IeYUxA+LVuHlir+O99767xrrHx2S5MRkLM5xzrqNPtHVJNcr\npM308dQs7Ie6Lddj2RPhFhdVTFByrygtURLDhozDUkPEst6WeuKP9c91f1Dn\nB3ZdE2woHkwxAT1a/vWxmWkUjMenu5sNUoFbeWEV2/u8PWKRfUQtLNf22ye0\n5YzhM8MNu3i6R+8PEqxvmQIB+Nm8J6EepMhFe6KoR07tOzQbwJtJtSxsyLFI\nliO8LbuvWZGUNOCGDlZQfFHnyUGcTRB1hIh4Er4ks688AhvQFHNcuKuse6wL\nf8/4JyDwIKAg88rpgquDW/1Jvo12ru1B+oBEoVmo1WPt9mHWNG5ge/XffFG9\niHsG6+eRL9z1RDOpzyqgmtr8gMxMrieOPeLJmprvMrsDxCjnWvB9r8QcyZFg\nx+eBOQjuvmW5OkwVMszy8fX5Htj8HJ7fguMYLAIA/3G8w8BhLu6PO3aqV58R\n4DAmCYnsrH+eprj1EN336dBCub0Ex0l94QFDqiVurrSR8UYTSJgF94W0k7vN\nNbfh\r\n=z/so\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEE2pkKNUuKJr8FCnvcUl0dY0WCMZZCFGSbgVl0CY9Y0AiB2W4stjcoQ2VrZzkq0PeWxPaJeuEEoQ+UgHcj5UHpG/A=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.da2cfec.0_1563899558730_0.5994631611945573"},"_hasShrinkwrap":false},"0.0.0-canary.14b4f0e.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.14b4f0e.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.14b4f0e.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.14b4f0e.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.14b4f0e.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.14b4f0e.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.14b4f0e.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-blmuKKfOgnmoUMokiXLoNSFdmefOACfibhYpFM2O+1wTsmsye9lGffRpOYHYDz5mZiI1FiEQgbsXD20OGE399Q==","shasum":"529925b5cc31ff20650bb690f3159a4f219abf3b","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.14b4f0e.0.tgz","fileCount":12,"unpackedSize":9798,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdN0WTCRA9TVsSAnZWagAA+CkQAJzKI2xz59dWCn4a2FXt\nOrOy32U8WSdWm/jJv/CWQzmhb2ZfSKxo0WxpbIzglofBP4xNeru5xudBe/cL\nE/Cmdr66zFpM36adX1KZM8ngKIhW3sCoG4kyXAr16b0701I2VvRjTnT90Bxg\ngZvMvtOkVXpskLCukfHynwXmDWNvg/TVgmbJyEqgL2oewY7BujOHqW3eo7Jm\nXIV/qQ4oDPAM1juPxnweFayztvqAdi5SDaJU83qlsDeCfAAPIXrxupL37BL2\nFsvbNhowAeY/Fre6ec5VH4FisuxM5J8wjYN5ra92TS6oLisqtATAk0gbFqGS\nA4U0TPR6+GLoewhWjDjHMCpFEoWF30IfbZUTEUVMcd+ZFKXuJ1Y3zMKcGvG3\nPKHJwqgodmZV/6U4dnIMNiQxJ7stBX9Gn9WqXyZYjx5JzFZO0LfnJHVlTpzy\nuvBQdNIarZWwdhrpBSC5oges6OxvA7lFA7UeTyEZlto8ZY+rQaJ+XNbXLGnU\nX8+ahp7Aq2px8pe8VEIKdEMLDp4Csg5xe6b+vLnGvUeJxUZTgbCL2BHO/VBY\nHO4RVAiSjqreIaoF1IDewkOxqUVDQIcE4faSYfY59EFBGx7LYE4NS1TiLe3J\naiO0JaCCgdg4fopOznD466/xadyDCZau1OWTDpYWmHXBQJx8Ebzv5xUrvvSf\nFee/\r\n=8l4V\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICoaQPEItsGBTAnrz/aVsukRa6ScwhQhjWsvRhLAivXdAiEA8yyBFe/k/NFDt593feb5W2c9v4zcqrSkMCkRyKtOa70="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.14b4f0e.0_1563903379225_0.5663947884027236"},"_hasShrinkwrap":false},"0.0.0-canary.0953f07.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.0953f07.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.0953f07.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.0953f07.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.0953f07.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.0953f07.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.0953f07.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-R5s6JKsPgPlz8eJ0DIQnywnkWmL1cRrgt5jzMYBYqKwJpyiX6f7El/4rnlLst+mEYZj0bTQJvo5VszyQvALNxA==","shasum":"3d84d5598870a652462fd06f55e61c4e404efe68","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.0953f07.0.tgz","fileCount":12,"unpackedSize":9798,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdN4CTCRA9TVsSAnZWagAAjigP/iQ8rDRbK8SCP5lqcRgo\nYXF4990viHkkhIinoAONMltdm5BNlByer8odnqWyV5EaQH2V4PgvigYUuTF+\nJ0lXUBexkQJH038ys6HC53si5bXwcL0cLvZYswO0T1E5SngU9ipDTLEHG4hD\nLmX9QhCF6M+VN5KZF9wMtL5PdNxAhsu7znhhfeZ0XDbMuhkJhRcQ7FwN7+e5\nudAyYarGO6ZsjMHIODnYCN12EbUBebdS53ZuTWEk4maE68gyvASOfCYvvKR+\nJHNrKAAOnvAkUQMLT0Edl4Y9r9/XIVZnfjJ30m2/dUCS7hv36heYTREwfJJZ\nkgh+puiYDGtfa5TuH/ml0K2PYVnEOOQuLBNjlkENE4pbutQpvZG1xjcj49eV\nOnPa4cuzFD4ulKfuZu5ZF3zmtY5EXpCDaCbBN/FzQZyap1oBkW/mqLXp+dT+\nwDvAIw6E8nMNi52usa9psD7WsoY/vaZlsQBzKgT34VisekMWnuup1RHDjVAd\n4jYBE5GoiVzMysSBuqsin/t+xN9WRqJr/9f1iTsBIEnUNAH9qyfIJH6rperd\n/hhs1aDRrafTB14AyigCjTruUfZcQP0GTV7lHpY/hBH/xkNvhD3Z5I5d2cu7\niyVXm/kCPGff3nf+t+zvuVmnt7XmoHXyoZqYslB//Wd/c5FQ5pI2S2RNlepb\nYidH\r\n=nbPO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID9uUvYW5SnmJ5acsA5g9A9GFAecsZQOIb7qhQYmCf8KAiBckXpIuHnboi3ucz+UGBaepIYi50/fSo+VtXo7FWQDug=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.0953f07.0_1563918483042_0.2962664250972671"},"_hasShrinkwrap":false},"0.0.0-canary.471a10b.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.471a10b.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.471a10b.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.471a10b.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.471a10b.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.471a10b.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.471a10b.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-hp6Lw2OV03Futk0+fmQcsOlzLrSeuigdbGcN09YcUVyt164BC0GWDUU5AZl0sCedQLjFtWSMatwBQiNSEtmnsw==","shasum":"3b83d32dc5193ebd672702132686fa5cfd07de6a","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.471a10b.0.tgz","fileCount":12,"unpackedSize":9798,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdOJD+CRA9TVsSAnZWagAAMa0P/2xLVvy2X7lxR6KpfGdt\nBLNnyCEdbbsBb4FpB8XHr3tHcdnlQLYqGFeaOujZI8XGoNWpO90nxQ4mMQ26\nk4n4I6PWlva0plq8TfU4dJkEZ+Wr+XYC8lbttSZpujdsheeE381F1YSedPmn\nKdFBNRm+h6olfKV9mQ3Wyo8HpfgL3tOkDpxHeTIDMD+wPz8QxPHZnyOz+dWi\n9bRu2KsuxHG862tH3ecKbwyV9V60IcvN11xn64YwFFVmVOkiNMTCL6iRGXQ7\ntzwAmHmtIMttl2Mfh6GBWCXyUl5Q+YSxZgiPEN53+ljOrY7CtAvleV+CsmE4\nmo5Eh+j6lpKhrCBepeMmu3nEdDbIPdm2NLRMF3bGkZSj6djrfs5SuQEIHL7a\nMwvnGUiCEyG2i6EF5SKL+tfPM9LTIdsKOdPo/22cNIe+xwpI5sUSu9PpsF+z\n4Waij3hs9TiqX2a3UJ7dB2mw+rFj8Uv4pBe1SZL3bH4/LOhin+WP0LnehoQ5\nkvojl8uGlUDbl4DaZbYDuiG61ZHgdC27OMKd43nUQq0s8Nd8+8uEppF10oxp\nf8xwUEcCKx3UCRSgwofvzkrmt49lbX5HPtkXjpI45olT8ZiWQX5acoBHdQ4q\njVqhr4tPrlTzEByqHsPURHh1vwCQg8BrZrtQV9QoBkQp621lDIO/zsgjqr96\nQVQd\r\n=6gMe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCESlhr/Eyla73F5Pbn9Mid3Ze6gM+km0dUJ07MUsS7tAIhAM2qGWGhsaOzCE26txo56STZzKPqDu0O0lYBga9W3yPg"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.471a10b.0_1563988221451_0.920833598636396"},"_hasShrinkwrap":false},"0.0.0-canary.9dc742c.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.9dc742c.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.9dc742c.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.9dc742c.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.9dc742c.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.9dc742c.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.9dc742c.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-2WwYAe68v407JsuVPPoRUc8AtepsC9BKoY67d63IYFbOBzj/qVhxU4lj8zR677P4vglmorfbKZuPtAQYjnQwbQ==","shasum":"3df4b148ee7648ae95a67c70d50cb078b074a76c","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.9dc742c.0.tgz","fileCount":12,"unpackedSize":9798,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdOJEtCRA9TVsSAnZWagAA7msQAIYlDEBhRFPY5gzBsiFx\n6Nnbx4Uuy9zj2KpQXwtOT+OsyFhEAFESf/MBTo/sK5G7IMZW/AO6um9cDRdR\nn8h6vLCFGHJ7zn83pjZXHZ/AJF1ZRl7dCqJEHowIoc2y1jtT6I/BasIRtet6\nM7NOCsbiDbeLIh3TQY3HZ5nMY1m+R2YWg4g81ZQa0r9fYPKQZwOAAKfwu3Wn\n881q08qxmWGkNdO4lcS8ZqkooxKJ/vMOdXDigx/peLtxJhAxWmxcxYsrL/Xf\nDBWC7Nl7jZ+MKoB+2P3TainieiICKRzw8cdLN3c2GuYdo1ECdVtVh/9VLHoI\nz4pg7gxv2C2xGAIDbsBhkE7rRL5PjNXUHjoNGL4+tGjwHLmBroqyKT/zlo9g\nwimeJN6eHb4kyzJSjhDBiSmQUzXgoqHtPE7+5RSfmdowbv4rBMVXArRWMmrR\nSeLdz4HCkDRjIEgPowoQ0zIUR0PEodmYXWcIvgh96UExg9ym7e273H33lrdv\n80D4+M0GUWXvFLx0IlHXLyAwJjNjNA4I9R3M7BslsMvLSrgD1ILe8VcIYZDb\n/vU9ZOQC9tXeBmgfPfJWSnY+CVP58k/BMMiL1iAsOPIGqjfRReu1LUFbbdy+\ngcK/j2wmM5kE38LbXeSSGnTPVjnUaVzk3h/GYrfralPQnONwln9oRBSmY5LW\nj+4c\r\n=wGrQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFD45F1NrftM51Mw1vYGPRnF+wux3fnzGjoqTag+6ipGAiEAwkAJ/+oIV1dU3nsoCIoeOI4VM0kjLxAzCB+DI04cve4="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.9dc742c.0_1563988268598_0.7797975397370862"},"_hasShrinkwrap":false},"0.0.0-canary.fbc7ca5.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.fbc7ca5.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.fbc7ca5.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.fbc7ca5.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.fbc7ca5.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.fbc7ca5.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.fbc7ca5.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-ZU9xzJVFPfP1r/kA3gTrzuaLOdb8jz3IL3T5sNYIMQG930nXsHc1tpluE2aWTBjqt2JfeSgmD4gaG2p79DvrnA==","shasum":"99a9fb91bd1c09ac31e5dd6385ae84bda16894c6","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.fbc7ca5.0.tgz","fileCount":12,"unpackedSize":9798,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdONFfCRA9TVsSAnZWagAAqk8P/0gCpGvwiDnEL7iIl9Wl\nIO+FaDEeOdgtNFb+sPmTQIVx/+pH4L/ERR/UVTtabP4rTLfmXhIfO+uUnbh0\nCL+85PZxMSLUzvKQ08CP+jUYHJg/C7r1JCfxU13UnposRv1Xkj29sjJlrMDY\nnoFwdNvyaxezZ2FOV6Cb6tuCZi7wsG7J9O4zfgyioakvY344L+cMcXo0NNks\n2MfcxfzCannGCUuvw0gfXMox+lKTH8PDS4335ZwSvkiySs5Nnut1WqnGMk1c\nf3scuQt8/70PG9Od4K5t528a1lGKd6Auy5QPb0xiKJ3gg6xngswVy43kXdjY\n/35MNGeoyZSwtZ7bSir3L4IBeCkpZ/cpnlFTIEe3Q17/CFO+emfTmnATe5uY\n9OHxZlQKYu9GERtbfwlez/rSiy1QsbgXaS1CYSQZlbCUz2QdOuHkjpctiSn/\nvrx78jjv5lsLZK8Jgp7yNRaKNka1L8+CR62Fzzk2W0+MskplPnYS0xxllvCy\nakWxiiZnXiVePVqNt09uq2NLloKH4Zsx/KvTTjwYwiVFOMgHmQeGZ7Vb03aQ\nKXqOWV2nAne3DPu000XNxXtq+mqam9V62ca5GRH3wla+SRgloo3LDBuXlDke\nHk6sIq7bvtH3HX4FR+2lk3oElyNcGZUBZMxMVrQa9j8SYHhXoalGoCWd8TeI\njAyj\r\n=sIQE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDWB5lL4YyuIXblMoGErj+61pvilDSyAj19l/zd0AYncAiAF2fQrlOR6FWfDfFVuQ8q/ogrtpKOX1vThiBzK2kX78Q=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.fbc7ca5.0_1564004703118_0.405895155220074"},"_hasShrinkwrap":false},"0.0.0-canary.08790d0.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.08790d0.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.08790d0.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.08790d0.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.08790d0.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.08790d0.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.08790d0.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-bSZHDqIvZSXCbuW7nbHEWoTPp4VJD0NfmQbJCznW8Yo2wRt4OFQGkKl/gnkAj2Pmsu3uaW69o/M/k0draVYf/Q==","shasum":"7021f76060ddfa7bc6394d68df131ee80525e56e","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.08790d0.0.tgz","fileCount":12,"unpackedSize":9798,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdOOG3CRA9TVsSAnZWagAAdHwP/1KYZvZhsAPEEWEUCugY\n8kLYFDxb1eG23jh2LygyS9vWG9k66L4DZfOvNTicWpEfzDEVZpLAO+XAb8nL\ntAnZpQndjVdhI6OVY0KFeJiwUvH9GYQ7CaJqiHYcT33qTgYizJT3bUjNTkXF\nQuGYQvVjOc30PAZcyUqWLqCjEhKqfRwznR7Lyo2791lowayLxGHKJ6ULkU+n\npynJqbA1iJCKQt/Otk2Dfw1Br1Rtf2lRgZzrJ2IQrOpVplabQhSRopTjcDFf\nubX3pRS2LTWbZg2gCZnzUFE4fggFSff/V3jr03/mPdgSm0rmgNT+Bmcvm5Fv\nUD8iSbHjHuC3PvvbSSNNd42oyOeGslQmmVyjO1gV1U3WHpkkXDlZZb7+tcr8\nLmjoZr3LJbzTOd1ZMtL+pham/76GGXmnAhrVTlZ5+2wWYseak/0XAMNn9CJw\n+LVAl8pm7Iwjpz0wETmwc3i4iF7DriNXBZ4W5lmkdFrpttAmZQ5mChLOZoNy\nVS8WMM8Leefog34SPbWJkr37vlxUKQRPb99DRazD0TPXXXR5mISCQI8DiHGe\nmhKGIgqnj6X4jPWYJR1AgSyZOH4fhmcYdQS5wfii/V25svx1x8HF/YZUrh0W\n6p09l2i4C+BKGkU8DYklppEyJT/3AsvOfaFAFw1TOAaFMEkBpln/eAfMTCqm\nQnFT\r\n=8xf6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICVAakPL8jJcq1VQ8EW1qz1FO7lxR9yp9rzu4oE4U2MnAiEAvhTqFsjxC8F4DU9+FRmZ7m4oowec4N/CpKoLMII+b9o="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.08790d0.0_1564008886844_0.6386101492041374"},"_hasShrinkwrap":false},"0.0.0-canary.17cfc1d.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.17cfc1d.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.17cfc1d.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.17cfc1d.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.17cfc1d.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.17cfc1d.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.17cfc1d.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-Z9oU0OLEYUwxTUTNhChLyGcrI68liTPhtd2I8MFPvhY0eEEqv/pjhPaY/YTtJREEQ+2b1Dashk69pncilUWEvQ==","shasum":"ce4ea68addc89ff45afff638077bc614f1139ab0","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.17cfc1d.0.tgz","fileCount":12,"unpackedSize":9798,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdOOHkCRA9TVsSAnZWagAAhXkP/1TRXC+UVtErvKDRprUO\nqkt3JwaHszK/jQARM0uYMtZ/MT7IgR0iuZzSzqi4oe4/nHHfNnpROzhl4eSz\nrpTz6ceYhQV9tbJY+emM70Y3vpFbyeNtXCB3xRjQUCb2X5Na0hc88Ha9WLz0\nsAVROCBUa4tmajQ+zjfMUOEEKi1EIqsl4q47pB4UstEoQq87cBVsXtohTE+s\nKeHUjaRJwG0HH/j+gtv8aZ6FGwzz3ZXzDAuckYG03WBQE3KVsHs6vjwvsYS0\nDc+2MbTR18BfqxTDwvf75cOFNw2hKBo3jDyLGn45ob01AeJMMbokF3aX6Bsk\n1RC45IE/nOoQ8EYIDyjfPw4OLgknh1zhYgPWlBxynU3dTzkQUiS3UKytAFku\neAzWcB3b+TeCvLkNybH3bLVtb1HvbeUxWBByftmULs6KEtrzmtL9HOg4wOBs\nSy63zlv6+RlBmpRgDeodKYQKKCMmLiK/lle03CWakZsRxe4HQbEkxXa8j9KO\n7AmcUgASjs5L946wLU3NYX2SuNrnYMrngSy5HeOTruAz7shNqYFUUm06m9sq\nlnBQSZg4YPv/OpukDh8HiEQo2dY9rPxpwzdcUSxeu1ur9q9Nu9xFufKjNUek\nb6LM49dtnjvpjj8cTrKR0bdD7AYvfQlV3DPBl4uEi32Nk58FYLXBmskpBJvg\nNqZ+\r\n=yCDf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDNFr2321ZsjoR0gUpz1LZf42+x5EV3ZKsK1MNh8MRUVwIgX6mwUcEZxx1wy5+n0YLc4MIZLdX9xPJj8nNS1dyaaOg="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.17cfc1d.0_1564008931635_0.9231932267894902"},"_hasShrinkwrap":false},"0.0.0-canary.d0e4cd8.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.d0e4cd8.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.d0e4cd8.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.d0e4cd8.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.d0e4cd8.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.d0e4cd8.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.d0e4cd8.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-puohb9I0t1cPzdu965FIWy5/B4nzwos4FGSLqk75tFXLMVE6MncIMfgeRplJx+Txp9ScdljNa2S9NfWLCfldUw==","shasum":"92849de35c380bec8854460f5c74b275fbc2ba7d","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.d0e4cd8.0.tgz","fileCount":12,"unpackedSize":9798,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdOOH4CRA9TVsSAnZWagAAtn0P/RQaVeTpImzcQuj9Dxqc\n2ABvj7t/oTLa5AZ4VSpteFOM5tSO2uWi+vDgnVXmuQJSGhSJzSIpHa6HVkRw\nXIimkZFEDQ8WRCGWnTVWhAD11yDXVfEAK5jQMjfdUElmXm5nBpGHu0vBS3q9\nu4DlO9Qmr4J2UtCpu0iMHwiAxgh5zLZoTdnHXQu2M2gv2EVWYWGSY66hKOmJ\n3OzeCpDLAOR9ZQm1dpZNe4tzDfLrjCN8mXMchFTnme3YOysasa0l5TtWwSM0\n0rPj0UY6X9S0qVnBh5Vozirl/Zf1HlRALzQMJGL0VYvkiwJJuCqQNVKvlssl\nslmyRWaZyndda3wNiiWQzo6LpzsRDLHylIicoCykWxQt793GMdya2yO6huJU\n/jz6v8Fh+Wz5JbG7Q9NrBoFh6GBO92oai7kfOvGTRxcLH4fzKXzd2Ob4w+73\ntZ6aUEUjjtd8VWfVTmHSz8ltBcb2zOJfnc7bwtZa0hcczD74uQdPJeMzn5+1\n8baM1byt7H4Ac08LCpIl0hwy4eguvIn/fOVrPKr3hi+3E+FmQJKbjImmu/Vx\nEEhFSOQzPXNOhUVdFw3gKsemgtFGZCKgTSAsSgjDFKq3FCVMsz7nn5+fpb4U\nldoIhx6UPuD+yZr5F6wTne0VR49cdDsjMi6FYV8hNb/zkpFbCE/4yiKy57OD\n1+YB\r\n=/bDA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAxjFWd6AsxzpMbPu6E30Tt4VrF9mYybY+zMH0o+j9bxAiEA8F/C6N53zHTldSld+iyqi6ZwhD7b9Az9bbQygkbrezo="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.d0e4cd8.0_1564008951521_0.06746263163050559"},"_hasShrinkwrap":false},"0.0.0-canary.6499178.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.6499178.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.6499178.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.6499178.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.6499178.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.6499178.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.6499178.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-IFmjbIM8tRUT3HXepEsw5T8Kfv5un0tZD+kwFFQIrzwGHS1H3AOAB/no0Y7I0SN+j51ehnbEarBwzXz9TVtkew==","shasum":"e37b04beb045c5563fe8f6b7a2e40c2e65e8bfe9","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.6499178.0.tgz","fileCount":12,"unpackedSize":9798,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdOP+FCRA9TVsSAnZWagAAm5EP/29F53d26Z1tv0pbglw8\nBmCXagtUh9lfXXO6tLPjsLh+BpT6fxlf2ae29UUZe4w3vfo8gQ3vCjnqq1kA\n5OgkrLPpdI25HJ9KCwkwH+VBeOvEmFdBTOWai8yQK3145Eun88pwZvMSFJ77\nMPcm++2bHEuda8AxKKWEbcM1jHOGki6o8s6m+VimJXJ3DTudXfu5+LbwynNV\nbUO6aQcDlwccqRx6DVVC6yKpV1flOrdXrXTbzekJJ6DzJdj34DlDjfJgeo/A\nP7a1pYzPuGDs90K7g8ch2eEqCdF3/mk+pUQOoaiwn1sNZX+I+DJqfH8Odm63\nhg2MrzZz5BG+f7sLhAiNcsBeyT1FjzXacyq9LhZqu1RR2lz6SiCEbfSND64n\n1yuMKaK2jJz8sw/vHM8XxWT9EZDlMni2J7+FB59os5tfCzu+knTpWF+Ny0kt\nywRxW+bwi417A0xvwkqU5wbvVS2lIAoSiQ7ZfD/9xVQZ7XBmmQ3eojDv4B/7\nRfSra3Sob1CuUUzmUGko9nOsgAzb+9fNRzc9eSF3BKTbjiswMe7bxsuwliEj\nu4hM2TPQvpd2liABQtt08xokjwWk7cc5DXltkgxzwhaF6ZKYghApu6kpPG09\ncGvHwVPysUi5VidgzSW+G7OsuPj42vbZKBGfR1azFwiZB5DimL3ZyrgxOqPC\nXov1\r\n=BBzi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFk9OPD5PVRgCehivpXK5gu5ZH/wTXg1T3RIQ3XtRPwnAiAzeRggNp5jElsFmsVGJQF2mjUu/p/psGK097Rprpi1/w=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.6499178.0_1564016517149_0.8828959141715593"},"_hasShrinkwrap":false},"0.0.0-canary.47d3251.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.47d3251.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.47d3251.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.47d3251.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.47d3251.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.47d3251.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.47d3251.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-Gg1Ssp5b44X/TZ0EA/8IZuUQDm/o0yL3F0EygHBlH9/1dlrHlKQdnqUyhXSulLScEmBENUsG5EV6IPDvZAyZiA==","shasum":"a1a4b599c7898463e1bbf99aac2466e32c3feeb3","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.47d3251.0.tgz","fileCount":12,"unpackedSize":9798,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdOUbfCRA9TVsSAnZWagAA1XUP/AvSWqunpfUgw00t4Q9i\nWi9FvaNG0OE5tZNFHcMJpSUgz/zEWu8eYevb7wJ2oi5dU0dWyBp2NuTXDwU8\nawRn+MFG45WD23sCJwK4iESaJLhVPcZn3JTN8qL9c2G1qeFwsv9zAFBjymxO\nCJgPdA5cyjw0jOTg9u2bsgnvp1Mxqevts2jKZ8vSY8amL9NjHVZpd9ErY/1/\nShV4ew/5peiNSc40M4OFsu0ZJbucQo06Iu0OxpmFA/+S30vPOoXGNogiXCQ1\nR0IjztDNSqy1MFw7Gd0xAxMGtosJ8K2W6dtnb+8AIgfw88hwT0fHPJbHA5rF\n4BbzSGPoSEcRQamb8s8u+ynBPIVTvc7lliXRbCHGkYfmNh9STE81bMZX5J6N\nFpw/QoXVmBicbGG4IfjpQ/4Kgaj1/n6GmBBj1rtqFNsDPP56OPm174/hX5Mj\noz3jzUCZKINZJxcE/3lZB37wYldKjNXV4hf11+l8NtJQXRKolZ7thThQj4dU\nCHxH+4H/XKKbOKYlzrhkEZzcPo8jSZhfccN/avMfreLQHGuiIU8Cwwg8mH5O\nI/xhU6qtlrq+qUtdZw0DZ6Yl3KLKS+nYWzu+fL/EogozUleR2mxBuaHYdZQz\neKI7f7jBgMcffPQQpWHT37CRPfBwlFf0WPwbIWx0wQV2/2l6BfTqkRNoTwdU\nQQ/B\r\n=CHiN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAIddyeXBWe6V7VPJVAqVAD9rKZ8XwdOt70Z/C6ZfDhFAiAGGDGHEjxh+EbM+wqz/DlYKpLX29dHOzQcWXB6V9/xtQ=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.47d3251.0_1564034783205_0.5146131875585922"},"_hasShrinkwrap":false},"0.0.0-canary.1b63aac.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.1b63aac.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.1b63aac.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.1b63aac.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.1b63aac.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.1b63aac.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.1b63aac.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-ZiEAl7yE3zcRCrHNnlDFGqr+tOFR+EVWF7MBo8LuAEmuvup6aaHoMgfNaxrlma65Iw6TDU/c4QQrkNFTsC1wpA==","shasum":"2cad7f36d6ed95509298ccef5d6ab57a1a345837","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.1b63aac.0.tgz","fileCount":12,"unpackedSize":9798,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdOhGOCRA9TVsSAnZWagAA5PcP/2+K6yWAjeXNMK0rmEDg\nnekZcv3EQjrL57Xb8BlrirPJX2bIpn2s7nDvdd0u+cAG/GdI3+S3jlYMOcsn\nUkUIxfg0wTEYSr6/8KbOK0n1KCsm6urbgmloRATWf8RbssQ2Ly4RCDaN1nnm\n/gSzFjztI1Swh4EnW08jF489vHddkS6635FcKyhAxiV2ZQ3qACQ2cGUcSmKc\n0QBBHALv/CDY2crrkLKh0zDcQyq25SweHHkIpAoyICTfA+pYH90Fvm/cYT9i\nIdPJovGuhhS0BIx6hsxjVjLSDHh69e+eDT0noY7YiSBt+n6uhkfVHA0K3Y7z\nivSS3RKKJwOTA9p7fcn4T/Zaqgp1nVva6+XJI/GEqZr3mqsSL+fIZ9ztJgOM\nuHJAuX1ytcYecAVTvnYbBWiE6fKKi82OqXsl3i89oepNcBuNgTFYMKEobrSr\nhzYbPINuf1RzjLgdzhOF4E80Huo0VmRxjKALBpCTVlTFR6t9H6Gw347LH+z2\n+sINm0Zbt5aouvvx5BEXoqw8eShv/FAf/hISKV8+pvSV/qJQY6P9KzoK7Udy\n5u1hDSde56JeBAr9j69N/FVsQrFj1dnoK0tIVR8vDU4y+HHO3eYWaTSI1dyo\n1sNWbWfyc7oL6/Owb3YyI/roAM+DX/UTJjeENQz3raPPvszsesk3AmBv/rH6\nPfTq\r\n=/TPP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICUHEvXgMyaNLNGiYK0OQYwpvuRy3GAM+p3meOIvYDwfAiAi9TpetWgros4ltZe1UROR67/uTTG3827eonL55BX18g=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.1b63aac.0_1564086669122_0.619567751844823"},"_hasShrinkwrap":false},"0.0.0-canary.675492e.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.675492e.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.675492e.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.675492e.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.675492e.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.675492e.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.675492e.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-XAkSL4ja0XHN0Mg+MosNieBf+s3LfeWONA1K4GIUhH1/9XG2eCiMn4kHls1WQjtxZNPFOj/BE79zM/s7g3oKIA==","shasum":"997ef49b5051e3ab0e8ea99999ebedc7e470f43a","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.675492e.0.tgz","fileCount":12,"unpackedSize":9798,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdOjAxCRA9TVsSAnZWagAAmg8QAI+lsNEI7sJY7qc0tfT7\nAanEO/L4R8X7cRQvcqxYqgmefhA5Z6g86ClYxNdX2SSPKldokpyguTGUGE3d\nTevUhiX+MqA05R/+/DIa7riBZMF7/ztzVJA8Z22sJX/UqPP5/ZS+DhrCP9I3\njaJLZWTR4zcwU6mBHm3T6XiVAfaDJsbXpTsQwaeRrjHP+yvtyHLmaMF0VA6P\nSyBG7F663nIK4QChnmPZ7hKBstMJ2C4blmq8KvTl6PvXV4Qtr4v0V15syeBb\nCW5dISkw/MLvzRupNTNBqP40o00qNFLRZR5ShDqR3rt1TdvxmdCeStRBkoTq\nQ/EmzVV/KZACJiTWRsmCaysuQNYCDXChmiVL/86loC5w/jdBPeYTc7sKax1C\nfmLIxcoHsgtNx/54CD4VV7Bje9MUhzHSR/FVn/V2cnKAHbNRqvwE4OpPg05o\ns2fDhtEtAoE0DWoikuy83kl5ZnqZaSmw5lKMLBk9U+6diViC9zbg8XyWlfuN\npwIYb5Gb2XYZSuMFaVZRYJv2kNBn3ZTXbN0sN3b9TcEpiypO9UioiWtDziwF\nJ68cMOTEDkimVMuNe/20vQ+4mEZtuUp5PnwvlDYcbZaTaOcBDei9iE1VzJpU\n18o07wqnxGRG5nQJu5pvxxxSLCAlgXtrwPRgHYMpcsYKzzslQpTM4jXZ3gXY\nGfmL\r\n=+Y44\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB5ZKjbweAfKE3+TWSBRYRaKHQQkZ64uI9EY1Z2yZ/S8AiEAjpYsLKXc9jJ6bTbxN4n/IhusXTBJd4gdwgq6bgYnTVY="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.675492e.0_1564094513093_0.24042112081813327"},"_hasShrinkwrap":false},"0.0.0-canary.a8af54e.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.a8af54e.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.a8af54e.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.a8af54e.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.a8af54e.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.a8af54e.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.a8af54e.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-Jb9GS1VXeCyJvR496JHNOqgZHhotQKeYHBh/7KIAQoaiz5WjgAcKrSwRWx4VQtWSSsRTHWzwjkLBB9XhZsMCCA==","shasum":"d250a0929cc5c8c67fe7e93a2d5cb67536c392f1","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.a8af54e.0.tgz","fileCount":12,"unpackedSize":9798,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdOm5CCRA9TVsSAnZWagAAzM4P/1IRt/buE0ymy33Psn5s\nAPCzTS+LGNT+AM9yr1STUJBq9XYueDCjcVz5pqI2lZ+g3o0qtHDOLGjxiDm3\nfSJmI0Unr+HQ/eCmR2zoFZJfNcbW2jk7JtvvyL4T5GuEu/sxfhswYmVNzKDt\ngdfHGpxAKqndTYqbzXLnaBKK2q2XHFR/iQmWgR4tflhrnlWCYvRIOtZRg+/D\nx4QN1j1+pVBr01x3XF+1uZ/eXuXJQJKq5+fb8B9/aGXAN6FT3XNSk7FAqUw5\nWtl+naftkFvzUmHU4v+/FWqEcwTRcz68op72AkFsEk+oqp50a2AUhEGNA3lG\nyotFsjNx6WnqNmKIhA9zVnXo57RyvlVqkJQDUPob1TDNa4yr3jhV8PiXU0IM\ng6cbEv3Ya3uwA7Mr9wVPXLcpaBj5OOOYUadmDu1a/iPHrnX884hHNOxlsqw4\nIqzyCaKiDtNjcR6iOoxekeGFC2NRmyhdfaMuKxezgegwpzAcje+15s+Ikj4c\ntc5sbgPP1N5Ro8zP9GibhAWojwiEECov+n/y2lntFOGp/r2N7n446m+Rokt1\ndjCPQhYJDyswWhBAxsqE7cnTNvugJ/KWDCFJo+3YRNoyefl/R4ZgwqBY4zAg\ndTaVPSMstjG3TyUKcJbOye2q95lvKJZGbI/XPncvSboRHU0NwuSbFlWsvoCO\noLLc\r\n=DQ2X\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBwoDDefidcioABun4sghjCYirHLirp/UDCGLmOSqQiSAiEA+Ex+EhGc84e3pQWpMOFKPdttzWtFh9u0Q2HzDtK4nQ8="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.a8af54e.0_1564110401702_0.5934818556067325"},"_hasShrinkwrap":false},"0.0.0-canary.4a47f03.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.4a47f03.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.4a47f03.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.4a47f03.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.4a47f03.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.4a47f03.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.4a47f03.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-xJqyFSLHgtUskaF0chNkBQPCvPzPThx0Db+tjJ/q9PJIAvjyQzLwhET++Zwnh8OuoHvsz2u9lfh/H77VFHNcPg==","shasum":"7595b74ee2ec4a43bcb5aaf0be54e6c1c6cf3965","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.4a47f03.0.tgz","fileCount":12,"unpackedSize":9798,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdO0kpCRA9TVsSAnZWagAA1xYP/R+LNR+P//DP/D7MF0uO\nlBxA/604FBigsCGCoWwdSbiARuGZWoo+V9UT7MD1P3QCl6Grqan4yEo1Risx\nJNIujbJBX9N0jcW8WUF1478GZ0CqENDt9uJJk+kxB1Rm1xUpk0pmU4M6GMeK\nRRIbWPf6v+oVoMTo7Hx5ZuEKU5+Ponnn+DgMCuJ9cnCUyL+dgmZxsbR7yiMT\nc9BpBnkjQh/IRUuFWAQCnwz663Yc+S2g5zv21pestk2ccYuJLuEz3bpx3GEF\n7luHFOZvR+gvI9PVE9Btf3PTaaowp0OXXaltOWatIgHnrSda3+PVzxGR8/wJ\nL1NIFhBFWywhjWTvx2SW+44wC62a/pzvrcj5LDO108v56n23qpAEHHMG7a9D\nL2IdnXogmFVeT6BESvD5xnysh25MEuLevoaLFwutzigC1IdLCcitrCjP+Fc3\nfvEACB8yzQ2Q+DcKnIur06XMN8BaHi+bFtDRwj8L8XbUwWJ2ApFShcGGH+v4\nJk/U9OoYhza4xTWdMo8QuL4c6xaETunPb8MAr1fuN0eOZWRokFEmSviGcdyE\nUfDZLH37KOeZCUMdPKTm5V41hfD+rVx+J1ypJWzsjIhD2Is9laVLRt9zkHEX\nz0DTvd/kBvh5rPE7+E9UIpHqZLB3qHBGT866KV1/CWN25rjvssnS5HIXX88T\n1rJP\r\n=dpC3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCInL7OtDhxJJTEJYOy4Q3dZ3BgXIvylvD2PbqEcDyEPAIhAO/wre0x/mMR4GBxsEv4ot4Ld2UdfF+CYF6nT8ZShPKB"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.4a47f03.0_1564166440426_0.7440440020798837"},"_hasShrinkwrap":false},"0.0.0-canary.88403d8.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.88403d8.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.88403d8.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.88403d8.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.88403d8.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.88403d8.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.88403d8.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-VA0m5pHI0/YrWXobc5vH7sZF9z0x1IVMR49QHBmPvBBSUnlyLgOos5QtpU3WkKKf1ZN3RBeb7Tf4nx+r+JbJIA==","shasum":"20be776dc98e3a4f729e549a6bea4b436a57f8d5","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.88403d8.0.tgz","fileCount":12,"unpackedSize":9798,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdQNjVCRA9TVsSAnZWagAAtIMP/1lr++4OL/Is3cmyXdUA\n24WfYURLiMGylHHz4s9Z3wXhWSxwyP2iR9V5ewuYGqQMr7znCbAHJHL/r08Y\nJjnC2NvProafVifNOL7cR9UrkoiN1V4GZv7/uNc0UCquX1SPCdI2yR7LTJTh\nr8GmpCtTrOqYhDd3WaIvVUQCJJjxwFmh50y8zJ/h8lwvWRcvwd9Ng9sDvRTz\ng94gUIzGi0Mk6M9tn85i+NA/z/0WPYZmY1veTqR+uyZnNg2kvnheKqy4Iola\nXbfIsFDSsBwmIaUGxaEMaGK76bkvZqxERiISHD0j470DAcE5TZL9L45S3R/g\nSTusC/henrdNsSnG3ZGX9/ugr+MHdL95HUafPwB8zFysx49a+L3x4ZDkb7Gz\n4kQmt8669AFZ6dMTjJFTRVo44hF/sgq5GkOIBwHmK+v2Sgd3Gngi3gxE4AUe\nE9P2WMMvT+3hsZCur1eWRwpVEUGW72jAbJ2fmgh1dZ/AV4hkq0fA0D+/wTAW\nCMAhgIEvMnT8NahFMxfgffheK0YL7GYDjmwDZ6BdIvC/Sy3uzuDWc5u/SL9H\nx7TcQ2+VVdDj8YfNYG6grLXC2TM989PtDxe8foTdILWvg/IQDprNt6tLyomK\na20siT3AeV3sWB4CjGhD7pP5uyAQPBbI9VT1dK5ND/9EjghsNgmuNCe2fkrz\npxo9\r\n=jvy1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQClpnFtvSkTk6RJyXMvlLDAJ7Q7jutwoJYkDjf+rtH5kQIhAOBFxTW/H/I/Jf+unkrjnb6diO4BJZA6bIKOpAVPkSl+"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.88403d8.0_1564530900664_0.6883507428264586"},"_hasShrinkwrap":false},"0.0.0-canary.96b08c1.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.96b08c1.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.96b08c1.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.96b08c1.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.96b08c1.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.96b08c1.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.96b08c1.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-3ruojpfbyGFr3GMGNt1X/dCqe5IXAcUNFcDhjjqaoSv87PXtTVKZgl0ClRQxkDf/fdhn+FhKkz52rlvqOrWQsg==","shasum":"bf3e9d3dc383bd6b0ccc5cea04ffc3e9d403c1d7","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.96b08c1.0.tgz","fileCount":12,"unpackedSize":9798,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdQfuqCRA9TVsSAnZWagAAAXQQAJixY0sMs7W2/p5S/qcy\nzG6DCOjTCJHteG9cMxzCoTnjz4R1dauJmuZVbPr5oiuZlTcbBcWJ8/oQWTlk\nQupvoBxPEhXslEa5hyXyBkzmI1w1bMYaqw/DzhRZMGTw+hK48ICPiXlDX6dk\nOsCp5XDJJFO3/5psI9zn0zKLYnEzwSA3C0SLJADwHOUFLTLxvdBd3N3gykuF\nwwSA1arj8r4SvuiT2HlnqRzMYVhb3ZjaDOFonMKj7PKmO5o1hZwIF78o2tJc\nWjAoYm5ocIWGk4Zsh0zFHBlzUACJXkQgf8UseHZRfnXdCnxOIgZN4EaZ6eub\n1AOYIVeOznl2JHz6xirUaB4Xwqm7PRi3jp8fpJ8SSZIXpCsvBzvMJs2eaevO\nsTmnUl1EqcKFuVRV9ep2eZrwRCqudNEMdW9H7Sxmi88T2q3SQ6xv2uNOIifZ\ndunSbEeTF7Jzpv503jO2KNJoA5Lmw06VNy5ftRCUVVGaKvrGGlY9qZ6ANv/e\n4DUX9iBkMmGbvwQ0tPKjdY9fPH1AzAKfHBn9KAc1+Vtda4GpbTgXZXknjJJ+\nO9h+iNuhp8F2W8FPhV1Zwbaf3Xt30ShySbfGdnM25p2fHUR389G0mL1/dkaK\ndfgCjCY27lYlSXcv5QE5UN7QSRuUfuGqcqqBYw7FDNFYRVXGbMhCzE0VSg0m\neUwt\r\n=1lqx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBfZLR1DloThYNY0TtXm3Sq9w0Si1tCI/yIgBSSftPrhAiEA7KKJ+RJbGl00tF1w6LlFgua1tN0jJ21Y7lYV39YXrD0="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.96b08c1.0_1564605353498_0.8875989019216282"},"_hasShrinkwrap":false},"0.0.0-canary.631e52a.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.631e52a.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.631e52a.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.631e52a.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.631e52a.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.631e52a.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.631e52a.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-q5JN7B7g2BXvub9sDiqFBJ/k52+oYF+hrQjofrtMSiRkcjCWtZhlr9UCx1ysrzav2gPDvz2UB/i3mCPoJTICjA==","shasum":"296c9ab90c2e1fa9abf4c7a8e64ad77c019891af","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.631e52a.0.tgz","fileCount":12,"unpackedSize":9798,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdQw7JCRA9TVsSAnZWagAA4Z8P/0DUF9MnARjQ94zWpf6q\nrSpcrsW34fcEHnpEDyYouopbaBdzEpumAummOtNN0h4zY8UU8TvWYH1/7iE2\nXm8zVutdzRN3caY9g1kyJumsHFYjLEL3sqDoTtGC6rGT2tSs1qbVlGVO39Ww\n7QJVcV9vKpK3nPBauMpwRyZNkpxfc/jQFs5nbZjPrCHxLgA9WLBgBLN/1+WO\nNV/LCSC69zQ8MXDrgRX8S9VJ2gL2QjNNI67KmiDovrFcYa9fXhmkAOfqnm+/\nFMuqeOpdxM+AaI8zN99/vllOfpfGn5AYK2AKmLey1sZy+EuEc4gdTBTP0KmA\n0dECWIWjbsulGLB5qpIqTtFfBHp0BjKNWfVpZVmnphCmyXwDIhmjFsZokVsp\nAMzHsotgOfIklGBYyzwNDVKXJNJzk7cSI//W16g864JbddP39JVHa2zh6gGs\n98nQHLtm/4v07tw+0IHitKY6xO8oi0JiF5wX0oXoBmu+CLHW0ZGM1Ropi3Cq\nqxoSbtQKmQeknRgxj4oNOJmuJ2UFjDLx7Tj8Bm9eH1x1/01geIjVsvWwJZKe\nQfknnpxm17Ehb/4lrcq/dQcrm9G7QjPHiqVs6yw4u4NzSGH+CzPjIHI05fPr\n4pMzX2sqOqh8J+6hcWiozQ1y5GuUhLTfCSFw7kSVecGU8y0grXg6bng6s9dV\nO4Vp\r\n=GZ8T\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+XzezfZs07vyVB/PK6ZYDCkLQP0K1ohwaVcxazKZ2XAIhALw6TOL+c7wKxA4wYiN54RoXuJpFUEqtBYk8Bv1FwzU8"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.631e52a.0_1564675784844_0.07651941470701962"},"_hasShrinkwrap":false},"2.0.3":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"2.0.3","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.2","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"2.0.3","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"2.0.3"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-2.0.3.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@2.0.3","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-8yQ9aIUM9M0lV05TqwVv9rnanzoRUJSaIoQg5URzxWSBVL3VlXhRXR12hxsYOFRhU4xKMzRVTnPvrbFn6o69dA==","shasum":"9d9e67543e15993ba35e87f85a8b13a00ea330c8","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-2.0.3.tgz","fileCount":12,"unpackedSize":9730,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdQyj8CRA9TVsSAnZWagAAbn8P/Riuv34UcjEHNrHUJ05Q\nS2P76XF9EZ5kTuHdK0klZoYdNRbkoVjz1WRLNCggFNVz3O1INNAu2KYf0GFI\nXNv2w42Fl7d6S0FKu0Xu9BaWqlnS1vpCAMV/zY2cps1AJJfuJ4BquYm9cmzB\nKfzfUCi8oA9Wh2GwWiRo7z1do1/OgLLENi0ZVAlrgNBAk+iMWiJ+0xXwDMbC\nZx2d2TqYQLpLi5ZYbztLnqZF/RIl9vWylTPZZeW22Cq7tkurhHMIeH8hdX0O\n0oW+cLnPng+lclwH+Lfo09Xn13VA7tQbCZGbR/BtJyo05FkyhVT1ilkOdTc6\njrYAcSTbRaNxGyT4PdvES2tcNIpGby0/HE5C6/4lC/AW3T0QM7fDnjSAnJEt\nM364CpWeS5RBjfj039awZLnjia84yB3FqU02Yhfejk8nADmakunCCNb7fqrd\nZuFkKfPNWzUXNUGB/V72FZQ4KURkgI+9WI2WLtHejdDnvdcJQkmwFIhCjaqu\nKokDWB6+VvjTCE1EGKfIOXHRE5umme9nLSAr9uG97lznAkvCOPwKxFfM+FRj\nglcsW4Ao50ueD30YnPMf7R1P+Jd1Shocj6RPWZAjyWrEu3jAB3riKKGWrPvE\nMnvpfeEhLVsCAfNB4Uu3XE3nG5nB4wD6Ba6IcWkxpnvGuHs45TPdeH93Wwpd\nZtbm\r\n=UOnV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDcdsjjFaSs8JAaUH/pAdbNB/VyUOUiXi1EXDwjbHrdigIgOpjtNz/NS5CqARKv3W/TkP103Z8rJoNJmDUJ3Lu3TTY="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_2.0.3_1564682491864_0.10198759966169524"},"_hasShrinkwrap":false},"0.0.0-canary.bdd94ac.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.bdd94ac.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.bdd94ac.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.bdd94ac.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.bdd94ac.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.bdd94ac.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.bdd94ac.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-P25zLqmEZ9eGIhROJOJcO8PcMg0eVjq+16OorX25tQy4P/auBJLqZriTc2U6gPKWwkWX9aw1JwaEQfZDjwxRYA==","shasum":"ebdf882b63dece25930a2ec2fa3ac2c1d8d05871","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.bdd94ac.0.tgz","fileCount":12,"unpackedSize":9798,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdQzByCRA9TVsSAnZWagAALDIQAIZtIYbNq4AxCDXKebpo\nqwGV0Zg1UaCPZhkip8evjrg00fMv6OZXJZfsSPSp9S1MLGEMegjfplsjAEz7\n9NPjd+7jx3d4RAiivYbfqooSozPUsN7fYW1jREDn3E5SpCt1XDV1gobHTt1C\nHy3LQXsdK8LIWvVUuiTq33EVFFBjB4GghyIGIABlfJ7ehKE4jticnPUnDj1k\n0sK7paKp4wE48dsAgONK3rWMxtC5OSYAVYAn2xOOqaxlfqZiR0AtHhAIvxYk\nH8CG4ssj2BvcFD6wwMOrohBj3un2hrtpWb6ns8Vc39u0i0xr/XvurzEFMWoQ\nj/GpegGgEVjSLZ7xkvCBBp0WlQ+gSGDCa8+z+8Ulyxqlf5onBh9THMBaN5oX\nXTOymumNmtZpGn1s41+dc/VFmYCPJZ2sf8TjpAtu0msQyiV1yvz8KtC1zXsq\nBStA9xonUi670SSyOiCst+yt61tdtcF/bMPWib/jFdcoeALUAHPTmpT7KRWS\nSmA/H1CSAW+ryy1f/ynhMBU1fn4KbBnf9DVN22uiBlh8r61q1XRcOvfL1U8y\nBRM+rItADC86PIfto5B5ddS03RzyHpvfLT3zsou/14FjH0DR0ZUrow7Ui1LK\nwXVbRwhCViYs3XPW42QJfqgmnGyv1qKO5dMysUKQgH0SDm3AjtmwJUSShETT\nEzVs\r\n=SAcu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFBxmWnY484YLADPCubL01jojtcOjyOuo1e0VH6A7TOsAiAG+4zb4Bfc8Un19dAgeAKMbAvr16Ll5CtZhuleOb5L1w=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.bdd94ac.0_1564684402098_0.9334879512785359"},"_hasShrinkwrap":false},"0.0.0-canary.ca9c1e7.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.ca9c1e7.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.2","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.ca9c1e7.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.ca9c1e7.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.ca9c1e7.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.ca9c1e7.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-nYdpr67RuhMYilPr3HON/mNQ9jxQid2IDZe/gAIEnPFnSl3EqdyTsQrhEZqy2BmHJJ7ULi8g3n9kSDXUhktBBg==","shasum":"60250a95b44f866262b007ac833f207e56dd217c","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.ca9c1e7.0.tgz","fileCount":12,"unpackedSize":9781,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdRInnCRA9TVsSAnZWagAAPtwP/3ue8pHokXkdOgAubPiW\nj0eJM/wG263dU4QMllk66EqpGLHkq/0b/UzFBYgRIb4jfGqdH6LnTm+0YRB4\nKilNm6uwaxoAbz2H/Rvj/fBxta7vJLa8u5UHJxHy5azHp7k4xCUgdAElo87J\n+WA4zoCUt9LScirYFqlxqAU84J+Y6RUbdMYp+EI6JSXMg5RY764cboGQa2HR\nsmVxrYo3hGzUaki3T1YX0wc291ybs3OZfnhr3ciFvQ0Xen/JQh7ujcydktDM\n4HyGStSfhMh1kzbbQ9l7Xmf1nNfZ92+JhLWoCl6/dvR1yN5eSaD7tYL91nPs\nziivxykU3b5iXYWz07+FQ2CXHZ9Y4PB67gtuRq/gerEKZPhgmtIn4mznZr8G\n+y2xItx7qtK6cGAvnWWFaek6+1Z9heaU5Yf1Hf5YQh+TEtoaAJBksJ5H8gQ5\nvgBGbWqzuHE/MH5215lnDZJhIMJjtuUiW+SBOOgX18kzAxvCmjG2YhhmrXoy\nF71C8YRP7n0X6HL0SC4cAgyux/gCYj2IAn6UQylwMY9yhZ+5MVqbS+6EJkIq\nJwuq9wfpMD1hMicEuLzlxygZ6Olq73ns5TFD9nhof9JN6iB335wTRR7b5JuY\ni88X/RAqThJMQTSTYj77OPrQjF4Moa+zE3typlU6RFa0KlLhJBhE5tumf4pa\nNuIh\r\n=Pztk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEVcrBYncuSRWePInEAQZBsRUeQHJF6m7dlS5bwmQmjVAiBPAsW83VshfBwy4qg6kyAWO2Enftrtk5KaO2pi45+c0g=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.ca9c1e7.0_1564772838038_0.5205736704808261"},"_hasShrinkwrap":false},"0.0.0-canary.36c6897.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.36c6897.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.2","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.36c6897.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.36c6897.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.36c6897.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.36c6897.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-sdxY5DpJUNHN7C8Nq8SyItl9jiWKFFT4lKwiC0UIP2OnSWWMX+cdigdg9su4foU+Cm+zi6vel5dLF02EdU7y0g==","shasum":"ac4e21da5721f26c5a67eddaa6055611d5a7ce76","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.36c6897.0.tgz","fileCount":12,"unpackedSize":9781,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdSIy2CRA9TVsSAnZWagAA+dgQAKCUhAJI/w1ER/3Fp/0p\ndtHcKHbvWFTVoRtRfRY6uubVQ2BsKdREEkSadro+qNbn/XECOLtB1jB3b0av\n8bWgiQjZUw3W1dV2ifXUVni+GkwPilLqDM4LHo2SRYMNp8mVKhmGvvh5+PV9\nJCPFTEj8CttFR5cKqrPxhFcYal/8CFwes0AbUmkNEHcvn0RAkL+Dkwt6gISJ\nYf5tn1arq/PFBBfHflQi9OVaTaatEoGSIS5ArBI3NyawhoixuLWYcBLv4YiH\nxcfZfpCDYkfLeDsV/V+bBxxz82Tu7QH78C13hMRyfkNen1L7s+IayYYodRAz\ndLlaHvyUgJvT/p/pP97WC/c3I20b9sE8bgLT7vhZDsEJAe56R7+coGB8PAec\nv7pUmnm2JD4XOUWQ2gVSmeR48/8ggJnqWxS2z0BNlfaWESeRc4T3D0tMDbzN\n6aL/TBUDOjaX1PRi6RESs0f52KPFzhPG0bxMJ38rMMD1upbIX+9dPUVC2FP3\n4iS2or/+Hxv53+Nz8Z291Fa9B0NFsPHJe1hde5fKDafGQr1fS+dydh0IpnSZ\nCok1gynm2+9ILCm7lhn3fcFvXjri7Kv8lQ6I/4XeJVIS8JYoXbvqwph28tIa\nlsFcKRja8mZI+d8BfjbXZXE68Z9jBgauKdslI+d5WtxidoZn+KR5oT5LszgX\nayZS\r\n=or+w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC9nGlhq9u+K+A4jLQ+zEtas0ceBLposEFVJQFzp6M5CwIhAIlAyzg+dkclNngMqiF2aTa3fkpPfZwM/Si64lr771pE"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.36c6897.0_1565035701453_0.8272545235970326"},"_hasShrinkwrap":false},"0.0.0-canary.87693bb.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.87693bb.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.2","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.87693bb.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.87693bb.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.87693bb.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.87693bb.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-4v5Wxep+YcUeyQPFgFoJN5KvMJW1nbLvX4oSOC5kqlAoKbcjls12oDk13osXZYqOrwYMEPGl7LUXaPMiKloblQ==","shasum":"df471a15559816909a2696ceeaf82090e8d5f084","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.87693bb.0.tgz","fileCount":12,"unpackedSize":9781,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdSb+VCRA9TVsSAnZWagAACgAP/ipciB7yT6LYwhyEL2Cn\ni1LtWMtK0DY+1Vlvffwv4fLIdK1wKDIOuVsp5UTZriRlH3p8cihALBIAM7j6\n7AQjXa+Aatc+zD98zetKrQMRvggfK2hPOdoLGOw/YMp4C8BROh08/aSXShdy\nr3H3P0Qj9njq0Q5ajKuyOUZwtubH2UKQXEUIQ8ybUbdQ5kQHnh9/1uMuBmyB\nIKSDHdNlQbPf4ZkTLFid4qp7yufR2tHMW913IYGuiSaoTgf1HB4o+wtrvnXI\nvuWZ+iZqCMAy/eK6gP/14+CcLDGmN8YteI+vuIJv9++0woV7MML7G+H9mfhw\nkgTP1TNOU/apfW5/8qi9QTpytojBH+Ii0wd84FkPjhvFX4ML78WQHtedJmbI\nBrYLzX4KLOtg3tmLfkbDXRtdCFL+PEgSJ/mIkd5vSEHguvpJcrhQXiqUHFC3\nJI9zKN9Hl9M/sBHqAElm6ay4l4GvKL53vbbby7kBtXK6onQ7HhCQhppqu43I\n2L5DpBz5xh8cHb6rpNckC5iLXcw+/GbVhPrgnIz1K9snwnElNpGk03pmaV/T\nd3HvSfqUijQt363VemH2TUTotQyhpIBHmSanJC2SIfYZxUkMV66ewhrcOn2x\ngoBLeuqt0B8h/fKnR3CMz/zf5RPWci/+dDzqUQnMUv7l7VV8jOIZpqwz+ME/\n8xb/\r\n=Nnxb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC8GP+SZySaXEMFuQZ0Vg71oWezF5jFGhj4d0lVBki0YAiAKw2LzqHCNJ4QvjScmcXCCgeHCpr6fJtDFzSmXe+L8kA=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.87693bb.0_1565114260951_0.45452444273452874"},"_hasShrinkwrap":false},"0.0.0-canary.87693bb.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.87693bb.1","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.2","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.87693bb.1","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.87693bb.1"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.87693bb.1.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.87693bb.1","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-0KLIlD/jtXVBph5CE5GkBaozwRRUrmHHcg9a4HjO69Iqt+zexxawNo3L6KrDltt3anjESrYQRbwnoq+lnz5TGg==","shasum":"7de503748e00209028f04586a303c7e138477bcb","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.87693bb.1.tgz","fileCount":12,"unpackedSize":9781,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdSb+9CRA9TVsSAnZWagAAq/YP/0vQZqXhH39USElKiZQ+\nCrJNEneSaFi8PDHs39MRRWJ/8Q5ANyNXiBwwMNL7q/BBHvXL3imWpdS+//Yf\n+4hCWkq/ntB4EunEwrb6I2jhrOpvYy/X47lQnNpBpiQArMnnF94VfErHYxna\npeDGBl9SGGz606QrZSTALTYZFPZn/GsGZqnPyX9Ibqc3wbqoQgD+x/7h3f2Q\nrEyTmSkULwBSl/48XFeiFBao1BQB6lPJJLRcDzWA7dtM/vDhaXdCnEjroK/Y\nwnArCImBeCOQuA6BiIAcqRecy+WF8z+6XyBWOIjKC4JmGtmT90vzVs8atMUF\nrdsAi63TJquamik9fR1rFJ0syWlZ6e4cJmGcz4t1ekfA/DuVo/ovQSjLC0p/\n13d56Cg3lFFMlkRtSkym+mCj+b76lEUgnOVIL5oubkt9HvkRMmog3ytHG5eA\nYe4klyI7xjS8zfY8CNIVgsKcRmkbZA6QyUMLCzjrk2NQvYI1KhJ2vump/SZV\nRRhcLFR6xUTSjNbzBvfsx3tfHR9wJZBsSJiPqQ/80gKuAmOCmrNq87MQQ+Co\nHPsFAHBXegVCZYZ8zib95geTtywn4j4tGQznXYQH+aU2u2kKXoYjIBzqhIbT\nUs84pndhgfK8XyB1Txr2U+mEgQZNnp6mhrB99iXRQlgBbCJFmLijkG70TY1u\npb5N\r\n=ymE5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB1CRoBxlnEi8flwoN576LwsSmTL3zmDx66sKuEaLx5JAiEAibwzcxlZkVERCuQz9c6HODz2CUOA8Qyd5fSl1VaMkWA="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.87693bb.1_1565114300611_0.6424373283643103"},"_hasShrinkwrap":false},"0.0.0-canary.73b3b7a.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.73b3b7a.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.2","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.73b3b7a.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.73b3b7a.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.73b3b7a.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.73b3b7a.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-hKKLyMen1DhGmVJxk0a6fe3LSNz8OScH+/jbNuomb6Gmg81aZctR/0lsCOp5vhZgTaKVTBVVi41Hnxb71qzzQg==","shasum":"e5b4a77055dd70db59daf6c6783c4af06db29af7","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.73b3b7a.0.tgz","fileCount":12,"unpackedSize":9781,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdSevFCRA9TVsSAnZWagAAxnsP/00aetflAzXjnHjVjJvW\nu6hRm9kngL7QyNdy74WsvBLHUYClymliWOMHqNNVbBlNqM3DtjIeZLj7zsH7\n2jqrKhiKbaJiTlOmsiTDk+yo5Sk8SsugBB9vqx4es1daLieot/RT9GaqneBj\n+yPpsXhwK5gN7VV6MOSFFhJ/L6RShW3O2jHzMPgoC39dT/XJ4Knu4x7Xcjp9\nI2N78SGI1kdxapp4+lNcqPrEaCzRHtX5oggQKdMXGhrnGq9cUYeLB0Mg74Yv\nSsx0F0NIZqjOBhl1sMuFnDNyKmxsd1FO36w9Vr/Qg8+rH2Gl76+8UQmHp4i1\nHFkJ6es2Q0mVYiAhURYGl4QC/uuGGFID9snbh0FT82g41OF7gGkJTVvFmuf/\nRvjy48w3yY/nOIpp7lQwMViPwIZXGITeV3QKoAF2r+lIEY2uC3vRbsCAxJer\n/F92NEXGWY/dmnc+WMYEUdeFMUAfnqjq3NJJ9FMW8yjrZb7bozmrfjfIIFzZ\n31SO1N8ommfyHTrWA1/tTebow0sRURt1+qAAK/SrCxs9YP458BgRCs+3NEw5\nMxAmWrjcp9HwO0xNgE3Asbl5geIWmNDH67ynIY6X1P5SJKv3hlGOYIcdZ6i+\ngc8gV8S+HuFiZcnm1AVRC7m4tB8SaWcEa4upcibq7Ngs7h/NbHWlClBM2Isd\nNvok\r\n=2naw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC/7xjuLlFYCtt0pYYrGs43RQpYFmvsL1/ydbZzansOVAIhAOpru7gncMt0+lTr2fwzLbD6z+cZCgkA1WjaysLPiZQX"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.73b3b7a.0_1565125572929_0.14434951092817427"},"_hasShrinkwrap":false},"0.0.0-canary.3a6c203.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.3a6c203.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.2","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.3a6c203.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.3a6c203.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.3a6c203.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.3a6c203.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-+PjzNfEThc9/a/ZuYIVgdJRm+9urX/mCIH5KlsVC6OcXJflb6GtA0IriuDaY2qGH3Hi1oNLTEZ44t3HQa8bhBw==","shasum":"db0a2ced9e52a8d64ff76ba718ed6c2e1b619451","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.3a6c203.0.tgz","fileCount":12,"unpackedSize":9781,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdSf0OCRA9TVsSAnZWagAAIIcP/jimcJEdYe/1a9Gurki3\nEJ67lVewZPAQU2JwzLo6HNO4OzwAJnbH2kaz0JPI5Ghae+iWrXk3uoEXDR+f\n5Be3QGI6HesNUZkx/78tCPxs8KTX95QUBQtN96srDKY7vbV7fFx3P9V7wKmK\nE/54SSVH+GyijQ99faHURoZLnfR+YTS2V3QwkAiFeW4kltNhVezQ+ZpwJ0dg\noeM7A9ZlXFqPaH90qQyTegasiKqho2H1gm42mH5gcIZ3kCZdmxMz+PU5VQL7\nmQ1EtjRIl7OV8POTqX/g2Rcv4ktOpIPb31GpYdW5jBlsBN9GzhCzKOfOMIOZ\n563uPy5q5A0deUvG+K3WZKKgPZNCklgEB+ospcLd4l6VjhdtuO3lPt/7hp1o\n0Y9rCIyhGD0+7uP2aPcqOURP5yAjPGOfQf/ESfgBGwWmc2qwZlRdqyb4qh3T\nXEu1pz9Qu3zghKZ1kv8Kvo6Ce69ecQOrJ1jgnZMMUg6OMlAQcgK/x0oLlqzm\n/Oxmu2/ZAnxh3uhKuZ0cwLO6f9xHREr+7ItfGREGsdd3SUKIQfW4QHr1CWqv\nSveK55D+buYapcTq7d5HCOFK9fOGGqj5fuSJz1PzillSnK7TvwW8Tk720H78\ngurFmOqAcsluPq6sR5K/4jUd5CfD4NIjT4rIOGXVisgWr0B9Dtq2F+nq2Vai\nqJJN\r\n=Gbhh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDknItOVDXPLdItOFcT8+jnqvCo4afa/dqYMyEDnHEcuAiEAss9yaeDUcmdFrNH/tQj1iehuaB2IjrxU7OXDTLRllfw="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.3a6c203.0_1565129998326_0.7805248890261816"},"_hasShrinkwrap":false},"0.0.0-canary.b30cfc9.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.b30cfc9.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.2","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.b30cfc9.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.b30cfc9.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.b30cfc9.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.b30cfc9.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-H4Ks82Vv5VJmBsfEyNY9sK4v+MEetvk5hkFobBvijkinwva4DiQXw5VYUakOcPoVj0gNtcv+YB4SpRqtufeG5g==","shasum":"11db36f5260ce2b20104b9b2df4211be966ce501","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.b30cfc9.0.tgz","fileCount":12,"unpackedSize":9781,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdSgigCRA9TVsSAnZWagAAMHUP/2fS/It2IM9DIV1Dc6yX\niul6xDHm/oDbmqpI8bwdBp7IrfjhC5YAVP+P0Am/oxP5589hGSrVDKMBi2dA\n17SKWddoDH+iwsvqILg2gVdba3pJqT88nrJcJ3n+TFP8itZSLjRswW1B2y2p\nhmjEguWB3RGDt/Qjz9h2hSPIa+M+xypiLqTIiaztYvbS1/jNChSG2EKUQmsX\n3clVwHxqD0mB0jBsJT0yI07cG1th+gWIYtbIVQk+F6yNn31AmixQCsUNp4Qr\nduOEV93YPhfTlzOAxmzcgvpFPWsBK02kuDzWr/v1OsICZhQ2eb8iMjeSx1ot\nheBlxkvs8aNVN4+iNBVEpyamOhODfI2v186KDAHx/PO2X+PjsqL/qlFOi6qa\nzYN0SHbwu3ZVbA37U32KgGFV2dAhZ5GJf4SGJOlxQ2Sh3uWk5p/+l5ca+zbd\nBQRdjh8c8XmqsSxIPh17RlReUzrL9sFcAIXLZcmHYr6dKOhxLIqZcNCIsgse\n0QV0H25XTgrZcox+IHe8op8HJjdn7P8jfFWezprvCJLlOiXJqSJGYWUAQObE\nKwHINnggp5Gv+w/jeBKjTRjOgJ0g0B10Kkvyprtz5Ypxiv36tnwUFVtWZRX6\n16M/Mo5II6u3+MTPTt6lYWLA7fc/VFGpONHYXDnUFYx6QRRDYjZSeV9yuZHu\ndOt1\r\n=XYqf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHcSYpPIJ3urv2gaNXy+8xb9SLlqD6gD//Kbaf8Xy1l0AiEAh7TxgamhQqzoBvtp5qKOa+NEbBfS9nF2wGQO5JTr2Fo="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.b30cfc9.0_1565132960026_0.7125994464164622"},"_hasShrinkwrap":false},"0.0.0-canary.d1e11d1.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.d1e11d1.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.2","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.d1e11d1.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.d1e11d1.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.d1e11d1.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.d1e11d1.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-aSs5oQkXEkhQLFc/Leghuoi4tcpgcU+6mXZm3IlroQDn2B15UbHcFiEU5pydZ9wFhKd+64/CN457eOGZ4DGynQ==","shasum":"c95082fdc03aad928b28edd466eecc1a59717992","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.d1e11d1.0.tgz","fileCount":12,"unpackedSize":9781,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdSg4cCRA9TVsSAnZWagAA1iYP/AoEpjKBiIXrUSivoiEs\nx6t3XjO4PqWxNQvowbzU+cCtrL+ot9snaWtTojR2I2zb8S6uQWupWwXip8ZP\nz+pYgs9xQYnP8tsmNkTxIKSIr1uwRBn0F3Qk/LH1TCyS5Vr0abMBU+M3hRi6\n3vh3SvvIPiBgT5mwssijsiqePRjxbEG9Jb8gE5aZAbSHlNmOuCk0xtKn7Lkg\nRfjwE12oTulYuRUAzW7R2LwNA/n9rvpYQbEJZ0EETpu1ZVUVO4Wz+zbdDWCF\nFfGvzjW6gct/Aw/NwIqqs34P4bbTxN81+uY0vvO1PkvMITtjw6pGr9onTGsz\n4hLcn6Vqp2082rq9V/l8o7uD4JaZPTBGscnElZY3g0DjAyUjNIH1Zj86j8Es\nfV1ZAZssG4aQPOM6YCQZjHsqDqFP9a5aceAT1uIziP2vuUMG66KHNJRYeQ3U\nAnFQ3Q4ORNCSH+UMcl82Lt8j+we0Y2vWx9tC+ItFOOxb/i5kHkJIhJskAHX3\nviN/Uw4Q9LOEjrYE+MZuiAS7iiXT6LKXUWIY5FhlVSTz18CuAwGPXLZAIiIB\nnUg0zHjRaAntOKqCuWAXIhvMM5y04oSACQAAo7I55XlYwNhgUg7XB8KyiV3m\njwMpHD8HzTNeISgm79khs3/yAjoRRpxjwUthmXW19dgH9PNtmWUfBVEBzMWc\n4ov7\r\n=T+gy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCTRiJDoMyWqP+ZGsCzydAGfg2kDleK73DxAlYZYGLlNgIhALe2GglcImiGVLXYbZeETKebLrHYCOQsLnxRh74LExDg"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.d1e11d1.0_1565134363813_0.6324904267777702"},"_hasShrinkwrap":false},"0.0.0-canary.d1e11d1.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.d1e11d1.1","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.2","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.d1e11d1.1","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.d1e11d1.1"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.d1e11d1.1.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.d1e11d1.1","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-SDrVTSnvMzUMb1lLBAMX/gXbRU2Ed1BTAvmyyR2vHTV2TvFCQ5piLlxWw8jvqcMK5Znq8q1DMjMb1+2Ori7NKA==","shasum":"11f85db64a64b0d250c7806e9d8f2c53d7f4423b","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.d1e11d1.1.tgz","fileCount":12,"unpackedSize":9781,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdSg9VCRA9TVsSAnZWagAAyqAP/2I0pe9R9J3QGWeBApSO\nlNZ6tdNsTwxFk9QFsr1RSwJW6iAbdT/dmesqEbLW69k/UwTzIGtxp87LIy7E\nl23u1Y8ZLwBd2MBX8R+v8yEyDwQyrA9myF+xIGKijxe8IkRISJpoCgE+hpxN\nhgLV9fy/gw88bz8Lxkc/Ofg5PFjsHnecL//vsX+f6I7RgJZXxE8mf2K907Fq\nuEvNJ2LQ1mq6c++e6rCgwLlJdQIvn27JfPCufa/MAmy4EIApah3Timz1kpyu\nQ3hDp7DYnz5XiBYrsVFJXRH+usIJgvmFb4ioXiEmrvKHOdGh5bzArSymyXGG\nGr0AqTF2im0VPlcRNSdgMkylDiDFHZ1Lq0VXWVeFgfoVeQaBlDsWhbslUk3P\nWSU+Bc7e+BkRbF8yjUZRmNfeai9fF/Cr5AHDcSZvEkBnUF9BgVDQDaA4Pmv7\nv7j71yUx0paIzoqIibN7fUWrfKLrSqnUvbcOfyBdC0DpcXmUpA2iVE5XY1BQ\nd6dqfILlRJLNpffO/OzbniXyTUg33Gp3wuB/+P6TpdtaDJxW4I7dz61SrxK0\nCIcUu1rkeW5LC9EKwLibE615wZS8MSzFyz19ez07khHf2AOEGGDAfMt2G/pm\nJGgZK+H6skFHOYGQGnPpOhSOe5N2JIxQwwvfWpQnDus6Xqeypc6whX5MfrBD\nQ/rR\r\n=fdA9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDhNeETdxZ48N8311jcMH0RgfKRBgyBcNbMVkCNeOoddAIhAKRczmXgwDERp1BKrYzdaJ/bsGON9mYeiQ0YDhi/pFLV"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.d1e11d1.1_1565134676933_0.0019110313077272956"},"_hasShrinkwrap":false},"0.0.0-canary.465e7e1.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.465e7e1.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.2","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.465e7e1.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.465e7e1.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.465e7e1.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.465e7e1.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-LEBy58plUJY1LLiMV1RTqfSibh1L0akHivQJvrKX6zF3fzOFtP15cSiTDnQAngWFzo0xSBoZRpjt3MAVstXSLw==","shasum":"9f0caa15dd93ea29038f539a57ba74a5d82b3583","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.465e7e1.0.tgz","fileCount":12,"unpackedSize":9781,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdShacCRA9TVsSAnZWagAAZXYP/1InpxWQP3Izmev0/1zz\n6bJjDa9EYy1guSuw5/mdEbToCSzTN1j3biKkdxQpT2LbVSzoHK6QwURPFyqT\nU4eNMF1RoY3/Gx8KmPB09hbSTGytBd6zG4nyaqk4xJu97QDBrYdloCeNjFH2\nvr1eMu7CFz6CQ7J1KWHZZ0YMuRfERBzLfq0NcO4hza5CD6NwpaLAXgg3/Nen\nbBIBJ5SzgAqhJHsDotPbWFQYu6CSmkbPK6SohTkovQ4Mu8bb5/ZPSpDW7F3z\n8oU1juOvscscvnREDkobOnCYSSQa1Afy2vEeh6l9849OVGP5aQw+Ck37gErY\n8lqgYswcl/gxShST6NpVn1nu5wzNujowy3IfsISm3ZdNptiOSFLEDV4/f5Vn\n6//wnSmT8MuR/mmPROLoyeASCBkBCq0HfGl2Vys0jfPiBwkMWNcFmQOQRIJA\n7bz7pxUqn91B7Je1h1okjIlm/K8F3+a9StIZ0n/lTPt1axRc66jplJVI0UGF\nlbfMeFE5cUYEdNt3ty49JFZFvHrURk85fipkayXMY5eMzw6nwnkVnij8Arlr\nELLX0we7e0aIwfc5rcJ+NiL2BKjLPUhWgaEaCDKFI6KmrxgYtiZ/yWTUi40n\nRpzJXeyDj5eYVMEPQo23tX2atiK5Fhozzn+mKGfFlVbByBG1jfdJI9GRgQtE\ndrQV\r\n=ijLn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC5n3nfCD7DI0vZDekF9n8z+74d/AWWkvhJuFkowh9IYQIgGf++FoHKVyUtf+fV5mmOhEy+GDenTQ9n941utScEknI="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.465e7e1.0_1565136539106_0.2332787506569347"},"_hasShrinkwrap":false},"0.0.0-canary.465e7e1.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.465e7e1.1","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.2","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.465e7e1.1","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.465e7e1.1"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.465e7e1.1.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.465e7e1.1","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-upCEUJn4uAn8ob1k6THyHJkISzQC+KZRXf0ZbVAuYdKQv/hVnYv1alE9wr1O2PJxIAo5KgFJ7W90MB0tHwxPFQ==","shasum":"91e960839a632ee8f030ccd91d48a97e71ebdf1b","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.465e7e1.1.tgz","fileCount":12,"unpackedSize":9781,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdShdvCRA9TVsSAnZWagAA0VAQAKGRTasdA3n+fFGsnWHC\noNdHOeT5Oko6jQWQuojgJiHIWuS9H0iiHDPTAdn4xatJA+HDYXvUwPprXByM\nV78H+GfRMauE8/nWegjohW565R/pY6l6b2DkdB9rP1jkMOjw2awAynav9Nds\nCHmc2S39NhdbU5ufR5yahkkfb9LkfElMQButhjh2A/VJNBdfcSKsBQLJeBln\nDXA6XYgx3m3N1qfEX9Sig8IyvXho2zjsxLKM1V4XDH2AUa3AZdwDd9P0lpzc\nW2pjU4aeIbyQIa6DNgtgpmjLtIPnly2byDtLN6Wu2zi9OEzobpSKtHsx00GV\naWeioJlc1l7N8gKZOg5ESBgl+Eak878y8xV7eSEryiy/j76MLtunr6Fa2hlB\nEuSzWmy4nbjd+KJ9NTzb5pV8bTRDT5zw5IIX849xuJF4qInhSoGNBvv/r7cF\nFSIRmG6Zb9r7SYkp81O+NFoV++a0Ci8/kTGEjyCApuAY9rUpOSNx6QL6gdrY\nK+M07SNgBvW3F2/61I2hO7eewJPd6zYGM2btx+d4XzaBbtK3lEEf8mFtOv4l\ndMqkt/XfNWW5zFxtpiGR5j9EXpKhw2uex44PobHiOuEgNH8kwbJb/T4uNovv\nWtuNAsxfpdcI8lSgTOMPa2fer0OOWfFiEEXxJufnDN0KcLe4sa6+COHplTqO\nXMUA\r\n=V+C9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAC1uQPpCL2GI5YPp24oKY8kJSpQfhvUn33YzRDTWMUxAiAHol1tcoFwsYPjUj/NHBGw6DI2lFmLrqUdiaYTeok+XA=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.465e7e1.1_1565136751123_0.43053039154595774"},"_hasShrinkwrap":false},"0.0.0-canary.465e7e1.2":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.465e7e1.2","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.2","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.465e7e1.2","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.465e7e1.2"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.465e7e1.2.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.465e7e1.2","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-T8KLuNuusx1A09iYv1Udo4j8HdzCVflEAgx7EkTLQ7iTH6Bj7HJDAaaHOZFC67IhKbAjH12RzYIegsNDSAlXWQ==","shasum":"f4eb5e548ed81b143c265bccec4458c525ae1994","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.465e7e1.2.tgz","fileCount":12,"unpackedSize":9781,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdShfJCRA9TVsSAnZWagAAaFYP/2EFoZ9PqVO7+1QFrHk6\noOjC8PyHjfj/e5B2IHlyTWqQv5yUUfIAXS3jJvHJevo8FG6VO9c3bBoy49Sd\nBGZOjKFQyvkUmmFkAYCHcz7xbXD0WICrYkG75UExXOCl60HgkMyp9k9ovGke\nOgGQnQ9x3NtlInI7lQSTSIj+as+b40LYXGq/9x4NQP+0LkyvjsP41ebuOFPq\nzK1POfbnldLRjX5V+AWZy2eI6dh15g7wHZOkPRaZAA2sNpIZxzGuGNsD34sv\nHR/gZk/26ambCQJeZD6hIHL1bz0q3ZHy21gHi94f2XttXGo7pYbZPB0kOfoh\nplHNaVzs+zJGMlQcQv7saSO2AwnSlgnkg3hc3p+cL1/Ltcd7kPX9gZq8P9DQ\nzEx2k2op2OlakeTgpsNAwAq/yCEO9KjthMfjlPm9ne+iiqxooEVChREK/NRm\nPU0ODv5gOfOlI+nWtG+43yDNiENcTYJuPRuhtHIOHQMiCrDlU+8WFSDdXn4P\n+s4Pl+UuX44fJ/dMfx0MwKkkKfTQHxtADVVa1fjtS7MaPMgf22eOrHMdmCgX\nAquOXasbsCj5N0fpAnoBONUqZUxGbkjJtnx62p5Nf3RP5Qej8G66Z79HFaPR\ni0Q/UP+yUb2VXFyf/nQpwtJZ6bPU2jmnwF3Z0ptOO/JCwoXozj61rZs8Nbur\n7EkC\r\n=5p+/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDEzjhiTHtlNopUQQjTJEL1XwFABUSL+39jYi30mLzHggIgLCW16Mc1856naVVucC2BBuEG45jCT04r+nwiERaErUI="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.465e7e1.2_1565136840216_0.8858343391654486"},"_hasShrinkwrap":false},"0.0.0-canary.bd48967.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.bd48967.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.2","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.bd48967.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.bd48967.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.bd48967.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.bd48967.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-i+1eyfnx28bCv1KQxmcQi1H82jK3TPZ306LOpIRlBaxHNwa+5wwEWn21CHdyPp06ACmv9R5P8okaNdO6rB5waw==","shasum":"ddac5677c05dc29e182386887ba34219ff98a619","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.bd48967.0.tgz","fileCount":12,"unpackedSize":9781,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdS145CRA9TVsSAnZWagAAFPkP/2M8PzCQ6gjRo7WcDYx+\nm/FoDYd69wgW9Rl1SMzeK7KFng0O0VYCfsPrcI5Hg9WiMeB++8FvTwCswymc\nTaAqZGcKhKbYgl0HFlU3YTTjkzHrE9qf7AKfrFfGNSLzUeb73p+f/xVGztsD\nbc1mww08PFmvUiWtGsvDwyym6jbuMun0XybmAfjSbBFP8pLNUnXUd1P0n2XL\ncsViEEN0+0AXYe+BM8J3pdumQSGJzUpbpNwsUHExwUm18kDno8mk5ZRVgHbh\nKusa/zbYVVSz6lfdKP2jKVgPpwSmRTA6vcKD8Qb4Sqb7F00GJ1Vz5EN3pFdv\ng/TiOEoSo0lGWQ4a1hwq4SP5hPSFRN4z/OOtfcfYrKNwPhwnc7oDeD1+A14T\n52jajKb0Ko50VWJxIobXTRTGJ0JGNJSfsSSb3rJFQ+oud1EaC5NJ56jIRx6T\nJBAEoWcl5JBk1qsvptpFMPWWTi4et3skcv+dGJLwTxAqBsAMkNfvQ0zgP26s\nFCr30zjqXs2Gki7CvCKKBWvCb0OLOm+UD/j6LHrZB2aOsFdax09fb7KEXhxi\nyT6yr3X0DoQ5DsrlcPDbfmtmLKFp3VFRl7VdC42/uoYZgBOvov+harSgSolW\nf5wED8EdlbQ8uYz9hS/xyRi7Xfjxm1OKjOkC84Rg9XmMyXTvb/0ymk/OZq36\n1c3L\r\n=jFMN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEZaXBl0h2zTEbVlUeX1YJuxPorXGa8jR5FVXfuvFMd/AiEA4q6G4M+C1Ixsk0Kw7gb7I6PQDO3ysTwZk/V+eJNNT2k="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.bd48967.0_1565220408735_0.9083176174372989"},"_hasShrinkwrap":false},"0.0.0-canary.aa5bec0.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.aa5bec0.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.2","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.aa5bec0.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.aa5bec0.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.aa5bec0.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.aa5bec0.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-YNQl/jMRIURpEFcE8/sOAUUK/YIpRqnsm7nKcAmHKpkoaOcYCf5+JoYHrxpLvnkeYUqAc5/9jedQNPSxzfkL9A==","shasum":"b8882cde37141c2e7612b73e553f59b144fd788a","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.aa5bec0.0.tgz","fileCount":12,"unpackedSize":9781,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdS3/MCRA9TVsSAnZWagAA5LUP/3V7DEJ7E08pOVgpvVJG\nKaEM+ALGfyCFaWLWcPqVd0ndh922XnGqBbAc+Siihzjf30Tpr1mpSfNddLi7\nshcqWzQpcGUgbGaGoh7TM5GfPx3WZPf/GgcSm0PKcMpDP7Gv4kmpOC2t8x9y\nOdC/gJPb/XCPvrN9Eg36zh+P36liUA+W4//AkpgUnx16lIeOamtg2CLauPTv\nna+wpOVVqMljB6sqEngXFfOyq4CSOz277wEz/db8XcvqxIh5Afc7/8zNys/i\nl2UgNeWVyPdm8Ekc6mp2125uKkQJGfX5Qz4MImAU5DSxIm/ejFrNHM/Jhzeb\nPtL0If/ZXrFwYlKTuBVLNtE2+FcHQKa7Ai6gQyhufkcRec2PalP+fA5IxsLG\n8023GcwACfKVPmtJjvlv3FlMTm9EqLJQiIELEoByb9+cKa0u9gSM8KpLtA+X\nzV80cm5mlcE0ktX50qdmcbeMiR7grfLjwuprZLj2TZTSbNiLLeGUayVmvOFX\nt+SsNXNdFIP2Nl6TNxuLcizIT+D6dS7bwWMfHUhNvaqefPUQ9DfbXNBMA6WS\nrrPIrr/PO+8mcGFdJ4Nh4Hdo7TJUXSTWY4XG/lWb0jbegbJU4l1yRZkLZlxk\nSYIFP+r7OES5o6Q6HGgQ584DJrK3ZGU7QSPPPJ3nK/TxqFCgHiRv+62yqC8k\nxaCS\r\n=1YsS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGvWSQcYHOnWrtOfmE0HA5McY5SxHmCA6yUCsd49B7xVAiBPgu4c9JMI1bzWp3tKokd5JHMyl0HTENLhgwBO2cGSNw=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.aa5bec0.0_1565229003538_0.5530521551407372"},"_hasShrinkwrap":false},"0.0.0-canary.4c8e718.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.4c8e718.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.2","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.4c8e718.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.4c8e718.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.4c8e718.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.4c8e718.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-EgatX13DUXvwkQDAvFAGEvbGwR/mIf6b2JD2CvLH5rjrQnyqlTO337WQRacJMuS5adi0ebgN7eQyfyu5l0arLw==","shasum":"37b725c954357024a06e34d843a2d7447eb25244","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.4c8e718.0.tgz","fileCount":12,"unpackedSize":9781,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdTcmYCRA9TVsSAnZWagAAltwP/3z0Xt8TNC5pG3jhMktW\nFvSCU7FXHEjmxjdd596ZiV0Phd4Fv1btb1VdhImr+E0vjBQ8+aGerbauyshy\nfWxlmKEJoXkS/Zw25H+AW2UTYFNdGIlfC/ZRt5AEQ8StCZSJzKReFk+wN5rm\nXG9mNx1L2Qcm0Nn/Ki3r4K1yF/W3xzzu60NG+/0WrUkXFO6ORJtQTbJNxKHG\nOTcMGH5k3gUBQvKB3aWUEnJaWlB2HdvA5IN4KnQubRWOLGhnQCZSmN298CJ7\nN9z9xVq95Yi7ZJJXMRAoIcQbGe4rSwxw0WTad+OTPQ4kkjC31wVUIJTVw9/B\nCZmNBnijoc5WndC1C+LTEvzBmVkUQmLX5hlKz70jFOiozQ7ebetRhk/aZ3Nj\nwkpIWkW+l0cJ7gHHMaOU0SM9txW7Iyz6pMb2gsxEPHj+qA1Tm1kZE1xkwalq\nsqSTgTwa5dYtiz8RRFfggnJtYUiW7rmJKFi6ZA23h6nOb+6Dq9BEJ+ll5bb0\n4dIAO7L3yOk39ww7CInyf1KAbrN2lEmeVg5MDEEx2Wct/0cA5cg66Lp7RthQ\ntjSPHcAGcb4sXPly9xVG0r+kJzvpZCT4ygN7tMoppGfh3oehTHHleOIFBfI+\nLpVTl6Y2piVrVYEnvceYIlqtRQL6aNiYc151ag9SVz0rMYz1BdWFJ9m3z0LF\nVMNl\r\n=i2Uy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH8ySZcM355a/XGusAfqKZ6sf3RO0IBecIOc8w2L2hv7AiA/892LWDAeGU9kxxJ+RGAZJ/6PeXtYP5pp4ksNweUA1w=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.4c8e718.0_1565378966886_0.8274594727447484"},"_hasShrinkwrap":false},"0.0.0-canary.e3270dd.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.e3270dd.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.2","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.e3270dd.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.e3270dd.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.e3270dd.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.e3270dd.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-OesVws9YdtvJKNHU1/zX3xo8sEZyQhZkwSybOelJeRNoo1RusODRL+2hgMT22CgLM4JQ3mOrrzxwc6roFHObnA==","shasum":"a941b8a81e0f02503d55f2f1cc6e4a1eb0e169f7","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.e3270dd.0.tgz","fileCount":12,"unpackedSize":9781,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdUaQGCRA9TVsSAnZWagAAW1YP/iMl1MjOs+qwbO677LJi\nRJvp0P6bCd8sdEIEGsRQ7jrFb32QmAwYC4Sw74KBWXdVETIrPAQ2ztNs+pZI\nrgWOQh7sGvt7hPtFOIUIHU5rzSwmMh3JPlTcwJD4ogFnoOE+INnoBvY+eY7A\n6i7Tr/VpFeRIcj2su2JHSsxXwvDxUx41/q1aEcV9szUkqs/KHDhsyJg6v/oO\nbHr2yJegQ3DhlWOqBZE8Ar6o9vfUbSWXipo4FUaI9QB/gQCqkitriXYMg97H\n4lJ4I/VVldUr18At2YX8Fb+2uHMgOk5eEwAKNrctgY4N5lhxOOLOG981yYSK\nGAs3K7XiZU4zg7M/nY3ZtZtv43OG+eUg9H6sJlwC/NrHQYjG4wsJsWvHM+BO\nA44ZvCF+5GS1iJjK3G+VyYreEb+FYgSvaJJH72cpa2eY37sabP+jdGJjdv5V\n64O+YnDzkseTUMdMaQ7e38WZYReBkecahpYKS20buCSMEOgr91nnSIKXi9em\nkWTgFLXknngo91LGIBhJKXIlXel5e0aiLEIv7sckTNJuQOSx3O5r/fEfrrGu\n8qJlHj9tJcG5/gvCFOkYpOMHv8X8zInYg85sONfUUB743MfklpxeCv4WNdW9\nLp5mo/4GdD546EtZrmn5GFqN8RGDkTl97kB9U0mMpS61tTBUnl3scdLZD9Mm\nJN6V\r\n=HcEW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCN0OJcJ56ZqPmOIR5nvFkmLJ5uSDxNjpWhDCKA68aE5QIgXnFLsQO25Fj69CyrMVhFNnM5uA6lhKZn+1Ig3hcpElY="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.e3270dd.0_1565631493971_0.19130982849746303"},"_hasShrinkwrap":false},"0.0.0-canary.73f956e.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.73f956e.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.2","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.73f956e.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.73f956e.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.73f956e.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.73f956e.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-rh1urt84PK5cygNWqQUEAPU8GTnjHACt4KLJVL1TmN8I0iB35kR5sYsqzTJhHN/cqBcnaIUDpag3sUgYbRp+pw==","shasum":"526df95bea3319aa539cca59458ed4bb1009aebd","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.73f956e.0.tgz","fileCount":12,"unpackedSize":9781,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdUwtsCRA9TVsSAnZWagAA+T0P/RIPx7Igf5Deuqd6mxi1\nlZMrIta9V7tm45hskIYTLbuR55VoaDRV9q9vNylvJiRqlm4IfEtmou1w3K2f\nKhnT2InNgnG7hqcyrR6zYdEgNJ/wxo0MNZ42QYNDxE95jzrUUA7AhR0CvNVc\nY1DLy489FoJdTGVf342+piaCBTf/PfQLojx3V1kJaHLnDOSkLbGk3sqcyvyy\nSjqm9MrZl46t+pqeo5zgajlbt3Vs2laDSYIVHnd1a5MWdwHZoN0RkSMBtuZ6\n1PxzYlCsXCLHYR6MMDBHM8dvKK8fZorpK1XE/AZRDfTacMpiknD8tspcBwyD\nUGhff0ImSpGY6XbYjVo89UWe8+eRfjkmj3tTQek9S6oQdJehtSWrdztmRVY0\nJVluXzt+f4TAWAOKchU54fpMDe1Bx10DAKAj9ihIYvj6arCwEx/akQerfVyF\nLVEu3rBc8w464R6O77l9MdjLioCXz35gjKPkE0Z4qD0LjRo56BE0fi3KVm4s\nfWHtgbafGkURhq9aoL0lM+LAshIX9auHMdBce2ZN5nTX8mWzZBeuyVKDfJHA\nkKbYYcZW+yJkkxw2oj0SiraUaYcWeEGOJbeydunNkpJF0J10wgj2BKfoieYx\nuR905nvr8uu/VyEgE6Y8/mTlYSBKMS04IdrCRnbU4No1f8fwPnwUB8n1lsl6\nzMhM\r\n=Ariz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDk+b2HrP8JhBK4WpKXJRLHt5moD1vWYy7PMxA4twaTEQIgZBS/WMkSUAZX+2U1/lp+W02lDcGIVrlHPvlzlNF2Kes="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.73f956e.0_1565723499818_0.4907228871033227"},"_hasShrinkwrap":false},"0.0.0-canary.1e7190d.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.1e7190d.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.2","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.1e7190d.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.1e7190d.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.1e7190d.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.1e7190d.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-6n7qvqypyzg6F5nyR/7RUcQiCUt6vx7new0yWnOGYXdNUsqUuaNv4DTfkiYls+Fi14lGQ1DmFqotTCiY7Y5ETw==","shasum":"49855f54243704accf90d0cfae56682949df9af9","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.1e7190d.0.tgz","fileCount":12,"unpackedSize":9781,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdVJbFCRA9TVsSAnZWagAA0scP/RgJb0oLB2MGMiRyB2aU\nHHcQsxTW95Miht7Jg+R8wue3jzcxiah8bwpRo9jqgAoAZBWimcXKsPd2FEPR\n85iFkFBhembeScLgbaC7SJsrpxGQEtn7e00jW+hmpkLGQPgPKN/PQC8FoFQz\n8kO454I3QAYte3JmIoF+8fL0RxQwYcMdvzs7oDTYsHCz/cxmPFv30b7gAaPs\nUHe3+y659Dhg1sq/lML0eOqDmmHvzvcL3xhHOiNofQ4wyBwP0/ylTXYSkE3L\nb1XvOykguRDqZuiVY0fr+3988QPG6z5oRr5WogviDBiuLDCQs0/ailjJqWrm\n7HZJxFtOISeAAsOYEmpHJD5T3qPZTf9CuAPovgqCrPLvypFUzwkLN8V2ubX7\nUx8r21MK3/qIs3p2eQdba1O9UMoTuB9Pf85MCgPzkqHMzUwK0L/FBManbEWo\nlv9ZXyFwoOn8UF/61VOuIMyHgT4I/j9sJD6G9zUZwsZw6Y74K9eG81x1YVst\no28vHiu+hI/UE1Tx0f9Emmh/dIdNsyag+hPRP4UDgeAMhRpEdXn/klMh67Gf\neGopyAZndHg5kQc85NIfdheQYPPGaze3k56vmVwFkDf9o5fZAbQCV50ag1/G\nN/tu+zU9CpsGad4wOuvUYiZZiTtBsAdhqNmGZNKOQ0nuvfj3CNGA75jICt3x\nvYFQ\r\n=c/ql\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDarVADYRWb2ANReqXrobAmQqwcGsuxoHdqq8p0Pl19vAiEAmXkCiRn6VTOynNjAmVBh27g9eTFvC6tJ5G7MKYhuz9M="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.1e7190d.0_1565824708725_0.73950452312547"},"_hasShrinkwrap":false},"0.0.0-canary.b102bb9.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.b102bb9.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.2","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.b102bb9.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.b102bb9.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.b102bb9.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.b102bb9.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-Jm7oqC9CenrTWk2Hq6sEnR0s2EUAA3chHFm+kQKgGdgjUp2YKzB+mhn64Ux183L68k9kcgrqyij4uhxTcetmMA==","shasum":"d604ea82323c489ad88f03130a8a87365fe25c64","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.b102bb9.0.tgz","fileCount":12,"unpackedSize":9781,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdVb6eCRA9TVsSAnZWagAAe4AP/1txo4vne6XnXDv6R2Hi\noQTo0C3GD7a9/kp8zkJONGoXi0HNzdMQBb0gcmFBAqzSZd399sz87QFLPzyE\ngzKTa+18vZDbOTK4LE2A/9CqXRYXuT2fFLLT2+rbcLnuPNSW/cCVPXn5JgKJ\n6mCPKhurB9jLSQRxBr6kL0V7BtTooSXvGMV+Vq6mDDIR4pi3/JQYHyYeRp/4\nmeh231wGdVyJwZc95bASMER8oemg2/9CLyNCncYeN6o5anUuG3eixt6ZP3Ik\njVTA8jF45Vg5pTs8ep/l/ERZpud8Q/CBqloyqGF/nZSwUhQFCvyvPUjQvPEI\nxLWaZ37loyyzCU9R/rIcUCjxFX6pFttY9JFLjGhhhZAOeA1F78fXihIxbdzV\ndX97bv/iKrdMf2vug2a12CPOQHheDfwVgrk9EdBPbK1UYlL+yUYkScUWfR+n\ncRwLGmmQ2zavKB14xSjvGpzMWqbSF5mUBMLRHn4PVII6D6c7fU3WqAt8VFLG\npSPqvj2LmCAXpsKhyPua0phJACnAaq9ydQS1VzKq/gXeFDTmPjuPxqw1ZlBj\nSsyI6eQ1GjhvxgDLjsaV23UmtXweMMwDfaxGWwBaKTm1EfQmjEOcTQ3MbIdv\nAlNaJTHpq8kbwllRYx5lGrlWslIo3EFFybHdZgLWNo1WYMMJFJ2Q8lzyHZVc\nSGkp\r\n=xbAr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAOqehCtcpMP9AcL4XvPxAY9mK8fdj2hWh6vMQeJCuUjAiB1JzKCijYZaRK068o44YxBWUqv5jtxxTAX2du+dK3drQ=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.b102bb9.0_1565900446270_0.9004026781524461"},"_hasShrinkwrap":false},"0.0.0-canary.ffb0ab3.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.ffb0ab3.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.2","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.ffb0ab3.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.ffb0ab3.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.ffb0ab3.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.ffb0ab3.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-lyJf+mMjM6aPz58tvquJ/MyGfF6vT89oqVLhy4aqE6/0PgD4PucQzlqqo8AbBgQNZP9dThqU81nt8d7ju8/3hg==","shasum":"6ca5e2672c2afc0812255d5304dc2ab79f12ec9f","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.ffb0ab3.0.tgz","fileCount":12,"unpackedSize":9781,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdWs2WCRA9TVsSAnZWagAA1YkP/1cMHD4iZeeZkK7TvHu/\nFxokwZJTro1Rm4ecQMfN04CrFfFpHInyVzSJVBojMvv9BwHMKhT/prVgDZF8\nAz7OOBrwMwIiqV98CKOmrjzdalHDSGUL+mQnNWCsF7ylhcjhGb4cOiDZ2VIQ\nxXLyknXUKeRpKvP+LCkSLT41mIeMisky7yEI4YQV+upmMZ8UtS1TqGNaoF7R\nOq4iYqmf/vdKC0coK64bLg0EnkFxJOg3b1GkIx7PXV8Dbj6KsVm6t+yURAmm\nFOPlzaJCD6OE4V993myocNPm7d4SL0eooBwJFe3mec0dnbb2cE5iZ7k7VetN\nWG2dR6Fql9TKnvIjzVbMZLASFad17UWDip4gZUpvZ6vipw5F83K8U3dvwl+p\nxBJTQme7u9zT3GlyLu0D3Nao8WbuAs5iflNIcbmu5r713TyIi67rTwghSVCF\ndvx7qMnyt3l7SUnNGFhn9KFd/kJkEG8qSav2Hn2nkBrUQL2PBDZwvJ9hVtAi\nyS3InEMKivn9EPjxWcNtX3DMa/723qmcedBY4bRC9Uqpx1rcbp6wX1IS0/mA\nflnC22f9Npt5ufupaatnwjHJysptq3SfT1xE290b8FmvSc99XgTGC0JfPV0y\n1e/ehyzDI8ElHIft93tuVVaQBSDxJuKLNf0cZeQaoVjkpK2ZVYY/pJUHyn5O\n/3bw\r\n=kiD0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCGY5Hx1KOM0MihnPTGP7V5z1askHVgnehg8mgXiAqnWwIgOHX35xvT65bi3Fq33gjhqxytx1s4E9Gt2uNBF15U14A="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.ffb0ab3.0_1566231957869_0.3186357535313482"},"_hasShrinkwrap":false},"2.0.4":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"2.0.4","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.2","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"2.0.4","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"2.0.4"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-2.0.4.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@2.0.4","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-eRvmZphRcnrI02vKVyS/OWwxruTBBvraKz15XLVsHugGqMNJ+0YJxbk+9mAvOer90bGMRBfz7LYwjS0/+RWW2A==","shasum":"f368aeb65d9d588485ca50249005e859ccb410b6","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-2.0.4.tgz","fileCount":12,"unpackedSize":9730,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdWxLUCRA9TVsSAnZWagAAADoP/179wCRWV35A9A6kKEWJ\npTtypKO3qswEAF7MhtaTzeXHhkkr81FXPnCL2QOZfWTqPo21spHnrjkjjsVK\n46omh2V3NRJ9MZmoXBvfoBqIyoQXDnUysUVQ3fXOWmTr5vWfLTiLQmf/shBU\nj72Oygfzw4lA8B/n2F+bR7L9sb40As9Z444Zep5Pd1/YC3f1VK99sP6JYq5c\nEYKuYxBEqT4X2Tdjai4vnqNuHGxc1iWUmklrHTf/12PK9G/6uQ1karDomMNn\neD19n+xQwmctgeVR+V8kjdTpKUOvdLbCw1uBwBs28g6/sa2HY62yPesMS/0q\n5jtkgwIbdFbfD9ccAtLGhhPPZ8dLuF72RrtXGJgPNoR3VaV4LZ7PVOp57e7u\nZ4S8QdSTA7SyeYNEcdTx0PgOi9E4TBdNDQLHLjz44zw0JIPXFQdNp0WVdJwZ\n/mwZDNOq20A0n6TFLzF3RHpR7nkdzkgJzx/aKYs5Sq/FTfMdcxJr24kmpHHn\nHciyC57D8yQOsQW6+6avB/kLK3vGS7jhKEw+MYPcff+PEVxp0CA4J05Si+i2\nb3Ztj6zBYilzYVaz6VlKTFue+b7Fc35eZd13XcGKIb7G8g5o9A3trL678ZeS\nDqCC7mowN3tihU5oB5PyTN4KxeK5Yi1r7XB+HipIIlFHuvZ0BKAOFl7Gm69v\nU8Xq\r\n=4Rpz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCbwztzdhM8pDND19/uhXuCBS8v5C6/BR62VzeTVDXxFQIhAJMicBnEfMmSJr+x4LkPNaTGaQ9fuNy2nS2Ix5GGWjWz"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_2.0.4_1566249684183_0.10527089425679836"},"_hasShrinkwrap":false},"0.0.0-canary.e2fcadb.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.e2fcadb.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.2","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.e2fcadb.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.e2fcadb.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.e2fcadb.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.e2fcadb.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-ePT8ja/HzBEPc9a8bvwB7dtz0MGoriJvPic3SFZGibjQsOyWRtN76cdjklKdG1kOC5FNhFxwyyq4ItCzYrZceQ==","shasum":"9484b0b526fdf663d3b824c01136e7803eda4150","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.e2fcadb.0.tgz","fileCount":12,"unpackedSize":9781,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdXweYCRA9TVsSAnZWagAAVz0P/RbXU9V8eRCNDr785vyN\n+k1c0XT68ZU2B5tuWixOefRFupTT7WmumJ79aFBvGEqVPdEaHDeMUhApSrJ7\naqu6Fzap3iil2jD6i5HKghQKJ4cqJCw0RN5/rvatC0FCubQ6JNZVhrk+aSix\nww668kInJMkCAPZcadM+G9Ltyc8oGUjbP918NcS9y2g8p5o0ZoZEXetMq7ee\n6KLas89SOamopwXyt4yEkmCg0vSo8Xuow5pXJ6QNFvw5/15PVUw049KdXAGr\nb0GL4673NzA9GeFCHNZPn5anF7RSGMBQIxma4ndnZHZ2Fp0OqlBEHiO7ZaBf\nAZnZmtUsO9FifB05CNpbDthwjFi5b/LyeFm1kbCySsajUC8A5ReBfJJDLgwz\ndevOiPzq5oyze4UNC+k9m2K+0uiY05pyjO10lcXx2hnZPAJHs/7ezU3tHgb7\nwdjG0aWSZey+X1UAkM6F72BuHiQLADoAQrp5TpijYr5oX45T3yZjzRd2CCEY\np6V4xU9IvT8RyIpBjray3Eiu7ePwtPVH7x5E7dGjCyA0dBz4VLcBzQlGioCE\n5PhLN/rQwne/0pUZXjnO6nrml+vB73lAEDfC5OxdsLRr1lUulhthiOpQ1Ci1\nhCvMZM32ZTpKidX+ZnD1qdUAPysloPNb+Z9EVS6GaE5oqDxCRr/EPDbO4zG0\neh4P\r\n=wa82\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGPK3jgd/vW953s8mlc0U/2K45cuzvseF1kr8LH1Up/sAiEA772/B4c2M9nGnE4YSa+PVF/1vwe429KFqkRvnDrCQq8="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.e2fcadb.0_1566508952157_0.7973791255173561"},"_hasShrinkwrap":false},"0.0.0-canary.d767d28.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.d767d28.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.2","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.d767d28.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.d767d28.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.d767d28.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.d767d28.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-PqMNq6btcRANHQXEM0Qkf1VyrwyQXLJ92qg4zCxzGjp4NlPNCq/AcxBMEQRteFIf6jVnMPq+DUKsHpVym0laeQ==","shasum":"0b25fb20d6ac8db974587c348bbf3c5287f4eb08","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.d767d28.0.tgz","fileCount":12,"unpackedSize":9781,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdYC1vCRA9TVsSAnZWagAArrsQAJN123Exdj9LEHn5cy/X\nKW6Wv16eadkRj4iy7VCVYHjYiv5Ug2b+hue8bRGEBQF8/mUqxCjVwNr8u+5H\nDVahVRmwh3oQfv+RnZlk/ToxZXbjdDPCRKzVJ3+opTiDVEo+v9hukFg4diTH\nTE3vZdhxXoVNGh3LZXLwmlpjGgXy6xMViI/nBxUny26R3sjki4npOCLXzutK\nu97pTgezwqoi0qV0GLB82F5GLOjHtN2CtItWBHYG7FpwHXI54C9G9ltbmXAk\nYNzg+g5r/nuOlZFzl9xeZ2TYDlZYKMgtbBQumwcLlv0xbdrzp6U0LOfzqhkj\ncEMbGxB/OnabrnvJAPZX8gmHBW+Q/wWfEQxmgc2xaOPaRsvqRCwM/CvYmqOm\n3TIDC2TGleXAxUcYlsA4m1R1+xwOlnZn43qmgRb+zTXyNEaMqogpb8EAkgEV\nrCSptprRltiPrRLfYN+H6khH4GSROqziqtaEbGH/3cBlUpHiOSGIe+7Jhtcq\n4Z3GdbcQQ6gPyuKQ2HLsvfN2x1tqxCZl5PpCy9kDo/ZrGnCe+bhepYrkqJvM\nMkK04+2BFk9mCo5z346hldpvmH79rkGjdZNb176G2wEZi74YV7lWt3YSf2Lr\nLGyjbeahJJaVGrGzrZX6ChCMXCGs0XpYkCVqf4xgFfAyNtScD7FeJvJ/DfHW\nWM8I\r\n=4av9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEAUApl8LluFqO5Z5eRNqpt88UdCTBdWM0HYM8hV7vWRAiEArfEsirgiwYtk2vgPlhTwuPTRdDaN52fC0P3o+HmqNnY="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.d767d28.0_1566584174744_0.5527518110755012"},"_hasShrinkwrap":false},"0.0.0-canary.c189a42.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.c189a42.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.2","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.c189a42.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.c189a42.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.c189a42.0.tgz","readme":"[![Build status](https://badge.buildkite.com/51c7145b44d8842a8b71bb446614e49c8be0721f91633d11d8.svg?branch=master)](https://buildkite.com/uberopensource/fusion-tokens)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.c189a42.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-uKcs2iDBPDaLlwjv2TX22CtzL15hM+TCb6RDw7wZ7hcSWOydfHQaO44aDNb8JuNk+RAJW+OT/yHCDKnwpmz2Ww==","shasum":"36fee3ab45727c349cc015c1bdecd5677eaa1c1d","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.c189a42.0.tgz","fileCount":12,"unpackedSize":9781,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdYEwTCRA9TVsSAnZWagAAwd0P/0dxqAW/faumi9T5P/jv\nkvgadjAaTVFOQ+tKyYw4AmyFXHBBD1RaH4mTHhbPxFBzBuofOYM2De5qPSYE\nGq92+1/vX/br15GaUHBcZWa+NrANLM8aEaIR7bg+qdWyEaVVB7lchSh5aYaf\nEcznhD9pNgbrBX8vkR55fj26r7KGRSg0BLjyAv/+C462sEc0hgMM+9TgY6N3\nXHHVpcK+BZdm7UWKaHInDwwDpwXZqh9w6ThCtM27uYoXeZHwqI9L7Kn7MV9W\nm8NPwXWHSQVVz4n3t3SDvq8SDNpQQaXdFleX5caBba0MVeAA8Zd1ZPCWIgBI\n0NQG3MyrM6uWpdQ9wWGgk/92Iol9MG4qW4elvxSdqLx7GJLJdhY46zVLaeUF\n9lAIX8Uk/ZSzOVEWC8wdTBPHAzDuIN0pmGMstu7LE9I2/13BYZ/Ykg2NtEJe\nZGlUMdzTS1zSolbxChWSlTxdWWUJGs8ADlgpHymavymcVqr6WOuajhAkEpL6\n6gpS61NGEM+xAt8ZKDFn28kKd7AgOHjrT/tnyS12UUBS8Ra4xaDwjXPF+mfp\nlncfvGwv4TOypHAsnEgRn5566+BeGS0+ZQVVsBAiDKu4EwpI398GTiyx20EK\nwywg992X1LBX3t7pX8tlW8xHgxCPk/s8TLS12VZIsXLlTIu9GBC0GH+u6HiX\nnYJE\r\n=RVIm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAbKAtz640kJQ/KNHkaxNz4ib3JM8p4Mtn4DuAlHKk9XAiBYNOCR3G/nbYM0MDS82Loc1CzEzkOCfM5DsBmD3YLTVA=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.c189a42.0_1566592018559_0.4326068500654987"},"_hasShrinkwrap":false},"0.0.0-canary.aa40d96.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.aa40d96.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.2","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.aa40d96.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.aa40d96.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.aa40d96.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.aa40d96.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-PMXnLH/jie5IvuPXaDXgfzWNYRVqQ+w7j+PmOA8g0VsA5iYm02K9P3bNAUUEu6r9D+fsJAHyhiDaMCu+Vf5aWg==","shasum":"603e7eba477e446e459865a191a8d608b6291a9e","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.aa40d96.0.tgz","fileCount":12,"unpackedSize":9777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdZInxCRA9TVsSAnZWagAAzWcP/2XAgic3Zu+i/vWRDvpq\ne0RjsAghINuz4gxHKRFl/yUAc84dDMK/yJV0Yl2UzM3M2TAWt0inEDgr1CSB\ngUzmoXjbbWLQWCevNAGuhXiZZp4A5MTaDpmCiqMZEFBS2dOHeM47WTWL9JI6\nHSXVLEv9QHqt93SOzNO8gj2JrCod1LZJOavfz308xKrez0GOIo9EEMj5d8ec\nU0JOEKaxXjK069TieXPicurr02BnONYLbVw4JXjuPtckeWj8FdUnL2Hrvv4Q\nIQIOg/TbDJAoNCZ6czynfDCiWnGb6N/trFCDW0scEWl8LYsiDOAkKDOZKbig\ntfYDyKw5vazzG5uh703OcVBBEgc+m1hld8JZ8nQaeBrRas0K26xDDoQiBG7E\nKuvmcxEuVWpBJJgeGmNlVG9MSejOQH7r/+mbp7Vy3UPomZvUSCU3oQ8bli/s\nq5y9LJ8HK/uB8dcllBC0Fxwz6HpDZekCdN4KORkGTqAVq/HuBAbKtCIRdq2L\n7DK3XQV3YK/kO/H63qMrJjTbeXnIM4Bhcb2POj9IstxE2Q+wINLeFpQ65eYq\n8Cz2+Xzs5iQYQpD4rx5flDkby0DyNPJAeUEcdy2jAtIV/2e/d5vuoqoCSqk1\nd42oHHfnjVSKXVt6fAsHiITtrostrVWLO1H0/ufVbVqHuLLMMoWoJtmg0MKJ\nJ9uO\r\n=1M84\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDWJ0gCEyC+FpKJB/P6RSp77cOOXOxd26B1Hi0RtcdrBAiBS2l+71a284Bkfk2+v49uU5I8OPDiDMBunJslySCJgJQ=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.aa40d96.0_1566870001356_0.9658722194345257"},"_hasShrinkwrap":false},"0.0.0-canary.a9d6e7c.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.a9d6e7c.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.a9d6e7c.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.a9d6e7c.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.a9d6e7c.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.a9d6e7c.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.a9d6e7c.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-nol176iOPYnpUK/XrXajRr4lnvTwPqDzr5ZRWER4KY3e6A6qcqNiV+cuaIy56OfnnJ7Mxp/6qpJuvgBf7SvvVg==","shasum":"0471988ba5712ef51222b39e2df0fabee3603334","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.a9d6e7c.0.tgz","fileCount":12,"unpackedSize":9794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdZWE+CRA9TVsSAnZWagAAc7cP/34m08dyGgA2JDxGCZK8\nv0pp7aVAzJfBNnkJA6QOCturZ3mpynVfJJOwZl+UUkmAHQLypLCDsLjxa8wa\nu3ImyLgknyW8UNmyqgMKC5bPaJXSYYzDnL7BXk/W+GOMBugxcX6liLvcd+cJ\nZMab87x6bTI2id98jar1agW6J5dMUWP/FQ0YOCpJ2kkbnwErsLPWUu4rYRhi\nhN1sbIYyVvd0yhhHOPb5cDTXOo9LK8wfsT/8NO5XBLNQZATY53/CR5figmjK\nd7emUqg/ySN9FlkH5m9dvxbVg+be5VAx2vLhVjuSQKJc3tcblKNP05ZZjC08\nCQi3n+kpDa61N4nKNRC/bGQZR+CZVCWek4DbcxNlwHz7UMAhqM774WZGzNXj\n+UF9bHwwr6w9FPsiXCj2KU8q2jLyccMrmzZRrjzClDLCAOu4G2losG+TyJ44\nFTyj61YXtleURWOVRweEQPZaRzzfXB6Ylh7i+PlMTfEqpCZ7cRjlKC+Bziu6\n1p/x5B6L3V18ak6e9HCU95ftr9zE8WW1oZpg/D23GRXBG+TNQDTcTtUC+Jfi\nbQ9NX/Sk8qnd6MK5pmT0VvMxA7BFzWYDpjiZVXZx7UF0PXpjOyXl855nPViz\noyUuUM03HZozdlNWsknJaseTyMOEZP8aib++XZdrmUcs/4tbxtyl2sADNNcW\ncV12\r\n=7I8b\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDthOm7phnDkNVtzSzGV0dmbbUkgqYvLBWGF6JxLo38cwIgfMgJUotSaNVrZS8oyFhRVSZdH6DRkcjW5xEw6FwV4OU="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.a9d6e7c.0_1566925117528_0.2754205209629972"},"_hasShrinkwrap":false},"0.0.0-canary.f608c58.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.f608c58.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.f608c58.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.f608c58.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.f608c58.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.f608c58.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.f608c58.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-tWvVn3ibVuVVKb45RMoTf2gj4xbUk8IWDt75imwZENHalOQrWcCuiOZw4/44k6889JeuDs1t/HoJyZF7Y/jNUw==","shasum":"e293ad19cca861ee79f6633fde1e72e4d13883f4","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.f608c58.0.tgz","fileCount":12,"unpackedSize":9794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdZZPWCRA9TVsSAnZWagAAlY4P/RKTpBMns5Qvz0aT1RHb\nTwumxMU6DFxNFArcPp3RDMbdu3Z35qufDgPs7IxXeAKhwHNFLjZ/ht2loQlt\nHbfZE4NvDeHFIfgyRRbfQQi1iEJrcBD1a6GwLAZRc4xzfIXepqdFktPKK9J8\nDl+vrj0PqeZqNOOJ+Mx0G2mrq2ZU6cEM4pL/JU4yJgOesSD0LlPHn12pW0E6\nJG910yUKbiuLYK+2dcjYO6QEZMjmM5G8KY5mGJJfinhQyO2SbB3UocMJ5k+f\nFKFEsrPFVtDWfTztgd1UEiyUNQclIoRVhaWCLlwSxjBzahgXE/FRdIKnYaLk\nyF1v4GM1Weuvrot/10K0KLB5MiOsJWJs3WGtWz7f/ZLu4IKkHOBH11BVxDkz\nxWeDAejgoum+dsgVLXSqXFoUu/Z+fSNaeIpfWMnfM999ECnLjEGHKP1iBcax\nHzomKhlBbZuCwpmItrNhWazOwFpb9gDQpZnfg9kPRB6OJPUy3W3ugMP9Hlc5\n/h1Qw+5KxkmOGW0e4Zs9XphwIAeGKlWGy1u2wYY1WtzbZceFKYPTNqXySsok\nPd21ZvKb5rFQc5RDOZWBqYxi9GMfXEkbKVv3BnKkwx92EVny8nCltJpt0Tnt\nD8jG/HfSOK1XLUYlPyhlQlJbTTI0fnWLAKbbI6/STH6bQQHOdMCtsCgG/dSW\nE7Vf\r\n=d5Ci\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAig96Ws3KfCUXK3jQZ3MxGA2uXAPmzKMp1gxjRsQUmOAiAFvHWAUgfbJh7W00lFkawksMbPfvb1vHT78wxfxrogVg=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.f608c58.0_1566938069346_0.5863224298165242"},"_hasShrinkwrap":false},"0.0.0-canary.9d5ef83.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.9d5ef83.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.9d5ef83.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.9d5ef83.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.9d5ef83.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.9d5ef83.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.9d5ef83.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-3Vw5z7TUMURQmZhYEtdxqkkzh7/7utKXQyTlP9+481Y2x3H1Cm/FwnrRqM7f598c+pwW6rQWAqyqEdMevCk6vA==","shasum":"41c95aaa25966bf3c7db69f439d73e3eb37a7950","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.9d5ef83.0.tgz","fileCount":12,"unpackedSize":9794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdaAtRCRA9TVsSAnZWagAAmcIP/RR1tWkssLB7bq1fFLEQ\nLaGobYJBRicaRICQgoqtpDN9i+b6+677sH1gF/l05hPkrOU2C/w94wCJKcb/\ngkblnu83PP+nMBrl1RKDlW3Oxex6UxpMslEdq71KnrSfE/u5OTjV8+tm08Ly\ndzkLcYOKfGDcIF0dNIpnEXMDDfhUuFv4IEd/6sC38+VGf9AmgaHmWZ55HkZk\nL77UwDFi/RcAsUMgUKsf0x0k4omcscLihc0F2KwrgJGDw3QMoTpJvoai8adb\nZUCXhzwdL77zGBIrOdKjgmVW5pMQEH3DuPwYv8s+jZu4QRtRjl/iIfcao9mg\n3oHCoeh6/g5UOzBzICi4F9UYQePQ7gmulQ/TG37mhZNkQ/60f9E4ypC7ZguQ\nlxqLrZT1M9GAvDS6iRNJX2TWzgyv7d6WJhITuDvsavwAciAcOA6xr5zKtSja\nDzCQV+LBbUw0i8JICNF8nXMWpa2XmQ3NwvQ77VZAhNqCpmlZaRgJelsbLWuz\nJtFRR1ZGA0Q/IdB7G9Ny/e76WhVADoWhaNUybJzn1ENMeLhtHuEKRbEm/hi4\nX+iUAArpZGon+OnDW2vDzmFqYcHIeVxkDKC5egQ1eKjq7mOmWdmchrBpU33r\niWkmW5wTFqK11P/Kgbma+v4WCkDg+Bi4QJraSdplZO9M+ltYlfqc4un8/bS/\nWoH+\r\n=HUJZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCbA7hFFBSMmWryVZBaaxAFFyrNFmOyPS0znw757YHF7wIgItT2fWodAyFfOPKBDL88Rmf41pfIuo0MG324KpyetZU="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.9d5ef83.0_1567099728814_0.03078489299799303"},"_hasShrinkwrap":false},"0.0.0-canary.096185d.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.096185d.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.096185d.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.096185d.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.096185d.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.096185d.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.096185d.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-h8tLf7D9nEq/Jrv2gfymSuNrUqDRMesdUeID/v/sK/NTq6SGlokGLzNY3Ib6Xhrv0KhhSLcIML6bNZIH8WwqFQ==","shasum":"c7539210f13f20c9dbdc15379992a7959186d078","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.096185d.0.tgz","fileCount":12,"unpackedSize":9794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdaD60CRA9TVsSAnZWagAAipMP/1Isos0fmNWHaVK5t5uP\nMHOyBg2Xdw8ji4q66jDcow1wR2maNAOrsic/J+aKgDsSdYLreAfH+eyppgXs\nmA+L1JWZxnb7mzJejYZmfSjoPiyJyFOG6knTC1UDAbuWp47oA47Q2dVIgSRa\nj+TcWJce4ALPsdZ5AM1lmGDbZbq26OYsobGxsmQmGRpqoRbH/IeAFmkVePq1\nEXgKcwbTeaOvfOhgav8bVChFr9l4o4O72976B/J3il2AFhbB1SFEDP7qbysT\nx1JKq+7v7+P8xg5QezS5WCIN2NyWioXoMVad1lrQAGombsYwIHHhZetYPo6G\nclZC1Zc3HrKvPu6DPLVlwZJrtk4nukqkvPLFq7Omwjkaq7DGuALKz5mi3L0p\nueZw+GWFCUu767gXl4pgzI9y8FelKKv4F+yKh5r8Hs4N9vFsw90Dzaoi7ZnT\nBVfvKfo+McBoMBKOBtz0IZNysXkq04iedsEAH4JmPVBJxjChjYKgtbj0tQYL\nZTPlbsm5OJnbNEHBA64C20A9UqmYFw/nf82wVHN7+p8l5hjQhoFPe40ZqnX1\nI3WSJNrRPZDuMA/wT5M6iHc9WC6TogKX4UVLTgk9Ye6CPdvne3OLGFaYKMZ6\nv8F9MPGJiWdD3hVsHWXIXT7DmS84vCO4pgXXrS4yfCADqWCuiGvbMQTutQt/\nNNGp\r\n=RaA1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAsoERtvR8NcHJiRf8Ue8SHuOaUcNeeJ3297tAr2scwoAiEAwSPtri+CdD0ZeaWsNvHhsRlax03wWnK1kIOGyOwzDPY="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.096185d.0_1567112884004_0.08990086574790368"},"_hasShrinkwrap":false},"0.0.0-canary.d78b7bb.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.d78b7bb.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.d78b7bb.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.d78b7bb.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.d78b7bb.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.d78b7bb.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.d78b7bb.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-mmfy7ztcaYh14CurzHMcyx5wWaDwaSCFKLTNjNIIM9LCHkoHhd9GLCTDI+k0GDzrnqi/UlTHlGVfaPT1XNcHYg==","shasum":"7d7b708a3260420b5153438bce6df54733090880","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.d78b7bb.0.tgz","fileCount":12,"unpackedSize":9794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdaEbBCRA9TVsSAnZWagAA9uwP/R5ueqsu35+YLGdFCewS\n1svD5Mlp863/efUIn1SsWCR74B4EdrpGw50FKU9zm4cdw9jCg3gxy8rD309Z\nW4WZr4qbLjAjEL2y+bxE/fV+BKHiwNmxMiV7pKOCxadV64jG5gz8Q6Obdn40\nXJuPqdZqKB4vyAm6DTveT6NkPkf9RVXK3pagD/jGEu00pXaPu/Bf3d19fXtn\nNR9d/z6D79jCvnGodnF7nHgi0KjezqQoKU9z6PLW/jwLSRhuj52difHLhJz1\nO50EU7WZ911jTUwfXfX0EysIcAsj02TIZaA81zTsDjzEjs0l+FAJ4tWaXZQf\nXwEalHj5x3E0Q5LtCFff+zzNTSzBkRgw8Jz2E3Cr3dB1Ld9lYf5ut24vuLHo\nG3bo0CWmPKBWFKIUPbvdfsh6wotOeTElGCA4ZhP1BPg7nZJvyVANSfnMBlie\nbGAp88U3Z0h0eMrJ39w9AjiFXWUNjyxWsNpp4xzQ8T/RGhxeURNNrqRV3oKo\nLQKoNxTQ4k5rJZT0gN4+ieuSiudzH3TOgINS5CZoWABY3eMSrJotgzoKYHgT\nrYmBxQUIs7uuvyCCWDxx62AWsyEf03aGkD3x9OGCHAHyVO1J1NhiKWRA3M0a\nnicqgz3sJp1VcJHFu6IdBOK83KMB6JLCjwSnke6ITu1Zh4wpdMuu5rFf8gjW\noZwG\r\n=OtYJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCuhwxVmDcrldbiBhHukznRCB5gOvcKERlN+UiUbKFhIAIhALykqcMGXkjq2KdyifIquH7Hc4PEIBLvSU52rL6ObCkS"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.d78b7bb.0_1567114944723_0.7115323461517118"},"_hasShrinkwrap":false},"0.0.0-canary.2a2b83b.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.2a2b83b.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.2a2b83b.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.2a2b83b.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.2a2b83b.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.2a2b83b.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.2a2b83b.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-CW9tdwSnUklD4W9VWYLYHtGYWNLh2CeiFFGIzYeNaTWmBLsEEotvQjvOL5Eq2Th58X8fA8i5YUQlEl3ldQ55DQ==","shasum":"0cdc022a37e2cdd7c8b4e8b90e4441b9c42a98d7","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.2a2b83b.0.tgz","fileCount":12,"unpackedSize":9794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdaX6ZCRA9TVsSAnZWagAAhiYP/2KQqLUmN5NHWZvY7SGQ\niQ+DaUmAMI767qnnhyXB6RHMD8Xcyx/3yZHqJw6gpz/6u0C5HveRDHrdbJ6C\nbidjqjPb7nuXzE3WRCzS4QtP2m3eeyzkdPpbgfLQzoRjXD67X5xyoyMhhvNr\n9FDbFMevGE7BF6eUM1UvdoPgz9OPrih75vKKJniwl1Gk1fykSAACQ96+IzYA\nJzgs2SgW1Ab5Y36sINqPXgZaDiZrMxjsI1ihW+H80WKGEIdJDPG2yIP+Vfi+\nfYf/yYcz8PvgHj/4AEBPNBL22aWOuhaA6R5LTHDed6giIpc09XiquZNo1bT2\n01f79FgOiMrdDIeoyNSZvFZrH/SQkqXHNBpWqkZRTZDi/d4prhxAJlnTsNSG\nPcvCTlv6/LojJoMapT2CvRp2awfFglpqSSSuaGPO418DIM5zhppEr2dE/3Cu\nWFntKygkc57C5smvFU8DlCivBUZrGtArmJY0EsXijfHxU/15p2SbL5ZZz8gn\nBuTHbrsvFrs0gXf2zFsrT3AyUInfdS4duZ3HkH4cNd+gBFzIZ08eyplYL4xq\nIti4uj+JYIqTsdoE0BveoMyDuc10LI4rPiIoNtBcKw0KjHiuZ+RYpeFlhRQ8\n3fPT04KR4IdpJ3IHQ3a2/oOdZAwqDu+Y3DXII3T94xMGmGD60DMBlLv9TufW\nfUwd\r\n=djSe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCOFOUVXARSirqRRoIUaK4r6eEPZB8K2OpYwBh9c/n3FgIgdMkmd1QcA0mnsz00orrjnkHEJ8bgiHnMJSx76nWGReI="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.2a2b83b.0_1567194777041_0.7663584320233967"},"_hasShrinkwrap":false},"0.0.0-canary.a0f0132.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.a0f0132.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.a0f0132.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.a0f0132.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.a0f0132.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.a0f0132.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.a0f0132.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-rzOBDrxNgjR2eglX4Q9466PzzxR4M7C2j73mS8lXtB45nlGDNY/C0AAwdmKAe34IK4d+ERigsH9EmJyGd524Gw==","shasum":"72948e7acc0c094a02143659fdf4a2904745727a","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.a0f0132.0.tgz","fileCount":12,"unpackedSize":9794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdcD/0CRA9TVsSAnZWagAANh8P/3opdnQwT6uL9F4Nru56\nKCpFveVzjMfJS1CrH6SYinf3VoMoTBXo0whukTnzvxzn4cbEYj0VQVUqFLX/\n+r6XlkQSSNaFcRzBukyD58ywlhkNU38ofBNJRSSVaWH4Or7b9BOlElkU+siA\nfhil6Mo/WZTpXv+xQJIm1ajmRCq41JgenTKl4zzu2py4WVC6x4IUTUJ1EGLa\ntIUKSeiQy3WKpQIj1YjizH823AM5MmO/cJVSnBhIoRA268PN8ia0qfJyIeX3\nDSIjLOwPgIXblHGqvZPhlokoiiSZUYRlLPyohpkkGNUyrsThaRWMpLhIdMWZ\nKjiz2nJO8P7B4Ta42igHCbE/Bpv4izUwNnZJ0TXjQVEEyc6wnBf1zvMiZRTh\noxbvmG2hvI+lN+IGDy2wWJgdHaeoEo1b3600HBHOAjjjIJv0QgMXmFdrEf94\nyRLzB06AILdi9TizgQhhEwSh8KobJR16jofNeNyzLcoNW8aMYN5vnNevfgi+\n4v2n2uK59iCJujcBzU7RV3rm4evleGJDtREYyAwhhXCclR+cx8zJUdb9FEgs\nQfr2Ux6hr3DlEsS1nJYnYhzlQQSxSsBEkYxAGQhda+1Cj62eqIiPhC6io/jG\nwCRYJuECukYrFkOTYZ6Xn/9ElymZWM4pY3oEmiPPh62Xo1hOJtNE6IXymM6z\nZbrZ\r\n=G3Np\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFYtqN4nUiqeV1nEGly9xdiZsli//fKm7WhwCdcbeVjNAiBxqWa1Y6m389suHS+YFOqlhB2qBL/12REdpGvSjeRicw=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.a0f0132.0_1567637491978_0.49120069593518645"},"_hasShrinkwrap":false},"0.0.0-canary.66d82db.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.66d82db.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.66d82db.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.66d82db.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.66d82db.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.66d82db.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.66d82db.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-6F4sevVx7DuzgKlbr4UbdTEY74cc0svYmejpGyuaZX305ZyAYE/t1zGq9iYCRE0tljQFHkkDu37fR3nHTk6CmA==","shasum":"e1aefde45fb190a61a40660a41c884570e0b9e8d","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.66d82db.0.tgz","fileCount":12,"unpackedSize":9794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdcTj6CRA9TVsSAnZWagAABxoP/2IaPAYp+mFvscnH6Dim\nCuhByKJXZMFvtldhUTpuQmA8SNntCSkj7zGEAToyVfVQ06EMtRATK/f2gqBs\niA9pq5euTCCt79ED+BOKh8Fbsq83WBDXsMlTDshIR86MYJDpqKKC0174I1hI\nKe8+H1wLqRHwp5e9EciVZR+/odUC0fy/NpMRhb3u2nDi+7P6iw5pXN8bW+Ik\nsK0VybjJcWyTOOSGwncHM1G+5UbPpt6PmZSiqyAeXoXrnLqdzfeih9MrgPPN\n7dFbGm+W9ASLqnfTQzzteHIxHPIzD5pgtL2frJ+M/9fThfc8qOPcnH2ENvZ9\nJGJvGclSQ5ZJaOR8fzE9oIC+NwO1tbvBcE0dW7T0Wb2b1n6qehiDVckflrJb\nSeN2LaPR2ffq7YefkAHBP7chgeJ2q5jDJV3/GE17GUYM+k6i85YNajanFlgN\nfChB0dku3QwAC2d30htI4p1E7kpP82WgVib3gMoPsGJXr7fhR2iHfAxXcF1B\nEg3ym6eTpteS+xQeJ5WFDRIK6rqproO094BflD/J9Zy9nbsUtl5rdhdtcBFc\n3VoL9Y03hP7KDoWKHhx2B1wlL/FyonHlwnrDWwlTXnUUlSJ/lrKPo3OGjsRm\nbtcbmV+QlBR1mZR44ziC6xKzU4Clqx3zysusNRUrXuqXI8zbA9CbuqQNd+9z\nQZYy\r\n=23NV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICZ6qZh0q56C9XxjKGP06XLI+66G1WL5b3DflcME+3sQAiAIJz+9JhlvzOJsl6jyEdhLO9QZBVRUxmtYKuQbAo771A=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.66d82db.0_1567701241891_0.16321359715134043"},"_hasShrinkwrap":false},"0.0.0-canary.109b061.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.109b061.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.109b061.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.109b061.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.109b061.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.109b061.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.109b061.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-7eSB/2++CgV5L/FxCVMUCfZEifZVbXIni7TWP8WB7PjQL3Jaa97clkxmoA064uOmJ84RFIyquTcGUmIQk8fJTQ==","shasum":"cb0b3751b546994354e8a5e827730418a8b520bc","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.109b061.0.tgz","fileCount":12,"unpackedSize":9794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdcTkQCRA9TVsSAnZWagAA/Q8P/181f6bdReLaRpXrU4Pf\nat3OKwXt1EqkT/9Qfw1ksr1K0H4IT3exS/si1Uo0hXmlkPZ0/2bj40t4oxn1\nTLF+H60sbQ5SS7m9QM0nYEfbaR++sO+MMk2ymRJ6Q4QZglq581aJ7W0iKERq\n3G1hAFU96Udh7vo+SJ8bAsizVTZzzypjaoYWeuroIBTwaMC9weeIb6cpPybW\ni19EcaM7/Jz+dj7bz4zm5MeDT59zRzfDC3/ttsyoYuYujvqvtXIWd0mpx4ID\n3HgFSSYoVBrDcquRsXGDdhbygWjiiLZzsSRGB0RC4Qp1iOaK/n6PZDMS9mDr\nQmfEwASa2+s5w7ZZtaM4l6wbV5KvMBHbpODuxL4ReHGzXaiJmgkvfHhdfAky\nW3PoOcpqKYbWB978O1T96GQlCtE1Qm/ktZzjuoHJOSlO51SlI889Lxb+BbQU\nMwNd8iKOtDNzl9KssED+VAE9KOTFPgppoo61i7Kr7jnz99+DmvduMLKFNL/b\neKfspahvnLVKx4SGZuE3Ankn3Ykrcm0yLwu7ZmoRq6gCbWKqj7oPdZX83M0x\nwemLe02qtHVxGC4dXVVlQV2ZmgWHihIXO3V1T/0x0cZcx4KzVqz1jM7LOfmE\no4fa1RlHqZ+T6N7uQTyhl6QN4fwrtxjT9kUopp5zN2AC4EXT0pEKHQAZyjrL\niHNM\r\n=Y6Xq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEXVHMcHU6kJK+Is0/2rrf48WOHyCxI25DftW25eckjWAiAQ/f8R1KOfrxAC7w1PhJ1cIb53hoXeA+m8KTILI1lqmQ=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.109b061.0_1567701263531_0.44301047080605915"},"_hasShrinkwrap":false},"2.0.5":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"2.0.5","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.3","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"2.0.5","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"2.0.5"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-2.0.5.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@2.0.5","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-9PA4SiptjWD60vpB+PKl1wJLXdFzNwa6MG3IIn1SE4+k1tbvkeLvQL4Y1lMuOuwZnIBrnXcwucnlgNZUb/QJDA==","shasum":"54507ddc9374332aa7ee88ee03016ac8a1b10f8c","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-2.0.5.tgz","fileCount":12,"unpackedSize":9726,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdcWv6CRA9TVsSAnZWagAAbCsQAJ9n8QOADhbl+53dwWAm\nPX0jGAUiuizh0eCma3GhhxtQx8kvVH1KQTI85vNzrLJvJdWW0VR/NsxXyJtR\nNNYA1QND6uPSeEqTvjG9aP3Ww2OC/x0GmYF+YfNlsycCcTIGsF4SrM4E1eRE\n7QrBKosTQmLUW7bB6jAZOGtPIAD7ShhXut3i9mYJOO8KVj4SzLacwVbg/3gN\ntlro847I40a5GpTlU5J3WqslgUT26KXrANHyIse0KdtUrAgCmU3MxT/xC2Qs\nKi21rVEMjlpzNOhNkmVrCn7uBRgWH76a43AejiXveNptOHxZ5FjyJQYfZWJ1\nFyMN6Rqx+Gm3SEUqGVhHG1Pscle36Ogg9rPVfGI6B6U6Wgs71T89hF3rnSuk\n5AmhIzr7oDXd33wsx/qkgrJLBzukbFPwl5dP66RlWXq6vyqE+wwtEFcWoMYD\n2PnREAO4y019qO1vPhf1rxk+p/f0dq9CrY3ft5DEGrA5pCEVdZDbCqIY3p8C\nSBJmri2pL7CYVeA9GgMpATtgwrGy6ukD0/w6hSmFy893bqpSST6KTxiV/YiS\ntAPQjgulZPElt2TfSOBh/sbmPoTkz70mLxScZbEOSnM4IcCPeLARQjSf8JYg\nW8zYq+iYFF2gIXhQSCv0Pdppwo/yZ5ZayP3xyLxWZmWE7isyw6xEw6X0BP0g\nm8xj\r\n=ffW0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBNitrGvoMleFwnzeUPTrym1qGSGCVuwm3bggCRNDE2PAiEAyEykQMpNVW/dCEWJRB/G9UcO9GkU3qraLLVj54Wvpsw="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_2.0.5_1567714297867_0.34591455225409806"},"_hasShrinkwrap":false},"0.0.0-canary.413f404.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.413f404.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.3","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.413f404.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.413f404.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.413f404.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.413f404.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-flTGnBLWn4OSxHkiiSmujCkZXPLnKXkXfJcwS08sPN8wuWTkxdGiRcktFkJtTPs679l2epLUlHdilJiTln40zQ==","shasum":"2b4d6806c1f3b1049df04b5e2108d73fc46f4d24","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.413f404.0.tgz","fileCount":5,"unpackedSize":7574,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdf9XQCRA9TVsSAnZWagAAMSUQAIuszyV/DQrY6vyxjvFj\n+SLP3iWqxnyjO5U0lC5jysFMR3Rla21tvgSOtLzqjPOs8svSSqLUisbGamZT\nsevh3VXmY8rMt1G4Oeg/NE8WBAXWRJ1iyV565OJsI6VQSSFSlaZ2PZpS6mJ5\nwUOi6TfXAwkBntws1qozxNsxw9JJP9o9iNM4HWUsi3Vx7BddET4f/Q5HmJUU\nVcluP2swSCp0DkIGrfeA2tNf999I5M+a+f3+3gGjFp59HBc7e2wpi7fzIYXa\nhnpTtmS8ihKQzdnpwUDwpBtpa3qYqktSnVtvkWab3rE+AxOHMwzPIqVKB6rh\nRkjaivjDZICDc0DmYaQpAArwSFastrVcj3e3Bf/VIrs5H/QFayKNALXE8OT9\n4cNqqP4+UkvQkVp2a/nqvvuhBfBbrm/6fKvvkkfFlCScxkJJ3HhErmg6gS4p\nWiOsUt8XpxNKUkEHZfgb5jvVr9oaSTAdVg/JB0O2q2qqRtWdvq83X0y+hT/1\ntIqkoxULT8vj2fhwbrgkzvFl/UG2+elZZCUWmv99/kwbk5DYSqJbFdATLIcv\n+9+JNALr6dcuU2tOfqNK/xqk3quCkynOCUGy6cIgdJrMjUYsFVWfanIw3/hv\nF1aXhPyxGdRvoAD3aJBrDdGvoInF0ft8NOFQvoRZHwhbJbHDVsoZC0zt+SXy\n9Kx+\r\n=3XtT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBZ6v1CrVQaZEs+qZex7q8j4ImywBORmb9+eAd6sKWqWAiEA+rvtmwnjoBM9nyWvf8IQVU2l06T9h9JEORkMhksoKK4="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.413f404.0_1568658895945_0.867157086033999"},"_hasShrinkwrap":false},"0.0.0-canary.c0ad947.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.c0ad947.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.3","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.c0ad947.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.c0ad947.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.c0ad947.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.c0ad947.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-Ck4IQeQq+cCfDRinAPTJOrcYJYrCp1OeOrM3OVZuq9eSAL/hGym2ja7lRA1awDy6Pzj+RKFzxxax+J3XEFTmpg==","shasum":"92452f64afcc96b99e8d91195e57ddd9826547e4","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.c0ad947.0.tgz","fileCount":5,"unpackedSize":7574,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdf/COCRA9TVsSAnZWagAAntsQAKDaFNeasC6PWgRFmPkd\nFGPCeQ1xoyft5JbJB6XqcVSWEtpHjIlrJXtQ92MG/HoCPCJXs5BfIOcSEdRq\nqhWGzfsama10VIt0JOK/gCKxOaaLSmHojZrCsk47kkktyS5QPIKP5PLLmTil\ny3KhUGT1YfdnuDu9lfbTshMm+8+LbLsz8aJJyNIUjVUEOk0bZ+V5LyStBDRk\nH3qdB2P7kXrcT2jnL6hTcyOO0d5ouz0EJXGTAyxo7/v+e7EOvKJ/fcesoUnL\nSEM2LA05dbWitHymYmlMtyKMpLnsQibSzG5OoCP4JTuLqkdKJfVsMVSEIXJa\n7F4RLjOQTtaUMkWCd4EqmgDh5mzmuaENu3me89ZHIovfztU2AFb+CRi26Dcj\nHOeBrUW4xkT9f0jiX3JWFY0vzaE5YbT3lFtxyLNI2Sx3oVYwDici6JbNjQWS\nThUqW+4DDsgar0jbQud7fw6f2a2O57hzUsPTwnp29cETqwikZ8SSYX/Vj65u\nntzq4RmKf+nvkitb8dD7wleYOmP/h2Bn9ih3nYb0W9jiw2QNjnleMVjm1IL9\nopZGiTqFM/cFrzEvY90+3gmKiltLgZ0dG0xkerVWaiDmAvxHnVhcJ89rSGQE\n3JwB0mwpF44uxLfJNUfg0ZOJKmJWLdIbxBs1Hid05394DWN90VPr9z+TFtFf\nRWZV\r\n=0HIK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFTquOWj/iLGsiY5obSOW+3AGM0bzRTErPrjqUcdxJIrAiBirhA/Pg8Bqp4bpQlBdmlsbcB6yrz/55BRHuBMOFoJZQ=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.c0ad947.0_1568665742089_0.9672954464495127"},"_hasShrinkwrap":false},"0.0.0-canary.ad6c873.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.ad6c873.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.3","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.ad6c873.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.ad6c873.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.ad6c873.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.ad6c873.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-bYKqnYkq75njtn3REaoZqAJ7csBWQZzz2g6RE4XICVQFLX/qC3mxJnv6OBcmsqIGlz9HaIQX34O0zXKE+rHN4w==","shasum":"892127a0eafbbda411142753951eca600727a2cd","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.ad6c873.0.tgz","fileCount":5,"unpackedSize":7574,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdf/QfCRA9TVsSAnZWagAAB1gP/2fodbLseOY+AAUhxwh+\nacYMod0LKG1aPmBynDjeJbuMWqCoRB52ZgCK8AWzhM9m24nHODOk0Fq/htdJ\nKzjNSySz6oqX4JFeEeEkCwusJSCM1vlAZMuj10knH2qinm4vcWQrshd4B4ny\n70oFxUrDkJ2ig3AmG6pK0khWOpSKv6wSy0o8+1ppDzwdUbFRgDvG7y72pHkO\nNFel7hlYSefkjpXa/snYMZM2qDi59DtRf83StiCeYsjvnOHBe/+2MaFj3B8e\nSs/T3mF7Kjsk0czP+QIJCL67jhO6MR+40vRqCOd4HY10b79c/x3g9pmImMwe\nubcf79d/wjqQjAeKkAfEVregqo0t6FInRXyoSufDuRVBKfOQuyd/78lUPqV0\nRzIDqzTNVUQR/IgTopkYyqVEP2jpj5oqfCHyuGxrOU/8RFa5LyBWELxluu9t\ni2Ax04DugCPDhzgeTdCbg9qa4DjO0reEAosKkhkS54ho9MoMN5u6UcZGjm14\nHUo45RFfb5FZ7T1IxPVoOQo4zISAg4sGa2enSEm/5NPjybpg00C2qTK5Vmrd\nVxCwRAc6hpeJX0S5SgtS1QjsbuV4T5D4+FePZKihMAXe5HVzosBMSj0zjrv9\nwfFXDqnMrJPt6QHbEnXLXedExotmQ1+52XoHQiGFuPXgA6iVvX7dVWsMumrb\nhY5i\r\n=gDF/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGDJJt7uLd+fPdCHmfWwY2AVErkG7nUB3PX1hhXA7XlxAiEA6vTY7N1lRhIMJ9CH9KVD7LHJddChDvUITQaiQ+Ha/Jo="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.ad6c873.0_1568666655099_0.03684278912201999"},"_hasShrinkwrap":false},"0.0.0-canary.08011c5.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.08011c5.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.3","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.08011c5.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.08011c5.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.08011c5.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.08011c5.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-UQM9ZHFGFb9y03vbAmkxpdk8H73VAXKv+swGe2VDV8kEO+MbAXmdNg+ewTrsJJX8xI4mU97NHtsbq18Qq+mkFg==","shasum":"aa74760bd41d6a70dcb4d71d8e9737bee53d650b","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.08011c5.0.tgz","fileCount":5,"unpackedSize":7574,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdf/YeCRA9TVsSAnZWagAAFN8P/1Pk6hhA4rqL3cgKqdxR\nagEHdIAxKkmT/1B8tb2dbe1rYSHy16BkYcH99BAzjQDFn7zXrtjLU2nasXUj\nAyHcAfd3nnN1DJWo0zIau4W5nEgq8pkkZ6OVjeBuhWZke27hrcK8cYqGjdOj\nG3woMXhiH2CKwXDoUUgpFKGgn+pe085hkVii7QBfDnGLP9kvBBcYqiH1DP2N\neerJ5o7IpcLoVLsO9xscqk3Ogz8bWTfm1RXRbiPOk3Stkhu1CrOeYUwJbRtE\nePWB73xCbA5wlBFid4Py/xXllIVUz3QcJzELJAMm9mc1/Ch2VinmsUPxjHai\nwWQ5nGmx6K5lsIZEzjo0rDnXmSr7MjumPYnX2q/HQT1O/q1SPqASEOZU5z5r\nMQGUhY+XgvEg4oFhH5g2qZn7pWuMRiaFoeLsmNzN1VAU0w60jB8yv/uEAA7l\nmbjTK/XX/ZJ1B6ruO1tQeFUnlTjIqjx33D4Gl6VwhLvjNaAZg4he+vSmgTAp\nQc9OlF2KCnJLhBZTt0ve9sN2BlueBidwtr0uLuQtIEjxJzzhKdRK1VhLFVlH\n1qMKyWfJxxd+KHaJoFzYNdkMyftKZrIe+ZEssJf0wo1yeXx6OViRdiX2VOfv\n/5Esy0r7J+FY7iPa+jgZ+Irm0aH8gxVIOnlW8Vrmux9r+SfC2/BE0V4aHvoD\nkZDB\r\n=BwEE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEHS9G/LIAaJuHnXHbNNuk9VOqwlBKrgdR3nQnfruIpWAiEA+9pnHtFCCTuPAK94IkkhWLQ+E1YX5KX8f0Ba01CrRqk="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.08011c5.0_1568667166141_0.5675069758030729"},"_hasShrinkwrap":false},"0.0.0-canary.a27ac53.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.a27ac53.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.3","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.a27ac53.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.a27ac53.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.a27ac53.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.a27ac53.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-6LnIMPCce2X5JsNVBFbmVoJuRIOX7hoA96VLE/nW3RlqveQkT6serdRf1PxicQRI8y1qwAhInNH1JKVraAL1Jw==","shasum":"f1284e609de3c8e10e8af2c0b8722b3527867def","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.a27ac53.0.tgz","fileCount":5,"unpackedSize":7574,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdgAqVCRA9TVsSAnZWagAA1fwP/16IO31kr4nKAFkY7LZK\n9NQb/KzCZ8yNhlQWItUYp4kbw5RQWFQv9iYhbaH/xoTMyGBu7+sMB3U9HE8K\n3z+xosjGgl4R7pplCm13OYadx4TCSdHGkugOtF1zz+JXLUahoACWzN62tc1S\n9Hmwp1SfJ3cRIouE3RjSQ0B3QDqgrUn+TSopMpR4r5ZmqYzv4hQdM6Lk4RM2\nXeEnMMzi1zybbukcfYxG/NmWjvRCbJOacrO0gw/MjjphsBXCA2FgwJS6978W\nZEw3P5UxSmaOLXtvCSQeXBj+pjTLsJPW6prMGpDGDGYnsD3fhcnmtm6prURZ\nbXzO08twHhZ2ZqLpXeD2mkSxDjhyAXYUE4X0sdAwmHcdzUw7/d/cj2CIgpkk\nkTwmitil+mcXXF0mG5BbDsybSO++KVvU15/HY8+Cu85wQb+IhZF8wVPQO5c9\nGsERPbx/W8DntnJsWjNZkS+ApL8PtZJ59qW6OjTioLl7sSg/a+tcBBGXs023\nSdo2pocNMNx2+ellCtaurNgNQDfgS5MUozyQTscx0Swok7mH65bU9fXCvIRe\nxhxwlWpz62SMYzCQYyHPERZAnJnqR+Gdc56h2c1YEbrI9A2Z6tbYUaoVcHWE\nml4extYh4YdlYqg2atmm3Tw3NBOvmbLiasRRj8rIxL+4QaaRnE6wYQ12FV60\nEvz5\r\n=7WDI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDE3M4osTMGLLYUhy+GtpehlidusVYkDVSOhRuxYv0WPgIhALXyiEasbOWyZUM14iO5fqPawDBnJbaqRuDk9GSpgBag"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.a27ac53.0_1568672404791_0.2076449726473526"},"_hasShrinkwrap":false},"0.0.0-canary.ff793d9.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.ff793d9.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.3","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.ff793d9.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.ff793d9.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.ff793d9.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.ff793d9.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-Y5S0d/jPj5M0fJ8BmaArB4DfN3sYpMHJg7u/IVKOJ5OtfsJOMPNH+ybTahqHM+xJnBba65rvok5iBLxvtFTo8g==","shasum":"305d228ecec4c9b2ab332c8f9ecb7c1766766551","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.ff793d9.0.tgz","fileCount":5,"unpackedSize":7574,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdgCLrCRA9TVsSAnZWagAAWtEP/jQan+zAl8ao2//sv0Ud\nxhmPpUNZtrpHWc5FUzxqwOsFVvUXtUUjXeig9gjHCK77BVcNuG4lKcT3zlok\nuEE3s9Ed3iNkxwVR0YSG0pV3PU8vMMPrVFLBY5WOmizXIohfvZ1NpYQSdupd\n2cZ3qOmmctxHF5ZtBkuk414wEWswhk5oSkpFe07qr5rJGzFR1gwCosyAvk/Z\nPW0QQB2ijimjEaWX57cwe+uO7933FFoLCRrL9A1amXbh0DW3zaYog7ppvG4a\nghxGt0CpJLzLrV5d3844pUxHL4XOb3Xxlyy1cRPZNlpLNS3TxE9KuCOsO5Pp\ngmu7yT6qL6Juw0J4+3VGfnKMw3nFD8cLJ1Ypea9QVuPzM66BFX7dBKE+NOS7\nWzMDpAhuB5kwFqQVfl4GsKIGV26f+kf/3i8g5mE2aYSi6CEk0+dNu7Tk3Fvj\ncGTBABfHTCBpWnb41igl76fVaqe+Jw1Y9h4ZeUXyUOAhMXoJGG0POypZiaT6\nCKHOFoMPS766MuUwk39Fh48+KcbfGfjUgLHMWqaDJUl72vVDKlDIyxjzgM8a\nbwz2YwAXkp24v91o6eus2cAfGbcxuFDoWIVfNpv1SyGQKz+4AXfyfwAEwbI7\nu/uIR5n2tUXqgVKg3+DqbGj2jcxOjHf7C8fwbbcQAC5Qn7RA1NlB2k+mHanZ\nqomT\r\n=MNNs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDHfSeKC4ImCYRoPH7f6fMhYv5x/Mowb74HfHweJVp02wIhAPG6ZXyfLlTBadMIljcxpUh/cHYJSH2kFHBXencw42PL"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.ff793d9.0_1568678634585_0.20318547424442368"},"_hasShrinkwrap":false},"0.0.0-canary.2925a25.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.2925a25.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.3","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.2925a25.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.2925a25.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.2925a25.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.2925a25.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-CAdeRAciD+B91AdTPUVnsOu6ogAkltuRJpeGJ1vXbTkhTlscwxvjdFe5kdStrnQje2hxxDCR9DzEZLRAG3qfzQ==","shasum":"8273c54c523549e81a7245e9ea75d3bb45bb3a93","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.2925a25.0.tgz","fileCount":5,"unpackedSize":7574,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdgbU8CRA9TVsSAnZWagAAjpIP/Arcpvy4UGW7ZMgWwYcy\n44e8Icn6kAeT6NmWHHvaGNy8TAs2v8VAV906DtfthWNuH2LNiKlg41RurRWV\nCaxUF5xhRQcjl09cqY3Z+DWaAox3Lr4UjgoYlPmA4uEH/c1L4SVMcpcXopbX\n50szXe4HrbeVqYsjb4FfVIZNGLHmjddNkV/yLHr08nGRFZuTgoeKpvUadrjO\nJhV5xEHS5lR1uFH+i/IE3i944OMltriQvq8JborhtiK2aG6buQF7O6xR0U4Y\ncjVsXF9FcHq6IGUb6cyNHB27R7hsS6iuM93/Kj0pSYeivyPhZ3mR45XQYc1H\nGajY8E4XYESqd4WdKem405ivBvIfxeviLGDQ7Cw4HcX7srb+oo3GmhPIXJ71\n23D0hk6jLUNKnpHMPKKr4gljg31Mmp3ramqcVzItEP5ZvNJUrsvmTaRx77S2\n19w4O77s6kyosnlwMzBhjsxWjSdL6OG5Olynn1w+iDyWaUMEPN9uqvJSLDQb\nEmOS/Kth5icJ+YZZXePgG3bvltHRfu8HzgxTZXGY7D3tBu31Ah9cyayetfaR\nsZerrrqWy/8bFoBJ1PmjRbvTZ+uJRUx2F/nZQLVd7316fUKr8NmETNZDwbfh\nihMn9cmHdbI/VP+kZBkJ3oMLQoNIvTt9BKUna1ueJn0V3qgMb7WLUaEbYuxM\n4yGk\r\n=Oa57\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDcA3gn0V4IvBcWk3lJC9EaR1IaRj/VuhgcBI0RRsl6DAiEA+d9+Ku3/4CDXD0jaTvo6ZWnXNSQoAE7U5eTdwgFbOYU="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.2925a25.0_1568781628182_0.6934256533439167"},"_hasShrinkwrap":false},"0.0.0-canary.5cc0676.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.5cc0676.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.3","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.5cc0676.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.5cc0676.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.5cc0676.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.5cc0676.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-sJgKkjP6siLOVZIA6bSgcmA6piau/NY2sC+JZBh/emEUTTj/oH84QVTuSCqkoO59Snypqj+wDNRrFgMVjWg+mQ==","shasum":"bf0c7f5c451cbe02f81e1bd20b2dbd8d59a79ada","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.5cc0676.0.tgz","fileCount":5,"unpackedSize":7574,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdgq5NCRA9TVsSAnZWagAAGJIP/A9kOwV+2wdNNMgMGlqu\nXaIgP4xkyX5avL1if1VX224U8F3ZCxTXaOyn1vONP6wGXYsEkLbJukpvxk0q\nDyA0SKOyEsNvGshL1i5fyoXxKo0c96ciqXj11BSkY8Ynv3bYOoNbVPLnUcvW\nPtB1kNvMVFX+m1O18R1y6zSOxepqnieBQmIVqg4wlTH+zkmxmoVs/7J6UEo+\nKMPWnvj6KOpmFoFJImd0MMkCH7rjjhMaPUAWk6zAMBCVd7bIUn3uyaZMjt/L\nVZQ+SqxkAbFrq0Nefwh5oaiq2eQv3+m/KbXr6tz0DsUm0guc7aD5uVWF+pii\nQVRXLtAw3QUU/P2D1fW1kg1BV5+P8NCzVUdx4Vtf6shmlBFLNkLGAp9Pnrrg\n4EcCb4P8ACcKxWodSFTy0aMB+FGECpgZfftnQLkfZjEr/m9QiUdE3MfVH4Ze\nRZugOXOaodSgWK/mafFGjhtuv1Nmr+0+7Gozq9QV0RbVGJFHGooaIxpljfUG\n7e79nxgui8WXgbd2AYIgm9XLM1XzV2CTJePR8XNaLT4IbDR0B3o1dfhcUwFl\n2VnjtW5JxaMMkCqZXweyUGGxW1YqPhh7BIQxAmsbkqw0XXau00TB+ybGrLHU\n4Aco1y7fyly0jS3z4DLvNIirnIu3TT9708yBI12OWGho2RgUhiyerOPxFdr4\nWTEv\r\n=4pTw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBdTzPF0fn5vo/46ZMr/8E5xajEXer9THZcQCQx0EuUmAiEAxUZwfEb8VwUXYlrPk3yorNyi2jthI7nybdfRfx6a9DA="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.5cc0676.0_1568845389195_0.19266233002974453"},"_hasShrinkwrap":false},"0.0.0-canary.34b9387.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.34b9387.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.3","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.34b9387.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.34b9387.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.34b9387.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.34b9387.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-Di05/2p03LA43AGbW70sB5E9i9sRpWtftRK+A100smINSZh9/+2MwES0owDO/KMDiK3aAlPjC7lBg7WXgnCdcQ==","shasum":"11737c8a3490b2ded3a93191d3edde32bb2bb9df","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.34b9387.0.tgz","fileCount":5,"unpackedSize":7574,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdgrDTCRA9TVsSAnZWagAAKFgQAIJNvfyfHNJs6eLMGDhX\npXgTqIbIOknCcvlB7cw1F1lD1KVSBLS2CYPuNHH2Lv730ULB77G6gcWRBQjY\ng/Nvt9jVFbEOJ6R1mZd5Ov/bD2Pu0hAjFclPwTfDJ+f7IAjF4lHLuu7H0ISJ\nTJ9oikOalPjL1kAYtMKFI8sNtwPuqGpN9IZ7bK2EutEom6V9zQQSyHl5j3GO\nfjQSQY4HYV2Z/U64alkM3yFTFtv6Jro0rhqdVVcYfgEuECaYCLs9IFFVJb4/\nHnnKfXm4mR7mHkdRw18LSKGx3E6KUCNV/A+cLHI3IjJ2iSQ/5AtwFlJ7FYwY\nLX0L+K+nSG2UghRe6XFXCzUuq7f2JxD58DtTniyJyNKiwJQSDZkR6OK+ZwWe\n23THEuqA3xUXcn7lUxN7GpCEl9aF+IzalBX/ykwFqRVvBvxKh+hiikXaDb9l\nPkghWGx2HpcPmAsz1EsjwaVZzbSAPyB7wZ4Ijfhzas+9A/QwFXoIA2YmiD4D\ngp+UWmH9M27rrtd87WEiJVyyV9xGlO7n2Uy2rZklrH6pbeFskBA8cWOhVbk/\njRmliV+Jqz3SHUIPIDCnAJfnpGh62iO3ffrtq3e0W+CF0yRRSpdla/RMM2TH\nkTmBPYbBAv7k/tejqSdGkwo+cq9S1jUALXA2r1W7kihGEkUXORxqJTgQACDD\nDniT\r\n=AI70\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCakx/HjCKaSLY8bvRpIG/3NiPh3JUt3RI1EQTVE3s+JAIgGTUHlkzA/ECq7flh5k/9HtEcvMwMXOA6/YFwu7vB6RM="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.34b9387.0_1568846034777_0.7400326027573616"},"_hasShrinkwrap":false},"0.0.0-canary.49d4d79.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.49d4d79.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.49d4d79.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.49d4d79.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.49d4d79.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.49d4d79.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.49d4d79.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-689B7dU0KZItDGavC3VjbVAQ/Qh6L2nbADn/9JhMqyE4lvRG3g5yLIsBmg+qQPCYt3dCrD6zS9QZfNPbSSA5Xw==","shasum":"baaf15b94ca4de7271abb8459eb0565bc042e83e","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.49d4d79.0.tgz","fileCount":12,"unpackedSize":9794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdhAemCRA9TVsSAnZWagAAXfUP/2cCFyamDGFpebQ0VjGN\nPECWzqqSGdG0iFXVtRc9Q3KFwYJK6jqX62n28pQmS6BBL+InTMI0liNRS/j9\nfBoyD/zwp1FcxfTAnuMZAFr3IFWdB/D7COLCPf4rkQeUQcEMDctQwj0lfTPv\ndGvoa089K8Kgsl9Hk8toiikXtN+JYMdyqhEVJJK00krwFBb6YScXqnb5GXQc\nDJVRhui+5s0aOH761aRfYKwIji8bJ7p9bDqkAR/yNjALElGtqBWeM47cVH3D\nhIJSW1fXTd6muaQfurCln9mfVqBqa5v9AJJFLd8v12zQLh3bEdzaOgnnO+4D\n0culikazykaUAhoTKeynh2cwVV1in+VCMFf0ypDoZv8cWEb4/U0YFYCJvPpo\nX2tpgMUL1HWiiiK8zMM5g4q27sH+/i0mtb4IU6crS07pszdjzVnbVX80qI70\ngVkCDJ9XYkM9KzqFXlLb8LZhBU7/VpukWW9oTi/nB7aiBo+luiYfjQDS1HQu\nlNK7bcGWMp1fYEDj0o1ZTkBGelrhDNETa/v2f33j8gXFYEueqKFM2VTZKwdD\nhJvC56gWSU1pBey+G8lpqOmRwdWgTBCqbb2UvMmzjnGfp9VL0EZLxt3AKVk8\nWw3OBjhgcVkiWyNnTxAQuqGQv5wUl1aLnLzLwAdey8uOMIG8AxNQbOWrtQSt\nYNgA\r\n=fjtu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICZNYozKDdrrktuwLjB/XJH78+r/kcw2hDefzaqiN7kMAiAziCHZvPSvf2dboz6tGHzztGiPbwc1dQrvWWSAZsYulg=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.49d4d79.0_1568933797913_0.45166515406898955"},"_hasShrinkwrap":false},"0.0.0-canary.d4b0b6c.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.d4b0b6c.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.d4b0b6c.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.d4b0b6c.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.d4b0b6c.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.d4b0b6c.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.d4b0b6c.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-FndZIjzYO31j5zC5T+KwWCGFcC9PwhrPw/1abVw0uOviNda+R76SUU12iZtgZ61C3ZWSJhclyi8wwWbhO7v6VA==","shasum":"1ef804d54beb3e4df0905ad81304b8e841e835b8","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.d4b0b6c.0.tgz","fileCount":12,"unpackedSize":9794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdhBK9CRA9TVsSAnZWagAAQlAP/iGShdIz2a35Qp8zEWpr\nXcpBqJg8TJthvKWDC4XclXdQvAYv3fCP7GeyJION5XtJhV3awqiBvI9aLDfx\nVwBy4K5/fDT6aOT+mUO0NmaN2lZiMqJb4/Bi4XkXqowtc8FqdOmpsZnmlesp\nhq3ulM7xVbeJXxDLR6PQYLIKEc68Zrqr4D/1jrZ7TZhW/ka5NBD9qfLN3jp0\nKlfkYUBu8BvxgNIF8UrgfIrqvdcsF4nNKyM3Zm3ySchGrZJjPrj9FbjgORBG\nFbwXsUX5Ki3o74OTy2LFt7AJ0XgOSphvrJ1I00d5wbMs7YAfTsKEvfgRMDr1\nfUpAUoWUOXrs6dKkJMJYV4gjs341xPAr2QLM4ju+zJceo7VhnNsX/QTH8XVG\nylNMKx0+bjJ3hBi0nvUQ7Nd4lvIXTo0t9NZl14qCHza4OYEPa9XVaGg8c1yf\nF5Ev3KYw6MLMR9auZ0oE1Orr+9XFBfDHMGj7UcoWFVQlREJwLbMKgkPd3ROC\nNkfwRfmgNpyRIaU71F5qNcT8nlx8VgLuwQgXnhMCykct5a0qTLLhIu3XqpK8\nbkBPcEtwBrsP156KTHo/mq1z+PAVmzp75GQzVjnqkP8I7fsvZf4nH6EXTa8o\nYTu68ih4UUDSvjMyZxDns/gA/g39ACwY0+v+v3JMWxADdR6usHId2USVPI/n\nxVD+\r\n=Zk8H\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFEyz9nTPsMhcpXuUUXoyUXXDYIzkqB3PYBaqa5XY9LHAiEA/Jq5RPVh/ZCyl7E3prBJG6eoMAKa2004YnrijJIc3ws="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.d4b0b6c.0_1568936636846_0.2749711051061907"},"_hasShrinkwrap":false},"0.0.0-canary.5be6a00.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.5be6a00.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.5be6a00.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.5be6a00.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.5be6a00.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.5be6a00.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.5be6a00.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-DY1TgEE8fBY8U+25mhfPiY6cRFxICJTFh0rai8tNXWzu7zI4aIz8tU74xDC5uHiTMjf/k/OYyq+VkkA6XOxMWA==","shasum":"484df11bd34cdf82cee2d21149325a42e3196881","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.5be6a00.0.tgz","fileCount":12,"unpackedSize":9794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdhBx1CRA9TVsSAnZWagAA8pwP/AlDcIESiy8kSDIqJ/S4\nt9dMQlSrwWkrBM2/V6+Z21LVuaNwAzfn6USH0LWvfhSlvZEH9bvomSblXW4T\nw6EIRq5SVKvBWW0i6ekYEwAavrH5RFCvrLgdx5sb0HUEwB/2N7XplUZ0Rki3\ni7ogc4yx7/MRdnXcyF2o0I8YfWiEPOON8giDXUBWCsJWIwpwRpwPQSIW1OHt\nyu+lPQ12/r/zzOfvM/Y8FMkY+ZEFPTLffbiJrV9cHtWtiuag01PNuBmtXEE2\nEyfkjDXWV+d3ICtMGiezYppOOjGbc9MHGSeOqIhb/bvNo5OTNtbIGfCCcIBe\nE7ICLBxkXsoID89XZPbj+r6OQYcp5ZjQUovBms3sobby2CvuEmSLeWEtNkXP\nsWTrA1Z/hvZ/OOLgm9+mzPDppyNasEe+sxOr/3sgGN0xsCqUytXWxSXB6CcD\nyOUmBeRw0sxuzs39H7dkJsQikrLYHMxViVVM8EI0/vE9DuqiknZd/DohBCCX\nJuTFhH3gKItg2QBAS0zWjDI7vy3DwTAGgDYcEx1MN5WU6xeKbgFNfQk2hCCp\nT/Lec8y5/BqMJ7sPiLB90Lnjxsn23zRIWxDfzVtTxyowG3JddyZxltu4J4Lk\nQiTQCBJbsTKkcbc4Q7E9DyqYiMUzvpZ3Qmp7Xn2ngWnnzhn9ihX52DzlfF5/\nCSps\r\n=5viA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDVIv48nSxTa7yg8szfuRrSoe/LvsrzjNNaGw8CmaRDAQIgAKZxkyE5q+3YGjl2t/KLHmm4TS2ZmC8oe8ISgUc446Y="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.5be6a00.0_1568939124955_0.26487423433575485"},"_hasShrinkwrap":false},"0.0.0-canary.dd07585.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.dd07585.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.dd07585.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.dd07585.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.dd07585.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.dd07585.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.dd07585.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-FAL/1h62CVno8JY3BzxGu2DKUnB3jOgAfUVss5wz0yl9FUBO/pgeJP6wkvS+jZ0XNbxXmS6hC/UKR9HiHcUpJQ==","shasum":"9b44631f83ad269821484320a6eb3b0e5d064fb6","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.dd07585.0.tgz","fileCount":12,"unpackedSize":9794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdhCYpCRA9TVsSAnZWagAADgkP/0ynuf733dZwws+/yzG+\nHFLQo6YroY5E7233p/sy+0GG9Kfeci67FPNoiCQtK1Zip0rYUV7fqPx1NyOz\nz9923pIoWsl5YYDmcOpY71EW8hnE9FcN95saNpzGcJckAy+O47IZMwrSJJV4\ntqqAQfxLw4YjU5YChGjVjV+6jIfptWKjQXeY1O6vZ2P/wDlDrHaW9zwGd9AI\nmr0+9ILS2ZyABWFW03PVlIqZMZlz7D58rYm4XwrcL28lR+Ejc4Lorh11HKHT\n9TGxJNTDFxggADI8Kdh/zlal9yuGpbe+JSOl41arAtYq3yHxVBBnpbP29Gjd\nttVnchb2fXTMGJNEosazbAjqjnPygNZQzexsRzJJq6qYyf7IGO8Ynpwm5H54\nmILvwSpH18S7zdpUXCmG2+3TkMUi9nrv0G7PhXPV2kgNceHSRmb9IU0DWGhr\n9oxd30kvab0kqdfxN+zRL8cM1BebsD3nX89Mbsb5btb9ky9kJSPBji0B7N4D\nl4/VK17VJySvxz5ZJlKcxWihUYalfeOmeoLUvtvWUH0xhbV/rHaWpBTkPiZU\nk16T7gku6stmQEK7wXlMv4HTGKFtjMGpe1+FZIncP9F55vPbFwkKHXwfyoAR\nrvv8RVcSmDjxHOHYzEpDIp05M+TTlEaK/9DqWsrYmyCCgrT7ZyB6oNSrHXJw\nNiKi\r\n=0MLU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDb676YGhqlpMAVxfNpPtLU5/T/BmmVqkiBeu2lubQQzAiEAgL1p0MRfiTm86smfAtMHlzYMqBJ6ODlEbMTAwBb/rvQ="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.dd07585.0_1568941608428_0.7480819278347066"},"_hasShrinkwrap":false},"0.0.0-canary.22593cf.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.22593cf.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.22593cf.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.22593cf.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.22593cf.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.22593cf.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.22593cf.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-Jlr13xhrHV9HiZbTpKT+2856eCa/W2EdLNZX6+M2cSySiYV8GCL3gyVTnbJ+ppawa3u4+dbw9UrvgcTzT2y3Fg==","shasum":"9446972300ac78f45fe3ff2ca7ad04117cd67898","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.22593cf.0.tgz","fileCount":12,"unpackedSize":9794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdhCcXCRA9TVsSAnZWagAA/8gP/jf5AiwLVpCBAI9sYQwZ\nKdNAdtsTbE16jZSwGDiiFBB+BZ0p6JwySB2cckqiNnktWIvXh/KC0nYfFumm\nBrG5vVgQlxwwA+24NtHcTgVVB5cLTG38pvw0vUx9feg77YVtU4qzKOLxGj4u\nLGBjMkKZV63V9TTPRPdj7hIAy7lxlK1M55cQcGaHn2UYNR5/YgC4g4n/Zd5O\nRr2dcXKdPVqUrLL6o1DM5nbd1KyoYP3m3qIdKoEUgaowdNBo6stnuYHOnf1L\nt5gowYRe/t1s6/ftIaQVsGJBikAk9EayHNht7obplL19prcDhXePcdzranbs\ngDaVRojilZyhPE9OXeiZbIHzhWnNzyJ2PIu3Bv/V2DFEKVhefCEXsJvrhZiW\n9z0CSTF6KGG9nVPAIkp8QsZoHCviGvIQLqn0GSyVaTCEPLZSgDZezZYMt5Cw\ngAaPwU4GxUlxXJw8iWRrjrkmgjKqdfYs7OqSVnkS9M6/ZWQorPKwTCd0S5BA\n0n26cCclAeavCskG+O9tHaYepQ1dX1uOYithYCz+JMtp20iNaxaOuiM78QcA\nFSw71/mak01AtaAPL128PXBkhs6YrWYQ7tWPn+mYiLTEUXT3lMeRCIEsUw7d\nOXPFPQZ7qMNsbzzgGWnLN23Y3K7K3mHjSr0rYrfMswd/Bl59GfoIWknIsuup\nwOHg\r\n=A+xQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCtWChSDOWOZMPSLSaTiOuEsJo82dzFXD9PHyIudEU1egIgbbZLe4JFR2OqO9mSRWNboGyi/4J8fz1qX+RW2I0Dbmk="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.22593cf.0_1568941846908_0.7324826680902841"},"_hasShrinkwrap":false},"0.0.0-canary.a911dd9.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.a911dd9.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.3","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.a911dd9.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.a911dd9.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:public/fusion-tokens/fusion-tokens-0.0.0-canary.a911dd9.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.a911dd9.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-Mei5irOqqL3hsRtoJtvvk7dd93hyBftbjrG0RKgLBviPUOBsXN73kvqDbixahMCjpqnaFXaGX7VccfqAJk7EIA==","shasum":"97b6031d8615437572c1b904ebcf9e1f857a7032","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.a911dd9.0.tgz","fileCount":5,"unpackedSize":7574,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdhQmkCRA9TVsSAnZWagAA0toP/2Iq/TDEH5hmHH297VTv\ndJi03T7hwV3jLAzyroyHzI2BGPx3Nj1724IXebeaPQiSD975w27P5ChEpqys\nTrjw4eCfBf4jbq4BfIsmWJ3cGexap0A5Ivh7ZcJsFVlfC/1Gc3+k4quDacW5\nIexd/SI62nXoWlqZ9Zsg2tyxAtqzqhgO5zFfOI/B/U6x62DbefZ4KDkJgGS7\nx7RwKEYPmxM2aiDj092nvoeP7R3qjmYHRCv0p4kG/NnxB4s8zwUg67/dESO7\nS5sImIjP/d+c5mSDzLTDTTnKgPy07gd+U83xmU2tDHYpPyk6n+GssULZ/zWg\nT9S9aSLVMe7+yiFBdYCz69VHGxeZ0UboJd+gOUzVqgsxf1CXoY/yV4sjMaks\nL6o1biymMDq9zSjRQO3xln3SWfKHY9XfQEV+E7bUl9P4h0P5tS7gOrbVgIey\nJFW5BVjtgOnhWUTKm1ljo3iXlebWCRbWMsDVHnUC4G71YXm7ZOs5BGPj6BkY\nHPpiKCDaYU3f60upeCZyFWO53yr2VfuFhfMl2qtBJd/6Z/dlGTrXbbNhvHj8\nnbsalTPFiwELjHzyVOLTFOU6WUIiDCVy7GFIRaoby7RDxtooI5xpTv+kHuR5\nsoz+E4bu/TUFk6GLQBtegv8yfgxgb88ytKkTj+uoNBH9cJwy+4IDnBUCHEZx\nZyhf\r\n=JqvM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICqdke2owO1BLEEz6tpc4ld/MG8KViz1BaPUEbV8P3zqAiBa1s6kYChDPD3Fo9+AF0Rtuat3QpWanRiPDD10P+wSGA=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.a911dd9.0_1568999844221_0.7573078691549269"},"_hasShrinkwrap":false},"0.0.0-canary.67e33d8.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.67e33d8.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.67e33d8.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.67e33d8.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.67e33d8.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.67e33d8.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.67e33d8.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-gt9i/bPi03iPJkUKOjA9xDZAMjTf9NcJ19I9w8FdGUc7e9CI8JvbSKmkxz7c0KsdwtK0JtWdJtKqWP24L1xd3Q==","shasum":"beea8d604b7587be7f58bdc54ec428faa16bfc98","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.67e33d8.0.tgz","fileCount":12,"unpackedSize":9794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdhRo8CRA9TVsSAnZWagAAL4wQAJMHCYOY5I4n8qRimAYL\nNIOO9KJkZmBfKzDS5fuldqw2D6yL5YBUM9kVgN7ovxB3MyYJ33FtQ1dueoWY\nSrb0oHMIc52PLSQlXGXDoiw6sCpjkJjcAZJPDypjtGJE5GL/ZS6EOUoZDUbU\nW5nuWHxbI8Xf338QmTKk64nGWBdq4OyUeBrQbm/VNIg2lTTE+6z8g1vpa4cU\n+tz48TQpYC1XvUw2aTYoQpE8xMDwqHCMiFczbmo//08DNvBRCI1QttTcZiX6\nnxY7k91b3oHmYX20NOwguN/zPqQJaQ9LmEJRjgZjiZtyuxerQK8Gt3nakTX8\nzJS/WD88w7NQugybza/vJyH3hliFuXzWq2pKnoW2+o6aELk0i+XrF5gK8juA\nr54HLd1FpzmfPM+huH9+iInLGmKyv5eANCpKiueCwXfLDWMYazvMg3y7vGlS\nXzNb/7gSAhWYselF5IIpuAaDWxDlbnlW9x+WpPKWX2lfCYA53Xmifna4h/In\nvf/SplB2Os/4HH/kqRdKzK6rLy9pO/GMJMTV/EfpXRbgx1TqIEHaqfGJhxKv\noM3zj1zNsJHOKY64nF4R2jlK/t7hlGAm+wz1T+7QOUP5mAZKTwjQWt/zF+t9\nHHeKP1TQJO4ruEE9adFZnn8U+5aXROrAy2/+ciiIVMxwZVLDZL55YQbn0yWW\nC/+W\r\n=OdU7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH4g66r1gMYkCxMOrGc7+1LtOQIC4mC4WUdni1q7X0IQAiEA2NThJOE6SJazZKyAqUO6P4uch73UDbjqjYe8xFqba4M="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.67e33d8.0_1569004091648_0.09448498006389472"},"_hasShrinkwrap":false},"0.0.0-canary.d787a1d.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.d787a1d.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.d787a1d.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.d787a1d.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.d787a1d.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.d787a1d.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.d787a1d.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-Mxpzxjg84NVLWfCSDYo9Hl4oAeFlorqVepQpcdrvJCan3AEaLSMQ1BwaCQzPWaCeNhPvLdQWyJiUwmLq0Wl3uA==","shasum":"60e73d10076aadefd7e2d81c6c7ced45ea8eaa88","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.d787a1d.0.tgz","fileCount":12,"unpackedSize":9794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdiR1ACRA9TVsSAnZWagAAlP8P/1KatojEVxCawnHT8h4w\nu9GrMUiyCGTz6A9uOHGW0gWssf0fdBQ5Kc+O9N88q4Kq1YD2QmaPEJfm+Pdy\nrcw4YjHl8Q+o6TMOQA94mRm6rrtPoa3tqCfBCxJH0V4WLHORXcR3A3tVj+yi\nHwQefrjJhCDkAofugUl5vKhAelVJwUkPn+HpdSoI55Yca1yK68wsk3/Nm8oR\nNA1nhqSNReDroO8YplVtXgckfcZsNOyo+MuQsXFoijwn5Sl0Pv9wA8PrO9+s\nYdfFUNgjuIgweYsntSFdOkHrV9wpw5p+4jSV6nfi3nDrv2NJIj12ZEM/cw3L\ni6uWMLlXQWfdxZSO9ZUJOzv09HhYLvX+tBydAiuck3lmfShxc4OGanC6Bdv3\nkRybZiyrNsu9SFTsvg5Ca9AZwBBko9BonlT1upYETXXSEkJZTUOWAYzRbTzn\ns//Tsb6fT4hhtttt4Zxu3Z9Lmqk5MLtrcnvpzT1OfIJ9v4SmmCq6SSYX17Ac\nYIA1S+wiMp06atJ2PmVNH7tA4OOmf6OzDHD8S6y8sVOwsGOxG3jPQ30TXvER\nXiiQ0ZtALgyQrbhgvn6H5PyFx0R0YO7kQ80U+IwdBzbpEPSIRetM2k+xsu0G\neq+i10IdlpyG8xplWmBboCBETl2h8F+NvBoqhqcdTr0ZrUgWocYYGk0tb93V\nfnIi\r\n=1mlq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHnmCJHKtLufdpliO97P6vzqaHBeApeRvtw3Wg72qAvWAiEA7ped1YKZl4wzBE8VvAVt92SAnKcQSAalO694e6kB7WY="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.d787a1d.0_1569267007586_0.8167813887629978"},"_hasShrinkwrap":false},"0.0.0-canary.a399454.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.a399454.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.a399454.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.a399454.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.a399454.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.a399454.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.a399454.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-wEqeHSQg2F9CH9wh7fPa1cjshURhM1hl2Gsp2kLf40jHLg7UrK6l3KkSD+pQrl21dYSM0/VDGSATe+tmFcSOsg==","shasum":"abb17aef772d2bde1b552806f843895fbc0dcb25","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.a399454.0.tgz","fileCount":12,"unpackedSize":9794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdilNNCRA9TVsSAnZWagAAe2kP/2Yr2u3KXDt7Dea4ZiqG\nUpbJTLE3b0wl0w7eVYCoEOlJbOuJ/oN26C59o/WrDgGgnA4DzLQ9LsQuoyDC\nlVftc9TP9MwJIbtTKu9skTdj5MOjw4H4WReLma5esFXRiwOgIMf7aPHbgcJ9\nEJIMOsHMwH/RaJQLzshqCg390Ft7gvhYYlKqPYY9oMEPv9b75gT/Is1BJlp2\n6Q4Z+hlm/CJyNaFfMiyUycYyQz+UCmCkzzKP/LVRQE5Ci37GldNZ2g/tHRKI\nqHUTtJGgw97sM2ioYqMmZSWRO4DNlY6dumyVKdSv0/G0ABYKW3+BemFpo8Qj\nZ0lUDqAhmvSyldkydmR9p2wqQRfUMx2+TIJao51kby0YmZy8UWYffJJbh3+f\nno0gz/vly1wkWODTowbnTdkvhTzb7yUuv79rjd51SKiMRFC+w+MiCH6RE/xL\n6JNaTr4VSSwc8KLqfjfp1FMkybMrDYC5szSaBo5QkUM/aAQOl/4gCvWZJ3bc\ncROReqms6hHijI2yXS3Fx11ti+2teivMXnFpfTrHuX4xDhfguDMQnAUd+Ngk\nF+l4FrSjHV9SBcFEuXcNMiUk6uNNoYWLCaW+CKi3ZYGXiqdQqG9inpbnj6cp\n6vVm3XxcHaryYU7TtcJ9eYpONERbmpveIUyJLls2Vfr09GQrBR21klCpxhDt\n+nrX\r\n=21iU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC23wYQgWq72HaQv/Uf+dKlMnggHtzL1DkcJt7w8jctHAiEA7LcTXdbI1gDkxQHMlCBTS9SYOUh3vunHcJXSujEG0dA="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.a399454.0_1569346381108_0.37809502165081654"},"_hasShrinkwrap":false},"2.0.6":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"2.0.6","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.4","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"2.0.6","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"2.0.6"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-2.0.6.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@2.0.6","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-Gg62EKnwYXmtuRLQcukEIYiZDKDlF1RCWOQDSN8gzsYFbXvGs+O4iklqcDiqBwDAt7YZ6I0AGIzqGaM9bw1HrA==","shasum":"3b7b98b8b427f194be33de838cde3a8f949c9791","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-2.0.6.tgz","fileCount":12,"unpackedSize":9726,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdimIdCRA9TVsSAnZWagAAmQgP+wbP+zqQkDGd7iJvSuQt\nnXAPRgra8NasYLc094mEh/4aERcmMqc0/sq0ibPzHckhNVw+dKHmxV+9zkes\n0Ucc8It8yzSj/0RT0JPeYu7tPRYo3ZtU5DJe8vzm+L59DXzs5HzGyvj0eN5+\n4R0vGSyfKr0Ttw05NFoPvZv5olWYc3BLvlKDZOj5PgCfJWdNsbZf/s2yFL7S\n3xA7fz8GbWEDlGDd+Meq1COsP7L3KI111UKXcodA18fxlFUE+HyNDoykQVr0\nAcwMxWRLA3bjIWez4BVUSKlff12VqcelEfOPf9hXTZ9MKBJA9eatB2ilneeB\n3xj49aKmUA8mw8e2zElvZCPYjTW7uKsBB8C/px/T9EzJC49sP0qlS5iSQsup\nkcB822nvhHpgMJCoJgsVfQ1j77ulNoICGHadMEP4nKFtOX2f24DDzg877LQW\nKJmt/x8Qq3kc5e2jXHs455t/jiYpR4eDNGuz6HWC5C63YUmSwwxBUSTG8WbJ\ndYupSk77fekIPJXVylZoL0sgd12mAZMpLmzO1jv5mWORyJcY/TC+QfVCyKoj\nQcJ5wvS+BZa2TXtNHML2sF76JQauBS43V/btZtpFFt0jZNW0PlvyIzQ7zMtu\nP4bqbEJ5V2tSXwmoCUVW7Oa21Sze0c8YaSiLvKyvlYW5m7Quvvw5ESK62BFL\nzK6K\r\n=IRRx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDz3a7N4MfaJrjhLkjXFAEdolXseiNOkteFB5mZt+sc1QIhAMjT4OYdGh+6/r8PXl7sdurM+IKz2QJDEVyLz/igRUwR"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_2.0.6_1569350172691_0.13096473080933047"},"_hasShrinkwrap":false},"0.0.0-canary.acb5af0.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.acb5af0.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.4","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.acb5af0.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.acb5af0.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.acb5af0.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.acb5af0.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-4gFY5VfdEU0vU9tRx19ITwzNPcQ+81tYcpsr28Xx2JtAl2GqPeHHdB2I0Ua93yLS1cCoHZnrnNx5Qyh2G0EtRQ==","shasum":"2474968533e302852d616ca979f315f4d100b413","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.acb5af0.0.tgz","fileCount":12,"unpackedSize":9777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdi9gbCRA9TVsSAnZWagAAMdIP/3dC/wJnzL2j1bgC9LH5\n8Y2jlWC/pTdeaxvi8TLFjd2dAMM+Zgai+OK87h0C7pve87ENeKbk43CIHByr\nd3klSuph8AJl+6lz3VqIkXnZLqdoip+rFob1kP83IaNTupiO+GbvHFiTmWIp\npHeybZTM4+WJ43LT0ALW/upSTnb1F7NGQ+Rx5ej5EVPEfbFk28OI/+XF1+0d\neFepDG7PWgCGJEv12YsTuGTnpFnS4kfM1b7tnjbMU1K85Pk8s60NZ1IFc1s5\n2F4aHZ+sD3WA3C0eH3PUegQfaLzMg/iziOH3vMDPBT4DUf8Pi+lvM4gYm0AQ\nWS2s25YOIkeFto401uIAw6fHllYgdPSVXG80QYQz/VttnpmMPUPwlpnhAsUE\nXOSQzvO+KW6fvWMfZd2Xi4TFjOg3CeJEQu2A2l3BL+pHxcAYcBbwZS3Is+GM\n60XnCBDlO0vkgQpcwkfO9BKJ6vzrVS3COX/3NIZtqlQylrV4GLZC02eibwHV\nb/a/yalinCpDknRWz1q984yhRX4xG2NFyNY5V6ThAZL23caM8vi0Dto9GtfO\nM+3lORpkmSrcBgNA+WxTWGfbYpTrTHNrekQ7gPaw0F9n7uc2faROlUKceZJF\npWGjR/F5u1juRY8J9PnKfwuGeiXMkF2ZZcQS7wwrRxoqdvNAqPHYhk12E3EA\nwSgf\r\n=kF8S\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD+4ybwe47rH5t2mwlV35ecSj5kMVmHh5QCJnKaoVOQYgIhAKXjOWItRlPSshfixKjSk68e0I4oqAiUcetX38ghjBGy"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.acb5af0.0_1569445914674_0.497524647349167"},"_hasShrinkwrap":false},"0.0.0-canary.d7c5910.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.d7c5910.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.4","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.d7c5910.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.d7c5910.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.d7c5910.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.d7c5910.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-N+hXn+C3Yh4h6Kw72lAT+yOrPSiKbV5Z6UTo/PW73NkWzFTxrQ5Vq4EXd2E6e0ImawYkJXkCmZ1DzIp55DxZ9A==","shasum":"b76881cc55c280558020a026a77aa40c408f3a88","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.d7c5910.0.tgz","fileCount":12,"unpackedSize":9777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdufX8CRA9TVsSAnZWagAAN68P/0j7cVSeeUzrAtN6e155\nYkv60FW6wsG8rFWGNkFHfm0txAzODoG+LTIhRmtUbQ5VMQhhYOELzllcwztW\nkQbq7XXyMdW0vOnPNc1Mz1cfDlFbzY0ULv1FKo62AHdEyvnlvjCottXuy3vt\ngPM7Uw8XAewAQoTfpiduWAYmhqy6axqd9aGwLDLI4kfdZr4eAVR02v+v8VCe\nTGqOkZhC6MaIRIYDTe//XxItaFbCkW41wmfjOvw8u48LnV9pEbpV0EI7DcMM\nnXkJxsoBC3peVCrGdJc7P/84ZhWhD0CyOHCr2egktR0aEXnJRUv3hkqWM4mG\nMY+1UlTtQ3wlDORQ8x5BgEnu6BN1CTfBT+MTG8d6O6/Gpwzz4m8tKedkBraM\nDyB8SjXvfCOBko+fy6H9Z7gSMafhxxlWAY7kzFCgxGD5rlDWzkO+yM01wwC1\nfkAovltQ+R7SYVit3SUBhJu5Md9UPf/eBDEOysLPNIdT3TBQwYr7iPg4AibK\nfcs5crMblnlVzEvJtmDNene7WbeJBMRHVeRLzOyddAHYdvnQcLTOSDS64XLt\nIBXedIL0LKoi8XOUC+kFs4souehhd/nX6Bd/37XTT/KbhxzBkS6BprdYTYJ0\njnO+qB3c1VV9hCBIMK/aH45WIAue/IqtIeW7B7UL+BCD4i/lSeHFSSqIadf6\nZGNY\r\n=OW54\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAO6b7x+DP27RkbkQpDFN4Y0H0tM7DXcakPkOMQNS952AiEA2ZtNUWzSpc8z8pdbzngDj4wKKZDRP5xEnq3DpoXyQGI="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.d7c5910.0_1572468220258_0.42777448657238737"},"_hasShrinkwrap":false},"0.0.0-canary.f12f055.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.f12f055.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.4","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.f12f055.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.f12f055.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.f12f055.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.f12f055.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-sLp+entd/Zp1Yq5nuVDKt4SXMnMBKa3urHRkCRy6kgRWRUnixIXJks2FuxWHmyTsD8WnBdCxsB2lnbVeP76lfg==","shasum":"06b4d951be0e8cc4f667d2c8bd17cfb85e405389","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.f12f055.0.tgz","fileCount":12,"unpackedSize":9777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdugn5CRA9TVsSAnZWagAAPlEP/jEWbvmSCRgV4Q2mxABb\nzFVaFh4MJkbdXwoW6mHKFIW4nLtgbd+6SI1V1LgfBoYvquWP5CHfFfW6fKji\nVOjM93j/bz5YvvGT8NI6+6HkJpS9DG/vfBBH5ywkHe5d+qGPPhn4HgdEYBKz\nxrZqo1UtPydlAxAr/qisFlNN8LnHVcAIOvyc5Pgcc1Ph0Iai0qjPfoqfHAPq\n+UYfG8kmnFMfROtE3U+6iTSjUX79bVWo7vN62MwDH3NlVXu+7FcuaLRRevBx\nFMHopVsb1IUnYZ4VmXN2fit31Ql533UJIzIspAr8vp/c+86NH24EqZ50wu9r\nBJ9fgDw6gCbR6iJlKCdWM6sDhOGKhLwiGNkAPR7DSfYXGPGvq4fjtMmYwOxR\nenCDEisr8NGqtB8d2WnKmhZuhfRvM1d9IvMwd7TMsbc30po7iiGqlCr60iKL\nXnlgYlpxkplVtd383XzqH7PK18YJQ44biybUD95+GRluVzDCWQddS0h0egEC\nH6X6FQVvTy9ykhweLKIU3MYWrK5/SEH9eTsA3ye0zO42ElYgk5MniGq6QQS3\nF3kAepjVyBCn28L+B9rKem+Qu0wmd/a63GWPPYljjUB4x+EteCotYaZ3nWgJ\nq907j/rLI13fBUFxNQMYEuSYUzr9BwH9A+YuWpw2MW+BqvobzwEhsl4hvSb/\n1XlE\r\n=yVqz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAEtyvew8KbKZpGgMeEI1MjdHeDOQWntJQpn/RqtcV6dAiApdiUviCxaW9+FdPSAMKvthKpjPSZcgqNnbAhPjRKt+w=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.f12f055.0_1572473337285_0.788065491274766"},"_hasShrinkwrap":false},"0.0.0-canary.0b935d0.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.0b935d0.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.4","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.0b935d0.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.0b935d0.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.0b935d0.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.0b935d0.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-P9JRQw+G3H5livcf9Y4BM/y54hQb+RsFvLMm9WgkiphxkfRFjvMEyZ8hpZsewMvRVlSfwcJe9MFBFBt0D9phog==","shasum":"dcb4e8e824a5e498af23ca5dbb1db045f9794570","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.0b935d0.0.tgz","fileCount":12,"unpackedSize":9777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdugoKCRA9TVsSAnZWagAArMoP/RQrCPqwx51psLSVuZDs\ng3iWoKIalKZL5QmWOWEyn/4JQyMD3kW7b2UA7VmDszZzbnicaWci/yHohh+4\nCNkdubFN88ljZA97wHLI/WdM0oJ0whzqVyBSiqk0ccMTUlqtknfNb4q/91gg\nmA1YgnhkttbYk1Pd86XVYCWAskO/9keLavVtuLaIplpfocfs5YAmPVmsgonD\noVXWOIVJr7GUGAr/9GavQEnHCdZH8Wwaqv6XepECXclm82v9TUs6ohUYellU\n8xBalNFy0h8Q5SsBjVeZHpOKPc/pcaS7BP8iqCuQzJxYSjeOR3JOyD5Q1KRJ\nXTPD4G4Oeos1ktPPRFJGiCwxGZn99s4JQbEMLHj9cKyChR2Wqhb1KY0csJrU\nlZPPzE7RO2rdYMQxVb813ouZtij5qYDNx1XE7AXDStb4NtfxGGPCKV2gmYqM\nascH+9Gp5oxPhwUULm0dK1oseQA/xJj9efaOaHvXEYhtoZL/6UWYPCgRrsFJ\nms/lb5DqUNxdSdhB1hmuhBBVsB3ovQn09uXo7hN2Re4s+ZTIYc7/bM7qoFhE\nBmkjwW6LO7YTk9MnjptzhWBE+FAi3J7HXy1Z4fMHLsNDoxH+ReG/ixE73ybR\n4n+PxahBOw80l1yIE4vXBkw+ej5g0JkX9iEil18G9a0cKWv3tO6kcpXtmkEN\nHeco\r\n=Zq/i\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCmqu8nOkU983oI72EXE9kVpSUHcyYzjN9qr58LJ0QaBgIhAOa7k7xreMLXdFf0J4OKqc6hP4CC6RY8zMYD32njlFpk"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.0b935d0.0_1572473354474_0.7781840423618074"},"_hasShrinkwrap":false},"0.0.0-canary.37af1b2.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.37af1b2.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.4","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.37af1b2.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.37af1b2.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.37af1b2.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.37af1b2.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-OP6BVHMjfqLHy7UJN4zBVF3O3S9eHHR3iqOYdR5/SJVorCokkhGUV1Iu9D/Sx93d89Nt3aP9JaZ9XEwyqh6UDg==","shasum":"652c1f2f0edd643cc608ca8585299d9c4c80c167","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.37af1b2.0.tgz","fileCount":12,"unpackedSize":9777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdwQffCRA9TVsSAnZWagAAgpMQAICtJV9VtATTa09NR8kz\nBccVQohMTkmDPQw9vZDSwgJI2D4SN0U8KAsV+/AKv1qM9Z2lm0E5LHd+d2WM\nGFxNHYCA53mGt3axu9JN+lUnG3xGkyLCRyHu13E/0bWW8c7t9at/qNMqyg3D\nuzjBG1+dkOe8GSb8gJS/a/dY8uqpOwW/RQfnbI6StgZJWU9qJHcL6loPLNNj\nvP5Y62ogFzZtspCmsIJdN5Kx/vXU/syhU2H7tUZny/8NSIRXD4F/Pc2pB+Vf\nhkMcKEE5674muxJe7wRxR6O9lLoJD8xT+1VJT2NnyugFyFB6bc9dPvRFjdmq\nfIBcSXa+W15yne9nuMDwnZbJw8XhHN6nCZ5MhElP/ZUwihTq7kW3Fc4hqFgH\nh62wCTaqG0hSsoEeeZhnkY+OXJECrfrnF97Y2nB+PZgM7DqI1R++CioU2CmB\nlmnNjHETC1YHUPzq/O2Mnkd0HPq0u4vdNhBlCEasrVBjYt2vary8+jf9yqpA\nt/G9123kG6+0X2A0DuR1dD5nb2a0ALT2VHmS46kZbAT+RUtpZsAers1F//VC\niWn5558Y5gbIwbnUrZs5XcTKsyWAw76CizXsvXh84lFIMXU0psR9bOzDsvkq\nO8BIPV4ni9d8o75+hPoExIyzxxI5bXctjhjkI6qTYPsaahZT42omqb4x9Lln\nvBAn\r\n=+QkK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC4+EJCGfQnxNlhurbI4dUGhRsr3EzTkUXLHtxmuxBPIQIgWdWYisVY8CvFOeGoF1jfoDnNtC1QWheIL6nhfSw/utI="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.37af1b2.0_1572931551393_0.8745412495980125"},"_hasShrinkwrap":false},"0.0.0-canary.e3078c3.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.e3078c3.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.4","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.e3078c3.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.e3078c3.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.e3078c3.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.e3078c3.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-brIfOc5Nxkt1UuLbXRvGEeyjdvbXMQs/htc72kTpt4nWFpSqKl7B2Kt9Czmjxy2/9JCU3pAEj7OCtuKawXnN/Q==","shasum":"abb2996a644b7addb6e39925e2356a1a39991531","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.e3078c3.0.tgz","fileCount":12,"unpackedSize":9777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdwejrCRA9TVsSAnZWagAA9mMP/0BBn5sbQeR5yrJVaBYU\n/E3znmJnGFjoEDzQIOOmrGxLP2IG0tNX/iLKUPDxG87mBHZH/8fluBdlTBCg\nsIY5fHalPRbR+wt2LCUd3BOhZgAltxqLho692Fx+ZhGRc3h4jzYMknwXVAbH\neKhrJg9UsLr4HSz1qFmZT5PcT9HqAScB8TNkXrYgofJgAMchUfxTOxGqQCd8\nLEGU9kWdouJ6w8SkEH5h4lqawCztYhdpliHfct8Zn8VS2qevC8JgDe9ZDWmJ\nuqcZ0dnZZE7wEyBp0b0zhoUbFptkV6BJLyar5IlxeqhFT3RRkUxacQLQb26z\nKhRxlbJIiMhQurAGQlE9dUDoAj23qwTInTJx7zFB/hfKZKI8Y347XlSuVd75\nOfr4VkefgLvztXlpaWLLZIKZvt4tgqjhi55DYjXE/GfISUOxDLyyb/IV6R1f\nXazul6pf5OmewgKJB8Y5AlU3je5ZYSQY5Qk+5wRzeblbgRi/7QOCtrorgJGt\ntiGZ61CdGFp5daA9NpiCdObbrKE8wRgzIeS7iPxTR1uoF5WndC9YHz//q/Qd\nqZIaJp80zO9dzFwtU/7WENYM0QAq+I925NKifXg6cdUmjpBBqYjXuDOClqh1\nC8zpS7Vao+Se0S1Fle8CE1JmmjKwsFLSghQBSWYTJTLecpsvs6CmitPGWseH\n36J/\r\n=8hq1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBNtlNm5OEmvUwRzb8SJVzicVl12paLlNX+Zodb9dQq+AiEA0gUZwrD/xTioCUvLJXWo1CfLpN4gxe5TvVxOx7PkEGk="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.e3078c3.0_1572989163255_0.5191587194796998"},"_hasShrinkwrap":false},"0.0.0-canary.f8e4f0b.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.f8e4f0b.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.4","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.f8e4f0b.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.f8e4f0b.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.f8e4f0b.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.f8e4f0b.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-Jl+G+tpIeb+/wNkHY0QExrGCFQmLR1WeeO3j+244NjKZdJ8FyAXCIf6XEX8LCgMv8NeNMe871Zd7E2pcqDJy2Q==","shasum":"82ea122084145a0c3783b501cb620caf704f9e0f","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.f8e4f0b.0.tgz","fileCount":12,"unpackedSize":9777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdybK9CRA9TVsSAnZWagAAl5QP/iDSWoI/ed0yK7dVQxB1\nWpwaZXVDNclOk0hsFMyMNiYMs+CBMsVWnDjveZIz/t/SLlA6qZXsEGZGveru\nqXWBmiF4aMImuxPRTkPiS+TBtmtakWoQeREHT0VJJH6lEqDXC7Bn/UWAQoBK\nawVDybuTJRrsp90n6xjjglSlnDJ7o3ND2Sl+nC7VPcP4gt6wxFKj0zrcv0Mc\nzBfcNPoUe8yPL2vy3nvAGWUqGOVuQPBZo27KqGBAUf5LJ1eIWoIkGeCo8OR4\nmLpFOoroXpimzUdbi6bMrqZhEkpjV181uuRKSvP0tASqBuOSa4YBYZ5fvOgI\nkXtHz7kspgM4pajNRjfJwE4ycX0G51S/fguTAcB5x2M6U9Bjgqdbgs5ObaQz\nmcj8tm5WzWtlxrRZ1MvfZTh3bIy79PJ9tBm/UzVwoBq51QzFdfltsj1rC2H4\n98FurYS2yt5XMkt09Phl2OJgzceR/9MC6zhhlQuVHiRoce/qFsGrKrbGnS50\nKdG/v1gF3TcDs95CnClh458PQt+barFCDTtfM6Cjb2DsAS3+gCoNe17lNVd1\nOCVxZbmS0v2uxZrgYi12mvvsAdcJWXDB8jDVLj/9Wt4E655ONivF9S6f1hmI\n2jx2q3Lrqni8OdAvpVRbY27TM6ewomrmUeyZVLQRcSQ8/Nx+k/obMZ2lzDdp\nC3gm\r\n=pQfP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGOMwOv0WDWlW+RUSeKKdFdmaI7ZmbuNl4t/Yt2fH9CrAiA3xIE1SLCg7ZFcL1okL+FcS9ORYY/razI4TPx4cr83Kw=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.f8e4f0b.0_1573499581227_0.3299410732847521"},"_hasShrinkwrap":false},"0.0.0-canary.0af264b.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.0af264b.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.4","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.0af264b.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.0af264b.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.0af264b.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.0af264b.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-RS1NgQl7XBMD1nhI/j8mxmwdV6LUQwopz92tJK07Mr+zDmFnkH3e6h5Ueomlfp/Zzuj1v4xe4eqtfP7mKnT5AQ==","shasum":"b3cbcb26f0f7451207283590f098531b8fad1c84","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.0af264b.0.tgz","fileCount":12,"unpackedSize":9777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdygz1CRA9TVsSAnZWagAAgaEP+wURktjWhusVPNSFWaL+\n9rPNzK1WceMPyxNsRrq9dhOdl9Z3wWuVO9qqeST+DKlU8f+JO1QM3bY604Zy\ngH+NWVmXAeRuOViZADPuT8WUb7gXK+Fd1eBOlOgOcuVsq4apju9nfzg100Su\ndIoil72L1RCO35gW5WwUaUmXiTyIFHqqR/GVHrUK7qtMVF/umGmA+QB4VEP4\n8GX04J+woQ64K21cvwWfBGF3OPks8kasS7nsjVqwp/bNfdKTFAVcwwt35V8s\n+qKhrgZN8x8YBnLxWrQQ+r6ugalFz7NQSnPldf+TkHL/nsZvJBJ6txjYLK7L\ntNWKpM78J5GO8SW7xYExPTbpWM5qq5FbTuWci44XDe9gBmwta/xLEejshtai\noRAGFFcxYRTzJVbcZc3TFUML2VzxQEKx3QmAj/f0f+Mxvy9DehPqeIk7mzXB\nd+ibpHEj46v4vG/ReYpnDdWNcX6OQaxnZTUjVXHsPXJtlI6RHILTmAdchvra\ni/jrG8Qvo4Tx/83SPKrmh+EDIJaFkd9/nS06kMZ6JAd+ueivS3LXpzPFi1o4\nw38AewjSHlShc/x5qx+GskfXjvbW8dX571lgNSAs0OfNeAzJBXkM0TopinvV\n5u5y6pyrE4DDAQPo/n+WZua3kUdy45efKdhr4QMW+InQ43vSpJr+RvvEgucX\nLY5O\r\n=/WDi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDVZt2tXtGBlLwTvnorqQeF9BsX2hRnZT9l3lVbHj+YTQIgS814dQsgVcHrq8zMNZ6scU8TG5X/sT6U1JLHvw58DvY="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.0af264b.0_1573522676763_0.2654323002529324"},"_hasShrinkwrap":false},"0.0.0-canary.78c977f.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.78c977f.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.78c977f.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.78c977f.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.78c977f.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.78c977f.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.78c977f.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-6XOY1U5PqaTxpKRztHeh6+jDIDMjbym3VL1DQxv8suyjEirCnCmliIaZRvgMwcB5wrc9OFExWkO5kSXbmKtGAw==","shasum":"56c0fd462fb6c645ce98e216e13dadba8bc58f44","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.78c977f.0.tgz","fileCount":12,"unpackedSize":9794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdyvCHCRA9TVsSAnZWagAAnukP/1vGEV3zWzwifdYmluOH\nBt75eYlXDM/BQh8ygDnuIFwVXBUNwsyPnFCudD7872jr9AWu0eY7ZlX0q2qv\nJJTIk0IiDYE+K6AuVsn/usFNurEm6UhYWpyCl97WOTnFjv4BGcOLzHJHznj5\nh8ZMC9kFURz/bCsb/AeFSURM675V0tnCyB704JuqlTWBCQhOROafaPtanGn0\nP9vUn5hjSdA2V0wqpSp1bAPB6zT2R/slLDXSPucXnD+md+YOIidZrZ3rIclt\ni2L3GIfeIGKDrsyr4TyacqmIR9RR5hrOfed7AiiGosR+mdsT5L711ZqIkPQw\ny02Sjh1Jlw6gwDh40KR9G2t95+Ypj6bTKsDwkxuGCzYC4bM3U4Fyo5sJ/d37\neiSBA5TRo9M2Kl7lxchHoEnZp8KxgcMX3KL7OkzCdF/Hx8nCXP6Cp94uAaLL\nhDnHcIHMqQ9FmffnQATMLJkq++Bkq8nP4NMrRPKf/4ci7ac20XGoCfMFjWuy\nxh65G6IUf/gPMSIC/zo/5Y4NDg7RiVXI6HQW+wz/QABkG6MQ/OeGWAK9xE9F\ngE5Ds+M0WOJLu5kWKDB4KaPYGCp5fiEGDeR7ibR0Ur9DrVgYCdDKA2yrvqUu\ng8CA5UVxix0AOnLTTqlA4c+fUW0nJnHdM1lqJdoTYzIZwlMk5feiBTFssRdB\nZ+ii\r\n=Oars\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCgTyLpP+xRjD8q/qsb+jSODDJOdE2SPGE9tCytEIwr2wIhAKAmoW6ML7QSq+LO2fxMxlK19Bx+sP2PLwabSM5GZoZo"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.78c977f.0_1573580935336_0.35691855099193215"},"_hasShrinkwrap":false},"0.0.0-canary.0af264b.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.0af264b.1","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.4","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.102.0","fusion-core":"0.0.0-canary.0af264b.1","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.0af264b.1"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.0af264b.1.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.0af264b.1","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-FUreNfG/9QVQMhpSVINRxa+VTSm98k6e6yHt7ROtacU2SodK9wrAkNfnMTVMrkq14txI1EAl7WVDH6JZDAnxfg==","shasum":"ed62b50d03e53c1904b8705142bbf03968fa2735","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.0af264b.1.tgz","fileCount":12,"unpackedSize":9777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdyxU2CRA9TVsSAnZWagAA1aoP/iYMoHiGXT9TupNNkM1f\nAGN4gyY6YoIujPFvuJZFCGDsQZn5j8NxQhYzMfFN1fUDNVXjS72gqoFLE8Dy\n6uJNskuRzf5uLFW7tZ2hLhLQ7dKN51fHzV5LV/89wbGSi8MJvevRHR1CSMAr\nHwOYZnhC0qc1iJd8G8BwWO3NjQBA68J+L6Qfu+g4qEr653aZc/J8wCk8Lubs\n3VJ/JqAxDy42vpCAVg/N0DRaafPkSe5z4BDjdxZvrqD/ql4WePZY/EpU6aFW\nMVQjznxrkjvU3ewPlQmT+PcmgIG7IQslA5tFuqsFNAiCY6yYEwXmgVKvkcoM\n2BVvvopuj4aSdPHyka+1jD2yx3yP/RHhrEn/KT0pualh6zDbKPa2sCXeoFFO\nuMHL+LS7DQnvZKSqX9IBPVpjBalmSXRBMW0dB+ssfaNcs1iK53YrOzauhGrW\nxtRCkLLk6NVHlADK7siDK1sPexC3EbuCTy47mBDu9/sFwH/BdeQQSdn7TiMX\nCA1Yk6qoTZU75At2uxGlspA2tZUyk5w+vNv2RYnpAMkgwQ1bIcyn+zaLYGns\n2asKfRMDTQRFRa9161TnLDFfzMXM20dXZ6nVA5u+tcBG1lWExef5rdr3KPbF\nU3qJA2ZBzY41M0NYFxVYBUbTszUhOmAXluCoMjtFh3bahRkM0c3NEKa2lrD7\nTytz\r\n=HkgH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDemCQ/FzET+Wp4ko+6/8Q3NMfEg7NMkCTweQTmg6a4jAiA74eWNa3AOApIAowEpYP8m5+vksBsAetqbNLwqohNnPg=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.0af264b.1_1573590325645_0.514417208675843"},"_hasShrinkwrap":false},"0.0.0-canary.cdf3e91.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.cdf3e91.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.cdf3e91.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.cdf3e91.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.cdf3e91.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.cdf3e91.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.cdf3e91.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-4CR3/JAVm74+t/BMSmpNgMZdiOCeVX+qXUAiwP5Q55cuLOsqAzqGgjqwS9Uc7ZNciSBiXL9st8GsUI1EzSNpFg==","shasum":"92a1b803134914a3217c630a8ba02aa5f26eb37a","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.cdf3e91.0.tgz","fileCount":12,"unpackedSize":9794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdyx58CRA9TVsSAnZWagAAefUP/0XCh+MdbwlNekuJDXLN\npdlkmJi/WHcBA5yDkWGZvkJflLbXvY4+gpqU3h8o+9t/VpUxCRm6XD1DHtLD\nygDpfIQUwbqoUYYi1Xr7WY0Ilh8PwAQ5QYIvJU+8xSBAj9nN2qfw6spfgJ8Z\nXl/+dceyOdKungow/HK3XiHmNyMn7bPsOe7Iqm5TidLFMTe+9WxKtF0qrITd\n4HlciVJSUEHe9e9xmZ+DMbm01tcIY2mtBiNB7QuCnfh0s+3k8YM/vo8kUuAs\nskdcGTLDhkG52nCE5wOOp7/HhZ4GiduhXCgrWH/kUjiXjL0nhLSOHbHGgCd6\n7YrxmONGXjgDqOn8CkkYffqYn0xHLE8b30e2N3P3ifP3/INB3m+Vk20DTu64\nuAiCXgV42N1nRivMS1/yH4WdLyk4SRSOT/yQRNFp9ad76pxrzWD1Y1Ovzmsr\nG/4dwf9tpV26DYE0CoyMY/iSKZkglVTEUYf1EnrVnlcCH6aRGqOUpnmWac10\nxyjrkeZW1uIjIAVra11FWUl3b2NOd5syY874erdsYfawaKJDrPccYlVsqJnL\nPLTsYD59IiDQ4hGNHSMkKZthHMVKPI/fe1t+e0zp+8yYHC1ead4SmFjFDVhK\nFJj+aHJtpVkfL2Y4owTE3mFbJ7Sl0BWdZqNlc/uLhwmclX/DDtGKHvhcca1e\ndkW/\r\n=E2VB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDd/D2eFzrflTCjR1yV18Mf6NcimheHvqJqEtOXSXXfJQIgVmJNX4GG+wb/bovxZQc8q5c99SWA3PY797/GzEB1JQk="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.cdf3e91.0_1573592700110_0.5990767395271985"},"_hasShrinkwrap":false},"0.0.0-canary.55945c5.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.55945c5.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.55945c5.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.55945c5.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.55945c5.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.55945c5.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.55945c5.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-LpAmKiJGzb/HqQV9qma5lSl93OUCPfPB/n6vbeznVkl2fFK3hBEb8kdrxzEcwrfhKJqSV7EMUS6cl9PTEiEC0w==","shasum":"4ca94b163ff0f4125cc6d93d9238a0bd673b1417","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.55945c5.0.tgz","fileCount":12,"unpackedSize":9794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdy0btCRA9TVsSAnZWagAAjnQP/1RszHuIGrpUQmzB4mWM\nT0EOgsdnYyV84RfSqwdLACH7XCRTfDqEHXayi87riW8hrG2MglS85G8JzgKP\nSOlTJ2b+iZSuGi5hfD3AHei91Mwt7Mv5qxMRl9kDVqlZ48mRyrJzxFCwEkcK\nSZ4GgxjQtiaSFtqs13yu9V7CH/ny5PLz/QUxsch0rfr9t+Slg7c8uOZ5dcyQ\nTfHVAoJuBVnSSlookLkQhXhTL2X+69V9rqn6p+63LCxyXWCThCc6i2a2EwLu\nmyqGfQT/cbOPtmV67tTaSaLFYmLCZp+VkxEuNmH4U+Imseo7yE14LfLTQr4M\nAHZRwwxu1XnWMszzKwZvpp9PLlcaReRWp3TnPWxmHTf0AEJWUcQ7lQRDzxxr\n6wVslbJdA+2dmDVLWFe4wJeCWH2bwNaWtWQLm5auEGP9Nv3dbvRAWS4dFRbH\nQIKX4iWzi4Lg+ikA8e/EcVqTaNSdbdTgAWgf8U91zSISMeGLk8HtaiQlaCs9\non4qGGxQ5iGFzJznBGgIGI5MTvxuHQsalduFpJ87FnKGGRIWopKTC6wZS7bk\nMJIuEAux1TKdbBFklMHafiZ+eWRDrLZeVHJZeGSuFr2Qlp3QMKQD9uc0bxZx\nN9tUCMsIJFuLDkL/kU6Usk1rArW9IQgn4XyRvM+KNMs1bwcJaHYTrm1DaRmQ\nftYW\r\n=Yq94\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICIaBiMVOo8CAqFjRr1NE37rL5NoZZL0ZMa/4hnRhOYrAiBzt84JRT8PkhYcwuSpHuz+ey4UPEkPjR1L2eAa4QHLbA=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.55945c5.0_1573603052730_0.2550660532875064"},"_hasShrinkwrap":false},"2.0.7":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"2.0.7","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.5","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"2.0.7","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"2.0.7"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-2.0.7.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@2.0.7","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-UfoL2M3oozUbe/qVXTAJd9wLIXvvVGHScRSDcCpbKXg3dFbldkhDhKr65xkN+3cHAwt7mK7ebRPyvi/ZS3GLnQ==","shasum":"776a93f39dc1471385ef99b2e598381b9ea774e7","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-2.0.7.tgz","fileCount":12,"unpackedSize":9726,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdzGcACRA9TVsSAnZWagAApmYQAIDfuFtnrnmVCeHni/3r\n0xQQGDWMljCetOqpm+Mx9D0LQ59euo5ZmLAndRNY5bg/EPa22Pb0dncWgVB6\nMiRiaH+PRGRmkYNORjRGZpJg5c696LNkYlPq1A0WMeMPPOUdTIbdIfpz0zne\n+T57V2wQvReQ5/JnwuqCTQCpi59YxVReaqnUinCrE/eA4msz2KMNpxSF1mab\nREOk3gMWLPWH7ji09+l9q3tI+WcQ1CtAD2obhNpWDGpNc/jYWuhQtGeyYMzi\nz0Lf3rPCmZtR+F9M+Vv+DLrA4XyYmvofvrHVAltBpcSrUS3EGqOdxdstsVtn\nMLUDMFQuro7IBI8DqONJL8fgemzYXNd6RmMcEDtSt5nitqt33LSn52cL3nuQ\nor+Bnehg40Oa5lhTkiPcxV1dB+5lGiz0TN0KneI7G83Fb5sL/9KelIgnS+1n\nxc1c5o/3zsI9FgOIcMELNFyOefxSqwVY1mX2zFLBIqMs3ETa7ar0+uBDB9bM\n7oLEsBSrkZiua6maRsaWFQnHEcL0DywKQCtadIeqsyhz5faa7S3oDHtX3Goh\nd79oV0hE9nnfSEcS7pqSqdPQPUxBHhm+NkPjWrNLagQvFDDoy72a0/M8L2ux\nDInRItMwSues//AW8WCD8axpLvRgvoNlJIwr227np0iJZXqgv7aVq24qsUsZ\nByts\r\n=6Ppv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGfXtbhkqt78UU5fTBoHWNL0v3IP7HDAWh8muyGVhbnXAiAird01EtIuQXMRP+tQoJ8NpwT5kuz0GpIyC2bVNuBEJQ=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_2.0.7_1573676800497_0.9293806158565134"},"_hasShrinkwrap":false},"0.0.0-canary.08a30a3.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.08a30a3.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.08a30a3.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.08a30a3.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.08a30a3.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.08a30a3.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.08a30a3.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-2qJ50Ig1ulehTd4hXSVxZ6jrQOh3HJ+FF6XnlGYjeShnBM1FqNMRbVha5ePRZ44lkqqGXik19YQQC+OC3W2w+A==","shasum":"53428ced748dba3a5919c93d1f7335c78b0e806b","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.08a30a3.0.tgz","fileCount":12,"unpackedSize":9794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd1Er4CRA9TVsSAnZWagAAnCsQAI0xVZjcPqxVmgxc4sO3\ncdOhtS0Z9wt7biPNVjGsa6xM6g3GOzwtCjMWDcZjSFmDwKIpVu2ctE56fMax\nliitARej/M3qkVioHCk7Rf9BiH2ZVvdHFptYPM+hdRARbU1S2cGWSun2fLbQ\nnz2puR/ZxmpSBZKrvP3r2xNBWMtLResGWfSeUklJWfvyMWR6oTDBX2/HBeYX\nECjBlu1tXBelxQpoRWFEHBUufBMdWV4vAnj5IL4JYcgZMqILGAMSfTRiQ/OI\n0att128dNzbePql9x8LcL9Q5/L55RBA5kaiC85fYWPszFBfbLqZoF8A/UGdc\ny0bmx9/tqCIDfY3QPnEkqkG88QjIGJUT8XBhwN9lh4CK9LMnNwvSEsCMQDdO\nieIljEdeU8czHP9j5CXBaOgOOdrvO0Jk6VVqslsnlEWA5cJZAnVFEBYOiktd\nxuCuVFgc1JmfkC6Qu9d7Ear89mOA2is/uy+VISYVnhY4+Gyp3VQEcxiYF3bj\nbpjEF1DOSVCz+A9M6ToYNJupl1HXmoc+NBev8xiKHFM7gpN3QDptNu5+GASa\nseMyAQ3eJzDN/0HvYN6FU9ZeDuLhxb+D7TctIE8sdAkzpnSaqbFDSU9AZSuI\nkAJ19SUADlFuYYwiQw5BPGH93MOZ+85+6v6ljXydVrnDSgVdx9RLYIN0UiUS\nUJy7\r\n=FJ31\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDHqgErh72h6wePRWkDMYZuF8SMZUCPsCEMrSjhaK1TagIhAM4xsnp40kDZuqODqIajjiJwOaM7LH1UqLL+vY/e2QOn"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.08a30a3.0_1574193911786_0.5289914160253846"},"_hasShrinkwrap":false},"0.0.0-canary.602f682.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.602f682.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.602f682.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.602f682.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.602f682.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.602f682.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.602f682.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-PP8hnBk7mXCW9VkKCux2fcHEs+Vm5iTPcDDheEJJY3AkEYFxQFn/+uF1D+bJWieFL3TBpyT9QSkq+lEzeXHtjg==","shasum":"f93b276b28ad2ed40d9f2cfe95021e044a253b29","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.602f682.0.tgz","fileCount":12,"unpackedSize":9794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd1cykCRA9TVsSAnZWagAAAqMP/2CE+M/+k8t9gn+w7eF+\nnYPqjj/ltnn3Rz/ek71H3DIV8lRYvaQLS5c/u5EsQr8CQ+IYb7WPqk7y49kF\nLJvb/LULzPoNsOo5vzNzqQLAVC5zi+0WuHIkB0gIRPd6EO2eI/KiDcpKZeLh\nvSDNMhveugRilJKVFqc+5Rb6J1gtROJbtE9yjfhPFbyIkeGUIJuGiWWXsCD7\nsOxNlnBRbqqukUNzboCkRjJOpQqASqIkQHwdoPbTg+nGXqwMJkHwvPfC3pdT\nqx7p5EjsbUEWu6L2hA3l2U7uoNQMKD8iT1T/NfFsB0UlxrXMC/MLNoItAsZg\nj1P/5q5rRvmQSwscXFFPgdBRtrATy0XuFw8qS7LEARRpqiJsOtt/a2gNtYL6\nHg5bNgryHEfxZxkRVy1qr090pyojGj62y0DmPzDccbov35w4eV6N2O8yRF8b\nbYj4w2WZZbO84h7iM4RI0FnS+QMnBDn7QZmOx02nrU5xXClUvNWty9FAzAS0\nsWgJGYu7zZmdtOAuDvP7fz0QoIMeigI8JMR0CGjhfy0n9lAkcs6F9W960brL\ncAE6f0ejd0Q5UkKfv1l97UoLoBPnwdEDsu/VKEf8rMa9x6fDX6C6GifVH8mw\nmXMt4tdO1oP9rDmcD1/MmVhWbc41ds97f8lzhV/i/8d8Uyl8GmMo2IzY/Wkz\nceQF\r\n=H2w+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDM+YTGapm+Xq4o8bKG0ZJxHlzlvqudaIrtWFKuIWgVoAiEA7gS9YWNkFuFIVw+cQ/kdU0VZkairzLTM+NHXPt4084w="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.602f682.0_1574292644177_0.2500163903556263"},"_hasShrinkwrap":false},"0.0.0-canary.b4d0561.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.b4d0561.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.b4d0561.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.b4d0561.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.b4d0561.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.b4d0561.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.b4d0561.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-VDEgSMXT2I6IZOEMQ8D7uufAMx2+hACq/2JTLa4ZDOPTkVMTScbAbny95UKAL+s9x7rQ9LIpvq4cClRoqOPtdw==","shasum":"daa9b596433cac6e1156ad2e850a2453d6a1403a","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.b4d0561.0.tgz","fileCount":12,"unpackedSize":9794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd1ehBCRA9TVsSAnZWagAApy4QAJYiPkevnwg+VqCEAVlE\njlCTUmtAb6VKhFM/QVBgBv5ptJvR3t9kv6lul7Jff6utZmZEFDuO0QSsfybn\ncsPT8c/4Jaj9n2rS+D0v2ahX2vaISMxE+IHGh13aN8i5FOOn+GKGQNNcbk3k\nU1eqgGly/7fUaVUUxIwxY5SM6KK93aS1g1W/skIzl86qtvXLNcAAWaz2RNCJ\ngmUdAHFR+gcs8Zsu3Wbv/HWY1tg0voBlygaom5W1YZWJLWMmjSTuRgTk3bko\nhoB2ka8hVN+8hMdMonlV/dbjkhTEbKs37P52zoQi511QmnfrKs9RkAYtRp65\ngC5MnXQDo2i18zwNrHXi+18Aia6Z7/5a+LIi5cbuKerzMgZOWFPTv5JWm63p\n2asWoWEYhgyJxVcbF1loxH51WzSiUjwaVix+kw5GZbTeSzW+RWNY0kNlpMvT\nvGhck3PkX4bOBnG/DupvPSNshq0cKd8QDvCjYDDY/khTQ/jPz85EX7b1iyKX\nYf6ZKbUxlzh6VnCzvIQZB3lsJyZ3SBJvfxAZRNOOWPFCwwPzBPEGcxgxcEY6\nwRoi6qQQb2BOsLEFueZ+O7pYaSgyRow4cw8ENUjPrwE1X7cotscy2gVz5bpn\ngKkrh6+FdEBAzbRHel8T7zADob6t2Qk+1/4uSVaC062ZzWmHrymlJl7sCdCW\nYypS\r\n=YI5M\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEjmQ8iNQuBPlQ/YddB3CcrDmL94WAEvrQQUbZIqwDNwAiBBGUMSEjp4dVz4iAFAW0C88+lQjS8O0PIGdNJVOxbbdw=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.b4d0561.0_1574299713283_0.920830466097103"},"_hasShrinkwrap":false},"0.0.0-canary.f16f299.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.f16f299.1","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.f16f299.1","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.f16f299.1","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.f16f299.1"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.f16f299.1.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.f16f299.1","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-UhPVCr1+5saDyMWLtIF3QvjD0TGU3VyoiZyE7JIaiRD3eN7F36NehKNoS6FszpG3skTRsMrWoOKcZfx7jaOn4Q==","shasum":"a9e2483184655fa5d38db6b897ebc6c31fd6bc4c","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.f16f299.1.tgz","fileCount":12,"unpackedSize":9794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd2D22CRA9TVsSAnZWagAABUMP/3+wkksA9Rv+4PozW5He\nz1mp87w+utIspiCzpFy+JAH+AaSCtHjPeKXOw91aTmxDZI/hz7iMLTw6zQtZ\nl49JrVMOMkOWhQ+3lOQOGpHxRKzCpTXOq7ZlItvJ+ePzDKR2s/nf+BzeQT7l\nvQwIrtwnFJgKy5hOeddo5nb+od/iIvgaqHOyhewLHn3VanIb4UuWyMTDQgrq\nPiUD2tPRdna2hQ/0FhsPtegIE+/x4h1i1j2itpAQXGpfO7qfGXrzJIKzsl4x\nSi9CugkvSsBSPNkeHKUZVKA5m0CGIUt9hibQf3LHZbdROfvj3IM73TKi2bU6\nWSpBIfyJjlsUHQfFIow7XBgK6YthzHkGi9H6Zi/x1P893Xkx26XGylvszlSS\n6DtPKS8dCksymUYEDuIIaQ+vVzf0304+VoVxLE10n7xoNz8xs2ZTSihGWnxB\nQxcTMYZe0WySg5wCk0HLnXqhL6XZ2K0EDpeaQKATxZ7UhGNTgPvG2bYDf9W+\nB3Tt6PwrHxpcSpUQXId676xVGn2Yy/aAN6OLRUUioQzBlIROFG1hecKQovQS\nreo7+f2R16ECpglbWaV277/h5QQ6HsnnesLtRtKd9s8/ncgB+enGYKbBnpAC\nKk7BUeU6KYihG1N5+GbStli18Z+9WsLQWSh1p8nG1awuWCI3j4jvywm/oR2L\nXWQj\r\n=2REQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDTrCWedr1nbo3R/P6F7DHRosEXfzr+A2q2gVxT8oxwewIgfP+WkIrrSo6RSpsBwYy7kmgc+Kbl025avSWb7GkmTb8="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.f16f299.1_1574452661731_0.30324006870501985"},"_hasShrinkwrap":false},"0.0.0-canary.9dca7da.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.9dca7da.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package-v3":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.5","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.9dca7da.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.9dca7da.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup3 build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup3 build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.9dca7da.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.9dca7da.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-lBhrWV+z1mlL0Rm+xrSjPHNbx8UWWh2ZkGf9IR9mRRF6htHBI+AnGCFrNNdHNjBvBAxZPOkrzhNDUA3Y+9RAPQ==","shasum":"55b588e42013a71b22d81331c106502beba67fb7","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.9dca7da.0.tgz","fileCount":12,"unpackedSize":9782,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd2JABCRA9TVsSAnZWagAA2XEQAIspDuYmDR5Q0Xh80jm/\nDPb7PVAHL0Ult9wRZ5t7+aKo25Y243f7TGJ7nJ0gd8QfIHoqaeOf0Fzo6D1f\nkAsx5mXlnZH73NpxLz8mLbchEhoDAfxYpZfyxE0kqRKurLrbYRe3jbt9nRPC\nyKOHnLS/ujU6O2MfeRjS59uuAvTNX6DYlsUI6I/RJb/sONHRSeisv33p2Tsf\niyLHg/w7KE5z0qiDt45CouKrHleMgUVjm6IqXgE9SR+FvZ1FctZ2eopHfShu\ny29iubPsMYp2got4BazEMS1m+u+ilDuGGAfT8x0yCJl3biegr+9VxA4M62RV\n5jldEp+wq19UZVJM+VZKEVOS72N2HMWvsFSX+n/Z5UqqcqQQDAHY67JBLoOs\n9QZhdhPB6BAlBO90SlC/TvwlAxs16xxsR0fiUUgjKrJaVRlypgnOr6JzAXDJ\n+UIIeJzNgHEZCSCwWn32gtBM/ryAonSGKeJGWKu6XikN86IJ5ZT/vQzolF3T\nQLUatliPlJ+i1URNHi2+Ud0V8YKyDUg59X9xFnVt2e8FNw6PstMJbT08/jIt\nv65CWPJpjZhzd8aJ1l4jvgLoiAP0SS8O6U372RBLGjqz18mcL8BpvgrWxvn8\nwsWoYUKPzl4nEPRcvCc/p3ZGcNjN6Sv8K5JGlqLUvvNw+cHEBOZnLLvykxMY\nPzeJ\r\n=8oaU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBhw7357rqByUx922VNmJSc6h+uS51TEwkg5vmrPiHIsAiEA/0l6kZjvYh1VkzH9Wsdoj60bJd3R8eJVxvB0leGj33A="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.9dca7da.0_1574473729252_0.18799987964470954"},"_hasShrinkwrap":false},"2.0.8":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"2.0.8","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.6","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"2.0.8","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"2.0.8"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-2.0.8.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@2.0.8","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-LJThPr8jCjIdmxgqlrw0ZVS2RANa87G2dpE9ib4Gv8DtSYP0FW4wTOXS7k9MbqgDWw9en+TfCxepcNtLV1fzxw==","shasum":"373d1277288c6271f1b72089ede1d5dfdefa272f","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-2.0.8.tgz","fileCount":12,"unpackedSize":9726,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd3DFLCRA9TVsSAnZWagAAksgP/RbC324xNjJq/B/STwqt\n3JM1ykEb++z5QW2Cy0AAe8hX9Nsgbvul1bMaZtg2ghzyL9Y3W92nt1iMwi5e\n45R+kJECp2CzUZ1clgCqveZm2D3QTzgr/ru8/RhBWJKVD0UMOXTa/A+DOZne\nwPkeaBLJKCCD8uGbTQeHkJFSsrZyPuDHAAil/EeUb2bLwoKXCZbgre5k2QCf\nBZymw/dWs3gqfa0ZDffOjKy80frloFCF3L2UnPc+sRPSFJDk09n4v/Lvkco2\nVuF92hR38OR59VCFVhFS2S5hZMK9wMHnP8uBmTL4LZ6WmQcjGRQr6niROOdA\nkvwZtdT96x6nH9mOi2tq7nr7QqgKnM4+e8NGsRU3+JAH92nl/jAWfZm+1kq3\n8G4dOs2HYq46h19xVHsJayopFfyCP4KhLJ63vuvFdG03LI+vyFocmEaN2euN\nfS6PSneaQhZnq0pn33XYNcr62pJgi1K3GUhBc7MhFyu0c9+/7ui1YMLvPUw1\nQ0St8EWx5bnofUre/DFpT7bXsqbV7Xce+4hPJrgpdk2pDVCNajWSAVSHZoPH\nztdlLoXDKUJnHa+He/vDMaZ1xk4QUH32PxfU2cmS4t0tltqa69GJrg/fynNB\n/yXongEiIwwAXuACFYa+UqeQ6Qe7fQgOAlK3OZNohQElky5iChIQZhDpy6cg\naZQN\r\n=bmqo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB9gg2p8F5OXEFLcfYV3HOq3lXCwfNkGGSEm69iJU2zUAiEAzVK36moYx042Ix5HQH9FLjaTW5Qui4k4KyuUhSwBI2U="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_2.0.8_1574711627397_0.6832115369049563"},"_hasShrinkwrap":false},"0.0.0-canary.2dbfb1d.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.2dbfb1d.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package-v3":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.5","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.2dbfb1d.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.2dbfb1d.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup3 build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup3 build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.2dbfb1d.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.2dbfb1d.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-JGmYo+v23FdCxZ1D8FIQtwI66FgRuJWZetN9o03G2iEtok0h2+mxGFq1Xbd3Gw3Bx7ebP1gRj19eRTrW9Bgt0Q==","shasum":"9f70365f49828fbe3addce49147a2fe2a8505d6e","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.2dbfb1d.0.tgz","fileCount":12,"unpackedSize":9782,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd3FpjCRA9TVsSAnZWagAAJ30P/ApR7hXeBA3BARNFl+9x\n+NYxCkrF7+66lMiY77pS27tlHpYI7vK68ri7zG/snMguDk6aU17J0JbasuX3\nWpBQDGyPgfLqn1t3fjYa+fjvPJG0rFPYljeAZQ4NtScS5GG3t6FibpJ6eaKx\nor8DxbggF2dO+LmrE8QQz2O+Ql08fvkRWxKiPYX3iIsgwNyOrX+yRydBSqmd\nXtXupYdOrENm6d+JP8IoB7J/Xo4/JrWp/8WFA38rA+/9zAplOixYMB5XR809\noB7wLdG0nnu+gsDmvFxAK8lBQcKzASA6yceFxo1ikKw0eV0SxXedU/I3uJHx\nrx1vSNu1pvGdAaI057K07U2jnSJbSqb1+HCK+Yn3edlojXPw5H+FcIqhVwDG\nd52EMOqC1xog47Yg7bb9QpDrgNOHBV2fqTWJBWch6ma1b+RyeCmhgUJVtqki\n8cRzApFf7QhPfgsK+aOhL9QEAaeZitzUf2HbaGBROuLkiA3bOKz21WkXRoA0\nbOEknxeGoIsMQxvWUjuvqApIGeHu9DMHLXEU5IDR4j/MWevN9Talazxm8V35\nP8HDbEv8wJI4kPRonxIt9+3EpiK1sTBMO+Jgq7jxiqlvFUbdp/dtHveJN7t3\nTG/kfg0Cs+PrqKqvPMUmbdmmFgkOTcCCNuDkm+dxxMlGQC33iaH5uDK9tHp2\nfuhN\r\n=GRk3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGRoHFuWWG6bqzdHY1GNsMFfdL43dDcwbfcDRcva6ZfIAiAgsoASSc8/F/s7sQXvI/fZnM2cJsXmqg3UgOXjVqPPtA=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.2dbfb1d.0_1574722146750_0.9821178377986519"},"_hasShrinkwrap":false},"0.0.0-canary.777f2cc.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.777f2cc.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package-v3":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.5","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.777f2cc.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.777f2cc.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup3 build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup3 build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.0 <11","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.777f2cc.0.tgz","readme":"[![Build status](https://badge.buildkite.com/4c8b6bc04b61175d66d26b54b1d88d52e24fecb1b537c54551.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.777f2cc.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-yMJbcTUMdDQQxjjaoM4E7yhVMpFPoByt5h4fIiLOveT37UjTMYRXPLiltEgMT9wDmipjg2nIm5bOI0rknfaFNA==","shasum":"a797aec8ecd9ea16990b6adc72879537be89f8bc","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.777f2cc.0.tgz","fileCount":12,"unpackedSize":9782,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd3HMoCRA9TVsSAnZWagAA/24QAIeNUZkj5KBM90mSYTzF\nIzAcdKnj0KqZ2QkN/Xqetgceqh7iwsMsadW8eNrL/XKqHpImKJhbk5kFvJAT\nAAuEaZxfNGdzuyVbGD2t0U/cuLaqrp5CozPuvqYDnGq20/sjIynmQABNPRyS\nFvcqKMuw25OPWLmDk9FnvXT7LO0+nNei/apufHAdxGhS/yAFdsNIdPb7IqtF\ne8jGtL8EuGE/GgdAZhsdpPK2WaIPHzJSD4PUlvVUO8hoe3O6Rla3JdMO1QBD\nYu3HPCIbN4Js0JtRvIK3y3Oh0XXgLv9qMlRFLyNGow8YBJ9ws8bN9l/W2cMa\n/vnmJELmJM52LmJqiSF+CeRluN+FDF2MSxUN/Rdo8Wu6M88Lpibj1wKzPoTK\neNpKJWIFW+iTEqdiFIXkaoENqRDkCzdp6mZd1M9qYuYYsZGaHPwOFhLDB9mH\nsYPpwsQKw0yHi+9lNviNzfE8IJscCwnw6PDcKcxV9x6gRS6VHvP/nxMugZDv\nblRdE26ib33n9+zRuyV650oEMOOUKqnntbXlaFg+9oPGN/oo1NRWCOimslUe\nBLV8xkuh0Mm2/8OblJqxjjTRISmyJDcpsNuumgmH0cRWdBmgfbMsdqPICIf/\nFoc7JJvM+TiD5SfVBKXOpguke3D8tjo89o1ML5cKvPwgjTzyxLzFQiUTFgCT\noGZo\r\n=diOO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCSvT9fhERcu63bMkNN98N17RTB05QS0bByw6YuyiA31wIgGG7g0pAgqTWyhXABtwdO3B6+WxQc/zPs0icj2gv4XYw="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.777f2cc.0_1574728488181_0.4687063845795456"},"_hasShrinkwrap":false},"0.0.0-canary.6e4e073.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.6e4e073.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package-v3":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.6e4e073.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.6e4e073.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.6e4e073.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup3 build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup3 build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.6e4e073.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.6e4e073.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-sJRhntNt+kvviBuWFqceUiJgXfv9R2tgTqQs01ejYeBxmPA3QabMTF0uc5o/bHFMk4WWuanagj1NdQU1NA4yxA==","shasum":"368367116a6c8fd1cc0c83c855c7dae847668150","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.6e4e073.0.tgz","fileCount":12,"unpackedSize":9795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd6UlrCRA9TVsSAnZWagAASS0P/3pgGs4kMpdPsL8iiDy0\nw0lNqj4uZaA0TJUvWVnXuALoyfYp6e9Pe32wVmoqg125rTc+EnAm6CnAK36p\npiv01n5wPPxkdHZ7PX0MiYkJqR8y2jHjdTe6mUd8mi0XMwglzdHwVKxA+/Ce\naKZn4MLj+JF2o2iBzZG7jR00Ji3y2klB/3GXYekOidm8DmOqAhXhIMfJWnfF\nSoyOMyG8x3/84SBzCbZ3jTHffi0IbmQgOFpHj4vbu0QOozT9/f0OLUDDYnXm\nw5Z6S0CkWFR9DbcHGO8uRbbdaH4qjQjUJG2djTQVgjsN8KyWSnMnz094WdZ/\nCUjKrj9nZZ8STnpn7Mr4uVuEP3dsKnGeRJkT+Jwq/aqivTz4DUNo7CCl1PS5\nrDaP2uzGYHsw66G4BfZLH2zRjcjVJYet+2/gik/5phnJkhZoLXdN9GLSfMQt\nSYnRgmotA8tbmGm2XcS1yWN8qWDCJTC8BGimiKtC8ZAz6X/dx1T/NPblwrqZ\n/DWKbijRInh5Lw4BRBkOLP6A1Jk2pSuFLw3B/Qgrzajigt7TbpdgH7Yf0mV7\nvVTepAnzG55b8h0IGGZkdrJckgK5k39H59IxQQ5ex8Jy8mmjAixKVjiAb5n0\nw5CF+VepovHRdFlaOI1wy6l+P2KFMwE1mfMHA7HD3vPbSGobKDC/jbWcpavj\nZQ99\r\n=ROqK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCIKl8uIQMQhlhTBIXu22SJgPl150tVbd8iZCHwR2+1JgIhAI11ZCDdz/dBcf8/qQXAe0QCMo71BVzxNCh7VHFmr2qs"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.6e4e073.0_1575569771048_0.009419006466127255"},"_hasShrinkwrap":false},"0.0.0-canary.b7558a7.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.b7558a7.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package-v3":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.b7558a7.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.b7558a7.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.b7558a7.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup3 build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup3 build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.b7558a7.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.b7558a7.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-Vfje56yfek/m6OnwW92ymmnnCH24XL9LVp0zZf25cl5A8T/eZAHidQuAZskGoOROzn6BrCWrDwEOPRzZ1bBTHA==","shasum":"7369bbbc911fae9d852ba0679aeb4c856310fb60","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.b7558a7.0.tgz","fileCount":12,"unpackedSize":9795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd6Zx2CRA9TVsSAnZWagAAr5gQAJIlzd41Nxvxco5vb/g6\nyqVU+upDiAvElsLE3w5DtbvVpc+Dk/xg6wIx+LsbyoeC+le04DiQO2Kp0tNZ\nPD1bc5VJxCQJrJT/FYfWXn9Aasm9lX+4/AtE+zTOCQ96y9ZqieylAq8iO6ku\nzG01YmTuKVX+FM8pmlhtW1rmRATv3YfavtKZ6oOGsm3qfDfONWgGvl37MSqQ\nU4BDtmZKrXqwM+3zYsL/wjKSqXsiRAAwS2oUbI2MxmYz32742keZCUH2yT74\n5e40W5oKvkzyt824nqoavgnvKgPoQ1dj9SUrKnwwk0KuXbUxGe5HiX5rLuKZ\nAMy6/Vqfi40fVZd7wO89G/cp+c68AgBTYOh4Gd+cv2C2AoAuUdm1DFujVqVY\nYTYv8D3FfnboVqMO3aE7RkYh/XoqtTCQYNoi4b6ot3V2iBF0GAZuCj3SQ12p\nnl73froEW/MGW/etWvrHPcm6d0H2aG8g5046JGs2awfBLu7Wybf5CmevegU+\nrsmqV6WnHD1GizyTAE2+5nlYLH9WY/btYEy5eLTj/ubxtk8XN6CXlW6JfmRq\nYCvHpchxj7fvCYB82iZUcDC71ei4pWc7VVXiuf47X3zOntqi0EH2O5Xy/Vd2\nejnfJvSmv3WBIASEnfFdEVEmwZchSg7UwKGhu5B+2CrKBPiQLsYqEA1jP7yR\ntyQm\r\n=xCca\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIASrdaLAWpf0rfTC4GJnoSuviRelP1F5HhFKAoNVIA5YAiEAiddt6pLXYkKD6K5sum6YjUD/TnO6Dsw8tsnpIJ6mTlM="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.b7558a7.0_1575591030093_0.5416945599076353"},"_hasShrinkwrap":false},"0.0.0-canary.f55f645.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.f55f645.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package-v3":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.f55f645.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.f55f645.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.f55f645.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup3 build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup3 build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.f55f645.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.f55f645.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-djMO+RdSPxZQzZfh+yhwmPajW3wcuqfYFd0gvkO+scEFSz1t7qn1ZG4lZz776FeP8TjVxjH32NVAfoB1Rrgpsg==","shasum":"74299f43ea4ac1922ef3682dfb40f97d03fc97f7","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.f55f645.0.tgz","fileCount":12,"unpackedSize":9795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd6pQxCRA9TVsSAnZWagAAQKcQAJ6ptBHw03rmTUDjUoi6\n862Rw9ORSKBPdnevdGWEHAvouocACd+/ruMAqSaLSssKcfBHcx0gyvp7Infi\nPkjKLIVbtE1QImDIPzIEsI+yD6OIB70B6NvFC6dQkK7AWGQ5yOHxvW8nYH83\nohl2vgJ/Yq8jIim7sWndxyUkL0BySW5RJPerfgm9uTOPsT7zEOFIlSkDDNTl\n+7Es1a/Hodyx5H4OG3CoXJzSl2uCGeaa8tQLuP/AKwB5tSBBg3Bl/ndeqVzM\nxyUeMjhkcIUn9VqRYxAD1HvofqA2PLur9bfRvs4mFZk8MGu6626pnBbIsat+\nYFmQp2StslXrAwIC/KXogaK1vIp3j0VjAHjq3TC+v3pwKyKupY9lTtI1q1HC\nu3GYrzl2UHQ/gmJP03ioNe3qQLqgqbJnRUakKGJAVJ0CIi5Kj9yBDtv+VEmU\nZ21lT+BXnMMTFelw6UiaGKNNwSrbhRafHNl9oFhSByMCA6w8+hzrYjnEQB8s\n6FHtoDk+PHX1gAe03NRQ1Eeh9bsx+CHtgJqMMcQ1gEK7LgJOwV3KrLSDhiND\n75ZhDrYVDxczhnKMiXDZUjIJmotCloDeoHSgySH6/z0NG8qCe6tfd9e6M+B1\nnfSAHsCJG1dktsmbKg4Tfz30HFfYFDAJbJ4vOaBWmpcTtMueg7AjSdnag2Xa\nc+Jm\r\n=6Kvs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAaA1b5B5elA7ymb9Iq8GLQfjaEO8cVOFaAigHxzJtsnAiAgzAum+h+J7SE67zR1HaNGdqkwN7gDtPt5jW/UrUanog=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.f55f645.0_1575654448457_0.20736450626917358"},"_hasShrinkwrap":false},"0.0.0-canary.a1f34dc.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.a1f34dc.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package-v3":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.a1f34dc.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.a1f34dc.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.a1f34dc.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup3 build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup3 build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.a1f34dc.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.a1f34dc.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-kFN5qS2FipA7dT7ERunYfUmyKd+oZ/am3e4Ey5A2uKv6QDSd1oAlM27iv9wOzUJ+eIJmlKiVSCKpsop4e52cFw==","shasum":"05fe880fb750eec8e392f5d49e6d62ff8cd24ac8","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.a1f34dc.0.tgz","fileCount":12,"unpackedSize":9795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd6rBCCRA9TVsSAnZWagAAcw8P/19fRAb7P5CsnPtM5HN7\nVGf+KnPiTkete+QQ7MVjPV+hF5wygE1Gm5fe0Bt5Pm0i+UwC7dFLAIhw8RAz\nYXGUm9qLeUqjORH/XRIFfx1BwhkU3mVN5uNtQRe5xHc44H/RfCHpkxkIlt0/\nQiuC0cHyxdQ6nYIYa+Hv8dPS66u2dTBLfR14jYC9YCi91q9/S4FZfM43GfKd\n6wBuy/j9N8Pa102C0/ZndbJy88YAEdWjHocxRTmPkMU6m7Jd4PjJ7t50nH+R\nOuf3+WqTAX25eximKOWGOS79d4z8zLKVVd3gyIF4+HgrtYAe/fWmli/avePe\n7vO9q58UJlyTrHxySKeAw5VOtnOboI6ZLuwyahPOXO+s/WfvWT8P4f4kKDdQ\ntNk2BeiKSPHAxRyTYEzN18HZrGPbFxqxKoQni7ymAKHhw7aQGQEYzgFUiEQJ\nnCwDfR2PMb6epgnkO0zoUw46rPkAw0KWGZNS1DS5DmXyiNDVp5q3jZfREcfn\nFQzeL+Hpfb6x6mAlSotdLo3/WkgtT/rEtGmlp+Qn0XKu8XcAfh7u3KzeYwvc\nXOVPNGSYLzFsejP1msN3Onzh+xGUxFLyot0Giils4EOQYOIQ/7MEVx07F2b2\no/u2sa9jIgy5HqMs5VFTWr5AusYRh2Q+xRLlzomP3x5b3Yel3BZWh+u++5qI\nm8nC\r\n=r0ud\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFc1KEP7dXoOj6b8dW7TrDb20GwrIxrqDMYlkkZ2c15NAiAax6O4Vq9i7Y3oCrdHRLguhPsk5RJYLq9RCAZdMbClng=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.a1f34dc.0_1575661633799_0.929626167057809"},"_hasShrinkwrap":false},"0.0.0-canary.17b7929.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.17b7929.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package-v3":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.17b7929.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.17b7929.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.17b7929.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup3 build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup3 build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.17b7929.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.17b7929.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-QkQqn8B/m1ivWYaJZc6seXXt6hqvfxOZxYxg/2aRjo5XER6oF+s6IpZRhqNA1s1Gpnu+WgYDBNHSdl8njVOj2w==","shasum":"9d6352e4e2cb660e1af9cc9f3441562988955689","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.17b7929.0.tgz","fileCount":12,"unpackedSize":9795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd7rqICRA9TVsSAnZWagAAJooQAIIeozSR36ZgfLyMWHnj\nG7JIeWypXw4o6bZqmQiTO44WENzCfn9kjuPP7A4wRPdPRqguWEaoSTNz5eLb\n268AoCthC4IQ7EvFjLDFVugnAoIEX0BdqXdlOMJ2Pl5oX76hiQDK1kjatis6\nXSW++2qYomLV+EGfjLeJKv5eRnSFVlqh//fZxz27r8Y1Ohm5n/YInCxDzdqy\n28+V5PZV2nCHth9RHSKVB4ZNkyFKBy0rOoDtBJPi9L0fnXrFPHqFDGKEd5R3\nfH0kXYJHS8mvTwvj+Kx7qHVVjqFKterOgPHy2jzg9MzbnYUlyKVTZMyM6C2h\nWxDYGKbxmbyiis+AzcnSfj5ARue8pWgY1Oqs/b2ffcyb1QDOh0bxcCYbIqNO\n1r2JCC7ZbtHbLL49X7LCd1wr25ncR4ZEn3lATS6VX/u62r6KIamhvd0XwJcX\nh8Tvv9S72CDfOrpXCYwqWBNvuYtyKJM9LsMOjjzvirVRFiyKnCq8poHCePAz\n5kP+aPWIEK0Beh3RPUaHasv6ivPILcW2OzN4imR1bazjwFKjqXpD5d97fP6c\n8NsxnsGS/rAefppG7Vyh8DNsH9E7IuKACrF9tqDkvIXFqDdWN0myUZRLzkg+\nEYQ+sl3cNObQSMQOpBvWzWDSqP91cB4j9VkcmCZcKTihLCwlKvUfkjxiF0vs\ntM8w\r\n=fCLb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC8Kl1mN2LPIJ2qky44qiu65dINxztZeexcCOm4XGoHrAIgAyv13+F94Z5p9e0zzoFMgEm8dPNmJ/8jA0UgAD/zVNI="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.17b7929.0_1575926408325_0.6934657381057578"},"_hasShrinkwrap":false},"0.0.0-canary.e266b31.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.e266b31.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package-v3":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.e266b31.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.e266b31.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.e266b31.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup3 build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup3 build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.e266b31.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.e266b31.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-lVhQNxw3erpZGM95AkwqtBirQwwWDfCzWiCTSbwSkYTIyt/PW73cVChYgq6GopvtBP1LfhIUHI/ZcCrHKdH7qA==","shasum":"594feb0032b7dbe0535d654644ac41b1fb3e0bf6","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.e266b31.0.tgz","fileCount":12,"unpackedSize":9795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd7ru/CRA9TVsSAnZWagAAirUP/32EsHzbe7Of9h2d7lt2\nNzQgFPIyyHV5LNHFO5i9XcHyoSpLt7qfll8MCrr8hmzrIEGy7KBUw4hDNFsR\nxBWyrgu0xk6kgO3qBlt+UxgH6Bz8JfVci0FurqeMTr3JU858yuJ8FDUojwey\nq3nrsALl5vIzrHysuBP++7qXo1fq48VAUrr+17gwrRTaV2XJSrJnzDqHU0jY\nIqu0tVv3ulFtiVMdjsE+s6Btnuz9NC3EV58lHXFjImpqxsSalM566qFrK8Cd\nm3ba8ILliXCr4n26J/N5lYDVs5mfJ0w3WndDjjbys84Q7SBCbzC1wbSW/5Qv\nLFfBJ3AZ6DfnPq+/Dovczhw7ogYqGZ2GOKV5hsr2ZwWVjTzxBNNHsRNE46ov\nSWD188iU7bWYC3h660933A392QXw4tc0gD4sXfeFaXAn/djd7V8uxw6ccucW\n8Y3bQJDOSuGhEW/qFpl0O4RL4W3TGHPwyV1D/Octyoe4eoxHz2bzH/olmNO9\nHZffwjqtQ7zaUy4J8iXz+nrUmGriZT2acCTR7q5blMPgr4avpx/WZ/Re3Hwx\nQ0R3tNcpHcy7jV9k00244fEUG4cGAFR6ii3ZlBHau+AuI44OIC1m68aoGTY5\nX3ItSABLZ5nfGLFehD6q3W/3ST7grhussa64hdMmQ1VBk/aOfuU1Ebp8Hcu9\nk2E1\r\n=Hy/h\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDQbR2tYlgu0/J2JsxGWCR0Zo3cG6u1oTFinn3V6MeaagIgJTXVLTnR5/Zzyu/GnMXiOypvMimXretOB7j9LscWHMc="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.e266b31.0_1575926718734_0.4571350147808886"},"_hasShrinkwrap":false},"0.0.0-canary.2e98cc9.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.2e98cc9.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package-v3":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.2e98cc9.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.2e98cc9.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.2e98cc9.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup3 build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup3 build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.2e98cc9.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.2e98cc9.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-zeKQZos/EoKC9mhBFzifTh7M/iMYzACD60a5ecOTWHttLlWe7HGWIFXQBQGyRrQ+xYadXwMDC8civqDVcEd+Yg==","shasum":"de520315b87fc76babc42245214747c1cb144e36","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.2e98cc9.0.tgz","fileCount":12,"unpackedSize":9795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd8GV8CRA9TVsSAnZWagAACPsP/iJurR3PIiRKfQovjYcO\nGowHO3T22PNq00QGyD5U9z0t4fZN0lXkc2UXFUHIrycYnOoxkc0hs/OO+XWP\n1/IH27/INEYqJ1JkAxZwHsyyV5KQduL9xRD3icYhnfFrc2PBUKpijbUyQSmP\nFyo/qfT/3UnHOUaUNTog37ZAyRO4lJZND+CcWIj0g6FUYqqfbJWhzeFT9Rqb\nGczprz/fPaY+9moiylMvq35KCXRMHbmXAP2pE8drA7PJCVxawqCfzu5wZyBX\n+uEvs5vD8NZQrkGyRI/+ElcTB01e6FGZgGQpmeFkqFNcjH7tMlBt0Zs9pDgI\neFCKuRItWxSvkXzKCFsDz+1BAGaklboyrvteKZYt+knkbt1M/zzT6yX6EpL1\ncD/bEx9ePm6xOTm1VxebWnUB7A18QKTkcd9U3+DTVIYIjacMNe6gqWhs3ekP\nxQv04IwTk8vjW1DuGC3PXruDd12mwiutgM1eSlY2n6XvYvTlaPNF05RcUcrj\nHpHuWZSToIwGc0MeqTViY/8ZMdCdPzj1/j7rRjh5fNJWucDI6h1JPulyHSxO\nsh4riC1TLN1BqrujuX9f4UoGneJbDjK6ljTyztg+ZkEAuu3m20w0PAwX1axF\nPBeQ3ZuOwBQIJw3SGJDvQCoyuah91cw9DBdPo2lceoFzjIcDZ9cXE5bl0bFE\neXG/\r\n=oP/6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB10TWCnlVaxa6oGc9jOpIzxEq73D9kGLA2wmNA63vkaAiBfZgs6TfAC5fXA7aiEKcF36J9bSKqD0UloZo8wBlWvew=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.2e98cc9.0_1576035707864_0.7173687165862905"},"_hasShrinkwrap":false},"0.0.0-canary.c4b78ee.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.c4b78ee.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package-v3":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.c4b78ee.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.c4b78ee.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.c4b78ee.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup3 build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup3 build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.c4b78ee.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.c4b78ee.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-1BVz77ZJb0TGIKH4juFHR8bvuXKpHjBeW7RPZkpX5gS3vfMyc/bwd42KChhWyV5fei3AsXAcylbCbhTO/qISRA==","shasum":"1eb6dd4f2714c8eb7b7d838af3af5719fd8f120e","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.c4b78ee.0.tgz","fileCount":12,"unpackedSize":9795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd8U9wCRA9TVsSAnZWagAAPQAP/0xqYWbUrRrsHUAkP6Hq\n/MqBmCphSY+mi5imFPUiopw6E19xtF6hapf6gzicAqqL7ub8PMN8YlAO9nOH\ngcHSAxEbmDbMyMlyTd3ApDpFrcp/oQkZ3vnpGYYrVVpd7PH8MIKf9+tIXXQc\nUuE4aToS+apn2VqGrOV7oMhm7F98y4XPQ+vrAx16ZirxiYogiIie8rFJyU1w\nxWIeV609ZRE9xkMuYqe0xj8hv2UYpwIPWa1feJX4+cMNP4k0ENzzAlDmEjAj\nkJcCqEjviq74LQo243SEnFXffxzQGWVzqKvvzgzfe2/HhcA+1AeOB1a1SPGh\nrbgNr0wPSyw9gQWLd2B5WsqW/MtPsjeJfbCjgkzTxztq5ZJg8mP7BLvojs4t\nbDW5gA/zZNdKv8Im4QlCx9OqKnZjkAETWzMuDS2dEVvwaQXyfh8ilDat9m7r\ntHNNDXG5UFnw/7txKeUu89O0wi4pP2nVpdj9HZB8MT77lkOwEkJs12jYlv0G\nVlnw49FvZR1cc3TYOHSqxAfv9XnCHxmcHGZNI/BBcRqXaarqyXwbxhVEIhIv\nJhdb7BOtZHEt+CM4bwmYqiHuSSQQF5tiQQE82X5Iw+hAgUFSRzIKvyz+1hJZ\nMPX9rcLsvcGdWZhXXRS4w0s1R9j0DdtbnzKr4jVUWUT2qurBiuvtd9ug6jYs\nkT2/\r\n=Oa/6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD0GLio4kb6hMgCBRBSNiwOUuSrEf3DVB0SPLTmbdXe/gIhAPqs/9pU+iW13MB5BTUBtdhlpcAD9WLgmrmuF3WcI2ee"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.c4b78ee.0_1576095600445_0.9569410887895704"},"_hasShrinkwrap":false},"0.0.0-canary.87d361c.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.87d361c.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package-v3":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.87d361c.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.87d361c.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.87d361c.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup3 build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup3 build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.87d361c.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.87d361c.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-xl1hKZD+jalc4kH7wA9SLgMQexIgyEyM3c8ZnvsjpyMAdfOhmAW/Gq07EqpUAqANcxYLPZVKFZiA6HfOVGz9mw==","shasum":"a9a8f2880a6efa24feb0fdc006e2179142a23505","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.87d361c.0.tgz","fileCount":12,"unpackedSize":9795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd8Y0WCRA9TVsSAnZWagAA988P/0KevcUXkP6cjbI4E9gu\n7P4c4iErtOYM3h/6sh1ZCNOpvV2qwErrUV4UrExWXoigIAYlD5QAzdstoCn4\npwKzA+NHtC0OUNj2sjfDA3+NmFa8Tri1ol16rFKM94l8FaKVSG3QLWvLgmim\n2Ictp1GzPZBafGiV5i0Xyr8YI0cVg7t3FTd0DqXPhMi2MDFmnLWRD/jlRu5W\nrArlJ/jtuLdGYHnefWV/M0fK4GZoYb2O+amMh3/zU1pcOxZCP9fmM1L5kksK\nRxWUUsYK0T8lE46zGI0ac7pspNnvgrjN+8Y3rX/tyB8lU9/hVqST4uWpQY2V\noy1WJWrQ5DVr9nVf6pWio+WeOlknj4pY7HX3701QzHUYl960p04W0BlhV4ie\nhN3eJl7huI/C2xp8JDrx5ZKLPA2kSfAXGEUIUaWOM/PfbgXSMcnW0GcZWJvT\ns0bt4k3+NCtCs5nidsxB0u3zcm7yAeljZrqHqDqwR8OIuN2sbrzZL2YtyW00\n3SzgQJO+BWDTXtZ3Gf1G6pH6CewRNatVeVGdnq3xAcIcg6pYDkt1aU2JYGPN\nmUmadWTv7car0mzc2bO1NKRWeBCApw3ErhGn5FoFzDAwGcW7YlogaSRH5vE3\nLIowqzJ9+R5xK5mrdKWEyOhiDbDfwflLSVnF6tm6obrTQLMy8kmUO7Z6Jf7/\nAkL9\r\n=1ZDV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAjtAiSbpO7Ip4qU1nqdjB6O4NQ6huIKCT28KTZYo8fkAiAtuU9L65wAidsglAz4niHClpzdHlMSdqrlMpEOJptK2w=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.87d361c.0_1576111382324_0.11021225301883009"},"_hasShrinkwrap":false},"0.0.0-canary.32cd5ea.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.32cd5ea.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package-v3":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.32cd5ea.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.32cd5ea.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.32cd5ea.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup3 build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup3 build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.32cd5ea.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.32cd5ea.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-OLlpILVswaUfGseqzPQkaZ2bHmdnd2gYGcN3RselRCrh2aDjmzUtDnbqAa8DDtWR4MhuuvaJ0/7247K5bHqKfQ==","shasum":"0e8174893ef91918291e39d6ff00ac60d671536f","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.32cd5ea.0.tgz","fileCount":12,"unpackedSize":9795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd9Dh5CRA9TVsSAnZWagAAmbwP/0JLzfxWO9PoEO/ec2i+\nBBXZ58y0EvIwpw/POGEO6DByESikTZkMGI37fmItGDNIS9/wttVhHzGeGkUv\nwJUCwUY1CY21rOc6oXiDAmaKKnbeXG4MJHkOVPdGDo+TnVs6QjlHE6kXYgyi\nmsllaM6NZXqUkCaec/HagqkrFE/R+H7s40gLPiSBZTWC17y3RrK1+/+VMBar\n48tUZiiPzjuHTVymT2Mokcw9DP5844TllinHmrbgpBgrxatQlNgmw6NEOpdv\nC+G2VtAx1jixJIbnwBiL2Y89MIL3jRupzqtvL8cJ6VQ7izsmM06Mhwj+SoQf\ndVdMr+lTyBw0SCVm+opheI5GAt9zGzoL4A5Ve/jIK68pNgIVnTRDSTIURGLC\nAY2/9Hhj31mBK44lkxggiYkptVsnVpB6afrLhW6vR0puj4em7vi1OIkKwVYf\nLfQs8ImsK3amz0mQuNs63qqXBEiFOPHp6b/XiF+yve2ipIVJABi8q4j5rPYC\ncKTp8HVrwV4NbjcBIT33syclG7R/fkqTe3SCw1rPB0mQtZvIsd6VrPgKsF2h\nFtV+sfBRu+Hol0Wd+oBYbY8BYVgr6JP9vSJRx++Hz9cce8TS0Iw0oAJ+rmA1\niItGmzq84M1n77aC/kp459hhOY1+n+SHnZEWan5DyZszuyB+ex7DtPMZkGZO\n2oqs\r\n=mJov\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEbqx1jlsYZzpGlVv8/+RFwl+Ku8nbsuig3SQ/Z2fpX6AiEA4W8PNr3GI26ZbkSKIEJqZyKcSmPH6Wj0mWZFV+516L0="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.32cd5ea.0_1576286328571_0.3413003087469406"},"_hasShrinkwrap":false},"0.0.0-canary.8057c37.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.8057c37.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package-v3":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.8057c37.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.8057c37.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.8057c37.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup3 build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup3 build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.8057c37.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.8057c37.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-8AmB7cEqlOscu2YaoA0G6f8Q+llrFoLiKbHib3qTAXlpPFLRLyXNNnrcYU2Y8qB5BT/K7BCzQ9Fa8rOw7I0vog==","shasum":"f990f692e43bed92629b455700cb1c01e16afd89","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.8057c37.0.tgz","fileCount":12,"unpackedSize":9795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+RmnCRA9TVsSAnZWagAAzZUP/12TTu/XxM2oeEJdL8Dv\nKJfc8UhDg3iwqAe/hjPv+YnHvutwsfSU5RkkNvl33TYAxAs+wqTOnYrbH/Q6\nuoWPm/yGVao+W93RgurekBWgQJNrVwQxP1YD2yte8ZWz8F2XVksVO+T4sgka\n/dDpUhm8uVc+fJtjuZ/nfg/NDeJvLIxUWFJD97B+B3B/tnyE8BzIs+gAvQRg\nO+zQSc38P2ypH5CTjoxURCYZ0jqiXasR8Q0edUxXo9ySo1dsNwaX5dJRgDj8\nkEwU3eIUA/meXq2KM8UQRjeBCc+YvLL05/6eFyrI0R5hhluOdeCOoo6oXt1r\nirBSsQ6ox1ZcKbLD/swkWU+VIqxdHKfgwL3KdJbKlEoZdq0xZZi+Ucsvn+cV\n0THZFSGl1y0pK7AIVkKcMfM1DmiI9nP5Jo7eCvu99ANmRNB+etsA1431AW6c\nZwb+yXLnLzIayZ8o7q3iTYbEG35ZVsJ9NLhQkjtD0ei2ve8RiPDIHvybx7an\nz63alYCgbd+bLKP6SeldB1hLnjbLt7inkrhRe3GkIUHy62WW+JmIfiM9TQMX\n7t7363J5WDjEOlL62Wtk8z4Vn+1dRsSpdvG4K2Wgk25duaiJd5kmpUmOYovk\nxIEO7qtAhUxD9nHf+bdEKawrtImcxUyjMltsX/+ZkIfv6AF+L3MNZG5DczZ3\nQqBc\r\n=3AjE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEyosnArhh4XIQLL/aHFxvc9nWrE1hSDzm1K95Ux7EYWAiEA5ziAwsxsUOEgd3pU7nvzFVxWlVjzrYsp2ogSLJTiRRE="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.8057c37.0_1576606119027_0.8258689237291019"},"_hasShrinkwrap":false},"0.0.0-canary.4d95fad.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.4d95fad.1","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package-v3":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.4d95fad.1","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.4d95fad.1","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.4d95fad.1"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup3 build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup3 build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.4d95fad.1.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.4d95fad.1","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-arQrxdWl585B2cGxdk24AIDxn+MCnji03+vHZEQdXZBqctQuKUOemrq6wg79YBFQL+j6d5AzjZBihsi3n2zKRQ==","shasum":"d8e150e060e14d9b1bf95bd2557f7daeb289a552","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.4d95fad.1.tgz","fileCount":12,"unpackedSize":9795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd/AQFCRA9TVsSAnZWagAAQ7IQAI487V7m80/FURb2cQxI\nE0yIp93Heku2cfKYjlLePWUnAujhDvk19cDMr08rC1j46NWrJ0ct8wVUFfaq\nc+qHJC2zE8FFxZUW0aKA157+pcuKkIpR78inrBtyKfjwX5xCSynZPZJ3WF1j\nyR+RnGb4h5ZkNPkyE/A8wIBSJpnT9fVtiRHrEUbl2dF+2Hb2QiYpqOGUe8NG\n8LfUyNrVB6tiqvvKNO1pxPwn/Rslod0BRqmUpoj+RLjalE/eqC9pVXaLrgGy\n68530zQ7F6jRXQutn1EQE4H4RTva81EeOQPDHP+A9MatrMslDK/6I77bjR3T\nFyFLrxXucAl/MX+FpKYcqanpSDRBwi0Hnn5NQoX6ZvbYptkX0cJUSQNauree\nRGdu4VeaofE4Ija8GqNK5ArCLLEFnMdkLvE+5GI60gNFQy6jnibr79Ku9f/g\nXfa3Vc4iiaaRNPGNSptp8RapVUUEhoUNVKCpMrUrjOK/wSSRiWHVaJAsbTFj\nTLz6yaHXUjOWEImqBKYKG1cxs1VPCBwRTgLW0K/b2/ZKlbqfsrsv8vfr/0e4\n5R0lE2+tIGbbBTAjYpFOnRjhmrQCzhD6rbN4P1/sElYwhSzFYwvzNeG9EgRH\nZ9dPcW/kUrDZZAZiyOcNhae8Z8GIbqmgRPe50mILMLTbirN5lBhG3xQv34t+\nXr//\r\n=WDMG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAS2mhV+zgoUOqd0+Tr5BW4/Z8HZa6KiWDNQRJcvK0OJAiEA0Uh8VZPFD3vSTE+jS4ZuQQaSZtl6MlU/KBZQY8mr6LU="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.4d95fad.1_1576797189160_0.39133393109006365"},"_hasShrinkwrap":false},"0.0.0-canary.39fc7dc.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.39fc7dc.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package-v3":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.39fc7dc.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.39fc7dc.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.39fc7dc.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup3 build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup3 build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.39fc7dc.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.39fc7dc.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-YT22UUQBirMOkRToGpvGf77+9tJg21S4YI3HjqaE1Kq+9zOkKaqz+GQuaxuacZos0UQd0kT32aRTw1ezCKNuUw==","shasum":"9c78f453575ef5766654c55f14c96ded36b7d5f6","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.39fc7dc.0.tgz","fileCount":12,"unpackedSize":9795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeBScoCRA9TVsSAnZWagAAJAwQAJtY7iG0UzYLpKvB0Dx9\nyT4PBoOgsMpE9bNzi/FTAnaEYV997XVYT7NoQcMv1XAVqa6PHFmZDOvBhUrt\nscLvotTcRbLshJ3SGUNTHceztStgn3hWlxk6cbj61TqhUym26Yg6F2dPxnpy\nIz9M8o9fg6ERuCt6rwzKQXs1kjtWx+nVN5gxqhxWzrPfBGTevtAw2waYLYSL\nTI+RshcBqFdS0W8y4SeNlA2vtm+6mbG7wuyXEqkA8+4KFXBdd8kQ09bYeGeR\nCNwiFa5ZsHilCgJ8bUrlxANcEWxSaVcCi68mwDDckUsLiaMl48JceWhqoK/A\nk2X8vmBgQD6IPSmJ/NDSqZYHt+CZAezJLjwEps1UOtg8NwHi8NRgGA9vIl4L\nFuqby38LwtEMVWCVdm/Hy5iRtImki8gj/JVkTWLeLM9v42qNJvQE/0MAA/bc\nUxPJRisqLVczxi6yBDTTjlNS38ssIUUfbhl3i0iQa+CzhAdJAsgcXGSyW/gr\nMI5ACTQvZpP2O8foWjT2ELrOa0bgUyb1/kXPP+2N38FT+hRqw+ibYoO383RE\n7udN9thkq6vhUlbUhVw8jiA36rLB3Y1uGQMNuII3vR0A8MqSeqmiAnQEXk09\nkQZZI99PUQuyD71ZLEIyhBFVHKtepDda5OCVoAFDhmvXZonxxsYqwnD/ZZRK\nhW16\r\n=d1d6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCCPeRIMyWXGqodHVXVTJ8Iauayz+PRLBEl4PgZNinzvgIhAL4YeCRCMqS0HvlCVGKOe5QxN67BPPhND7/2zzVibeSA"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.39fc7dc.0_1577396007923_0.9688666629374583"},"_hasShrinkwrap":false},"0.0.0-canary.549dba2.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.549dba2.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package-v3":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.549dba2.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.549dba2.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.549dba2.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup3 build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup3 build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.549dba2.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.549dba2.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-W91bhV6eW4FRLplBlNsUifhnqGYitOnnZh9gis3AOt66hwbXW/oKRvbq22dv0QmWfn7bUZgeCAWb/TeQNVnlbg==","shasum":"8ff70871353f4e7cdca23ae464103baf4cc33083","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.549dba2.0.tgz","fileCount":12,"unpackedSize":9795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeE9fZCRA9TVsSAnZWagAApYgP/1Bf3JWFBo1SRhGijrYM\nzJHxfnp8KBVvoQS4YBROZBNgerMBxTUAd73PZePkzhvBonUFiuMtgytqWyxg\nXHCjGAxvBdI3B9JYW96LVa0L7d8pjQupKHdBHOj9wwFztsh+NX/bMo62nhn7\nhWl4+ztT7vOh37vc8AIYjWTGkd/UbknWQva46TB4H3mVk9W/jB0nr50SL4hh\n2yeVTaZPvvg8nqzZroLxBLKVUn/nYifOJe/4BOb0bom9iZCIhvjBxUZxING8\nHXMrnxqMuVeiH5Ns1MCFBBVYYDq7eeGwQTCuiZNKABMo2Fz5k0HyUPPHjhqU\nso0f+UTBABzfkIR1iAY/87BN7EJo2IN1he9zpb4hJMxvzpDNcJ2uJWtcXSFp\nzA+ZAjXXZHhGumGPXwTZRQUSkz7P1xxcvIlJb48ocX8bsXQa3qMOggyuE7Me\nYEqr61mWy6BYhi5M9vHyZT7dnI60gGhs3jgf1Q62YrZVl6VGs6mG5YREpILq\nCs4v5WsMwzaeCrapMQpKEiQRkhxupFLWZs/vrlbL8vtC0tWgqY5080iCV20r\nJkLdoyAPHqMyKVz9cBiyXlP3A8v+1jFo2J6UU0oF28zU/KY2fIFre8YkbJFX\nHcc/pBQyfU5L5H/TktUgvRLOwKCPJEgF3HUWc63gqYypDFyw5yCUwkD2Zwue\nCpCm\r\n=3c3D\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCAqIY2hHe2/8g3cdmdjXG1AuQxmJcwnJ7PaVkKN6jwVQIhAJ5oHoS4zPqPLZrfIUsKMRp4tnFc4fYgAAGQh++4YxY/"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.549dba2.0_1578358744632_0.22482247932994404"},"_hasShrinkwrap":false},"0.0.0-canary.69f275d.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.69f275d.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package-v3":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.69f275d.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.69f275d.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.69f275d.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup3 build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup3 build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.69f275d.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.69f275d.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-FJ+ERDAxJVT0S+4Z83s+ilykGaMz4sOJSg6LQ2uFuSZcdhYXHPbj8WoVO9/1GEGD60oVjatBdLhJk1Q88xa8fA==","shasum":"ecc5892e11e29ed1fc3f06fd513d4e16fe3bd449","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.69f275d.0.tgz","fileCount":12,"unpackedSize":9795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeFRhOCRA9TVsSAnZWagAA8GkP/RKeniyrjTfx4/zBbj3D\n0O1x6SawzXEUWLufxBrYFDczergDeTpgAublBdzBOr4oE/ag8Z0kGTVWOtkN\nI6y1SNFeaUFJSCt+xKRE47LFWVDFRfwC3JSMQa65QUR6jcWMortfDQRrg+Qj\n/m24WgNk7TorlBlqEJTFf13jVUWa/hum4fygO7NF7f8p6Z7ofL7mEsJ4rG2+\nA+DP3BFWNOfZnsuggrscpIbmIi8x2ON5YHmsUk5sG4tj/NPZcUbuoBFR5EZV\nG02OQeAOJPXIWC6I7VU/t/j7r8wJNj7GeXQ0JXQktZmaFtjMvAyHhGyOm2tY\nyDJ1vsQgAm/mjj/FCNvQkoi7UdDQeRkRgKu/26/9B5p/ByDURa+htjEx2GwN\n5vw8D1yGjjdE99HIIzBk8y4+0D0mrnGK2Sq1ke6Emv4/PVQzM3Cyw3XzDIbs\nT535/KdTdbiF16kPise4RaHvlFnzEBGb0BVL5e+kMwtckDpgKpW7Spy2CPDb\n4zpWMBVOZ+dbmG6j+oEzEL/a8W73CfzNgG2zyy81zceE8uGjgcxVRH45JVgA\ntMmE9HSvcbFpefCdgMCadGbfZC//S5EeCMp0qhLZssGcQS49ozq8d4pbDwah\nOgsTp2flXMIauX5qFEOArJC5xwVJkNDLtGhruHr+ZfujhwIxiMezwxW5NdYy\npbkx\r\n=o9KO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD36vBV3BjUtONgAjeYQVSugUNIg85fQib/7FnwA/E20gIgJO5jaLacEVPIn1s6c6J19SNE4aJSFiLAPVkDCh+eLO0="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.69f275d.0_1578440781826_0.17056874416944257"},"_hasShrinkwrap":false},"0.0.0-canary.1d2aed6.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.1d2aed6.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package-v3":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.1d2aed6.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.1d2aed6.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.1d2aed6.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup3 build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup3 build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.1d2aed6.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.1d2aed6.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-91qTacY4o7Wy1KyPOrMgnQCca5slfSfwCRBUEfl8UFvF25WF/knLINoiZnqVNeMrlWmdkubYClgyCHxydRQ5DQ==","shasum":"0461b54ebd6e82591836ef60c9c53d9292277651","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.1d2aed6.0.tgz","fileCount":12,"unpackedSize":9795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeFm8LCRA9TVsSAnZWagAAxIYQAIknsihyQDB2pOOKOe6H\n2vwXV84w/M+1a+YEm+VulMuuPwkW+83PaicqIsP4PlE46shguc1SVxp48adw\nzql9ECfaBZ+IFP7Wy3y49D0U814wq+M8+pmhwwj3tTTzyC23rGsrSfycXIzq\n3oxxKUqtvJ1WcUVc/chiekzAnIgoczjw5R6+BEZ2YHL8VJBMeX3HHI1rwWIM\nQvyyL0iwNbsXa3ls5NgP1JANJwCo1Y3ARFxgViuaI9pwS5ypAl2lczojzy4V\nm9HS5Efh5ccZcTP4e494sGgR2gE/zWaacE/pef2KjV9odkeS99Erm0ipeIvM\nRF69c+Zfw+xz7Oe1GNQP0F+dQ9dnNzC3nPoaobNBgugd/YK5NItSxaAsEomK\n3kyfCPveN2vHKSwny6pz1VRFolQ01O4LwbG3NDwXSHiyuTGk9WKYlfZbFsQP\nertQ+Cpc0Rp93mCBQVew/fVzqT07mkPceK5KwZx8QNWpBfBiNGkflz2pbWZA\n1CQqQvXxlKiqWyQthw44gRY1mnaPq9pBuLt1Ya5Y2HvNN/1bVZAhRR25Jzsf\nYuZ/9w9hYzEQ3h5/F7fx/HQ/o1qIEcOFxLDx4ud2S/Gpqt+IH7dffuceAa8t\njbuLIV7VWQVrjxBLJodyqTq/rBnYQPQScXO8G71hh6EL/oTvfwLfXRB1si8j\nbclE\r\n=SAZ/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICCucmKxbdRBKw/3UK7INoGFqeZOcTVZ3VvnrlQtOJTFAiEA0XK+xmMQrCNjW1brMijLywyoceiAePez7Pv7Sm99meE="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.1d2aed6.0_1578528522810_0.34489758980063967"},"_hasShrinkwrap":false},"0.0.0-canary.7ed789a.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.7ed789a.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package-v3":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.7ed789a.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.7ed789a.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.7ed789a.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup3 build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup3 build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.7ed789a.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.7ed789a.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-au9PFPbXKxsQiUy/yrNAUFkjVXb/6Q+7WQPVcUWpWAU+kniAAZ94vh292aCl90uUWZEgHxctaKvFLHV9FoM+7Q==","shasum":"827f317957c87ff5039eea02f70b802490fe623c","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.7ed789a.0.tgz","fileCount":12,"unpackedSize":9795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeFn9rCRA9TVsSAnZWagAA6icP/i17C9ZIaRyJ0vAGtvQr\niBFoE2w97wIPPSa5sO/HGAAqDxpWeOppG68EvL72j+9rKfWPrPc+F/nwN7Kz\nYReQTi/jsnvRJPwbTauXaRHx+yK7H5pc/Df/IDAyFQ3Bxf0vm9QRJMs7Uk/F\nnZj9VXRQ0dnLkwoRLeIkMRpkzwAtD6VJPMfbwoLjTZTeMpuSFA0y0QuWnn3g\nMyXexEvQ82xNeIMGbVqGa+9SmiDZH96nL0cccDq5268Ir4EfjslkGTe+DaDA\nIdHdMh8birbBJkl7w9HCb/5xHHdJ9o5yR68RTXIjH6GmtNipyfWx6sPW0KBt\n4C0GY1WJT40BMCxdEN7iEdN+QV1nIetzcAM9nmsPYdISn1pBQ/QtAfejXCAz\nIJFPSdM2PcwJoSLIZOIyl/z/l9Et8KAzNogL2dxLLtNfUUu1ZSKF5EzIalYL\n+mst85K3HDrsFOji2YVF1hBgI5xO7sgDAqgls3sI+AVhDTJhzWzpkQGoaz9E\nf2IUEW26Yio7xkHg2tKgyHCQJmZKYCTJnhFoYKhri7EjoxJXq+gceu4UITME\napQJg/jpY0vycuDY+18WaJTpJHtpRJVr0p1kmLVnkCx4UcgF74BycJ9SqZzH\nzPC2A2p7ZXpVQwSZvOJy+o2YKm3/FlAP44TGERWF4Fs5OYefqUiCnmlneYqV\nk7ee\r\n=Tzx8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC/X+rDFep1exsLxr8fHGav+RnSKSx/IPkkn82FhP7lqgIgDPfIIDE1wbsX1yza/CMDyi4Cwaz+CHCJya8wShgia+0="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.7ed789a.0_1578532715431_0.48586403160761127"},"_hasShrinkwrap":false},"0.0.0-canary.cd789cd.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.cd789cd.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package-v3":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.cd789cd.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.cd789cd.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.cd789cd.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup3 build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup3 build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.cd789cd.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.cd789cd.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-4+6l2sVMw+0TgdP8eWCpOdwBxek92XB8Cr6l36Qhk8Y/iJXGeHN+CGZ6A3QT3oMF6mTotUgRZBzcjhNiCH8wFg==","shasum":"11f45a972ac076ecc6eb16d35c4f414ce6f7f8b0","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.cd789cd.0.tgz","fileCount":12,"unpackedSize":9795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeGOhLCRA9TVsSAnZWagAArFMP/2b+VHp7NNIeBGdYzTiC\nRbXy0hz9yx0P+hoc0KT20EF6lcxxS8IS13U6wknE4rYDsJu0DZO+STv6td12\nzKyOEHszxduvKYC2Y8D7N1+Mh4nGjS6TFvr5D9pYTa/ZhjPT+Wx5q+tYzBBY\nx0nqAXHQ4KWKC1aNFOPo0ZYS37UTz9sRYYHH71WMY68bP/r8EkXqAGnUElBU\nJYszRJx7beXxCD6H7A+h9L1hAy2uPf5tqkNdia3hP0PgD2rrllYzxUv6NDzk\nQtt9+pSXw1CTOx0s7w6swh0geOzN/NL4dpGQW0Z6kfN8imHFpA8OtBAbJD9D\nb8IE1ntKQKzgeT+Mjdrzm2e1roNU4Hde6phm6eLo/ufmDEcclDNBLfwIBL8m\nvptEi/i3tgKnE0brDx8I5NR56IvUDDm3P38jCipMWASUVeZgBM08uMGAgqSc\nMyyNCZa+2cNn2WljsFguayeANdqgDS2dtnfoF36YLDHSx+TUAu+OZ8HlurD/\nVYkkZscEuAHV+C9zimASNLepLfwY3xLAUF4RbCySr5BNk82FzRwUZCuXMArf\nU55YSr+VditdKFENWJl0GaPT6Zdu5oUSHb2ibIQ35wKZzNYtkVRfr2wc+9h/\nF46k+DlSfj0exGLMVCMh48CyUOCHOJHS6+13sQn9EVvweFP2Ej0PQ9ISn6vA\ncPZP\r\n=wNwB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCE0Vpe0280AYfabILCbFG5zZOPz+2jXo9F8kfeL/D/WgIgXRUyiAIlzz9nSsj72Ij6oLxotllQToSkoZCwV0ZtHsw="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.cd789cd.0_1578690635451_0.9767309954397316"},"_hasShrinkwrap":false},"0.0.0-canary.ee6892e.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.ee6892e.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package-v3":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.ee6892e.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.ee6892e.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.ee6892e.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup3 build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup3 build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.ee6892e.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.ee6892e.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-i9/mfwFjmaWKujDKLOdd0ddaaLVH4vmOVwor8SQTrIuYDAVMn7tGSX7TO8aq+easRkKKw7d4oq9RjzjxvxxQzA==","shasum":"8c015730cbad5eb285aeff359e37494b7626c0d6","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.ee6892e.0.tgz","fileCount":12,"unpackedSize":9795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeGPNACRA9TVsSAnZWagAAXosQAIfiHPCMXlXWsvSOtEPe\nl9Q8Kpce1flXcuHxBddkNpJA7oinBdTxbV/Y7kJrBE8YFch9FvvMF+vsRWDd\n29tCxJ8Q8EwHvuFMsOSxLJ+udDPEOZk77lNXx6uNBlxyni2Dva0eEm/oCdGC\nL8hMCWJb2q/zFCCMBzrpB/h6VJuFRYGMA8IGI6sBY2D6wICPYjgAvE5o7YZH\n1sMGiDD0zUbFfPr8PZ2FeSLWBzmxwfgm9BrIB0fSJeYZYavuE7IXgFl8RifW\nX4TI6VKYpXiM7LRH0kN0WLHRhQyzNGSgZcD6tMKcCZ4LVLRwzaPE2ZDStf/o\nUnK9FzFpDUafs/bCsTFOBNWV9rZOFUnePYQeA5xjrijSnW3ruOAkJv4/r1Jd\n/JwPX/pFO0h7ZxabyX7eZqQJ7jc0xoJ4J3UlVk13gHk73cj/ZIZsxRlQuE3e\nyttz9zUoqlkjmaVdWIN8NE9sOM3Jl/ynfepZXKVq2018hzdaUpmR7+mRZJps\nqFPDYfROZ/hga4Pzs4oUlWmMe1ePqmkOho0DlBiW+9p/9PNTWg+9foBVnUQk\nDMyPKbP2iKPtVCOFKoMyTH5xbf/cj1c7BWanT3MQ6ZqChPk3Tx4rwHOEWqin\n/Ne660d8EaPyAF/XmgJ4V7IrdlquOJ2bD5qUrvBoIL3COIBei9tLMY/PC2qc\navyS\r\n=+8vG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHiZm2/jYDxp3f8NDQ73lmx9l5Jeh+K2qKU67surAAgIAiBn/qXjCVhb9FmjhJ2c/I9aTF+QqkeJtwSI/YXkzb8GuQ=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.ee6892e.0_1578693439300_0.22822224322313844"},"_hasShrinkwrap":false},"0.0.0-canary.abffccd.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.abffccd.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package-v3":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.abffccd.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.abffccd.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.abffccd.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup3 build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup3 build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.abffccd.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.abffccd.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-csiDtsfI0Uo74+Z1rIaKb+inCyAJ1KXmiPjzCz/XKgVzu1wfyolHgx1GL6qPt29XYcYSZAuKDYCXkAnuxVIaOg==","shasum":"116ba31443e936c5d3fbf66527083586dc326c37","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.abffccd.0.tgz","fileCount":12,"unpackedSize":9795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeGRlqCRA9TVsSAnZWagAANFIQAJN35yNtTYxYsP49wl65\nMwxByUXP2MW1HGDR5ct05hkx2++wvmtFaqnxWFoDsVBI62eyT2W/f5SyDT6e\nqE2DwLMrmnAjl5xpvbzbGiiCjinixaS/Gakcc8VcWLVfCUVKpJRSaVjEEF0Y\nZ5X1v0b3Ywu5o3ZV92p2xatVMoYOr1QoM24tHlloh2uf85E6k/7uYON/J1vs\nd5wBLxixI3NU5CWRejeiRE0A/WMnbTLpb4jq3YjPX1CxdOnK8vtA4b56U2UV\n4nDBPwdP6Z5fiFDBcd/LNWuFD8Qsg2178Zfs/oWYKgKwhOm01w/3LV8Xxnw6\naG0/hjoXIgh9IoksCdautX4VopCP0B2Hs9hsKva9FyYiilmbKk83NUNfmO9p\nQXgdee1MDJTKBenPmH3VA4Xcc4MaKQHGts4hsuFDwIN6vxVHiR+Nk9B037MW\n/Eb9wZRTSoZUgDgWpK+ncApjRU10xfabLbpWluvVScPXIVKsp7Xr9OkH+Ljg\nlkIkuhzJgy5gl4mKODR8RXatzUqYTBBNAVLghTBEHOhasBpaeNrKKRTF7hjW\nFsIMYBZL+42ke6H/9sbUMndm/dPV65sP8RUYi5UT3iYyRs6RioK6uHEpKoLa\ne7t0uVmQ+NG44s6tWNujD3nQVt5cJPGQrpFHpLRcjrRKxsK9Y1cJwljHmBYc\nw4aZ\r\n=AiUQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAPO02RQpQzEb2yTKFUEKdYP42cod7v+ptEo2SCOqcjPAiBpGoqKToleQ8sD5p8p6Y8G7usgm9exByvgy1S6iTogAQ=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.abffccd.0_1578703210122_0.31955144162454485"},"_hasShrinkwrap":false},"0.0.0-canary.b94debb.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.b94debb.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package-v3":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.b94debb.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.b94debb.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.b94debb.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup3 build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup3 build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.b94debb.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.b94debb.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-X0beB57gWdlOAXhaWSQQYSpQJxFkp+cNUm7eg43PoTMqSjcDDEYXG01p3cSGwR7HhbZ9dYJBFDDWJ1dtm/RmbA==","shasum":"a5c4ab7dff646cfe920f6b25987c01260181191e","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.b94debb.0.tgz","fileCount":12,"unpackedSize":9795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeGSLnCRA9TVsSAnZWagAAQKwP/ih5hwjPNtKjRyZ4QdBh\ngJNNoDee1swGd6mxnpBJVxtywuTQMsmEN0sYIVe8V/N5OcAnY5WaaEC703SF\n56+zm9he21mxM+NItp7IfWtDBpvhaDw7wWieT6XnQY6DQd4ga2Wo1Y0UhIP2\ntEZbR8FBmsNNws4S9/QAIisu/89p7H2VDXRU2h+01Gtjvhle4xHspDJd562L\naTX6YjPKvZl/xYiW0WO/j7z4BxT2Yn3QEN4eJrK9yqo+PsAez2jloQiGbois\nT3JuPDZUVOv3vNG3ErL1cvHUxHF9Yen1bd8PK6Im05xsuFqBTMMCaMU6yMc7\nlKjz9/+Gnf+d17hZZcvj+8AiFWxfCv7KG0Pb9vVL7XcL2rnRo0A1qJIIWDy5\n4jqHuGEJq+5tmAjUAKnhjMCMWRRucPpzI9wg2FRHRiEOujlTJRPK7USnH3OW\nYGzYFEq5SAn3/Tn8qwVZlR3fCP2TcIrzfCdASyy1uH/fgsk6zKluPGfuEFmo\npTzcEMcQ9FiT0iM9JlY471e21El6YMMd0OZ2142LOF2Z49Hd1KDV4yj/uEm3\nH2Ry85VlUE76C9kCDQcNkBkIHaRbdfxLJb7a5AkcKluo4ncmXm5EMV0GmNOr\neyKQcojuZVRF78BXsl+18gptK8/E3s3buJ9A6vxLJZF1a7+rdIjcKeJ1zEXq\n8dHq\r\n=n3cD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCKPMlE/YnwSxq3JeB7v6s/i49N6MrxxunyNGB/AUy8sAIhAL3EK1Prekpwz9oL44dUgiGjrmen0N2XeKS75+8vRx7m"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.b94debb.0_1578705638789_0.46331307402335464"},"_hasShrinkwrap":false},"2.0.9":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"2.0.9","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package-v3":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"6.0.7","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"2.0.9","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"2.0.9"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup3 build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup3 build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-2.0.9.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@2.0.9","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-n09hMTHmgYpAhMH6uAuaNKINStdnCB+1ls73lZ/L6SSKqnfWDE1hUkHfJ3zh/nJq0bttDq2FPzJoH5F6jNPhMw==","shasum":"2bc5a79d76d6939f3e38ba682cf10b762fdfc67e","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-2.0.9.tgz","fileCount":12,"unpackedSize":9727,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeHQ6XCRA9TVsSAnZWagAAgHQP/3g7MxMEcXwwxBVOqknz\nVK9k0Yl4W3FYstpBFGt5rMHYHH07p/UJLtjHO3gndFXqjbwl6HDrtKDrscNX\nc4f50PuNndUrRoZmuBOlSjsBnqINFlWo9RuFMaXrfi7yhn4ykuSn464N5kjh\nMTHBuOwGylk8CtudFpRXkuEmg7pFatgUBfw8hZTM8OhMVM0TzMSbJa7qT/Os\nMCTJcIPgEDWPXJ1lBwfES2vza5uMvJTc/JsVw4Ajb7b29YEpE0x5hggj71IC\nZuxbgrKDMEj1qMqdpU5zoLLjoYPqBTK1hSqZFNSvsjIIjVATqZusiUR4nEfn\n8h5Zmfv8hv13/HZpbdohQws6COcyTsCaXx64Hd6/2wCQVn1uJkv3s3piE4Qd\noEZpCiRwv94YqSJYf82+NgDuw4bcdyCqcLbkSla2X0LheClf8pdfD9rcHFKN\nblJOr6S2rAWCVCzTsTVona/wj4VmRtrCHa9nwlAi/Pz9/ZcS4aPaqTp7ZfY2\nLCcRKTPpLnMPpjOnDs1v1xy62ik8AAKGLnjIZhs+J7aAjtG7C1bIp4lVAIOH\nwXpZ55ZPPbtCA1tmsEEErcJhO1QvTYRP2BSN0cilfaZdwpncMKZVIDerFuia\n3NNMlL2YGjUupyUFrkMExY+WX3/Wkkbnv0LGyaOjG+id6GZKpHLnCDeoY2yj\npWC7\r\n=c7C5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDEZ5bDv9mV9IBa2DPwOswlr0PMXFgT0FyGM5COp6YYhwIhAKYm859BAnAL+oJOg2jhm6i/2ifx+DqHBRSl2nCaS7Zb"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_2.0.9_1578962582643_0.009011458720538323"},"_hasShrinkwrap":false},"0.0.0-canary.659c743.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.659c743.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package-v3":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.659c743.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.659c743.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.659c743.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup3 build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup3 build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.659c743.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.659c743.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-+kgROZyfLXWiQirE84umMUo/93qRm7X7XfqepCtCj+e429jmrpexhZBi1EDDngRwRpXGwUEBtCJwRCkoUsniMw==","shasum":"bca19a24b19c3d17450be8a806fd622d94d8c82a","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.659c743.0.tgz","fileCount":12,"unpackedSize":9795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeKKZNCRA9TVsSAnZWagAAjJ0P/2k6D/WCsL/l5sIjQ8OT\n/MWYmdGVQYCVBY4IXXvSYzQI79Wn+i65wNaVvES07WLmKyeK4x1GqKwomLzi\nXVxjANjicIbSH64idYZiv7hGXOlCHa95EQvk7tO8VbvM7vNOu0pHwSDYlHQe\nlOAz0laM/xJX5wEiPg+qNIUCz0LCn7jxEBasim4eFig2XgKe55t9v+AI6DdJ\n69zLkb1KzHjMmUuq+lsGu7H+VAd22Kt8+4y5/TCwRcceYxhl+SbLljm1o9pm\n6za+mHjMuqSfh+egdvubW0U8SwciE2OXq232tsPb88V/V4WhYWg/0kbN+HG/\nnztEABel+fkQaWkvhvNUMnhOn3mNE1xLnK8xDkHlibQ+PpkeEMaQ5f8HKMIJ\nJbPy/clMeLi8p+Ki68sVfIh0gw3OEWrMrFUYzKxx71rSWqjXlci0UsfPbmTE\nMpQT2+l7GHNh6vRlgrq/QnDqdUEbrfeMa3XuEzGG5FAtAtOPXTT3Hf6ljdPz\nv/bUVnqEgUC6rOMe7HHUtGRQr155y33a6UXlKyCBemJ7CXGyhKiyLAxUcc7w\nGsCGtKwauhLEO5ypIBc3u7MLzhOwg+uckzKmAe4W5Ws7RI9xrdMqs8rYYFlq\nyuuk3V3Ax4Id9ARW/gA/au1PAPlui/hlXtvAnNX56YzrlfugxcbFGQWLS5ks\nULUp\r\n=UduK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAJBz6z5tTzTXp6eVMnvHPWIZzS2lP++quWQK/NpMMBcAiAuJ2HUlNkzw7l5vEpdW1WTt6d1754GcxW/uinq9txObg=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.659c743.0_1579722317000_0.45382185029789635"},"_hasShrinkwrap":false},"0.0.0-canary.df13289.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.df13289.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package-v3":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.df13289.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.df13289.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.df13289.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup3 build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup3 build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.df13289.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.df13289.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-RlXfMDkrSLjbT2QkmbOLrYDl+YWJNmrAq1qQB9pk/pjlopK21JoVi3o/KWWRhP+2VsGP+rqjNilVtfevRnx+Mg==","shasum":"6d68aab8ac6c88f61397d207e8702caf93823738","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.df13289.0.tgz","fileCount":12,"unpackedSize":9795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeKPy1CRA9TVsSAnZWagAAOm4P/0Dzi4nSFwWypvgpL6PQ\nK4NDIL81cm6xPf9rzopZZnxr5NKCnWHA56/VKlEHIrYEp2CuiYiXwYX+5lBg\nkUCOKr1Bk0HjHhcNmeqGJj+FJhiIvuNWFpqHoI41OYL6Ly9oGENZ1OhR8Rwm\niAXSonfeJfDKCD82xUd78hSDX96RIEwFVfyenObA2gonoMlrx+9wnqIBjmds\nPKo/OXPfyEy0SEN3pFlzBgwwwsqqjlLdtMefeUm6XAUBNCZo8SQpIwwpckZ+\nFbNbgUf1NgEDYUqXmFVsW5aN/3DdM0Cbk5AUeDCU57CKzllDku5hvQE/Hbxt\nQCiFpzRFzsd7dBhlXjSUJbmeLqna0eF6xTkFCU0xtAnzMxGPpsJchSzMEa/j\nLnHZeC/d5i3YwLgjhGRPzJkmNB/ZugWrFfUmPjjpBmu3F3P6/zSuDT43Ap0N\ndX6UhItxufyoq6E1vtoDFy8o/y4VaLxrC7Eg3xZWj1TNC9tYihdD2nNunf1s\njhiWTzzixMaB5I7gcH7lrBbU08X7hv+xgrrDMdUGAclxJjXJdeiK0S/gSelp\n21VzHqj8Ujaedi4NfLlFGD0Xfi7O5UrnG1dU0tEhU6Z70ZB7wqTWnOxlYMbd\nLFIMbUAD3T5NxHTRlDahP0gZ4CN8DOXNeYy2YFyNj7Ax0YKHOaRV2SpTid7U\nU3xV\r\n=bWfk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGLqzdq6txX/GG3pscC1/Pc/7IXp3SMUo7/nDW1JA23dAiEAmGHiU3gqnvvAnNgehnOX+o2iVlX76brn+TRzekkjffc="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.df13289.0_1579744437350_0.9996314913777169"},"_hasShrinkwrap":false},"0.0.0-canary.79c5c12.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.79c5c12.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package-v3":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.79c5c12.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.79c5c12.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.79c5c12.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup3 build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup3 build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.79c5c12.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.79c5c12.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-CRVWhPCBtjgumycYGtMPHwXOxb+wMMWeGLHTRS44B4FCaAAUM/SMnBWVhy7c+k/vjZMKQfUAXlXONGmMRbrKQg==","shasum":"a77cd52913d3e96c92d57cc4fb76c64565eb1fce","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.79c5c12.0.tgz","fileCount":12,"unpackedSize":9795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeKfJtCRA9TVsSAnZWagAA0DcP/j2ltDpIJkKF3Ds+46s/\nb6twQIThNoY6vDgJzsxIU+43Mxkq5JD1tybj90nju5rg6ZD3qVu+qnHEbLhW\nRlm0D3lkoUe6VWNqltUdY5CJFa2O1RS/L5DT7SdUuIEA+kzAUBVAQQif8hEs\n0yPMsALExW5PTCJg2rlRjAmPWu26I18jgWE6vmtB12w86io8ZdooVPO0Ta77\n5tQ2FPjqAJ6K90skkWGEwcJkvjL1CujK3zSruMxEXZLCVCyWFf26gfLM4LJC\nfgd+8cFgAA8fhLtqeMFWPGP9t3SPrm4qA4fk3iWpJtAT0qJv5vVXLb1XURJ8\nP8WY3+xIGx/Rt/pP+IDgW+IYMVNQ1fd4zb+eIXRJ56vFEvU1AM5F4/t6hTEn\nqeGq7OBWHquYxSDojymR7n9xmru+Q3UcvNrqAT9s3Y7S7+meLojK8qqsSma0\nLhxjEHTsXoXoQ0HBhXir7rWtq6Op07spU9fq6KElfYpdUwp4pOanFXAlb6O/\n2hx0IUdA/xkMJEqcsn2TldGcdTSDq8Ojumo1yZKBJuHMSY9EnkyB9wEdrK8a\nM6LHcopyJJLSoRYkWVYbEW+mXLIjVvvHCW/fcLtI+AhTRqzI/e94+Xi86i/m\n9hX/I17LL5DY/caWQJ6oHv5KSAQmPPdYO5Jx5YQ5SGewrQc7ZwMSxf9jLTtY\nvNw5\r\n=Jdni\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCj6MG0M9RLA5Kn1Dntqox+KO6KOIU3p2EQHXSKgUktPwIhAO3Y9GBygxV8Qg1ow1UwwjEgYoMbf5Csc3JMfVcuRTo1"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.79c5c12.0_1579807341027_0.04975963552771745"},"_hasShrinkwrap":false},"0.0.0-canary.3a8e24a.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.3a8e24a.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package-v3":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.3a8e24a.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.3a8e24a.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.3a8e24a.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup3 build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup3 build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.3a8e24a.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.3a8e24a.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-WVDsN5ITTKzj1hmggLRcN1EhLuw67ggQcBiaWolTjL3hL/nz9aAw2IZAPVwh+39Xg2+oBwDjqPGacpxudUsyrg==","shasum":"48dcde838d206c2af6fe0bf32ce0b90696ba1f77","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.3a8e24a.0.tgz","fileCount":12,"unpackedSize":9795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeKiLzCRA9TVsSAnZWagAA/VAP/0QCklfG2ncz3JrRfnVo\nyDBu11G2IXz7sevL/RGSTxpF3dUmavgcnYkIQSkSOO2IvoJ/ypisVjjO+qnk\niBYqw41TVHhmAS3x2bYy8Jg8rw5YjGeC3ejLEm5LLAY1pZ/xc8rR9pI4XP3M\nwAlWknNGyvjmXgjxGjTTesM8ouMeCXbAoS+7dpp7xrG+VGFcXp91ru7dfaJK\nM1Pd1rIoksvQ87yQS5h26C15AjFOdC57AADtHpJwo3K/WfbF5DwGFtQIG6yF\nZ0D5v5JFWHJ2gnPXunWTIcZa0gtI5K9TNWqLpjZ35u5FuOzHzXQAbLYCB1W3\nGGnJtv/XiYaziUOALJgGKU/5sI1UrncEF+taztnFKDBPjDGRCyK8AgnNiwIc\nWtZpqAY1w9T/lnTrcimDEtAyM8Tfsl/JODtjuFPLQn7lLqPggSj5ZOK/yvwQ\n9SLig7wrHq5BzRxNWm71sTy+SkZrlZZbOh7mHppt3hvo6uIyXkdiz6918Izx\nuIDScL3nd+DG18Y/BFFxupbvMe/rwr0gYAUWNSmhfiPCQIu2oqHFLedTcz30\nmCH+cABoQOmNVPiy+3Sx010fhgesRBBOOflCQ8R7qWbgk9OQ9a3+innDx4Wr\nnmMIsf+vbI42HfunZ72mAt9HxAkv9HRbZ/wUzo/bbY6Bz/cfdCU+McAqRUdR\np1WR\r\n=3oHL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHgeoyigBqzeYJwUxBMzGveZMtpKstZuEAwqAbqvXbrFAiBNjWhVikj/tjLT+niiat80MsVx47b2jpgHqBfd3CPIbA=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.3a8e24a.0_1579819763304_0.4545920766660878"},"_hasShrinkwrap":false},"0.0.0-canary.55e2075.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.55e2075.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package-v3":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.55e2075.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.55e2075.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.55e2075.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup3 build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup3 build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.55e2075.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.55e2075.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-VhfguTAbO6sIMRakhhAO864mHuTRGPfLFG49n3yUm5eD9OjuptqLSE18nvHnlHlQ4TuhDINBnqi44E13ssC8mg==","shasum":"322f11fafc8686bf9bb9307a5ccc5f729126829d","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.55e2075.0.tgz","fileCount":12,"unpackedSize":9795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeKj8fCRA9TVsSAnZWagAA8xwQAII6OXZeBf1NwP5q+39U\nPOUKu9Sdlrg/LF6mItARFR3tfvdHg9+qNxVgxG8HX7nsvYfWuIaEf7S11Bfb\nXrEeLO5+1nQkuOMKnyh86kMoD3yDJEMMhyq1u7ihTbVyXZJOcYEJBCpzxuk1\nIyB3xNnuMrnRjlQYPVMV+RwF322QjxIsMWcA24rslve3TH/8JfN5hncSYPc8\n3zMln+3fySUdSTD7dDYow5eTCSIzQ77h6oTO/Cd8L87GqaNgSKRqY+jyySA/\nUDsoVD3yXNuq162aaicNZjGUT1LGJAIOhUWH0ywhzVKBYbNQoUodIPo3lXHh\nfoNHTJP/cPZYXtWZ/uVug0DXJgs1n3s089NiesDGsn+9s9+A0YkwXf2PlV4Z\nBhRFsi74oXS4VC0XnjmR5XKpBROwAhrCq0ypT/CjCqFo3cBWbrb/jnjYxhbp\n9mtNcsWwb/dLbrde4nqRsuDPUR1Tf/Ej2+WGtVfgpjk1MXL1/pb+X2GJPVkL\nfqqdk9ME84dXnC/aSteLEaaYYTSgWrrW4zpMlTII9eJj80UcvSuS3V9/j3D+\nMJf+leNuEcbJmJcUaoi35UWZadA+iq1TcveMAGkm+OkgqAo6mFWa56apAH+g\nKvk//5PT1y9qDPd7LvpOAbywIxgS+smLLhjKR+gYjohkJdn0vu4SY6UP+xNg\nfQP8\r\n=wMYf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC3ITsmotoe3Oh1RCxfVpANTfVbLgWVC5Bfazi315QPPAIhAI/4AggQoyoPB/uaXm3g76V8rXMkcCr6VRGCjeMvqCJX"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.55e2075.0_1579826975216_0.727564427525752"},"_hasShrinkwrap":false},"0.0.0-canary.294feb4.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.294feb4.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package-v3":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.294feb4.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.294feb4.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.294feb4.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup3 build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup3 build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.294feb4.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.294feb4.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-/fqCcMHAE1ZVjHLOsfB45ibOppwgyd9u+rZb8GmsI91dW3RRrpb57rQF1/J+4By1F1UeeS+68JmvD/vGKMXLew==","shasum":"9afe5f4257de92d035aa1ffe6216b7bb9f209701","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.294feb4.0.tgz","fileCount":12,"unpackedSize":9795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeK2+ACRA9TVsSAnZWagAACQ4P/iILRduaApZxHI8JtiVL\nw0zENlXzF9rudpJ0/rtrxruJ5QmVmGN9oQBA4PWRg9uRrKDyJ9rxLRJuv6mW\nI0GkrycimrRc5ULDq+zVCA9pYdSL7+JkqeG2rkpVErxL1ghDqGWsXukuCeyV\ntEP7tF3ODqHCoXcGsWnkRd6cEjCsVmh96+dUvdv+CtaPOtyC8talfIcLVUhH\nlcoM4xo/1ZturCiqdvHXrDhoZpbVO/JdUkt9fGjdIip6HwZxd2tatvDzTe03\nQpkhHdZsI9lKt+irRUEhAkTx2eT4Y3QHja704shcKxyiySCS6cgdNm5/oIQt\nAiF/gJQzayfo25v79FDU1yctfaqmCAFpxSBsjOrc/HWL2wT/QAnTqnW3D+sh\nh6kjGCgRDqn/lJ4yaY+kLakqU6AHGGFIJ7Y237p9lGRq1m5jyH4lFQRZAT1m\nrm+vp8wLH4jmhk6PqViBFQ9am5OcBhyN5Oxy6wjTWE0P3CDqp9sAlhu657gL\nDlFBS/GcFkxwR+iHpUdIZM+wySVFMxpGQddBzUpfS0wX8LjrYcZXBcXWREE2\ndyq7xjNWEMHoiTd9VvFZVrkHwo+wdY9VUS5CQyPQYjcF9KGlxw+bCbDdMQ/Y\ndvRyamEM5/MJcpjbneSpVTnfLuTJWU7gvL06OjR0X5PN8+7Ub94754ia8C9S\n3rtT\r\n=mCL0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAZc+oQLH+Qa9x3HDGxZALIVbVVr6Yo18hlPJAXc8dKcAiBdPInXimre069vpJaYlN28Fzb+2+HW59gKuzvyQFS3mQ=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.294feb4.0_1579904896227_0.7938741457451408"},"_hasShrinkwrap":false},"0.0.0-canary.5c80f83.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.5c80f83.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^4.1.0","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.5c80f83.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.5c80f83.0","prettier":"^1.18.2","jest":"^24.9.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.5c80f83.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.5c80f83.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.5c80f83.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-8QEK6z3i0wBUuAx2MWarxxQTE6zJ1z8SXPiGm1IeC0cqb6DIWfGzuhIAhA84yKTsnT4IBZ6Iymc7Oj3u12JgDA==","shasum":"9adae7a3074777687977bdda7fc5e552f537a91e","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.5c80f83.0.tgz","fileCount":14,"unpackedSize":25173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeLzJJCRA9TVsSAnZWagAAih4P/A8ssnHxQUNqhyRSTUkb\nB4EcUHxTBXtAaLEqzPUISIT+lAGvTKZmuxQBkqQLLp5hLmKv923Ew59pbfUP\nIMnI/NCZOgXSujja2hFRxQ6Py7xg0MaISSlHo2PiY1noqM76WcRv5j6dQ27d\nIUa/zomSTYfHPfx76S9/vtX80dqH007q5Lx1qpWb0XGqqqO99MkZIdfjYh9+\nPftpUyG7KG/4h8XLJPjMCS2pPXehxUEoEGoySOp0TE6yeD8sjovwQGab0k5A\nTYu3+BWNtiPQStLR4tq86PozlJW/PnHWwszjXDN2kMc+Byy32ZloMo+Lqbww\nzNUt9dcw23g1X+WWbe+pPqEGRkCNRnvox4cEj25QY96hLDpEvo6z5KjaCKQ5\nZbL4TDmOiN0UnUAWlm/Z9OnzJH4YiC6Lmd/qyVGavWWGM2/ga7NMb18N2CAx\nm6pHt0LsacRDmo5TWe/G2vjDNEGIiqMcNLFcndpe3InWVDRoivVi/q4OKrRg\nVOQv/O2lPySqeNnWn4/tR+cy4dUm14xZMLhgQyw4P91/kHxw7AfG3VkePd0R\nSnN8jpqM4j48Kd82mQwcg2xbpDowXVUdYvwDpuk2AEnJjp2MpXwxidjCdsOl\nbkOJSGyFUjTM0+gc0BRjoUV4NP6VyKuXRusbqnASu2Rkxp77iCGZX9s1G6Me\ndNxw\r\n=7o+i\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDSdysCFPzf+plSEZyr/t3B+DuvajAlH1GDB8a90YJCBAiBaIV9rJrD2jtGWJyBOfuPwG66A6TNevD5XIkS1vu4+Rw=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.5c80f83.0_1580151368680_0.008711933821420548"},"_hasShrinkwrap":false},"0.0.0-canary.cdb104d.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.cdb104d.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^4.1.0","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.cdb104d.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.cdb104d.0","prettier":"^1.18.2","jest":"^24.9.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.cdb104d.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.cdb104d.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.cdb104d.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-l+WL9gIi9u6PU/mB7GOQYpN/ZOKk9M0T9XlyOCkXPQLz3eHBwwVQoP1hAJsksnsQiWv5SqilrIi5dpfqDIxfqg==","shasum":"30c7d8216b522bfa819a4375c773338d80f18ace","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.cdb104d.0.tgz","fileCount":14,"unpackedSize":25173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeL38xCRA9TVsSAnZWagAAtNcP/ioWQNPxU5dXWQIcKUei\nkrh+CSRDmmWkhOwKSv2uQj7W2ysGPVl/o+OhMXx2LPH90s5+AlaaOHhoONcW\nbdgLdbBpT9g6vv2XuoDwWywuFbd9xf7iWFvsN6B2AUA62tbg/EZExIlFVUFj\nRVZ332K+GsQtx2U0O/S2bDuylN1poccIfLtoxTFk+XXJNN8IyXF87+cNvvDb\nP8hLOVbGubNEBDGWFhVK9LAE0yf9y7FFg4Qdgon6SyBiqxWksjHCCvWmwK6M\nF3CTM7UvmTwimQR7JAAJSlSAN4b3Q9exsWKawFDmGrcXrzjUKKB/ImTcw+Dr\nDwER92KEBmfo7AGRj+MClCM9QAM44P9DXzZgVa4HmW2LGEZRV1sm1tmyoWGb\nlEMKaHY/lICT4+bRfzDdIBn4eBElp+KC60H89ZTF/rX4IiI6f1lylDt0YQP+\nGNNCf2fJVMF1V5yQl4zLMUcg+GQ7ADHXNxh5VDaJ1TB7dRvyGsltqBrVjrTP\nXfZNIbtYNYuXMN5nEHRZn+DAekJyzyBavLvWK2uMlvp607v4H9sateZn8TRr\nPsOjFWnrK6f8PZV7oESQeTohlB22kGU1csNfupaBHUm3VF5QIfHJeZ7YAIyo\npnh5jdh4ycj1HPAGY+ISb1jqgaLVRYIV414lnparIfH06PvGNczeGEuZn1ig\nenIf\r\n=z3Qd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBnovmy4+73Xfvu1OFCkijuUIABevs1AjJFEEUXm8DIRAiBmvk36zOJtV1769g7LMiV1RSUHAQyLwZJbLOxq3ZxTew=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.cdb104d.0_1580171056913_0.35182926026059325"},"_hasShrinkwrap":false},"0.0.0-canary.1db323f.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.1db323f.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^4.1.0","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.1db323f.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.1db323f.0","prettier":"^1.18.2","jest":"^24.9.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.1db323f.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.1db323f.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.1db323f.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-jXcSvQ9VnE2qsIg4mabYm5LwyEyp0p3crdrSz/6bwmo2U6s8xlwv6oBwQjB8wfnLAITs0TKWa4iBny5SrMlkbg==","shasum":"2cf655ff6e80589855738a4f26d10836c53a8a46","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.1db323f.0.tgz","fileCount":14,"unpackedSize":25173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeL4N+CRA9TVsSAnZWagAAnwQQAIA/NeP6p3L7eDzQERRU\nAjd7r69rQVOhurrrRMuqO0NF49eze7+o2Pjak69ahT+AyntHHP/a4HNO8bpK\nA/uizYyzLhTh+x+RxQyb/+cdv27Qum5iNzQyYEGYeO5pP6dS9t6Vgz93l3yV\nikJmiTDWt6KEW1siIF5wPU+rg0Sveht973Pl4kkX6T5ZVSvil1gE/W/oO544\nYWxMaX7nkaFP0nm4tC79wcCZGVVxiTuIY26wkameQzpfVuHVAoWb0cNE6NX0\nspbo5Wpxzd23tccxmhGD5dBKK+FP7NBfQUFSxUfKoD/8kDS7ZfVczMnk5jdX\nXI8kIMBu0TDYJqLm7xC4ghHQcjEJqG8C+94r620peeHiaEL3zxrY9qoCCVHQ\nsdWjfIp7UljyCgECuwp62NJxPuwBWc1YjKixPqOSwv1s6vtssmZwvPHQfS5z\nu4z35QDbfVthuXY6ir6Pt9UEM0pwBs36GvjyJ9rgn5eKFHQV74ea/TajNSrR\nKj2f5cygmY2tA3b1xBXNPVk575WgBzzY/PfO6zrJvS0wrIFBG4vHbZND7jR4\nQtmlOuaa9R5zZ/QH/O3LSAwTxAV/RGNv6VTitCJ6ivjSovfY1OgziPGdTKqe\nT2GAYdTV5+hWTkNfE9DJkFZ8KsRl+w9zMXXYI91buXLnHAEUt/bAArn+BwpT\nHy4x\r\n=2npr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFNRxbWm3JqVsYGY2ZcZNqh6www6oC+7ADqtsCBdIsyIAiEAzZ6Gi3nkPgS94VtRb0t0XkERnjdq1ZyWYRsWaB0v3nE="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.1db323f.0_1580172158219_0.9131073097572979"},"_hasShrinkwrap":false},"0.0.0-canary.aaaf2fa.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.aaaf2fa.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^4.1.0","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.aaaf2fa.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.aaaf2fa.0","prettier":"^1.18.2","jest":"^24.9.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.aaaf2fa.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.aaaf2fa.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.aaaf2fa.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-58J/+Y44sruiVDHw7va3wNeZAJl7q7nCTp+lV6yTpisZjsKYgxB8qZPJxmUCQ5YZNJ5jNNUpalznUQ1M+KNwxQ==","shasum":"5045d1038834574f3cbc7be1dd101c420554bb24","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.aaaf2fa.0.tgz","fileCount":14,"unpackedSize":25173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeL5weCRA9TVsSAnZWagAAtO0P/1MhwQHSCJ3IldLdF0BR\nGfqtfXvAFPVxyoZDgpTkJ4WenYFSi+7wQcSQtyoqLEQ1brhtLeArJ4MKZcZk\njucZPK3lK/XIjG9HNlWvrL9k7QJZmwNvQn5mL/2dMEpVFZJ2WDZHDh12dUfd\noE+50Adv42PkL9AjLjUpPEos1lX6lK6ej/43gUaAXsShbTVUNQJFORrU7DpG\nGPY22S83gUBuAA6aLczHULFoJD2FtOw7ZLaWL0UnMHq9THiqWEi+LTVbk0TH\n/qslihWlsIAHjHL1WyKuejOIcahjIK/GQEZR77bdAyFDk6gtZuKPB27jkctL\nSKVf1LlKuRw9Ze0ZcaVPvp2nmyRJsYGpZf7SGJ00geVMnMT5kn470pyVxUUK\n08n8bEcU7ucV9tZyVsHBQDwJlasxZ1a1eqXET+eKA/CoBbWnOymmP7AVUaRI\n4K0QNYo1wY7LTKIv4zq0baZJ5IpHbz5yN3rsEo4Nndp59MHj1hrQOJfQpSzg\nByk+hRKM+I0RIwoGO09+ql7uVZ5tpB/YFGde40x1dBOk5oknLf1UMqInl5B6\nkunUPQieN0QcVu2uGwukpN4K13Cj/ltNydms9mr3yrUApxBFbghdesb5vttA\nYsod2glw/n9RLJjyBmpPaFJx74j/lX4r9XKPFB9DOWHwHel/qUMNKDWDYfFh\nBeE1\r\n=jeup\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDlkyumZUHn+4JXihzOqDPiUklnOtWu/X2OCSw5ZepVEQIhAPPj+Zy0Mzsflej2buAFNH7RoXIc8BP+6mZ8S4nEMSm1"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.aaaf2fa.0_1580178462013_0.2283254941878623"},"_hasShrinkwrap":false},"0.0.0-canary.fed6152.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.fed6152.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^4.1.0","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.fed6152.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.fed6152.0","prettier":"^1.18.2","jest":"^24.9.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.fed6152.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.fed6152.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.fed6152.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-AIeNOPQShbonmct7dLDHMSjXqFzl7K9q5Dq6nb3168uJIRz2Gq/VAWtJ7ynk8tiTw7Rd5W3VQczZfDmQGOI4Ow==","shasum":"28e85157988d763ea9c44ee22202ba36237754d5","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.fed6152.0.tgz","fileCount":14,"unpackedSize":25173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeL+b9CRA9TVsSAnZWagAAliEQAIaz8YcZ+gsJoHmQDcQ+\nqdg9XuhU49e6qZDzWyKRJirwbqlB7U5DE/e4sEoGLZ+GTc9u03aSvDNKS8Oz\nMcW6k2ol1qbahnpdkp/vHBz94oTwZ9w6MvfGpj2DZQpGATSI0uP/STLlKGR1\n7AI/yyoV/NecX0F2Okr4pj+cxvoZqwuwiD/KHJpt5zeTNhCOB0XKSiRmx6Gf\nm8UFJ10DbKscw72zSwxTBZV7K7FYNd2/aUGEN4tpPGL/bBySPUfx47LCxqnN\nnFpL+u5CM9GsM4UIieT4d8o+OydltT6gXRYKbFu5MBDSYyiVF6h00fcIXlxK\n5P4wxKQcGem4I0p/CzZ2MPTY+IDFSoZOMXnD8Vthf1mO/7yIDn5kY8LKpFbe\nnlB8exWZ09d6qG7hFKqKs4iyv9XM3AnOeI/cJWHVRbm+LwNSfyC3AqC7VIAA\ngWrdvgE3gLNrudmFlTp28Za8pZ5matcXl1M3zVai682RW52Q6l1GVQ93r52R\ngQpig+Ve5LWXwy3DDh/quaWHbDuU8+FxgpmcJ9eZiaVw2EsXf4nvcrTGoMYr\nIagQZw8xynPwwn8R0tcKu2Eic6J7hpwK1M+0XAQBmjTrWuaMs6C5YrqBNB69\n/zZIWRHurHRHBnYswjUWMbpxrt7XkMIVyjzdOM5ZqX2MnO2TDDxlbKERAZhL\nSm/l\r\n=qj9w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGkh58JQNTr2Ig5xzJW4GFE08HhTOm9tT6/qNgTw1kniAiBdobUsJjCJY1t09Zww51XFVZUHEsUNTyjuDzgJG/MgAg=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.fed6152.0_1580197629426_0.930642738835864"},"_hasShrinkwrap":false},"0.0.0-canary.971253d.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.971253d.0","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package-v3":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.971253d.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.971253d.0","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.971253d.0"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup3 build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup3 build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.971253d.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.971253d.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-nBHHTeKcTDKNEBiUyBZfaWsB8xoE85IbyoqOgsbizLrOWZF3TRlSxCXVz13BUxoY625DzaPsoD8dwLKDjN0MYg==","shasum":"17f052f424fb1c7cefbe006d4c548c5a58f295cd","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.971253d.0.tgz","fileCount":12,"unpackedSize":9795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeL+sACRA9TVsSAnZWagAAufkQAJS7kIr+6i8sQ1HqnAx8\n8Ezin5UkJZOmn6dXsAgu3kUYe/RZT/YtcQvdNJ45yQbyyugySLqwB2X7H4Rx\nNKhzu67nd+2ot2EuqIeC+tUf76ksFj35kIPZGdpRlA3BFQtPSpax18xecGmo\nMlmozHtqsQLiih51tCv+iMozteEodebEhUt7Cg0gO8AoI3OdlmLWV9cY4A3U\niObTdLxmPhYCAXZZmVpAjV0K8E3Y9bMKnZLN/Y0F1MPjdP14N9NT+fviVOFb\nSn+sqIY5BasPLx43z2C8lnIWzbqiszWRo+OZGVv7RDn1sKjGPEEaTBRgbRtQ\nxBgh9Ka4DKmpQdPOfT3U1igBGn7r5V+QHntgCxxgu0YeVz4GbycQgrIlm5qk\nVMIr8NdO37N3+DA3KzsRxk6Mn9alJYUKTvTzrfQ1eK/n38Wdfcm20Hu+lUdn\nG72J/J5kBnIrbxnv/gRXcvsSq09G0+pmWRnL7lc5Fzj7IHRRwx2I/fLig584\ncPQJRQfJ8lWiWFz1JDUWy6kk/Z8QXrYuvd8qydUwxKH5oKyDQYjirsPMXb5j\nBKsVzfBT9gQvmdM+bIQzs41COWwfmuZHu5rhjhOORYhFJ4homENs9pMYF3QA\nToCZkaqOUtjX7fk1U1Y1fNQO1tSf3KQ0Z6H/in385adpxvO/mktFimLupL7g\n+q47\r\n=zkz7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDi5goic6vLbPJ3syTueU45U9MKeKd1+1tK0LelTRs2eAIgCb9v3KWQa9EyrPEflqfueTVBNy/G0gN5n1LPDZVDEKA="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.971253d.0_1580198656186_0.1432137550667676"},"_hasShrinkwrap":false},"0.0.0-canary.659c743.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.659c743.1","main":"./dist/index.js","module":"./dist/index.es.js","browser":{"./dist/index.js":"./dist/browser.es5.js","./dist/index.es.js":"./dist/browser.es5.es.js"},"es2015":{"./dist/browser.es5.es.js":"./dist/browser.es2015.es.js"},"es2017":{"./dist/browser.es5.es.js":"./dist/browser.es2017.es.js","./dist/browser.es2015.es.js":"./dist/browser.es2017.es.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package-v3":"^3.4.7","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.659c743.1","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.659c743.1","nyc":"^14.1.0","prettier":"^1.18.2","tape-cup":"^4.7.1","unitest":"^2.1.1"},"peerDependencies":{"fusion-core":"0.0.0-canary.659c743.1"},"scripts":{"clean":"rm -rf dist","lint":"eslint . --ignore-path .gitignore","build-test":"rm -rf dist-tests && cup3 build-tests","just-test":"unitest --browser=dist-tests/browser.js --node=dist-tests/node.js","test":"npm run build-test && npm run just-test","cover":"npm run build-test && npm run just-cover","just-cover":"nyc --reporter=html npm run just-test","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup3 build","flow":"flow check"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.659c743.1.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.659c743.1","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-wFgGVx0DAQF8X5a6mzPU+2awZB41Epi8M/s6RHFHHRsUATlbbBjs46SPLyZ5MFnniolDvhcZc3t3hKym0Vi09w==","shasum":"0c3df25b520d373dc12845ef67eef3a9946da4f4","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.659c743.1.tgz","fileCount":12,"unpackedSize":9795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeL/ZQCRA9TVsSAnZWagAArJYP/j9oH9Wl4/veW8eqohdV\nvYwPI2wL9AYAR7RoHr57C359NbWSO6kCekWfED5sUdAlYTE7HP9EqTtnxeu8\nTLzkzi4dGg3cXxt7aKyYTsI9wNWBV0qXfC+ec5Iu7H5jOWFhcAS9qvRiOZr+\nGy3Cgb4+PGSVwJTeuxp6o88fj5Ks/A0xQgGgNda26cJXrqIlSbXm1TrnC1Rl\nMC6l3roUnOjERyYFCL5j+cmMkOwfBH+mU6c/G/C53IHltjDfbLHIehZsSRVx\nMwmDy6ElwTVKSQqtroJ779czZcSt67attbqC3mYHj1oADW331xCNCZ47ZfX7\nYBbs6SWWn8VgWILaK7Y5jB0YLVU08JUka5gboYYsSFjwSQ48n1PVKl4/uPwN\na6gE8T3V7/Yun86W0W4ZIFzmHlBnGgj7WZsbFYsSQZE/oP6ZV4GbQsgig+7y\njQ5b751b7xDhDzYsNwFLsMLzYWEusdYxb63KZKQPIaqUyziyvjLEhq27hOwJ\n1LEQWJ1NrVDS/+X6hiAFFDvtZT7ZRvYaHyg1hjSMPUVvSkM2PspbpghIqyln\nh7IRpOWLBEB5Q21snMQyvcq3LkW174DL9G/vt4m/+ctnw9lGcU/OhijolqQQ\npqS2ShxVrcbFptrLnNTIJVrBp3n0jIbbBLZ2Qd9aqzHOgs9ZbymGOHe/591j\ndmeM\r\n=QyIw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDa9m3bynliENCuuSZVd684jhAXfLvmzJEgJ1iOlwl8EAiBmd/sV2tW3uSV+wxJx/Tcgunms4FBIGgVP5LMbcwGydw=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.659c743.1_1580201551980_0.11501740745487843"},"_hasShrinkwrap":false},"0.0.0-canary.dcf8c03.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.dcf8c03.1","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^4.1.0","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.dcf8c03.1","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.dcf8c03.1","prettier":"^1.18.2","jest":"^24.9.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.dcf8c03.1"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.dcf8c03.1.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.dcf8c03.1","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-yB44CgnhpVdiNP6sKIJx8DmkQzjii8V2S9vx+1s8BzBV09+0x7HSCPZPd5GVg6r7nwamQCbNCK3NEqByNDMY+w==","shasum":"0b4e0f69b8ffcafb11aab35ad1ae32294af3ac50","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.dcf8c03.1.tgz","fileCount":14,"unpackedSize":25173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeML2OCRA9TVsSAnZWagAA3eAP/R8qkhcK9ASMw4jPToNa\n+SYi/pEoUjYGTwtx7aB7+NkqWgRs+EBOd4Atv3sTAoY+ZMZDiieaFTXnAoQK\nL8Xruyf/wzGxFxvj9hEoQ8iWKjongV/XB0kYpoG456q3Hz3STD3DxeECI4jk\nbXJA/JedavBwEOksHqsd4lMi2xg+17Nkj9wnySCa8svoTxW+tTo5BQFe8sNZ\ncd8UL+fJZ5QsL+QpATTaajcBtTh2dgwZtnJdAzQe4SdT+V3K0a9SC5BaYZEB\nCt0UzTzOOtnpHPonf/QjgYKjWc3jChiBr7q004bKSMwAwCVaK3GGBflDG2ZR\nMA0kLjkmRyERarajI6K1cGWXrBQtrDXPCVIbyC+I1lPvMh4mCPOsDVnq/DbL\nu6TOjgChkAc+XO1kYKXkVQS2yOGEMNs4WBHZijbA0Td9/f2tcodXY0SyXuWD\nBtz5SGxqNbbGQCe9mcr2Hp8GglgV59M7/le9wRbdJdFn/7p5cd5ZsJK8RZJw\nYT30tjBZ300hxm+jlRe/HiEAT7qnRgJv2YlVC2AmJ30xnM1G1a/XwUrUSlcy\n66SBAN+4xXSFHmnmzDOZcN1oGxBIqOZhn2p1reVB1LaAZ+6ng9NkmZV7kNxx\ny2iZvHDPabG7GCagp8aIJ3rpzv5UebpQdkE1Mc7NOnOrAZDFV+XBDynRQR71\nl6F3\r\n=tCbI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICr4F4GHx77RHlG5XNkDYT9NMfp3Dor+/PJ+9e37EZoBAiAMyfYtU72o8XNKY/M3b31MGJzO0dP+ok6jDZhJe5z98A=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.dcf8c03.1_1580252557642_0.707800515527053"},"_hasShrinkwrap":false},"0.0.0-canary.4fc2099.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.4fc2099.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^4.1.0","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.4fc2099.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.4fc2099.0","prettier":"^1.18.2","jest":"^24.9.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.4fc2099.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.4fc2099.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.4fc2099.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-l18CX2x7lKyDzXrpVR2gmH2auI9n+l5LFg1hTEJVI2+7b46rIRbTWVYeypjvGLZSvWYI/7u/7GXd3roSd4TkCw==","shasum":"c0cf058a9fdf98f054e550982313d2516798294c","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.4fc2099.0.tgz","fileCount":14,"unpackedSize":25173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeMSSUCRA9TVsSAnZWagAAmNAP/RD898+PIFGS7U6EIFUJ\n7RVMtS+S6xNGfqvwWJ+yVAshOWYrlgbqqsOdWaD9vj8N1aEYWaaEAmGDvOdT\ngNMC5j7x4C/NeW1fvLiL6P4lpT6bp2NuUSJKan/uzMlAKHtgdjB7ASOrs0Yz\neXxrgZUYqiefxxF418zXJGU7/oUe5GWrDCSiwTG1ITxnDUPKgLzbuma2NMEf\nUEafli9BIW6CCkxJlq0r2h5XtOCMSmqFARsVxTl+vdGtSdllYa5tgn5cm6X8\nv5AdIWqLV8Wbz4N2U+CpnhykHjY/osWzTA/n6yImB6fMrdTMoEKROD9Soueo\nj7+bmehrPdtHuPGX0HMwjonT1QrmNzkWL9S6Cu1GgJYrU3E4EyW6bFx34vsF\nUJbTPDg9KDxPRmAoIAW9fxvHv0jdbM6oha4f6LnCsEvR8/s3wmkFsBOP/wRU\nYuLdAxkX7ozfOow1BX43/NDBJUNsEe72ys1PiFgPtzxbN96VrSgF7szfcN3L\niXc48oyBkT63P35WeRdOz9W0UMMgsw7bTGpH3OyoO19Z66D2qntfPgkAKGSZ\nrzDTBHi+cFcRNlQpWaNp9SRfidIZGz3rezsjbsSeftnhiiUWBw2C3DPktMcJ\nLX0jvbI1JEK8fASNuWjq48iqR4q4yAHtD2e1dn9teMzcV76ca+fcnEemtyLb\nQtam\r\n=YY4X\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCf75jr5jz8QoGhXiHKx9pa5fjlMGmDSYRzYesFU0SaYAIgWhDfiXTXXirXS9MOA8Een3veAyKfnjR+f31mxzBtqck="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.4fc2099.0_1580278931646_0.24067757720519412"},"_hasShrinkwrap":false},"0.0.0-canary.2917daa.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.2917daa.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^4.1.0","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.2917daa.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.2917daa.0","prettier":"^1.18.2","jest":"^24.9.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.2917daa.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.2917daa.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.2917daa.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-qalBpHszHRoAWMYV7/Ctq860lYMWKYJMpjQ38bObBdgO2tVwqXdHzECXC8frHbioKzn19duiQGndLIDfKc3YuQ==","shasum":"cc75cac39aa481bb274bc45c50dae0220e3cd29d","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.2917daa.0.tgz","fileCount":14,"unpackedSize":25173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeMcbQCRA9TVsSAnZWagAAy1sP/jYRBIYeQHBl3ulWOaeS\na58dA/e+Lz/hzFcpGEbGNNO+zEaJnKSFAcAiKkb47+5m9etFr4PxCglugnJK\n4iUOtN5RnT5V2eMx/BthBSYFqKqAVQGiQfyGzBOyUESSRPrvGx39kE9B1jCc\ndH4dD+6tS7zVYA7FIm8PhWMOZK6pfN2nZURru8N0DVB6PMAGj+dzN4FlGqeh\nKEhpOZr42Cokc+Hc5Aq63GMsF4/dUNFTA6mPzaoLR7deK6BzpNdtFqFStTfn\niarP+QsnPSJSap65JxNkxW1SRaQq8CK8Icc/IpzpfZj1RklzkSbFSaTsnjT7\npFz/OBT+pc1FloTTdrB67C17lm8202ebqBSt4zdwqsvm+1rAdCD53+oAxY7P\nW34KWyNub4Taxxu03dNhpq/2e/+A/Ca1mefFrpstKU8pU1MM5L2algvwXfi5\nlfWp1mgeZGCWzInD6caRT65wp+SKGFw/tGYlC9BrXiLK4gp8WSOsdOZaQjdn\nwec5RMQd6sXE5qo4hR61nSTgiuHmHpd68nElwpGWnnv/OFA6ziunAfTVjuWy\nnor9G6xq7JZHNTASDtATNl4uwY93Vk0Ahxf5Aw9FFx0rHsbVdSsmtDF+4oBg\nqBZTKEnV6tqQzzMge3STeaxd4ivnd1XbTUMICa0N/i4YOBAAdxAiwgKxeQDI\nPVoh\r\n=lDLL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC9QtdrtbL7gGcOP9C6c/DJAlfIRZBpcvmbP2GKWcaKQAiEAgrVtb9oaSTX/4wRsR2XrZvXLFe8mcOuURe43JOZgiVk="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.2917daa.0_1580320464177_0.2774228523726099"},"_hasShrinkwrap":false},"2.1.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"2.1.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^4.1.0","eslint":"^6.0.1","eslint-config-fusion":"6.1.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"2.1.0","prettier":"^1.18.2","jest":"^24.9.0"},"peerDependencies":{"fusion-core":"2.1.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-2.1.0.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@2.1.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-ntDUI197mCb0iy6yliUlV8o0DnEqJieX9FZ3A3Prteon5wooaRRgwq2kO+4HHsoTFOq5l5Lnb7rYt+B6Rdm15A==","shasum":"5d2abed95558b27a96fdccd45af383c301473d62","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-2.1.0.tgz","fileCount":14,"unpackedSize":25105,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeMeHkCRA9TVsSAnZWagAAevwP/Ajl6nn0N5WozC/+Uprq\n6U5P04XR6b73ZGViKqtw3MzJM1ONtPymYRQgv/4tRPKziLJy9yFnusQNoktg\nwqhg3GqfnIj2eLyJiwuhcmbk48WIT6MhpvpzFxRmjVAjNC1Z/iD2vNnYHxGY\nwHxYRuTpCWZaNUbK2rC3z402tvB1bJ1npcavyl/e4lLMtoAPaKV3k6qRt9Nv\nDt0GVe9Km+wpT/fvmx+IO4/u3qC216StGxP/A/gIuyTX+5KR3nKQjVGxDBOF\nF4O7KqfrRYEopWLrL3wq2gPfXwNljfjxSYa4nAeORX2lmo04slPxGGo70e/Z\nyhZRSg8pn0QwzNvGca5GEIsAMoelLj1tSiwr7RjHqIuGB6aRhMYmsFCPX6ZP\nL6VS5q4v4W8/WGL83tiH//z+a60VmvYYxJOGao2kIJ7WedcuLnUegfv+sXEb\nsPB4tD8A7dL6nafpB7ihh/JhOK5jVir6ZvWTxLXWEfpK4a11Z2DwunjALcw1\nn21RSum5cgpP/uJraUpI7ViAXFDd5Zx0I4OSkWiEAyGVbf2g7MpPaoQy55ZG\nKiIIsRYedL83NqIPR7H2gVIAQHJn/WhrrVfVBaaBPjPZVZBP8y4WnsWNtYDX\nh+WQKYgWmuWCBCzImrk0yfQINzJNfwy4KCWkUxgxHptHCxAEJSxYrDQndhuT\nK60x\r\n=8l6H\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC7EeeKI17p4lvR3N8h3d5IwDFOyuw29MUF2Mpg2QsHzgIgUgwtkPq9KFbrJ/2Zu227pvZ5XGADyOAzc8PHE6utWPs="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_2.1.0_1580327395765_0.949144372829942"},"_hasShrinkwrap":false},"0.0.0-canary.97698d3.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.97698d3.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^4.1.0","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.97698d3.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.97698d3.0","prettier":"^1.18.2","jest":"^24.9.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.97698d3.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.97698d3.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.97698d3.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-2OA8X/fLtCfXbjX50IWfm4On4YfkHLDWaKFDnaONW6gi0abrn4NoAW7RTUmJSYri7XrD2NnD9867fB1yopvVOQ==","shasum":"0451ff6a9cef097d964cf89d24b0b9199da25e23","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.97698d3.0.tgz","fileCount":14,"unpackedSize":25173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeMgXOCRA9TVsSAnZWagAAY+MP/1LUtVycSdIDEkwwL3We\nxgHo6JLp7SqeCmNaVAVph/EJn6upG9UFhEV1pLOOJ55NH+GjWlQzH+m5im74\n2caRrT8hCX7m//LSV8P+GqE5m3CuFaVcKW+0Jzl2RXwqwCy9GL67wIRz8vYl\n9GPGaqw9788iA6aqDzDuJXySqbuwu3haDT862lsFnpShde/lBcvL7hU+NtlT\nEkdxMtfQBkI0qkHeqgbKMP8vVTz8hsTosrTgP2IQpYQaRP1a7+GEZT/4q4cB\nP2c5JxzgNtiflIO5aHmvboeT92yd9hTR2cULd4Ck+Her3ZZPwU+Uq46SaliH\n1p3rQXocqJZ0Pf2sXk68y/5qekpZCJMfVMxpIAl9cBV5QlXi8r4MHQ4Nzw/U\nsxVGrQVdYxphCEILUK0UTPksYMqjbckEYl04iqyNJe8wVsoF0QInQSPSsJpt\nyf/cSbywVToexMkpk7uX6UgKmquSlQWpmU3cv6Z6q8M1gACoQzX2yXOWnMWc\nUAivhJurQJhp4l8P/2OTrg3V46T3F8me0B/PnqweHPKu9+IzEhCDFjaEnZph\nJFruamQeH2LQ7FcQmR4dla/NQnt8AnFQk4W9KaHhfjwJCuj64DasBJKp78MF\nXFOljIs0pLDitr0VPsanjt51+0CuGljqyhDOuRcXiNGIReD4j0q+4GlS35eL\nEXZG\r\n=OZBF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFdvj6WcFDujcfl7ic52YNkv5AnmG6lz/996CMuCmlKuAiEAkQaiYKXlevWZP0+wFeTcSqd4xXCIJJYgn1g/t48ao4k="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.97698d3.0_1580336590130_0.21414725286052905"},"_hasShrinkwrap":false},"0.0.0-canary.69bc71d.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.69bc71d.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^4.1.0","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.69bc71d.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.69bc71d.0","prettier":"^1.18.2","jest":"^24.9.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.69bc71d.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.69bc71d.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.69bc71d.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-fKJRWjMoijisCMadr/7WRvKciDnBPimWL0xniC9VM0hsYXjeKEJQjK14e9OjqONszxChSUhyMqdaoBccGYDReA==","shasum":"d0b8c0769c1887fb980c194a9dea20a7fe4453f2","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.69bc71d.0.tgz","fileCount":14,"unpackedSize":25173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeM5hICRA9TVsSAnZWagAAhrAQAJVcbvGWBdstNwpICLZt\ngXhVkwqr43QAkTVDL0mlCRIh7j3skmEC9LZvEhPRItxNZpW66iGF6fud9Rnb\ni+bKoQtrVYQDCJbvw026BYWCa2+UawHoGBmDf9U6CifU6Fgt9JHe4uxceLbO\nsNpi9io6dB6Bfda3iKhy7xPrpI/JvZJDC7talp+QSl9XNnsz29WJHi5IqwX0\njJVwsHUq9D2oI/24RJkzGYWRrbI1uy6T8Gy9WAlbxBTcfyMjH+GcbBbO+lE2\nS9D7uMQVidM9rosoiiCsLcwcpFEkbt4y8B1fq4MB+gsruHtJqzuCayITtjQR\nU5Okd/+kYs79WeMIa8oWLt4kob9jDKKo5vjKryBmin2gFKfZANysWcdKnFgV\ne1Dk8FpLoMOSSbvvjqK48VG5fi84JfaZFYxYJ1h0o6L1qSFHeFN2i7lb9OSJ\nZdapWUvMjh4YW5ymD8tc46U/BQPyjNJi63idyCGJhLUIyaipDWgS/UPw9Jf1\nljYmpoKXc+gtjJmKH0TgJ1npP8TKUXXSTMOwCll5aeCaNPHIi/pndpWYjre8\n/AWJVqYcp2ySlYAOON7tPTVVkHnV5aeniEfA/ugSs4whifxqX7SjvThXwvVZ\nmRQ9bHyZ6cKzJHuMNrGKkiSKPf0lZqL4ecZhD3U7NuHmVvk7775h8QC21ECI\nselH\r\n=+vR3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC31T9j1wqz+0i5OIkQJxZ/bkDrj/XxA6U4eq1+VtoA6gIhAJ6RbmK6jT69qqMczO9Y5B5UjAAH3JYm+TZ7nj03H2kZ"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.69bc71d.0_1580439624167_0.16418991515399028"},"_hasShrinkwrap":false},"0.0.0-canary.fa2f39f.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.fa2f39f.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^4.1.0","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.fa2f39f.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.fa2f39f.0","prettier":"^1.18.2","jest":"^24.9.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.fa2f39f.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.fa2f39f.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.fa2f39f.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-fquAG3cMH9/MjtU2mhQnNu1zXFLEzDn6AQ8RHF4S275f46vW7X6/RXmHdY3p9n5OoXwvFRcvbJfRSp0OhZhuPA==","shasum":"ba09e1529daaa059ba2473ff915835c3a37c6766","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.fa2f39f.0.tgz","fileCount":14,"unpackedSize":25173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeNH3rCRA9TVsSAnZWagAAh+UP+we+HhoOheSGw+ta0LQv\nxF1fGoyBHKY9r/5pbbZKAs/jL1HZElM0zZJOSSluExmwuoDqIL3IPajxE7ux\n2vZkgYa2N1UhxSRZgQ5uUxea7r1S9Y4sGvoknKvHX9eOLLciCY5sW3jG9tP9\n0uQOCv6e72XaaNsKEDHivWlmtLim4HztxzL4ZIyi6HatCArq+O1M/F4QM2Oj\nzz32B9VnqBZ8xxOfxIwOj6wklQVl55cXjrB4d4zhb5LcnHxOQoDhzWdrooLs\nFhCaJGxbttRX5Op0PAQ+7+X7rbSC8ohVFz5qOSU343fwEm06ubmQAX3EBg5n\nflkdUWoa4/p4bZniXF6lp03rx70Fs0AxPkc1yp5ot0X04LBoJ6uModXOo5P4\ncLxXjWr4N6SbxbB2lx3etf1AbzBtUYkNHLbiZlMtdQ2aRVc8a6mNGJeoALC6\njqDS4z7L8ipR8Cw47ukyDklwy+oiMI8UiT3Zd56hJ3xFUg5WqUuaiGCu/kru\n7XDdyTGE7j7Gcw3niYSLosCtybcmGFaVecpq9fepY9jHVP8wpldQdbPw7utR\n5eh5lum0PCthX55UhUdlsyD47LMizzasqzjFul+EJjlQrrLVRSI8WVMQp+hS\nZoVGZvOYAfFktB26Ih50FpPoE8Rx7lnOwxUVvOngTPqFaNLgwhgxbN0iJqBc\npkKH\r\n=AaYq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDRmP4ibwHwdtWB2dGvdVZ/Z9Z7cipALlnkpNLybb6MmQIhAMijzmZDanEX/K6IXScaC8ksXkddzYRjQ9P6mhKSiemd"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.fa2f39f.0_1580498410732_0.045510206484812965"},"_hasShrinkwrap":false},"0.0.0-canary.1d3504b.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.1d3504b.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^4.1.0","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.1d3504b.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.1d3504b.0","prettier":"^1.18.2","jest":"^24.9.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.1d3504b.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.1d3504b.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.1d3504b.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-csRw1cGDtW96AqjK2f/Cvv84uC+9zokWp138XdKcP40Zp6NcRi/mDNYNlhd1aOeFg06R06fdSh0HWHf6cBYsvg==","shasum":"9f6aefa28af3a21f135f6ed833414cdb3ad01ccf","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.1d3504b.0.tgz","fileCount":14,"unpackedSize":25173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeNKL6CRA9TVsSAnZWagAAPUsQAIANbjAS9x0cgE7M7lVQ\n3HWMpuDQTv4O6AaS0QsKBTiPDA3LrwjS6eNVfC8+0hupakJy5Ll1QC2tHNoH\nXDBiBu9e1Z+WN6pjIN5h6ZjzAisB/bgpTcGD7fGvsBsLDqDX1bekcOyErmD1\nVEzeJMfQPt7t4IsYuyhLboo7n/qPrmRLff+22yZfd3dsn+DAX0xLLJCxu+aj\nCh9F0EhVetVf2XQnspV/yVum7/LlEl9vpmYFy63D+q1WvD9SMRAIb0DWi9vD\niJvxuZBb1Mfxrftkmtgg4V0TcpZB5Lp7ROUO/7s4vUo+HPE7BnRwvbPALqXI\n0sMmpXBMLxzceW4UP+XtXKhVAGutrzjy3EywQI6bWFqMbeLBqCX6cLjnx4nS\nuj0aaLuaa5m6DCGUj2H+NkkrS0r04lni/QvBK0wmi3bKYCkCYdJ/XIpPRbhz\nXmpNIS0UgYAMYKa0c0D1AR+F8TmTbuvWmxVlJ4AUjZtp95Jh4+baay7DYnSE\nkqv1sfDkkSXaD2IvoNX32S0n2Hf75vQScZSlbW1gPdgMxQnfX2ve0ZsHkCY0\nET8ipikSoeyMAX+sHPcGvnHjiIOpF9hmDwYGkZGrf4EaZTdxbNohzvUzIzZi\nneUr14gyhBcGQDYatxQw647GspB28F9cmX4hHSUxv/Lpa5oz9q6biJdKM2lm\nZ3Dn\r\n=49vK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGQbcqA/DTZfqSW3Xi9l81IjdwpLZftpqQqkdfoDfSltAiEAlrWxEPyFL9C/IBceIwfYP0D5UPWWea+U0wHu9XNbLPQ="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.1d3504b.0_1580507898074_0.7170194185337968"},"_hasShrinkwrap":false},"0.0.0-canary.2effc34.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.2effc34.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^4.1.0","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.2effc34.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.2effc34.0","prettier":"^1.18.2","jest":"^24.9.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.2effc34.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.2effc34.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.2effc34.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-08+i37Xn1VALyG/shxT0JSQEMSZ+JDoA5Zpk5pZLE5XxtacjBIaCgPg8HvFd/TuA0pzk7nxKTwoHxHsJyg/mVQ==","shasum":"7f5b1b0f61d20c0aa6cf046bfc04daedab784fe6","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.2effc34.0.tgz","fileCount":14,"unpackedSize":25173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeNK08CRA9TVsSAnZWagAA5CsP/i9VRJ58AODGpstWP0wo\nKJIDtogeinn14LV5oDUdvWrL3Ss//N1ApQsKcgAIT25t3M9o/E3eygvZj7/r\n802YgkRCg3Swta6MlyrxkTXPqo6NNkxY5Df/fXxEhHbkZuk4Ts3Y6u7EVZJ0\n62bMmsx637aYKX0VR6ACDdq7pcHAM+yVitNm6wGYP3wi4oK8J89QhzmbXpuH\nCNUl/IWWv23FbkSWN5ONnvxmh8bdgUVRVN9JI1JW31OQGJkhIemy4l9mMvwr\nbwvnjHv3Nt2/A1g1VOmwU26H85J3lYXLEnK5Zr3h0aRaYgaBNubAVd5aO4gA\nSqWU0/PICLFIufsw1DDex8ZgRz2CzvHaXhM/FsBtlsWOAt8b3/AJC3z3v7HP\nz4E32IZmA7njZX6/vaF468kbKxTvGbItrb8goRTbrSPR9s5IZept+6HwV0Pd\nuPk+EkTiN/yjhCq2+Cp9QjIpj/+IfBjozmSh4g/rXBjNBFDLQnDkblNg+Kch\n9x+w2iwAaTKF/MPGSrkRVkhA7pRYN+Hh640t2eVJRhVW8ByB4ZBMGU3e5c/t\n8s0mXJQwDZXNLW1BdU6V2UTsy+Tt5eRHTvu04qBpjUOtRDJSEeQJjvKHRZhm\n2CHKL9D7dlJhuPrx+OVZlaObIva6L0CCVKtj2tuR08PDqat0qHq4iVxFCEQj\noLj+\r\n=Y22u\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEvM+A/b1qf0ZI/o5XS0tsPWiP9Dq0aZu9MxLieXcweTAiBq+oaXcM8JNPyollR6tppx0AyL/SkMNyRc9I8C2XsJtQ=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.2effc34.0_1580510524354_0.6272577456772128"},"_hasShrinkwrap":false},"0.0.0-canary.deed5b0.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.deed5b0.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^4.1.0","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.deed5b0.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.deed5b0.0","prettier":"^1.18.2","jest":"^24.9.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.deed5b0.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.deed5b0.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.deed5b0.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-gWbbST2Fr3CdKOqGzDhunIUEgodIohbM7UGODnu18BLvCpfnzkJY7/4DVSEitponPYhpV6qcarMG1Ni5b3eltw==","shasum":"f09e64e66a2d3427ea51960bfc75ed9cdfd38e2b","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.deed5b0.0.tgz","fileCount":14,"unpackedSize":25173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeNN97CRA9TVsSAnZWagAAJCkP/2GxR3rGWi5HbKbJAlbs\neBFDr+BYUqGdssXHWuJ5Cp6RRS1Q0F6PXiEflIvTTudC86vBRjPxw/qJjnr7\nRunP4lWni5cGHZsGXV7f3Tg1L3yWbHkJcrX4qulht2Q0JimwnreD4oVswU6v\nodXqeA5YEIb0oTC5OtL/MkP0DeGlazmcrJlZNLaUW9oGh4o9TXh523tDawBG\n+SwwHOz8zMLC6cg6dSu/F6/P23Etf6yADUnpBVYhxKbYleIHXNRU37/G0P6T\n6hzIiFLmQ0wrloYP3FHCNBdizXUbxG/uZmCD60Zp7f2XXMSr14znjJkDa6ZE\ngpCB+sAK6HXY1g4iE3vIZCO66xnatTa9Frxm8TuYZsLywVsXvmEDofD6RSHj\n5tszyoOf2NVs8hxw01H5wKf3fTJ/OZEiahLrkTy3hsnQZbY19kt2OEcaZQAp\neSf7DVibRulPwCsoppTh9FFxml/x42go/HTZGEEjldKHe/06lACeU3ltPdu2\n7+3I25c1Vbr0fbaHzlSd8wQWq3gW0ds31F4yirnGPOnXyb72wADVblRphw9N\nhPncaS89fNf+XG+txsi1TfDLU5jZAx9AdmTAMemfN925wdIpWgTlROFMHSCA\nqSAsXO/t2CVoklpJq7IQcGhefF77p4aG58VJnCPoeoShfTWZYW1/b2KaODIw\nBIwV\r\n=qjV4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBkuHGdnWhyzGfg1rbGnqKT+bOFpSKapjdzL1JlmPj6uAiBe7hyzETSexQq5rfYQRLxoWyvHM47TepxEVxngnAKDww=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.deed5b0.0_1580523386469_0.48678388478546086"},"_hasShrinkwrap":false},"0.0.0-canary.3088ca8.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.3088ca8.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.1","create-universal-package":"^4.1.0","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.3088ca8.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^23.0.4","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.3088ca8.0","prettier":"^1.18.2","jest":"^24.9.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.3088ca8.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.3088ca8.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.3088ca8.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-smQVBrqSZvO1Fh1Qa3sq678VJoxg0F2uhcFZ9K/gU3ycPClpEwsYxHdD65oACvnX6eTFgDZA4P9bHp9UcqPXAw==","shasum":"b84176c5e6aef9763d9b156e0d6964cd672b9c6f","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.3088ca8.0.tgz","fileCount":14,"unpackedSize":25173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeOIx1CRA9TVsSAnZWagAAlBYP/jevzdYcRqHWdCh5Chxv\nAzgKCpQ8oQPqV4lBn1mjKWnr05f1L/DUU73pFmAvQf2HJOH19nFbNEWLpv3M\nILgELOsg/yagVUXxn+Ustqq9lhOzLU+D2aUzBvk/u24N3s6WffS7j7qq0Q+K\n/a8zJO/VQs+EOVYU4U01+PIDK9QUFYwtgzTWsIwu6I+j0GUwNeCGReski12Z\np5zkHBCQHRmZKGEYuaQrYL8B5KqCK6TVp8dboMu8zJGnrrVB+57EKE04Qotd\nQSHyNlnYKwWa0mHUA6ORE2wZ72/j0Rt26WW62rE2fXxJV4SPW1cCfsXD5w2X\n/ifNkVkaYI/cSAQEDShtSg5QgaudlR4NRof2pqXFySKseUHRdr1c0UZWM1UN\nLRH6pD2jTkT9K5W5i2L3ZWX6nY7T70DdoKsm6SySumz2HudSr6yoGaJKbtu6\nrebv6SEcOCFotlBE5CIDPoYeKGLo0vl/gggHGuBW5a/+3LOAGNxSQGqJE4qt\nlqEwJcvff6GweqQPM8OpVmp93fTLrN28IDgZpmzKQTdaqI0LJ3r+xu3n3uyi\nnw2OjvZaZ0vENZyL1D112MHIlxXUu6PYLcCgM+Yr1S05V78e6z/LzIDAa+4t\nGAWCIt0jTEiDQsTVF/pYyDp0jx0Bx3QWycxGrOas2DRipUyWvmLFnQ3O5QL6\nmlFX\r\n=IDn1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCycHZ2AFGlnG2AGEVV9LMuJibpd5OMiswesieogypYPwIhAI1JrVX/qAw2V3D+NJGqYjttWTEip5VE3HtGta6pgjqK"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.3088ca8.0_1580764276950_0.6338177512224379"},"_hasShrinkwrap":false},"0.0.0-canary.9a71266.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.9a71266.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.1","create-universal-package":"^4.1.0","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.9a71266.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^23.0.4","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.9a71266.0","prettier":"^1.18.2","jest":"^24.9.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.9a71266.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.9a71266.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.9a71266.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-kos8ms5xefylvS1VHj+1YtVZBUnuB2fDwDzrueFhtV4A759wyFU6UtUQBP8hdEBZJcLmUAI9G6oX2IxNk8+rnw==","shasum":"f87d6ee9dbeb88f88a560be7e775f6f7c1db50f1","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.9a71266.0.tgz","fileCount":14,"unpackedSize":25173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeOI40CRA9TVsSAnZWagAAnX8P/irIoA2crtTeMZyPJGqP\nJ2mCQ0ccTmqRD0/KKey0UNia7f7ogLsNXkG8IdS7g4Ej9g/C91J8LnPhnh9Y\nkYpp51IunKYNWQ/utIpIDanlVnAA9tolIVU5mkIGyDvHDiNMYUgnsoOksOkZ\nCSmT3803vxaDeV8/tTBis/r2t47ocmgJMQQqWuuWWY6knEJhGcqbltzT/H/b\ne8Kh2YrjjQg47YwlR0a2RyliMSCrEWgY7L6jqCA9KhajWnDij4yQqwUrT4Qj\ngXjUPW8NXTRQ7DmyUXQdRVK5RPv3Qk/dXErVmfbRSdTMQP+vK/UzvSJc4z23\nE3e3cPHqnOnIynPR6ru0YwEeti+5sYxGU2DFwYbaV8UNG/kHoYcZ/AcahVZl\nLJtpuYQbQ1ul11EUHxsrSaWiyJuGUcWyQwgao4GM0fdTyrofVerd/BAagLwo\n5DtFqZS95Fw6bLOSAng+gAFZYAkC56n266c/aKiWytn+mqnpkCK4kFF9rzE7\nRr7r3qL2H3rxrZIUpz6mQacqQyLjUYW/vLeItITzdTKTxcgaY2ME0mmpgHN6\nIoOYDSr72mKhIIOO3oPZEqDJwBoD5r+nUWWgvlsHsE2jpHX8yXigieG05x4p\nD2irARTDmuzBeEBIRePM1PJjbF8bA+93a+GM0PEFQbu63PQUVW5+SWUmZjlz\nzkNG\r\n=Ka+F\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCKQGSbiouc9AabDuLLBbVXxVbv2J1eh5ue9RrMVHFLTwIhAPg+fG1qJXheQqinhG2SdHKBs4yaGdxepSOOV6jZqDiF"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.9a71266.0_1580764723817_0.05531659826417612"},"_hasShrinkwrap":false},"0.0.0-canary.9a71266.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.9a71266.1","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.1","create-universal-package":"^4.1.0","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.9a71266.1","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^23.0.4","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.9a71266.1","prettier":"^1.18.2","jest":"^24.9.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.9a71266.1"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.9a71266.1.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.9a71266.1","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-X/OkPRB1M8eEcuydBUHHKs9kNHtBAbfH0kgfElTE13WxqLV9Oo9l2ypaQPw7avmjN40mzRKjmwa0LDGGJzfNSg==","shasum":"069d7ebe6e8e29e6336a58ef53bd0efbf77045f8","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.9a71266.1.tgz","fileCount":14,"unpackedSize":25173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeOJNLCRA9TVsSAnZWagAAs6kP/jxxcGJKIoGidjzTI0BH\nZ1ziUwNnUikdIFsbBJdNTKkM5d6Sgm/sFwO9+7QQm8qe0kW+lZuSalXrFvWD\nJJe4P89i11k6G5MXKBen0bR4RZqnfAVSr44+NNeWEN6mwJHnRs8Sz4O8k3il\naUPCP4duFicfnAEH3yP39PbTc8DoBykatlISGs+I9i8KRP6nhtMZseSuHSxM\nFGfnVfD2ODUKxD7lp0VrFnVmyZXl/z4YQNMtAFVPnyNl0V/qDfHSp4I3ToxB\nHseRQCX4KeOjTZwQNDwsEiEC4i4s4v22qxvaDsEaqdEB8K+CVtrwniNpvdFM\nvktrT8fCeKmSSNYfgHOCSZfSmqiWpuCKa9kSYi+rRdlyhs3acqnKRALho+Hr\nky+EdokRl7fNH34mzO6Np2GXrUXWKlQlxmvT/F3Bi4oQs1Ae8NJajy1+G2Ri\nnbJ3b4vqJO2a0xaSIO9fj7qWSbQjmzCYANaFGwjcjegwgiMeq1IuqciziWDL\nergmTQLlgm3JZZGX49OxfbAM+OsUrncyvDhJ6HhzEPjvtQtCJZ9H9M45qjIB\nW44dXuFoT2JJVkATUyw4tdf+F5pLYhnmHkYqbtrkh7i4r9WnBfBDTUCXEZFA\n2h0gMAiunkYlzn6o4ieEMlVTnUn5HUWlO9LHeD4j3gX/qRbxq+p38nbQH0/+\nEGJX\r\n=pLYd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICz5E9oqOUxONJBRc5H0Jo1uDAFDRVh1ZyQlMsVcvc3GAiEAmUbY4unx45/7tEpnVT81/tMgUm7pM2AARTL9IeXN564="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.9a71266.1_1580766027417_0.19977328037130304"},"_hasShrinkwrap":false},"0.0.0-canary.9a71266.2":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.9a71266.2","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.1","create-universal-package":"^4.1.0","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.9a71266.2","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^23.0.4","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.9a71266.2","prettier":"^1.18.2","jest":"^24.9.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.9a71266.2"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.9a71266.2.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.9a71266.2","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-McDLNVWWPPOSRVxpYX5td+MXxCu/5cqZ+eJzkp7xXPR8l+p2ah3RalPrWGACEB0QaulhGKbbvmhjWLJNZju1dA==","shasum":"84139fe2f0b008518140e102c2fc3b73d2fafc06","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.9a71266.2.tgz","fileCount":14,"unpackedSize":25173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeOJkMCRA9TVsSAnZWagAA+10P/i79+zEBu5h9xgB8AkxD\n02rj59Yj9MeVmg8m12VvpCIsSpfgyWwMbjXfza9ptxdYMAGkHX/nGQvzLdSZ\nLXCBVAHTZLU8vJPB+2o+NTA6p+eLr2GluayzxsiRgmSdta29loqkImVesrof\nrwzj8wUzxUsXcS80gAhBYi2RPgKOHDU3K6KgT+6GyfUeP8xzT5s1YViaMA96\nemgAzAhom6uU5j+HLO4N7mfl3ekWD0mj5vWRsh8MpV6+oDZSMYneDej5XDaX\nqhBGxY/Ccv2yj5CroVA7faVOGD2oEzyN7UrJkRdjswie7Uu5IGvmKTwz+kT9\nOpHtWKh0E/SWiQPPS9CvTtWPWCzl040/yFrl09Jovw6tB8dWAQXukWcj0CDB\nWlnlGBTynQGRYgyN8MAK5OcVo+9gO9bBs4lftm6N8Jeq4TON6eZo7vyLQyDx\nD4qyXjFdTk9sGly3jOtlaCCEw+8bY6aCoseKIuyQavyP3SEjdf7Wl2oJhB4W\nTlVZpztbkEMLXEKfcvGjYl3neg0RrZN7yULpcLM94JGC7JC3GfpWWjh/WSgb\nKoVbK2aF8C/oONZ744TVXK7VPDNuKU5q/XyGD4UQ4OH3Nr48KPJCZGbuK45x\npkWiDB3DfJ/IvcHsRA/s4xwGF7ExFqk/725qeTanFzphtSDFaeNmto4oG8gW\nHvkk\r\n=d+uh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCfkGKna4/pjo1hayive5HEKMJHWsdjVorambNF1qLIEQIhAOEwB9r+KkfhACyS+S59dYgGSrXoN64kOrMEu2LDCLvx"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.9a71266.2_1580767500185_0.699985762072707"},"_hasShrinkwrap":false},"0.0.0-canary.d07e1e4.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.d07e1e4.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.1","create-universal-package":"^4.1.0","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.d07e1e4.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^23.0.4","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.d07e1e4.0","prettier":"^1.18.2","jest":"^24.9.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.d07e1e4.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.d07e1e4.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.d07e1e4.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-DKmD9G4b3sRWp7wagS1Xadl256UeXUdBHWeLkv8jXEB3tdwTkHjqs0poM8ind3a3vOGTKZERQzewAaPcuQhrrg==","shasum":"3d2e52e8016a54de4d1c037c46d9c2692a0bcf85","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.d07e1e4.0.tgz","fileCount":14,"unpackedSize":25173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeObvXCRA9TVsSAnZWagAA/NQP/A8LsnRYWYfbEyoy5/t9\nifdbfE9JjROvvxXHaOUgn9W/JK7wcTIE1E4BVWJ5ouvxYEbtyUNcbRlWZtZ7\nB1meGoh6F3/BElnODU3IOaxdbBQYJbKvk1+5JPxlMRp/2E43NYvis8Q43Cub\n2rE7ngWhL/gp7EWB7sXnIrRmRc71E7d4Dpxx51CF/SF0t9J1vfJWnD95jbB4\nz3S7jMRC3s9va1ihTollmHtcG+Lt20azX2lyo7baw6ZC9UkHwJJYm1Nk5yRw\n1FrW/mSopBFza7BeCopwdZGkCmH50119ndTZauW1ELwiT37x/9c6qNbrGl2W\n/7cugBEdLlOrBMGmwgFdJ8C8Csi9YJbi4s2+lVluYFZc23ggslqktF1aGhjr\nvaHKhiFRyI0IR0sFYzY/Xfvvd73CIfBv8lrZj/BSEfksdLTZLENFDhy961RG\nCyMnaDLp4PpHYkuQjP37/ovBIDulwyHiP7nWFCmXRgkrRqeWKLCDMhR4bk0q\nIlKvgFTInnRzr7iVA4FCz7MOQhUliFZKiam1YtVRxvaZbHN8u1uZR7b9EYl5\nZV42LVv660YIPMB/HFbFktPtz5UhFmhRrtZJIEOPeDG+jvoK2gnRq+aTOoYp\noCKARhxDhKCBOSiKc0opncQ0t8+Z70wmt3qGLFX9ajrpb/lmp/sbMmF+1CL/\nFnlx\r\n=+Hxd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE8UBs7xXoIWiuhVg31wppCDJIjfhVS3GRfryKUlnE6JAiEA1LWTkNxZ6In3acOxrMRlTnmowkRn20u+v2pslG9AFGs="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.d07e1e4.0_1580841942846_0.0726374142150219"},"_hasShrinkwrap":false},"0.0.0-canary.05b1cf5.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.05b1cf5.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.1","create-universal-package":"^4.1.0","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.05b1cf5.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^23.0.4","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.05b1cf5.0","prettier":"^1.18.2","jest":"^24.9.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.05b1cf5.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.05b1cf5.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.05b1cf5.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-ZwXY39pHBZDEbsrfQFmhMqp/tNRQc3oQmkoDkdUZMtXIPueFrlcLq4iyppd5IuJGQKbNAE1aRGfmAw9EJHPxDw==","shasum":"149b64395bb1bcdcdbb11e2538b8d16e5bb2d987","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.05b1cf5.0.tgz","fileCount":14,"unpackedSize":25173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeOb2VCRA9TVsSAnZWagAADWgQAILQw2DnD+rFyQIHGUPs\n9R2278AWIE512wygq58ZNFYfx9ijT2gR+OFBqM+L9kIs1sVC4taBG7NDMNgt\n+99HYHzi73fRa7X3zbTxzELHAShirr34GiQKLW3GZauYMXONAJwkb+Wit7fZ\nKkKA0bIVwcZPHX4UMm6Z5x4+Y0E3ck21Ql+oBjToBGq0MNW4TpTJ2rOI3mdj\n4pcgNUmYPcsonlgELyURknA6Oh3xC4LA7gT7HevaF/YvWAKN6yv7Tlie4dAN\n/LQpnjXiFhIm7tVMguEIIkckJAOe72/9P/XR3wv4O+szhyHUe1MN0Q9xVUAg\n3G5H4UZcdN82FiU2xQERIZTJgUXidqgXUpLGw9vgJ/HMYWVoAufzO/bbcgRL\nipFD4MuZane2OrgMUdAwwoeR0rTRF0G5BxvZ5qd4LSjBisILdk9Ewm1FQaEn\nkolw1jC8KFjwTvCu4XIacIqDyswWy3FkRbWDZl1xw4RRdETtTpc2h8zotnZM\nuYLcWUa6xfmV/bSyxpw4CwEd20jXt9VeH/WIQybf9VQtfvL3p4OpYRJixLpE\ntNybypDWBIb4c31OfQNmSsZmOf85S9AsjDl1E4zZZRDR/GoR1WHeAGoKVKD9\ngsw8o/YHCTFtyj4MMjOoIgw0fQnK1pZHQ6fX80a1DJuu0RRFVxb3zUjRLldj\nTW1F\r\n=gzY4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGfkyMp38C8LLuqewiK2Vd6mOhRumJSViNi5IHigu6VmAiAj8qA2rkQCf02yrorT6CIX+rZJqASYL/B+6hVLzwUbNw=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.05b1cf5.0_1580842388958_0.3499958534877279"},"_hasShrinkwrap":false},"0.0.0-canary.986cea9.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.986cea9.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.1","create-universal-package":"^4.1.0","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.986cea9.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^23.0.4","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.986cea9.0","prettier":"^1.18.2","jest":"^24.9.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.986cea9.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.986cea9.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.986cea9.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-m/wFCmHaHbTBOB2Hccy4Lid0uIrYb/+AEy7gPHiIFbCISCPNX/u/6fTUXeqYRTbC0FshP6NEupT5+n9mWIFgKw==","shasum":"7287ab02feeacd9fecd6101b9486f57236b3d4c4","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.986cea9.0.tgz","fileCount":14,"unpackedSize":25173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeOeQKCRA9TVsSAnZWagAAWBIP/jFlhlqBDvhAsHxGljFa\nZ5QXFrPLaPZQ+WyH37riJJ40cIGrWTgepF5/Mpq12IHJOEnXAAicAah3r1kB\npXlABaENOCQo4PBGaJoW6+h2VSj+PTJLYXTKo44y/dCF8UjGfROVwtwLuPqm\neCmjarMRL/MgoswK4VC4KdtAblDzVmNQxvmQqF5PNeQjyzEYMZ07SY+UO/Aa\nC5gde2eJEohd0iAyv1WOYVJLNKzi4pOurNSj26OOZ0QNsC9UZgZmhkQ1MEKz\nE85gAR5IKeT0Bx4Ctx1PVm7B6j1/pX85ebA+PTuN1pkp34QMXp6ciHej3bGA\nYy7AtIQ2m/SwyVr2HyDOa7xeIMOpmWz9k4UQ6rMK+Ed7K1UwV+DMM/kn7BrO\nGmZ5TVG3dytb594txhIV9fU/nQ0/Sk+LxfKGPE8BtN3rTsTcSm0W02wgcjQ0\nA7Ayo/a6hf0Hxrs5+ZavKL2S4VowxAew8qs2FCanbuJrKzfvDaHNk0Rja6GN\nhdhaQLthY1UC2m3MRrRkEPhwE+AU4ZFiDvN0a/EWRQQ88cymH1ueLfBL7yvz\nitSphYChSmDDRI0oXL+fDJGmhEp4EmNrgkGvaWI0Xv6+ZAQSTWrdRO0hf1v/\nXzdh0aKyFPpToNbg39JGeSqOT06qu2gSvU2S1pIdxteANwJuAI+XWlvWFiEv\nfSxK\r\n=n27r\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCQ6Ey+1YYVU0Xv/AlnL06vODjktuiSXGP9tQFdhvwnjQIgBFRvZV9a/Oyt8AyqDhEu0Q/FWgWhcT0eIKlspF1W8VA="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.986cea9.0_1580852233811_0.01975162719371437"},"_hasShrinkwrap":false},"0.0.0-canary.b8a6237.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.b8a6237.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.1","create-universal-package":"^4.1.0","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.b8a6237.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^23.0.4","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.b8a6237.0","prettier":"^1.18.2","jest":"^24.9.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.b8a6237.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.b8a6237.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.b8a6237.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-k3P1aPGcMywq9I0h1ZQ/TyKhsMpP65Fwf4dr9lWQSKsFHBzNzmlnrDfWjxUrmEKV6n0BO0JBK72YUgfp8IFquw==","shasum":"2c0e7cb33823d11383fc45ec56270ce6153b6c31","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.b8a6237.0.tgz","fileCount":14,"unpackedSize":25173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeOwjmCRA9TVsSAnZWagAA8DQQAINDq9fLEUVkR+zyqa6N\nQ0Wob5oNmENO4JZP8TKBabTMZKAH/V4YZ6ZD7UojBNRTyiqWeaNmt3bI4lfT\nSxWnDcj/r8UKw2ti0+ard+2wGCtnwqLJkfbzIyeTYMLBn3CqEO2YoTBB4kTR\nCN8wn7JdgWk1Dw37EINjZLRHr8mWj05HaNQxo2n791UdzaLWOoLOU0Rc2HqQ\nVfyiddxpFgzSffqRYIiT2f4c6gEniIOabnk6AXC8ysMibKmhSlpXptlajwQA\nlJIT5dV/1jkUtqMEaF9AAru8+fiBN5e0yx9UBnjtm8mqmkCJsJham8Li193x\nXYt9ILZh9992oPa2vuwyb1QhapZSuAAUn8aJJL6Hq9m4yVdjzCfLFD2BpAgY\nCNEw1QXnfjb2FGOrQjD754g7HiasasanbrkUkzteLTWFV5upKJFg9DUThUNo\n9D8dffXgM9D22ngl+cUQoZoGzYd/8Wb1BIDtHDJhpGqE1KgmkzMXCH+Zrp6s\nBMi16N38c8Hk/NuhbDVND7w/FRxfG+d6hB7gdNY1I/j3LnDMKfLk46z3G+u3\nsBI+AY5B90pRKQcyC1ECRkjte0OfqRz31Lhtmfqyuy2yy5IAU+mHoxkQbK7u\n9VNOnbfjp6+RrrGOfez0tyqPjl1wCH+nIQfx2o2BKZ7giGyYUhkiSrtVR8qW\nBOl7\r\n=RYbh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFPZW6Kv3GHc9Ytnfl99upEEiAnTcIGNcID5MQ0AmTCYAiEAw66MQ17PukhJLYGaonYPDXIhpLdfAv3qPN813tg0R18="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.b8a6237.0_1580927205362_0.015031255694459178"},"_hasShrinkwrap":false},"0.0.0-canary.2c705b4.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.2c705b4.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.1","create-universal-package":"^4.1.0","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.2c705b4.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^23.0.4","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.2c705b4.0","prettier":"^1.18.2","jest":"^24.9.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.2c705b4.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.2c705b4.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.2c705b4.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-tiOWPyJlmjRnIc0W0S4bq4W2wySLFHlBcrBdyJm861orhXd0acBj6Ssj9AbrKCYV4lEU3vOv1YW69/aw26scHw==","shasum":"5a7906e473ec022024e53e6d2cae037245a79a73","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.2c705b4.0.tgz","fileCount":14,"unpackedSize":25173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeOywmCRA9TVsSAnZWagAAGz0P/iSbpPTwLDG3Wg+RczKU\nJF/hu2b8I7B0xh2ll3EHq7SXFkKHHBFqMFZpWNj7MDcm93cPb/3PAQL7lb+Q\npe3G2Vzir/qH1kczVbMgvF4DzlbbcLj9yuCxuZu1WxKPGXyma7o7blY094pF\nggbJU/T9DJJGdn6AOb1fHc6rITg9exjWY5B0+TP2ux4XPwM1YGyt5/eyXX2d\nNsRUonck7A4vtkbUN4LieMFMYIrU1wTbETA5Q4ZUqWV3KK0780PMDxZBnjGu\nONHeeYnydT3Z1XiW53xB0tNyR/lrzKFNUG7LpKwX56rOO2jVUFQ5lRw70xwP\n1aO4e59CA+AkMfkaJG4Z33ju14lcAa0jtJZPBMvKVh6Ekz0/p77uWgxLVgaw\n5Ipoa4DeM1o6dJHa8vChyNrnsEdDbY3kSKcKxmQdNu+QnHcRAkhJchz6tkMl\nI74tMK6JDbeyeJvMbfu8J3fngEBfeQQAXYcB2Ef/BdNQlPMHwcsRfl/viU5E\nbs2CdMpK3STw2Ngq+F42qKNGPDfRCbgKi7wEkzY4ip0XmB0+eIqL1nEnfw3u\nfBIAIkR7/v0eym6E/OMpn+9i7mlrMGjDL9G8bmK9XEiOoAicchbbUz4xiOHk\n+c3r5gmrK5xw0v472zQled1NU6fFKcIxZqSv0cwRFLty8QD5IgEJgQvMXrGT\ngcBG\r\n=2GAK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDvpLpmlPgdyZ/nWhvwb4SiqQmimPMVgHPqbLnDYV04BQIhANdS91i176hZhMeu/mHrRauxuCFqpHi4PN6DUoAvMZWn"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.2c705b4.0_1580936229966_0.009736105696909636"},"_hasShrinkwrap":false},"0.0.0-canary.4b659af.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.4b659af.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.1","create-universal-package":"^4.1.0","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.4b659af.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^23.0.4","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.4b659af.0","prettier":"^1.18.2","jest":"^24.9.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.4b659af.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.4b659af.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.4b659af.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-7mUwU3gWCuoaDiujfhG7tOhESsMtjVWfHHkOM8HVLmZPIJoRQ7SIP/U4XidmHepAbUEGc32k1lk5+M3pQfnrzw==","shasum":"4975f52f3b6cd273cc8a83e10b95682538027014","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.4b659af.0.tgz","fileCount":14,"unpackedSize":25173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeOzBJCRA9TVsSAnZWagAAc5UP/24I02vHW8pspt5sLpdz\n3q5SXW9k4Itpw2u0FGbWwy6Mlxh+tRpMxHAplroMjOV9pxh25ncLUGMkJ7Hg\n3eFAUhJrEBtYloVIJ5HybtYvusn/5l/J+oBXFfBx040qOCAe11rK+2mCG6Co\n/dXktUZ6tOYLvbizK4TaLYPdZiwX3vxG3WquWO5WbpSJzR7usQod0gMDrocS\nmuyYT74pz/6vXos8p8wpTcGBv2MYvqt1NBJxiVGpmu071lwDpRLOu9ObaK8t\nPlG0WfEx+LGd0edg5+ZPWZs04GFVX8oi/aBzgwjfocrG39Fp1oDu7ypl0wLp\nZ2jbsd/tm0lw0k24M93PAWm9aVeGXzs34y66s6cGEKeFq8LD+5iUafah+oMA\n2F30Vsf5fOQfCSTg5TFp1pXZ1d65Dj76sbEqnXz1GqFG8CQ4pPT9j9BpuGqU\n8e8O1+oXZJ6jk4YAetqqtmP/65XDJ5Ju0m9z5QeGv7T/2XR8wuA85iMtvi7o\ncnaScUE0Yn7SOIz6m5W8adjYHR9am+SSMDny9mIPpjl8S8yGu2dg9Nj/9gzw\nT+8S50i6XtIMc55mPV62JLABLkoLrcSsCysD6Vq5Y5c1g4y1v58grQ3P1NKC\nhR4ZpQezM3FeYy9Ex9WDBUiWtTKZyeZF2IWV9oFZxvcdOrYeYgKwj2p4+3ur\nEV3B\r\n=qavN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCNyyYX2kTJfj295dtdjeR4vNWy/yZy3UhXwdEwKTECVQIhAL3QOVbo3mVWHsspwGZtKgzOxyAHIbod9RXyJRNb1U2J"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.4b659af.0_1580937289058_0.836949357372748"},"_hasShrinkwrap":false},"0.0.0-canary.96e8674.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.96e8674.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.1","create-universal-package":"^4.1.0","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.96e8674.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^23.0.4","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.96e8674.0","prettier":"^1.18.2","jest":"^24.9.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.96e8674.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.96e8674.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.96e8674.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-0B09Rui+148msB3ng//yClKh+B2a5r4l24CVic5RB2E3yVCVv6GP0Y4efP0cwM3Jd2SkVSAYmKjiImLDh6fE9g==","shasum":"d13f5c52ab3581263dabd50c4c5c4480938349ea","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.96e8674.0.tgz","fileCount":14,"unpackedSize":25173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeOzKLCRA9TVsSAnZWagAA1cYQAIDnSizh2Sf07RN+aesC\nZobHEKNdU/d0ni70DjvS57N8NEnvd8WWST4cTrJ0eRiHdr4Vvsua0zmnOsAd\nOTcCxCy/lphXXb0GaCjeNPomPW3pAG/nBNguN1AVqC4PIoR8C7qePOrV4HeT\nAaeL/Ap/lba/m8TBGhq5CCIkmJjV9hMXnWkH9u52a7H/LiRiGHnfLQO5K6UG\n6EAczSKZkQ9E1SDBK6a7s2Wl0w8ssHcNiLaXnRHU9831R3e3j+1LQrbtjA1q\npN0Xt2k8Va/C07oO+nxAKycOSQHA0VYy5CGfiGVO337On84zB1M7NnQbad7t\n3lY9CQAKtm8bjeeLBTqvAcQogyAzhYcCFh4PfqCOilufWjpWv9jxWWv36IQr\nBN+qZxP5rA2wOeyg0gjqR2zYbC44eBN1RrLqoIvXCwbf9KZ2sJVtBmMMZHRJ\nfO6WphIloDKYX35NcLQVn/ZKKENgtKNWqUA7N31QTOGgbWtyeicbQwqlIDiP\nlZAZHQcCU6io1YADJgis4MuQf2F8nPvcG17SnMvgWvl4zjLCfIchn7T/4Cub\nfp+yQz0x3q1kEY6yN+6ieCrDY8uH2N5kxfdE0pSHBoh4e0MHOcBt8YMEoS8w\nsifs3eFGg3jbqcIye+6Wyplp+07tdPvy1c5Wyj+fABWhyt5Wdj0xlEphJ1my\nE9pa\r\n=qEah\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBVN3/u1B38bvR93OyU+1P4Y8OO6LNH6fe/LzqFvoYjWAiEA99Jtwx+i9kQVzxVftsol1dPKY88+OT0l2/0kyuQz6K4="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.96e8674.0_1580937866795_0.12797279153184804"},"_hasShrinkwrap":false},"0.0.0-canary.96e8674.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.96e8674.1","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.1","create-universal-package":"^4.1.0","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.96e8674.1","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^23.0.4","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.96e8674.1","prettier":"^1.18.2","jest":"^24.9.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.96e8674.1"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.96e8674.1.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.96e8674.1","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-EuoErvqO/vnrYJ1+BS5N4di7gGtFR9NR+zm9qK2/ykQYc6Rv7HTBu58PKFVKvc5bxVvi1fIM4TASOE8cQzx/yA==","shasum":"53121164f58bb18a98f90a394d56e055f6713caf","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.96e8674.1.tgz","fileCount":14,"unpackedSize":25173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeOzTrCRA9TVsSAnZWagAA8pkP+QHVTFVzo2SUEJrayxjw\nXC+10XHJnJVc9Ev8V+sIXmCv8+9McqRDrKzypSqvlWqoSnK1bLyBmM0XWF5C\nGYmGNcFmwIQXgR7rLT2s98dBBBxqwO/2juXUPFsNyKVirvQGyI5gfZN+IEyp\n5fZo3TN+ytewanHMmE8qjHkCpASByoGDWbMpiEyxtAzu7L980QAfPgmWwGRf\nVlH21EIuZzn565RwnUiKu4oquogC+HlKyuP6gof2Wfdvdgva8a0FNpyfyezP\nKwkrO/W5GlLmJpArUq+CyJg7JFtuQgohLBHPBxUEVS9jlzzijt1ERGj3/70k\neUPDyfVZna2l8aL0A/PAQUM4P6yRqRpIZ+kZ1JdadRZoMun7OHjKP7CSNLNU\nv7crC2WZdHpVk5oINXnieM8CdNFLBmFkQjA4Tehf9B5ekf2nT5P8QPLGBytq\njhY9Eszj58OSOKPzWdUzWvBJMzt+P1U9POao4Ezb/P3k+vIrlsRobMoZjaHf\n86ocns4ri1ln2wkI1cv/WKORLvhZgpuVfuBRfnilVITTCbNGRZBKEJTZ0EXL\nIlnSvX/JX3X8/HJr1zb9Ze67evwhtEC7rSGMZ3norROY8MYQ9OMDop9S7Hyf\niiT88K1AygRKqudQZna00eNzP5nnyvqOrXbK9JIJfqb+IuBt7WMTc3XUI4B7\nrse+\r\n=iDVa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD0vALwy4Y6kxdFrA7KHEDZ2EKl60fa3csyfUjpFBZDKQIhALg6r0P66Zrw+hivkklw0LCpgUmYvZSoo6NPNGz900EW"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.96e8674.1_1580938474657_0.30844383944539766"},"_hasShrinkwrap":false},"0.0.0-canary.96e8674.2":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.96e8674.2","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.1","create-universal-package":"^4.1.0","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.96e8674.2","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^23.0.4","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.96e8674.2","prettier":"^1.18.2","jest":"^24.9.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.96e8674.2"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.96e8674.2.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.96e8674.2","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-/x0e7NykgnT2q/S7TxmoWbKN6WzpiRf0EIID4IKEjF/FTcm4ewOrgONpokfvF3QqosWdVEiwKWhWBNX4MJf2Qg==","shasum":"ce3d19da4493525597f0683aab07467de4eee9a5","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.96e8674.2.tgz","fileCount":14,"unpackedSize":25173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeOzeaCRA9TVsSAnZWagAAn1kP/150JJ0t11fGrxVBEBFJ\npEwcnjHGjSN8QGaRx7j/DILSYX46/VXRh879fKUgX+peN8UXiafEizDD/fgC\nm2nVbI2iGh6fiiUuqCA+zqw7xMknl7Knzzm3Bz+8Ru1N2yp3GpjxCEUUgZ4C\ngH5Ocs36X9Al+ZMWxE275HhmGadC4Dbdehr05QlP6UYtlkjUnJd3Mn72NnKb\n3Rz5EpHqqPckiRx1y3GSqb03I6Ed3PlEehmtUU8Lik2BPaUFXr4z8MWoncPD\nwKcKQa1Dkyk7GfYyBDY+suao5DY1IYIGuBfVGwdp9Ptfdz8fQpzmXxHCZBE1\n0ggQ7AOopnkfIQBI+MUiJsHFCovnt0Q03O1J2HmhDb+qgwMpY+by5CMlxr5Z\nf3F4cxmfPFaGKeqjKhu4R+Ru1/KKOpCkWdZOjJpAUGrqHFgp5qxOMvDUGU2d\nmsBGIv3fMaGhP+fcABRA75PrCb9D0daSIQBLc1f85tiO9CcbrOXeIZslbAYh\ni2Is1KzgJAvNgAfrTomNE0Y1HHBAGipVcXNt3ZaYaO/5cykqUbuybalpfbfr\nB6H4HsMK9CVhcr4QYUg2rxVhBX9O1HBdz0jnDo0JV4jpXLL1q+IMwLVK1esV\nuMD42vbJEsdZ4E8AXwmZroeaWy/XFnL35b388gAvN6wapMQivUSfYsTfY1zZ\nMZxN\r\n=9S6U\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD8YWHP1Bst9YHQQXnZlp5ubLE/wtv72uOqpkQv/VCzswIgU33YThKeB+Q9UtgGUR83G0Lkrn1jpVl9RwQM+fWWzWE="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.96e8674.2_1580939162079_0.9297837077688373"},"_hasShrinkwrap":false},"0.0.0-canary.b640602.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.b640602.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.1","create-universal-package":"^4.1.0","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.b640602.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^23.0.4","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.b640602.0","prettier":"^1.18.2","jest":"^24.9.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.b640602.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.b640602.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.b640602.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-6D/0BcAT33EfeQ0H/bx3Rzrh6I3q5/4vysXOYHVfR4524SD0XUDc1UgQWU0+uVGA9VGPBFozI0TJZSGMGuQ2Tw==","shasum":"1089d5bc5bbd2ec34d62595c4e96f0de1259d376","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.b640602.0.tgz","fileCount":14,"unpackedSize":25173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeO01fCRA9TVsSAnZWagAACu8P/A6Ce41IcnafH3syE7M3\nRvzyW1ZT9AnZyfrT+dckXA0VgxFXsQK6JVwDmcuKoCisF4nVB7+0J8YDgUxc\nJ0B9PTpzFcmQQd+rrNxK3oPyMgFAUL30oIVP+bikkEQB6gZHWIFUD4F41peC\nTg3xcl4Nb9SVBus7o/Jrosaff/dUVh2UyFkv+g3mP6vbbNvWBJhpSA6P2RY0\nymMPl28PnVRLn1ZrlgqV36Puvdqd/1aRuB5ycvDxf70308tGCs2fJhPkEQf9\n5RoHucUE5B/W03jNC456JVs41hJxWe5WpBQBRnxd/Qu9TWLEa8b4LlLQalyE\n7CtmypgjPpgFBTcbLw0zMzkK+tHQALEyemplRcWR2CT4rkyzyQe8J+hSHEmJ\nTtos+SO5nZg/0/OBx0f7ha8Ar2g7OUQB0KWWqlkWdMZncfiepFGtEN8yojYE\nxBi0p+ClE2Kk9xwnyzITiOTrJxbuXgn9w/L0R1ZTso3GK9j1R/P8cxr/LXJH\nGOov1IDEuXyM1Tcd9wAJzYQSJiLo04xVjnoRIRyR6F83Zuc+Itp8RYqF0ay7\nAC6G5JdA3/POdNapkDlXBjWlPEUSBYE2/8AlaSxWr4HFxeKw4oRmLAljhcXh\nTP2vegSsJ3CHmEtR4o6HR9i+epyFvxzmqLTvXQIgmiHftburABkfmIfZ+Gd2\nY8ip\r\n=6QMa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB7+xxCKRk9d7Nsh6/HrQRSmqZo2IqihoM7toFV1mt+6AiEAvCX5POFKfdMeXr/LTpx/y7+4LoqwRYq4424dPhHvnBw="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.b640602.0_1580944734540_0.6662603486533516"},"_hasShrinkwrap":false},"0.0.0-canary.b640602.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.b640602.1","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.1","create-universal-package":"^4.1.0","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.b640602.1","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^23.0.4","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.b640602.1","prettier":"^1.18.2","jest":"^24.9.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.b640602.1"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.b640602.1.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.b640602.1","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-R4997VFLku9pdLN05+7ZzsQcta2vWxYZNShNZg3+p+8t+AdfwZgX5Y0lw+dP8Lp28Vtx8qbmbQVuY1ckOvL5Fg==","shasum":"b9685dbcc2cb415646dd7a4c7ba614c88bf8e962","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.b640602.1.tgz","fileCount":14,"unpackedSize":25173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeO1CCCRA9TVsSAnZWagAAaAoP/0kPbA/oLf9fTLMAujDM\nOoRzuFgIxnnMZut3euZdp8xpWxBtrtzBK+5R94mZco2cqN+9ydHkbzBMogBC\nJajYI6uy1G71u4BAmgNhTCCMvRpF5XAd3K7hZ6mrn4r7840OqF/ZBMjxMwHG\nDRXcJK+PNTLlkUtJNojF59x2hjNEO1pGdW2CcvRC0futkHcgAR+oRDGfjyKr\nj7C03MQ36IkmI+wh7fLk8Imc4fKRqutiWiZ9aWmX9/9iyQpaL1y9kMDfMwSm\nsLjj7ResL1VUMP1OsBV6jFSNgm0Iwg+XC3bt54pxzM+FuiUdgO4Bkoo9EDmA\nHF6fYZ59n440obCH2RnxkQ0vhG1PAaCyvHryjkBkuM74BjQZxkgOvuYI5H00\n88n0PMA033PsJdTR8YwcZzdwh6w6IO92WdL7t7Oc+nEwav1/IK87jeGIiaSB\nAJB4kGMP7H3cbbiVHDGSixDp/Y8aWWURorcAT6c6wu8Vgm2k5gZu1Lh9nRNA\nwV2AcZ3THP+Ndr2rSRM9Eh4P/+UF/RVnMBjIPf5Cs9Hha2aFzruYDHvYhQyP\nrwa3Z1WPAM2GpXr8/FxXzFJcomqyc/NOkBs65NTYpIGDdgat+6m9gbpY8VIX\nR1uEKqRm6ku+2c22qmjA3Bo/1SZqAwqqW+rQSXXRGFSVMP8OJQbR9P1rwtAl\nG0za\r\n=/ibZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDy6hEDDZ+WbQ5o4grGZKpVX9m+LB5F3O+ehy9psnf9aAiEAwpDyhQbPwi1uks6y7jBu+TblNEs0t3vATgFjT6F4ftI="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.b640602.1_1580945537689_0.726564960773902"},"_hasShrinkwrap":false},"0.0.0-canary.2ef1293.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.2ef1293.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.1","create-universal-package":"^4.1.0","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.2ef1293.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^23.0.4","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.2ef1293.0","prettier":"^1.18.2","jest":"^24.9.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.2ef1293.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.2ef1293.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.2ef1293.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-uI9U2rV8HxioEyMh/qoOxOGzHxpWwCxtl2C43xU1ASCCwCdUcX9gkL/9VPmCUkQC1cO7elULsF/xhCR0GOX2jg==","shasum":"5a8384f6ce41af7150c50f906741045aa8fa6eea","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.2ef1293.0.tgz","fileCount":14,"unpackedSize":25173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeO1UkCRA9TVsSAnZWagAAxxcP/3ZidDeke6RqG34YuRKW\nRfU1AU2cguY5Fca5sTaAhhGTHwMSIeg8gEHNgm1HAdOSqk4fSebd3QklOFAV\ncxT6gPwM9mjPmvEc7wn309XUn7MmO+3qsyzmXawW+XCHMN6PaxuMoIfNT1lD\nbhbUdBxPCYcnfyAjA29xjRDTAERYamHk4xcjLPDJiHPghmr0N0cHeMaM55T7\nuZJAxCgKXKt14xoviSB7XFlIeh50H58DgKT06Ru4FyNwRZQsuOZq44w1Go2h\n75Mlf+N48noROpNNnegNeWtDV3pNAoDY21EDlLxt0WSzE8XE6c6cNb/yc+ny\nsqpMD71Q7WwtBkSUAawpubKmESdefXeFGEJUDknVRwUh3vFIZfyu0ZG/iHjI\nwGzhoP0xl6lt10Q2MUELGOpCD/qMhaTBhVgX8V9mpoREgyX+uM+8nQnE+vZB\nkn7lk4Qnaa0epGi7JO3S76YbqCOivK+QJ4goXJoXncJ7UmB3j/yoTAK/509M\nfRpx8oncVYYztwHm8MH4YKP1wb00wwS60T2nx0oveK2VJw7pOL8Bhq+m5vRz\nHZdA9y95Q+gdV6HoiFq4E0YZlTEZxIn2yXfo/a0MI53g347B8SRksWDNGJuX\n9jMtA69bD6ZzIfQBB1zB4+KCM/ZNew7GWpnRvicMmk5P/Yla2cfHeuDYXnJQ\ngvyc\r\n=sbbG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCg+e080HcdEzf6e4vcmeb3Guj96pMn1AnPi17dGlQUqQIhAICk7cq/MXNATxskqCQQTdRzQ9HAbkxf3Wi2i54JiMst"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.2ef1293.0_1580946723111_0.16188754926405835"},"_hasShrinkwrap":false},"0.0.0-canary.2ef1293.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.2ef1293.1","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.1","create-universal-package":"^4.1.0","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.2ef1293.1","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^23.0.4","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.2ef1293.1","prettier":"^1.18.2","jest":"^24.9.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.2ef1293.1"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.2ef1293.1.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.2ef1293.1","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-tKZboVNFIw8dp31ItdFnb6M1gE9ubdannIXrcWaUq68RaVnC7imA6mZaku5CqJlJE22Q36eg25VMvbArU5o78g==","shasum":"cc86e96a59c79934b41a70d5e314db74206aa03d","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.2ef1293.1.tgz","fileCount":14,"unpackedSize":25173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeO2g1CRA9TVsSAnZWagAAuTEP/2wFpRsDhRDEG9idyWgR\nRRbGVFTk/LmapY4jnSYd2jJaRLH3LXhnV0CbGy933yNKoI41UmIdCbnXUyj0\nMPYge3ZWiUwFytyCqYZN+B4xANrZXA2GXdK4cD/wTlAIRuKF/7sQn9B02w4r\n70uQaCjyYBU9CPONdyKrnYe9OTedwd/gVfM1JXNkjNDaW6DvR7apyvDYRUh9\njCXsLs57IZhytp75b6O08NWWozR00x+JWh/JamE3ZFdN2UrjF05yQsxt9pNJ\n4wdHpx3KMmRT9rZapVB2caDR/5lnF4V1/HBxbew9c0/bDa7uo1MaDUlCHoe0\niJPQrLqQwp9hTvjJN6DRzqOirX/ucX+tV3bowm2tdn1whVXWmeDm0PMVSQcc\nhU1xuO4/iwU/ibptpSdC7Fwod0axv6OsunRaSI8BGNMRb7AkbEEPWyhDWs7X\ndkqtzKHLD0WO0tn8joUuteAD/sAnS2pRjKlCdUTjMcFM/kIfPnIIXA9dUq62\n2kRdlFCt6BIMlVCVSUCUCzDXIvbOcJiinOC7ptq3YTZ7Pypr7oiRHtR5JS/X\nRpT7ubhlhsg4VP2ol9Aqc+QbWGbEXL8YxgZsskeW6naaSfqCuqfB2mdunQsX\nSCh3QQdbkIr22cTrJ+E7GSWgxj2fVJ7HqxrCGrQiYXwcvef8Ngn0hQMic/Rf\ntfqf\r\n=jfzA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGlu2Hh7dmP68qhX9+oeO15txjFpUqh5GD2QvU18zFX5AiBPanlpK0FmU5QCpGH4V+E/bfs0nh7FhMWytC7nxUmkYQ=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.2ef1293.1_1580951605383_0.1480198530443264"},"_hasShrinkwrap":false},"0.0.0-canary.2467727.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.2467727.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.1","create-universal-package":"^4.1.0","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.2467727.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^23.0.4","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.2467727.0","prettier":"^1.18.2","jest":"^24.9.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.2467727.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.2467727.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.2467727.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-qktUwKewbujlbt5bBkCl2Boeq9EPOP8QXrXpJ+lWPYlqX3GKx61IOh+HAxrwJhyfnSXicAJSjz6BKqrtOYrJOA==","shasum":"24f2308ed7824c1ea9c1ae33a09c5e52935d9036","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.2467727.0.tgz","fileCount":14,"unpackedSize":25173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJePGT3CRA9TVsSAnZWagAAragP/RNRlRItVLoYHj1sQgOT\nCVAARRvIMhxTTKXjsOsPxXfeA4VZOAaUZSDVVv4PkJVFDnqlvd8rz5Z+SlEn\nbIsJqYyDrOKI8AqC23YpNi9PebXXrN7HqPRjZ37NJMUqVWelPnLHTj08l0ff\nqtaE/5oGS3mFJtMVxs4tyNWSQdeTn7y4gQvK0WJMhaetaQQ6ifNXy/52IQbh\n6VIm00FW5g6tFQhhNvzrULpKD9sdpEUgkbLTx5+BHl/mKH1xyMMWAjM20icD\n90u2g+YI72SEH4LxkGNksPdBmKEvlnCGQOJuNhwMz/D3ZBoY3r77Qxe+87G6\nOm4tcOwiZgGac9PfKXuFm9NneVj8kdi6NXSImr0o3eQQJwEsT7tsGldt7MYD\nssgzm2jAxoo+kNMsuImhVtufAh0jOWXRHYkJKTolpVaZPvjvNzuQGlRq9c5A\nAHZuMMO0WWW5WJU7Q7Od/PEdPClHrcvY579mtnDj2o6dHAb3QdipwmqYgISG\n4IRpNqE8NXtv12FOxixh8vijq4oxK7xdUkpuuFHZV3s+40SYxntM227FKUKu\nZ6cnRElxpMXFu3soBh3v6bSyhCnTvhwyxM7kmjkIMf3p9WjZFuoR6imOohX3\noBpg+n1N1zfMPZfAm5wiChW0Pnt6jWojh/bFRXEct6hokbkWIEX8gw++gDvj\nQx32\r\n=qLwK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFg9zC386vweLllNV/8WwMMTFTp58J1sHmspMrYt9VFTAiEAiUSPsl08CHwOw48vejN3Cj7hRzPIdVEVsSJrL9TO5Hc="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.2467727.0_1581016310847_0.8191852364868664"},"_hasShrinkwrap":false},"0.0.0-canary.ccad833.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.ccad833.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.1","create-universal-package":"^4.1.0","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.ccad833.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^23.0.4","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.ccad833.0","prettier":"^1.18.2","jest":"^24.9.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.ccad833.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.ccad833.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.ccad833.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-l1DASolRyiRwcFYBWsGgE2l+EnfVa5qwXafwYuTTfdsllcr+txInN5wXf+tTYjTJpzFJU4qLixXuMaWwqtko4A==","shasum":"de73d82fc9ec8cd77aefada648b0707b7c5595d9","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.ccad833.0.tgz","fileCount":14,"unpackedSize":25173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJePG30CRA9TVsSAnZWagAA2hAP/jy2M9L67cHgOvJjxRkj\nF4qOEPjcKD1WUpV2eUqfnzlpRRiazT+p6pwuGsB8yNHvtuN3TQTXIEfXOFE0\n5optT5iovI++ElAi9SU1qC80XDoWJ2bjffq2MUB0fGxLMZiDCF5XJwMuwMoJ\n2v6+QsEWrbDoYYDhQf2/MDzkuPGg6X1+Heh6/ukSNlhmR5gbD2I3o8ok0K7Z\nVHEqReSIxlbvU5DwQmqJ8/DX4732IfV2+eRPjuAjSeUwrOsuxRRtrea02d45\nlOj/W4HE9jAzvwyOXCqLYxh+GMh8usX9zO98XLbwbEuUyLG2RfV+5rvP6A7x\nQZpXvITAuISnaNPW4l2hEy5hZSYbXKiI3ku0QWAgpGe8LtP4gDfkwpq8o6u8\n9JVJ6q6P9mA0JLqCnGQWaNJ2LZlwpb6OUgsocZPeWvIXaMoi515rRQqDrKA7\njJZVDCOaJkJT71QBmnsuecL+5a6rvdtV1z+jm6yFY7QdWSJglzzUk8I7WPGz\nHxCTEhQmm3XzYv32QQjoYJGQAQ6AI8t2KAq5Bw7NrHhgAb6d1Og7Ozpdqshb\n2uIiiWex/gPn8ZnTrBczMNgFsbRVzAW2x/4E+l2P7021a9LqqF5AYu57n1q+\nJ5C9qbT8dkyKV/7rtm/yYR9aVI98OIMqC6c2NoIdrtZeLqfgsN1aeS4eV0L1\nQxoq\r\n=i9nv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID7hyEMMU6ql9BDvJJhMLlFCkpeMo/Kixk8wgm4Nfpt5AiEAjcnB/BweJ61P1vnsj4wfrs5/bhVHAHX3gxa9+zTKrr8="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.ccad833.0_1581018611707_0.7083257911259078"},"_hasShrinkwrap":false},"0.0.0-canary.e70cabc.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.e70cabc.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.1","create-universal-package":"^4.1.0","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.e70cabc.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^23.0.4","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.e70cabc.0","prettier":"^1.18.2","jest":"^24.9.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.e70cabc.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.e70cabc.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.e70cabc.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-phOBvkLI2lX3LKwCN+Z31yrujpsMVI5nUDKSLZAcKS2rVgs1HTLqH8+a9q4nt9pzKm/Lpq+UuYtPc9FicldHrw==","shasum":"ff89e0e21d8f0d036c45572e3874f738e9962c01","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.e70cabc.0.tgz","fileCount":14,"unpackedSize":25173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJePeWmCRA9TVsSAnZWagAAYkgP/jgl4bf93p6wpfTzdoqG\neMWRGqf0jQ0w+6JN/bcGbsQNBjQ5dIOU/TlAQr70SLDZO1byK+3K1o3GJxX0\nYlzNzso/ykMOVR8RkbHCqdPSh4fYTjZ6zZzzRTAVSX8s8eMU84WD0YwDBvCe\nUZ7dFo93QTVbiOUIqZDSjqMA0waWDEoOuRCXutpBXQeW0mMLaZLJhMKpD1ZG\nkL+NUJU4gHp4TDYpVmUTLlvyPN+6rTSKkhpRPXwP4kBitNEY3oaKLjiKWiru\n93KxXVhEa/B44Xi7SgaZNkQftati/mUh88iKFBnY/3YatjMSL2r3ymb6lnkW\nYPm8sWCY08yVDDdEIZ19z4fZmXFRzrfAv7Ckd9UOgkhL9bsQYWweZuEn4VHF\nGVoMMt/IgTTy6UsNPtRdNd8xI+AUasWVJ2NRJG47Wt1YzyPoijoZIb0bs4Bp\nY6GIcwsIbCTDPA7m74376iJ/7W0feEUPsw2tXF9CWjhmhIf4zH8Tjjwk9L8n\nfXdoVrywe/Ce92vCZ9uqHMinIJkVkINBmFVRxvIh5VtFNcbgRmVfTSMeUnXX\nT1do5nu8TcndIXbmsu55ZUhaS5UIcPMufihaarPaog9jLQF755x39dhQQdEA\nuC6xZ2j9QXyqEZeedwHkqaFqeOIBnHUFLYqYMGTeYfvUcxIPw6LDORFFc+3x\n2Iyk\r\n=YqVd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDFBY7cO95sEq8C1zV3mX2U0cdJfyyrHHOipzp1T4u8wAiAQR7WIUfDSUGWjjYcgwHGOJ8csWGihqVSitYjLz/cg7w=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.e70cabc.0_1581114789937_0.08552671526337474"},"_hasShrinkwrap":false},"0.0.0-canary.ed74fa2.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.ed74fa2.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.1","create-universal-package":"^4.1.0","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.ed74fa2.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^23.0.4","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.ed74fa2.0","prettier":"^1.18.2","jest":"^24.9.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.ed74fa2.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.ed74fa2.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.ed74fa2.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-YfbeIFEOgPyguC6r5/Xxb+ANwYQ32xCsMhe+Sa2bvv7jnwlFEaVyvgLQFnd4+ZYAAmMUjuSN3mu+X1NX3XJpog==","shasum":"95c971c539d5411f0f58d3b4b539437a6fd0f508","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.ed74fa2.0.tgz","fileCount":14,"unpackedSize":25173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJePfv9CRA9TVsSAnZWagAAdKsQAJtVsgQir84bxg82xu9c\ndfTCteg6+4YvmS7jAkY5rbcmIyJBlkcYIvfC1esm8mL3mPRGQom7nXEfTk0T\nH1/DlvlG4Rr1aOdStaMNDPK0zen7fBw2hnlnglP0pqXxaS+WYgDSpZW4yVz1\n3+Y9qVeBFFyc6B0h+jmT0Q29G4f2dZNbEKBwgCnsV85V/mGV9QN/fsAKabbB\nwuoWRnuu0Z20s+31noTMqc1prIWQgbsdKEK4fR/wCfqQ866ycN0yh6C8WJ78\nFQoy0d+6mLGa9TJxsa6nxEVsAV3DacFwb8I3spwWdqiErQLKXZmdMHYrZx8C\npfJJqI5kCx9SREZyvvskyYFETtpR4x5hBHm9TQaLUUIr/KD1sveY4P4mCm3+\nd6pB7bvxL/8TwQzPN1PSvtaBWzVLaFJhLJxtsYezo++86p6Q20bhUM7QE+3u\n5EAlbwY4ycZ3OImsT/R7/qqeiFlO5x4RggPq0/P5GJ0YKgehQIYHFGmOEsFj\niS+Buk25meenff+/yccPjuBN955v5HvhPkXkE6PzWRuIz6qO0p/qJ5SOFtrm\nRQ+nsEK4IfGeHv290pgjLbk6NyEqvPhgwGMgCKhbLsOubw93Zm1NxZXpD8Hv\ntoTyXyZnxYhTa9tCIBGnM1TPUVNuP6CPjggy6hVC//9hpJu7Zfod8Yro8zjb\nD9QH\r\n=8MWy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF1jg+YAwOqtYzw1IHdVLr/HL5j2417kEauBs1Ifm3TkAiEAg2gAavBkZEvPV9T1Ojfj5PcMXCV4atyX8ltYe4WmSEU="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.ed74fa2.0_1581120508900_0.12362335165355964"},"_hasShrinkwrap":false},"0.0.0-canary.b127562.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.b127562.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"0.0.0-canary.b127562.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.b127562.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.b127562.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.b127562.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.b127562.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-4DF0JWOJXg3rvkztz7OUSZG+l8eZOCDm/QMXhZuIEUibMqAbFnIOdZ4MNl9pggBdg8HjLJg+vaEjwWQksJxBXQ==","shasum":"e0393bc3d729c65f88f38f1dac3ce6993b939aec","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.b127562.0.tgz","fileCount":14,"unpackedSize":25172,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeQgC4CRA9TVsSAnZWagAAL40P/1syNOjt6f9c1h3pdxRm\nWMfCbG+7yDZuwpJZzUDaKArjZwFZqNv7du2kfavZrgi8Gb6VWR25V9x14iEU\nhhTkqayz0LHl0Hm50E1bWMnYgT0gdx3ITec4He21/UpHiGdCHBVZ3FjrUH52\n0tnA6H8G1PR2SS2nrJ5wi/yn+IKRQhouchJxP4y69nsNVg8LFyofA5Yxay5p\nOk7v900PjFD3rr0V/WE3W8uLmb+d+vO9j7xGWmj+FJjKfJcGzF6fHE7mVwyj\ngYJl6FPtNNYH2/21KgnsS5r0mdSF3+aAIae2oDeOFVR6Vwtuly66AyVEaS3t\nsOhgIsfkxpAr4ACtVXE51NsmjOpMZHuBlVf6td6hWtf/vpr/Ss/sTl+QiQBw\nEGP6YaFIQ50SKRBMm09ri/pop8DH2YChohdcybLjWpC0xiPL0/16tOEpq0EU\nh4uMJXCAfR6sWv8CMADjqTVv+AKf04XXhA8Ns2/Eh09RHWrGHc3MibZxSzoH\nosrO8KxuWk70+coCvTN1m/J+ZdbrwoaYn7Eh9WjZQ7vSjGWjW/7x1iNiElqt\nQ9HzNousBRPPkkROMInwh6Ej0njYp33AyTstlM7xkoC/C/KwwtselSxZqLa8\nEikbPVXoPN9Tf+x15q9Vb4gt0GIUDwTWFtNmO4daVL/xpi+ko8MJxooteiuu\n858z\r\n=Dc+6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC7Uf/NdJhhIsMEDyWbqrzyz+xxJQGgh1/iVRy7ecUCyAiB/kWMnvpstWRKvDRhMv0ER3T45JpjQa/2MPPdhOlpZoA=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.b127562.0_1581383864015_0.5320470907733645"},"_hasShrinkwrap":false},"0.0.0-canary.fee0408.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.fee0408.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"0.0.0-canary.fee0408.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.fee0408.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.fee0408.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.fee0408.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.fee0408.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-VK5uArpN8GuYN3I0o8A5OYOD/M3iUCU2N8UqYVfQoX12s8uKYRIenJb5L1CFaTwMGDmIgT2x4Xd9V4vzSuk6Ig==","shasum":"07ad7e0adffe35361d849e97be5fae323f8b4c2c","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.fee0408.0.tgz","fileCount":14,"unpackedSize":25172,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeQxMFCRA9TVsSAnZWagAAuwMP/RSkzXFSGie/WWrZQ96w\nSL7dwSxMAbel6EAcjUZXpuXeTySAnuzjGiT8kOfR1GRZu6T8Las+3iWB5yIz\n+ETuQqMpZXE/pGXW5QNDHqm0CFVu0buVT8lAov7M1eCGpuIsr+2NIEPQNE/A\nXSSYEjKydeiKpj4vRE9pIiG8J2CX3KBOBxjkbvyrb5p3ELpWfPdcis0RQr/6\nT/qkXRM5O7ozL9AZTBtwUzNgDKgHSXIqzArv80im74glJpIuEYu+Q1ddC9aa\n4cCMYgLUVwImdTiDmrifNqDtJViOvGRM6IxOkMj13wWGX14/vmHc7N0rT1D+\nE6ZpdOBIAZNZyqRXQUn91rvoESxdcn6it5lz6jJlQUXgheBPnYKkQ07BZuzR\noFiGUiT3reEXhP3AybThElEB6/ja9L4Mej5Xk3u2pJypeY6jGA1QzDnwXpxc\nlwOAUiFE1Xijg9ygXIoz18Hb3Zo4j5SZFHuS5knKEhoOZcnIGiHmW2WXrheF\nMW4rHlkxVt6FwHk5ISwxL8vq/l+DVEAoJHYuk3QRpkGI4GswU6Pz93/dFLxp\n5QiacvPd3UH0nUrVRhQWip6YmK3cJ2MbycAQqyDG2Eo77pO0USvg0SawGJTX\nD+LRSAcsnh333J8Gu9qs3owUwQp3KVf9SWcGNgOE1lybpomygrUTcc/siVR2\ni4BC\r\n=ul6k\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB5z/VBFdxgBEdQ92ihlKtGFQP0BBGpDaL9D+nH6RFxeAiBIhafixJIEiCbZqd7cRVZjWt/FtYh7GIOE3hmoMmkm0g=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.fee0408.0_1581454084803_0.04058650477514569"},"_hasShrinkwrap":false},"0.0.0-canary.9dededf.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.9dededf.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"0.0.0-canary.9dededf.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.9dededf.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.9dededf.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.9dededf.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.9dededf.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-PwAgT/PTWO6fJgrYtglXrbDEHbC5dWXzUoIY4kIKez2gaNDJamzWC0ruyaZhl5QtnYT2FuZhskpvA6vEDhVAYA==","shasum":"476917aa0eb80a6a88f8b9ebc4b2e25c159abad0","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.9dededf.0.tgz","fileCount":14,"unpackedSize":25172,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeQyB8CRA9TVsSAnZWagAApSsP/3mtKsvOVyczL1IgAKZy\n0EYoHbwxyPoL+GWYNB8cKvTtWmcsQ55jYxarTfuJc13oKJ7Q04CzOO3MJSht\nBz29uzI4o9XY39Bk6CH/ZZy0G03ijtgAB1T/ZWYzFdyoOUz3T3STFc6ysK4N\nUa37nr6RSSgbzVKLtjEEHSJRB1USFSzHmLjDDySXlYXD9vVwsax6JmY7czrV\nSiHTywENXu6P7YYUAsO2a6+mJA+kQ8Pa9v/73T1GQ1zJdCNEEpgi3hb8rech\nccGI4D9vUEFQu8bM/B8z1u5/Tzjz/LSGdyoRIycwY5SMuCjsmrydd5rVFp7q\nBJSuDc02wHzm/K4lM0ZaENWmWZOqMT8vmEg9ujNt7JIfYlxre3JBT6AjktkI\niq0HxOfCG2OOtSzLN/2iyQbQ6uPUCvO+0Yby/VAnF0499BnHQnmCcOK8d5aQ\nO2PUPBacMY2G5Sy+QFcfwc0YmwOQ67mMJpXEY6Bv6ES0QRzUAW+tqicD8QGO\nBYXb3Kuarl1Q1J7S5CPYHbEVRNekhDJhlJpPUIk9GtFlI/eEOHXWFytbbAZ6\n5OklY7l0pTnW2UfzS07+5ZJtVmrMh9qVz0CK4xHuyzpyTkHD35BCKPmSyn0Z\ndz3sNDAAre3tGdjZYYqSPdUa9n98kydUB/7N7kMOT9DdUsdQ0R/dOggePDy7\nC4XQ\r\n=Ubk8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDhl5hHkndIkv2FYsrgRQO4UIf/xYnyFfh2gROCxTnkQAiB28tLE7Jt2TcpdN7eqOTgfJBwIi/XxnqcFjQcFX3NgQA=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.9dededf.0_1581457531983_0.5156226605126968"},"_hasShrinkwrap":false},"0.0.0-canary.9dededf.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.9dededf.1","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"0.0.0-canary.9dededf.1","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.9dededf.1","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.9dededf.1"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.9dededf.1.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.9dededf.1","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-5NzqakzfqY5od8jFMGrNNXBmeDIqSesNyK3FDzbliJGu2ZiZ1koSMdxnDaaLby67ElzwVl2/W04+YOdkjizG+g==","shasum":"000ab046275ca6854e042c53716a3f15ccd50fe5","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.9dededf.1.tgz","fileCount":14,"unpackedSize":25172,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeQyGACRA9TVsSAnZWagAAxEsP/0+MUJEJKtdG39MQL0Au\n+pPKcnASPoPbcY1Gr7Ke6CZal6A2CnJyvNxpc3Rfo7M7MpyrjNSncGm57T0A\nC3Zr3NiEvnkGj3mDZnRAiXmMYur243RUQlz0MMKGxiVs+ZH8ugPWK/hhUPQS\nRiyxTxkcPdUqznKbzQJoPQatEsnkbVqxFPtRSlp03zwAQwZd905adKK30AvP\nbCFdXXd7xBWjGJPtyyiy9MKIqLPE2t3KvyiYjs2JY3mKakeEiPKu0m8omfs6\n/exvAKxNCJ6V/fE9JrbhYcoRCq2yqYCSHY3JKWibXtWduzH33+dyBBAVEq/K\nG4n21vasZzKysRGXlTepcSQkeTed8bcVRfZzdVV/f5zvCtx4XGnyXEQ0LZH+\n6pZc8528RUfvqXm/Ty3/Plw7mZ9g/xlyRHDu4GjIVma4zeaVQbrPmXeW2Nu0\n/2Lw+1C/6yKNCnh6MSELYVQszOSqv3U6x9wAOhUmIRRrZRJotn+DjUKBNkDT\nwG8WxM1wxUQB0/KM3e2vtVt/EUIXj+IFIC4irBQ3FRGVWF9dhitloc4bbrNi\n78g2x/htyDgAiYctvnLwPmYxn/THlAjq29viNtGPdp/a+HPSSS/Ffmu5qwb7\nl5iYgO5LEYchwJXMi2SOZixQZojkV/7bTaPg43SJgwnVewjdYAloVZ6HIiog\nwyKn\r\n=yxfu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCa4kIjORuaiUAcVlduIvGGsWAhYinkHLhrpSPyGTxSNwIhALLVSLnTizk0Ahrn2UL0cFJO8qspk8kOcLaPENWqUmh6"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.9dededf.1_1581457791817_0.8912883258611346"},"_hasShrinkwrap":false},"0.0.0-canary.9dededf.2":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.9dededf.2","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"0.0.0-canary.9dededf.2","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.9dededf.2","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.9dededf.2"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.9dededf.2.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.9dededf.2","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-lFfdhLmpGKmwB5JdG6hMFlIMahopowwgepeKAJk/WwZdcCIjWjqanZNbo7jEbxxxEELCeISSwsd6zZiudmpnvw==","shasum":"21ec811f9668322587a4a3382e72e65509b6d52c","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.9dededf.2.tgz","fileCount":14,"unpackedSize":25172,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeQyNDCRA9TVsSAnZWagAAumcP/339tZwz+TfkiKVtP3Ry\nXc1320+r2pp1oXZ6Qndxk7/CGXwcw7hpW84N/wJCoB10p8MXS9kVs94YJu6r\nTPrJt88AI/Z2W7TNvjUGmhBPyeHcmVWu5yfOLJSl9qds426c5Mpc0v18CTe5\nfFSugQJEsSWr39oHoBrnrk5nnFfu04ukvSpXViPF+ZtunN7la1EQysb7I0th\nMjZ+vDvwgVsQIc1qYT4ZMByVPMu/zKEsgKmoRztxjhU+YvbUMCETJFIJlS6q\nXgQb6frTu6yYXrfIO6/lnRpsbPMhFelNoJIIsA2BDH3Oclno0oBNCu878Ucs\nQHE/DR1mlxo+dh0dKPfIaYy+CVPEbtm70W5iHi935KWeH8Cm8UPO4KJ1ZRrz\nwBATmyB2CYOqYAZxl5THHN6bM+h71KeMAE9FuUvAPcdajzV1e/E6NEo/KLBb\n+Yu1NEsImet26+KKmHvqBoEHBffBxSzJaQNTl4916Y6DahuUrGssJHoWvhI5\nd1lCbplseTvleHQFqeMAxNxRaajzCoHEMsO3zsMeidgomF7Mt19NR5+FIw9g\nkbwyFOnyTXWSI3oKzfYHWgdouipl3VEvBWQipGKr3A1EOIuO8eQ0KyUWdYDY\ng7JeoXeDFnhzYvpVJVP5+sz4GE/MdBJ7pavxcJnkK6a3hq2U7BFhwi6krGmX\nC8kb\r\n=zwuj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCy+5rZK3aPliG5ENgiG+N5sVsFKpD9xXj6SLmfhspFWwIgb4L9D5rW5x0bGhIt0+8roZn/airjKlUkvfFs0368rmg="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.9dededf.2_1581458243284_0.6578511930622779"},"_hasShrinkwrap":false},"0.0.0-canary.9dededf.3":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.9dededf.3","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"0.0.0-canary.9dededf.3","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.9dededf.3","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.9dededf.3"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.9dededf.3.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.9dededf.3","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-kY1WkBy/WFYsyOkk+ZLolTg+8FV0dRtF76C+AApYV0m7ecdjCKi56eEZQwM7udOcLULTuflVhIHYXMP4TAb6Ow==","shasum":"b5c55de260fce6cceea2335a4de2d789e9677290","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.9dededf.3.tgz","fileCount":14,"unpackedSize":25172,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeQyPpCRA9TVsSAnZWagAABi4P/iWB3WBIkxIpP6NwOINH\nBeAlhoqXRlSP1zXOpN/tlkz8BPPE6cexCYElv17tS+vFf59EpY8EV5FBJR05\nFByvHGL8EbU1wuiIpWKEpJ9zV3+zb3QwHF0KAza7e/H77fMO+KSijvP4H8LE\nj+Pv6Z7VS/bFd5PlkC5Ap3nhoqEk8gUPH/tdYTLHEVxpP8Fzv4/2TjXwbnrQ\n4cydEkxOtgsA2IMlv8WtewuZssTVTkdbOH1ojV1oy0zXC231rBk/yi3BkSE+\n2yBmZf4YyFsRp+YWyX+F0TemmSL4xc1OF0T2cuCuyub3VA7WBg69PKEpcICN\n8YqfqKne6EJjo0BVZHFXOr7FR6vxbItanzlut2HXWUebPTyj4te3SYThoPVM\nKRlRkbkliK/FQUOJPFrqacE3477R5TmOjkB1tjW3MjI71WoQ/WjKfzOCldWC\nJoFSAMvqPPzduW3pwarabBiNQzEn9xFw+wC7LkL7MzW+aulTtNEZNZ8SXUvm\nZ1G8E3ex0H6JaNwC0f8QtoHh2A6lDJRlyZQO87+Q8uCtUqap6H33Ui41h3Oq\nPVLkaNnKvOiSVhxOLAXrPqzF4UlYgTikb+bN4kNqczoKtR1oATrxbgWr25hr\n3URKTytvsDFp0b4jrAEppiUglX0D2F5osO1JdFtUQZjqBW+FtUEqmX7laE44\nc9Wx\r\n=2BfR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID4kigFMIgV6giNhrEpBCwLw3Me7pjanaPzEhQTetXWFAiBlT+8LkBbArmgMZJHeymEtH7glHBnXl+iYBMxME0IxNQ=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.9dededf.3_1581458408448_0.3212833983020189"},"_hasShrinkwrap":false},"0.0.0-canary.a0a3534.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.a0a3534.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"0.0.0-canary.a0a3534.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.a0a3534.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.a0a3534.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.a0a3534.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.a0a3534.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-NwppkMRDbxxFiEr0w440tZG5dk4qOYutn54RN2LjynaqBwGZw9F5c+P1tbn404LXXJruNqadeyhphDzjdtJQqg==","shasum":"24137d7bbc79502ca892bf2ed6c1aeef606b2a3f","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.a0a3534.0.tgz","fileCount":14,"unpackedSize":25172,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeRJatCRA9TVsSAnZWagAAKlgP/06XEMkq8bt/k7rOR8/L\nyDEZ9bISx8vXu0wBgQAaBZMF8mus3uxzmZfGIvv/I2R0S3CVX0CFxzQOb9HG\nfHCGxGL9vWgYXTGqj9U/J8FWxU3WbD2EmQKA3GyN4Qr5CZtAZepWQs82VYQ6\nFqbr/AnnjG/Ih3xSVwirrfqeoc0zo5lSNeYPncqYlUrzGSprhhDASXDjgSwj\nGNgs2/Y/7QYrJO2bToM2o7ooH+oA4BTDIeUkbk/5Jl8fA3JW+jLrw91gmzsE\n+CYQ8kA7JYMIckFgfFbCzaeHUS6lvuAV/kVJAj3N18TCC2nGMg2RyQWydCQE\nm2ocfht7HZHz1nb37XB/v5xe7PEGlHbgG60mzrid3HJk49FzhXeA1TwM8PHT\nLr47urS98Sj9SDVA1O8j0DMJp/kgFmVSkCvsI+nC7FRNBjn652iwhmC49fui\nEbucaJV9fGS/bt2hJnTFTQpw1EWTL7qA5/Iz9B6j4qgzL9+VxV6TmdRU2z59\n9o9cAa5EAeKhsTa+0UbMFiwqUiBzva0fLnnD4na3IjW5pMcH1FulzhCa5AWw\nk+XqTfdkKQOPRUPIspjWhqEKST3NQiZGLdkqJRFUmftlaFIm3GjIwaVKOFgf\nfU4JnzIVRAzCY1b35yaC+8SEzLxdPr/HVQvtBpgugL9sIBf1YNYSmiwP9ybc\nRZnf\r\n=3+So\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA+ecPDL4Oenyi8r8wDLS4gUg+7mngj/EteqADwChmbrAiEAkkk/Z7jkPHzpEzsLxLVMDrHRWKWIy7fLHi17mFwmNJo="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.a0a3534.0_1581553323862_0.6238410305082374"},"_hasShrinkwrap":false},"0.0.0-canary.513dcf4.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.513dcf4.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"0.0.0-canary.513dcf4.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.513dcf4.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.513dcf4.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.513dcf4.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.513dcf4.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-17emKvyu7Mw+vlFzqreLQdhfo7Ognk7tXc+T+HPueOVZtExg59ruyrt8bm6XHC2+ftduee4YLu5TzpeLPVSARA==","shasum":"071f70df150f6e012d4ac233aa7c4c953d9081db","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.513dcf4.0.tgz","fileCount":14,"unpackedSize":25172,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeRJwhCRA9TVsSAnZWagAA9OkP+gJI+FQEAPRcHliX7og7\nC1o8B7yoUDEWjseIRNWuixmwgLrl4ENbz1Lv3P8BvWgI/9YjMwhHxxcd+YT6\nj1CD3BHuLfzVo0JAr5Xqq6YmpNCbTe+A9rRwJWO+pqTfbvNBU1xpvuIzQ8zM\nW5q2mALFDl/RZ6WEVhGizlPmlzfTq3MwcaYkRHTVGBv3cpbo97lJpgWtd3js\nc37JGzlQfOZEjci//kx0byAoDBHjmTiqzASOB7MCy2pHWsO4RVX3+/gghDus\nVV/zAE7ppMHBWGb1tmo1XSPYzeDuklDgvbCUQ6CKoCMsKEKdLnnRdPLTdFjt\nNLernwz/+s9WLy0mxuhs/MolwCqMLY8BeIpOBgWl9wvE1Lz6FLLejzkLjv/R\nsz6c/buNota6s4+mBJGqws4Fmb9Z16nES0j13q5CLPR6yA5XeHQ92q8mB5oj\nees40e3wQA1zSjesrRyuCgiT9NncRG6Ixm129MDOnzsaRrYzk5CE3SHYc6Pb\ngZlPsSu2c0CKaJPWsjQ+rRzOFpjrmqEUVBvDIg92AkhmB85n2g1D5z3NiaHQ\n/OsxcengkLRIahTiunqk15LvlRQrOyCAhSPoCdO0vhDwa40YF8JOHamRvf4M\nfKEhreq50zVfntMYeWJBAFQyjge58hk+GAk49BZwpi4FcPUq7/ynqMEmSEdR\naZ/y\r\n=PInU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDwYoQLHOvDxpqL8nnZ0CV3wljWMYri+wLFrpI5FAwnJQIgDd0nnUm+AvBgnbuwSahSBKECFHwkYXjXeDmNNeeesho="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.513dcf4.0_1581554721274_0.16801712235182142"},"_hasShrinkwrap":false},"0.0.0-canary.b276aaf.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.b276aaf.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"0.0.0-canary.b276aaf.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.b276aaf.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.b276aaf.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.b276aaf.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.b276aaf.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-sUcD9mBx06AZx1dsy7oESXTqE2yBYUFnmFh7aT9imhf/i8c49D2cwpN5scShXlGh1U4R2hHyeLLfxUyd+87Q5w==","shasum":"09fe28d250fa5dd01624b83d0fef2cade716ab5b","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.b276aaf.0.tgz","fileCount":14,"unpackedSize":25172,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeRZvnCRA9TVsSAnZWagAARfIQAJjqFKnn6NZtxVVRB3hu\n5BX9Oe6GJ8FtyfT0TEKlW7q2JMSDUiwApb0NhYbBFMK0RxnQk2TeBNLpl85w\n5NbIP4MbXZInkDYRDFnFCZQbZZg+cdeS+e6P28ekIYUmPqBtiv2NyOI/hznY\ny3vKBnkjxgYIhG7zqmDTlDTvU8mXNV9Vcv3FbBKkZwPgsg5OQO65fY5atLt5\nmMaziuIJYK1cxhRCciZe/cGsD1EBTChHNyWcN01sKv7/nhr23jGUP0nvftpx\n7RmHab7nGLdFHB1ZUCrUKn3WnvvOlZ556Uhuqcu1cdD5Mgu7IBZzd+e/heoH\nRMYBKpnYntVGMWmf2/KC1R5Lv9yL0w568UmwsaOyqFrhvGszosvXq+BpHSga\n2C6WAfUUA8BtvqTbTvZI4dICSPEm5wuhkJ6mRlrCIymgLIsZHsBLmRcS0TEa\nRVKXRBdv2aKnY5Vibyf7PW4l8V5NxzzVA+n5wEkCdFyrF5GdX8wxqWPTN1Sf\nN2pwyze0hg0/Ukp9sxSFrPNc85r9OYj/1C9GsAvgD3fgCEePLUZHEHL+mm/J\nFqXsjOeTUNezjRsz0vcR6FViWFYynafAIXrIA42adDJL7rdrjL60M2sz9s3m\nIQEDSeubW4zHOWo3loFdwFOPIoUpPQ//tpLYB48dDjJy/PWYlm21PVgqux80\nLCsq\r\n=w7oA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICEUUsSkO2V8BKsNpuaWCK81vp4fMeTaniH9YlGAUrtVAiB6ZIeLPgpOmNuXX/NZ+v6Uff/6haKL24fuwjq1YK6Pvg=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.b276aaf.0_1581620199188_0.6260935923020665"},"_hasShrinkwrap":false},"0.0.0-canary.a8e624c.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.a8e624c.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"0.0.0-canary.a8e624c.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.a8e624c.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.a8e624c.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.a8e624c.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.a8e624c.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-inIDKaTsyoL1VY11o0TcuMBHZTjrkkawQLyj6UCc67fzJIxtsNvRo2hbxknFBNr5qOZg2NwI0h6NqbiHpEQIRQ==","shasum":"b36c0e120b51d54d2dae77a8d5feecbc819b53a1","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.a8e624c.0.tgz","fileCount":14,"unpackedSize":25172,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeReWTCRA9TVsSAnZWagAAZDkP/ju9NicSiQiSt2gH+CmP\ncov835j0RwJqNQcUcjlPbqc5PTUvMXk9QSb76lRiFmMAhlpP+iQ+LdYcDtWb\nXJvcxpADq8yO3VWsF0/xOnRWOvChiTB2KCOrKWnvxvjUgPomBHZ9Aa8ZfRDD\nLFFW4VYgSyWtfBn2DegmNIDX8gyQUrZirwST6GTzbYnWECecDJ/zYw0TRXiH\nU1eS0ABvuv3m0sSYIy1G79PATGnYkWZjCIKnlYjK1KPK6YFP8sDwWcafno5W\np4NCl4+Xgtbzqst9YxhMHjcsViLa2bMtIlnRL+eQ6HKHV/uDmDWYm/cL+XNh\nLeGAAt5RFEB3Q3qmu1Mxb5vzzqxwB/qG7aPGQyEwxHRjbyhQgmAB9q89qzhu\n7peWhJXh1YgEqfYbRApangMojW885h8XXKI1/D0VPk+Sbzft5GJWF4kph3PK\nB/c/PuiiF4YQDIW60ZfitCMG+1OLW68BX9R70+9IHC7kj3u8F8G3B1V8SSww\nmAEfQIq3SZxL6rfBBt1j+S4sFvRM7JUWv0nu/zUFRlgv0LlgPEktpn1OKajU\nf5uz7f0mdmFmw67IbKdHaZ6ISHPZYRrvtMahwZb8dY0aMZFwkPh17VZ+k2Ei\nDXf4duB3hUv/j/JG8dBYDpK6vUo8sIMykQp6tZf9av/+KhvchL2wR3XzdVzR\njix8\r\n=LHuS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIApYUM+BVN1zQUuGegKgtlgNc+KPBG3RwttG7v5/MWAiAiAAnpxGwnDJhtUXHG79HgnZbOx+0uZMxbZZ918YCN5K4g=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.a8e624c.0_1581639058992_0.3221640417194378"},"_hasShrinkwrap":false},"0.0.0-canary.2661049.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.2661049.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"0.0.0-canary.2661049.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.2661049.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.2661049.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.2661049.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.2661049.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-vyDQATazbYfl3GTVapECmFIYtkhhmd9m5/q544SMdsx168X4GV0WmYn939Fp5Yb65N4WZ6BgP0+rDMmzSTb/Ew==","shasum":"4c61d16bdbdbd5656bb0ccce76f8cbf877b9f402","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.2661049.0.tgz","fileCount":14,"unpackedSize":25172,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeRfnrCRA9TVsSAnZWagAAukQP/2jOMvjvOZ+guSpLCD9E\ndezUwKrYqJu0W8AKXzN3cP2508c0lE0udKOdl6HHKRMWJtjkKKk8vThF5xPi\nNBwj31H/NBiUrUNNe4FuT7HCX7C9+fhDiXuGSIek4UpEO4AVMH7Ufhpg3y8d\nbCI2NiPDWsm1GS5QfcWLra1sM62fANIFU7hmEmzBrZGELJF/7oK4xR+vio5W\npAfj1NINsaWjzYHeAFFvm+2A8e5bqLW/uiHS3qGLoghZcBsjeept/OnSShQD\n+10Zsb6xdqzEoRPuhojDD4G4ByBFi9JgsjWge50A9Kf0oL42ipHTRmJq5/t6\n8GbBR0k25Qs2JxXDr9TXAf7mCvAAvWv+q/wrdARfgWMy2RVQLgqQ9Gt2rE56\n6waznF2M8G2rBwCahTbYzmjv6sYIYeVlk8Y9wi08m5HwjfkyKK4oK9XaAoVO\nKUw3e6THCuYZ6SiBTh3pDDsZBMnBgWt/qnd9VaULbQM+4JhoIToX1vb1Uyyx\nPARvVQFC5Sn2/6T9oHKBUuBivdLf1HPHTgu7sv0UxwYa45DgKlgAKltsSpCe\n5LTLnzCsVTNQbVwUdgX9TRSAj+r4qNyJnHIwaCzBLW8U8vSYzdKXiUvfxQZq\nY7jjekqJjRK0dUE9u6VGfZWekHtYgPaNWDhM+sG/wKyyu5RygzZjGnPIC5WE\nH7F6\r\n=tazZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHSpN/ILrv02LPWPozfSR5YYVX+xSA5CqgpRb6CXDod0AiEAkZzZZY7HDX9Y/3OHZpmHAW/1FwddkCWxk6xQEal7aCw="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.2661049.0_1581644267501_0.7424469719236693"},"_hasShrinkwrap":false},"0.0.0-canary.2661049.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.2661049.1","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"0.0.0-canary.2661049.1","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.2661049.1","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.2661049.1"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.2661049.1.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.2661049.1","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-y90ueBXr9sdzPoO6+GzicOWSS8daqTT8nub0cJz7ptTqLVTIQaWRTnjGBtyhqNPb+GLWnKFBZClYx3wN30tq3w==","shasum":"1eff38cb136f358e8e929890842c29dbebaff861","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.2661049.1.tgz","fileCount":14,"unpackedSize":25172,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeRfwOCRA9TVsSAnZWagAAHwcQAI3Joxg7BbEszRuOfnzU\ndhSkll3IIkaC6SdvpWjmc8rbZEpMY05JgEIldle7djnGyLcKoivphPabbj9R\nk+prAsT3OTyuaxDlA1ABlhcj1/yiTKPFPjASCqHpcBN3XKRpgnj7zaDj63rt\nyOkJRDq8PWfi3fVjwpjfSIt0VlRFmk2gSvqxaAEQ9sVS9qGl9v7Cuc+v56J3\nMVILPcMt2RyLr5v4zzyolZ7ghrU1GpH2yhCZByIdCARv12X9qOFQmGOcVWzB\ni49hXTT/oMYQlAG5A9c9GdpmxzbOcgsM1YSQaA0xgq+EgR6XuW7MbNG3quQ5\nLJqS49wV8rsyR/OnwRSeKyNswQ8k/paBrBAjFM7uCpXQRXl5+o+4hOPmV6DC\n/ol7vI7oIx/1pHrbmPAFd9GLxb75YBjQ6km8pFSIQPwyGR1sghxRVst5Hq8C\nvdiTjZGVvKwvvAJSmHyC9wECK5xL3wvMHKnHOScNLrYJu4mRgN12hLw0Vpik\njy9aHn3NetpqBxt0SDC/4P5bJgeThj62+9fGOGpZ9QEhK8RG4gAJJwZzyTKO\nAoypC2Tb0v2JTBIZuOfw8tCZ5XswnCVDNOSTa0w/GZ40LW5hqR/AOjH7PAvW\nDkFoCdtakOSy2HabZ0zE/flKncvr0rhnifidboeMcCjIzqeoAF3fDrJtkfHJ\n1S9U\r\n=cS/d\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDniyIjCOXhQNWcAK1rzumRO32DjVX00ViF0HJVwBLquwIhAN2jy7L72HTxrm0pi089y8UKY0nyD3Irc+DjUMIVD+nu"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.2661049.1_1581644813992_0.5234329059535019"},"_hasShrinkwrap":false},"0.0.0-canary.7eb4e1e.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.7eb4e1e.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"0.0.0-canary.7eb4e1e.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.7eb4e1e.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.7eb4e1e.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.7eb4e1e.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.7eb4e1e.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-5Bw009/pu1Iib/T7LtRSTKwFwFy/xT9qqnhECQxEctYi5fiG4AOzoI68Pu6IRSDW0X2IonVXzGSzOnBpytEWIQ==","shasum":"d4fb6c87bf59d57692730441cf2735094fc6f97d","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.7eb4e1e.0.tgz","fileCount":14,"unpackedSize":25172,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeRv+3CRA9TVsSAnZWagAAmGkQAI7x+CVunDLzoDj0u0GV\nQhhXLx7UygZ4RtSV5Cq5akkmKKU+AkcLr3RvHKm5b998zf4KMmBEBJZPOvn3\nS9ZPUzZQb9wdp9uZUmviKV3/5w47hcrcgELH9pi5a/p46B7YTO+/usCiN3Sk\nGECKYy3bHV3kPUNHnn197WrgSgelcSPBRvCS05rwR3J0S7XEZbvx3ja5R3DV\n8jmtCVC+6luO4wx89sLhCb3CojbK42szvxRLRMPbnrgKPmqDcR9Nr6fYF3PQ\nR3D2g8Ig9RXDPfkrsIcWnPV0wSUqzCcsdut9oy5L5OxInIQj5u+ytkcMuFsf\n3/likHA8R5Wfs8s7O0btr+Q8yOqAqJnJu7mvV0Ez5Tp99rTI1snTepA3oUo/\n6wLP22y7GpL4qojjJvEXBcQKXZbrzw4bFYVXq4wuW3h28oxcsC3pFxMDKwF3\nXoXA9nHypyla1Fj2fOFZ8qiIFnqpnuQmWJA6La84Y/iH+IarCev3Fp20/25p\n1557XoX+JrPu8NLXJUc/pMOuj8JtRSkYTC0O2d9R9X14XIhOpIlbeEZbCZ2S\nAhnk2HEulGvdVAgf5Wpmj1/vs3DF1o8RtAmeupghmhX9BUCzyPcSP7o0iXjy\nQRegQc5EiNkI59V8LumbqGfwyT8pSW/OlUyqMfMXGIkjr0ClrpFBa/l4xZrZ\nN+UG\r\n=bacQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHd9FqYYMeRochNQ8Pedy3yxoFS35g9/gXlciqvyUsqoAiEA0v20wAMFVyjos41e8PAnIoe/bluKdxzwUmTMdOw8Ilc="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.7eb4e1e.0_1581711286983_0.4647555018093428"},"_hasShrinkwrap":false},"0.0.0-canary.5e59509.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.5e59509.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"0.0.0-canary.5e59509.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.5e59509.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.5e59509.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.5e59509.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.5e59509.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-yxGfvN5DW0hO50d2cW4YQowkZGQBTE8iRKUUagC9tc9Me9lvblsQDXxx7F/r/i7l+CS4sriq1MWzY3HTnhlDmQ==","shasum":"97010d1c169a203e328e6685186519b4a926b9c2","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.5e59509.0.tgz","fileCount":14,"unpackedSize":25172,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeTH1ZCRA9TVsSAnZWagAAj2YQAJ/+/euM3jH8QhIAbaQh\nAl0XVvWjFRjfCLi9w+EMhEhopifGuVVWfF+wfyR2NGK4sO+biFnxqTC8hhvZ\ndCFWtDtkEnsIOzCEcmxSkm4LQnSt2ifWXuQfltsPbwwfFhEKPqHPehRaPIdM\nB6ryZZGCS/mVTfGm3jGa5oEh6qC+BPy3gfmRZTgSpzwdedgyTqdfrkNF9Fed\nGj6BoFUxc/5tUc06KPTCd+h/n7CYp2a02LDcFCONxrJnkIJ4MmNWvkULX5wi\nm2Jvr1Wt1iYwh0rmPivwT9ScKmpQM6TJiqszqmIOELm43TVMPD7HUrqrik3f\n1kRi84Teo2bb8r2rvp/3gMXFKuzRXulKHGCaP5ej84ySu9ENg+jxwvjimodn\nJAbF/7L3kWo2bXQ8sjf/yux+G3XSRqMaJXkz699t5gjI2hcwkD32zfgOETXm\n3wJuFbHST2vbLyDgqcYchfYVH9KFLijPDLNXfPAlAR06XaLu3AqvFCnNj9V1\nx2zn4gMQ0ilNnRl8PM8de2N9xFTKoCJgKZdOIueXoA+xWmB+VfMzFh3Bn/YS\n1afXWGkQuFqhaa61RF2+sicvWHdTQFVFWL/lGOm8l3tSD6xDhunfYgwzjvjN\ndBgRRYoSUhZHf5nYfMCbOUU5hPwyJXUlgauRobMDgakk3EsFCjVvqThPgmO3\nfNW4\r\n=5GF3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHGv5ULHXAFl1RtwtSfe+uDm3IQSp8HXMLR0632gdHugAiEA+N2jupvVlsGLuJCtefTCLTcYZtdcMcqfVGfZfY8Zmas="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.5e59509.0_1582071128537_0.9679729748053583"},"_hasShrinkwrap":false},"0.0.0-canary.062c690.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.062c690.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"0.0.0-canary.062c690.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.062c690.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.062c690.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.062c690.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.062c690.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-mvaa/yS5LKcqhENpMzB8QXkFj3hL8fVAibTp/Bt8nG61Tv+tXOeGWfu2ZcaIVyT0ESRjYxNG22Wo7VjmOb5zeA==","shasum":"9421a826c4f6c8febb1dbcda8efa86f1a883de59","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.062c690.0.tgz","fileCount":14,"unpackedSize":25172,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeTJKYCRA9TVsSAnZWagAA1voP/itA2DncDwjjpwNUbrfm\nCPh45NQi3TpjYJXqQ39wLh0jA/a0DzyunmXvIV1Waqs8eIdv9XS4Adovp2r5\n+sRnX4xgW+6LXWbqwVXZPKkkR7Dm5yo8p18/trJ0hlMM723hWg9vwhYe26zR\nxF4lU7yn6ggC4Lyk/8cUqlFNK7pahOTQRcLq305F28vsBCyXgVG+MEQgFren\nwRN/I3Wab/2aTy+Z6E/fp8CYyZLmpRtEmTsWYwgBMC/Dh22gldSUJw8LrSnT\n2YC5EWG+WAvbHRcJrTWc9isJqX0NFH0U9s/oP7V9U0JpGjxB81KjNBG2bDkK\nuXzmC/RSI0RNPu/k+lJleSJqL+bo6/5dBhfhsd3gnbSUV3fYThHzVHwKoloc\np/GhaWtZdzD/1dk5vq9I4wep3HB92kxcqst7JL3WVeag68iGI1tlPaRsO6Vc\n4QNrIX59NPHTy3qrRolDWF/17WckXmP1b2B8jlP8yd2itpTnsOl2c1z2gviZ\nljL5lKFUP7S2m8mTVJr9+wYQdePZTF5YEtZoBogxmmLgTuJcUpLzR8D8SbHs\nXv64RNAymvtnRmhkbxgmXzqiEyLe7ptgT1+LCkMUA6UxTbKvhNDombVxbfHM\ne77N9RrN1lZ2qkc32V0L4d7zRCzInDbIWKZyp3z6KJinZbkSwvdfJe3jYjOz\nAdNX\r\n=v0ZY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDgdn1fR6XkPu7d9UzjUUWAaekCXHGda0VqV8AYzU+M9AIhAPLShedjaCL/NTxhIkxmxkmKCiWedxOJK1nHWwquSIlN"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.062c690.0_1582076568380_0.43585545147481586"},"_hasShrinkwrap":false},"0.0.0-canary.c9627c1.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.c9627c1.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"0.0.0-canary.c9627c1.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.c9627c1.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.c9627c1.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.c9627c1.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.c9627c1.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-Prx4+z44Hy4EQZ1h03lGuDHapyoyFVfjO800MdaMznmSCsiZuypznjQ3MoXAEWEJo3lNS0ZE6YdzD7DiQwxkpQ==","shasum":"cf46b8564e597ac16d6d8c13c917f684ebc74433","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.c9627c1.0.tgz","fileCount":14,"unpackedSize":25172,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeTJosCRA9TVsSAnZWagAAWCMP/3yjgOwcehWjcNxUeegj\n0Cyp8iG43sYTHTnyfLXl0EkUVS7mdQpwS+yvQkrCrfYxT4GQnaSCv9ycBGHo\nESyP1aiDdAfGYQopUElO94/WKnZEeG1XwmwWHGfRKi6gpcrnwp04mhK5nBdO\nf3NLdEbhOPhYNfYLHhQ1Soqkq4dEMmi4yel6f4UOufDpNFU5NUMs9fgjiY8P\n6Bq8GIDMVYz54ogLN3y4zIGy1yTk+tnU33zbCHxaj3PbTMlFRvBRcJuZJKvI\nULy6jxvQeeKCx+QNzv1+IjZagabCHvHv6vmnnbwrzTtxJvbMQbAB9FU5JazI\nWB+ULmllgpPNox6MTq4DdGzxy3sTKDqMJccjEnVQqb1PiDSp/cO4Wyx0HVu5\n92O/rJddP79HhdmFCctUYO1axD1DDvX2ongbTnUlCxwJJw0n6BXclydWZvVN\nZYEPe9YuhxOKauNs9oeXPbwOPwJq51EWOdJfSZctwcXeGJbiy5ZINsCyC1XJ\nl2JrqpEbUHj5ZXFsEfRSEADuZnFgB98tRji9ISdSejaZonOD4kpuSr4FpiYg\n+7TZlh6qy3NRdu4lwDhCP16R7gZlGTqP6HJIBJYeqPie79MyvPCIPs8fQukt\n9kr6h29Ia0qU2Y7xy9SsF7E01PQ7M88+IPvvPTV0k7Cs27SRqfPU+zNMgcIy\nLtdS\r\n=Oi8c\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD5kbitr2dH9kanUp/LjYzE+OrZY/5ILbCZLScBhWHILAIgCNCgyD1m+zEfn4nHYEKdBITjQYuMk+SYQql+r0KdH6c="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.c9627c1.0_1582078507632_0.013997852551919765"},"_hasShrinkwrap":false},"0.0.0-canary.48ddc5e.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.48ddc5e.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.4.4","babel-eslint":"^10.0.1","create-universal-package":"^4.1.0","eslint":"^6.0.1","eslint-config-fusion":"0.0.0-canary.48ddc5e.0","eslint-plugin-cup":"^2.0.1","eslint-plugin-flowtype":"^3.11.1","eslint-plugin-import":"^2.18.0","eslint-plugin-jest":"^22.7.2","eslint-plugin-prettier":"^3.0.1","eslint-plugin-react":"^7.14.2","eslint-plugin-react-hooks":"^1.6.1","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.48ddc5e.0","prettier":"^1.18.2","jest":"^24.9.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.48ddc5e.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.48ddc5e.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.48ddc5e.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-tzrEVVjY4fbrlN7XLAVevSioK7gfMlwY9Y5w2PtALVZQB8QmPDmfFY0KP9iMna1TD/cmEMG6kO4dXK+BQv9KGw==","shasum":"1ca2ad71f48708b988a676ae989a4e8daf835a20","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.48ddc5e.0.tgz","fileCount":14,"unpackedSize":25173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeTcVPCRA9TVsSAnZWagAA6FQP/1mhjs6A20sAyicYCYGA\n/LQ97ZidtcNeCRD9SHKwDiu0lfZf67gADLMQS4fMNDi0bZs/DFqBIrpi95iz\nPfVt8htbaBB+pUkdsWCB3MRWCUKrQ6exxZOcFC17y7Z7R3N253RQTW2hKeBV\nF623nsHrJCo5NluXVvJLx1LQ/ZbdmWYBgLARyNZ3hUqElQuHnWAj/5NFqjHg\nc1SSnlQ0p6HKXvZ6JUm56gueslrnVVecxiLC6wi+IQbN+MFx8scopqGmO/mQ\nhoomY/btFX07YGsfipzOtvozoBYCwtxVdtwHaxK+vxvxd3j6Z26SDvFuSMq+\nPDg6Ie7YfnhS8QsYJGLjlP0ul2tcBtO/EvbHjoK5rDNOz0KzYNhjwkdcyaS4\n98/QBEfHIOw0aqKb9pguq+L6GdB2XaVF5s2V7tVRQJpSeI4wBWruhXRqSGzo\n2ynsSYRfQYyTZtQ8H1Y9BhZhAqrXxg8C0g/m8/3yd4264Lc836RWYsIAmRSG\n0qp24/s/weaPRO5AiW15H6/IyNLVEyVTQ0hoBI/Jdq1F3h7dJjJ8c91LKim6\nCbQx0d7JP0rLn3PDO6pvVsvXrmumHG7FKK0OAxSZEA6KeEC3zzZMkLP9XWYc\n/2VSRIwGQ8zeu5loNV47u7NZQXf9U7GTyaXEyEbVy39BeWx2VeBqp8cngwXh\nElxf\r\n=/hj/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC10lBvavfw8LxfaZzARoUj2NG9rM8ocHqIRTT18uyYiAiEA3LNwQaL7M6exeyY5FywVN8yti2WLE8lLwLBzwrbKnaE="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.48ddc5e.0_1582155087284_0.9252985349090319"},"_hasShrinkwrap":false},"0.0.0-canary.119a885.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.119a885.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"0.0.0-canary.119a885.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.119a885.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.119a885.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.119a885.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.119a885.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-ARB8iKNpa1cXPt9cmUqF1eNdHcz0eu5txxmzAG3MdNeGsqMxmuICsj/9S3k8cm2IA4wxsDFBmBVz0zOiilNxqw==","shasum":"7e61fd3623ff99acb23eb19366e33efd644dca7d","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.119a885.0.tgz","fileCount":9,"unpackedSize":19705,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeTteiCRA9TVsSAnZWagAA9L4P/iUdgOQEOCgK/QGb/Omy\nw3Nnsn/sOXNjvVViuxzTCx/GnmivLbjP/upIpjjwObLj0A1ZfrQgU8jIkmx2\nLs1RiAujOyI5ZnHZJNDw/FqmVEWkGS21hmNdjlptlna9X+fm89MNmrS9z7eX\nowF0EevY/OPsfEv8lFMw5wF3hgiH2OLEZlXWQWp+i6fVg8x/5ejrHvo98Pak\nRM2EVbQNZm6uqxWrmP1O+xSklgdPt6ih9AP3evsn49zxtgB6LnpCaLBLfbMs\nIcfGEin5aJg80dRfcNrgXIr+7SaYNButSWrvPsSSVQv9tgRrDMmAPBE6Pd8d\nGUVFhVGoe0nbSEbvGAOa90MR1bTs+v59BzDKwLwiu2LdEBgDPXm07dnbMK3o\ni6s5lfLHtCj2GtFWRplb0RCcO8zzdhnMyphZwtPnFEJSyCBu0yBIIYsfc5Xx\nfPrGDpZ1OTot2xHW43XQTetPvC68SL3d7wTtgQKmKDgH9COhwfroH3jcsiMr\n5PA3UvB+0jA9V8kuytqbzWn8eW4wmzzY7f5JxwVsEcE1v93P50J9bLgVblht\nIPAyuoLuMKR0Z7WVsWHScDaUTCEZ++Bx3hqoI59K6r11KaFMjQ3wIGLXRMF3\nv3rT4mGMWcpz8ew/bQKvJre9SlZPkwCXBBUt8nOSbXRieLSBUM62bkGCbjd/\nA8l0\r\n=tuad\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDdGGGGCBEKDIs1DrD51zsRiw0X8GuqSZzLshSxpJQc4wIhAINVFe5Bu98wIzc/wyl12WKmyANjJMLlVXTFZl+X9jkW"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.119a885.0_1582225313645_0.2119183592051903"},"_hasShrinkwrap":false},"0.0.0-canary.9908539.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.9908539.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"0.0.0-canary.9908539.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.9908539.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.9908539.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.9908539.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.9908539.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-oNryotVKXpRJAN1gVmP3JZOCtK5cdsVvZCNk9+mXYEcgyb15y4l9WHlQ2f+GaBx4d85p6qyRyyg4stZD9yikiA==","shasum":"e32b3ff3bf1e4d0dd1f3bdf839952e05add3df9a","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.9908539.0.tgz","fileCount":9,"unpackedSize":19705,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeTw7nCRA9TVsSAnZWagAAzAUP/iqoI7CEYaAKmwImWDsl\nxZdTEU6iU6Qcs0xHN1cbhK+1sqbZqZSSOapoB1UQfdkF/eWg5MvJ4XI+J+NX\njdwUe1MjnuP1jWlH/2FlhDwU89GCLc+LsT1KHSKcwxCprgP5E/zC9Hlqm29I\ncTyEmFR7SkkbAkVu/6jEQaty0FEJug7sEaQYhtgozDkXCD4QXoPEY5wdsMvn\nsGGREvBFUhFNg93P1fCnu6JnqIUsutw+o0t+TlIQqACHULjImjG1fanAYeB0\noHSAXghnaKDDXz9Ch2fLNx1dfz22T0IiEddAKtIXpcTHBCbEhEgy9dQzxs+B\nipn2mKgYx4BdxojRvaLJdHlwMGVOPlYmGOk1IRHB5qxel3j4uS1CJYEeCz4z\nzv90aeIYy8MOTOdUThr6kcSnfKslhiCmzdb0TeV7GPnf+NAT2NvNEDcH0Z3F\neC3unFeeLtj//sIBj1kwslQNwJHEUr+EVAJQ3w3/QioMlCVODzkoqhsHqgb7\nX1ynM+wfgd/eq9jnIg+BQjoK5hZUJ7neSjw/Zw63dTqhUx0on0Xx/hooYhrl\noxekB7s8r04/EbTEEUE9GuKO2fgUxpUaH4zoy8qEOSP34dUaZtBdlf8+lj1F\nTDeRSdIYg305jZdPCe8L4/P0TRehJ+iWxdBGVzrpLM9gnpTrp7IvIqWcIu1E\n0fPV\r\n=rYYn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD6l9IBxn+WdTVYjfmmeNkAFGUgB2LgOAEHfl2842VqFAIhAOyesnd50Sc5DKbeZYb/VrgIzMjDTfbw969Wpgq54CVj"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.9908539.0_1582239463008_0.19548886001439914"},"_hasShrinkwrap":false},"0.0.0-canary.5386f4d.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.5386f4d.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"0.0.0-canary.5386f4d.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.5386f4d.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.5386f4d.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.5386f4d.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.5386f4d.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-ESCdKDyzcHJC1ewma7SJjBixri51AfIWHCouDHkS4urrOYTdhHuPzKx71sPdgWzJt96gSdiN9NY2GaIYgppCiw==","shasum":"0a7c1f39d8e5fc95c400eb35455b45f87f78c7b1","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.5386f4d.0.tgz","fileCount":9,"unpackedSize":19705,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeU/iyCRA9TVsSAnZWagAAxx0P/AzAg1FPC2DQCAyQKIOC\nIvx6LnDFPBIEb84FjsQ0mV46tJoc1xcfWC67j4BipF1RK+ZWBoB53BGKK5NE\nQ5mIiWGe/4fmyfywRp+N5p/AED4iZJC48JDZNIMypOL3KOLamBjbovaDj8vW\nVdfBsEBwtaXfJbVnIP+0C4VbIHlXDRP74Y4z/V5hZlRsO+cjnZQdazFtff5C\namI/dCTGP8ygRjDu7HlXDnlQra+yEadRgwJ7iJt2vYkoL19l+SFHOWrjRwv8\nbjVWWBU9hWOZDjwGAX+tf9uSKDJIoJ8eku+9IHGmmfE8pdLiLBistMiSTVBQ\nYc3+OPqW8Y6/L/F2uV4jEgmIgn8lER88Hf0sHzHKQOO3TJDPBHJ6YxiNL7SY\nlMtjEx6jbKguCpWIVGtFb4pRfMhlq8AjAFtIcrLbS/HowuZpisfTb57gC0HB\n/ugJgg8BFGgSV9xEiLd1VloTEFigYBYxeO270+4Or5oWxJU8cwDovGFXl0ql\nehZ+dcC3bFvnMr6dxj6WUnllDwj/fm5dZbehDhNJAMtQh4h1dTSLyC5lBNEr\ncZ3EpHbSK0P70+uYeVfrlrZHUFlvvPYWIRJfXU9fWunkrqMxIgem1zqS6O28\nWWrj8HKOI+cckR46Dsl4TC3DO3VBq95/Jdaau+dbnk18VJotsqYeZhSBKGV2\nznGG\r\n=9QRl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDd1beAW4MNMRDecq77QDuleRRzquZrN1jWX9ANKUyASwIhAPzFtYlhQMWV+nXJgwsiO4+i5f63LlgWty5BxysyO5Qq"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.5386f4d.0_1582561458136_0.8861615321683909"},"_hasShrinkwrap":false},"2.1.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"2.1.1","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"2.2.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"2.2.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-2.1.1.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@2.1.1","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-rkPD0qTjdniVMRh75XOX5GasZhS2R/P0xP21BBU5PX675UUC08eo0hhRrC178UAOAPzhQ8AjloqaWDHu9fbH6w==","shasum":"e799041be66de7324761ab8209c997a114fa627f","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-2.1.1.tgz","fileCount":9,"unpackedSize":19637,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeVW+4CRA9TVsSAnZWagAAJPwP/0DQ6li8KEnd87g5h3At\nWtUzIkqtpj7CtXaGaCqehg2TI4zFCOHx7EsGZnIVjqoqdN50e7dhOl1UsHsS\nYbXZ95LX9FVMBafnP95yjBvwiBdiNDId8H9lt1j4fUM72wmh+AQL2Eis+aO4\n7cND2/Mcfd+jlliN+LZ1FCCFNMmzWuC8JaYgEfkfLrxNwiWGBQngPmcE0tn5\nDUxeSdAqtu4uEpLUiTeBcodOTuau0gk+t/YYVqSq6OFwY2LPIsNBHU32XNd0\nw4Z/3pVVtmzU2KHDjy21ljtptMfX0y/uMj652li5jQP8FCPVge/6JBSVY38L\n3KkGLTxz0QZ9fcMvlCN+rBG6KJvNQc96u90tk0f0l3mVHVXp/fd6cdNlQw2k\nTE4EKpg5NWInIiWjhGa6Sr7qcl4caUcLVRF4/UiTNvuNg2XHf+42UKyNhYPG\n1v5M9gUInfw8o1cl9BVgAE+4TsmruY5C2FzbHXPepIxtzaw9KD8OJnyDN7qJ\nvlyosj0EMEydb2YEFgysIa+Hpj5O34UfjvFOs2b+AU/gIr+UJCdSbLKQGRam\njZhJGpYk5nN6vhn6ndGv4PVbpApboNB9C13ESzbiOBq3bTFc3Pum8jdz5lfh\nUu41VwI6sS2lSGuBzNUPYZG7dFIaF2YcMSIE1DGx+V+6JlIcd/n8pLlZ2Fqm\nT1kZ\r\n=pEl0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDvP7ny/5s0O44VQjRj6ORAep+32E7s80gTIgNWxfB+egIhAMuW3uFtUhAbcSInKpEKU6zyy0inFI2NnESRj/fUjGWR"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_2.1.1_1582657463576_0.15734038725310295"},"_hasShrinkwrap":false},"0.0.0-canary.74cf916.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.74cf916.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.74cf916.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.74cf916.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.74cf916.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.74cf916.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-sOS+Wd5rTzOaHKj0dXig6h5RlcDMWsyB/z5xa4i/2vcitojNJUCN8JJONx6DVC0y+ZixSlrlkYJ/ntwV/91Tyg==","shasum":"004d0fcfe1990f4ae6ab4ccd57b895c49ff72221","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.74cf916.0.tgz","fileCount":9,"unpackedSize":19688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJej4YiCRA9TVsSAnZWagAAzfEP/1RaOrfHAW07DudklTrj\nn5zhxmSTu7/M3ZdAXMWG8pWbp6MCDtko1ieYwTu1Gjy/nfCa65yzaWA3aUXy\nF2s/EPNl4FeddX1SXw+LHUQmrU3ZpvdFXuGDAH+V+r/3g5A2pH/GhScHoP3a\njIXyYEdY+b6oVrTwsuv4FS0i9kclQkIWkcZhyjwQvKM07BJWCyBjvCj5Csfb\nVvplj00ZC7b2vEXWX4QLpSiqAypgZYiC2MdHNQpzeKjIbRlYaoBOnKqK1uwo\nSmsZXbxKlhA10n2/hynDqMrrHqjGgkW+x6aRwT8UOcoBp8A9jAy/qi5rD9wY\nJtr4VeCmEgwrXXwWFinDqkrDtEAWU3BpPyZgOcUM7cHjLq5x3P+JWKTdrTXe\nqRYGsp/iWTHxnCG6xBuO/1+UwBaTo5QSa+csYIckKz4Ze0FXsHHRfwFkX0Wr\nzlKeBhdezvBgcoyIgGhUyBHyniZ6oWjHSj93O6ze3mWdwNqZW52RSwN7pcHT\ngOm/wncPSyJxtGAqgLjyuvNQZFRdz8/rMeQa3eDjwjJrCrVwbTXKQYTP4UqQ\n/OklOgjmWV/AkTruquskVsShip27fXiPs1dAE01LFcLnxTBRIu94yTRzYs1i\ntYQBUvdj4VR5X9gjGBJv6xNIkVqGBU4glvk/r4kBuGJ1boosiBc/bWyBK7S4\ns+d6\r\n=OD3H\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB+gnC9GxLuIleGuZCJJPEHTI9DS3QxahM6Kag4PFnuoAiAH6HwW+TMma6jBXYsdCMM5FMMTze3GzFCAh56sgdNT4g=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.74cf916.0_1586464289640_0.9615813294619069"},"_hasShrinkwrap":false},"0.0.0-canary.5a76e33.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.5a76e33.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.5a76e33.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.5a76e33.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.5a76e33.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.5a76e33.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-+ZIXGStnJ/+R8jJgp8OcTGBceo5gVbUJQz6YBXLBqt4WK8iBSrYN1jiywglNgRk7vRGAnFgmLciSmtmmYGa5SA==","shasum":"1a2ee18436324308d4d3e285997e28f3f3ee6464","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.5a76e33.0.tgz","fileCount":9,"unpackedSize":19688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJelQ+JCRA9TVsSAnZWagAA82QP/04Hi3KTdfXyRcFw0RtX\n+KAZHQFJeahSWpJpTOSvVI3CnWVcbnin2QW7Qs0CKZWWMfVmBDuBLwdcrNs7\n3GA5yuStSc1kK5ZWcmllfKsycFz7SxabNa2n4IZ3rOqunS/eX6pK7y2MNswK\nn9+ZAC7cOFa9zc3DSRIyvJYnkzTXTiFWF+kL/t/abdUs9hzLLHZUw+tb4Vjt\nhMMsFXqFOlod99myYrMS4OxbkpI0gXuTB26NFN2oxmhpqAHLlvIhqimPGLix\ng9zLxK7W4FmCTqhy0i0/Yek+eyXLTlBcSC2uDaBziNMPnDAC5NAO9MueYHq0\nSCyvoKW6Nuw9i8pDNIwQZl8p/AlYIycsrv5V+7g/gGva0gZBiKIr+k1FMqcU\n6Srnn6SWtiXhiKwzShnuSzbtBdQZHFYjX1GkmyogLbrN/DxcjajKW2rp+L2G\nm6JXsLCpUVP7bOD9xd0YYtSL+B6JRrEInY9qDw3j7O/CzctBxzWZ3K70KR79\nZpZL8qFLz3DQk+DE2LRPsIx7RDkAqYRUNXWuC5wTIlQEAg/cIQgOSbXMW2FL\nmAKkQXbs8NfNofQuK2Y07dBWE8QsKmfPQOKq8E+Ike+XCPXwTbKSyT+yBhcj\ncE25OTmVdceezbMpauajRb3Tlu2Uam2BKmHgvOjY0HGhPH7ajYiu7ON4mGBQ\nYotZ\r\n=bVUK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBF69m9dTvXHzjXaZplJIun2sVJWgmkdAy1AVBC8EiNQAiEAqbs9F/f9FeVXQTonX17bie2QljWGHnInmhu0NQFUIfE="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.5a76e33.0_1586827144793_0.5888493934036028"},"_hasShrinkwrap":false},"0.0.0-canary.8de64d7.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.8de64d7.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.8de64d7.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.8de64d7.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.8de64d7.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.8de64d7.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-TwHhwl0JdkwRoEFULiEKfmatreLexeDqFkBvXWIaEZcoHfWhmA4+6+YHZpt2oak3CANX9mAVR3fGPBpBvCySTg==","shasum":"f4aac1de37d7d3b1f392c21127fc801a46fb98c5","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.8de64d7.0.tgz","fileCount":9,"unpackedSize":19688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJelhRKCRA9TVsSAnZWagAA2uMP/2c92ge8/oLWluXAIS76\nVNjkVv0CAJfdO+q0XF38+CexCdV65JQM+dFrlEh8GVx5QJl020z8cQjiVm8X\nqwkKyRwwn6U6VUmurBdE9aO4DgzjsC6nouunk7DSankdK+H9A1jEsgyZTSLd\n+sgNCwNl0w3CiTLD5vT2yqfkg2LOn3XLmMOmK+j78MINpq4IzH+PQP+xzENP\n6J5mUSigi080KF//AHqmPVr+7PMoOrpyeI86OBLffacGpHL0WeiCdej/cBE5\n0fPFduj5C2sJGYDWA6g83JXLKoA3GWaVevM1zXsJssrUbyQCrdwznwOREwxX\nBXdCc8tj8ufP3AxA7KbPi0GWfRde4C50RVrlzTDK5O9hdk9SNyuoea+FQk9i\nShP6MRO3dYt1tCnMu3pk5lJGQk60+XjA/rrJJZzaZUpqA7GWSjRv24jHC0aj\nW0nyoJAhCiEmJ6S8n7TleKoPL+u6iWXB1XeNyhJqyAiIaJwxCUXZSFfJyKKe\ngPpPxIAEThJa9As8aBraEuyPpVonYUBjt4aF1UgaMJLJYk8k15viGrbHDE6s\nLxviiLOTa2FeC+4a5uGfczrOxUgMFYM2JI+rDPDEj6QELSbIwWcG6vhn4Hq5\nj+FlrlWsCT8+/vL1DBKlJoTbLTk6t8+VomsTf9Mt1Mkm0ZRPVocLEJnPt8rt\nrvq+\r\n=I7q9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCqaPwhaZYGdm3BpMzPiQel3yTBivRC7ji07l8lIrmcHgIhAKsogGubvD+hw+nfbZEc2gan+mtwQhPZ//j15shjlP99"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.8de64d7.0_1586893897803_0.5236142746161336"},"_hasShrinkwrap":false},"0.0.0-canary.d9ad58b.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.d9ad58b.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.d9ad58b.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.d9ad58b.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.d9ad58b.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.d9ad58b.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-OKeId5A5NExbea6D2XLYjEm7kgApGCl+wGnvBjdH8JoFBP6K2c5CDToBONmhidxmJ3EPgIAXvBdWyU6zGnR/rA==","shasum":"12f366d295437eae440f740f4106feb203b5cc36","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.d9ad58b.0.tgz","fileCount":9,"unpackedSize":19688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJelqssCRA9TVsSAnZWagAA0tMP/2t/bweDDXdLS+q4dktm\nkFX5psTfMT3+RiCcQ8doop9G7nYEw66Q6q3098nZ4BKXr8VpwQXYJ/2XFUaL\n1SELOpqs6hHHMWnj5sxInYY68trLKKrugwkp8YPBr/jjcg65oRIMF2DA03oV\nIUqv9svrbN6oPdvJHi7JVBYtFTyKtfZIo89EefWZ2/HY1uB48hqvjGjjS4F9\nYg0vacqAB+djtjCNy4fSjljLcDP0/EqZhsmSeadL/CSZ8Tr0iJTDFVaRXYd+\nJntK9FsJ3AH8f+cFvuzfuYPP6L6GiU8y1bxccK5Lr7c5M/kSzhRTEz2mcw4a\nZDXqc8duttDv87JZdkt35LjfOFrsaIS6bhRL2TMqiaVcc4S0N0cEcJkxjv9o\n2Ffb17v9fPXTMZEtdggpz+fH974v7ZeAVvs4mlVttG/oLoD3qDNUuCuyBEkB\n+MzIIWGJQuUj1hJRokACRpQpFsbYZLYgo8C7A6SOgk6pHjksG45W5JkHKgop\nBov3cCdl0MWoVGMVlDGrqszE90yGxEIWqZKgBTM/7vy86FMLSI09xz/y6Dq5\nRhVUbvlKhyeFb1OqZtvrUBz0C+YseHS6V6IUZ3eu16tTh0sX/FhlAR9PdIUe\nEdy39CYRPw66s6tGBMSfA2zxnTA15sfYQB7QbKFwXMOrf8gZEO1wilXD9XJ8\nLanj\r\n=peTH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIENjMEHOcq2N9WBMOAh57ntYLIpVtEbGm4IVuC4S4FI0AiEAvqjrQZHe2dbYKIfQsMX9f+UBFeXOTjJWCI40q6QXHcU="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.d9ad58b.0_1586932524544_0.5506204510107278"},"_hasShrinkwrap":false},"0.0.0-canary.9049f58.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.9049f58.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.9049f58.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.9049f58.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.9049f58.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.9049f58.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-6OYJOVeTsfQtr2Uay30jIBvjcCZiaxtiNCeKUhB7EmaMc7CtW3WgBEbA2Yb/vdWmPLX2dq4DO8aEcmjRAmWYmw==","shasum":"10580b285bf6ad52e4f64ac31a2b0bd8b5eb15e8","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.9049f58.0.tgz","fileCount":9,"unpackedSize":19688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJel9xSCRA9TVsSAnZWagAAN0QP/2IUTQ8k2vWaQLEYj0kD\n9MK/Z3Ok0mmbbVwhKz34wJRqAp6YwGaBL2jezrVYelNUib1zXN4aXQQ4KnyR\nW2y5Cmaj4qlKxr8/mTq2VOC+RssDtLl5ZuuBidMPzbHvUVRhmyQiQBCxVo4y\nqf3SFaPwv8DI/rPx8odi75kq0Tx0nE4ig7BxhdDm0cBT6yRYV9Ki8tCGbooe\nTLe6bOeGGSzmL/aGFHrn31DhVGYKWcHiI/CZMzrrtO2u0gmrNF9A2LivHPNM\nsRd8nqaLLx4h0w39HzNAYTQe35tjnttCI6tmmwbSBYOG9lqkCL+215arN4wo\ngLQqNnSxKXwE/d/eCAWGU24sVTUvrPqkwsdSOgdFKBtoRIeasp4imNVImN/k\nyI+YvZ9rjSeJ1ITo1MiANwOObWAClPgXgIC0rfys1BI+fhVjJiKUoR6zP1fz\n9+f7u4L5dcf9NpM/SW2xUHcMGKzMy45dOxnzHPJqV+lsvmxTbYjqH669Rl+8\nrd2+4Lb/ZyMDuAPx/5uIyWnRL6cgRJfpkw3/yzmLRL4GfdOourfp8Z1P1N3o\nbiIcUdnAj2yHT+SAIPcxvFe/25PR6kdmhmSyxacx8t/yMkXSY5AskieQEgag\nd12ganpahdpFPyu10v0kCNJMcA0F4KKlWR6mNfpOUk3vhfuhTrafiCCYWMnK\neRCW\r\n=MmtW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC5wJsPZ4dF4UprnXGG1Xl4h7FYoRgwkyPd3RnlxvgOwwIhAKDqJd9PA1ru5SWZUJPBCE+tADdbDymkF+FPYqzFnhy5"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.9049f58.0_1587010641704_0.07672088074972905"},"_hasShrinkwrap":false},"0.0.0-canary.1f389e4.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.1f389e4.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.1f389e4.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.1f389e4.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.1f389e4.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.1f389e4.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-bJmNExzaF8duUvTVMoBMErNGqikfNBBdAAx0l9FMgQ0PK+9ogXnBrINVVS8BaXxBiHbzuCYKHS1gt+2fAuEG2A==","shasum":"1698c924e4d0ae4d46c263fa1173fd6efc870882","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.1f389e4.0.tgz","fileCount":9,"unpackedSize":19688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJemJfmCRA9TVsSAnZWagAAgmwP/2sJRZEXaoJO43PDK5+W\nfCXu6ArRfmU49jkuvm/5slGmVyjuPYR/JMNf9k7L3VCOj8V0TOmdggEaHM9d\nWz3ncZYbXS5pKlbcNXiSeAhBfK+BW3uecXuYfsZTQckbkiWf6ibx62hEaWIO\nXWdpuhbLRRdUZn/w3P5WLnEGxZdWueyThnETggZNd1zqXbVcbJZFPbVVkL1m\nwumgKNMfUUGNsPT8RjaX8LOpXnEzHU93EZHd+HSY5VvTlpVT6SZhkCmX/Q3G\n/dA27I1HBzHKLlB+n5nv5IA1vubIbMrBxiwQoddkCbYvg706X2QVgiITD1XD\nJj3FNA53ndUuYOHlRyi9uweW4KpCLju8cdUwe/pmX1K6L/aKzP1QA/PLErA1\nsuQKxV33xmhP6ImaMJkQZ9yFJNDbeYiepfedTd7IwwQ6VWKsrOwJSDuKXozW\nRKIFPAe/Zgft0dMPZzOqp1FYZ3ui4eSU6h6aEULZ6lWtW1xP6c3EpLHt4xOj\nTiQjCejhSJRH3vvUmEyQI9LJUp4SZMTWX91yEdcoBldjnSy1vnCd1rVG0zjr\nP36Avd3IGRicc8ey/eP3U0jDxDVaH/s3iVe38BV1tXJLyGUl3qy/BOkY3s1k\nds4Jt/D6IajHQDpuifxPyDDVDJx7C5s5fBPE0IRgkMHWW5Zl8u4it69ve6Eg\nlWMP\r\n=cv7k\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEQ+uipcbdP4iduDaCOxicGzXlvoqVzRHcQ+8VOOinh8AiApewWRfTYt7EVf9WXGzCX+zaEH8eX5yLXO3VECPD+FAw=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.1f389e4.0_1587058661994_0.03297520114571251"},"_hasShrinkwrap":false},"0.0.0-canary.952803d.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.952803d.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.952803d.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.952803d.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.952803d.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.952803d.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-MInxzJWh8zPOHEQh1pe7myAQgBxQc+L4arGPXcB3NFSRuNf0QSEXwqVv809DvkIku9N9wxGUzM/XKi64AK4pNA==","shasum":"79aa581f3f846dd69d4741cbccd49ed4f15090c3","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.952803d.0.tgz","fileCount":9,"unpackedSize":19688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJemKzjCRA9TVsSAnZWagAAy3cP+QGUxUjHXta1XkCUhewj\nXrEQySRgdudpDAkPtxJtP3KLEIl89K/hb4yh0L+E4fT4pySYXZpp7STNqu2f\nKSIrnB2PVIQ9B7dvG8wU9dcPYCGBnuK8i4B71N2chdzOziFlpZu8PaGiw6zf\nbYz9tk9fRXM9Z8EA7EiWQssC3MPHQvRPvB99Y9/Gm76VDPtMwX3hKej8Ci0Y\nl2qfTMcBD37IynsCWwoTW/W7rUqO7adbHFagC+Wfjl3Uf51KHMxanPQ2siKF\n1jlOzq5x05Fqi5h1+KaROfSpYYCdddKGBbc9J9Uz4rGMbLj8q0DXmfW2gbmQ\nWVdK7MqGgw/2C0dp3IOWKP5GRsrg18yLmLjabtz+wwubB7REMFWaScrmDDWR\np9xb2rQg/huse/jZhO13hwhr3fJbxPaqTOeXOF2PJyxgZsKQjjmsjbl+s0vA\npMeG7Rgf/Pggpnb8AAy04cutkrey3FV/PP07PlWlnxVC9+0+1OXbFrlN6z00\ncCqNR61L27uiW/wY4MGO2SPVI2uPhBz9An2RPaDIhTWG9Qm9gAuQQOpTxOnL\n53XeeiXzymK8mIL4/iApAYDcrDV+xANfrM9WxIRkzwbe0brnDRd/E+uHCUG+\njvUEIseyceOQJSKeUm+O7wXv6SsgjNy4U21giMA1wc7541udDznZhJCofWPS\n4/Ga\r\n=jeF8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHSumWlr6AV3+dO8idspAu0TaPVDulNwYZ2dWmpM8Bq+AiEAn4dz/L1WylejA8VtiktPMqCeLP2vl5q3nz/HBUxOzp0="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.952803d.0_1587064034701_0.083444738218307"},"_hasShrinkwrap":false},"0.0.0-canary.0813b9b.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.0813b9b.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.0813b9b.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.0813b9b.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.0813b9b.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.0813b9b.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-CTw4NM3pH7iBSL74NQ/sIzoHTKHzb+uCy6cRJFzNV2tw+ElqvgqZnU+xoEU60cOdy6y8Iq3G8Eeuh3sU7g/00g==","shasum":"b6973366c84c098207c05664b0ea318b2ae45b61","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.0813b9b.0.tgz","fileCount":9,"unpackedSize":19688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJemkWvCRA9TVsSAnZWagAAWBUP+wSZd4JOc+lxGwQ/7Wjh\nuEd1QDwJyR1+/bo7d1WVK1cK+eRFmtL1c5I0+0d+RFq58BM3GUNC0+Nf/sja\nQ2twOHNkkkbP4lu+DQCHQUgJngJg03ds7374ICgujsQKp+mDP47KYK0kDG/t\nzF1nnWUt4PiKCwUQ/GmQ46PjpDzhqGKfX4j7NS4Y8uCYaIOOZZX4tjPAywj2\ncAk7lU3LsVnKGLdy0zyZthTyKAtYO5gz47gKfAfH6A6mP8j06J3hAiUdyUuC\n0QTsNWNEJ9uRSyiebX1vfEA/TjhsDbQLyP16DxbTK5bcagVTMYNa916G9jYI\nM1eJ0B8dzcrdvilVyeMJMmpEwy9bRSxyBxNWqB6u18OG35vD1Q2LDRNXcUb/\n6cGZflIKfnW38Y7svp8CoLFkRRKPZV9p0m957hxGzcqzM+cKYeHHdzAFAhrT\nr3UNpzQxjLq9S6NlgSJfa5pPk5cyPoR+cpiNV5xgX1arDjKzKikN2M+Mwg5h\num3fO942pO7pvHCFsLW6SB4kqt1Fb7dbp0eSYgmhi2pJ8zsUgtRXI55mm6cX\ngv+Ifwi19DWsmIOactoV+3gcUIlT1molS2JM8667XkDTKDXE6isdxFGVNLjT\nPsFGOOP2sxP4m+WRyejPNXyaOulhnZIUISqHIcZHDI6oh9YhjmaP3LSKo4zp\nSIr3\r\n=SAmv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDuLtWz1Zm/32qovUeNTTggaM7HgPZOWx7p/bd9NCvPEAiBOGLG8wmx+I2SI9d7/wMWC6Vs4ixsrB/F9XRxtX+alrA=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.0813b9b.0_1587168686833_0.5965623712293189"},"_hasShrinkwrap":false},"0.0.0-canary.0cd5338.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.0cd5338.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.0cd5338.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.0cd5338.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.0cd5338.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.0cd5338.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-JHfCma2BxWLLRa4YVl8/gYoChf/FWz+H+KjOIAwUUothNBL/IWEw7n9skkUBN7L0RHzim+80zPrq4GPkX9ZGSw==","shasum":"f4f07c998038657190fd0e617a24ebba2cfd84f1","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.0cd5338.0.tgz","fileCount":9,"unpackedSize":19688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJenhiFCRA9TVsSAnZWagAAgyMQAIN3Vv4yY3SyX/TR4lz/\nrEfr6wz3qgbg1k11onEEXSJUH3DKG5mK1Kgyv9Vu1nHUddHhqQaf85HFfgyS\nyYbvagxRR9oJfO/0LIZWC0AR3kNLovCi3QtkMTj+Jf3OSS3lyNiqT5IXhkn/\nO8VtdOAaqgZAYKWuc+rPa/wuOgYpUX4siQqs82iDqg7PTFa4Q2EbUbGc1aw/\nTf9GzShrtx12T98u6ac1PmQui2GNCSzaGaTSuC0l7W+E5dQ04Xk8NkouON3D\n7PW/uLCl8+AZqspsnfPnl9KVK7f9hjQMi+uJwiZUqqUw+rThp+PTDbVEwZa0\nVgLmajwd/Do/w17w7v37S3wixuG3LPpTEL+a5+fZBh/CGWt5IUK4BKHOt1GS\njyRrUGsMSQAm5CkvyhMqGSyF1our2dMVasoXovl42CPx/TntH6KngtKDA3Xk\nttItEyaGH9KxRgnoRPKA0k5oIvNUJ9RJ//S0fU4E3mV8zHsloRZQ7uNDRfKS\nODAv3pEWbd9J0FnVY8B+DSdEzJMGVxbRna/qDx9Rrx3aOExFUG1jcp+U1sar\nayEQJpMd5eEGwbzPLAn1qqGBMovJR3rA3OjxIuK2sCd9EFh28GwVLHCPFV1v\nBhIExNvNWLpEgYaVn4LjErzPCFsDUI3EqNatTWm3Eg4ZXE7yKcMSEy9iwIhj\nh6cD\r\n=FDtW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIERkO3m3ooXY9rSfVwIbCEKw5N3ZngM+i+wu14w+HCFAAiEA7Qz4Ya7HuiKMPxTR0vpaAn2wSEThTSxH+iKCSyWYUJ0="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.0cd5338.0_1587419268973_0.460172613939795"},"_hasShrinkwrap":false},"0.0.0-canary.e8742f5.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.e8742f5.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.e8742f5.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.e8742f5.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.e8742f5.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.e8742f5.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-q3Fl7iXCKNY8wSgZlJVDDq10/3OfToleL8efk2DBdpZVR8BqKfnuI5nwjc2ggdhrfUTtA4fFRcoA5BONQ7QtOQ==","shasum":"2bb5f49f85120e98ab82b64a198da164bd37ec27","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.e8742f5.0.tgz","fileCount":9,"unpackedSize":19688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJenidvCRA9TVsSAnZWagAAGCEQAIrsp2h/oijQNfXEeiK6\nt371dmzlMQY3rbOUSTP5bkKBQGGkUFOhusJ17OGB4bHwdArtF1Wae78wyt+6\nDUJgJnw+bGB/GMoLem1yF30Ze1vYxWvWvia3WcnbwV6Aa2oKbjfBjXR6jR9g\n9yQW95IM8otZ4Nn3GskQRcxGYYrqUcmWEi7292rT6wW6IiUQ3WrlDXTarUgR\na+CwppUEd/7iBx7lULuJV7iBx2N+sM14GySDYfx7aN1W+0bn4s7yrFbiAs0g\neksQy1tWfUGxZEIUbGkO7pLvBRBi9fqOKB4bLs6Vd6qsYAzaYiXFjkGJc+XS\ntvJ1ZvArWvyH1+EAQAiGiWRsh4kXRnJHEZY8XP4CGz//dwU27ZJggVjis8HD\n/9bxwAZ0Ug/PTkXsPr9s1tVpeH3qPb3OE9NiXYSWqyBgaylPehhPDf1gzZWk\nx+OWJxfN6Ea8vyg4+3bpem5JgIegrNBdjEptMwUjnt526KxJs115Rulh3JRj\ntrHx8NzVVueh7C7yJNLiKQhdz/URcKn9ybJFHz1DzcXZQOsY5cQ90ev8nh+n\nzAKMBLiGTMzPwIwhPOrP89VbNw5ZANe308aqaqR4VKHD6svMZQUo72c8N9yx\n1ZC4HY2j9whihmamZpaYz4Ed8NpI+igogMr42eFw5Pqbqter0/qsrPItauv4\nQ70p\r\n=DdUK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAebXkyuxvwEhTvcV4Zq4tmp1EWoY7f90m0VNqNZu373AiEAml/3YTe0zri05M/yuSt1C3PdG1nuzvV9JMJaDq5la5w="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.e8742f5.0_1587423086772_0.8461679059772789"},"_hasShrinkwrap":false},"0.0.0-canary.e794932.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.e794932.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.e794932.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.e794932.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.e794932.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.e794932.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-OP6+vk005FZeKt90arh0920gW9tZItpqwPbJ5SlTb/qCQzHzxw9frRMYCylf3qsfvLiCYHHtk926jlGywotXSw==","shasum":"bd366cc6764fe05b0b60a7d179928b55edc1e6a4","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.e794932.0.tgz","fileCount":9,"unpackedSize":19688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJenigICRA9TVsSAnZWagAAjc8P/0r+uxkTg5vV/1EJCj6s\nj37FFj5tw0m5TThggoQZBDwHUW5ywTnWrqDSTXWT3JDGQp1jXN2x+iI3MlWW\nPT0ll7ewwuUu1Yp10Kqe2Rn5JXM7/2XhwjHYop6HZSwAvgPLgTRBMtD6tQkz\ncZEezzRzfbWN1jSKmq3eJhI7og6HSZkchM1PdFPk2pFS51K/SeeIUWkYwEIF\nQJdoKFlI21a2QgZyZ7iBTZBn5AeQKraq4lwpDebZpVs8QvgYgqu4hCSq905X\nYK111bW8IDXF/+Y0XwW7+bVhNopDIV2ek5BoBum0zUaSPy4NIQvzP9sK1rrE\nZAahTYhdk8Ha8AfJrB6IZ0wATxL2xkqIX0O5os73KziE7EpkuBXyYW94N/of\nnz1LoXuw+jMaYVK9PbFnPmgfTARNvDziV54PYuht/ykNuGB/hCA9ib2/4CND\nPYzL8v/CRg+UbSTBuiHSYXMbviWVidaBZPyKKZ88hNLJspxb3IYQ3QP4yH0w\n4YR34LLXDCcsJDjl/Py2T1npxXDMRDhku62AtWt8i6bYvsGkucTGD8T6I9Xp\nE0esbyTGXgaH+IGqiT/B4w2tmkiSYDPXKR2bR3lY9omVjxRVML73zgT/phQO\nx93b7d2W0dOUpC172ayvCopDpVqauJhfZVFlGYc/DhXaN/s7MgU8WPl5Csol\nTKFf\r\n=s9jG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC/vBTwjYQA3k76x9lh1Z/YYLX4kJM2u2Cbs/cSMJZOKgIhAOCD1F2gfTwNz4/5VmipwsuofD70vZ9t8s7dD7iODWxy"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.e794932.0_1587423239610_0.1191712054136449"},"_hasShrinkwrap":false},"0.0.0-canary.e8742f5.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.e8742f5.1","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.e8742f5.1","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.e8742f5.1"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.e8742f5.1.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.e8742f5.1","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-i4hkwHoTIiojdQREQLAaxMp0z7ADnPB7kKMWQTzkQE3PmZH7PIc9wZjadhqZhTkMo22cLZz0MfxjvD32m79qwg==","shasum":"b5a0e4591a27368f5d4cf88ce278f97e413f700f","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.e8742f5.1.tgz","fileCount":9,"unpackedSize":19688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJenijZCRA9TVsSAnZWagAAfeEP/2APd7oCv8u5RDZapO7u\nZ+pE1BHBWfdPylSQbDf0q+ngjyiCqZLw4s7o1aBcBJAatk7FFfGmxW7aDI59\n8Xzadjmm51vSES5suRdbEVvqlK39QA6YrsQ8acRFOFpX+E2dUhvgGzEHmHA/\nizmerGGItpXOqfgLQknVHenR5D0a0YEybfB2og3hF7+cSioPhD4+tqvqScJx\nqFZDWWAfOVIkHGTxQsxMQ8HnolXKbN9WXqeZFd471DhGtP7dw5yUqRqqHSC3\nJd2GBNmVINHUGaWYwZmoG44W6gFxP5lV4eX6L33h9E/GWmf39uFacitP9ZTk\ns8wbjycIhRwkr1pelSqk8TiKXckqkSJAuFaIMv0xhC6HXzVn8lyiuPWYqYGd\ncvFAmNIVwTX/sktZYhtaFItVWq38W6uzgrezFr2V1RI0/Ig8WGhEiOEFltBW\nVPsHZcLAEaKGvPQTdbTAqGPcjFj/hRvhQon4XSQ9oCdnHhOqw3ODAnMvwZDO\nploVhlId9f2hrIv9oh+spdpr5AuwYP9IwKlUNUHA8Bl5YCtC1ssJeBCH6vdG\neK4AndwMMMtkEMkJT5ipCgeXBNghgLaOoqx1N4hrTNfQupNzV8Fuc6G5W+AU\nLEwnQnWqtl1yCvoo679lV2j6uQaQDSHnEojkIoY4en1jpVcXDJ39hBhkLWNF\nhbil\r\n=KzG8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAqBLNHwc717s5fWX+6wfMGpg14UAJSYh3bXkMZ363EmAiEA8n9+F7uKCZvKAC94RAkvVFldZ1EvB8Qm4vKRwDKONG8="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.e8742f5.1_1587423449404_0.5355900463716805"},"_hasShrinkwrap":false},"0.0.0-canary.7debfaa.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.7debfaa.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.7debfaa.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.7debfaa.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.7debfaa.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.7debfaa.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-vQ3VGfIFGBEPtJ66WOSeEY4k7prwavE/9OkchsWvfpe4FtzmFRpclG2kpOemYUMt0L8/o1opU8y0OYHMKeed9g==","shasum":"1eedd7b495fa94422fa0ae02637f88d7b0cd43ef","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.7debfaa.0.tgz","fileCount":9,"unpackedSize":19688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJenjWCCRA9TVsSAnZWagAAwuQP/js9xSpgyDdK6ukQ7KH3\n4U7TfHBqoL0+gukDJsfo5P2xRMVW3anxLXlmRCizKwrWlvNJUYQir9I7pjkJ\nW/6kef1UO1P2l1vqEz4EVlg9bfaxSmoIxEgbFFEcx0pAWzZ0TUMUsSuRXJHE\n8QJwXQc5XztOj4J1K8PKqLWLHeuqOdGFedQzpHecroUNSyCVKipsw44Cx+Nf\nBNhZH6lToIK3/ndR/ck2PoSB3g+BS7thtaVcKp/g/ppidykXlsuVOFYxqHfE\ntThCMAGsBfNO54KGplrk9KoaDexpvmeK2xwzkc1kNgC6x5yV6X4gu+laJHTX\n18VfvK//B2CTt2Abn+C3aNvqdgiq4nK89/yqhzIQ9YEAjj+fk/Tq0ppf20iC\nEwoH9bgPaxti315y1W1vYVqIUHBX6MzrmrZz2XK3vrsYdx2HuefVvu4chejH\n06jSG3HCBGGAB+CM0rv+UIhTWqa7nKiJHuJjfPi5+/R08KCwbcDHzrVoyie8\n/TbI4bzWDT+Jk61mkkojkmEzp6K7CVl4MkLkzQSAk6tvyhrTWhMdGi34kHqj\nJO736Yt2HR+KrqaR0bufelm88opryupIYvmsl/nYpmrmpE43kXTQxhtkqY15\neX92NL2R6XWqWgEv/mjpPPEaOFTRQt43AfcwvMpOAcLtUkJ9su0m02rqX9sD\nufco\r\n=YcFo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCG1YPBJk27SwinzwbbI5rQV7G19wYef9NCRSIk54F8QAIgZh43pZc1cKS6T5hs5pLfFGaSaPBfWDypchxEXHhxNJs="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.7debfaa.0_1587426689898_0.5351377348524782"},"_hasShrinkwrap":false},"0.0.0-canary.840675c.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.840675c.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.840675c.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.840675c.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.840675c.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.840675c.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-NCAhZeRQgJBkHfZ+lvvmL1RqR6jxn2t1MZhCcke+RPpVENJCOe2X9mxykXPuiH+thmNcA72R0gJ8BOZehbazYA==","shasum":"266c32d82b93f1696cb3005223b6431d8edafa61","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.840675c.0.tgz","fileCount":9,"unpackedSize":19688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJenlT2CRA9TVsSAnZWagAAMToP/jpvNVkzNTHd2IzVAd9U\nbW/wWYK0GySqWnuk4LniBzy2azMuBSxJuOYMQ1QJEi4BFqsmdTrfE2eLCtY8\npokOhboESoLE6tFeSOg6wuDWKS67AyUlzh21k54Svx8lEAL0GkqH8u1NgbvJ\nGOz8krVBvhYqLNAbRoBG3ASexIlY+LJtsqorAWJ1IaIUuohAphEBlJztW0Q7\nnMi1TfbVYsGUv1wS0H2j3dFLLxvsqBLbJcc8ZciGoe8tYqAgOi5saKSkCidB\nO6fWDuAE8NOFJvd3EyGxDx676h63PV/Z2mrHzyoLrUAgJxPT/AqOU/D8UFr1\nk9jKQBTTTFOomTkqd5SuOE0+euyO4nPiy2qzbtzmhQdlK18456EwEJ5iEnss\nGLMe378+PTGOUFhjRM3ukfAUYwUxO1WvQ8zB98ngFJuc6FxZo+Pr3T5fqS/i\njQLllJedFAkRiGUQ1SaY1/h/tmeO/xORn6m/lVAgIwM+5IhYXtTYX8RC79j3\nAYuPDNiNzYO3QpQ/oasDCX4lbk0U7sY3EdQyTQNKSeK+AHNJ46ggo3rIFA9N\nHXdDzBOtAh4PYqjGD1Ydio7tGZg3b7D+k0dslI7o7Dp8fQnlrY8IRc36g+GP\nfePppapTbBvWvJ/vNXxvZvceIIF81Vt/9VF+Vw+gBKfatfg0a6G9V2rLE7nH\ncMVL\r\n=88Xr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCq51TxuRXeBUir8mN90H3VRw5peS3ALWKgNdjclRYJmwIhAIAysiyz3xrDbFze5777h78ddREE6tRiOReOPkOutwAl"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.840675c.0_1587434742266_0.041745838435585325"},"_hasShrinkwrap":false},"0.0.0-canary.a3a7eac.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.a3a7eac.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.a3a7eac.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.a3a7eac.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.a3a7eac.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.a3a7eac.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-1/GzUyZBHL4I/aahfBEiUxl6m6bOIr2ir2yp/mtgKTRRTNs0hEMEcJekyphqCVc17dVE4BcWxROdeTNhTHP3cQ==","shasum":"4d09faf2bf2917dcaa8433d72471fa0429f49e89","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.a3a7eac.0.tgz","fileCount":9,"unpackedSize":19688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJenylGCRA9TVsSAnZWagAARewQAIYKAULVTqQurolxMa4d\n1neXhm8aHNpYasj7UXWSiUmpIJdbBtC/fkflxYH3UFOHg0NrOlXytAOzXGn+\nXwuqF/VhHtN4J1TlqZNK+W0W/e8bolGPTtPkNYWqeoWnhI24ew765ByTSs4j\np367b18RzKkYwuWGtrPOJcdxMDQ5nx00932GHP8AI2BPclqoUGj5CEfrsnA3\nNUKZLVc4YStRTNF9+7I7dJEbf7j5B2h8gHUtaIAlRj1tj/WIu9MYGMkdiPVp\nEyj84muN8+Tw56QpehfEQlHgY0CIV4pqVi0Mq/2rmdIRtK9K06625BDqYl2W\njn3g230eNstIOfuh2FrlrOiHKF11/aUfexj3cqJJ5bcZa8H/oSNxNEatLsMt\nuA0QKHHuL7yJq7+QyOhwx8alkjmgJznFUUAyGsOfBGpmy0uCfSulCUb72Msh\n9IhFqf3d8igteFtQ/rh6XhLpjCb8Omj0TqEkYladyBIHYTCWu9Yd2+DgKoIR\nwAfZ3SfV47Sjxx7AgPH4iQ2vDL//1UtaAl9dYp82HVXQ/K16il3aCsfW856w\nfTNht4zT9Jb6q86VWNQuF3IeYC2cUvjOvKAa7am2lSO9ZIvLybe+0JOvSVTT\nXJtdsNjEGc4CjIdaWVWYV01Wer4vPL8o2vW9mHRP45UzrrL1M5LJpgT3wiH6\nQlp9\r\n=890E\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDdWbv29NpCcJYlHiLq8JPlnA6ybhkeKRMIBOT5kqrsbAIgc1KKaTFOvli99RtisdBCZoS5i4t1Tn6Jf1O98ux5L48="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.a3a7eac.0_1587489093807_0.7688338433366027"},"_hasShrinkwrap":false},"0.0.0-canary.f69e6b0.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.f69e6b0.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.f69e6b0.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.f69e6b0.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.f69e6b0.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.f69e6b0.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-DUpW2H+Z3UMMgQncjP/7hRLitp/VBCX5DWmlvbP0qEyOlHZ24ZAdHJRPwAfVndImtkBu7VW5fQY2EuNBkwqVtA==","shasum":"894a4e6b2c63f0f778dd969693a966e5974ec745","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.f69e6b0.0.tgz","fileCount":9,"unpackedSize":19688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeoI/jCRA9TVsSAnZWagAAv+oQAJmNSsb2p9g/MFTmdH5b\ne6xN3/n0ipHyGr3jr6M5oeeNIan1y9+OhugHKfGGSLliuDF141TzQipXu7zn\nHz67nu6PzBTBjiPnNJCI2OygFRiRsnXVCshcIjrpV8r50AjaViHfd0G2xozr\nAmFSGCKFFXaiHVjr1gNNvDdY0VQcpBTeqt98Cf56EELlF2mlAhA07BCqvpeD\nR4V7YzH+UKEc4lY7JpJeCVoSO32fKX0AIgJq3xFCV8Scus5PSfX9PsvvcsMB\n3FuHF6KZV1IwehjcnSnSIMur7OlFlNgucIXU5yB8ViDaLGAZ5g/lQdsTtikc\nHlTKoRYyqWERZhnT0W74Fffu23zJL9cv94H1wp4WxdmgWi5Is4dwY5mBkHhT\n+GX8otB0Km+kfqMWpYIK2vU7dLvWG7p5zt8QbYrnrblRh0vGStQrj/zj0Tul\nluAkZZxVMSU5YV9JjkDCf8FgO4a2iT97zV7SlosjIqhi0IvRlHwwvHa6llya\nm4OLCScheI64dV8CJCxiVX4duVhw+qwrCCUqLHlr0GoBbK7sjlcKcyPl18sW\no8769Wj7H9ei/RHGZOrafwOY+ecmQwE1QUJKJzs9HwbPJeGsg5NB9jduIVEb\nNBOUKPrXT9K9sNbC8rVNvmMkalftdI5LXVogUSygwI7aG8dc/TaSSVQEA0yq\nj+x+\r\n=Hlnq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCiw2/AlQlLXRtkWVCdhT+0nivHndgHy+aLuTgDdl/JSwIhANtIMuQ05P9nCxHea4DTh6g4doCf8BEsGz+KT/RsQ+u0"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.f69e6b0.0_1587580899123_0.07361676240113524"},"_hasShrinkwrap":false},"0.0.0-canary.1850336.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.1850336.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.1850336.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.1850336.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.1850336.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.1850336.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-0P7cyWcPDkC/BRMRPAd0P+ds2Qod2Tb2o4LIwAtcs96ZLWs5QBq8+f3RizOyL8YbMr7BUG7DELFxdD9g2HYkjQ==","shasum":"67b30d7ab3e9751953532bcedb9a81ca8b2ea66e","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.1850336.0.tgz","fileCount":9,"unpackedSize":19688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeoMD5CRA9TVsSAnZWagAALuwQAJdvXvZ/iQNzzSjPmcvD\nkYqJeOIoSmqyMiMsLXuYaFmsiIQiLA5NUD/xmYKkfXX+lUfYZ8QXSubs89m8\nE99UDIovaG0+4d75zU0xJ59lXoI20HVRLl8wmQblcEralQFZvRl4vCHJTDc3\njuNOpa8H+0C+u+AC5fIN9WmBuk0CpZijX8sPi6o0XDg+Z5MZTaDuiY3L5y/Y\nnRY7La0w4XWh12JtIrnp5vAVwnDB+YWn2ZqGgePQhktpQrMnmHK8kP0OY6ER\nx9M461Z5ipccSgC9GEx3lh7iCYdIyzB6R/DeI6fIS5RXF4T8/gOOIQabEk9c\nfGQdgNUWPD4shwkrLTOX3ZGFQaghGNXTiQlZC4MIyW5CPp9qXGi/tOxPCRG8\nk+C6wRBa1o6PWuEZPJhv0w2Do/nMJVTWp1ALRIfv3W00Vn8q3F8U8DIJFYpU\noKeE8SN8hxyeEW48z7euO0KwBPrzudOT9JkvaF5/97jKMjkBaPEGcnrMWe+e\n6kUsRw2qwS52ZJlKuSZGVXENfRbXirlS9jlPaVO90i++VFy2hiG7YdDutvV8\nGxHAsbd7/PIiMjabV2fHFhBYxfNRWFZ3s5NhYo6MVotwvzuDlIR/zduzkubB\npR3dmqINBSjzLWwTeXR2qboeONAQ2E7KOvrETo9Fzu7CrtDaVc83CIkdEDC9\n6sJ4\r\n=ZTxF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDRTwk9Oh/mzDpv6Go+uw2mDdZOv+aHr/y+xUHYxIvi1QIhAL8GhNUL8b85mQ4dKCDA2RQXU0wX52CBV3d3LoPj2dgr"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.1850336.0_1587593465524_0.35519579422806613"},"_hasShrinkwrap":false},"0.0.0-canary.2dbdc73.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.2dbdc73.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.2dbdc73.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.2dbdc73.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.2dbdc73.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.2dbdc73.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-dPqt1nOC7rT2UcHZLKVGkNExx/TbmrFSnea5eod4fH++iGbm86DmbiiQRVOdaMO3v8BeoGS31cCDrFhq6vBVYA==","shasum":"e483e5439804e580ee9a818c42ab0e5c93e2a624","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.2dbdc73.0.tgz","fileCount":9,"unpackedSize":19688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeoOB2CRA9TVsSAnZWagAAvAMP/2+dxQU3EMBSlCfYtrr0\nEFYthoLEjN8zQBib5anDtco/1GfYBFUG4VuJUg37J46QPz2vy0MT3NuAIsBF\nWU81CKf/mFvkP/SR88IB3mEE1LL0v5RJFyxRx+0twOAc2mvWy0+fXeURRmD7\nv5whOO+wYbqqLGWxTpWlJuEFIZLrLLyMQ247GajI/8t1RpjuX/p9nyDFEdZ5\nVukDpVivNtJmeD84SZw5lYHPTcAb4O5+1vJOVbFutYL5TwPGpV7S5ApM9qi9\n5J4KnavUOhcu9a1Jsi6IxDSXU9nX5mQGB70lktjKHPsoH4lkf4aTVrbTGAKr\ndK3qJB0HSRR+UzdDO1CRQechYaGdrYnQUt3Ik5zXNy+HtOtg8+9lLP3TFVAy\nVFOVmUc+BK5YMRvSyPkDNd6QE0tyPqScqJ6v/o33H5ra25O1mIiBEuOJhipW\nFb9iDPWGeEvucBsBmoQRmQ7pw9zzZd3kz8/Lju8zEUtVHSVchZMCrT3lDf8z\nJmyZKu0FYaJ5+T9NJ+1m7u7HM8+svLG3Rv/eUShAuiRQcQMJQ0PmKrr5mTSK\n2/M4tKPRGZXwe9eyMhUU0hFqssSPpFQSObWyGIHAPOwddt/ezqCX+i06rZZH\nFNf7m0eRPhJSlUmYSavQKKGrSlFBbB8qYC+kTSmDT/Tu0ucgWLrxlcSXOd8q\nswGt\r\n=ElZa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHEK2AHJfuBljtCRpUPoSHvY/JJvkj/Ci2SMGCvGKBxgAiAOCEsfa2fgwW6B/TohGRRa1z9HmYyrLuZDOapC/WWMQw=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.2dbdc73.0_1587601526067_0.7655322976144303"},"_hasShrinkwrap":false},"0.0.0-canary.7379dad.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.7379dad.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.7379dad.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.7379dad.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.7379dad.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.7379dad.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-2f0IIwmqPtX/+kdfuYV8WWaJDQlikFKy31rnMEO3JXdBFCSTXquf4QZZBESVwxH6O0M3jG98BlQbba9YQ8Wr6g==","shasum":"e6152145985d2fe2edc2368e301f577c89fcca81","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.7379dad.0.tgz","fileCount":9,"unpackedSize":19688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeoOVaCRA9TVsSAnZWagAAB9EP/1wGusJBpDgzewjato1G\n/vrMTAAHPkW4fB/spqoRIbRRH+ufPB0Ey6gbuLe4AmlKN+GA2IRHTzKZ6Fmg\nrPw35ErIKq8nwm628xZiDknuOyJZuh4JHBaPL2HEzgl+FcMUIqkWUSLySY3E\nUrwqwjtuTTJBPO2Mp/9ar3KR9eK1YeEJHJUNCy6fMuiElS4rVa/fp2zMnCi7\nD8oRMiFZ4BbH5stbnCI+ii41V+ro54X3KHy2OTlYtFIaPGTqpKb2nAJXsUoO\nRh1EvJQmSSrmCwX4TDcV6oXmn1qsjgAAsalp+03uYYgRr4E+XQKVx0EX0DvF\nHHXCOccUmcadh6EUCbRQ/kTbSXh70hWZb56LDYIB6GnZMtiD6aL6D5hNBhfe\nShwxnS2HUXKE3reTcqKl3N7t4CbTPBJuY4anh9QFjdjD78Rqp61fgDUS4Oxc\nQelaOJ2XWGgEKCl4kyP+xDgcD/imEp43ItYJEPl4iAXuNqX6MzpgvAh89OXV\nvVnS7yFBZfzwu2QzTaLSCEVLGKviYxRh/fG+WxMfdQaqjFt9U4D3goNKA1eZ\nluUjDtQXqBINklWpZie1w6wAEFGKpPzM/oYYyIsLt9RLcVDE884hj8xXbZtK\nZH5qOZiVn0yPPFJBB+2VP56gH9H7QM9hmWBmeRqb5Q0jP3W0XTQFYGStgVhW\nFaU7\r\n=v1o4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDJZ+QTCB1dJwgvHvuU9MmxvM4fawd97cusfmmeORFanwIhAMudGyBrNy7KGv6+qI9FKOSSLG1BqTyOC7jVDsUhtq+c"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.7379dad.0_1587602777822_0.5387730896957121"},"_hasShrinkwrap":false},"0.0.0-canary.22b9ab8.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.22b9ab8.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.22b9ab8.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.22b9ab8.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.22b9ab8.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.22b9ab8.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-KHCC525XOeICeeCEk6MgAWTFU+aS/PO5oAHRIo8gbirUIaLP941zmH9Oe+P8ostjgt0fpHtMjhj6+znGO64LdA==","shasum":"2f1f7bea61b516591bb44b81613efca930fdb568","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.22b9ab8.0.tgz","fileCount":9,"unpackedSize":19688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeozyECRA9TVsSAnZWagAArGIP/0UijyRcV4EubXqfeJk0\n+Rp5xFJs/ujwP1aUrcOCXn4u/adjSkdP2GwjrLDjRNdeIwPPI2IkvsYeqKiw\namW9oKN85jTEQGbsqmJyTOFHy2v9dJtU7sRfllXoJHprm1stFHEzjIx32H+w\nN5+mqtom0QiRSRmYZpjeQDFVTWTepepdru9Kk+vzh5+h3wSwLp4h/3SNo/7l\nQO4PVKw06jR4x8MjZN53d4YANxLz2Bahg6nVQGolZdAL1lhh9Du/RiorpJgr\nUFvmYGeh3bBx05YWtiLajC0ORr5WxNRPx83T60pvHwRTBRZq2R3AQwccCiOt\ns9spgm529El4Ef0qv92pKFErQmiTANUkwp9scu08phUIJ9TlmJ4l2nj4cIaw\nZLmG6Ecm34sh7nXm/2CU+3/pT1clhI1jtfEUGt7CxYseF9xzo2YLyzIFQgC5\nam8a8sp47KiVE6ynzd0D77GHHAbPVkZ4fKVtYrjsE8h1BOJPT2D+PPyccRSG\ncZ0HGaLrI1EGe6KGegKaWDrrIgQNB9FlxaRxx9dYC0fC+asfq0HDNCof/Gnc\n/pJHwir+YgFpMsmbmUW40CNGCNTY8q4tdb27w7qapKRLrjWvWkd2/RDwwH/B\nFBPiMCIWFo/IVNCBySjesaUj3AkbH2Y9WFRWSxRFjVHtmJcl/zqIqmjKmyPA\n6ghI\r\n=y/ls\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD28OKrkif/Kvhr/gBhaGxu6i63AtuwajKEOfWcTq0T+QIgXm7aZhOBbYIujp3stM6T1cCXCSQ2twdi4EBFmglqFYE="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.22b9ab8.0_1587756164293_0.449713169091273"},"_hasShrinkwrap":false},"0.0.0-canary.69f59b4.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.69f59b4.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.69f59b4.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.69f59b4.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.69f59b4.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.69f59b4.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-KNkLKYK4C+PpIjUDER5D/bmkz53BD+gQYyBzHir4phxNZ77pYjxhvvGcHFTIfJG3yQ6PiMNb4hL7e2oKFBjMDw==","shasum":"201a1a5cd6f90b5cdeda29584c16091a9e98af1b","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.69f59b4.0.tgz","fileCount":9,"unpackedSize":19688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeo1K4CRA9TVsSAnZWagAArMsP/RrApxHw9DhzK1wFA/Af\n7Xh0vY5S94df0tbR7dLB2aq0I0E9oDI5X+83JbxmlNWWzp7cJylUFpW0qQM+\nZbSiaZWRpUCtEhGn3XgTsg8U/ebccrU5rPvx8ZGmMYLeSrgs59dcSfIhl55v\nBs3cfWCqrQKdhIPtSdw5cmw4qO7xgbMtfOVxQfcU29cvMeAjwiAFuE+Mgvmk\nf7qNqUuJ7lMBusdmKxQJWZbc4B/fxlgM22i84tRcx/iwNtPSkPdOpSYz1MoF\nhNssgxiSjIWdmPMv4IjDujjNneQPnjgTGM1yW62lftIjiiMCi0ivCBdENCKv\n9FZiHAwXNNHB9Tcn2gxv47KEd2zhnqBDGD3uxitOzcwBOd1NAkTqX/bWqyOR\nVzNtDVK3x73bWF7vCByh2stJqSQ2xubtsCb936j/JSwjAlLgk5qQDW7CCzm4\n86LnYUOuGABO3S0hVLyGK8UsOuOON8dZoqLUv6nMsQXc92+gFBcwwv/8FuGu\nkvNFmOhKE1CXhz6xO+oaYl5mtwtaJrGrAVdThCuR8k0V5O/aDadrV4zs85HF\n+XIWE/Dz+BDvkkudN8H0bWTYupd43qDvJ+cdB7/GNboG52yqMQ0jY3Y6hV6d\nNyw2Clk+3qxo0UnsB6keMrqiSlK5eeZjBRVhfiK+rtfG6IJmLKt2Vnmhb8/S\nlkJw\r\n=sCDT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDCuDxy/AvasoRFrhamdVBMAQtDAS5pXX+TxMGD63bPLwIhAI69TDTIUL555d+r84oPgARVRv1RX1NMfAgBwgYp+Lr+"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.69f59b4.0_1587761848485_0.5887663714664546"},"_hasShrinkwrap":false},"0.0.0-canary.3d209a6.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.3d209a6.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.3d209a6.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.3d209a6.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.3d209a6.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.3d209a6.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-3YVFoSb29YoHNmN79w3V+ASKDd8JOdMXYCZ4O7zAjkCpQDJas8uREmsGE6TdEEDWY5RtA67A6U/E715OA8iVPg==","shasum":"cd9b37ee0e45835c7575f827f08351bce20c355d","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.3d209a6.0.tgz","fileCount":9,"unpackedSize":19688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeo192CRA9TVsSAnZWagAADKcP+wcHjtl4xYCj9mJJ5B7E\nItbFqjPTdIbTX2nBQP+Vn5+yaRJ93DRh8Jmk5lHrf79PKKG8A39J8NX9jtcZ\na2/mp/sUZhuVnwPMx4FpqSusbqJuk1UIsEjfMHKFbP318u545tMLoX4qbn1v\nKEG4AqgpyV+SSo9jYrb8k0a2NFnbkKgG4Dpy5cL0Y0+gwqDWQMGDl+w7BQbL\nAjmM2YVgA2YYTVpq+tYALUAxBJe8cOPw3lwdBpdyZWVvgKZJ+/7fovHMiH10\nFg1Oyl1XomoEhPVIh74kmEqVaIGhsr4bU06jBBVYz3hMgyqKpAVj3LmdA0Mp\nAWJbflybggW9bHsW0yTIdmQe5tDhMUQTV8yZej6X7PMcTjFYW7LhpHs6xRLT\nBzst3OtQ0BmmguxetV0H7N9Qkv9EFALa5HMx+vvEKFPdgEont4BhRQBC0Orz\nps9dhh4p/AU6X4kKyXcyg7qN5I0UNHCyfcmpRh0NvWILCt51MdPCL2NQQAyM\nAPlxiwMm7KCcqTV6dN35vAqRHar1WxELJPCf7w73GKavXRkulgzS+ckeEswG\nXzD6D97npItjxj6IP6N5BJDg5Ze/MxIAoMLJFebtpPDfh529Yg2UjLc/SYZB\n5/U8+n5i4uBecbzfpjet2KNarF4qUHeq7eUOdaTTbS2vVgPC9+FsvstvjZSz\nT7OP\r\n=zaBK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC9FyqHCQhyk8nmePex+uMztT30OUstdTf4+IcxvD+YzQIhALyANSbqV9On2pj2/Ksz4AqC9jRSElVc8gmuDKdtWJ8y"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.3d209a6.0_1587765109345_0.514446889339039"},"_hasShrinkwrap":false},"0.0.0-canary.70b95a2.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.70b95a2.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.70b95a2.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.70b95a2.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.70b95a2.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.70b95a2.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-pdqnhfiDKdos/iXuDDlEjYGVZGTXRV6yDWaBMofRPrQrtsAivkqQkwEkuZrUqzBWnXr0HX+K9m23rl4zs9devw==","shasum":"5a3db3a8e8f4ff44a8aeb01c2d0667c0fd175493","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.70b95a2.0.tgz","fileCount":9,"unpackedSize":19688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeo3pRCRA9TVsSAnZWagAAVMwP/1hO6JJ35BvcFM6XZVT2\nY5uUlQC/N9EWV+pXO+rOQhU8ou7p4m4DR0YHuyFZF3l0d1OdiI5qQg6mlQQ8\n0Qil2W5Ht9TslrWQNFThtu7ntqLg8r+99yfZE0F9XWa9HB0mnwUFRPWba1bP\n5RGWAO2dbCU3o/QbrXClYKGkPQawskJBwRZ192qo/sP+mgTt+W/1MXj81c/X\nKNP4QR7rNAU9fdHJpD3idok6QPTYbhjSPzcJ+y/q4OS/pOAwHDtyEBBHhJDb\n52JDGkZiFxv4rdfheyDnymba505zZrAb4UZQna3okd3kK0sXJKPP0Se08znY\npxrTZ8WYJlL3cqtE3ALWGuNhdfooY80ErwUWhWiYkqDKvysWKv3W6zFy0B7+\nlg/RKe9w3U7nCShYy73/2uXx6icnDabXEmUfaQGLwYrvDZZshmgKv/8pTmhT\nASu+cIkcmg88VFJ6Oo0B9XdPhsYYFerc/ItVmG48+W1LX9ajSTa2Beoa2Sd6\nzKZPIXWYCnnTxWW+GFjpPSXOP+eQiuXtdWAmljKWcPCq9HTPOM7oMlkUkCUE\nbWgceweomJ/FnchRV9wzZkDTRVHFa/4m6wZwNYg5CZSRKshpIGch+D61M5I1\nLoYLxUq7O3fUGHt01s0PXYikLzgt2v3hd+nTZ2CFpTawcmR+h62PTHvgVioD\nG9QA\r\n=3nFh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEYBtmVLUasEhBduQZW3gXTvZEqMA6Gdj1sqGQUtu5TXAiB9t3HHedCRbj3PtAGJgAcjYOyHbZH3iQQIWl/fKaemEQ=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.70b95a2.0_1587771985136_0.26458208711094766"},"_hasShrinkwrap":false},"0.0.0-canary.99a4452.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.99a4452.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.99a4452.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.99a4452.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.99a4452.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.99a4452.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-oacOd3oumAfZFeIOsMWQ8HGw3+aGokNpXArbITIq6hcv3CgRWPoFuNTISM4IbnbzyaEcKE+dxJL6aQMwMdxysQ==","shasum":"507abe58e50d98f8ddb6dc9682188809640e3f49","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.99a4452.0.tgz","fileCount":9,"unpackedSize":19688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJepIFJCRA9TVsSAnZWagAA/VIP/A89DnCdVNG+IR15rbf6\ndm7GBquGcd7Xz8vRxAlLuY+3yX2Lm8yh0g0HByBg8GF7UMytXJzQOoYdooEn\nZ/ELqqRIAyAGTvsfT1uXt4ZsHzBktSHkGAs8vyNRm3xP1E8XWlg/gn8l3SKp\nLP3MbM6/dUhI1nH85swY+xZyX9b0eDK8VYapxvk5AYpI7oz+eVa969jxUIgl\nvZnz2y8j4LdaDcNABXRsoIJAdIB6Rk82cJkp6v9iQysAkoQnVGTx09ccnFcv\nbiROTgGE0bW7/GzA4H7UgHdjpU4bvTZ4bNgQPCukKEkvcyakuiSSEYBlC0WW\nswf4Fsy4WKk+8jvUF51cjNvAAJedpRoNkcu7P6qnNh1tkXHuItvI55b+VBbe\nh+zl5wpbHbNegGL8aE98UlfVr+Kg/1iqb40y8MB4Sbtp71DjL7Kxmb8yO8BJ\nOJMC/DFJxjWJbq9BaQ4d8050oJ+j3KzkfqyJY5KRkkXBvGbD7+JZd2Iu8GQz\nnJ6IA4i9WGyKLsZEIjXREVnypjgSF4h/FvMgNOyXjbbyWAdqDmlx9gLcAgQb\n7E+bfBmSo62rRb86fIYwkRs6TS9gdM7lmu8bh3tTkAWQFKXBOdLpRw7UO3YT\nfH0xcZytYRiOQW5tUNjzOBrvRUJGnoHqmHudjxO3ejpWpc802QTkSRK2v+Bj\nj78J\r\n=lvzu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDuqz1D4psx0QWNj1+mAqO+ldSw3KQvjcn6SWpugi0rDAiAkfHzZDJJPQvPUd4dFTy1gzYtqSxtCNwZrjhY8HAgFUg=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.99a4452.0_1587839304794_0.46294905812933473"},"_hasShrinkwrap":false},"0.0.0-canary.649174e.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.649174e.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.649174e.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.649174e.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.649174e.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.649174e.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-fBucAkAbOKGiJ/n9GekRJ72MP7/ZOG8bbv+Y/V9yAOgAZscdMy2xHGl46j9uSM2wUjaxDyEeotT4ZBrZlxIFTA==","shasum":"88d9a5dcda97c4c60b04b4fa290a91706c8c0b9e","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.649174e.0.tgz","fileCount":9,"unpackedSize":19688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJepz+OCRA9TVsSAnZWagAAVAkQAIH1F6V+Sej3U2BsWJJV\nvX00dEiMmPl83U8XC+psGcQ1J7aMqh4CbjH1kSSlpn2A9CBRFxvWVvBfwN81\ngbex/VBo4jUFcmg19wQRgDwLPJUYqbfzlXKBb7dnmM6yhgLuS74H7GIoPJ9S\nhg0j8NGQX86dkHLRs7rrJRlD9CoZu5wT0FYZeqj15aKO04A0AkmWOgXVJ1a4\nwTUkFZC/7GpwNrFckfsMIyZ0yfI20qRLnRpYAsZpahpKcxnriMsPEdf+HU2+\nVBTvKpI8uz2NGJwUp7ArbSJpvuoJGz+j2+ukMsY6+BKKjEfCdpRZV1dE0FBz\nbxNjJXoLBpgMUZXNrhdKWeuyNnA8dVMi2+Dhfb09MxpHjqEOCQLTcZsE7dHi\ns0OUG6JKJwKqwiDhQTLXcxj9SE/6ItzpRjghPpsVO1liZjHUVerrX5JiI5D2\nxHot+vrecfTnowfDZ7nvtasauQjV3/d0wzwF76cL9fiIIhlzPoceuYGxEoDu\n1dK/o+8ulQT/5K45tvrmTO35fTY+dHMUVgU7oJQDwnBwYKCnggIfVWO2u2NT\npGhgZaTBV8bwy7Wk80e9n2ehKOUrqGr3yPjMF/WABIBrEORSmYe9HR9aDB91\nhsh3epAgMhr/qaI6p8t5jRxOedsh434xHtkEFPCWb6g8icahQm3zTMHrnvhp\nj2av\r\n=njEb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC7FwiwP+WC3roqKX/VMZ9mdpqwAbDeYFliNC7LmYHOmAiEAl+uYJRDpcqRbJFhSiV85iIt1PhYR2q5Q/SneVnKnWAM="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.649174e.0_1588019086392_0.4841066667755105"},"_hasShrinkwrap":false},"0.0.0-canary.99a4452.2":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.99a4452.2","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.99a4452.2","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.99a4452.2"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.99a4452.2.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.99a4452.2","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-AptTRFKTrdKVfFim8+irwp8h6FkMtGpX0UQBITehGsl+HNGTATf8ilB9cBKpaJ2elUqbHClY1aj8OE99Z3mJOA==","shasum":"eae30729ff0c408c956bf024513569d2189a94d1","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.99a4452.2.tgz","fileCount":9,"unpackedSize":19688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqHpVCRA9TVsSAnZWagAAYPAP/j+6Tp4CZDh4EYPktsTo\nd1zc8Mam2oflfK7TidoY+E2mg+1EWjvGbl37doNDiOnqGBIjX9MI8/LtNKhC\n9qZDFZdtcJmlBozKurnILGGz/xBbYPxSUMUWhF/MQ9671VH69tCRT2rtM/fr\nLI1lByXEXXTVZNtDmv5PxbXonusJ9a9AHImMq3zEK5Xv6uuwsEZsQgF7dQ3b\nlImOJBcR8+UkmNf8cMYBc47pqTt8L9N1oSxNUGAKHvX/VAhX1QE31lXbOCuB\nsbe9IOQHGjzkThjWrXGICLd42f+E72IdwhyKjRThlayClyp3wKT/HxV1Ufm8\nB/GyoMZGSdmHqoNcCcktCUkE+wvi2uaqsnj27KqeItUpCJ41Y1We9zZ1mV0S\nnxM6JS//gXNVwwZ+ByxHM6OC9Hz3W+4pV4aNrrMKjF67CZREqb8dK8S+mEJb\nwVntOIgofzTD6l4oqEfyQ9Gj6kcj/uwe1QTeUFv0hif+Ke5fWlJEFghbRY3I\nPFqD8wSDLuCMeMMu8CeULOdnd15tjnENc6/rS4iIrGMJs5qk/9fvmEYDKyP/\n7iEYnG9HliR03wDN0asPUzVzdhxvUl0Kmv705Ug6lL57UdYZe5tUuHJpfEjy\nZ/VUdpLYQuPRt4pwqKD5ffatLjuVIRZU6x+56vsAAs/V34ICe3eSFYVGATJz\nxwxq\r\n=ZvEH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCl5+QYHb964LTOybJZHGWzmrFHJoa/UmeMPUTXrSkJLQIhAIhF5a90gYruy+1Y0xTwQKBmLiwFET867XbxKAhvrmPO"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.99a4452.2_1588099669341_0.8096271828497068"},"_hasShrinkwrap":false},"0.0.0-canary.649174e.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.649174e.1","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.649174e.1","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.649174e.1"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.649174e.1.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.649174e.1","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-XlQ/WD7xDFD4BNdrlRsfph1XHxO0LHwQ/gPBFj9+XbBS6popjOV5fm9PEm2hVPihuIl4mYFmVmdRwENcWvyZEA==","shasum":"a2642608d93635d51f4d056c3e7646d1947f8b44","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.649174e.1.tgz","fileCount":9,"unpackedSize":19688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqHqjCRA9TVsSAnZWagAAkG4P/iuCeCU3YEp4JP7SGtZh\n9UICm2UslH8Pccr2+kITB+j47w9GlaZRrvNZIe24EzlAvz72xOLVQfq38NoT\nbo9ioAwSwJcvbBdWE6LuIro2gYA70bVUfaWoXsG5L6y5NxX8qCFDbViWYl3d\n7GSdYFyXhJyqWlcYgFnvzpUff2vrjyjUjy1bUSKAlnu7EQM6Wti8g6wc4Q9H\nRdMWwIp8En9J59G1n0HTMXsVNTALWl0cMSRPWLjjAP+xtOwijHjbQ1xkkdHJ\nBER4kkelMrzuQrmnnViKCwusjs+nP4/5awGF6H9HzDcgFXs/jVDrgE8TBWao\nXG2Nw9qtII4hG0Td+ceO8UgEFweiEm3V/yxSBd11VEt+YuXMVqnzW4SMmbv0\nZ7kHKEj0rnvCQ0hZqpCGRiAz88U/GvMqEu32gRKrt5Ih8ZYmWiyO9s7TjjLC\n1ZYy/ecN6Ta16reyoIXaNl1nRBqKY5JS0UPaXBpUAgQbGGZyiVdY/t59vQOa\njyRyslHLCSN4kGPxbQc6kpV8SSBB3+gnrHiZ9wU//ihZTuHNulPh5lElk5Ck\nk1OSzCsewWLmtLpKsBoS9TZ+kpJW2g1npz+088nJGopNkvwXHkDP5AGlhtOw\nrOAQvmbN+0pww/lSACHemkj2VbBmXgjPm8/4NNelQHdaEnDAspOaokvypWPY\n9QoK\r\n=502a\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDlGoQvCTEbrlYhXWcA8s+7wwfLZ51s0tjt3hRWNsPS6gIhAInkxVXAplfRr4hotY7eX2VNs0OQaDA5iuY1c6VmDrTJ"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.649174e.1_1588099746708_0.8690425371037194"},"_hasShrinkwrap":false},"0.0.0-canary.2450eb8.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.2450eb8.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.2450eb8.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.2450eb8.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.2450eb8.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.2450eb8.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-vDlnq+Uwv8j0LMTIxlguw+4x+RJ01JAM0rS225LZrIF1dPtjVmacMMynC2glshBAwPJ1VBv+XZFBfs9N62yUAg==","shasum":"727f16b49816d8435adb305776bbf457887e0a3e","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.2450eb8.0.tgz","fileCount":9,"unpackedSize":19688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqH1BCRA9TVsSAnZWagAAfXQP/jRhRIy2Kj6ayixJ8xZh\nce3LkKlPTKOnPjCcUZmCBO1xfa2galb2/N7rnj8+ai1czVOrYoyBvOS5/4ta\nLPrCUHIiGTFYzJp76jQfP8MbVj9f+gAzUn1EO7H80eVMEhZkx78F6XldZH2D\nLPTn95qXCc2i1m/rootHjB4o51QWKFgtNdlhIUf4bL+ll0BGHjVX8Ctp/27R\nLMESbzJ+wE85bifJ1EO4LoCnYUWH+uWIR3LwRZ6oLdLu8YqIsXa7ukBDwKQ6\nd/CRXodm0sOGuhutV5971FaPTyChi7jpgj8NH8vuKK9fTTGCphc3KzhVRbtO\nPyaUfnxQH+0G0aJYojakpiq6ASfXFV50g6cupFgRJKXQgIoz/vwh5LNNSYzP\nj1rlHzUAWjstaZbthC6pXTUidogcEJ55VODgEyo8uZvF8UZ5mUSSUqMJExBT\nDiLcJDsbixUm3hoHQ+kvChAX7qVeFsngZG1X4NeOJtPFfGkdbODbjP4ckmig\nl5YXarAjo5vY+n12N1qIXlZBrhRY/4TdTYvnmgk4JC2jNS/M6n5jzT0DIorE\n4qlkX5NWhp9uVHGs2D74Jv1sW2U4mPjUwMolJjS3zrDez5tDPL8bey018x5h\nxX/2O/O9eL06tYm9wR5tAgffPxpF5U5KpY4wHBSUQ4y4WfSJAELxZ0n9oLYA\nRmqG\r\n=IEiN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHUqADEvDyTO/sG7oeSjm9LYfTIzuZOuiYxH4S2UxUaMAiEA/QM0X8SreAE+FePV0gaa2Efzp8UqS7ugDr5axGcmF/k="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.2450eb8.0_1588100416694_0.7693891845025487"},"_hasShrinkwrap":false},"0.0.0-canary.2450eb8.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.2450eb8.1","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.2450eb8.1","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.2450eb8.1"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.2450eb8.1.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.2450eb8.1","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-cHS9VwVfPf35lAlNPRERK6WVg8QHFbVKykMcULAfZUie79y6Ftbi+3K7VS4kbNxhDqMazDyqfcSXnsoiB/CZRA==","shasum":"a984a1770342d7bcf679a930ef0fd49ff791de98","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.2450eb8.1.tgz","fileCount":9,"unpackedSize":19688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqH2YCRA9TVsSAnZWagAANRwP/3lj31pFg/EIXrOTbB+y\nKrmXFzAAsOW8bf5ZUOVpKMbKFMDZXoDGJzGsAZsuST2+OfTF7mOPcsH4Cv0b\ndvJqYTT6pyYaYE72yImeeLBIibnd0ek8LqDO8CmzMhxykgNyrDtgNUlfBeZR\nlyRfuEdZX0qTtldyIP1K0YFuKQVJLDkvXC5X5B821V5nxad1zhSQwosDREUg\nfRP5tawF4L9E946QzyUpMVzKGQ5NvjfWlmlEd/Q/1GamKZx8dG2qWSofsUXz\nqC8RMke7C2eqcsDjOb+Poq8gg+wo/0RNmxr1rywUDcb/Q2D+F+PY1sM4SDVB\nul+yUmQFB94b8OIISIWIjFZ4Brhytfj1+XYu7JF7BeaKFtDPswdLmkr5VEqO\nXh6Pm7O5l+Taiqp7Hob54uZIorIKGokRyEWigzta3QHnQ4T6NKf5bzWzijRn\nBpLtbqLD9+eyIQiYiYFSUJRdrwD5EAFH6SnDHZgHEJH5SC/I+Jz7OVJ6SE/V\nuEGEG3pVOatHuhmmVcdkmpl2caEMfmkjAGbSVijsyHzdMNfpp3MIkonOMVeN\nprhSks24bCnIaxCSvj6M5KN9hHAX3HE5zAss/OnHowC75jM+ZQ1dA41DkCqL\n9TjPvpED7KDKw1Zwvr3GXAyCcp3Zo+xxBaYb3zIlRpGubNbbMPLxIN27L3EY\nHhwS\r\n=c9js\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHMNNI4msBjmGfMcC3XXsxsYEJfBZqj1ZoVHH5MVl0BQAiEAwPWcT2q1UPqh5/G7Qydp49z9d/6ImHTb9SOu79+q8pY="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.2450eb8.1_1588100504383_0.38815461947840535"},"_hasShrinkwrap":false},"0.0.0-canary.3b3b756.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.3b3b756.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.3b3b756.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.3b3b756.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.3b3b756.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.3b3b756.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-wEs7pK1J3X8Vzexj53M6VI1mcSIUdA3x0TqOXO+l6eJc2C3ShDx6VYVGXq+Q2E3nAENSY7hqqUnG4mAHpy80OA==","shasum":"b2206ca69785bf20364a7c59f1b8422ac41ff4af","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.3b3b756.0.tgz","fileCount":9,"unpackedSize":19688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqMnlCRA9TVsSAnZWagAAW7MP/j/ayFFLHQls8vV5jO79\nWBQD6JrWEigEjHMIX0zX6l54C5UpAH8mA3bMyvOwbDU0JmUuoR9bEvqR0N8e\njPGiIrzwCHVR1azT/YhGdTkT+07wHslYCpII9SikW+/ERTsqosuur5t4HRJD\nP1bA4tmcjEJcpCBqsHj5NGhoxWNBYsjfa3X8Sv7/oJv78XsB1dyo1wVOzGav\neIvThJdfo/t+bfQCDFQNLwKWl6SY0PX28w+SrEi7qL4dY4Ny9Wu0CIkTTlv5\njeugE60l/Cb8vyHx05L4YbnHTPkloDbII/RZAkr9sI3WavEmjjLxGGJ7u+ZP\nsznj6R0w/qsll/DhXV6IXUzETILnEzH7dybDSdAmeISHqjYe/MUZA1G7DR5i\nWvFdW8HA24YieGAfXBTQ9duUneTGRCk0r8vc42C8xSSgvwMVN6L+JWgrrUOY\n/nEFduApVivlOrhQk72abQcf1R1ipn0/hKwUKVE0oCVbgJQN0W9L+I3PkpWx\nPXh68j6xmmbIOmiIRXB/ovUpv6gAcNWf/Mj0CWtn5G8Trtru/1M1hqBIGzP3\nafiUluJhrfxU7wbK/OWLw2yL6xvV48QQMEdF6aCDLi8PxtEEdekeX1+AonV2\nbiEfmJ+4bRu4v/EMbtIxEgsQtwdy0duu9HCFEJXIulJNwDmCtah0w9dMNmF3\nxBTr\r\n=yaWE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDJLt0yJmoiXuD8/OG5AuJDkyHcLChQMjcqdnde7Ev5qgIhAPv6NGYuAGOiuIqDNZKD8w2zi91NxAyT6YxWnvtg2hnb"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.3b3b756.0_1588120037312_0.006263125021003901"},"_hasShrinkwrap":false},"0.0.0-canary.3b3b756.3":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.3b3b756.3","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.3b3b756.3","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.3b3b756.3"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.3b3b756.3.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.3b3b756.3","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-g94akjVBeCpt/ctnAxcD7woE1KBT7I/IcGw0nAbjKAEq9NH8QR0rW5UYUTAKk3jv8AjtVq27ajYF3DwFmlX8Kg==","shasum":"3f5bdeaa8a024e337df2b6ac808b20665936a11e","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.3b3b756.3.tgz","fileCount":9,"unpackedSize":19688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqN25CRA9TVsSAnZWagAA3WIP/3WMmP7Col1wIvZjgOtd\nQ5mozVdviUIUwXflIPsEVXlTcGuQyenhHO1bJkIsIkxEdtSRvsEkOI6ineua\nuDgdL6pPEoN9AZhxOaSRBLmiR/wionxNqwf7j3ue/bgHgMww7Luixs9AvLyG\nm42+sGNdBn/lzI6yMMhwwC8FBys1yPM5/znvO2Hhgsqi3RaLTEFemT7IY5yJ\nUCta/dWqnxOEqDadKkiUWSVhXZ6LcHCx68xR1YsSJPKixY2NNASmMHExcc/r\nJO1gmt4xRwXa1rM12WwTB8DJbzAXKI8ixhqTNEXMG21eb4k18cNhAbvVwDud\nradVdHItCLk3LJIhrSGpbxFKRRXPToMMdJmh79+GaDznbR9ThlcQzFbtK5Z3\nM1hwWmGVDTnCK4WmHI0JxQsSILmNl47PoxTsa/MyALjvqnEUQ7GTs2m3Ar+d\nfPpC63wWC7xQW+W3m9E+qRFPEjwGpgeWP7NpPF2GxmN0tC5RIG8MZn8oj87U\naNDvnmkQWCMVTV/Yfg4f4REz27fapzTUsl99n6XXksaBznIxuJPwcy56Myd6\nOgKzxRKcDflZf5QBcbO9ktExu1FSv85oDaitu1RUVqThYkVJWdG34lVDDavd\n1gdJIbckx9ahmJzGAjHWzDDWngKpzMR2elJ5wOKqCB0PJEqLLhyBYdRyyN0H\nA4vO\r\n=MfRV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAGqvz3372f1ONDEUzMWpKkgkusdLdwMx1w/3ovL/FuPAiAY0VWAJAYfvKIQSvJSGAZIYSXSfTrorlZCfhf5D/YYFA=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.3b3b756.3_1588125113085_0.1752054473207849"},"_hasShrinkwrap":false},"0.0.0-canary.45a5f32.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.45a5f32.0","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.45a5f32.0","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.45a5f32.0"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.45a5f32.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.45a5f32.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-rV3GlYvyhVd+mk3fFl8Xul89gSEkJxByy6mh1VdhtQ21y3xOV6u5Wd5dnaTF1T/li1gBHxoC1k8OHQAC2qRgRQ==","shasum":"6e2376fa5de30320b5933b6f44c935886e74d73e","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.45a5f32.0.tgz","fileCount":9,"unpackedSize":19688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeq0xICRA9TVsSAnZWagAATsoP/iY55SAYEFaoj4oyNNRK\nJqdj0qrPqFhGiAyzKQJV7eiKf4EKN29LZaVyuvgdi9Vmw7l3s99jAQ/LoYGx\nB1HYArjM6nZG5JnKTGh3uyeyrWxB+PW62hj3jifIZi34hpAY8a9IFZWOePhh\nasZWdcrAs2Ua1Fr8Y/vXILEvNpdW0wCN8a4mCF0jkwA1gpNUfNQH+H5v85tc\nWNWVWgeWGYnptBLBPwMDf4Jhxjex6sGeyan8jsjcLGXKU/lTKSdh0WyQbH+V\nW2euw/IHeNc0UsAIWclNT/3R/t3KvRjjGe+0URXzSOUWYP/BwzdXpEBiyf41\nqxx91FDF7E0g9oegV04dsd5LBxOUNMPxVFbajn23gsrAl08fFhtfRxZSGdhX\n4GbJrVLd6A2QKmfENdAnPTpZaCm/ks25kgaJsuPQ74p4WUMQeTjd6qvYBExV\n2YVg4KdB4hvQHDsm4xhkfxnvM/1wh7xcV36c7X+qXrWrHRurhmpKgAqFOuIR\nivIUaq4n1baMaP7AZyX64mjzn7H6JE+O6ltkwgPFPyOBOK8dkyAxFrJyrzQd\nV9DeDRw9fc9QwmncY6ZnKFPQdvcJeYUXCgbxX7BAx5N3fOsHzbtE/uCyNrDY\n9SuPTdZoQIKB3kZFgoVQ3uSJGsu6LQjAn9jz77IOHj1rebAMoVOPqFYO+hqR\n43/K\r\n=IsO9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFJYWD30X56y/+Y1A2tgwUMY9HhH298kAb2wl4ESQATfAiEApdkoV9Ub1PtUXnjoy19iVOVasuuzGnFzsw29FRMhQ54="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.45a5f32.0_1588284488130_0.2737031815289519"},"_hasShrinkwrap":false},"0.0.0-canary.45a5f32.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.45a5f32.1","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.45a5f32.1","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"0.0.0-canary.45a5f32.1"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.45a5f32.1.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.45a5f32.1","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-WkyAMbNfbyUK4Ufq/XaF7Ly3crlqKBAOVf+nqB1ixaM83PmFQt5txfXcrXJQW5FELlgBe7xl+KVaXhMgNtW8BA==","shasum":"7a42730c3cf68d2379c15b84db7086ffe1d9078e","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.45a5f32.1.tgz","fileCount":9,"unpackedSize":19688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesFZFCRA9TVsSAnZWagAAsWsP/34m6GLZSvqd4UWjGccV\nn9UANpY3fI93aBvwH9wNWF/sKYeS+sQihFACEVuuGqpA5gk/92zNd0WItU87\nSMXivMj2jsxSbzMQlM3r8gpU6xDharJHJOAu9gdYhbxfEhuDoomNFP5F8WUs\n43SpEJoqxqI5xX4jyXO2QmyXJUSHVW6lSbInO2jOJR07d2QHElfBqQDM5X0m\nHdG9XQN7u9yiKI351wKvS6cbrmE3jlr64G+pG/DuX09RT1vaqKkm9RVFPaUz\niAOE2WAWRMlB2pjXLkLLb8MCpM4AOOrhQqeWILuCUpGKSqm5XxKhasHYQH8R\nv5QRnqkHx8QjmjpDEhwI8Q/TG7ddcJknVF50V6Y85udDxGhkDptls+gK4Kmt\nKw+UP/QBVP3kGS5xTm3MfTew9Df0DkOYqN7FuCANMU1GbCFxYmTy6TGd5SQI\n/BTny87Cfv95KfQvapr8mWePVKxEM2huO5S5RXZFWO3TQczsUT0x8QAUEvXr\n9Df36KtfNOVgKsUryLOMVTFcMSyW2lAtpz9gkfX8O6UWrT6whbG8eZ67TO3Y\nLLcE3TTIAwjJiGjDjbhb6fDYcn2ooBdLohnuNOR2ffVwwFdu6qHXM/vKE5ar\nNXwC+OdBucwl+ICILVS0YeyfayS6q5xHVFhDCay5vQhtwPqm9CKj/bRrRo6T\ndVlV\r\n=GueV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD+qRV8chxO90ONj1Ei3WYPxmYElsvMfSJOtXtsGYnzQwIgabF5XFvGfLsZ/CA5vvluszRhiTb5L4sRy8FQ445Aq4U="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.45a5f32.1_1588614725049_0.1940877091012525"},"_hasShrinkwrap":false},"2.1.2":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"2.1.2","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^2.3.0","flow-bin":"^0.109.0","fusion-core":"2.2.1","prettier":"^1.19.1","jest":"^25.1.0"},"peerDependencies":{"fusion-core":"2.2.1"},"scripts":{"clean":"cup-clean","lint":"eslint . --ignore-path .gitignore","test":"jest","view-cover":"npm run cover && open coverage/index.html","prepublish":"npm run build","build":"npm run clean && cup-build","flow":"flow"},"license":"MIT","engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-2.1.2.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@2.1.2","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-p9UzfEb00TmFBrBoibPMpqboKU9wzhvpeOo8J5+SUVQ8JlYH8SLFoT2zn3hfmkQu3ExXSrJVqzcfjEtmOcFJeg==","shasum":"a4bce17c4d2e0055e476088d55e4a9b0f8d65f49","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-2.1.2.tgz","fileCount":9,"unpackedSize":19637,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesJuZCRA9TVsSAnZWagAAi38P/2RdL82AFuQWHx5fp3Ui\nFH+kKVI3lrJHHRXG2mNcOPFCx0gPR3CWtHwBi2PoFrv7Nwa3wfiR6To7+Nn+\nqe0IRpjglTahvMBUiuSqDHn+qHnTm5F8OFrSperynuhpxy2rMv19PfoUiZ0F\nnjBznSBdfRGAnLz+njp+Af1KOdHuXhzCr5cp7I+U+EBXv+Xd6quRq5CQgGsx\nuEKRHPJItreLtSUCAv/gsExEf9Bj5aDC4855XJ1NpXlUIUEAmiKGJyOyL3vi\n7QrKHG5hUpM2DxI3kSXMesCage8agv+9WrScuuvphfP5u5OWxqVAkkVN883V\nDI9uIUUDoaXfoa8I3tLhv4a/WbVY8uBs1JXQ45+KUW9yuHxxR1vPNTVNfGNF\noJQUgg5eDQS/0FARxL0RaDL1Xy3W9X10OvWac1DLRxit18INmkVyoojtBzpB\nrD2x1QLEHIf24ZOhpRW3q8Leb5g81oIuztItLNVsXOQzXATxeFzR19Lq3hwp\nKFatjanaMBWKZDRjZ6ANTDyIa8zxyAvTyvKmCFsxTRxCqt9CgRzWymdvIaBp\nP7wKrq/DWNP0FVRXp5mIMXa1uw64Wa7L9TRzg+dPM4KyahvgHAMHnXj3mo9s\nSKtC3xKRpK+RJyFCfRRsgQ5mH9m2JOlruwZ0OISiChi5JkMP1LDA6+UXBWZt\nPvEZ\r\n=qMzx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDlY01gA3DRk0Tr40pWOy8uYsufXsD+9gAAQJeeACh7/AiA0go/lZxC2lnBPF2AFRsocEUuHaJpp1cXY9X2qK4NMnA=="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_2.1.2_1588632472847_0.08248056655267644"},"_hasShrinkwrap":false},"0.0.0-canary.4e80a7c.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.4e80a7c.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"0.0.0-canary.4e80a7c.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.4e80a7c.0","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.4e80a7c.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"build":"npm run clean && cup-build","clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepublish":"npm run build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.4e80a7c.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.4e80a7c.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-hP4fNboNWHS2JFk69tIYCb284MJuU3ke9htk4cbkOHJZ2KVqI7qNc2FaJjvyCY3yywE0saAYgtxwqJnv96/xdQ==","shasum":"47fc7e806d600de60e764c6cf32b252651753b92","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.4e80a7c.0.tgz","fileCount":9,"unpackedSize":19706,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSDHcCRA9TVsSAnZWagAAt2sQAIaVpsrgIA6RKr4/2Dzc\nK2uypVx8N4eZydKerTiB3XCH5qjRY8IqzwyQYa9Qm4TpuQpCORThzSKvkVlI\nOCuAn0rbfcfBJ7ltOMYD2ATPvszGJrhbV0tg3TMsZcU/BdoTgNzi+2FYeCKK\nCf3Hjd+r8USbM0h+So7/FJHed4mju3Hb6jRtYBoGHafDru7kl9qEpLqpm/da\ntvNNuhXDtlOdhpeOMu15SZ/ucGFsjtMUK5/AzzpCHIgr7+Y5sq4RfaKMYM1o\nydLMKMCpYmQvM3cPqMgmxhsQOIJPoX+Ia10yTs8ZPlTysvKqbftKI2qLhOrl\nDUN/yRrHT45t/+C53vTMA0b6OBsPSJyQNzqqDmAmBdseZ07FM0bc81aNsALU\nE4Ypst/ZNISj+IcrBab99lDOp2M1wpwaQH/umXUOMXuja+U1noa/mFEC+tWP\nrk0feBbnedryNtYGHUtseVSGCMt2Fp/nFKvHHafdzq8p5CpWLQFlTGG4qDAJ\nJy24KMivHLLU48S/V4eh88mjQkYuk3EQN05Ns5w07+XF+mDrcJjNr3rQUG3w\nsRzHmVm/8X1JN3LxJpJt/LEoOafjSuQyVKn3yOkeUI4w0bam2x5JCYRmGsC0\nGEazkzD9g9ZgSQ84XKXmcfJeR9Us6gc+sriUeKmjkR4DHdbm3qVuEvCHbc5l\nnpHN\r\n=Z5+o\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD5C34fuEWCDLTPshVE3U3OalRjn9ky+dFQ9dc+pXGn3QIhAKhZ0tMpF5lvA0Gon1FkRqXpkAvFl+OR85rZd/NSfWj+"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.4e80a7c.0_1598566875763_0.016330181502646868"},"_hasShrinkwrap":false},"0.0.0-canary.4d0772e.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.4d0772e.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"0.0.0-canary.4d0772e.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.4d0772e.0","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.4d0772e.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"build":"npm run clean && cup-build","clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepublish":"npm run build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.4d0772e.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.4d0772e.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-3Nzmo2pGcMOwkvBUmtAAJzPOcjwVYvW+OWia5R/2EoR1nUwDBBasWKm1KZ/MIjuEnCtFaoX/KQ5+dP2aJHpiFQ==","shasum":"dea52c284fb8867aebd81502ca2fdb1e6c72e699","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.4d0772e.0.tgz","fileCount":9,"unpackedSize":19706,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSZt/CRA9TVsSAnZWagAAtk0P/2QwTX1GznwNwHiqAUS+\nFqBQaunxb21hzTADoBK8S072eH/nc/1iBpsmumX6zvq5a/1uWdJrpTgWxeSX\ny3EnbIq+6dRCIXRzKaxRUJCp2BP1PGA44aE+NHEA5XinyPXWlwEVM3bSWJzR\nHTDfVomPFcufINDj+LLBMCJPy8PkfnsLVI9o/AD85PkdoavDHMT9Jb3xEyZv\nUmlckDsfakB+1Wz5GiwRg2sMDh8+t2wX/Z5qnddkj4eK75rK8bYUxPTyPRYX\nptw82Z4PtILZymFiLB2S5M/OWccNmSceLCT4FvCZIhi9xccOrp/X4q7iQYn/\nVq0JbUfhYQ8D/X8tlgkJpP+nufhwq5WAmj68yZAiZt5TEvzeOopL9vHljJKG\nOR/jG2FapuG0aOK4BLzbsWdVhD/L1QtPpTYeI5yG0JKDbvjggoUABsIQ2KvM\nZrkpw4QNDpWi/H/GP3pA254r3cl+12A9k45CmRi1jHkbUUxyo7Od7eszXPXb\npbb2yEDz3nkC5g1wnKPnbazu7dmD0sos6d9PIVLD1uh0rTrwWupsE0Rm/HUI\nMlT0MRVbXbAEyRx8E8kUtfjXCflPOPMdML6viuPfvULM6fBaaxfS0+VbLjHf\nMqKFMCCdM4LV3rUOZEiQacZB9ltUQHicTGb+lR7gS+ZTWWXOtWFjmdpgrf6U\nyQ3f\r\n=koLn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG1spXis0UgJZXAvJTZHNg5fPTkaXcXCz451gvtyWX4+AiEA1DdG4+NfLVtAJRXgA6nzcufrSka8UdO7sFeyT8bXJFY="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.4d0772e.0_1598659454786_0.4675815459238244"},"_hasShrinkwrap":false},"0.0.0-canary.8a530ea.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.8a530ea.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"0.0.0-canary.8a530ea.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.8a530ea.0","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.8a530ea.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"build":"npm run clean && cup-build","clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepublish":"npm run build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.8a530ea.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.8a530ea.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-TQpw1gIiHhTN2woC4otbKM+DaR3trISXdsvjlLDezBYLzCQBAGtkGFjlY2jqFROnzvRjhcjnjkBxsndIe7Pa7A==","shasum":"e31c48f64991df9fdb7b6b116d55f6db215020b0","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.8a530ea.0.tgz","fileCount":9,"unpackedSize":19706,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSavcCRA9TVsSAnZWagAAQGsP/0/3kwip/7bSMtDLj73K\nTMYOJtIyJ8yj8rACYjOvArY5J9nh4+Isf/nFF5uO/4TpjMx0ExHbGY6SYc8c\nzPPTNqyTqlSoqln8h0/sDP8Ei19ODAGY+CFRw7of/zhJ7tIdwZjZUqiMS0BK\n8mQyNJ+hrABVLoM9UqASCpfzXrpi0VVwJah2egFNyiW7TT284mD8N2i5R4Yc\nZApwvE0Je8QAC7aImj7przBJzaKlAFrBedr57sPniGGcA6V2BltB9aGjTveA\nWl13RZAhZbhSDuZM1pp0w0hDX1FtZiiQqJdgh6e038+HQPAccD6a6GEc52ZZ\n1Pa26w0DBMin+lQ0kSwW+z5VGKO6n2x9ZdTOHhpdwahUwHVNSbqL/9CpcEHV\nqlqD69WzsO49jUuSOerKQ48Qmd9RwSUTZ+7Cgi6CJPkBIG31SMgw+31SEzd4\nwNdZ7gIknVyrTVgXSaH2l/NXhNDWC+47mdp1y+KSHhxsyIH3xYw2eo3NPxQM\n/pbSly65+NQJBvJeQlsWMtkpra0txFJf8n2BgkraMq1jjbxdf4pHoBv8oyRR\n4hQ3EdQAM7aTbhgrq87Vs7WRhg7UcCsTVsOqvXZuilAh+j45BinlLBXJ6yXK\nSVzoQ4/VWn9049+hwxWfNtlLRoXk7Vtm8CXazVqs0OLKYGKdSxiNbIUw6EIa\naCsR\r\n=HpMf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC6GItXvW4zM9iuX9jLNW3UKAgIAEY/hnWkcFPwPIXpGAiEAttqz3GZFMzQqw0nUaqvJCYcbo0U9eY1M9ssCA+46TEs="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.8a530ea.0_1598663644140_0.2783515432083916"},"_hasShrinkwrap":false},"0.0.0-canary.3915f48.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.3915f48.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"0.0.0-canary.3915f48.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.3915f48.0","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.3915f48.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"build":"npm run clean && cup-build","clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepublish":"npm run build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.3915f48.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.3915f48.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-tQ7Ibdj4Mkp4iCDM1pqtPM9kvWdbuhJKpnfGHfEObLD1IpriIOkrSGIRu/216J5uMtlWaKuv8hVtyVvEI96J4Q==","shasum":"d70ec2ddb92d086bb68f057b4bdfbf31efda8f51","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.3915f48.0.tgz","fileCount":9,"unpackedSize":19706,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUqynCRA9TVsSAnZWagAARz8P/R3huaZ9otTqOz/1ZshP\nb0RLPZc68JDfPIASQt0ayzWvpKQ/60aB1kRR5UK9KkX3nwBOC2AUfgfLBVwN\nFcDBNRt4swLWzE65sN3sxZxLRlIW6nhX+HodOI/Urf/yaCqnN28hXpoAaORE\nMcST0GyGnYoojdVRtErxHbR3PkpRsf2ZjqiW84YCQkvt62/gfoha7Qlppu7n\nerZkB6ghLHgJNVjPIJTwJV2wJkim7DhD5+PTS1fTbkmuHVZiA1G2aZbCB8tv\nAnmF1Xh46fwINLebPcI126rfJmyePqxtdQvCFUG2MSUzzpDl5lAIfUZ0ene6\nq6IPFeGMsohb5QZzUHib7p7GTDWuzawhq/YjGUf1FtT8Az6lUUEkJoAVvLDa\niQHxN04zdBPjPiauicvZTRk6pc7qYRyMbn4aL2CGOYNhY35CWq0MQU+0RPIm\nO0sgXoNYVqzWbxjQAQF+gVVNwOlYJusa8AyAjPxCklTFn6TU6iA4jV5CoUhT\nGD530TolWEjNnBbhzbhaZ0hbEEaGJpP2KbQMa4He+S4A41vzdhbGYSfzu0Ad\nm8GMnjyAymC1HYMVIeiAl3KLxbFPrOAViv/Wn0K8cOONOuMmZEfT+7+JyBac\nRrplTIWnmiPqTB6f3vpRyC34WlGY3Oo6fwp1m+QIXsiGsr269M3d0uRFUWpz\nBk8b\r\n=bObh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCnEoI9huN7vuUjoJ7rmikeRbr2v/tq6xoc55P0lafcFgIgPkQDTueoxDVfkrs5328977Bei+v/aSjDptWcLgANgJc="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.3915f48.0_1599253671047_0.07550030715827893"},"_hasShrinkwrap":false},"0.0.0-canary.b3c0cf8.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.b3c0cf8.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"0.0.0-canary.b3c0cf8.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.b3c0cf8.0","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.b3c0cf8.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"build":"npm run clean && cup-build","clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepublish":"npm run build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.b3c0cf8.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.b3c0cf8.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-/deWfzFGwtRueuws83gRq3i+fTKv0kjBRy5jL23mZixLVckNMfN1yYZmmcK6d2N5TtGb452FIB/bYOxL18+nYA==","shasum":"7c9e2ed0f293e854d7ff6425519c0818d01ffb3d","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.b3c0cf8.0.tgz","fileCount":9,"unpackedSize":19706,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWRKsCRA9TVsSAnZWagAA/GAP/2EIpyaJj4edr93Pi1C8\nmy/V+7ZszPsN8z9MUtlwWc1DW/M1lEbkBIBJcxfWyoNSHi+T+FEpir6pWmvC\n4Aa6VGH6RzknwVSpI1q+8a/gfoEB34IHt4AyNZC/yWIYX/y9eygRKb210V0Q\nZGGrXwme4FgKLJ2EdeENXAfurJF+D8qwe/+ZaRzX8Z2mhHSiZapjn9KiDbxX\nKclJn4jaoRA7KZ5/UVKbHu4GJAbJ85Wkir7sTOzHpLx6lKzUgFSTAp/z5rYr\nnNkDDGlCC5zP9Yy4La1dcvxN6Qhr2k9gGV86v+fOmOw3yhstTifxI/MPEMGM\nO6XNR4y+papfMLsDl0kaFlZOY7HLer/R0iacJLg92eJrOcQoBFYJb0sl/FKx\nFHQGlgo/Iiz/IQJD3mWFAPHgp0z/ueo33pInZGO4+dqQsxXySQCkQiCSYgCp\nKeZRSqSgkqTkBaSdYUnWxd3T0pMwonGPm09P+Y/i3Kr6voFixuJA2lAQjGcj\nXqp9rBKqg0uzB8feCJvNKUS1M49RtgE+AnYrCGQ94lIlx0XuA8DWPhbG4WOm\nderSDY/w+MszWxJo+xXCBpPH3f1wUYezVNapVZt1bTleB6mujoSdiS77i7+m\nzb9K9dQTgx6Sbj3hn7MUIqKBT/01teEUCpaSl5eFlACMsWB/tzyqoK4OVAfi\nS4s9\r\n=kzg8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCQYljY6qendVSrF8KMe1OvXKlG6RCtiTGOI5hDq8MOmAIgFUIXIc2zh4jg1fe2h08IICABVMfKykIzCF7vw5Jb4AM="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.b3c0cf8.0_1599673003957_0.939234209404989"},"_hasShrinkwrap":false},"0.0.0-canary.42048ff.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.42048ff.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"0.0.0-canary.42048ff.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.42048ff.0","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.42048ff.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"build":"npm run clean && cup-build","clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepublish":"npm run build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.42048ff.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.42048ff.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-tH2NMydpDnEBsF2U6yAtv3fk0K9Pj1/eDhr7i/DApxLqfev0tSyUljsSBkaKv7JvHoxIxzSANQwxMLtfVVhH8Q==","shasum":"12c3696b95f211d6fdf389d3b7df6d10203445cd","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.42048ff.0.tgz","fileCount":9,"unpackedSize":19706,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWyclCRA9TVsSAnZWagAA+1IP/AtY28/FdU8/fJYXvaZq\n2NB6Tfb1cjGSGMj5ONNdTFBgID6CSuq563xOjB+6cC3N4kVzhPcnSM1SWXDD\nTIQKqbe9VcEWOeztuHS4u32RLSSLREATca3Q6FE321bXGNmMTMQeJMuPuKnx\nc7quIpVSZ6Con5um48AGTIkX6Ztxo1iCsk5lbiMWKBUWrnEWiU3MT1yYH+pq\nkuH1z1HlcnsVBpoiFRAKB1iYCF960gM24fs277phxyhAzC6p07HJQ7jcynq4\n/so6ao1WurCaFLzvmY5FIVU8btuj++G42kSMYx7vro9AlICeRK3sUHI1NVlS\nDyWG0FTwj1UJTUgfSyGkdtvdgoKNy373gkvE3h9IcQpbDKaqmcOWO60wmMUv\nNgEUXrILTfOAByjxLfkaCxglBNWi6ir1ByUe+2KdkMHUsOoV2Yn5U9+7ezrp\nyPMDFhHGxioc523epwjm4Si0mSyeLjh9hpc4P8Ol/QKs6nE7mWOYMP7PNbcC\no4xzGj8Y9h1eymV9PL7EKGRMpHTQZh8fhsFleTTq04io5z6kFLnctv31yQSl\n/uu9RC2SqR074PXvOvBR4o0f3xUV0JN3vOT4drvzWRy6CY0Momu9hfjGy1Yj\n3ReDRMrA9FnppYijnHGRAFdUXpLMu608xT7j7XoUMHNo+spmFbzmYdwWyHZ4\nljIG\r\n=euZJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDEn1Vl4pNqyIBW1hE2zhSvBSxaeJG3MZ1tjFHxgALnwwIhALs5JxSFq2Ynf9OWwnCLCiypB3kmRFodkZjmQ7La9B1j"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.42048ff.0_1599809317172_0.8469613524156967"},"_hasShrinkwrap":false},"2.1.3":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"2.1.3","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.1","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"2.2.2","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"2.2.2"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"build":"npm run clean && cup-build","clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepublish":"npm run build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-2.1.3.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@2.1.3","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-iZPmPsX14PUh0glqi1qD6b2QHeOo6EPAMHcLxxCvFjkKCkKKM9ZK6f/ydA4orGGMPTgamMRw4h2V7iAJerza8Q==","shasum":"ef8e6e396791de3b019fd91c1ccb1f9705f1d906","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-2.1.3.tgz","fileCount":9,"unpackedSize":19638,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfX/CRCRA9TVsSAnZWagAAQDQP/1NHTi19KpDwIdxVg3xw\nrafdhB6ew0mBGlc2oKf3cRJ1iz/M0+lmq4SIIzOSg3wYLkp5xSsLSAjI+VlZ\nvouB46eK0Q9qJ+1Ghag8iGsl8A2588/T9vOaN7RvPglVCyVkBMfJehJJKMQx\nfst+eNpwNBoLgtGuCyudXfIvC6Xg2pYSBglZBbanFpAxsVrMkE6HmE815aLe\nHeTgr4Kjc3ghORB8QUwHktwn+6zswjmrtVzAEZey4co2sK7lwLWOQ5iPdtzc\nyUDAHTqLomtxCs6LaS50b6q6ITCGjYZkplCyZ/EAeqznmC7GcNxjpR/8aUyb\niMSEjPs4BXEeuCWDbBQH/iPBYbk0LBxlFnTe/aAGZm4rfEhxJkKXuVQGUVXu\nSB3lZQLjD2dvxk5qYSe5t8V3i087bBmSqOW9xzcUbvXfJ90HJFPw3JcR+85z\npFYtbxL/bCmQdgroHyu5qxA6kePXCKohcatfy+Mz9zGEutVikVMOdCoTxbK0\n3pxKwfYO0zUINEOiKIySXyRI3x0QXOGk5oSwX1rkYl/93Y5pSytzrbPXJwsp\nHEAnIKMmYRCoy9i7tqOaW6tWDfO7eGpK2cv84x3xCnnqxYPI79C7k7Dr10qA\nr2iSOgAOUA3udcfwJZ7gGyvLTYfNkOpfA33Yv3bOrx9/OYeORYYjV6BkMPxJ\nnvPx\r\n=nylx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCgqWWy3xGhTW5G7iFqBZUYEXKI4hRvSgHgWU6VBc5MyAIgIrzyQQk0gFv9AYc2bjHYeeAUYrBrmIYUk+ejjkQDNqA="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_2.1.3_1600123024951_0.22174799664936207"},"_hasShrinkwrap":false},"2.1.4":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"2.1.4","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.2","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"2.2.3","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"2.2.3"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"build":"npm run clean && cup-build","clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepublish":"npm run build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-2.1.4.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@2.1.4","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-L55s789IRB/thRqL3/tmBeEM19fO4ywWLJwHpcLIiINC8wcSy56qTzUtkIr1u1c/d1PKKePsXvtMBlNffZwDAQ==","shasum":"4b767ecad5f69304f8fdff02acdaf5050b353b6f","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-2.1.4.tgz","fileCount":9,"unpackedSize":19638,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYpwyCRA9TVsSAnZWagAA5WQP/1bHYCWZv3/MJQEHz7sM\nmKfPgBirB4Qemlb+2meEtGJN3w5SRpK2TzwbpBGQZrMH/kvKi8pwn8oBnF9o\ndSaADoAR+pucG6ZrC2RWSoZ0xkEQ5GDwEvmoeCN+Ra2X4aiiK4lOaHDppEjt\nW10gd2ZpFxRjqGXhmHG8FYHiRdxJktK87z3QGtA/lKHo/yqIm8cAH1uvBa8M\nMl9/QS5+d1T6bt3NDVB5m7F4SS6hVeparITfh1FluTHC53LZrwN085kx3qGZ\nyL1XBANiv5TnAh8O6mKJWTZqwJuosWysZxFc1VjK0ghUWmh4rzP70vcYr1k3\nptdPaSW8ucjJwoTzfDo5Feb05er8yc+HRaWnT/QUq6x8UZaYwQWIw0hZL9FV\nedERBLAlbM9djLELAtPOASatjHMbHFqIgb5tzbejdNIdELUiYA6W1Wi9NX6n\n1k29x6DD8/VYcQ7uiN2UovJWxt7yVzCPOOvHoPj39P/vpfd0zkJDUh0nyEc1\nmOJOPbyZD0G4xgJFyOB8AQzLejV9vli1U13Sm9a2tlpevbkhkqazt8vIo3o6\nr0T7P9FHNe4iL52xq2d+0CHiQOioueih8CelzT8k4UkHxg8KOq70QtLfcati\nvLX6JRHJcTSH58VdLFccthh1RrLngrYxb2LtR8nsQiVQpa7lrZc2Qc+S0uXx\nCHmi\r\n=slOP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDffsJpRmrjsRsEQ+w+3517+L4B4k5uUW/JFhNfwiJlFgIgNh/5vsDBKJNS0HSyTto/Zn9YjXKplsRTCrO2auLyyrQ="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_2.1.4_1600298034037_0.6316405115563826"},"_hasShrinkwrap":false},"0.0.0-canary.4c67dce.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.4c67dce.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.2","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.4c67dce.0","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.4c67dce.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"build":"npm run clean && cup-build","clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepublish":"npm run build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.4c67dce.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.4c67dce.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-3R/TAjhNFEqh8/Ak/rost4ElaK2WuDmeYboHJCnu6b5ykOlZSA0kSPIqfsBjE+UBscFmLAYdyM6XV117Oq3ikg==","shasum":"1406280d38b2d4e5687599d772cae73252f3f6d7","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.4c67dce.0.tgz","fileCount":9,"unpackedSize":19689,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfa7ZRCRA9TVsSAnZWagAA8nYP/3vxUQO3/+iByN91UcO3\n0GhV7T7JiXBvJkCWrQ84WuzU0n3QTtOWo+Y/g/6mV0Z6b1h33tQcnTvVtUZ9\nWzbisl3LC51FFCInceZiF+1MZ04MB0sHRSMfbYZVbQP8UZ5FjAW2/CV8i3U+\nYbsg7+3mtV0qFea2GZ4LwD7vVfhP5qumLpQEb5UntbTanbz6gDA0G8VmLS+5\n/KJZkRk86+31Kjox7Dpq4NDz4lkPsVEPT2CL9n3K/rG9zHu+Vf6lQpuvTUiW\nTt+eBX7fPQe+2opD7CElpXH17fk2iGUlUD8LEzRzhslD9YkYfvgOPLGT2uvc\nhuGh8JhmIzWRReoKcoG3lkt7nY5rc90ee0dPZZQKLp0HjSrdqx0JEUlyMiE6\nQ3xX/bt2CByvUXmYEDjtAtLDteollTxDAUMzI0V8zW0uQbhURA3unBCztXMY\nCi3gQJJ2KO9bkhKx9On3bejRgqpQYcCgoiTakzvXSGRKgIVmE9ons3x9PmAa\nQDrtJwRYQVHwbW1Lt8tv1x2FdNGvQ3eUe8p49WbthcWPUbX6Vfrw905WU2Kz\n+Z+2hRuUbYrsp/KneBbkfzipDiNHmHoUVQJbrHnBFy3hgDQiHk2CSm3AqsII\nJO3AcnBBvj4BwtELNncugvx6wiAC8nYXzpCNfMdf20tQ3+5lodCsiiTY0G6S\nlwbn\r\n=Y50N\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICKknFiXEpiGX2jR4TPC+gYYPztxb8ZrK2VK2nlH/FrwAiEA19XdqwcbbB+7TVtP88rOS0HokDsTK43rCCsjDMDzGhI="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.4c67dce.0_1600894545240_0.5654787646420083"},"_hasShrinkwrap":false},"0.0.0-canary.4123cce.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.4123cce.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.2","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.4123cce.0","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.4123cce.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"build":"npm run clean && cup-build","clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepublish":"npm run build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.4123cce.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.4123cce.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-sCR2dF3rV3EZH7yOKOdAXtwrYv3/OLxn9wV8N0SFz9geWw7PALofeYADXzxPotgIF8WM6l2v5nLD0sH3IeNtTQ==","shasum":"10ddf6d262a00898ab7ebd68eeba70e834ff98d3","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.4123cce.0.tgz","fileCount":9,"unpackedSize":19689,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkfG4CRA9TVsSAnZWagAAAgwQAIrCz45qIK9/zcYrkQX2\n1XSw+m4yJzgiEYLxrXSiJgoPvk9aW6QBJBSKNwhRcfogTfigKgkEJROvkyAF\nUC1Iv9ij9ORY5aRS6T9pXCjSgpmA0R7FzCzqEs38cRqtsYHcdN66XvjiN99Q\nSgD9NUVexM0+Ix4I60ZHHvqdld0SXbUqGdMhmH6pvUNDP1ZjbfIb+5wlhJsC\n2BEWvsoenk4v2mJa90sYMF/RNQRJidns+zPV0EesnP2VuscElxs9x26UPl5m\nkm7IGw2mQgUYybM33DU6sfchbbKI1kDDtws0LUnbtEVbWquk5SLmpqtPg7cs\neGSfT/mDOhxtDEHPW8CvTucusVi1lXBblvS7PZgJ0stCqg2M1laD04oS91/2\nn7jU3/Dsuzs/vyHuVPGhBG0nZhSvDdj+gRSWJJdXOQTqsurQxykkj/ioSEhQ\nd0u4QIjeLzrJrM/2EYneEifRANZC6bE6G9Q4HkHdQmowtcrNbJz79D3NLVI+\nulnOPxT8xaJDHeelDsfLktwQ852amZosD+LtGSC48+eUY74/pkg3JqLQE7Tu\n26NT0RrdKuCP+peFuXwwVXni96tgH80bwugQcPTJ391aioE8GKYwtae3sl27\ntVOVzztSiuWKLxzk5kC0GuUjUqY48Eu2Szanc7i7/Y+4dX+eZG5K0nQc+VvE\n6S8O\r\n=Kx7C\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDPrOuFmAAxrtXDYyicaCmSG11dvFHeiTEtgQDx0vHBfwIhAO+J6cWpc0PszJyLQPyP0Rny6JDUPsQQcFfJZxQApos3"}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.4123cce.0_1603400120203_0.9705126144970031"},"_hasShrinkwrap":false},"0.0.0-canary.17e330d.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.17e330d.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.2","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.17e330d.0","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.17e330d.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"build":"npm run clean && cup-build","clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepublish":"npm run build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.17e330d.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.17e330d.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-me5IF67v2ICj9FGgWRBkK63uZXuMNEGmE8Ge4cVp9/ByR5aC34L+IcOOtgHZ3Ff9gGhaO98UCY27APoH60ZgRQ==","shasum":"167d0ca5a0efe102dae93d611000857f35323986","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.17e330d.0.tgz","fileCount":9,"unpackedSize":19689,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfl2ZpCRA9TVsSAnZWagAAsFIP/i5QT4azfFZb1sCMWsO9\n98X9GgauWn2mE30mzVT6LLG1PZ8P/KsLAkGT1xaYrCjlqYpqP4Mm94yjNRNS\nJF2auYJP/SJwZ+LoLCDiaP519goREL5Thpy0+nAw9TVqSsah1JvLSYgeTRyU\nhOizlaBV7e8s6lyOwQ3FotFysy50E6DXcsnVE9FpVUpVY4h3s5IN2/+9XMND\nfMZSWLzHQayCd3oevJ4rUIF1xN5pfFYpqjCZy2Rxt1Alsowda+NX2q/dsntr\nbNh69H6zjoTnGsLOUaHrOyMfq2JZPMv9J/Dwc4aFXOwV/X5dm/xvfhLE3h9H\nNoCeMODtS0ZM6wkKVJ9Q2jEFTXKclPqPyGi+SE7TMtdPAj9VhhW+w/p2ioxt\nu8IKUjPXzwPcQkVzUYWANM+KuzFuAsTc5pg7VCrMTD6I0O2DDausASegmYtf\nnJLS+RTvnJPAM0mBiSy079UGXJOKxzy2tEJUCGIwEQHyfYx+41UZkS+cxBrr\nFFJUx8YOvdVh4X/g8RH3knExoE07QzPNhGorVENAVDJjfm9MeEf4qNFs7nh3\n5Cy7qB0zek3VcPxp3S00Nr/PvH1sW6k1I8BeqlLdhzkNhblLqf5GOqkAqltw\nnTPK3lMrV7ohLQbfsVCqgz48rO3lC7XUe/YENEIo908e8Q3vgB2wlxhdQ4Ij\nA21N\r\n=2KeT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDaQN2OYYjDgmG8k95sBRJ5pgpOUGkQwT8y16WRpwIL9gIgC1/zBtxY5ctWWYr5nmFdu0EHWCBFec+kPpyBXA61+Rw="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.17e330d.0_1603757672949_0.7119589159248088"},"_hasShrinkwrap":false},"0.0.0-canary.318c08c.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.318c08c.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.2","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.318c08c.0","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.318c08c.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"build":"npm run clean && cup-build","clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepublish":"npm run build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.318c08c.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.318c08c.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-k/MJh6k4os4zD/qV+nvfKzI76IQUc1rx3TovtNMbdKZw3kLpEOU1L5+kOQhA++OWSLdXafrOR/3sxM6hUm5qUA==","shasum":"88386ce866b52abba68082c57f1b46792a789a83","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.318c08c.0.tgz","fileCount":9,"unpackedSize":19689,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnEk6CRA9TVsSAnZWagAACIgP/jsZwk7bwEBe8YDLaAem\ngDmOpAtQbWUM1H4ArYZqTJyZefNldoR9PuMKABBe1ehtjEw6Vo4gEw1nKxME\n9W0PnXAPemUaskbA63o0F99tLgt1MrVxCb791cWK0j3lIRnd7MvLk13o+d+g\noUvn4AGb4pDMsGQA/C8nNN2jejd3/r6HpeNMzPTPe5tJhWsi9vCkGvJLDKcx\nxhNqW5fcnua/ETvYdgCC97MKPjZBzv7TeP3fvcUiYMKWkNC6fuJj9f2JOKmh\nebrWoK4HjN1ZMcA1GQ3sDD7dSj2ag+cjSFzcMau7Ic4KTSFPTg5TeaSval3D\nnhL3T9L/AvTDPzcbOpjO/LwARkBDeOkF+xum5+9mYBiU20aTPDHuQ+gShFeg\nQyF82c7XVHlDxhwrNdmdGYh9c6C007GPfEpyYPEWdiIHDp57bOkRleO5fkoq\nQ1FKppmLCIKquJnnTO5jtVOWMbBYb7TJyawFa6wKgt+YY/13+lRXspnAxHLu\nUXcqisbDDnu1xN92NQ4TxU2w1loboE6wJh+LG+Kv4MzBKp9YQxTAUh7CJcYG\n5C/euPLsLBxpj2sRcdkU3wvqAFNvJ1CaXF4tHuq5unEHJRoGTlf+JqxmjvvV\n4t3unRSfjv8YkSYlBzPLs7mh6ZLpSXKZ0DMKpzVrSyZ2QXQa3h6dCZiUhbBv\ngJ12\r\n=8cf9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG3lDpbeTMqxoJzxU9oEJzJIbwRyrpZbBZsZhoKFvvcwAiEAoR3w+x8rnsAUR3aZntxKgQaHQ4MoZxawbfhwBZwGRGU="}]},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.318c08c.0_1604077882290_0.8197086456026226"},"_hasShrinkwrap":false},"0.0.0-canary.e74b783.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.e74b783.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.2","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.e74b783.0","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.e74b783.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"build":"npm run clean && cup-build","clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepublish":"npm run build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.e74b783.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.e74b783.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-75zg81REeMJXY2Kd+PlPTnrbLq8wkvgTh1vz1cbtXEXAtG02aU9clqj/TrAWR0DUpf9JWIGon1B8rrKIPVhoTA==","shasum":"75e98e8afa3e0bd46433b31e1eaf5ca2a3981aab","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.e74b783.0.tgz","fileCount":9,"unpackedSize":19689,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfovrQCRA9TVsSAnZWagAAMykP/3gzx7jpubXG1gymbIcs\nJCjs98Ey2vLf2gcvUXp5tY0t7M0+b1KkgL/bfKsA3oR96cVaEc7TWgOkTDNg\nJkbG5QF2+W1/Crbebf+2gSxnyrElTF0g2HHHU9IsZvbWbXbSDDlsTFr0GpU6\nk/yAy2UFAxwijlXh2SgQAavD1viuBo6R4AljMDC65BOG+g9jOD4q6Et42/Bp\nhZSVheJf4rKOGY97JZZROEONgKJlsuHWyYzqPUDYg9kFjR9xjunlNu/7i2uk\nr1j662NNrfkUisHcNNRbNPnLPygil4sZ4PZP4y1fN0+4N1EnrPdvJsGZucry\nsywHbvlVrkjGt+T+2T7PqnLXQNKmj5E0h7vMnu/PoScVzxGpDQc81iWAK7ft\nOKavbdm9nA0l8Pwjq0i0zdhzJIAkQ+u/Up2Gghat1H/vJvS1Mn15XC1Q7noL\nxu7Eke2IDZZIyLboHqt1BlutdA4cGUFzNNSqFVIvoL1C5NqGxWXCI/cZCtcK\nx5eQFahSbgcnO4UTT9KpH4qcyMh2O1vKsa6c9c+q8d8FF2cOkH6ErWFJTXTL\n4pCtbs0xjG0hT4VMyGr0hSBV6yjsD0X/68CcTlhNWenPiq9FImPpWXzTyrZN\nx0emBgWKaYHf1RTG5xLBvKVEFp0+CKx6ZNSA+oGaDE2QXen4KhO6RaiN5hdJ\nVAQp\r\n=c6Rj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDsgiyjMG/7M3WK0OUbPx6N6m7SK+Z+sgvidyH3gDrY8gIge0EWDxNW+VQvVPPP5LC+KtygkOLtxjVR1eaX3JVM5ow="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.e74b783.0_1604516560040_0.5705636976145121"},"_hasShrinkwrap":false},"0.0.0-canary.a33a9c8.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.a33a9c8.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.2","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.a33a9c8.0","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.a33a9c8.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"build":"npm run clean && cup-build","clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepublish":"npm run build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.a33a9c8.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.a33a9c8.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-Gxqo/iBR0NzRZMXV9S0arVXc/NZHz6e24129Qp8M/MM/EmhVNydQYzXgI3fmDXziqviTg+vIEflVU5BQL7dvNA==","shasum":"f5a4c45ce48aaac73a6992902fbef1c416031f55","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.a33a9c8.0.tgz","fileCount":9,"unpackedSize":19689,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpaqxCRA9TVsSAnZWagAA5LMP/jCT0ghEjlh+DhvUi3nL\nRljdU1mMtmGfp4bLAH5cl4dEaai7qQZj0baijL2cYW+gVLv4xtunZXXc4Hfn\nNxz6iFz2JacHpw32jwO7GHxvjM31Xf8P5XGa+i8VJHutyKkUULMGdSxX3vmX\nphekDyxn6t58flXjaKXkDjdMqOVLOLq/Ed1/s7g/jsg9hixhWltAVPFLoBYw\nNWCM2psbM/IpgIrgNrlISBHqdLGhXaf7E/UsYd8wDMB8TiLxhBvE/RH8Ap6i\ns7irw4slLAY9Zv8q7yRyStNlOK6jyT9c35PGmfVCv99T9G3LZLtK8+1glOc8\nqQza0W4FJnyQl1WoTJnoRVyuQh+MuNF0mcHW+XUnfFYGpSK6haEx1CrVoyot\nJQFpdt5x6jHNC2Cl8/TXsH2X3ak0DDx2W3MKRRlwTpj3kqC0D8l3oJJgEWP9\nqE5NQI7VDD3baV371Aw9Dekdu6Mfl4QwTzyEplgQKNGA3DSSVehhQ6PT9Xbe\nbwXINEVp/cYSAL1TlXYbhSxPLhA4EEIWFlkvr5G5KglBPQ4p/qOWf9cszobc\nD4vAk62G50SveB2h2FwfxSaNXfMxRwf9APz2EZyYChJ6oanfUdi82MQ/9bAG\nY7+s2P1Qc/5TQamsclfpPb4oWkkyehQoEUVVreA1xil7jlWrFcfneU69L163\nPAB2\r\n=16Gd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCAILbu9rDo/0mgfIoUnAu8BhucTmMi9HmtQM1GS3m5MQIgB3Tpax8++ZsF7u8KKcNewJPduFUS/YzXJjlf+ZfSH3A="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.a33a9c8.0_1604692657424_0.3910104136873105"},"_hasShrinkwrap":false},"0.0.0-canary.5a2a7a7.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.5a2a7a7.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.2","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.5a2a7a7.0","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.5a2a7a7.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"build":"npm run clean && cup-build","clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepublish":"npm run build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.5a2a7a7.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.5a2a7a7.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-WRLrXHrqSGihSmNKgjCJcGvak+aaFJhbQJG9NlJ6/KdYJ/DIfZDoPIZluiTU2h/NG8vUMSrKZGXv0d/gFatdIA==","shasum":"bcfccd882fc12e0820e0547199c795f7017dc9a0","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.5a2a7a7.0.tgz","fileCount":9,"unpackedSize":19689,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpeSBCRA9TVsSAnZWagAAEfQP/RAafZd34sGNzyMTrDH2\n7GxSB4YJl+WfPi5psGPIbYXDJWGPkBFB0VVhH4qnXVKckWCEFdHry9+zlapt\nw/WIRxIShdWqRIzfsV+sqLSflWuC5WvtQ9xpT3OrCK4H9G0wFpiauYvGqT5V\nbyaelesvawoSH8I7o9R+nFdHgkAKX4rm5e/yDGrlZQYXDvc8IHeJMyiaX6Sr\nj4C2A0mFu4TCREDh8aHbWFqOFyGesgbJilIKPD3sgw7Z30jH+QwN5/AtBzit\nRcZXVC23U3NN8dYL5gyYMZxVCEhtnrHVFGSCLQYfQsbNIHiuwsuZsZLFcYnP\nD1dWuayEM9gy+ZErLJI3+m6Ge6zWlzyZBIZZF3y5CI4KuD+zIuYM1s+sqaLQ\nGVatD+L4ZfPF9Poomlp77dIbkvXD1+fxVcPT/XKz/Uuw4SEJC3s0yTanxuao\nJoye1TEXtM7eLB4B+bMx7UCUmzRO1gGeDK5zOxikGPj22OW707U/xVaeWNEQ\ny6hyDAXsl4Xel3pQBCCfrCkQ2EFvlzFTYhvBjoUUBp8Fehv/MKm5T1YHHtH+\n7V0ph0DzBR1bwtoxzg0bMxJ2WzeQheiG2DAIEBR+kNGYV6XAOa1E5dYKa7Yg\n3gL2sMbYuSzj5DES8fl1dm+uKTaHw/4ymjIpC6SOiImaSzK5J94vMmc9RGn3\n8yBp\r\n=cZHO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCBz/loURu2ahEhYWLWjL+FAUHszzkFsuj9rRpRubxeOQIhAJG3iLX0zFuMLpB49GkjlP9+zhukNsbLbA4c32sBB2I9"}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.5a2a7a7.0_1604707456638_0.4582917552461532"},"_hasShrinkwrap":false},"0.0.0-canary.77061d0.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.77061d0.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.2","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.77061d0.0","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.77061d0.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"build":"npm run clean && cup-build","clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepublish":"npm run build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.77061d0.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.77061d0.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-5qJYlQQNwwHZGTYK6pS2nnhJPYT0opFea08Fl7s+KZrWAbNUpkOIIrNOt0b4nmPPxkggmVW0wCQZEGm+IAhCcw==","shasum":"b22a48cc4afb961a9bc4cecd38a9e20bc66f39d6","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.77061d0.0.tgz","fileCount":9,"unpackedSize":19689,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqZKfCRA9TVsSAnZWagAAyEgP/3M3ak/XzTHzx0N3GFdc\nduhhhkyoBphDEZVTpRCHNOQOfEySkSXvJQP6f5l5lu3qkRw6AWI3qHpIiL1H\nxdDuSB/+AU3HFc08fNo+bHntet4S4jbCe/65YqwuVV/XDsZxi0hsBxoQ/9VC\nvbrix/tPy4K0jwYgmgmsK3nuc8/DdLSMPCakMf8wJGQOz/qRdypCxiEMqUOl\n1ATXZZihtPwqjHm1lekY4oRoW8fXwyZMj0Sc7DnPinnu9vWnwF7l6XtwHJbZ\n/0ubR+J0RXzatkUjhZkbw6SC3mwJNeyGw3UFF+up3DqnHo7OF8V1rDYQfMxt\niAJfBr5RLevbFRygeb9k8WonGodvhS3aaFVum4DAXKvwcIKH5VpoiafbVOpt\n/TmEJEp5ICr3IAqADBoNo04iGL9nSwm0DaDNXlWsnbm29es1oqfQCU5C/OAI\nQccXnU7vdYyRcZOXo6MJHtUHdG6HOzFJ8tttMq8JtLVBn3hLf2KAOCfQjNXn\neL2sUECYeYlw5cEpwlFAN9+dmqL1Hkj78xSSDjZbWgWzyCiOkiodaWtEwN+Z\nqIwmN8O+tTPks6A98it3Uvb6Gl5LowpCYhtP4tObz6XUrJMVVNna1MxPOWY2\nZNinUqLpzTfXu4Jpd2HQp3lxlRBHprE/oErVlOmoma6f5vxKHzzq9lpCnPo0\nTWXJ\r\n=4Snb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICXvpimlRVWglbQyDms6nwUr4yXM0s3ktpqaL2xsXueCAiEAkaoEZIbpDTxWv+hVY1lOeSup6uY5b4w6XcM5BznqDVc="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.77061d0.0_1604948639015_0.4528157877247392"},"_hasShrinkwrap":false},"0.0.0-canary.89ca12c.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.89ca12c.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.2","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.89ca12c.0","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.89ca12c.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"build":"npm run clean && cup-build","clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepublish":"npm run build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.89ca12c.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.89ca12c.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-b7KKtdJ2X8/WgVugErJXwx4e7hxXrHtOmrOuWHg8p7rzsteQs+u6TJJoolqGHjlqZolnSAwMtr1bot0TfkAdWA==","shasum":"47ddfb0d508ec343e9d595fa588686acea1f8444","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.89ca12c.0.tgz","fileCount":9,"unpackedSize":19689,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqu1JCRA9TVsSAnZWagAAmo8P/ieItCofEnxKMQDStFt7\nBkhxsvjQK8AlEs9QVcvEkdIc8v/33BVoyYAYGrqXc5wP3KfBz+paWpIaxyan\n1Dy04kSOBdACGuiCkZXoIHfYLoRuluqekdQVYt54jsR34fhbCobQL3cREzOV\n9Ss5SfDJ0MoNbkltltv/n4EwxxA+v65N/dhqQq3ei1xBTTr1Ig//UqLSmU/A\n/+RDAWt1arRKvtAbAaMjS+bPloc/CqUb35VgACuOz59bqYS1oJb3M+9VES61\n+dIozGn7P4lEB1Skon0mOYx30aHOc3UzrVFLJSAYPopCRViCFus7kdLbeyN1\nTRTqTTafuMBmhTKN/Hr8QIVgJqK2DnQu8sfMDZ5Td5wdidXrGVe26j61UnkN\nik4PfnljOzfR2Xqf76S90j2qbXqzImUwd/YEXwW2IXrVCTI5OFGxc0/2uIVn\n39I94VVPrpFRCCPTkDEW0LYl2zH2AUs35ZFV0uNBsAjNYbHC+ZiQsSgS9ecc\nebz1EY6FsUrJ2A5mgVJDkdA/YvuD/EA8KfxdkRFhZh4fLTMDRHKrniG5AdQY\nHxLsYjuQgaRuvfOXcEh0jsjfSo+6KFwSsRRT48/4ROsGmtQQC9Pozhb8XpXy\nw73q1EDXXXQ7GeD1BWdN/e9LN9eBLkgJH20imxgbdEsIlX9ZBmGFupGpFc7I\n2WqD\r\n=xJLa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIExaNcAoxrEKBzPuRfUGnTnUHPBTjjfUnRkQ1+sAOLy8AiB3QXciDTDS9+KpnFgIQ9Qku5t2m3cGet30ULjkZ93SYw=="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.89ca12c.0_1605037384591_0.18999191301743723"},"_hasShrinkwrap":false},"2.1.5":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"2.1.5","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.2","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"2.2.4","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"2.2.4"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"build":"npm run clean && cup-build","clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepublish":"npm run build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-2.1.5.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@2.1.5","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-RWb538Fm9pxxtLOiT7oZcTpFYByYclkz3iiWmX6MN4W1N+A69bcTUObDF5MvtsKSuLVFT6j1UNZoLHix7Rt9zg==","shasum":"3702cda436f5dd00491f07687f45329503a3f46d","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-2.1.5.tgz","fileCount":9,"unpackedSize":19638,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrtnrCRA9TVsSAnZWagAAy3AP/jX0n53PZKMuTsxq2kh0\nyW3aObb/xAbFslT629bA8EGIdT0znoBCdFhaQthOa7eavrLX0Bh7VseMuDi5\nz9DgdOXp7VsQEdbr/JqC/cSiHz54dA5qdci4y/JN1FjJv2BJqbWXqqxVooxP\n9SoIbuikh4IFGa8KQGFoLiMiWrfU+WIZbs0RIlE32CEWYPnnE1iPYxTnrEk3\nEnqIRtM5teGwQNjVjz2vBmCN4PCaahfKowmTnpS+0fTRCD4PewNEAelMlkKi\nnOCjXJgVBeJqg7z/Rz55Tf/NFTT1j7nnBYUhQxIuj6FGwMpUYwv8KQxVJJ8H\nZND4Gfco+Sye1ycjLp4b9zCTvhHOA6MF1tMXapUwisLFQb1AHZ87IB2wkn4X\n413H2wu2cItab2qrzwYjlZLQulHspi+nzDqvShJ+Dy/iux/ba8ubja37v1Mi\nL31z1Rkn4uN5iCj9jaW3YpAVzijfo47ip3fxI8eHJM27HcR/kYC7BxKc+rN+\nx6PvrQ2QvM1o15f05gygyhk2sU1UoI7aQegfw/OOs5AW3RC4/CDOnK/PLvj9\ng2LKlinoPOd5Lp9jowjW7X8et2UIeTppWZbZXEBrqxJJ/jejG4x/h9GRGKxC\nHQQcTPnQUSDfuIg35B3tGO8SgOZfY9BkqI6QhpteMX+T2V/AhjLYuQaZ7jTZ\nKGW+\r\n=QAb+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAoL4GZe+8PbKYUZV+HwZrCCCsGspdwVeRPz8//1d+f0AiEAt/Asf0Jzt94gNjDToZ9CWooFq5AGBymHM6thPNhacRY="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_2.1.5_1605294570879_0.6334313770989393"},"_hasShrinkwrap":false},"0.0.0-canary.770d485.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.770d485.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.2","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.770d485.0","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.770d485.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"build":"npm run clean && cup-build","clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepublish":"npm run build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.770d485.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.770d485.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-hbDkIpIqSYHKHYORXcxZeX5ub1YGDu+j36B7D08d4Q1753R9kP1GD0QH8XcM4D/aM0U9lL2DHNFXcxBAqRjCAQ==","shasum":"652d1b0e2c1ce0a611a91e59f0e17c3f9ae6c808","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.770d485.0.tgz","fileCount":9,"unpackedSize":19689,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrvkLCRA9TVsSAnZWagAA8uQP/2AhlGzvHynG0GDJdB68\nT3tIE+s8HMhxVpC24CSkJHb4r5BwXEBz1osQYr6il4S3eKuXYIHPmueGGOPu\nDt20TbAiRGw/h+1VXEUQN7aA4YXwx5nkgsVxfX5ikmlD/moN0kyMvsBDu+Jk\njZColoRxYy6TTBv+CgWElt7YLtTy2If9hN1NLkzchJvDrz1Zj+55FlS5KbNX\nJaekztVRMUh+u5lStYYgG0t90+S66wjI9Hk9LDArrIcpFpyQp5urtz/HVsr2\nmXTMHXI4T8DwTIwLq+cE1NgPUJs7/WkghZgGJY7ypJVfFQzF5gsW2MI9rJfc\nF9FZ7buTqSJqt0MIkM/7MdtCVkxKK+SrRp0h3GLm57/eFL4syGRtI8LCR7Uc\njJXUVLM0ejlue/4zg+5B6EAOBTSQCxM9gte2fiAiN0Ctv3/H+8Aj8Z1bYu7z\nUHsWA/C+9j8i/NYCWzdUo36K9MxnEQZHdFkIJRoV+yHF59BplCFqyDg1Gakf\nv262dLZAaNjxDPeE2XpvvDBCWTR8A7abP9udV7Knhk7ucK9YDcosWtvgUGox\nFIbpAh/6dndfo3/kFojnAHEKtz5D+dtqzLxO4Uqp6klCgt4N48quVivt0eMD\nC+LtRW1wMsNJbprqAiANzBSmtZvdbuyTnnazdiWfXSCnwsWJ9URTjTC3OImx\ntELj\r\n=uKo7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD8gcRPKAOvirGJHxKVwSHZBK7AHEkGk3G0QNxhOan88wIgWKrfJpIEjAj+Tmj1OWapCc2Ic38xx62ZHKe1TgzWSpA="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.770d485.0_1605302538822_0.33991479690373616"},"_hasShrinkwrap":false},"0.0.0-canary.6d664ad.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.6d664ad.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-proposal-class-properties":"^7.8.3","@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.2","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.6d664ad.0","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.6d664ad.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"build":"npm run clean && cup-build","clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepublish":"npm run build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.6d664ad.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.6d664ad.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-yPH0oVuaB4xJj9EEvSK+yWUzqvGTKX2r7H0skfV+D2kXmaRtA7K5x/6ZZEoMn5sf2mDZoyD/egHrDw2wG9ExHg==","shasum":"d171e34c576ec7e999860f0047c7da8b52e4db80","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.6d664ad.0.tgz","fileCount":9,"unpackedSize":19746,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2o6tCRA9TVsSAnZWagAAFw0P/iqYsiMHqAlxlw8L4LLQ\nN2MQnMo27Y4C08HQAzDLbnXEz7gJCtEJC1onVz6yuqw9vG+OAQ1Xn+DCzbNt\nYUmokHYzXnZdAUxZaCmOLMD31dYsMd2EUluYz/ql0Z0ML3iiQTH6BChzT4eR\nIe/jCRHZu2hB1uKYXDMd0tI51XF4V3LvVa6dQD6m3q6NGt6zlPENtAtCqdd1\nUnRWf4hM/y2Q+vHXFWmIsVK62jFn2Fxmc6/KNmXeQ2U1OfvnHmAWZSnV7wn3\nsiTl2iIA4lR153mRy59VC+qZ2Rv0o92kkGTeBlfoGIudczLy9SF7QnpL2TzN\nHS2I9v7XZdwNRiSFOhblAfaFwOrlz2XifgdVK03Y6g34HhPzryEfmafnRQDl\ncVzMstteVlpKdzSXt6Pp381jSNMFiKRqMBeXo7R1pyc9yTUQ3YC/1t4/BtQX\nB2KPz1KKhY1qJ8Z6YxxM2UyCmm/fhUejMJskwDWuy6qGxe5mFEEP0kHuJFXo\nbVu9/wnKHY8gOD85FUw3D1LostDXKHvEhxUm0VEE7c1Jc3xXDxofTu/KiLkA\n+ifTxDfdI8SUjTnaHKOTyIIExFUfRt0pjd7WDhy5MvazRWW10tCr+YoByFZh\nGhdVXVBOule0KxkjB6XbsikSaczWgsRaovdHN1xT3xvtwSJnxMa/gX3uOT1i\nJh1H\r\n=+yId\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDJsrzv1bRuth0rFc7zlApZuxbB1bYWvcmWhoN0xwhu7AiEAqVgmu46N/fwi4SqrBQ1agHKcZcZJIeHhT3r8ATI6IFU="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.6d664ad.0_1608158892841_0.03915819860240233"},"_hasShrinkwrap":false},"0.0.0-canary.579111b.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.579111b.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-proposal-class-properties":"^7.8.3","@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.2","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.579111b.0","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.579111b.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"build":"npm run clean && cup-build","clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepublish":"npm run build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.579111b.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.579111b.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-FbKm2KiDXFEp1dr+KuoGFOCCduj/Hdu0o+6sO3X5ve1oW8IkfpagJOubvCzo33Qgb27YOoQLrIHy399xQbbR/g==","shasum":"037540cf90d1a24a9779ac9e57b7ab00454cd8aa","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.579111b.0.tgz","fileCount":9,"unpackedSize":19746,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2svNCRA9TVsSAnZWagAAjvQP/2iA6MiKWFxhpJzUlgeN\n28lWDvj2Ng/klpUklDUGG2L4H7fuyzWQd5t2hIJE6sLMDQkxWZQShpRDcBtA\nXpSP9Ew1RGPi2VKLb0Us9xCtPqw9df164OHxx6cblxTtWj0+SnVI9RHACj3l\nYCSsdlsfF6ZCf6DNPnW0MfSiBnHj2pYXYKljiavCcoryFjOKDjCA8QitF3s3\nmdLuBdza4bIUULRx93T8zKuyGC4Z1ZyWE/7ZkVCFZAVB1dZzlvhtFOPXCmku\n/9WHCSWgByOgfqpBejLi70kzLin2tXo4ija5h16o2ERG79KTfCM33yiV+wC6\nKr/GRh7sRhTEkIEMWYIraT/5/s/qPYREmM0LYqH9nZfNxZnQ8Yh3qQRhfAl2\nmCbkEPiipyiOw0Xz1QlELX9QLR9nGBuQLOKCPOwyUQD3o3/zcqoJsWRbHMD6\n4uh0jKhGhRrvcHGG6Frky5T5NXLDFjmRkaNgRfmvzcHR+PS/ap4k+Csv/jkd\nx+yN1K35f7OLyxMb2IyRNkh6si1xepvcYAu25x3+bLQVLvJOrfzvhJ/E94Ii\nlp6LhijHjOPUMYnDil7vynwuRZCEkeS/26krfvFcpKZVb4clBx68uWHb6Uln\novgHCVar1nBdR4Bo3WKQHNpszptJ5fGiXSeAI/POTK+Nt0huhyHhVtx5q9NI\nHRcc\r\n=nK17\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCt168XFn0twkc/3ZmbZQNJL/Dm+9QfK5phvcarMkOqOgIhAOHsvpcC8LrvQk2CuofGV6XCfrk3r2HWbg7BvAvyuzJe"}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.579111b.0_1608174540846_0.39068247699620273"},"_hasShrinkwrap":false},"0.0.0-canary.2eb76df.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.2eb76df.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-proposal-class-properties":"^7.8.3","@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.2","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.2eb76df.0","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.2eb76df.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"build":"npm run clean && cup-build","clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepublish":"npm run build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.2eb76df.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.2eb76df.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-9d9zuc865l1wb7Ljr5C/TeqKQVgTn4kE1HYFpTbdgC5hy5W5WuRhqNyVkuhrns++DN2Rsm9q/+ulZZpbyiKpZA==","shasum":"edc7807123f5076445a3bb6a97d9e3845168aa68","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.2eb76df.0.tgz","fileCount":9,"unpackedSize":19746,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2tUNCRA9TVsSAnZWagAAqIsP/j6RV5aCW+PiKqNQDcOb\nrjipfECaIAlIadHQhEnesF6Nx+mQmFTISPKDiYuAfoSXDM3/vDyaE56uj3Qb\n6Wz432Ke+kFx0/zEdgYhJGWEkF4WbmrFuCOIEL7/PLmobtxUXqDCTCSOUqN8\nXIF0FBCDEHgHAEqZPuddx+b3UmSJHEiiXUjPC0bWxuXn0PR02h7IEEBTVhF9\n1PBFbxWUKf0SVRx/nr9fJlrpKaLE/wE6iRTnfR4RkGozgCvqmX9DeTPfqjzP\nQPsU+j9y357c/3K3j6nM9z75aiqFu9VTrVZ2AB2smsguaGh4TD6mAvAb8m0d\ni0kvkJyOb00s/x2ZQwfIRy+ccPzRViDrbXKVXCV0Xp+bWWTwU/KSTJtizS49\naJIlZ088xyWVvqSyPwNDSCk5kjr2pBTNWcLnptLerad7gr8fz4hER7kRohsJ\nK253WpKkKpOo7C1qG366zOuAwIpoL2cgHvp7uf3OQgNO7dftzbBtMvhlTdmb\nDz0EkdV2IhcbChwd88XL1NCU3s/Hv+xr4311ZGZe3ZsdJ0tHoab6nYWtorTS\nf34zalJJ+VFDp8xX+inOFRmwAoUI3/1KSV0L8XALO0iWNE1YXUrXFkrOGBoS\n9zB64mxBQLGDpwOW+kG3NkLlQ95PhxPMsNrlx8IU6IeIL0FQJg1Dnkn91tG6\nFkV9\r\n=YOKH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDW2QjMjux+TI7LaamnVqH3yvLSHA7Lbq6ONHSG4BFa4gIgWOjVePuCmX0erTtXN9b6XcIROGQsu2ScXe6StuQEGgg="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.2eb76df.0_1608176908856_0.42823926091167475"},"_hasShrinkwrap":false},"2.1.6":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"2.1.6","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-proposal-class-properties":"^7.8.3","@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.2","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"2.2.5","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"2.2.5"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"build":"npm run clean && cup-build","clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepublish":"npm run build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-2.1.6.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@2.1.6","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-eruQh0inE8dvfCxNoWnB+sgr0OApzfgIb73+50asAtmecPKNV8Pr3PgghPnzbu4MTC5RStqyhYJeL9Jw9iLJ4g==","shasum":"5f4c1816dae88003f6382e65d8763440ebf75238","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-2.1.6.tgz","fileCount":9,"unpackedSize":19695,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf89bwCRA9TVsSAnZWagAAV38P/RJ5I+uRdg/EnrJDSCuI\naYCcsEF5m5X1mh0blZHfq9siJy2l+S230FkafJvR9r22NVvnJ2ZQPTN2Ad6a\nCDSle/wW9A2pvRn3zpby7S874hzFrxAZL1ZAs+kiEvVFrt3Nx/AG2bcHXBug\npKMwVYpVm2+00lwbq9+s3BbnGebMz8djhOz+Z8PMV5JnCkV4Dl+LkKjbC506\nsAVwuKhQRZjTFHq2bLo35ljIox2nw8nLK16UXQ+3GoITIPcbU6ogqwgMKMAL\nwaUaakQ+ND9YKUtqAZwLkduxXe+2xaTQL4qNDaHlQUFPAdhZfQnG1QhW99Ks\nc5xvAdR2cZj5EUgE1fo3s8nSxYtQk+KUv+6d4/lDdVLq99d8NtnSCGglOp9/\nvoDYkG10yHDJLDJ25PAo62tdc2r/6ZcK0CYctqYP/y+9+EaHPE/4gc5FLdRv\n7b41w5P3bLfvGDvqB84nbU1iBeq3CDNKB5UJXd6PW8GE8uWY6ilf/37bVLCQ\n7qmaWo9PJs/r6G4fw+CM9C9wMW5SCur5/m0r34x4DZ2vAiEWBmzLbvkXpA0H\nW/By4550DUzUaJzF/pNFFAPy81JWHDqF28NwjUwfUbse6gGSE4cT3UMCwwKg\nfOXQJBCbwtGgbV8tXb8nEJ4FAULqizBDD1r8fc/ZBECZjCEmJ1W6ZTZcCsqk\n1tU5\r\n=KCOt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICHzAn9rxv0rwgXIFUc9Zv310MbSYKJOYbmV+uZ0KcbEAiAvi0zavCPwNhhkxObEc9ywGASBOQcMdMnu1J7blKtDSw=="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_2.1.6_1609815791568_0.3320221381707922"},"_hasShrinkwrap":false},"0.0.0-canary.4cee1e1.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.4cee1e1.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/plugin-proposal-class-properties":"^7.8.3","@babel/plugin-transform-flow-strip-types":"^7.8.3","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"0.0.0-canary.4cee1e1.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.4cee1e1.0","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.4cee1e1.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"build":"npm run clean && cup-build","clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepublish":"npm run build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.4cee1e1.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.4cee1e1.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-4fatNJqETr42FHxO0zV7hEX96MxFDpv7Dd1vZK0AFzWO++fqXq4j8a7KJVgr7yDpypOLnmUpW+ZU4WW8VLaqUw==","shasum":"2dc7579ae77a0765fa50099b5a9c8d63cf695f98","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.4cee1e1.0.tgz","fileCount":9,"unpackedSize":19763,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9N2+CRA9TVsSAnZWagAAsRUP/jeT8GBdt3Q9hUlMVLTk\nCuXPG+0KN+hr8jW7ywDYqtwvVzwHJ4zF59H3yqSP0WA0yl/Ekj5ybI7zvNIC\nx7PZuJZPSjp8NQnxo8c58mhwXV1FHQnRXFrCIRVTaq2o5wmS1joQQB+30QkG\n7c6wFw/gBTOK6vmlnjUJwB4W3dqoygzQnUmJBekVJqvqNictttKL0hs1Gqwe\ntZna4YJWIcoQcNnJJwcsRrwqjWIKsRLDsiphCL+OUZEt4BxDUg3V0bxHjAUa\n+WHR20gidJdkENbEatLdv8+Xq4/spwgaGlzeLkeL3EPZIKBXuDyY2EhKmXEn\nQEmFgpxvXhMfMutZWPFFLenwR05MyTaIlrntEdHjPQ9ak6PHgStD0eZSfckU\n7H3WxPxDaQqQxoBta4VlPX5bQukNl8HH22W5H5YRWXYjj06Re0rkVfvGELhI\n5vNmnSjlbcvxImD2ZA2YBdJKuDw8hg+vuGn89+F5XxBgR7Bx+1dEy8o3M6ch\np7ErJCf3x2bxqfcq3ffgh9eaPexh+C1B8uEwxRbcuvh/hVPi8o4/PyrTJytK\nQPqG3OSa68JhmwX1FDB6vQxJAOHqsf1SZPPrxNcuA2/zQ1zuvsYDTnh/1LK/\n8QRhJMVx9Wi7Le5V6tW1dPhXVcBin69c7QdMIiRFPQeSbmmi1GpQJFt2YfLi\nLG7l\r\n=qsyT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA82F5b2OvGFsjIJw6iA6dLiFFsdUOz9eq6I+TyD9auQAiApDn9YwGsrIRWBx1LgET4Kd7ciNT0251fDvlB9tPmrPw=="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.4cee1e1.0_1609883069925_0.9823311176391751"},"_hasShrinkwrap":false},"0.0.0-canary.b936566.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.b936566.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-transform-flow-strip-types":"^7.12.1","@babel/preset-env":"^7.12.1","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"0.0.0-canary.b936566.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.b936566.0","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.b936566.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.b936566.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.b936566.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ddx+RMU5ST99OnakgSrFZb+B7MgGEJLdW9R+Au0Z1CczT5aljerbq9Ht93/8SfyroOBB48miZZLF4oQM3kcwqw==","shasum":"6bbc48bfdffd761e9cb03714bdcf9c00175f959d","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.b936566.0.tgz","fileCount":9,"unpackedSize":19794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCI89CRA9TVsSAnZWagAA87UQAIyFfn9ExFbImNN0fw4g\nmRKW/sSV4ezJSQZLou/T2IbZBpZ3Gpw0dV7Oldm+ByI1j8LPxv6KKoJJ7bkh\ncD6X9TXhTVkepGzTMbTdIAtLctvrOhlG5h9SLa4ve84NJw/1+8iW9+O5aLBJ\nwhUzi8PQVu7XfJMbxoLX7qpAH4KZlFzNvSIOqh9RYSJT2cFG0LQ0HZG+ik/P\n+taND46E0FjE/oRgSRV047vQJa6jLpnyy+1+ior0M5tNP32QWf6FOptXSOPK\nNq16Zy8/ez/QhwW6oCIp/vKYR6XDWCXOjqE9qRW1nJIE0iFeK1YpM7P1HoCL\nZbEgsozVlh1UzMY2WtrnQT8eyVcROv1Pgs4w1x8PmnO4Q9nyn+8qBFANrUzN\nBGeegvK0IaYasx9LNNhFpOPcMHlHVJ7F0K0sbM3kQSGHrQqcsVukib3X+yZA\nxcgOQG8Gh4D1MrGSbmXiVYAQRksNfmk8LZaegmwRdLq19kAlsCsU1GiinHVY\nUBJhorGhwYnQKlj7k2YcQpVL4/t2Ap3AIJqH43WmR7VrhH4RZgyvjXUj++Sl\nT8j+/WJFE02BRphPl/5oW35pFn8lCnvK4fgSHKV6hmgmU9ZleKafZg/QoslC\n6eiWRIA8Q6jVl4ji4iBoko3GylaI+cPf3WWURUT92cAuLNe05iyDsxIJc0l9\nRNbJ\r\n=f2EJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFGUNCSy+WK220RO69E02feJaOegkV9qooJzRDWERUSxAiEA3dFwSnIF872qIj7NtEzmMZDWubURgC8pIxI9xFBT0Hw="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.b936566.0_1611173693169_0.11158800206732811"},"_hasShrinkwrap":false},"0.0.0-canary.7d3770e.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.7d3770e.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-transform-flow-strip-types":"^7.12.1","@babel/preset-env":"^7.12.1","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"0.0.0-canary.7d3770e.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.7d3770e.0","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.7d3770e.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.7d3770e.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.7d3770e.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-U8ca7+4ET2qGXDgVCuS+D2pgM3Ue0QUp05mLiGr/lWTfHbqoIlJKaXKJGtFe4wNrh4wUmNx4zq8UNygGi31ZQg==","shasum":"cc0f7ce7167f24749c1724bf2a6f52094888662e","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.7d3770e.0.tgz","fileCount":9,"unpackedSize":19794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCJj/CRA9TVsSAnZWagAANcgQAITsl0Ri5CinTEslGluJ\nxQnkkzGThLsOPN6zg0qNdjCtNSfmjTTpUjIg9QwBuj1yWHaaDebNtgRdNTB9\n+C9jzgz6IdsnsVdYybuYMz0+nQ9urp/kLgqh+QVllaUD5aDci+xChpY6Tafy\nOLGPOJuFPxLDwP7aMDHBGyjY0gtmtdP0b8ZTWP89vVJRGD/0iILX6Buj2VXP\nVsoFTN1lyYkyH/VsGaoyy5ZWCgjhhRNdtwLPBvdanjPOWdPnz8B7c3U5TR+t\n/FxLH8yQni69ozrwhjbtUVlgTWO2fG3ZYXdoVDsopvwCyjboXpn/dtVVmPX5\nZ2gCff/NVCA9LL0faOFjkZ0iCLhwTuKOXqg553laghRyP6iopV+2sskZZF82\n9Q9D71wPoocYnlctlRH/dF7dfcjhtoX6O7f7YIXhuqs1oroTa4QGMH8RTYd5\nNXKS6FmoTwNl0mRnv0iozwCFwrJ1HW+Hd/Ra3db3+r7NFqqw/a4iUzRY4CZu\nSXtMFv+zKCZsfX68n6ewfpA48KLiyadU1Mg90BkBnRiwWFT54H+FFqhNvZaD\n0f6VhajZe701Z228gJGF7hD78yjbnZ8ALOFlPhnjs2AWZ++VOdyZF7F4tDLs\nTLIdCe5c7tH9NuyZ9KeVaYo/SufzOOXki3DibjezkRqBs/PBwihrU8zrVxAC\n08dW\r\n=21he\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD51p/FzEdIezqYFOjG1R1lD7j1UMkwgfiOsCc18bdK1gIhAOx6a5DFoB4qyvaWziFYIVS33DDJ179F2VbXHib/sSNe"}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.7d3770e.0_1611176190706_0.15685808055224748"},"_hasShrinkwrap":false},"0.0.0-canary.c848126.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.c848126.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-transform-flow-strip-types":"^7.12.1","@babel/preset-env":"^7.12.1","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"0.0.0-canary.c848126.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.c848126.0","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.c848126.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.c848126.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.c848126.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-i78mm0Kod/8Xs+mzfi0M0RewYXTNQ4ln0E2BTco6MnfqBU4uqI7EIcW8bO7BbYkr2E0jiHqe17ukhDwAWUbYhg==","shasum":"5ccdea7747fba2b33637bd0ea0924b48a244f5fe","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.c848126.0.tgz","fileCount":9,"unpackedSize":19794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEyu9CRA9TVsSAnZWagAAH08P/3+eWYVHd8UOvVRzkSuy\nZP23EJ9AyGwId6XGkMvGwdBWmQJAMcJEZ9uhIBOYr2P6oCIMezUY01m8Px88\n/cy/0Br4bjA6jEgw0xbni1gUqldLKraQy6f92mkU/gEG97FogkJKwGdmVwPv\nem2XTc0hHClURTtjymDkoFKJ1cD1i2xYnMVj8fSTCs2dqHOaoGrn6p8gh2Et\nKHew39B4eKFzAd5VTVtnCqg5OtpeKSvtV/Ot4/n4x+/ZfW22snl88WwYeUFK\nRB9kM4IKye36oKAvhUDRNxf8+f7hlUa0vTrvqq+FmDyeZpPXvAFSdo+I2C8o\nAbhaSK7F2BngbDv9VZT2kXmzsWjMywQYNfWL3v/4Wt31oGUM4CubcZMpMIOh\n38HXR1FWuc8NTLslWxI/I4KKnXxz5MiIWysqHUKStjRU8qqZgzQu1SFScxPz\nbAqhFbGnra3DNPMarf62jU2BskGZcMfKg6XyneRk1sSDv1tqL0Cdf1ySsYo6\n+mZKEO5jRffuqN/5z9kX8sjiK6R1vgluIEYqDxDpybr8NGml5NemzE6mknb3\n3ZA8FJ8hn7h7+TeatIZ+l9K8Eqqhnti3ShZoIHxHeWLBoksJhnOx2ZGEYNk6\nSvx+efeqnvBmsJUV6uAxJXJY51AUUcVDxnN+Xs074VOfe9TiBO0J0O1OsIUz\ndFRD\r\n=7mNi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFfPb406Ia3xrjWDJ4U5PDKmTgtegFr/dO3iTJ878Q7CAiEA4MoDJ7ViONdg4oS9aRKn9ekSJPNMizSs/xF25zaweVs="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.c848126.0_1611869116908_0.7401939583045445"},"_hasShrinkwrap":false},"0.0.0-canary.7eef88a.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.7eef88a.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-transform-flow-strip-types":"^7.12.1","@babel/preset-env":"^7.12.1","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"0.0.0-canary.7eef88a.0","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.7eef88a.0","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.7eef88a.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.7eef88a.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.7eef88a.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-9g+ZliM6AN3R/DYHEjMS6tvQBH3HLHqZg4g3tCioZN1Cv31rr/cFl/9uPd2maWMDk3DY10TIvK3DuTKpuzSD9g==","shasum":"b80b7bf89d92135fdc9bf980feed68fb70fb5b63","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.7eef88a.0.tgz","fileCount":9,"unpackedSize":19794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSQQRCRA9TVsSAnZWagAA1JMP/j45iqhCgmnsDwNadYK2\n5rH+/lcbtM3OKalkJt++rWfa1mrjwW2orSddOSFEhpzlQu7tBvl9ctMEG4ZR\nGaOQ9Yd/olhoCwq3U81Deskqolnifz7eSNcSeIcIOqglfUi8Ya142TNwYAy/\noT7yJNAlMDldu2aCTtbid6tXKcoBcE9CsTGfermAXeP893nUeKzkG4Zbfwgb\nWISRF9fbPzMRDqgnFL3FpL+OVOJ8x6dBxg1qxsbFhDDGEbRXqkhtIq5VQ/Q/\ntHELgoQCZ6uWCZ+/fr539sm5hW72wwQPRlOuk/Zgj/V3uh+b+ZoeGMt+C869\nsL8wS60eXgvTQyhyseVTiemb6NsJI6gUEOzqVomqGEMUDCArOTA69cXNmZYN\n95n9u91LxHnpBob5fxQrrxRHhQm4vOJ0Flj3NgfrIqK+rw9SDsylCGThUZFe\npnbVl90LaKQr5Wvmz1ZpoBwJQjuoc2SojdnpgvPWq2ClukAyIj+TDQA3JMqI\nvf8UQsl0UFofKelYl6w9XCI88bklA952YJgTW+mgsknkzDbmUi17P1CztysL\nl23aZD+F54BT2nNbJVyHCgpnWRY4ixiE6yfku0Y7CyqNsPw/2PwXCpgqTXTV\n/uXCbA5LaBWiOUMtNJCoXL6zNPxJCmrIeYAo51QKyrOQ5NYQQoaKw6bnT01t\niJFO\r\n=lK7i\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIENFN8kRHCxMYfH8WCz8rtA/5mWe8XzOMK7ktQ1B+nktAiByAX9Gf4ZXIEXCceNib7OaycE7+Vxh6H3UL8FS7t5fAA=="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.7eef88a.0_1615397905006_0.41892426283028694"},"_hasShrinkwrap":false},"2.1.7":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"2.1.7","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-transform-flow-strip-types":"^7.12.1","@babel/preset-env":"^7.12.1","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.3","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"2.2.6","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"2.2.6"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-2.1.7.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@2.1.7","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-fN3b6i4VCF4nZsKiYplFpByf+Mgz/92Utt/2wqUbP2DZUU3eV7QctXMoMoIufqgzQLHyM2umPvqF1QSSw4rNSw==","shasum":"0a1d2139e437a039938ae702e4a9bc92c9d43d79","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-2.1.7.tgz","fileCount":9,"unpackedSize":19726,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSrrjCRA9TVsSAnZWagAACJwP/2t/pYJRJ62aqaTCTnsg\n20Eh054xUXW11dPEbEqCGcXmtLLPgy9CM213tFSbBICooVxIluMnfrZDkDIq\nzutMc2F1nyvD7p8TbTnt3mtI/9+vSp/kTmW7ANxcPOs+T/ZhSFNSl1jCYkk8\nr+ElgJvr7s4zkEcch4zY9Gjxj5DArhL/fVlwQG6VUaFf2FeQLKlhGm/SMLsa\nGyrC9mfLjImokdRCzs5R7y6ZixwCAZlbwGQNKeLZLhtVqFejO2/x5waf4M/A\n46aX0K/Q6NIqsPpm1zxP83MxSgDmwm8dUXAU0yQoFTCbIjwqKffSydn9bPEt\nQhE5YF7fJVyGYdETWFOg0c9uAPS0OfHtqTPe8+2tVs9ijQbMzrUWb40K0yYH\nD9R28rozsFoWY4yaWqWlwsKPgHdUZQzPgnZtZwaEHfd+Fp4LDoRYj6Zl1IZL\nH6ifjB0hChQbHjHQD1MqCLxx2l8xqrpjD1fhhcC47HfQ+8xOxKE49wzGVe88\nF16FT8vuxyzs7xP0FBARRZWiG9TabVvrUCGuj+hQXDsr0be/Ks5CzSS64s3f\nnC5fK7Riqj4PR6PeE2zs2LC9ZoasVPAZT/xZ9q0SSKOgWnVY45iYl8T0Zws0\n6LtsiJwl7aWYiY8Rxao00bFowctpjDDZzez8wVphsk3+ANHJezlR6224oCwZ\n81lV\r\n=wJIO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCxdy4YXrgAUg4aBYOIvCiUjj9kcXHX6dRgkEDKauYEbgIhAKgxSREW+BpULxNLxR7DDl3P1A7hJ3L3k892X6sNPfhL"}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_2.1.7_1615510243325_0.5035093095423147"},"_hasShrinkwrap":false},"0.0.0-canary.5086770.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.5086770.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-transform-flow-strip-types":"^7.12.1","@babel/preset-env":"^7.12.1","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.3","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.5086770.0","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.5086770.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.5086770.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.5086770.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-7S7jtxyZDJKEFLMYyKxAbKANp67HCGhpKsUFJIVQpIxmpxdLmtm9KUgdSt6ZPm2gGRBfajy6DoCA0KJHaJZiUw==","shasum":"03297e20b62bea9bd1fffc675c37c5c9750523ad","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.5086770.0.tgz","fileCount":9,"unpackedSize":19777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSt8SCRA9TVsSAnZWagAAH3MP+wRzOwV6NMNZ5Pjs07Q9\nWU3azUw0MtZlMVPQQVF2mKtTeNtRqI/+Mkb2XmeLLRrvV7hrKdTc2M0rCl4m\n8539w1eWlnAKY1o4V+92gFLtTDX9qhXBQBDzhPg0okUObMo/WpoBKlMA3os+\nr4X3L9KT9DAa3aI/wVcA72hq01t+Fsyi17ykHopjx1CUA9Ss82wUbN9sEvcs\nUwWMPyz1tPB/ZH5L7WzBXtw4qSvRXCF51F6qmEo2lWy+7Xs1vuImUhnPmf52\no12Y9d9xtyqa0zivsdt9Hz0Mi8npo2ZfDN4ObHrIXzKB8o0n9RHxAeOyiJ8t\nkq+YczoU0ViMX8sPLnM1n2fVXes5ouZzmTMhU0g+ghe/30dODlcq+6aH0iTs\nTaO0N14bPsojjqKOKW9+n+YrQUkh4bZuut9Q1stN1QFlMxICvY3Y5pGYV7pI\nVabgcX7Z6hDfqluQ08uOmJ/qYfbqlImrNPqHGgvx78CYn1+ovXq/EhmvEaLS\nycJyBKPimdQEE0pB1cmvf9GG1IcgSdEUN2C14vXm2xCG8Inmu0uuzCfOxg1V\n1N63nIIaqhG4XgTEN9WnhBZiFf9nwrlvKnd/aat4BLljr9sNMUDPMEZ/3IoR\nF+H+k13roE8Jtcr0Ggmid4z/70y7sTYKY5m6OoxmXyBMcCYODdlrRZelji9f\nmusc\r\n=oJJ/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDTMVjlNtSvVmIStm+zmO/pzV536qPei2VOzOA74gU96QIhAO59VztO3o6Qu96dmHru3harj0/8HTZ7S/CF3tHE1Fi5"}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.5086770.0_1615519505757_0.5596496949937015"},"_hasShrinkwrap":false},"0.0.0-canary.243e09c.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.243e09c.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-transform-flow-strip-types":"^7.12.1","@babel/preset-env":"^7.12.1","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.3","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.243e09c.0","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.243e09c.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.243e09c.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.243e09c.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-8qD9vwPyIBheby+k1Tv/eWI/EJmBl7/1+yUxA3FfINAOo8pLWM/jH16myCFHCpiuoP7h4qbBabL1ESjSTCx9KQ==","shasum":"44e1884990ccbbd9576472596989478656852923","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.243e09c.0.tgz","fileCount":9,"unpackedSize":19777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgU+I4CRA9TVsSAnZWagAAEPMP/RKeDzEZN0JK44esOCwm\nv5qxzMLz4wt8h3ZZ2htoTSZ1JVigwcneC4+W6UeSmzGpTtUFnSIjQxL9+1me\n8hw+n1wRXV2/zwgTenW2yNKexvuciOZpd+lMyv+Znvn5htBxIJUspSM9b7cs\nxvEeQ/e0I7lPr6l2zlP7v9/zCA79KX94a/Q9xMLjLJVvCz5TCHjJmntsi19k\ntS2pazPmTg817wa6lULKEP5n459uug+IwyGCggeN4aNeCM0zZl26jdzTPLoB\n6gzccJzeDUA1Dd1PR6YLnDIM9kibqzC1ZuwFDX1YTaULfcKbS+Z8yBIaH5Y5\nm03MRd8sdASRc/e6s8g8sw8SVkBSopwmwLkoVlp+UaWtYvZRiOV5kLa77Qca\n/BjTjojMHv1SIYuygER/XtwIMtz+kQZOZw+libxCt5y4FMxcV0iQpRfAus9X\nSUJENhzQxvGqVsS5xiQ9cFOa9xT7z7C9BoHfEDOomyFzK4gabtb5V3J8V9u2\nsE/BSB0XCfdt5Ksyjy4m/YT1DjaRA6DERE560+jUy5EbkFPfX3CtepekpYKJ\nMStc1fAibV8J8xyjDbW+NZfgGzldNdnsuGBZ48oXU9rM+nbyGJFAqCVAi4RP\n76OYRAp3lhuHt8+nWdl+GMthkKhBYY7gmx3sHSjwCq/FthFij7VvAqnLz0+H\nIHkt\r\n=sdQN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD9AoYIJBTMPzbDlfcfdYi4gwSy3Bi7vMgI6N5FveyarAIgR+FNwxbyOlYRPCn4oYV8s7sIjm6/fPZwSVTMFXHyHuY="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.243e09c.0_1616110135712_0.8319654499020137"},"_hasShrinkwrap":false},"0.0.0-canary.156446a.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.156446a.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-transform-flow-strip-types":"^7.12.1","@babel/preset-env":"^7.12.1","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.3","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.156446a.0","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.156446a.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.156446a.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.156446a.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-O4oytcErtBLJJzJKECQMGlVryotX3jxkj/uY8dfzHAXV+fZjjmHDPYEmhAZQki1erTqvp0sdPSL/SsyNMeOR7A==","shasum":"2afcdf6730b607919a2be14eecfd132d117c70fe","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.156446a.0.tgz","fileCount":9,"unpackedSize":19777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZ5x1CRA9TVsSAnZWagAAwyEP/RP6xIWM7q25Nn9dn7A3\nUUVuxeObqlDQNg6G1bubRm5FRekCcoPownVwzQEAjjpfdZrTy8LGolh+oA2I\nM0OJd8+3DM4BtEhPDSyImGu1yN0/qKWr4cJRXKtHNTAtuqCinHCpWZ85NVEi\nzUlrf5ofNk+Fmaa+5g1Ylr+UPWS4yBXtjRQ3PXdKvFVOOdpWSju6GgSJs6NA\nNS2NfqnwV7V9aAJsSBzDByENBj+wY3aUl46+jM4sK0ED34AAIan3k7b+3X0N\nQxCstohW27YLPo/kvJkflm4mvfeLAGEfhzZf6KP3LIr7FAPhrafyxxryVgav\ncmLVUJDpArzEY1YERxUSstNBAQdG6riHXsyj3R1zfGr6GCCM/Ou1WHolRZLP\noCGybirn3r1tjKwaT7WjA71fVwnNfBylmonFBVGZx1FbpOLvBRTlGPymvbVr\nQSJ6SXMWRGK2pQ9nnbhXGiHSUAt9OLQO+ro25ZufHcV9czkQ0SjpBHfUh6Ih\nrb4r6aSTT4yZOkkrjZlu5EOaEct5FY/UzCPurWeFWmP7l+bECmA9lEuTqVSt\nWfOwCTPiDsT1mzEhVBO3oLswUayKzCu9k+8xVKgeflHIU9UY4ZRMq1OPvtFS\nHjJUoN3zqYVJEG/llyzKhBmRk428jjxjb6E6YQFKCThG3deC6+4O3lZIbYkH\nhQ+5\r\n=n6o/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFKQp6HOH6xngseQt1NnSaL7odC4TCIfQBz8ji0holX9AiEAl/q+GuwmOO3SzcEhie5MVslrOkbPxqF1QXvQqwOp2ec="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.156446a.0_1617402996799_0.3184467587742632"},"_hasShrinkwrap":false},"0.0.0-canary.bda3eb5.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.bda3eb5.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-transform-flow-strip-types":"^7.12.1","@babel/preset-env":"^7.12.1","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.3","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.bda3eb5.0","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.bda3eb5.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.bda3eb5.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.bda3eb5.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-R08QIQPkLD8vxjuySaPNwd2QCfeftQ8qMSe2WvrFOlt1R/1B7/ogxdr2WH/5zyhLLUG9BldBBLt5QFXwtKfekw==","shasum":"47d2259ab381758330f2af7151ea7c6ff5fe6fe2","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.bda3eb5.0.tgz","fileCount":9,"unpackedSize":19777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbhtPCRA9TVsSAnZWagAA0y4P/1p3BgvmufUg6RzYy/3J\n1FMsFIozOw8lPm/3NAjMkVRyvUZ9+qVEyKuh4eTMDXelS1TwbMtm6cvs9wtz\nAJYG2qF4Hag/DTYKsdpYu+5sBkL4gqjrvmAYml/o/iXLGxkJHQ08G7tdm+zH\nM6TMsMnIPl/qwrweRqnPLKeV0SGQps0xvkW9Vcvkmfv7vVwHkzx8XlTi8/Cg\n8Ykbvg3Tiqpc84P79p48imC/8m/Db3HQ2Zb8v8zwYHfSzby9p137i7PCaEFl\nrhEb0b6CI7nVuB/OhmcwZqRRzR8xuTTD3BvIMDlgewhiaLtngR/GxyUli9Zt\nUb5fYNEW7T4U8ewF5Jd3txvm35Rn9zPrFim+eX5ZpojdJAhFD2UgcmB8GwbN\nfDHJSqxkNwvYbzr+FTJ3EWSmTq3rv0uzSoMiDxuNPMB6MV2T7fB8BNVi6zCJ\n7hOXrV7I81v20BHG8yE5RSiWxj1/SS50IJfX21TqBmnwsc/fcSTqR/x7c0Aq\nymZjg7fP7FMnHeOm/P7fclY3l5/I4+6JDBS5XMcu/zUS7q5VazXipEsES8g9\nOGbhaLefLRmbodUjlBhSoZf5oThxM2w0pKNE/XrwDvajBW+YaMiFIZrdi9fD\nKt4ds4GjZiVVlbDbE6q9XnfblxvZXOiSL0cOSelr3HbkqUOvBYmAImZS2b3t\n64Pi\r\n=+prq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDgtmzymXshArpxs8eNMQpI7h7u069lhAjbYoQP+OHHmwIgVt4DkmjW1j3nm/bCgYOv7KEWOgDPLuDez4Y/xFrMOOY="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.bda3eb5.0_1617828686710_0.6701043319747189"},"_hasShrinkwrap":false},"0.0.0-canary.7852906.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.7852906.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-transform-flow-strip-types":"^7.12.1","@babel/preset-env":"^7.12.1","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.3","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.7852906.0","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.7852906.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.7852906.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.7852906.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ZMHYvhVFM8q3TDr5FaOqMG5+EJAopTEs7DBwQ1DnN16UGFilnWf+xQ/3PFzeE5zzs8MQi45Bp58ptgo03gJ94g==","shasum":"c82508835b2652b12a73e1d0aed3dc80ece2d252","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.7852906.0.tgz","fileCount":9,"unpackedSize":19777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgb4AvCRA9TVsSAnZWagAAtsgP/RZNYNXF++JYT6jfrOWl\nZNW6ogOci6bGJJ2MSvvnC0+Bep6a7Dfmth0c2mSKBDWJQAllC1pbsGvGjSAg\ndwv+lxc/fcaty91fzDOB3KKU2UJh438KZzGkSUYDBJfokxZbuJngvj1M0GKw\nQjT0Kxz2/UL5TQVK8y104J6e5zZIaTihX1AISZMpRFR3B10XCv8vLf/bOZpX\n3Mio+kZDeHhM2L2oWFrKB9MWa6pAF4gVv745u6J7APYXQkQKoXKgJRb5IXLK\nqR99yrHjxybpklRd4Q+RIgpWnwPmOeEHynpRn/jmED7d7USjJW2zAa4IFG7n\n6dVSc3oMII2wq9E+niU9Vdfv7at7pKaHVsqZyCAVwrbkSKcDDKHxv0FNZm9n\nz7FJgymaB+bGI3D43uMSoUdNqqasJywUEApYWoDC5Yr3RpWyumBnZC+UvP4q\naVNHcM/Ymel6WVCSdCNfFdgmmXQqhoXM9dAufpu+RiHsHcJmB2vSr0JCuqdi\nLj2kDximN5p5o5h8yH/2CNrIqlCcLdstJjARS761qAykoTdfrBJLzY4o9dh9\npKUCseAEFG1wtMjUgrA+HW24kDegiRtfjH464xtfyUfJ2YJxaEHFRYD3biDc\nSqRYfXwjcsmhkl7c/bd6ppUC1yjOv5ZgJ0MHco4VuQ2uen+K7gKwu59Xdv8H\nFkJ6\r\n=IhBc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDuSdQImf/c2X4rwkZ+x63UNsxT5sRkewz5/qNS9AF3LAIgPStcldoi1A6S84BBbTwJLrgKKnOvW1r36KgNcgPlyw4="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.7852906.0_1617920047305_0.40249269894250217"},"_hasShrinkwrap":false},"0.0.0-canary.36c1f93.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.36c1f93.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-transform-flow-strip-types":"^7.12.1","@babel/preset-env":"^7.12.1","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.3","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.36c1f93.0","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.36c1f93.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.36c1f93.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.36c1f93.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-n69qHk7SJLgoTy5Gr4vJHdAk4rvWc1n6eARiRwGRdVoyBrP+iC6Ji+y06t7CSIKizloPnDX+79/Yd6MM8rCx6Q==","shasum":"1c40e012d2ca81aede7a1e23ffc47252faad7504","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.36c1f93.0.tgz","fileCount":9,"unpackedSize":19777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdF5ICRA9TVsSAnZWagAA4VgP/RY4HinlpDKxoly5X5s7\n2D3nfwn/ySIwwo7t9FRTFaM5keE71kf9z9vogSojaua78ha1OaPFK8hMFjn9\n+my4rxYYmqolZZ6sKZraoVn8Dzi2pzZKLEnsA/6YaB/qD2ZRTWMTUg11oMwI\nvKlmGa58n8l1nIlsqHp8AcJFTEt2xrggSFIapszMT9A9Zsd+amcrbw5dEFXP\nUFW9JIuvFm1aC5l3F1TQx7IYAK0fk3zCpnwk9OmI6DdwG94+EeIxsqDQMbde\nW9xRH5GeRW33C/yBkSIssXFeYqj6DGKFnhcqmrLdeCx5M4mvsq3s+hXWJfMG\nxxQENDbop3wR4sHl/6YVIVKic0hjuek/WjjRDSvITQU/ZMhy/vPx6DiPSBO/\nuFcNX45Y87keL6xYWkMSMUpMmnTlY+dtEps9YQ/GvP/y5wz64f/EWsUWnqwx\nKQWWz380mYMISL6yq8ae9l5Sw9TKiJxu9JsDx4pCDBDzHNdtisQOIZQ9dze6\n31QWH5rHc1z5pDEWQPeO/IRFujpYixUVrjgYbN2G44Srp5m7goEt2yerzaHj\nLn9Zzf3wDRwNUui+Nqezxh82BUCGp9l3GefcHQb/+Yuefedbiespph6SzQvi\n2rYND3F4nJvKQm3oXuuR9yzAnrfiofjU04pCPvWTNQ3zhiBO+hH1ZeSY8AG4\n/gJr\r\n=S0FR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDaSpzEdXVvoaKShtfCBSEgQwlbTvsIZtegVbH/P76aywIhANLJNwJ5Tvn5z/+s1MQZMn0RnbBuwxa44Q/gt3cH62/k"}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.36c1f93.0_1618239047825_0.9331897622215823"},"_hasShrinkwrap":false},"0.0.0-canary.147decc.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.147decc.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-transform-flow-strip-types":"^7.12.1","@babel/preset-env":"^7.12.1","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.3","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.147decc.0","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.147decc.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.147decc.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.147decc.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-6kknEq+ytmJKQgJHHnOWAWvkiLOJodsCZrWV9ERAfDgMXFtiKEiMrJgbWOybhm3z3D5ljA1hC5Lg/AfasogJRg==","shasum":"9f3c796e1e69464633cbd24f66be5f9706d1db9a","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.147decc.0.tgz","fileCount":9,"unpackedSize":19777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgddAqCRA9TVsSAnZWagAAexMP/0sgAd1Z91XkF2zskWr6\naWJd3scbWry5+wi7yP2croTJq0TlbE76/8gTuqOOPnxa+npuYjzj/jyoOC5D\naXBneplBKsKe1aTYcx8/oek3mx90Pgz5jjGqMUg7KMAG7Ss3E3Evk/27qB7/\n/HJshGTg/YqwgUjDLZK4HSY7d1+MkD/rZgWeOcMmU/cggwJnL3W3tX3a+J68\nXrvA6ORPfOtsv4LiCJLl6p5cnWHQAUaTz7O90bIxMqWzzOfwqBEz9ZilWRoh\n0u459/K3kXljstZtPzXh8eyc5jbU6mT/ctdMrn5EYpkfXAAyFBCKRC/6FXVO\n8Wj2Co91kkCCCMxqJrNHwr2F8EPeyVqzZ1UILzXbYo674rbte11bDZapXFN3\np73coe/w/8Di5LkgX4NPSK9L38xDm79WSAQ12MI2gXU/nT9T/yuPl9hFUkxR\nVf8A7OWDt9LZaADyHXES81pjp/YHKCOZmxBX9XBxkQOb/nQapzKa6aeYv/gQ\nLul2EuSTLuedY13phAeuss1Xl18q7nVRrCbl16z3tCR9Nymfp+cWKl1dYTqz\nex0i8XGMDxvtyQvaH79XtQA6y1Ch6TpvWkaeXzTkkWN4+qyKsYNL2ES/fyLK\naYxan0GIsqT7W/BgtMMfdClEe71ut0i8FCkQG9V9+zApY5u8CCZH6xrCt6+G\nyXk8\r\n=/U1q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDEaqCNkgUa57SJdGHOzmICGchcvOfk0+6clFCUk1pVegIgRIk+Vw3dneIQK1IbCd+23vu8K3n4Tb+lS7RZFVAZhVo="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.147decc.0_1618333738032_0.5918134213479278"},"_hasShrinkwrap":false},"0.0.0-canary.481456c.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.481456c.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-transform-flow-strip-types":"^7.12.1","@babel/preset-env":"^7.12.1","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.3","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.481456c.0","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.481456c.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.481456c.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.481456c.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-jMJIGyeNakw/zz1iSo+LYahhVUS9QeIDWp6ipPnguyExLiVOrjWiRviqrBuQ1vFHNRGgmAgHWWftom3aKWCzRg==","shasum":"b3d1673ebbb101776dae37bb40bd5cbc79e00cbd","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.481456c.0.tgz","fileCount":9,"unpackedSize":19777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdhPBCRA9TVsSAnZWagAAusEP/2TTlkczrk5fI9xks8qP\nxd7qldH0BNKGkutV/iTHshgBsDkwNOq+Yp9i4drLXSJA+lmQUg66lQCdxz3N\nc5DMJByrpPeJJdqtdjh/KibxjduRaRIMU3yf6RhAeXFgGniDYHYsPqXVD8bj\nvRa41ogDa7b02751amGAcXukRr4VmzIqM26CFMLzryDl4H5q2F3IVHxzYXrW\nq9cre/ucFlYJjOTsYyaJJ1PrTmer+epINWenhxnNl9V24ydfOdjlNDXqZNmk\n+LLCCsk/DdPYdbJNraCvHy11Wdq5NYK5Mg5Zu8ED3Dz7ysrDteJUBZ3ifVOB\noAX/5mOJA5JBYSwY+QE98UNYtB12YdVyRNrsahd6HgfTZUpoYux8xCBqeV2f\nZV+IAvNvqTLHBeqVN4cJduylIDxxxa9y+XMLUGLvopt1lrgTlUnJMZiaGjdQ\nrs5ocCWctGBpxVPU+RH0wJsx0A+HqUeDoyIm5YBw83fZ2Ei2AEhOLfkE1Wk5\neHZEjEXwA+sreRyv/nIIr5Co1d/iJRTVPoUzeLFj4UWleCNPhhU0GlNeEgER\nguaqRWq4GjfR7eCwESqCzMKiV8NSEQ38zlqV3SfUcf6nX/2l/Aa5RfJZVwhC\nlG2SB1TT1B+L5D4TgVQCKivv3yiG8ThEN2HOjXBGNkSaBa/4VCc+Nhk/ok3J\nzizh\r\n=cX6l\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDcf54l+c/mJWHsPgM1Wq6Qtc6+z5/rL8L1j/PG6rlLTgIgdc4f39Vj9tSbs61+yqYj1jxaFE5ghRmLa9dgFTHQhNY="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.481456c.0_1618351041503_0.3593489433550159"},"_hasShrinkwrap":false},"0.0.0-canary.4d2f7e5.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.4d2f7e5.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-transform-flow-strip-types":"^7.12.1","@babel/preset-env":"^7.12.1","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.3","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.4d2f7e5.0","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.4d2f7e5.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.4d2f7e5.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.4d2f7e5.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-hNuWEhAYUvwrsf4eZUBM10GLZI06nHv1vJHJx3PojA0OK9if11JT6k6rpZuwHXYoCzpvtNB1laV88NkR63tqgQ==","shasum":"5fefd5806bc55569f2f3e3d4b2329c9f20ca65e0","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.4d2f7e5.0.tgz","fileCount":9,"unpackedSize":19777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdiXpCRA9TVsSAnZWagAAGmIP/jHlz9UaqcW0dhyKR3dY\nkv479RhMSxHzaqvD270CX1OaG0jDXYJTfUkMu559lBsV9cmW08/WuNgGnsco\ncQ5skRMOTHeslK4Tod5eLTEdg5vj0cHiIPDL7d4fQccs3iM1mPXcilydyoSU\n7i4M3av3SU3TWGNYoUUNp2Ua2yjH3aGdh0bRnA9XNFhH0NNf1JOdasFL6bzO\nvN7me/ogXuTRjU2rJ5BeR+MmM7DIwaMZxBE7r2zgzvwdWqAXTvbkyIRmCmNM\nymDKg+wVrGjtZ2x4p2YwlhHWy64YI9TiAFWfZjJx0I3btc+55P4W1hH1IeeK\nJ1pFwCkXcuCuGYnB38b/Wyl+bYIZa2wPKGAOGsaNzkL366Kf3cIHk8+5j/94\nufUq8rvesr8qOtr8HWWghj6SLpSjWXu7LvtyW5PwkLCi2W5YewTZYhXtvhSm\n5CtH4DA1bx1lJIx3CYg9z8t5gU1qi7ruVLkapgH/Dk1ilsxFmH5v88pgiKL0\nvMgE1WtTkkH7QqM5IdTHNX+Hhcfqsts3Fiyoa1fXU+kspezQ7Sjkd7tSBwv3\n8jLvsH7RMH/LUVnaY/OfciFx3IrJ7DGkEVflA+5pA54DjdjZUCpEIqLw0KFW\nz425fAtMKLztFvj37IuDUMr5kufp40EEOmx2/Uu1gbt9rIN376DnKOUtiPMA\nSiBb\r\n=eQoy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDfLqrgP5pEDkwm79gT9sg5bc1g/Mi3d4bDuO5TEC/zIQIhANUThD0+D7D2A1Co8XLRFjr9+UlmBZ0TN4CF1kXeJzCm"}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.4d2f7e5.0_1618355688745_0.6789640204592302"},"_hasShrinkwrap":false},"0.0.0-canary.9158df6.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.9158df6.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-transform-flow-strip-types":"^7.12.1","@babel/preset-env":"^7.12.1","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.3","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.9158df6.0","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.9158df6.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.9158df6.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.9158df6.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-jZkYqOh0/RakPnT/YN5b9vwvd4hbW0mPfzMgZzc6Bw9ZvBXOHNR0yo3DAn0rqf0qzN85P07+ANU6J27MSatScA==","shasum":"fb548765fa80ac6fad76d4ce7328854ee8bd56c8","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.9158df6.0.tgz","fileCount":9,"unpackedSize":19777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdvslCRA9TVsSAnZWagAALYMP/0W/SEsLXQUarktpLcDq\nbCRnOyMUXWj1D7DCUKm2V3i5Wgw901PSdaxDbkYj7je0/PtypQZ6NrDio1Qr\noehWc7N3VNv/4UeYgNGfEyzQkancHHabTuk5hmNMdBebLRZ83M6EDqjGN1J5\nrWRniJHA9YLhsD278XMNOy1N24SvLah6mziKEQ3vonRA08vQtNKKQH0CzsYB\nb2iSOmhFrAmPhXBukTqn88tHyNzBpDeIiIsOjwYSlUXx3pYIvtlbIMEhC+5B\n8lj/Lenz9VEPcLEf55lXlo0KD3M6tHK/wmAtpIrP23EZazvoPitsaq/Q3+/g\nbYtAwaBO94OM30KJnl1z39cVNQOsJTgLsxmGI/FCVqH4K46GCgkhp0ss+iu6\nSYG57sG7bcemTvbIzUrjxKyyqvkqmE6YTe61ePBB3C7CD1xno+KyYvIt2S9K\nN/WTIVYHOvKF2WG7mQwC4FWPovpZT/TuUNapNdtkX3eBbrwgw7Ug2YtPiFs4\nIYpnuU+KdppoxSKJsKtsCKRgSuAAZIOFpd4cMP75Pe3JJvwgmaF+HeM/5BoU\nwwLkhwGEqZgjelclg2upfipYbABSmcyutMR7XP3PXYsA8hfgXN8LuOmCX2ef\nyRwUo5xsEuwT5CT5aNscKnA2Gukf3j64JjRyjai6wN3K185vePaCoQFLScl7\npY6X\r\n=B2Bv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICEURYHZLiFpehdOfj65aL2qV7/Sz3kzQlWOqc4EUse3AiEA+k0ONsBk4FijcCmExS0TvtI80obohVy1f9eufr4mTcU="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.9158df6.0_1618410276542_0.15540694115957443"},"_hasShrinkwrap":false},"0.0.0-canary.c68f2d4.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.c68f2d4.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-transform-flow-strip-types":"^7.12.1","@babel/preset-env":"^7.12.1","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.3","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.c68f2d4.0","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.c68f2d4.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.c68f2d4.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.c68f2d4.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-S3QJc74umsLeBVlr8cgpz1bC2FJQH92fdog2jv6xOvxgB17k6Xzounvqq499j+4f3k7e9EqqU1CiQGPgCaQhQQ==","shasum":"5e593de9380b81d3a54fe56e1ebdd2bde0206725","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.c68f2d4.0.tgz","fileCount":9,"unpackedSize":19777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdzwbCRA9TVsSAnZWagAA7EMP/1uE3oFkCbrr4y+PZjCD\nzbiMgMKgOeVrDpzLkdDOe2WEkbKE1Vc6jMdjUSgNTgbXCbb7rnbHOb618+IG\nS4C7Y/jbFJroYmCowlJzVT3vZqC30jvrz2BiOmInohCq5Zkj2OBUwH4UAWyu\nBpKhqXIW89s26oHRk5PM4xozfJNizxy90RiY6TxOkp5TqpzM+l6sehSW0kmX\nU6TL23jbXpMqH3UbEh0BI8NTu2dc1JFfoQjR9PUloQYLbfUSU2rAkXGxAZJm\nIVKhGZ0Ck/SKfIMlVN5SmVJJD7waPk8goO+O90oC5DPxPxzvcilgxmp0m7NK\nvG7ZizLq5eAKiqIsiMRhzaUi1DFhZKzhd0LwGK5/aSWHoK8TONrhBPglFThZ\n8BX0DgAxbUoE0cPIR9HTy8I/bsL8wOGI8FDe5Ls4oXyCbBd4p48rHhf2TL42\nsqpFhBDKwwsjgiS/4h0kFIJxyYV9ODXsQRAICOaiQEuiZE9yHoVbhgpgs61Z\n9/9CH5sD8i4tMRHni5fcMPYvFXMQuK6vBp+XMZn2wGK9HfaN5+/8KaGN9b6y\ntox19fcWsjp7JPR16twtx+JY8hZ+T2lrFKv4qnWDnLidEtNSN1/+3ZBE1Old\n0S7N1ANI2iZ+ZMZ7NQsBldpq+MrYoer4PCn2WLqC3ta8H1QiQP4sm4jujAZl\n2bEj\r\n=2AFk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFsvV8mmyhAumt0SNJq+HEKnko+j3TH7kF+RIWvxUd48AiEAlx41S9/TlYlj3Eo985QmfiKhvmL//tKBu7GRJce8xXI="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.c68f2d4.0_1618426906993_0.40969305346156015"},"_hasShrinkwrap":false},"0.0.0-canary.fa4dd7d.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.fa4dd7d.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-transform-flow-strip-types":"^7.12.1","@babel/preset-env":"^7.12.1","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.3","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.fa4dd7d.0","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.fa4dd7d.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.fa4dd7d.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.fa4dd7d.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-kSEolpd3f8fYaj04GMb9Ovr/q2x8ZBsaXVxtolBuONiOTnLWBquP9KehCQf359ZGHjdQOuR8QpM4rF4NkIcLLA==","shasum":"1cfcc2768fc045390a5a678940b586b0024bf35d","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.fa4dd7d.0.tgz","fileCount":9,"unpackedSize":19777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgd2XOCRA9TVsSAnZWagAAYCkP/jw0hPSJLN6XONLwUGjq\nGeQV1Y4/cFjpYkv2Ojqr3dhgYa1egDCznVLQnm4hWs+ocoH6A6aws1SuPjEV\nbDxVBAroneO8rk/TO2j88KWLYBgQeQOAU4s8hcl5QFftUcBDNU8nnT5h1MJa\neMDuuc8pnbpzbZ5/a0xjlG2kqqJLoB9W8nT3foOpotE6ZvI7I9vr0+12JtCV\nnfx0PTHXMscKZkZKgyANT2zUI1M4Ke8YIbNrfRdhowZZI4ZP0IFawCvQah07\nSOCEZFOALQwN1tGW5ZBdJcH/nH6WuyBnI7Mckt7fKVDSWWleHzqeJfy3ha4h\nCVZxArtjZVhqsNSJYVDu8ido+CFL9Sj7pgqmjCLyHC+DSUwRSlUwANsvlAMU\nvjxPo57VkddJP9f1ey/M2PSTp4lCs2OTq4Knoc3r5b+tCtWSB7Ej9Loiua7q\nVTLIfmK2lJ0Bip2+1qdtgiuQ7MZJo+ssoMLSoo43ba/eAjvue9dkL/fiNuAi\nI6vQIKtyXCExLqPb0mOfn0AHAbyS44cPIkZOOWq1J6bJWtqRN6Y9p9V5QBj4\ngaOLk+kkAk3wHPfmOhsx8nZGR2xY0Q/zjXdVmh09qX86dDSXaJ6ctAw8vCeC\nNz8qpyGjjHzBLIroYA3BVqMBMne9UhPI2dZYk7Y7P4wJbJpM+mkG4K6IMH/C\nva0X\r\n=bG72\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDLxO916d2vrUE+h0esDwQxDV1PoECNjtGdBrv/8zKpcAiEA8mKekNHO3egVxR9l55V0ZMvsuEpHMtf15q9prRx88Gw="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.fa4dd7d.0_1618437582318_0.20215838107982798"},"_hasShrinkwrap":false},"2.1.8":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"2.1.8","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-transform-flow-strip-types":"^7.12.1","@babel/preset-env":"^7.12.1","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.3","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"2.3.0","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"2.3.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-2.1.8.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@2.1.8","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Lv+vpJGVmNhg9n16MVbMoGc9qCsxJ7GHJGNNlJZgVo1yaApgGCuFSMNqE8/ysmUbLX5O3UQH8T/OLYkdAetYJw==","shasum":"f96a38e11c4a2403a44faa19797446505c37c9a9","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-2.1.8.tgz","fileCount":9,"unpackedSize":19726,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgegv7CRA9TVsSAnZWagAAOFkP/08LxIeHe7N4PkyC9oOD\nP7XiG6eAVv43kASx2M0A8CxXsT4Cf5KtDQNGcxWCJIyEXZLnMD7yfae0tNL9\nCcIrQvWZZOOPUHBjAg2Xxj473JCFgmY4I9bZYkQ+hmdAzWrO2df4odUTjt2E\nFAHjkCKbPRvFDJ4hiirFa44QV3CVG9p9VWp4J0hM+VKF4WxhP6jItPdKhr+o\nlwiGXDFe2z2Hg0C+RFibbThRcD1xL3yE3yvRICp0HAGdb1Df+4pxoMozryt2\nPoDEDcnQBDhk8HNjFfUA4LY5hvui8cVJqpV76+jGA8dn7636ol1sr9a+DuB5\n+N9gJ2gVwOHXnloOlj2vh/v7UEayfG5yvcag3YrjEQ8WRUS9OayXIwJrxItk\nxe2gX+53+CdI/lbh56egiH4BE1Y9QE95YsPZRV8LoAkAim7zy+i9z6+jAWPp\ngVMk+LfDqor555JaveoFAQtYUZ54mvUBZpltL3g4hbYkgzumt7fhjb4olDaM\nxj/T1jaJTJxrktvPyi0n0BypAwQdUk7qTqPty77L2VPgC3egiQA7OnPC25qG\nDg5mf42bcZImo92/gzrxOefOczvtRlUM86CRhmKpB1NG7fewYkahf9Kfl5Uf\noTowfFTeBVv0kMEgblrwTA3tB+MVDv54DWFsg/mdhmVME2xs3F60RjyfJWAt\nwg9i\r\n=1FbQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIESTTeYo9bkfbofTmB1W1/fzYY24Lu8oOYU/Pykv5jdRAiEA7TmcZiz5As6u98sKrOM/M5RESC7+s2z/PBWO3w6H5lA="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_2.1.8_1618611195204_0.19761124662521135"},"_hasShrinkwrap":false},"0.0.0-canary.60586e2.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.60586e2.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-transform-flow-strip-types":"^7.12.1","@babel/preset-env":"^7.12.1","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.3","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.60586e2.0","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.60586e2.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.60586e2.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.60586e2.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-9I3IhmaIKfxEddTipYAkK3OTutTja217u6eHpEsCEFzVC2YeJQP7pznAaEMNlE1wInESivgvr8dmq6B5y332Vg==","shasum":"ffefeb846a91dfe546d1ccd7ce7a6da4ae528f69","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.60586e2.0.tgz","fileCount":9,"unpackedSize":19777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgooVfCRA9TVsSAnZWagAAc7EP/1eqzPerJb0WVkwPi/je\nrwSUVrZNEKICJ9A+Vkhg4BKrlFM3e4qLp/ntpRDOszGvB8piGGDd+9156zU0\nV46DUM+pnT38+Y7NVQ7C1UwKH2nTUZGTRemtULaV/Mrq1WCr48x9uJl74H2Z\nfXZ+RVqUvfvbsyWZ1LJSVXnB93v18UKVup/SEGFk2Tkw8t9fZgDH/wpftHBW\nHykGQDOfirWhtI1kTCk1jwKMiVHLXBoqLb377rLsmYYp/zUnrOFm06LoANo/\neflvlcbwZBorbaAUteDK8p+Xa/7jnr0MlhUI25Xn/svYzuwBZB7ZlRz2jVGe\nOKIpuWZ3OmXMBR9q8aMxE5YsWAKax+yG6xUg246xTdbFZ5xSwtrgmm2M9W9B\nbaapnyzT54TKgofs4vDhshPZj+vbWl7pVRntb1gwc8bsDE5xBT4MBGUAEml+\ngPwvkGfQSTyeGysUWMbPwpiiqqYcakTS/MYiVnJEZgETF+yo6tyUFkwlyBJ/\nJu8Ho/VWXNM7A17RJ1NrfcD47C6hYB0sNclFH7+eRCu8a13fooIEv63xemCN\nuCZKtKD6oPnb6IdJ+5RC6IOKIH5Ww6J2pNIpHBEuxSsmNJNQ0gu/CNCAvIFE\nmTk/hsyskgTN0d/JqdNGJ3Uhxg/zjY+TzY6/I372jkFwhhwBba+gc2chBFuG\n5Qoe\r\n=5mzU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICeWjxWWu/ctbxO7y1vO5vcg5RclgxS249tU5mdKfAEXAiEArnoZs8GNQ4h7Ipsc3JbV4iv5WEOInmIiNsk+LpmwezU="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.60586e2.0_1621263710760_0.507090589436541"},"_hasShrinkwrap":false},"0.0.0-canary.b3081dd.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.b3081dd.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-transform-flow-strip-types":"^7.12.1","@babel/preset-env":"^7.12.1","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.3","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.b3081dd.0","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.b3081dd.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.b3081dd.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.b3081dd.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-m4oyasEmriq9cbgLOHD3sPJSCs2A9wCxb8MXK9SI/Tbijyn65wpAlgBUY32pxR4jGWqqnspn0gFHcxuUY9POzg==","shasum":"1da178c262e249ca49762ba6a5d5175ab4a8357d","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.b3081dd.0.tgz","fileCount":9,"unpackedSize":19777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgqC0LCRA9TVsSAnZWagAAqf0P/iBf5EKZMUALDfmbyf18\nIMBxrVzwYbQ4fq2YdblpBBOGEKGFuLo582q9vKUdegS/V2nnriVp/SOazbRu\n08F7GkkEG/9c9YeHeY88O/2xqiLqlNFsKDUoWrdi4RmlmwvL2qJDHXPTuL8G\ngef46ZS6OH04OPJAZiiHnKnj/eMiHqZXTSp2dppY/+FJblXugNZIxuJDg1vE\nYNKwWNDY7hqyXtsNCG3wQCYFs7wasiBRgtk/OeIh4S+7ThdKdhK6QNhLDP0d\n97dpYsPtcG6INAsoEjJ4HKfpvMGPT/loeM1G9Lv1NZLELOcwMxhA8UH0xJT5\nymtN4eOm4rjs7NKQMU9mhhoxTBAn88vPUIeNE8IC1X07xwj0u3nKMGpWujNE\n9pLUzDhm6aBAgR1Q/wykLt3tV1rCKk+GUdDtN69CBHzfW2x0UHPmiv9UfYgY\nxI3pzs1K6CwCv5b/HFjDYs3cqyCLZGZ6C3KSO9/VwaVDFKeK5UU0cIDzw5rM\niLfR08R7kwKiiKwFfE3fRYh0gTUpP3C3nb7ce3VMykKGWjJzbXzhVb+CTcpJ\nY8iROAf9+C+eRSmoWtzfMH3qjJW7tRZxFdca3772HcDOfZ8P6OSWpqrXcAk4\npXmdQbwMbcgWUiV0zRUvaviEa8ZQjhU/n96kahoKNIeZPxSZel1bel5V8MgN\nXXOV\r\n=MxtP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDlt8xniG4xCnfxUaevdlvQ2ujFqkgKyPae5//FLG/z7wIgMhlI2tsk1+jFGzvP+JklWqC2tw2Xz+78BBXRpj+vqy0="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.b3081dd.0_1621634314473_0.8832926037955229"},"_hasShrinkwrap":false},"2.1.9":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"2.1.9","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-transform-flow-strip-types":"^7.12.1","@babel/preset-env":"^7.12.1","babel-eslint":"^10.0.3","create-universal-package":"^4.1.0","eslint":"^6.8.0","eslint-config-fusion":"6.2.3","eslint-plugin-cup":"^2.0.2","eslint-plugin-flowtype":"^4.6.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.20.0","eslint-plugin-prettier":"^3.1.2","eslint-plugin-react":"^7.18.3","eslint-plugin-react-hooks":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"2.3.1","jest":"^25.1.0","prettier":"^1.19.1"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"2.3.1"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"eslint . --ignore-path .gitignore","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-2.1.9.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@2.1.9","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-+C3997Q7zUuCVj8FyPJm2O6wnIWSsjiiQjNbKh+XpWQXabvvbcwPQMuKYcY2SK+Jmu9j6+YyrLDUr5emTwLp6g==","shasum":"f6b8f3eb583f33d0ab7a5fab6c04b0839a6ea08e","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-2.1.9.tgz","fileCount":9,"unpackedSize":19726,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrEXTCRA9TVsSAnZWagAA3cwP/3egCCfrZbPXNkLvywie\neBFCxAxRSacyobZ7q7rSWz42UKpz/ImConB1Vcre7KHiHj1wF7Uly/Y3qptd\nz0ZU7gzkf7LszJdW+yKZunwrb9EPg3/dVanZ+IEsv/n7nKKrvUNg9cCcGxAH\nuuZ/qjgg/sPU0eY1OgdCcNSzb7Qz8PLhPGz0fD+Ro/tkv/ruohbFeuw4UK3P\npoYvMEG2PnkBbl3dw2BIrCrTKSzRO7R0DH7tSRNzzLk3kg2stwbyos2uVR7C\n/4N7W73NR1aY9/Ni2J5IPyvMHzfq3w0r4Fl5R1NYpA3ZuOwZeg06/skF37Fr\n934lr9XV6WlSNbWTl1CGdh7fGO9wiJFbJdaAoqEHNKfBBVKZ5baXAuNaqQVp\n+KoTVJAzGw3U7SGJp05fK6d9dF/QeOf3xRHmeOLMklt+aadE8sAt2v2oV+bI\nPoHSiGp/yomHeN0fGuWdsjlFTwdyR53GGoQtKjFlOUqvcORbfLzfARjxzyX8\nVEpnVn+hFhocmsRP2dohOdD6+CYsJMAsCjBAAo2wwS/aLczNjTuCrX0dil+F\nyBlXjiXLPOsZmmDO/HAw1Fi+MeYLfdJxFlBYY6TJiUv4M9PmYt5+3LvS7k1E\n/tZrRedtIuEl02kNPf8eGC3I3d0s+q64ktKJ5m069oO9WHsVHnKrLIFc23PW\nbxzc\r\n=o5EM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGjeS4UrxLsfNctxmKjCNC4FSy61i5otdYX0V5HVqozkAiAQSMHw5h5dB6RIxh/bBIqR8wNThT/ywGqD/JVT/kPj/g=="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_2.1.9_1621902802640_0.07246939998365498"},"_hasShrinkwrap":false},"0.0.0-canary.dc6dd20.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.dc6dd20.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-transform-flow-strip-types":"^7.12.1","@babel/preset-env":"^7.12.1","create-universal-package":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.dc6dd20.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.dc6dd20.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.dc6dd20.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.dc6dd20.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-rIHh1I40FSp0xdz1JTfFF8TmYH633d/ELdZSeJmkhjdT6J1HPKXoPlfbm4GZrSQj43WEjMZYpgsj/vJZbxngdQ==","shasum":"940a5c2a7b6f8fe84aae2bc1629ce058854b4094","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.dc6dd20.0.tgz","fileCount":9,"unpackedSize":19307,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgx7F4CRA9TVsSAnZWagAA4IMQAJppAoIugqsCEYbhGbbY\nXMqVUIwNRFfoooeNDC/HITEz/X22rnxmHH1s90UtbImie9o7Sn8r5VvaVEy6\ncZdjC0/q+O4vFev80TMQSE009cm2wdJBGrWcm+my2wQaUt3IgMIa8T3aLrS+\nh4ZCdI7PExWsfBWldrwuT0zfJckg2UwSsW2O1ek4PK6uIQjNAOOUHS4bBtPO\nZVHEWhccgdGEuPlkni+m8FjUkqV4ArEtIFSfIUynnmuVbHkkE1KW5daODmmb\nSKMdbI5Bfqa167mxmprX440HG4WkbkZp4+ZIskQtZDO6PQAyPAbZDYPinAjT\nj0RXbulti3zYi0EVTRcXRIwGso6OjUCYQ6zr1Fh954RDsG9B/MAZY6oCvWXi\n3PIKd76yZYq+xSEsPxGoOvcsglps4IZRxjKY6Qr/gcg97DYGpbniMgSeb7hw\ndLVu/XbtcmXSNRziLYPRBE2pr638iGiIeig3Yu3DRTRtMq6VgerEr1HmV8Hr\nktu4R6ENaz0QYsU3XFXumgmXm60LHSQ7uxrYHGejCHT9hGertSqP8tCfqfyP\nu2CBH4S8jDvABjCOIJ2I2ysCrJ772GHhJGdQC3QFaWtym3U/MS9RsaXSl//y\nP07DVsG4Cw/ECkyc4lmFW8Kn1zi0cktX8idzDRSPQ1PCABlRchOX0JnitUIv\nUwYS\r\n=qhr4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDq6sBjlf7TQbRWlWBIuNFZYAVthTctGxgnw2keqYtEBgIhAOgUKtidg3J2w2Lff7nBdHAdb0OKCKjjuuUWfctcVh9u"}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.dc6dd20.0_1623699832445_0.8721814460948829"},"_hasShrinkwrap":false},"0.0.0-canary.66de151.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.66de151.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-transform-flow-strip-types":"^7.12.1","@babel/preset-env":"^7.12.1","create-universal-package":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.66de151.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.66de151.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.66de151.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.66de151.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-V9269rXGJHHByB1autM63GWtGOk9AXpo05+9UBLFdCMCYiWreOS5sQWRJSpE2rXtM2RIqf+Yqpe36RhnEbl9aA==","shasum":"e2b5a2fba1baa9cab623c7d12c3ce38fdd15f882","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.66de151.0.tgz","fileCount":9,"unpackedSize":19307,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgyA8DCRA9TVsSAnZWagAA/sQQAJzC07Mx4UaCxXDrg0c8\nkG5Orw76SqMS0Eal8fHaJ7bu0AneJ/WA2H+D2lKbDCjN9/eYRd8Uwvlw9CcL\nX4bIJaFO5RHx1uCmo49my+WJSXJRiNu2xJCV2FzsKxtJRqCHJ+ExoPyboX6l\nCVxoRNNw+LgLj+mpJUyZg4Py+lJGPaZRg753YYcm1vsPba5kx3p+ieobPwIg\n//sHtj/6O0N0sAqYiUkCg6jDpx2hLabm2hQxGNMjH4uAmB4CadOgGz7n7yqT\n6YCtPAKMOED5IW9qMusUWovakNakxbGgYzBt3OnwgGhlKPRKYhCf1VmL6ayH\nnvkK9Uo9nlANLrylUTYcIArd2t4jRALrVc2xf7sOLOjVwXaQM9Guydorz+Qe\nDWuQKxgIr6tBZeKztb0VAzeOLHE0Vc1BprlHDDfxz6riZ/+suflYCAbS9yhY\nOKRPlZiNE3KcJhL6dOgEa6sUjN+iTB6BgxlHXVnuejq/yagRerJChIUivx4m\nT4JHmTB0bsG+7+wZjc3kHNZA9BuylmqqfroKeNJSdnd6mi3yqHkShHxzX7K2\nf1rg1RIBgkCFHjWBM+8GDuwia8M7JXvYaN/gdPSWHFP0RsYlCYIyPERk9Qp7\n1OOmljVOemqvmW8mvyfj18MZnFnvK7ug/bawORCfhJetjAmhfPLZyvpyzpF6\n0mpc\r\n=RmiA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC243EFyNg1NhuZePVWBi9HakfdwTVJUkGKEss74EUO+gIhALgsAYauPuTIc2H8tCOdpY1NjX8bB5PCYea9OyHOzLpc"}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.66de151.0_1623723778903_0.2703738412421308"},"_hasShrinkwrap":false},"2.1.10":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"2.1.10","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-transform-flow-strip-types":"^7.12.1","@babel/preset-env":"^7.12.1","create-universal-package":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"2.3.2","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"2.3.2"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-2.1.10.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@2.1.10","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-W3YX5W66JmOV4+qHhl81263QXkhtpBMnhwM1HkUH8ndb6KD74d01P13kOxu3SB+wCMO3uC5CKY9hgDO20d3IwQ==","shasum":"7b25fa07f8577a94f0707c60c9d61d7890f3dcc7","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-2.1.10.tgz","fileCount":9,"unpackedSize":19257,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgym5GCRA9TVsSAnZWagAAe1gQAJLXlmq2/piyt3a8zPpM\n6UR8+X8uA+ksOdx1fcqEjklzrT2oZ6x1brOamRaPIhw90PLOCpxD1BhvFt0P\nuDjWpIiaWzWlP1S8ZSwzivMD6Ag866qsVd1vC/2J0jqM/7vDO4evVyg8r/q1\nSIa7qTkTtA0dhMM1rksT3oqHT0KaGlwWphbYrxa1OH8shpe9pqHIOcdRv2Nu\nFjZe2abflWHi+Zuw3g8feC0Y6ILtmWzmE/c7d3ct70tYWxO+H6MBqudATwbq\n8yqwpMEOY2f9MxhTJDRBYQyxuWpEtUg9AyPTnL+jwcpRgioiqnrbmtY2Pnpe\nPTMaaCMfWnkNkfXFGjoOHCX5f70h0uA9McUCbp3HjB2X0MR4mxB3tYLR6wXC\nbQkMkX/C10mbsE4Q8/5ZdmzPm/lpxfW7B2KoRgcv6tEPTu2jSh0wJO5fmt3y\n5rI0oKRDo/cVVLG6rUogzz+CstUuapQQ03UK/wYOOVyRU2bpPhlX83XkD1Jl\n52iGU3MU2107hFQtBi4RN0at/SIC3mqP7fIV7DY0EynqadPccG0VLfoy09Rw\nlXyRL0qSVZgj8ZdkxJb6j75KDENSb/9/P3XLg3nnXIPrjs5lO/tklyPiGwCX\nj/v6alhFJT6jyEQbrLvjA4sYuWHAXjntIbTZFXrTfRNAx+djQPRmXcBDEsXg\nkA7p\r\n=nrWp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDYHHoSucu+cXCJy5MyDBqosbMqI77kgJZ7hpET247DGwIhAIPCGTtKegXEB4w8VDOy4CpW7LDxNYuLnlQKqY4IyR6c"}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_2.1.10_1623879238219_0.19253610812113742"},"_hasShrinkwrap":false},"0.0.0-canary.cc30c9b.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.cc30c9b.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-transform-flow-strip-types":"^7.12.1","@babel/preset-env":"^7.12.1","create-universal-package":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.cc30c9b.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.cc30c9b.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.cc30c9b.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.cc30c9b.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Qo/aTmoW6jNgtLlr1ct9vEiB8ORIqW9YldjgCHy7eYc1RkyTF7QJ380IAXrACAniiLpCvvd8Z4iZZ6zgFJ/I9g==","shasum":"0f78203f866790d9f36d91dbb15d31bd3a24ce8b","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.cc30c9b.0.tgz","fileCount":9,"unpackedSize":19307,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg/2PkCRA9TVsSAnZWagAAYu4P/R3KFLNj5i03GQG1KQpF\nhuUOcCYO4OJb3wexmqsZXsze4C/Q1yp9g8H3sclngSEfxZmMb5KsuKsIui75\na0GXvNSbrRvezYtkGMOEWVWb8rAVD53q8iW3tglK9ybZDcQcRswnRIdoXaFK\n8nQC1VpK2ETVdhD+/UDMm2JQZ9Dt1xdLGjupcOPcdn6LrXbkFNGEMj99c+3m\nemmyBHEDE5u8MhT3utVrk/TWQSvjNv57BHA9g/GPOMb8shGW3/LTn8aVwoIG\n/uCnfYq/skBYC+6LjIjtmqd1i+vOyGGoxP34wYJRW/0Z0UYv9WeCI2it5uOE\nwQlvQWwCjaFUDbSYFUXWZ2YWDhlzpcVNVvs4o8eKO+6ssrrgXxL2O/+jCQXZ\nKL3Cz4TIeaJwaEVYlHR7dC0iVLp+Yz8xElb771gu22RXUcgdCIRk58896kX4\nHNkW5FblfOn3G0/ObnWiJgBwiMBtaMHh1VYLO+RP/1g8li9GWexsGPTYTydr\nuzUHwJ2ScEs2MFzche9pB/61yJGma07Qz5/RiRY76JiguXvR1855IOFja9cF\nBByfFbWgetLIuN7uF94Cs3R9yA4GXGnnWw6VQGcjqS813XlUdCvsWK3rV0Vx\nbXV5f4K5CCPv5vezCZAVcYNRkFI3k46yqrttbSf1fenoxYdjYMCLiHIvGgdB\nLyID\r\n=YvPW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDn96XWhuvcQ+Gvcpcebs9VqtUiFH5CuCvAY1Vi2ZP44AIhANlBpX9ua1kZcLKOzUPE3BGDkVeRup5bGB+61PB9/awh"}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.cc30c9b.0_1627349988481_0.6996877017308132"},"_hasShrinkwrap":false},"0.0.0-canary.e5a3019.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.e5a3019.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-transform-flow-strip-types":"^7.12.1","@babel/preset-env":"^7.12.1","create-universal-package":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.e5a3019.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.e5a3019.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.e5a3019.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.e5a3019.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-IhMQW5qCE24v2C4m7VSrgzSWwKf6kA5qNlpj4+7GQtcDz+e2zZTVLB9bbm5RnhWuZgyR54QpP9HAazFBqe02xQ==","shasum":"59ff91f753b09095033878a41d2e8136625ba0d6","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.e5a3019.0.tgz","fileCount":9,"unpackedSize":19307,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhAJiLCRA9TVsSAnZWagAAeDgP/Rg+CPMKapBE92XizOh4\nlLo68fuu7wGGakTr/DHmh4oDQUuOXVicR1lvEKMyQ/+OpzkSAz8glummhErV\nM8iZs84iIzREOFxb5K0t85ndMTPPkbKWwiwJV0xnAoAzAFvlCVhIhKDiRy7w\nAWPk5eBsqbo2GuPahS8nM3L9nQLyRk3Bvnh2Pocr3Z9KL2fDsDfFCWV6c3f6\ng3q8vcigNgAx9vI4BEQ+3LkNyBe0PrNUdH5kBWGXE1c2u2cKVpSkmAjFNTMV\n3Gzk3qa1T7s4icasDiFtO2yzCiUJrGhe0xvgmWoWIJTrf/qyzEICdVBgymCc\nBGZO+12S4PlRPcnFIMM5gC78HAnMGsNDk30/EGwer8lXhOLOBDmalmr4UJxl\n6IrSlEjRV6be8AUEZmuX8xM+H6+TiN8WCGnaHw5sI81S7AuXR5JWqs7GM7Jo\nNOgwsjDL6gzVX3p/6gMr2T0CRF7iYi1pAHdojiDCWapN40fR2os+OlJZpppj\nteCFutwbEnF8cNBD9/KH2PpogHksWilqe6VL52+ZkQESEuRJDNxCLs3Lb6es\nHGA2Az3TJB4A1rRAtUeaRgTLhruqxi76BLixcxSJGZ4w/3Im0MO3Or5LMnqd\nZFUnA19uCr7+GmRyE9U5aUhmV7RySv9qGLnCq1Ec1TXRefX8gN4JY3cJMser\nLqBs\r\n=7+Ra\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCjIQxtjzruN9VnxOE97oF58NAgNdeFKlsZ01/419W5LAIgPos6ZFZBB/YS6j/iuJe+241eHQyVogKz2jcu0qUAxwM="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.e5a3019.0_1627429003332_0.4158616679045508"},"_hasShrinkwrap":false},"0.0.0-canary.74b8151.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.74b8151.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-transform-flow-strip-types":"^7.12.1","@babel/preset-env":"^7.12.1","create-universal-package":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.74b8151.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.74b8151.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.74b8151.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.74b8151.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-tet01zAnGUiLQmyIdpSqybQGJjwHENp7pwXfsmaR9DCqeKghdpSzaPaVyUojGjPFmaZ/JneGdZ0/shK0QOYwlg==","shasum":"4bbf93c70e86ec99a2803ec9b99c755e59b6cba0","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.74b8151.0.tgz","fileCount":9,"unpackedSize":19307,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhALQPCRA9TVsSAnZWagAA+lEP/R6S4wevqOigGdYD2sPp\n8Um6RGgxMPgU4cacTbfW+WTNQL2lWABMQcjd3Lqw5D3FUXlWwcMbLtW2Zlud\nA0Hi/voxNd+J1nFQSy0a0oWn1ts75TrtacGL88W5WZVSnd3Sd43j8XNj0AZS\nisgZE+RiZ6ublNxgj1LuyrIIPvF0SygwuGOTjcTgSnthxItEUfTVQFfWn10q\nYVpLxUv6K/qT8eH3PEnun3igfm4pmljoGRvrsNGhecDDkriI6XCgek+Xdp8Y\n4ky7/cjwTbaAcgGzoyH8LmE6Uas8aL4mXjmy1CGTASEK9YsnRxyUsA0v9ru3\nFehPGsecoKNJ8Jw7oEAvp69pCWYolI5yRWhfq81H1QvVvv6JX/eycQ6fMMfn\na6w6O/vu2cc8Xhr2hQUyWSU7Ivueh4DKWnqjd3Z595LrjAsN/5j/lDSu1Yn2\nz+3IMWUajJopv4KTUvRswhiuuYTq1lCINlUJWbBO2Tb3YyaIhXskdcsD6B33\nIZpcAwVW+eiVXrNiw9K9Zi8+I7cKujzdG62ZQLa5wSVk/jZ1A20ggEcOnK4q\njwy1rJy4CaTTNQqIiDQo8gPsjiKbrTUbVUAEu+G6OWPZzOzxCkCDjn7nYl5B\n7ee8Y74C0f1Rs3M7JKhpWqiNrj9TH0x1/xUAcTvdDALYSS5H/lMEQq0BR5cZ\n8hG9\r\n=0TCR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGCbaV7s08VDPJ/sHTMgDSMLxys/Ai3ggBL9fqBPZgIrAiAna0fURNUJ6FddVc/yfqSXZ2g8ox8UCYt30duNqzteBQ=="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.74b8151.0_1627436047313_0.6346881971924834"},"_hasShrinkwrap":false},"0.0.0-canary.d9ecd19.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.d9ecd19.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-transform-flow-strip-types":"^7.12.1","@babel/preset-env":"^7.12.1","create-universal-package":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.d9ecd19.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.d9ecd19.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.d9ecd19.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.d9ecd19.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-E60+Y6Bwt5AHgRCl7rMVEhOSloNy+Pb4g1PVTjSnD8mjdjascYJ7OKBKPLlrEGXHiXkmB5TPwt8WLjdq1UAA3g==","shasum":"02ea61346d9963e0daefd2727880932c55db234b","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.d9ecd19.0.tgz","fileCount":9,"unpackedSize":19307,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhBEu+CRA9TVsSAnZWagAABMgP/RONlA7TI4Omjzbn4Ze5\nem9W10z9bySIBw9/h5qkTQQI3+QsPkkK3ZbrwqNWo0rJBx0k6YxsyOHlMOOE\nz7UeppozTY1dNI0EhD8nCAiWW35ENLc78BUAZ87NuhsSJPptLE59Mc+Gbz5S\nS0a04ecgwar4xO9YBhK20lcIv71ET+lvkiYds9o493Gke108LOQxJmsZbfbn\nqMDWwDUy79hnBkgNYtk+MffSwpS+yeCpcjlk1Jw009G1rf5ufuAgAXVxK0AJ\nWTbD7VQHBLHRqMP6qj84JmNRQOcfp6QfBaZsBeOJSBRetnZAGGoQaoVicGtJ\noJcfVWCM+/4SL05fYo00I0+npWq6DZ91DydgkFw2ZUKZAzU9MenN0N9TltFK\n6MZkj7y8AuAv0ylQtSPq0fvobw9cu9HevY1WSMZaylsxWjfPlJTaaP+n1swK\nYZDJBHU6+sn79Y9WZk7VRFCjoh/DmPqpETnS/j9qPQTDMFJdMXEgUfPIpeq1\nGuvx2OAZ1x9LYqT7+MhALa0/zm8IIj1+yx7NugtDBRpiyN6RidJXJNDxMjeS\n0NHhoJRAQCeTqDoanTze/c+6FyaZQxJWOfF6ieWIdr1mhmNQMIefTl6rpxxH\n7jdAqTBChJc7pYPO7rYGLLPJwthJlk4+43uIozaww4nNT26N6s8bBD1SVEih\nZfGd\r\n=TUu/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDF2QEwQVUmBNEvfA7iqrXs0x55GAaZ9r+NOAFZ+7M/3wIhALMrxQX4e82H6X8DzLQp12mfwxuzGexQ4V5sfLkWW4H4"}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.d9ecd19.0_1627671486713_0.20947698101016998"},"_hasShrinkwrap":false},"0.0.0-canary.f0b60b1.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.f0b60b1.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-transform-flow-strip-types":"^7.12.1","@babel/preset-env":"^7.12.1","create-universal-package":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.f0b60b1.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.f0b60b1.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.f0b60b1.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.f0b60b1.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-T1OzoemYCVvDZdrkSgf7clEK+MsZWt698wE7XpeJKi/qlL7tuGiYb8QSJw/Ak7rT3AgHF3fujmLMu2q0BSA1bA==","shasum":"a1cb9dc46a4fb9ab0909dec8db7b24775b6330fc","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.f0b60b1.0.tgz","fileCount":9,"unpackedSize":19307,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhFZ7iCRA9TVsSAnZWagAAaoIP/3t3AipUkybIVsdlBUa9\nZ6uVU60PL4xGYyqcfmcjqdo7+FSZ4icl6HREItJ0L8opRflPYmLH/uZRSr/x\n69lXA0sLgoyWX50p3Pewr7H/6Uh7n7sDCvJ9TXoTQTkjemSas7yz6lLZ+lzF\nqC3QsRRhOP5nofX5YbugF51IXya8+D7+jfs58nRYwV78PZySBeyZ2bd+FUhR\n4rIqsgYJvGxglZvpxQysOUZ2GDWwf9bnd0Sbq0QfGNtk8UrwHCbnMEUR/rYE\nnfJZHoQXom2qHE/VYf8JyDcee8671vo8A7BO/Qmdr5XX9ha5ijeGYAwMLfoU\n2GwL6jwxMa1XS9+aT5qWVRpkStmNzIa409jrfv4oNf4T7D3G+3BTCIBKTFnU\neCBxR7MNxEMRcVn7Gz76KqrilGVjTVIm6ULI+6mjkNnfpnehybMPOKDPbN0c\neM4u83p/UmWjGF2k0K1KEXN1opB2fXs0bCNqxsOsoP6hdpGdzFCN44O3ayuf\nTfTMLBDO/KvGQPIjvqebMHAn5aRWn9pxs1w1quJVijcK34y1G8FT66DC+Y0P\nkZZP+aJ6LMtOVLik5Cgfg8ojjIHR75h4wkmx7aGBBkhupr8dVVyubBFMVbWB\nCmKHFhk/tJ3GGNx9rP2qLPS3a3G62mh704QjdXnqpgDIHS4ztTf9EuRyn6Wh\nXVyo\r\n=LX7X\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDP9W3CUyC8zBS5lABeJA0ZraTeFoaHCCtai4pz9TYzdgIhAJZwNgLh78aVVGv4gS7M9oKD5pwMUw2cBlCDXkIGNoO7"}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.f0b60b1.0_1628806882344_0.3261367352371176"},"_hasShrinkwrap":false},"2.1.11":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"2.1.11","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-transform-flow-strip-types":"^7.12.1","@babel/preset-env":"^7.12.1","create-universal-package":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"2.4.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"2.4.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-2.1.11.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@2.1.11","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-NJn2f9nhs27z2Tf624D8g1rW2URODclPK5tOml96wlYJTHjBc8I7WAEsrhYgQPmQKzehNqYsjPBVPbsi3xY/WA==","shasum":"fcf8bbf77e8269373b9fec10f32783de31c86a3e","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-2.1.11.tgz","fileCount":9,"unpackedSize":19257,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhG/N6CRA9TVsSAnZWagAAYswP/j9eoAw7tKDl7LexAcGa\n1qBPe2Wc8ZfmL1++PH5LJezb5iJ5l5760HnQDj/m3LQ6N+pTLXpWD4b4zH7p\nIlX0Hi7BU4B2DXq1HkPgOzOzhgtQsYgCbdOXvJ6qs40EK4msnO3/7wAVZ/Zr\ntcZ5kzCrKrQBGFl9v0Dc9H2S75VKQxaZDJ+1OB6K7bZA92htpSAKF+g1EdKl\n3+AgDAfxClWEKVoucJDNHmKcFibIsAh1Z9xqF4oOIdMAtzS7B9nrYIdL1qCO\nIfeWDSfLssdR9eKz+w0mqA/vaC+SFQzNbRq6pVex2qwEHFNAWjp1XqcOmXAk\nHwFMwJwKmHs2o4Eohwkx0ov29OccF/Ovg6Fk4WFX+vBApzEVgx8eIGbVb87p\niUBuQv6tCcMVwRUOY2MP/f3cUbYxNjeGOoJf5UfHIDAbzZ15NCynsYjABe5J\nGcNYU2JowCMjQiU3Bvl3mh8GZwsdfnoMq3HDeC9g6w/GrD6hYQ7BfHj5jafQ\nZRXJouyX/izzbnCWTmJoD2eVQrokWNxW7eL+acMiATM5HfQJoo4QsOZu6+aG\n94vhu1n7ldDYEEzi6AGjdkiNh9sU1xwluIYbHdiVHoJpeBWX7GUxyI7KcYXS\n+ARHb9UMSwy8LD+9O4KRR3s89MEdNYJUgY/4m4CfKVBn9WsvPTa0qgife2ll\nwaRl\r\n=WGiE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGylDRZZrfqdP0A+c4ce57ShACC8ULRbpM9oYm3YvhkEAiBE/EBg5YxUlTfsdPk0f9fVMvNnseITiV8DieMfyUQmbQ=="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_2.1.11_1629221754037_0.00016977308670051983"},"_hasShrinkwrap":false},"0.0.0-canary.0833d86.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.0833d86.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-transform-flow-strip-types":"^7.12.1","@babel/preset-env":"^7.12.1","create-universal-package":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.0833d86.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.0833d86.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.0833d86.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.0833d86.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-tkErTF7sCMxBPRfrdmWA8ExABS2JgqyYqZHsPeML3fvzU3Fs8d3Ii923TRrC8dip1yekxkR/6tyazKdFaGv3kw==","shasum":"cc2e37fdca90bcb097a3a9af69fe5c80e424a4e6","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.0833d86.0.tgz","fileCount":9,"unpackedSize":19334,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhLm0QCRA9TVsSAnZWagAAnpUP/3iCd7LmDGWh6mgQQywJ\nCqi5T1EgFJIL35jkgpF0E9jr83zgz94wrvlUt4nqgy4eNzDpF9/Cw0g8K1At\nNuJ6Z9TD4tAqR9ZXgpFuwGAh9mvIkvYNRSeEvH0rHIXXMrBkHBF438vdnX1d\n4lvSgLJYHlMvF0ZDgV2V2Gr9dX/wZe4gOAIbhZgdcFeea+GQMN00TZhX71+8\n6v5Ny5xBCDgBz9Adl6iDD/Enrg7JvYkTz575/isLln/jgA1Qly83gK3IwYwH\nju4H0HjIr0sGpTSQHjNWU1F8NR6WZBVkUBxXSIZlaElMKMVm9g9j5if1hCpZ\nfLq3f1BGaQmQaF+QTU+UgVVhhuP/+o9MVCkREcNLYyRu2XQt1DXPL06z4ILx\nDcdF3O3IsKu+gmw4MfZZWQfjtpHfW/DxDFZAKkedagMI27PdUx8CrniPzdaP\nFp7JrgY86wc4KKPaUwMi5MYWe7LH7LPWPZfi0R0oYC4PHrFOoanhVPRapGla\nUW01CXYTnR4M8cDKnzYF6myzgRhsZGqNbklY1XhsxUe0DVQpDnLvSuT33+8E\n9LycEoIQsIPW4T1zeLY5o6Ih9F0PCxyC9b2vHpG1pivD6PJNM6zrgLAcvwUH\nCIJz7n8/NziMxGvlSHD10ZWIcSicNoZLt6VWjRvqQnQjI/dSMBs/bFaxSY9B\nteB9\r\n=UiqN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCYhqLjNmKorLlPjKTQIqE++8M6t/r2cT6Tqqlx/WkQCwIgdbYtRidHvUGMPaMKoF2ADgQhn+YcMdAJqJz2jxf3MC4="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.0833d86.0_1630432528756_0.6496664965796644"},"_hasShrinkwrap":false},"0.0.0-canary.009cb5f.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.009cb5f.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-transform-flow-strip-types":"^7.12.1","@babel/preset-env":"^7.12.1","create-universal-package":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.009cb5f.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.009cb5f.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.009cb5f.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.009cb5f.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-8cIbKj+J7+yPD0WAhWMbl2E1JZRm1fPD9hOyJ3/OicDAOUQA2ZLssO+cmUB2czxP/S3h7aphFPSQA6gaBQavWA==","shasum":"def5bd97c570d65eee6e43977ca66c635a2bf74b","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.009cb5f.0.tgz","fileCount":9,"unpackedSize":19334,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhLtVUCRA9TVsSAnZWagAA+EgQAKTPBG/jrOZVLUINMwGN\njMd+Z+/FPC1IZmiCvec7uPCERv9AgJnI0qOQESYEgO+pAtzRJAZrCCPH05/i\n1/zXdQgUA/QRLvjjcgAJSpVW7YGDxa6iXsUXFsgXEyKsGaNM8f+ruCxSRYHA\nTGuaC0c3IbVg2vPLJCPlbSzX/sMjgyUY2DGbxsmoyKshsXZzsdlXJoLgC8Nt\nMrF8cqlVzfHrfxjuMK1pKvSh8XYbppvJFdMgtmEKhhov3PghtMs1LiuwwDxa\nX3rk6G4wa6lUujl9V3RauC4qUboMTSm2qbK/Wj26yWbcTU7GGYsYbi2r61ne\nO07mEWWrnVXDOYsqkOM++kqNuIa9mIhOjQwNc489ACWI6ITkv+xaLcNNt17e\nDOVPVx+vq7eepktf2yqO3yQOw+HWgCBdbc3a59FJozpOgnO4s12kHC2jy4mq\nCkHFF7ChshGhomRS2ImdgxpPgNQ7enmKajCJs2Ns9z1aZbEUNQuczLxK/RvL\nNjQdInRUYNy9T10l/sawONNTrh9oi1v8l9koaIck5ge2kdwaounCNob+OM1X\nXxkpFKIzBQVaziNlOUsy9W/MUovhv6y/jURgxJjjOfuD7jGKiQ/Kch2NDmTt\nw7kc5pPosPVZd6UoSpO3c3FHvaVAxf5KmXJNB59w6lJP5FSczIRdcPLb1FNb\nw4Kf\r\n=Ampv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHId2U1q7sYVchKcqwC/UnXLr87oU6LAhR02JinLStQ5AiBmgwR7b+qBaX7l1vimRajATs9sCmMwqX3eKSP12viZaQ=="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.009cb5f.0_1630459220238_0.2579714214285873"},"_hasShrinkwrap":false},"0.0.0-canary.34f1f86.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.34f1f86.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.34f1f86.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.34f1f86.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.34f1f86.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.34f1f86.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-VFOkMvJK9Zh2EhJqFQgwvl2HtwGiHkXA3p4erCtqMJv2BH1G7umwp+vl6O66K62WdQndSxxvQ2lrNmXqYlWMJg==","shasum":"ed4c57436cb30186331369c16f201c05e2196643","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.34f1f86.0.tgz","fileCount":9,"unpackedSize":19350,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhL+sXCRA9TVsSAnZWagAAF+0QAIPw7Vw8Oaq8km7hgrwj\nQtS3p7G7XvFsHeO9afgq00PoE+XQ1efQrkPz35P9N9rtpi56dyux3ctBEtr+\n0HwjEkijonm4sDYEu0lYsfeXIzJ/WuLVwVn7CWk/qlwEfzv6Mrh+75Te8nVR\nTgd8IIY9MnTV38N6/KFvUO/jJQFJr9FWcudryEOK4z1u2/vb2pWxm5S8X/DF\n6U9U8JkJiNJd3Y/3FOKrYtI8IHTbSFOKmWNP+UqsLjMlY5bB2NBIkbZHbztO\n2idXnXVjExMQxR9fM1WOjiNnk1ce67vApbRVdwj6l1WnD9KBfKHYgKWA7eLU\neNHDHfy6oiMZnudNLUf8DH/TKtbgzxxEb+NjlpBonKs9IZ8q+lnBqJtXpC/Z\nHvtY9pnMuDmVpf5ra19MQHswdvNJ3sU2lYEMb0NwYbJYOSRYum3HGfYzCqFk\nBb+tIfPZ6hOEUg7KeNzostkWfADIEoNUQvJR7b+GUWXfNkltYa1RkeVZgCHH\nYQe7IaQh3ZdeOdFvpL57uUCoo8SE0F64W3X7arXMwEna/cgVLVM1akDBCt2F\nvYzApxGq51VRMCRUlRimkLsrpI9txTrTgGufTsNKDz3sAe2XhEHfVuNdN0PB\nziZlG1EbWrfToVW7t4MHnLuMn7DVbhzJQ5NDR9EkjZrydwn/Irm2vT55U8OI\nWRID\r\n=b2g7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCyk5hjiiXHrv/iX6FRwrhF8y7qKgfZePkOJnqIzGS4/QIhAONIrlqu3eV/ih+4G0tCT4znFCikY0NE36q18XIf2Sck"}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.34f1f86.0_1630530327386_0.5282550186820167"},"_hasShrinkwrap":false},"0.0.0-canary.0f75d56.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.0f75d56.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-transform-flow-strip-types":"^7.12.1","@babel/preset-env":"^7.12.1","create-universal-package":"^4.1.0","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.0f75d56.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.0f75d56.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.0f75d56.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.0f75d56.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-MFQCGJgjSIx9I9O/GlDRMZPMzH5puvSURRaOYhNXwJ9yTXXO9PMio71JgzWxjc1NJTcwe+4/27Vr+7MiIXAcDg==","shasum":"7a46ec1efceea472b67def2678d898e53d90e172","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.0f75d56.0.tgz","fileCount":9,"unpackedSize":19334,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhL/uhCRA9TVsSAnZWagAAuJkP/jKdjRTWjLSeO0eWW+Kz\nSzEJN7pJXXx5jYqjNV9Qfyo8cf2gx7Skkai6/fkOVMAtmjCZg8xojYc9U8T7\n38hqudoKk7yBgpbtwO4PWk/7BqvPkje0T8F6n2gxcLL+IbGG695x5Nmghf08\n/2r3zTdWz18QJ+vVPPHgKEMDxLC2X2/Js26Lc9PKkQgyza0ZbyxD2sxaDzoV\nVdjDJ74oMUw2UTqwp3yYHa0wLR6rrcaWVixGaySmrelg0EYV+ApuePqeiImr\nQ4pMi70bDrqGqM9Pns3JvcZUMswAJYaA+ruNQLol/Yt/3toJGQNj60ET2EG3\nOTRl1kXyMa0gG2X8U0WLYAQ+zuRjnmVJMlif4RXrtXTCj9SMhyUQA7r638G2\nborDw8ptxf+IFPm3tSZppLTRO7Qpocs2Z819WqOFFiWLALHpSQo8YMlYhbLQ\nOParBp5ikV69qzVLPGO3E1VCZhK7eLMr0N8Gl6WhXTDJEXLdttjMDlfFi7mJ\npclKwO93lf7uUBb8M9HW4nWPagbDeP2XSSSjTx5K4uktfQPhMDXhwEH55FdL\n+Nn6BaYf+RQrxy2tMD+cUXMTgOIZmonDGuYNy6rRxses3BQahzSB18cIvSUV\n2sCRaMykt6CqrXEcmBEEn6g0fyuS03dpYPhEErcx/FPX6LrDXFfBv1cH/C+p\ngD1k\r\n=DviA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIALhoupZ9aQELGwf8ecR9Ai0+WXMvNoRepZ4+T36Fvc8AiBWBDt9XhqaEh0CLhGBZVoaRQ+rGNSWhNwJQfhImjEiSg=="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.0f75d56.0_1630534560937_0.9259203598999324"},"_hasShrinkwrap":false},"0.0.0-canary.addd6fb.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.addd6fb.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.addd6fb.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.addd6fb.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.addd6fb.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.addd6fb.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-NLS8H3lUehqoXY+igt6WZ4cDawUpEr09noQSZiVR8rm/8suTgacL+KJvN65bGgh5hSe8MZmkVwTvDTetFBbemg==","shasum":"77d82dab24e53d196dcc12ab2533fd744ca999e5","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.addd6fb.0.tgz","fileCount":9,"unpackedSize":19350,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhMCCICRA9TVsSAnZWagAAYV0P/2ogUIIECC3pZeroyxqZ\n6uedWYnpzbXkt9a9U94X4pF7AqW3Qr6rH7BEaUTNBCgE6tl2MPVjyIz/3uRl\nUVupfPdsy7zuimkaWabktSZXRVc3cCogS8uVkND8+ukQmgvY8AqEipWfA2YA\njudWRHXfcrAQP55r0mATmEP9NdVkoHwj8bXhJX+/UzhzlRtDCk3h7Injle0J\nfr+KytORvTcQtIsCppvYMTNfVxGsYth3B76/T1fFNlNR/xWiIAMe+IMItGq2\n9RMjN+OKgudToVmSTZzjPppTxjzx7hIYc2BTA13bm2QsZWfCNw2etrzz9I3S\nrmcDcB33Tl4xsaobaXaFEtmqoQTxIloiiIvyriguxiW0dUaW6dMMhu5cNGFr\nWtRtlgGFYayTKBmhUQZ3JxAOpCQoSnx1i+WzsF+6skQ2dxGAZVIGVVZRFUyD\nB9b/0fwnqtl0HpoR18OHXJ7914zIz/HrW9ZUm0ssDXBQy2hYW1xm6zZh5sM8\nvLNp6XCCWW7fvlrSrGwJV7sJ3FZdeZvgzWd/8gG34MIZ/hyie0P3+pKeDkkr\nkzZuRsxf5diTyEme7a251ubsXvzLsxTHcGQfjSZ8HKmBEb0ZJup+IMoVVfXE\ni64mCHjFyjkvCnxZbJVda9336ezuS7gxPfxeKPHidgRDML92/YEfklY+T7Vh\nsASV\r\n=7fDm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEQ7Pk/CQ8+qpYnXlFJeIug79MDpTszMhfJDBP/MSwNaAiEA0hRWqcrW6ksmfR7eFNAXggxRfKTC5uTxSYkCG5K1m5g="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.addd6fb.0_1630544008046_0.8511418379457178"},"_hasShrinkwrap":false},"0.0.0-canary.e938140.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.e938140.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.e938140.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.e938140.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.e938140.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.e938140.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-n8UiiE5j4CbIrarMLE++0GlNaoZ+plznLNFD3B9Z6VJIxJ7L5VO6T9tWPGNBkqA6IPDzgh5QI5q8vRj1jiXB8Q==","shasum":"998d530f62b777b734a4de3512c57e1982d0435c","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.e938140.0.tgz","fileCount":9,"unpackedSize":19350,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhOPEXCRA9TVsSAnZWagAAmXsP/A4Hzeit9K2IZRr1BUqP\n5dauUMdNoIvO0dMOnquGUU2qkJTXP5daGUQgJSlulS5876G08rCl+bYEYe8L\nzI3taPdkrpgKkIN3Ndh+m+v3rQkcek7E1sfVz2y0/bGTbe7Y0y7xv5SNNY5A\nONUlEcQbJkGeu2gXr7pBUJuWgqKl+9RnfDf6HGMx68dzhucE4ebIkcgOI+yB\nRpCBSJ9TKJTvZaxCAugUoN4QvK/ofhIA2GJG6fOb/mDEK/64OuL03n/6UkrU\n2koXDoqqj92NB9fYt1vnT80FqKpDB3NmjYdqsTEPYnLo3SheVVU/CU3/4pBq\ncQWkKT7gUyJRzkt65XTqXY88ucHCsJJn6SsLK44ItLnurhZ7r4YPJFoIW4qU\n3HSQTzvlSrL24oB5SLwjuB0pFw3SyQUDrGZ4l0kLf4+xbwcBUHBNvEJa7282\n0pNqc1o13F2s4ktOipE/Vm99xRmOEkxnY8Uz5gReR9l9olrai8BN4xYWj+5K\n9zFl6SSf7aUmKj4tb/22L5q4yDi+BpC4H7ur5QWQgmpMmWg6t4opwSXNFvJ5\nqvlD4cAR3plakPoe++NdQnHe7qAmYEDIY35KJg+FfznaEw1b17mh9HSvn9zy\nvoopTgEFPdNIBmFPHAbDz8G72mxYxhNyjneBObUlWR7NOMh53707O/eZHjNI\nuO0j\r\n=+X17\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDGCCF2ZwZHsvWA10Xan80SF1N1Sthx17B7oUg3+NvYKAIgF0zImFIMSx3SThVZaRTJDw8X6swsRceAz/n6Ejp5wug="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.e938140.0_1631121687093_0.33944294515847595"},"_hasShrinkwrap":false},"0.0.0-canary.04ebbff.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.04ebbff.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.04ebbff.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.04ebbff.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.04ebbff.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.04ebbff.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-QEf6isb9P/PgPiV1umjhtRkrG2gx4dmAMulrIjFIts/aoSq0jVELIN6ArcxkOPzQISe5xUSJA3eHIOiWSF6IvQ==","shasum":"85fb22ef89534fe0b1829e2d846a6df60604f74a","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.04ebbff.0.tgz","fileCount":9,"unpackedSize":19350,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhO5GTCRA9TVsSAnZWagAAM48P/REGSsJsGejqNZZK3hXR\n/Hr5I141Q0XyAWVMKJaGUxKwzK6ZjDcFQX1HX7FolfL20WRIecsEjuySt0Js\n+x/w0AlVC2dPHHuOdNz/VyN5ep8MNY/DeC8fB/71HTtB54w6ETQIeTqQLB98\nsCqXZ3x/ktYSe896pn/2N1UoYoTDI5EHCwUZacxAodC1QtKkAd7h29AyQ4xh\nGNVyYZZOX+PT+XDVoAoLwe+NZl7tXkZwgFOy+IFnCDIFF7Fz+z94ha/kM1Lb\nU4E6T/xKB85z3u8X5/wIU/bde/jI3S6Idx6IvkhG6OdH+DyWH4JjNQo95xGX\noBtgrFXEKtg4mN5qFW+wFg61Wa1zE40X3up53Rx/Il9jENy9mbcYBurXez7k\n73Ri+Z/3XDfaEXyllmj/tFZSG/UU/+BNhV/P8Vsgperj9rswIhDZgz/CHw6T\n9+Amtf/Zo4DEpnaRH9lcDnReRdiJ+E8+k7AAwmYwOfdthiJE3iyDL9wbN9pj\n71tX3RCfyHyoFcdZiHbkWWD4sFW+zOtgcg//KpBLrN4fOArTJRTkEy9sMl4+\ne0iMb7BEdbmynhOHTL9qBkc1MWe20WqprcLsHnpd/y3G9ruYXECHJ2FmS3Z/\nHBruGeq4KVERzjBjjzqSw7wYSRv6QUUBivBdwefAXcO+weypNmV2iELZGN/n\noDDw\r\n=cWgb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQClDVwAGs3qMJrKlyb4xtvAw+Crav5wQ7GZ8eHlJWKsxwIhAJ/T6MyXiiHOjZ2nHbWfHxUl+ko1Xgzfel8rM1HObVi1"}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.04ebbff.0_1631293843561_0.9221174001382115"},"_hasShrinkwrap":false},"0.0.0-canary.77d64ce.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.77d64ce.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.77d64ce.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.77d64ce.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.77d64ce.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.77d64ce.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Vk1YM9FNeOpuKzyHIkZFQl9OFrL/276NWTTqy1TMKRTwlHtDWbq8rxNiO1LefOC4AMifo0eg+AYhGYsGE8yuQQ==","shasum":"15f6c959d42b42fe0058149ac4d47413a5427fc5","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.77d64ce.0.tgz","fileCount":10,"unpackedSize":21141,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhQ75hCRA9TVsSAnZWagAAa/UP/3boCV/KXZGmqpYSSH6W\nYCF45jzOOkUttAHuamJ/EHHv14X7+1q8ZH1/+xyaC0rlGCNYPQ2m+qj2lUG1\ncshKSIeKYD5fq/5MN2aL8KlMaM5Ql28Wfp7UmqQNI3FQHm/fP2Pb/2VRobzp\nxWE3udBdtePRPBx60+Wq5Ra0RUPK1/mngkawRG6JmN+z8hAvhohf6JDxY8LU\njDtho3ncv/PyUKpHPUtxSJIKZ1OLabPkKrJgaB34et2TxSRu8EQ0S/2iavuN\npv36l3ezHNFm4Mw7nFtSxAnapBMNqb4X6YYY2Hqz76ZIgnfl+ZjhxdVsJWUx\n/p1z6bQ14hsnCADc4PVsSZ28jQJSqrPOF9nZBkyALjoeh2IJdNTxdfCW4NjL\nm8JfecrEkjms3E9cY91zDPhzuPK6jfyyr15TX+GFwsT6Foh0Vyx7WnYeHiS/\nIfUIvjPk56/FTqQUCNiVFXA/lxEzdLUqpdwM8b6hRUfxjIrWNqoVhmqITa+L\n7vFH0KtO4cn74opI0cXeC/2XMqO4QMm92Xpe3XbQO/EuELltC6VJ8EspR9CD\n6JJFYyu2/nv0VZPL23rvoGY5UDX7EWT9NOHbfhgMQ3CrUJ+km2xZwxN2vrLF\nvFYUtumg+Ji18xL3Ju0nb65RclcZ5xaZ/lRdTHvuMSm4TdoQScW3AlBGuj4Y\nnmB1\r\n=Pbv6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDMPW6U75lAbSmYezoYd3630Vxzyde6oICIkeXGojTXvwIgBM2geOohD7k1xLEPAffFKW5MBxMOT0yEuupjIrDaaNc="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.77d64ce.0_1631829601246_0.3358256558971626"},"_hasShrinkwrap":false},"2.2.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"2.2.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.109.0","fusion-core":"2.5.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"2.5.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-2.2.0.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@2.2.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-hMbCAt9iXNoLazkzQHv8BxEgwNx/geAK1NGil8WnHuICPPH4Z+QM11uXpZS2cev8rapRLQ6oO9VYOsQofMZQdQ==","shasum":"db39ccbd2f4fef1d50d2aaeb77384842d6f6ab56","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-2.2.0.tgz","fileCount":10,"unpackedSize":21090,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCT6QiMNyduNc7LCDCUfn+czMcuINUARlhKnGKsfp0CKQIgaIgVz5QWYWZXyXZ6OPnK9GCv/BcPk0cMh7ivhGfkLQU="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_2.2.0_1631897730502_0.8535245960349309"},"_hasShrinkwrap":false},"0.0.0-canary.a5335ef.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.a5335ef.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.a5335ef.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.a5335ef.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.a5335ef.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.a5335ef.0","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-gbWhV6D3e36eg35eE/R3Za1RsuMHXc3puBI28Tms8YCmUmaQJbZU6SWLIofrTEXgWsOiHIn0kEeWZ8JAxSm1MA==","shasum":"1c557428527ee98fbcc3ce82bf8e0c3624975a4d","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.a5335ef.0.tgz","fileCount":10,"unpackedSize":21141,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFG2ygYdViPBoWJl6bFHUhAU6fH0j3LZu5gBcqOoRQm4AiEApCRMkv533QH4C7jOZXVgnGpTAo9CdMRg0dIJvgZOfHo="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.a5335ef.0_1636408490056_0.8856752826890337"},"_hasShrinkwrap":false},"0.0.0-canary.99bcfaa.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.99bcfaa.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.99bcfaa.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.99bcfaa.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.99bcfaa.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.99bcfaa.0","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-y97F4VB366r5PhOMRUp8voS+FRuUA/giQ11i4B3fY7XVfY/4QPUXGM78N4WCQyjJ5rJMnhmIVUdD+wDLgPdeYQ==","shasum":"5c10e49c60051c0d7ad97a41d0a8ae47566688bc","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.99bcfaa.0.tgz","fileCount":10,"unpackedSize":21141,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhkuDRCRA9TVsSAnZWagAAVecQAIvDAxnPbq51X8mIzmUS\nh9T2aNohhz+qRvEk+ZM1VrC8+aVsSlYxI4mYuN7cfdSVFkvZbBLK923qgLJN\nkn1ziXZHpDKZQ0I3Ei11g83foOWCZsKIaE5JWGNftyUQefVlDUUBKCAgOMBC\nSA0Ez/aIkVJouEOWYXp/Z74DEjnaHuWROphOuXb06sjbG7kQDhw/37bOSa5e\nLVTQK52flPwXTGm2v97e2x+INsRRGYKy/vYWfBg0W/0K34kTalwLNeqU8RhF\n4WAoN6VIc9vGW69xMeTeCc50wPna+FpNZ1uzGXQeiV17s0GMwLr39mrvMCWj\nnwbGNL+3dwC+tfFbs4iOhmuuIneL8i09ozLQAOJc//t4xy0exWbXywNAz5z2\nEBTwmURVY30EbhCm/tDgoEhgU4oqvvtuebXZZbdjcmE7PioJZad2xVNTIUQf\ndAJKNm4WjIvY+OMx+JoSB98Qf1pApNSMU2+yMAFU/CWcgefEyOa6r2I1DIKu\nhAXAu4ucv3Bt54fVZFT2mE4c7UBXkfuxhRSplUhNJu14mZGil9qYa2XdFggA\n1tmfvH6GcTe3GuDg0YSbqCpgPSfWj/MEVQf1YmHnD+aG/tJvbedDEPjGju+4\naGM6AQsrzkfCymGM+TSi32oXdEx4+uotPw/EjlsUU2//FTblYvLBx/AlNOh/\nuaaw\r\n=Oo51\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCIwI6jfvZn+0Y9apuwOgewr91DMeBkFN5TifTreNEH+gIhAN7uD2gVwmna4bbXhx6DrgcQtREHMo0NM4F1MuyLrkXP"}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.99bcfaa.0_1637015761332_0.8488460195880243"},"_hasShrinkwrap":false},"0.0.0-canary.858e9e0.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.858e9e0.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.858e9e0.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.858e9e0.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.858e9e0.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.858e9e0.0","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-xVwPbvG3/r45/Gl3QXGpuZgjNVyYmJo76UUsaG0nGeRFNEoo4BwdS44sdzH9zoMg5e2WeZht9QdGT23maVa1VA==","shasum":"f61e1b557e6a88b6e3510b610769fd44e8c0151f","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.858e9e0.0.tgz","fileCount":10,"unpackedSize":21141,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhkv6fCRA9TVsSAnZWagAAM8oP/ibv/Ytay1/U24TzzTxJ\nHv6qbSdaplerAY5M+S4G7YohWpSHHeVMbbmrusCUS4QDvM9lyOQEoHhZGMUY\nSCjZxN12x63dgmSF+O/RR3iOLJ5PQjxRwGtuLTEXJLI2Mf0DrDnGsyelSfwb\nHQdDHEqkX2/uNquh+b313Gpw0/iVJKE/ZPw1rfg7ZuNZuOzqF5yTFE69azZy\nfOY5dEQAJAbPV9ep2MzHP9U+Tl3S+q+kmY7RZeRWv2BEBCofnPnhN7fqCyMO\nYufmeCLFpNVFNzVXf70FNvTFTZgXUCcN77zHTosCJC/b2QwCBqjEFaMY7jTJ\nV4nyudfuafGr95msapTxFFVhWCgQvOxm39toz4gwuMyDP13ONvZAkEitYyxo\noMB0YzqnfMMHnvbP879Qc4kzf4VxsIHu+e0PTIyFhvGYu9jPzWDossWduQtj\n9sqQmjzjnUOehj4hFbD9tFK0NbhPaIbR5V3TyN3VeXOmFXUFgRzDCk1jwet/\nDRXhIDzEHmreun/R/7iptHnCdtbs4qH2DOLuLM3FYHPt4LvCDPEvJRdw64SS\n0Eq5Tevtb6SuCNkgIlpE2eenVZ6YQe5fdGlEb/Xk1UqvxML2YtzvtrbJeziZ\ngYPJu+VkgZbMkEUB7yS+yae/aPi2PaNDQEtvi0beRyUr6pR3U82MymIrvBcT\nXQjh\r\n=nZ2h\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHvlb8zpV9sknXS9s8cDU/ETXvkJVqy1j8thLPpHa8y5AiEAhCxea6keB16PMv9BW1ZMwz/1Ns+opUJVk7dYY0/VzXw="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.858e9e0.0_1637023391289_0.9921477336483111"},"_hasShrinkwrap":false},"0.0.0-canary.940ae04.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.940ae04.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.940ae04.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.940ae04.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.940ae04.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.940ae04.0","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-rVaFi4CyY6PAcV5BgSQJXLwfrGgl4YU2tEeajw8CUV2g8Ey/iEk0Aanfyxs3yHByeAAwKCcoFProHsM9b1RZhQ==","shasum":"cbd192377784c4e88e165c7fe37efbd7e752c787","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.940ae04.0.tgz","fileCount":10,"unpackedSize":21141,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlEl5CRA9TVsSAnZWagAAhkcQAKOPrZ4TD+SSsIrOboWJ\n5zWs6wz81oOIt75gUVAwjMY81aHclx1KQ+PMASCSy832C8RcrFkWCh97c6tA\n/e/21FiKtS3FBcuU2+xjAfIXdfSiCXBEintr+f9OaWUQqoQo6XM8PLwA7Xxt\nJbqIyTVE8w6kJkSw2p5OxagxFJCsm0EmBJkstI66lUc5xHZwp3rBf5yqcjaK\nx+eEENnZ+mDnIy8rlj2gl/yzasWcfY3/QM4ywEVBeAldgDjNoOZsMYeJLHFZ\n14TtzKlKdf+A/e5Hcy+BoJkY8rWWAz9E0OQ9+X+ZNlg4I85jQdsqd4/kaGym\nq7sBCrwm/Fj8dJnK0HJZhFHvEnTK2j1jcq9jIdWaMdoSSAVNuizY/Ts1cxoC\nm7NAoQNSbrj1gcwKevgonhMW+WmCPvhoP+vIT7GJjKW+vvH86fiT+lfUZXti\n7vnrCWUKApgc2b4sKB/EgcfGpduOcPrPtsiTrObgNm3DMAhT8zTOAyA/1MbU\npuVU+LYJjFgfznjd9iyWVcExASwlVESAN40OYtMJWHS33ZhWWJSnDfTITFjg\ncA8mnmz3aMETj9zl2HOJmxtBAjb8KJCir0661jN0UQXCiapzK9ufeYIesbJI\n7+EKns4fDVM1Mmq2X433g3bjGE8F3pgxiE2we7mdZn7tZs5XLpUu7ZdjF7kg\nKB/3\r\n=Oqqe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF7k8gT4A6/ReGrqinC2viP0losk/DllCVpmkS5thbwcAiB2nNyCaW0n7SZ1P/tmlzAj2FaxpV+1DRPDbl3Y4mY0vQ=="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.940ae04.0_1637108088890_0.007539046430051988"},"_hasShrinkwrap":false},"0.0.0-canary.61befa0.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.61befa0.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.61befa0.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.61befa0.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.61befa0.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.61befa0.0","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-aayphIxcEECooO6cGW8Y1pQ21kdhOWgKiDhWYJxIS8S/6XYQsNyr5c07TNXJYs8dw+srFZNaFQmueYXSu3B53A==","shasum":"2d5ad23ed6d9fb89bd800cb0872d3c0c35124306","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.61befa0.0.tgz","fileCount":10,"unpackedSize":21141,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlXiUCRA9TVsSAnZWagAAzVkQAJfCwrP67gvhk6GeJrpl\nh/yXJFVIsoYF8RVzeprgcEfKUlqTs7VQApPayTPOdvqLIbumjMvFh7JOU97O\nua0Ug1e3WY6fX0yepn3Bk6GD/+1wShuEb+M69/On6typu34oSibjIn/nMDNp\nJFYJu32xCmXixkvqvlOhq3CxvBeOySI8pdc2bdHQCZF8seuiC+7NHmKStyND\nTleZslgb1r6B7LVkcEW7SJXx6GSxaS/WlzVESCyp5itOezpj9bB0acT9cTXI\nO9qj29W5UtA4MbrKao3CjwTxBQSR0iVmO6ZD0P1pFMLEfZgW2B6jQFTpJFs2\nHZJX0hD9ir73zmrHYx6Mv/ikccBXoBwvl2DSk4hgnvTdmI0+R2gkhrN80SLo\nK+DgQcL8Nh6vt8Gqe6nAOviannkGrVmZ/qq5R3NOuzcf42uSJqM4wYorA6kM\nCsIyuMOFbxXv+T5BvGJlBeSxb2So2zUCxTNyZ4/SPpMfyRjIogPntU4E34Nx\n3k0mckdMC66VobeQiDsiQLRI3P0aKWiq6pb34X2a99WDuvJ39/nSYpWD+HHo\nfzlfV5oeqi5K48vz/DfDYmaq19dX3SGIzthSrZzLwj4aRMdYXWxsro8gDY/Y\n4QPOI8goaGwOZCLils65Cy5/WbsT2K9GYxqlmijN3aVizSR2VsovruQDxf5C\nAIFY\r\n=zXSy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQColbXJEy66z3iHrrLJY2yVoK9UfRalDnFxSc6t5u2JqQIgGziOtWp9SaKu81EeI3xJqgW3cltS0R+BjsJxSm7vC0A="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.61befa0.0_1637185684530_0.847040369946378"},"_hasShrinkwrap":false},"0.0.0-canary.358ea34.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.358ea34.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.358ea34.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.358ea34.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.358ea34.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.358ea34.0","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-GIZ/CQSoSz7P7fQ15jQXdtbz4FSK2ZefTNBov4CqluaAN+xjhA0TAMJi5UyatsiAAB7P2JPxenkZm9wy8VNE4w==","shasum":"e9e04f310e7c1a1d211ea4fcad26c2fa04451d87","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.358ea34.0.tgz","fileCount":10,"unpackedSize":21141,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnPlYCRA9TVsSAnZWagAAVhUP/RlpCWe/hedb/oM/SBWT\nz4PDNJoyawMTn8UX2wAjh/OVDeH/bNKxq1+LEvlM6Jreh+573eUV4K2tQRm8\nKh7mNTqXqcUDRfg2qU3/d44ZQbrBEtHWVRQ6hde+RR6DoXZPr1b7tlDwCW0Y\nCA1X521vuQJ29fB1CsSUcqACMPjU6tEZUgBVD17cBIRp+KefENwocJXFgojP\nDvrRO+B/M/7HGw9CA47JamwvzM6qPQqMyEwrvrcvL/1eYMUlazs4brE/jGgR\ngSjzIJtBI/5x8oY/iyIENueVPwxt/n7DDGZypjbAAJA/6WG9ckFeX0PkjNW7\nesoewSlj/ZKvJSrbjzkudAQmwAtohNmg3jFj/LznDq5e1EXHwEPvNoy5F8dS\ngZMh42ptnp6cWXo5NIcjtO8z25c1yRCTf2agu4cOd1XzEMOlhFrMyhL+4irv\nCyp3Qr7sxMKdJRj980qsl+jrlN7Ft2NQQwHgp4UOQqtj+BCQ4jyUv+5tDXPW\nC+vzQQm27t/RFu2l19VAVS5QJugPksFxt/8ixMoBJtKvPVHH5Q28yaddR+YO\nMtyX80YTqIDYT1NnApcLEpbpI0lrWe73e9NxC+LtwjoFaegy/nswCxk/8sOb\n/wbxs3pCcp0eDTh8MGQf5ph60W1xAkdyBgpfLP59vkCpl47JA1GJzrWDCg+6\n8kar\r\n=Wtsy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCQeaJv+1k4qPLdwa1qbVIh/Uh7AJGdz9pmIsbh44LwaQIhAKIZvhL0l3ExGxWx5EfQzmFadGNCGa2CoXmf5ew474XI"}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.358ea34.0_1637677399847_0.5859760454770397"},"_hasShrinkwrap":false},"0.0.0-canary.0585b99.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.0585b99.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.0585b99.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.0585b99.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.0585b99.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.0585b99.0","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-ndsD6FsPx3oN3gszt/Aw8pP6mhn8iHdAvsq/4S+29VjADE3/KBpMN22YORSl1ZXy/xoWy1CrhAe+gNDApiPyzg==","shasum":"97b789a5e0d442af7b9c0335fb0b7f14c2e64238","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.0585b99.0.tgz","fileCount":10,"unpackedSize":21141,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnUWCCRA9TVsSAnZWagAAL84P/0jITbKk0NLjms4NBIU1\n2UK31cYoTQrLEAf+yl2C6Nf/fe3oiKI53eC6WergGTPQlnkKxN2/O43CC5HK\n7+8kYvq17CyxN5vpuE9p9TejisRCF+WFEojLCL3aXphP+ayUmQ65Qjq9UGe4\nma1AV2/hL3Xqc5d52TI6yJScQRdq/mIYfgcist+VKbnInsuJipHmnFEs4Deb\nm+0wEJZ3tG/Nu16Kc2qt80bO5jZf+NYKjo5CkvGHOeeFSlM3ZG9RqsDuJHKZ\nuLeqrpeTSP3HNI148rW+vfkdWfgZ6TcxZLeYdKNCho5sK85cYLgpeAhr1k+5\nHohZaYDfz8A9x4n2ObsLaiZjgBFsR7q/r6Vowg3TwbRZsBh0rdypyKQkizMU\n0aArbbELVBD1nFzDxrKBzpsFqy6SmqoyIP0PSgSrk28slDJUJA7kjJxkgHgm\nTdb9lAvsi/yXP3QtmDGWcB0Udl2s2XiLSaEvDDYYZShxrxKiSQCuvBUmDBKG\npbRhNGeiNTkDSyE54jbiqui+u8rYtKW3fp4PZS6whiJomT/WG+d4juqNA0f+\npsRLOXQlHNFkq17L0zOYYgKGEDL5gG6TjEPCJTPlvqp+WigQ+Db4yMKjCauJ\nkM6T/oJG4Y5p6up3WAcZm9qhgeLgn66pvLXVtFCBJ1KGnrvQIy97ce+6Dcye\nwYYv\r\n=3T7D\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDTtDfhOTl5QCuMowXd77ybQHF2GyEwE0onOMKEbA/I5AiEA2cbQJEdc7memAduJVk4yUy4dxITXNEq8A7djEXXyqkk="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.0585b99.0_1637696898415_0.38588489470802334"},"_hasShrinkwrap":false},"0.0.0-canary.4d4635d.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.4d4635d.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.4d4635d.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.4d4635d.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.4d4635d.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.4d4635d.0","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-WQekXK9QtY/9TOIpz6AtZ/I4HAU0AXD9EliU3z+7Y3wzgJq7kZ29OOqeraI+NeyoLicbPkbNUPV1ncoHo2CyVw==","shasum":"3946b67705f5c345149a01bba6a7ce4dcbdabb98","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.4d4635d.0.tgz","fileCount":10,"unpackedSize":21141,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnVY1CRA9TVsSAnZWagAAFKYP/iJT7uasjLW3UL1USuNp\ntalNZIIKMbPa+cj8Qw37l5YR2gJTmIK6055QnPhdf7TY66oRABxJjjNFM8QA\nHZct/mod9JLn9LETsORkZPcSgtsBahivRLdw5nrowMLCWyxZYxbQ+xLmd2bS\n+ohLjmUdk4Xw3UIlTW4U1GMgv8mpDpmXDqa5tBAEY/bVdVGbC+VsOFleLoVq\nS/rdsLe0M7WRpT5xAWT+V9FNx5RTDCBirJlJc/4voRkWfuL7x8Av4puXpuIl\nA1hfr8kHwBrNCX7Fd4xc3+Mw76r0xItuUAC+KPHXF3NoXxcrO2d/1PYZZT4H\nCL19jSnIKaWVM2pg6Tdn+XSU+ydLVImCRwEMPc70iAe1Tag8A4weYV8Q95Fa\n3PvOpyzBxaJlFMiFdz7d6fz0IhgnpRGPCge+RUJdzDOZOwPjtlKh7yK7/aZt\neS3iwhorv7kZL/N7mYruQMBezk1EBCqu48fbwufoO9df4pT5ni7KUra251R+\nGm6107livk7fYUA+M1txHPJGUfkmQyJByDIrDRfTDAjGCbqp8UQiqt1m4J0W\nTEWuWr5DbFb4QfjmmNUpUKVU8bnfkZxWctdrOVAJMGj3ePHjkia4BJqPA3LY\nGJ/52cuv7b091IgITbGUrxUWXj5m5hN5RhnXFpsodEZBB/vcjPZY1zHlm4Gv\n87kA\r\n=P0v5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+ngWE4FCnJIreJm+NFWQhzInW8cVgAXJ8LaUskzTp/wIhALjcOg0qw5/eVPM+za8kA6noLM0/Sjoh9rZyL0qfZjJa"}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.4d4635d.0_1637701172945_0.6945778158182181"},"_hasShrinkwrap":false},"0.0.0-canary.4457a44.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.4457a44.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.4457a44.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.4457a44.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.4457a44.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.4457a44.0","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-QLZsbHQ3vldcnR1vBLt4J5dPzMAlF0po1waWOybAAJpsufqR6+2J/vOL9vJh+FdoFR2vlOcP1IW82nEMl/e6/Q==","shasum":"0be960dcd4367a0ad0becab439292f8edbf5fc39","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.4457a44.0.tgz","fileCount":10,"unpackedSize":21141,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnVuhCRA9TVsSAnZWagAAfOsQAKKwFuJQpRXKWfRLwziD\npKiYBEwQFWCGwNGnIMqXziVAb/z+1aEGGzWCopq8mXw7qXknnMK7z+spL6CF\nhbNtuAtK8ChZv+2Bb5/1OJtrhy3YvqG/FyZ+VwL+1NYuiYZCJsmJPubj8Ezx\njnCG26+nSfG0C0JBG+z303Zehgy/CozGZ3VkX/9n/2X/ZjBw/Ln83aXQtfm2\nyoeWrS4MLrJ1pGIiveW5jliJ5K4kC1FIH3mSBCxE/UWYV8gaFhSq5NytsjEg\nX6PvJXJHQyBcGylR4p389KwoEulTmPWxiOwKRnLqkLmnC7yOjGwwAb7mMLCu\njVlu/O48abBWyjoNkVXTrVQ1W4o1j6/mp/4uZExYIzIyJ1+YV8EKa9b07tRb\njeMXcsCmQRvM5sZTxi7YV5fiw8NztIhkMj+CzVYscEFyhfbWO33oLPiOgmnP\ncDXEexvBcRtFiibNvGnfOpc3Uq2b+GLV2bfJxIydiL5ZV0kqyImOWvOhoehw\nQww486ij3uMmGGdAk7L7L5Bea+v2nsOtdvPBQ5tngOZOj2MgXwM/Q9sdz7JO\n7JU2L8X6aFazowv3IQ8r4a/cQmDFVjuPwrlhJHQxqlVaaHCvyG614rv0tQ4q\nlSi3kr4bmYIgqMNZ34Sjw0HV2tMaq7l1MthNowGXRTq/qPWAvomayBCFL2ox\nuDQx\r\n=1rqB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDPuFzoDeHdI+aMX1ZKtfnmrawJHLfv7LEK5MBV+OCDaQIhAPPdFnutNu7FDW9ZXjeR8fHTVJ2aU4QS1GrUGr+VCoDt"}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.4457a44.0_1637702561041_0.6670854580642049"},"_hasShrinkwrap":false},"2.2.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"2.2.1","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.109.0","fusion-core":"2.5.1","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"2.5.1"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-2.2.1.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@2.2.1","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-6q957LLC/Aq3J9loeCpMx4gDSySWXAqeqs+lfYBJVJRUgJwpcvY+Gt2i2f7XmXaBmNRuHNPD1jpXunxyA4RzCQ==","shasum":"872e238acfb440ffa6e79995cbbf90ac42c3f15c","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-2.2.1.tgz","fileCount":10,"unpackedSize":21090,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnr1jCRA9TVsSAnZWagAAAlUP/jDI2efwVpX9G8BC7pyg\ncBTNKo1ZXzb9ic83kSUsnMOOZtwudlKhRFFPayfA6GbRrkTyFo9j9IThpieo\nxRgpCJh/QutiPq0cX2y22Tf6DVBhiwuXLOZfMXlSvZwBqjfDys0rNVoipK/E\noubwr9ARnVac8LGVYqYrLeTndXHV5Vfb4yKRHnxYWKR9HnpY+jlfznyVhGkJ\n80cPaTmJA2B3tY2Lj2Fjr5D/deVtITPen13bQR7SqeNmhaaHhUZwEL9yQhu8\n/8Nbk4kpxhWk/P08AwNRul0Kz8jYdEaT0WseZUALMtD7huuOFprv/ne/ZRMa\nxV6o9PGoGZ8jQsf+NAZ0z8ocYZNyBWlfBWYowpddWKUsc+hI5o7FdzaHQUkQ\nfg6V99DqgY0QDRUW25ZyBoMGUL62BxM7zd7f9iQtF0oB5N74dvQXXrdGEYKt\nQZhz8deM2ZawoPAv95wROS7tB0iVyD71Y4APoLyg6Tp0n28A5XkApoxonC28\nl4ndeVcoMBgwO7t6EswUUZokLNAHZoRMLT/OOxHYxw+uhxQuuMB2RFlu3SPe\nnCOyrng5MaRqBhhi4drwa8jw2TpHuuJhKBNTS9vLKSyoJPzM3hQjQKn/iq45\nGw20kXEmHafpVdOxWMf5k/IGQxLopbGGTWk4PRx/Q3RKprYabIfAOXEFrVl7\nYvEF\r\n=mJo8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC8tO8MfG/ue3dcUX+N8yvm6hD53jqZwp+dQjBu2bvOsgIgRXCl1IVgVmKIPa6YqtHZ1YXyGwZN9zrsiOjgsEEXZEE="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_2.2.1_1637793123613_0.4445179915273869"},"_hasShrinkwrap":false},"0.0.0-canary.69a107c.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.69a107c.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.69a107c.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.69a107c.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.69a107c.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.69a107c.0","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-SSpTapLw/dn1bR+lf1sG0yO8fO0e6VSC2dE17EK3JTIIEhYpwzuP9eIXFGnSSL6Rkb3k+RNgvRa0NH5OTw7vxg==","shasum":"9b58a8b7b616248f7ead7dd66e9a893f57ed9e78","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.69a107c.0.tgz","fileCount":10,"unpackedSize":21141,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhrp+8CRA9TVsSAnZWagAAi6oP/0fQe7h6XDTsqrnXH6tN\n6e8W3Ff7WFj4mzadf/MVrp5ep3w80jt1PRiIoUB9t7w+9XDVqEjt87qxiCFw\nd5raHj1PVQOti/WJs2yO4at2q7q6tP7ZJapi8htbja7UeUQ0ABSrTrd1TqE2\nI00tcuocQN84kUnQTdakPHlnnNOnsiIH8vJYrlFXCEZI+HRV86Giuns+GLq2\nPN2lxdLygzhvlIuVjTxqiPbe5/dNLS1amWC9yA8KSFYCJYNcemd7i1x4bru0\n5q9uOTolTHUJXcVQvbR7/6pE3ShPevSsqtpvwOdgc6gmF16T/sVaIsz+UWDN\nrzgC/IRayPKGfVj2xsikEi02R3/6blcBWUJkzZXQFZk9djZKGbU9Fmg2VMdi\nrty1c3W5CXwoC2Ln0qDVf2V9PS8upeywrxnIJ3bjgHJ60NA+erjpfOwHVzHr\n7SBo9H+rCuToY1OQzU7OKif5SlXaNIugg0ySm9ywDtBD2FPEr/q1/SYGrjQa\nyUQYvhdyTrQrSuW2XOVVUz6cU1VdQBn/tL4ILHnZMWs5hBXWR5bDfs2B0sOT\nY9OpOtFnuhcDstFUejIZ/Qv5NCoFeZTf7wBd1+wgy2QNGNoYIqSYp8XYNuny\nukQtw+0D+0d2LcAZBDHcYwzKlHC2qT1BnBE09+6wW4UCOiZpDyVAZ+2rrlCw\nrLKr\r\n=6yb/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICdnB+ZEkuGGcXgzZZONTelDmeINPnTCAZcfYjATp9htAiApFUq+Ba4SatdczYVLd4f3QL/xRlgBCd0lMvStmJrShg=="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.69a107c.0_1638834108563_0.6583655336866585"},"_hasShrinkwrap":false},"0.0.0-canary.c638cb0.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.c638cb0.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.c638cb0.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.c638cb0.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.c638cb0.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.c638cb0.0","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-OWDMtdAubzrKbZhoRFm1P6v9/WsG0vNiHrzBYl2WUi+5X+4rdPBrP3+SGYFJkJVaJxw37BwPxca1aTx+XZ8oQA==","shasum":"8b40134fa27f43fdcb26c9613e1b5e93df2e677b","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.c638cb0.0.tgz","fileCount":10,"unpackedSize":21141,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhr9axCRA9TVsSAnZWagAAg/YP/3h0HPpUGDpVIpoGsBzS\nxdFFMFUxj51zXXTLUvscCUkGxOVG8iQ9+153THlZX4fCtPShPSao/QWPCNT/\ncVMxfg2eLgSANT1pzp+J2j8JZ9YZx80Ja6e+XCuCvZurlqv+Czr/PNOnLBWG\nNsIbgIVsM1vuNLWqIpUCuFQLqEhwChuQKO//rmD8hD+DNuf1QB0uBYs1vUW8\nKOVS+JECshJ+HNIdEaN5hiKMIaU3iJ17igBhok5s1DXH1lQGkQhZmBaOriVM\nUDuecGnBxAxdYrlyp1ced2gSu58xqcfYVG14BAXhObjiHxaN6gzcatcedOKv\nas6N9hP8+3xMRMv+Btt6GUxx09v+87aKZiQH+UZYlJUZGcsUJZ5Ne4HCEp2M\n+rfBgwPqYiCoJFF9y1sI6h6bpUa6dLEuBAArPLx81g9YufttC9bamP84S4KX\naA5YZMKqDxwwWjZIS5iph2gAByecHgfcx/shxID8UOh3VNpJ15tiNhvZccLo\nj4Rvoa+bnbaFercYpZcMJdfjfUY1ocMGbEOio1isJu2/buMTxpkPntjqpgLV\nnmOuG9WM6FNCjl1g7Vi1YgFS1vK9zKGESPC7wQlE5eHWramiGx40kX3LZKOD\nVUv1mbdmlosft84KNchiJ1rnzGeSNtT7UtCv2RPBsDSsE/a71kp1nittkgYZ\nXCTS\r\n=rU2g\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD4HsOoon8OeV5pzH3wtYgpfgW80M2PKzY1oDHxEYLTsAIgIliB4JNRkjOWz+Ru8fumx7j0DXVcQOexwq4ZPbWIbAc="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.c638cb0.0_1638913713575_0.9576234530378411"},"_hasShrinkwrap":false},"2.2.2":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"2.2.2","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.109.0","fusion-core":"2.5.2","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"2.5.2"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-2.2.2.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@2.2.2","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-b4NkBpHML+1nGXsmIXeXH+IxjqZ6lWmBU0d0O333HyhMBLJ1Tzmwk8d1m/RwoJiJz810QkbHQ+nwEjy9X9eapw==","shasum":"527942c6defddc5e8d774532947d63699fe3a8d7","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-2.2.2.tgz","fileCount":10,"unpackedSize":21090,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhsmoxCRA9TVsSAnZWagAAXckP/0x1wiIV5OJfoAtj2k96\njunB3jjwdo2kGTQ8PikPEKu6ULPbC+r8p6GFNiTAyo3rAuTRln7WaQdWm7Fm\ngrr6hxdOz78VGQWZIZu977r8+KHeOek7hW5rDXOxDZRwXL7zLc4YDxEDYX1Z\n9a531WE5EVD3itcPrTb/xiEZKjpoOxM2vgaBEPBjHz1nciAwz2Ir9Jj20+as\npL0l9THCJqLvD3p6IIIo7PxD4eqLPwO7RI39vBywTjQJRz9vj5zZz6sM1xwW\nkdBCp+Lt5PQ47UvPVO0bxKStQJ0Ucg/9uk6Kla5FyYlDkeFLBdD1lDxj8M73\nXvf4LkFH/wiXTb8HdyBVbQV6qwGrjlf8VFdRaIeQer7/3xVBcP5/CNRIfDUp\nI/NjAlUkxluoLeiD29cO8w2YuaUgS+gjw6cA2dz9BVBGE9OsjIG9iXBJxqfA\n+hyta1JeGv4ChF/kNxnk4BFioJvuY+vSkzgyZZWrmRCM+smOee6ebaS4ER/9\nwSsVHpDgHSpZnRYOmVEZ9kzPZHlyQya4oDCQfnckvQ3WVa7pFLadoHOBKj8x\nUqdT/hRn+qt4uWy/OCt8FXz4kLeU3PzDl42LKD9BjWbcPB2fcXqHyHk7zLle\nYQPZpjsqJYNcxjb8QMgPzbkARdimjOvbmNUCFtVBUTrDu5ZcZKHwqArfPDnH\nQdu7\r\n=4kL/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCmzWyyF/iOoTTjV5unDQ/BPhSn63XzxxW2pOt1suT73gIhAOY3ymX8oUuhWhA0YNSOkM2prlvdREcZ1ZCQKEziUPU9"}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_2.2.2_1639082545303_0.34534617924646094"},"_hasShrinkwrap":false},"0.0.0-canary.6c63a07.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.6c63a07.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.6c63a07.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.6c63a07.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.6c63a07.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.6c63a07.0","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-Qoj4QslmYeIaUDzX1l1mZDbt8HcI4wclFvO/kunH4b0scKOv1hQhcP8SlTgn1AkmQkSUxkCHree/bwCvOf4r4w==","shasum":"6c206f6395f4e351a90bdd30cc8f828be509cabb","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.6c63a07.0.tgz","fileCount":10,"unpackedSize":21141,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh02+eCRA9TVsSAnZWagAAeokP+QBLMCdFq0XTse/P0ZoW\nWuXVZAX0KBp5LQ6dZIXG+A8/y/ZAoyW/vHJgCZs8soJ+Htt54ZQaW4CIpa6W\ngcqQincO9tAA7JS4Hmf+Tf6FSPleHJHZbI04yzqCqnWvpUJLM6lNi4VcOwKO\nqqTQtlQuuD8SoczcSQ6xxC/QZTSIb5WRI7j5CyJZVJH2a1BcCh4BD/VRL2hD\nw3q3wYmhMZC+0fvR+Srvf0NxvSCVWc9OP5haQ9HWp7MMB5qje08NNmIytYGo\n7j2FvaPxb0kaOTii+t2XviNS6lkItss2iW21jGYNHtRC1xR1FD0A+DHg7Nr2\n6p+MG16HsFBVhQQ4DXyF6CFgMmJZeBqzeVYJWgE+IB95RCzG0sgG3vHouxlt\nCo/EOTSzyAJMC0pdYFDNniKVQjKA3wksQ9Pghr5ZSOaoPiQE4DvGptUEjIUI\np1wZTE/sMgThjox2oHOlYKUMSo+e+QDIZKVj9Am4KIxetZg2kmL6LxyF71d6\nPAAm14ntbf0yVZX4kna08tlCG7grKf9icgER3P88D61HKkzxIrlTMVQDUVXl\nqoir1O0ULlAos0S8GdeLzfmeg5rZ2AVNzDLXwoTEG3vcp8deaxiry4wuRKyt\nGT/imxMvw92XwzNLFZkV3mC2uRcmJO+a6VNwL2uATBOStDKipMkP8w3pgmuV\nPgYR\r\n=v6RU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEJDcHF/yeprUc/3J054kTSFRh+LwEtMvNlD5oaLsMUhAiEA8QE1SfZQOr6BeAvYDkF0pxjnYJiq6+HPEs65xYeOEM4="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.6c63a07.0_1641246622648_0.6693194494224319"},"_hasShrinkwrap":false},"0.0.0-canary.2fa3949.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.2fa3949.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.2fa3949.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.2fa3949.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.2fa3949.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.2fa3949.0","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-bDhf+BMQ18Do2Ztk5fSh/WaChvegWABHwv4pgjrOZnQLItf0av6C6X5wuQZGiCg5fAJcZ31hJI1SZISiYG1dKQ==","shasum":"8297de7a8b83a1a5858ae0f2ebc46cb03e66c428","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.2fa3949.0.tgz","fileCount":10,"unpackedSize":21141,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh1MTbCRA9TVsSAnZWagAAKCQP/je15uR6OStDqaPPzUHG\nHu4wlSlDvZ7mTIO3dCRGqGiNTtyzVMuZL+4VD0u6SIF5u8SUQgj07Em07qKC\n+t2JqeMiq0rL/2aJqC2Ar/+8LP65uBsrKCoVshLCvXXfIG3hHa2AQsyuDaYQ\nvBRQsovy5YnQW20EEB3fD63KssjR9Omz1/lVUmruwg88Jokd3X60UpmQMWHX\n5ti99oJUswblv4tZvXXeGmGpu0Ei3yrP5yrSYFRvilj2UunLVzNKgVo4aFwi\nh/NQA+P6Yv4syJKgSbp+LyXkJzWxIwNQp375SfOBme62XNx83auzUnMXehTU\n9s7SoSsg1uFbTeTikVoj2YwjCEG9U8h1GA+BQXsI6ecMpaJGDtec5aE76m2L\nTszih061XTNKi0RbGrg25WJkWjxyPVNH+NsqyHvPcSdevXyR6gqK6M42Zmvp\nZRyFYl0cMvak0QfYUZWPDB0VgP7clCIAX0XzUFKfnR0wsmQ6VjlecXselN+F\nmbwpELGqhRUwhyyIfKDxrY3vGvSmUvZjVZ4YqC0jk8tNJs5J9gCF5++EkdNh\ng5qp7cIyksipIVreb/+Fk2X0YuNLv8NtrXD0X7Ob7Zgd5LSMQ580RPPYoAZf\n3LCf+KzQfSpOmCF6V+lV6FVjUvBK4dpr7iy6w85HLEBWUv9+ajE6y526BqOF\n3hET\r\n=jWkn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICyVYKScUaU4JdkLWehV/7ZPz7r4GRo4AtSpc8WNxBhJAiAeHDNbIckWzUARHG1QOc1nM9jy9HMCMNz9oEJQ7GUjSQ=="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.2fa3949.0_1641333978855_0.37810795785366724"},"_hasShrinkwrap":false},"2.2.3":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"2.2.3","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.109.0","fusion-core":"2.5.3","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"2.5.3"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-2.2.3.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@2.2.3","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-wLt7g6woDBLlhu0n6KQQaC1cgXoL3bwwxEXHgdkReUGtHsALUpclTc+NMRpuVkUWZEhV3Td6IAaCzd9QwbUZQw==","shasum":"a85cb3a0c786b5fb4dc89d07801ccad8a0d20406","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-2.2.3.tgz","fileCount":10,"unpackedSize":21090,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh9EPjCRA9TVsSAnZWagAAy4MP/AleioCMb2Iw+jeIseGw\n3tJlxNMdbylIvrSDfpcG6dOw332EHSUa5Oh0beYqrF4zG7i2EI5KxHNVLEda\nWV1Uw6mxxKHGJTuBbs6eO1fCuZLWfAch8/awq1PWZAzjK01XdM8X7trBtsKS\nkCNsPqi3oZixslabWanGYvPpJzpdBCLfaK3vmFuLzrcvFYFt5IzZl1+2fV9o\nKCkiEiAnj3kWS5V67v5B/qw1nU6mzoK+B18Pzm1ivtDQi+6d9Mlb4x+pG3yG\nJ3T1S61F/V3UTBa3ZckBf/XALTx5MsZxM4gfwAQmaVAEXoJaGSk1fVqYwxK8\n7vQGE502M/QW1ICl/9IuqFZo4CKotqDW69hUiHPa0ECuX11voNcfR79o6Ioj\nUI5MVuiA8MjNtLUq0KvZ+DNKgwMa8iVqbjsWOFtbnE/QnpJI5hUmIJHfAOnK\nriL900QIILZ4ep8OWNF41x8vxv8U1+k/g/dVbQcOdBjsjZQsuBzgF+zgimxz\nbRroxlTQPNWO0Z/D8F5Vrs7Rn6N+tX2SyTlrTxoHDQ1dFsb+v3EbNA3K78kG\npBDrhzFffdX06ARsUf9k4c10beWCNvYAnX1xcrOuG8qYEa/F4hoQrfawez72\n2Zj3f16VN/8iR3Jiv4fhsiqoXNAiibb0nsj7lx4pFjKdjPLKt3J+bqa5lhJa\nRDt9\r\n=d+zl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBb8tVON0erenfDtS7IYnicNoZC1Du4nbvMY506N447OAiEAqiqa5SJa3ZPL1mODzPNfsx8UPTG7AiENxtunKlhMh/g="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_2.2.3_1643398115087_0.6712413091397356"},"_hasShrinkwrap":false},"0.0.0-canary.2961969.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.2961969.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.2961969.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.2961969.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.2961969.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.2961969.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-U/9jIE9O74mszUnz82lx7A1vTMzq6raJSSG1fOvyGw1JYWigQVkB2mX1W9zbTu7Zv2r6AjDbW5e206YJOV9WMw==","shasum":"41ab6ec104291d84062c5c575a66fac7f46e6c32","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.2961969.0.tgz","fileCount":10,"unpackedSize":21141,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiOg/0ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrENA//ZK3ujYQiPQ4/YSQShCUj34nUZ4OwZjORBHmBgSvKEoKfrF4Z\r\noWYZkR3/oFUTDVnssL8CYhPyjyPzOXsld/oSm/WR7OEI1IqSOrCdu+pIKkVB\r\nJbp9TXDh6UB88R5nOTY7DpzIZZ6l229S1mO5McL2GtVHqU2uTga2bboJSL8E\r\nUeRiIvLZxvBnibm5zf8vWfrTbLoFr0vIhUhUqLEbyXLpFLRIL6X+GfvtQvYe\r\nj/f5atkkaEOI/BEfT2Du4KSfRCB0ZUVlBo/Qv/O3lURiBQAhsbE+yZb8/Ryw\r\n/Sju3NeMr/16Vx5Su3CIy8Ao+O9H9gyusrAlDaHGV4d0hu1MC8NOFdamFgIr\r\nAgCy8s3Bb5/XBIGMloSNpPMV96oeC0wvEsiiJo9zSumgW9LL9lUhmipLdhy9\r\nhfWAad2t9MhUe/0hUyc9jpbTfN2jVPe+bPg6svM04b9ZsuhKVtXBAVoahGqJ\r\nB6rNhOhKDvSfBa6dK1TuxWSUbzvRAhxSTq9CYnFj0Bosu7qe7+KYWrY5ZcJp\r\nzlbYQdFxM3izYwzKFLqrNgK/Nn3CSrTQ6oEyo4iyGBaykPEcxysVVxW5xU0h\r\ngAW3DRYZLLpoOkvnztPngncwhO50OmocgY5+IBCl4ycp1yzEktQY9yYAH9GZ\r\nrLOBy6RL1BCHDV0KiEvLleiAhdU6jAXHj/s=\r\n=goMA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF1mMemuhau2ECMrFn9z35BgPPDIMNOtxUTMHA0EggCLAiEA93BPfRo0mjA755elTFw6duB5DKYh8siGJBHmJseNdUc="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.2961969.0_1647972340017_0.48853408930959796"},"_hasShrinkwrap":false},"0.0.0-canary.5dafecb.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.5dafecb.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.5dafecb.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.5dafecb.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.5dafecb.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.5dafecb.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-pl97MtbZukQrtfFy6TJyQwkrEhpCuLxZtc2nnS8KhesRCsFmoT73sbDVEkOgduGU2Ey5pEHKhx/y2wf2V0+Ubw==","shasum":"162333492175d3543a791132858f2e810d753083","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.5dafecb.0.tgz","fileCount":10,"unpackedSize":21141,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiO6XGACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpb7A/+OsJKwt4H1VJP2vF+EGmPwW96FG4qDtbgPDbx98krF4WO/+R6\r\nFqZ0gAKQtSHo+9lSo38J2YZRTNnyyDdK6SPRKJ9Phhvyn/vyQ6M0jobj8s7B\r\njI5FP9vSMHLi0TZ7pfyvYg6SRvp8jZMKxERQ1d6GfudNCcCnmjCmxb1rbhYf\r\nTFajS5W8aLrltcTWQ2ktiCWmUKDi0qq5ZQg3EwZvszgVZjbo/sZOIb5O4pnf\r\nSYMpEI3vK55gd+uIshZ/s0mRzgB0egMfMGrFC3/k2pflH+IOwkb/j6Kr5yOt\r\nhVEHCfhGlcwmzDSHVU9/g6OfZBpyWnSmqz3qHPBly5jLecpxdnR2DubnzRK9\r\nwT7AGADOruL54wzO2u+V1uSXrLIRMws755DB8LyuG6mlQziysD1APGWpu6Tk\r\n5Fv9cEN51gunA13wcBzVGXOvRN8seNU1K/Ysi5DtOrGTd9XUA5SlWoNP0PfF\r\nz0s6BojgVYa+5CJbyX4L4Igzvk27Ah6OCWo082FcXafaM/Xs4xxTnRHLN5sg\r\n+lkQoPXvnTERBSKITCBCR4PEyJSX+EHqRyfneYMaZpUP6KKpTjFO1l7qVl/6\r\ncP8wDODNISUKzT5AhC+1UuuJefBrtlqA3sL7ZOtasTqs9voOYiflwRJjH5vp\r\neVdJ5oD5A4AywOoeMoWiAY/GngDyWdDP1uU=\r\n=DP4a\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC43DL3j1PCROAp+jh059SSg7CuAOoqq8+39TCTRxZ99AiEA2uyBFPhbYYDwgvoBYFfEfTNYEj94kZJND9JQz2i0/Pk="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.5dafecb.0_1648076230115_0.9194689580869015"},"_hasShrinkwrap":false},"0.0.0-canary.f10290c.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.f10290c.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.109.0","fusion-core":"0.0.0-canary.f10290c.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.f10290c.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.f10290c.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.f10290c.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-qYiCz7m+C64odlfxQeN5cy9vkO2dxUXTMkWhpsbNMNxcr2o7/FDeFzHBE0vfr6pSPFnbNpwrFnR/0ut82kkK/Q==","shasum":"0275029d6b37c62c5d81bb62e92fd522ba23e45d","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.f10290c.0.tgz","fileCount":10,"unpackedSize":21141,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiO+AeACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrprA//V8GizRRyzkp2YUbhe04MRD4qVQLaRQbzB3E3Di5VV/Au11L4\r\n0gJ9wBqRChVDHKiWoB/IKpurY8SK8oNfeBygvz6e0whKE+dp/YDv6/t/qUvC\r\nEdAS+rainR1grdw84dB19/MGOnIkaKZ7KJ9lRCOYZNl5BEtcam9AJf8p/les\r\nyI5pYmWq8W8pMZy7FBU5MVMMjCbPc3rVj6Oo1LsRqhYzEztuDMf5H28k0ek3\r\ndInRHI5P54HbPNsLxRI8kvOxNSlVzyVMCSsdXOd/waZ5mq0B3O5mJ+39jJ7r\r\n2dYeGOLIpy10Zp9eTCFe4fEE8O+o6WqDVSVNz3Q48d7zHc3/vhfjH1vD1P0c\r\ncXK6u/bA3b9XQ/jNRxTk7ynuqs90ol9WAhCZ034xNkrZK3wMscW9zI2MWV5T\r\nXM067yIEolG7VJeAHArzzJkIRNIgtqSqyogW7sdUOUmy+vapSQDtgxcQtw8X\r\nUlohDE910wiLqdt7n3TkmL/OOCH9qM6KMDpjFDAvVbQ+9fqm7hzBP/M3i3/+\r\nd1MdPO9wP4XVC7FEMuNDICYv999144hnxsOikZYY8GboUMNf6TOfAajPAMjs\r\ng2zbwwbyRapge4HAYc8DSNqCMHhSr6rNy+YmnYnxZd9TE8wTYNqrDDk3Ue6x\r\n/q3UWw0UhWCUsWEE/Mj+gsTKE1daG8UEcK4=\r\n=X+OK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCtqWSvf4haFw0TGUtWnfftnBYW6IAfIxAEXNydvCWBmAIgWPZXRCp5ma1dcFqu0GAlOeXPlhYPdwNsD144191I66U="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.f10290c.0_1648091166370_0.5726590088478536"},"_hasShrinkwrap":false},"0.0.0-canary.4b95c4d.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.4b95c4d.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.4b95c4d.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.4b95c4d.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.4b95c4d.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.4b95c4d.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-HIMMvOZMNWiLN6F4m1jy94OADb0t28c8DkQUju8RrzlUMCKpbTo/ZJRdVgE6OgsJvRpPRPq0MYf8upQLNM/hmw==","shasum":"bdd8116a8287deccca24d1370ac105f8d9c104ff","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.4b95c4d.0.tgz","fileCount":10,"unpackedSize":21141,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQB1/ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmoa0w/9HYLFw3hXGMHB0UVv/jsP6AiuGH5k/SVmqZRu3BqnYAeieJ/y\r\nwGowgD/V8bJMB5SgEhcg0znpG1n3Q7CUU1KxwYWGjc4PfqaZdDfya/LWPOgd\r\nsLKwo9/3iRrdeNjBowYbF5CLO41PwDM1UdE+hCRYacnGmm9th1/1R3RU1rbw\r\nLagHpyLSRSDhQr5ZALsGn0RUJ5fR3hEkiBsvS5x70M/Qtsay1txyf4W1xPOM\r\nI40SVSom5cHUHAaqZ6La9pyG5TflT2zQV8bGb4TcNh2d6mFxYtmHZHL13vkL\r\nmBKaO90gxauy0J09i2BC3UmwmSuyQEwLYgCL3ZQTGmTUy0Srf08bPd11todt\r\nuDgQ4v1SxoYWLsTzrdXSpHR5pNpgh16/XeLkhk4iT8l+PC16IKXHVG6inKLI\r\nEWI3WcLmjoOezZD9KjCwBRFgY1p+LllzvNXUkSVz75mG/bSIwN1GKXnHNDzw\r\nc0uHD9cn6Y3sWMidjPKwtmUaky9bZRp7fmBHR4t+06YAbs6B/e8kLI6Z234y\r\nnpw6riRXq7O6RSQHfanf/Unqv0jqHANG7bwPEriocnxknnWb/WnjC894fUbl\r\nW0yt/m2B+PL9N0TorP2tk53reQ842nQTGPAGE3rpTPnbmFtCXpPw3OUG3/VK\r\nEPoq1dwA2QLbNDiG4W7VsEN0z7RcKDMIAKA=\r\n=HJg5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGQP8EXxLJ/OUGz13hf6nXnslxpSL8o5fj1HYGT2zsamAiBsDAG0X2sKjplxSWwvbzm5P2UdlPtsrR6A6rnLXxiXTw=="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.4b95c4d.0_1648369023572_0.30701309357912776"},"_hasShrinkwrap":false},"0.0.0-canary.ba7901a.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.ba7901a.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.ba7901a.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.ba7901a.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.ba7901a.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.ba7901a.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-SaGFE4rFUxOwBQWHOWb7J/Qe24m6vhPNXwO0taVYUiTrVtNj2PrgicGiJh8bEsrzQPkNdLq/KZ6I2G9zdkdT7w==","shasum":"893a7a4ae9d5740e391ba36ec238d33acf4cf439","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.ba7901a.0.tgz","fileCount":10,"unpackedSize":21141,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQTy6ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqDeQ//QK82iJ+7OcAScOiDd9joMRtq7DD5Lze/kxgvbZtEDcdXPYM3\r\nOwabU5Z0u3M0qABdy4EUs0L8SbYKmcnpVDEju4AsgkjxB8Cceib2O2O09Ni8\r\n78snXeqKdUoCvW9GsGPE6IhSfflY3ii9HNwo1TgdNeGLkwuOlUcSlTpvI9cV\r\nnW7GxDxmDzhEDPpE6PLF3suTTCvkbuPY0jYOiCziLkTLcIX6FgFukrvmsuWI\r\nV9fMoFo1GPlK1Px/iK2YXjvm1sOk5++2eUyutFPVETuZWi4VF4Y3CKw8XbPw\r\nU2O6Gx4utiRnHHIGLkxWEOjE0OgRPy7JcZMaxw3tJXoJ/M4Ou+LOVO/vevgQ\r\nakHdtgWJ2jkVfrqk5xe1/lXIAR/27t4FV7HeKnOu3ANzy36ajlGbvRu04Pxa\r\ncSdMnwVZfchqBmda6mX8p983ryMU5bk8tATcrjRsQuimIJI88tbTZx0s47vM\r\nGsiNjJYGDCUrg049k/HlxT6gaM9badc6CiQpCe10R7w4Njtu1xltSWc+fimv\r\niVA1g4qYHLQXF+13JfqRlJu5yzZsuVQ6HlRyX2cYLSHh8drdM5dVSe613AyM\r\nKkLXt2PGwgBCxEcNOCNGkPXAnp4g/uWM9vmAroQuACY3GAjJ5wVc+qZ6ZHtW\r\nfJoFHk/CY4B3dnDnczfeQH5jO0ucV5ncfbs=\r\n=x1wU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDMeDLv68QySB/enzDBXIelvVUHOdKJI7g1ntGd4ON8SAiEA+xGSFirbU45BfeyoCj/QDW2e7UyuFv7L+Q8op6tEavc="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.ba7901a.0_1648442553952_0.7113072205451065"},"_hasShrinkwrap":false},"0.0.0-canary.53e71c9.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.53e71c9.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.53e71c9.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.53e71c9.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.53e71c9.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.53e71c9.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-ZbdOgzSDBI8JUTWXirioVnbtKMnMNtGuOBgdYrf+l48NKkMTzIkeYUh0zPYnkkguMqy8oXAz44JOouzVFMxSCA==","shasum":"fc4a2141136c545f4b11c928011ebb0604cd2b88","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.53e71c9.0.tgz","fileCount":10,"unpackedSize":21141,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQUliACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo5Cg//QmmT+8b7xJ9DiVMaLHl1Rlp5jgnpep/a4hgwz96irduLoBVo\r\n6C5UEpboIM3b9rfEZ9b/UffwFWnlK2Nh/GmH0ubIymU1EdE+z2gf9RK4iZR4\r\nqG9q8GlWrr0L3KRajvZwp89qVvCqjQW6XBogKnj5qwaUyufLaF8zz4IBYNZ4\r\ne00ICdmngnbFGvFsjbmtsAFk6kuvQD/D4DZ6AtVuw2s51Ou/Cfm0A16+31av\r\nV7lkMKY2QYWo7SktAQfX00bKLf6EYqtpScmuNkJePO8LBIinqLrkMx2GEdME\r\nq9nr0EQfHuTO7mxwydp8AtjR8O9m/vN3m+R11Nt4CG2CMKiwaVzQbTE9BHKa\r\nZMfCg6yUiRWFVBXmS53rXRIDcnbfnQW5D3lO4N+sKjvhA9CxDUaMYsZSuh5X\r\nEwgB9wC5VjWtRnSby+EzgVSEtrB7WLweCec0XKi215xsSP9qUYKJvIgBA02v\r\njc8iEe81popAm3mKrpGd2otur1HpNiE36bwFlRw88HGQ7VFOyRgiMbx33nfD\r\n8GZLlF0jGvMEFe4QhaAVW1rep0H+5q4E+7hFWEWftMJYs39sUY4dL7WbT7Jr\r\n5tImQ3ziXJFdiHsC7r6sLYvinkrQyFgUa6zycER8sMhrwMpn002h8LO8SCNS\r\n8ziI7dyXIfFZHVMffHPP8rzMnF/rog9pXr0=\r\n=uWcq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID968tjtMsq0el+Yo7XE0OYIz8IUC1EY+SkvLWs4cgMTAiEAmui1VKsPqIQB1JwV0YaOUZvVoJhEl45W2U61oDaVCkk="}]},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.53e71c9.0_1648445794324_0.8933853279759316"},"_hasShrinkwrap":false},"2.2.4":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"2.2.4","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"2.5.4","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"2.5.4"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-2.2.4.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@2.2.4","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-b8/Hj21v3v/q0Dc0rAVKVhKQKl6kGnzkmaG1Iql0Y3J2CPdO1RUyyHCCn2vxnD44iSa31KDgYB03H3Xr2a80Sg==","shasum":"5120e045e21db585e2fc1947a88478700ccbc173","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-2.2.4.tgz","fileCount":10,"unpackedSize":21090,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDCbvk+z/xwvRrEBQLgYK4q+yIhG+2ZpmJmL6x0R37t8AIhAJkXbRLVwr4VTD+5dpDgA3cWMXMSf17GmlfW/j4G5hcf"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiRPCnACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmot5Q/+P2IXa+JNHvuVeZYn0hK6llDZFvVBRMQ8Oy8GrUm4Iyd5/U8d\r\nvjRj0zQR+7szzk+lxBEG5AQvo7G8R6vSgk4oTsFXju89im/oVlTOf94EWjjj\r\nIDihR6QD5kBQ7vmb+ERrnGhQ/WKmWdGuaSogg8UMcB0yPNtdOwGClkdYbbEy\r\n8FZPEQuQlb7nGCTSz+X4XnmN2fk2us1KdMdDP9g50pCrs3rJOJ19ADZ/pq/g\r\n/SWib6Vh2fBKr0i1xw5afj3Qn7epX3hDYxn58d3ChN/bAIdC7FPIpIHJ2wDT\r\nLWtK+J55ODMg0WWAo57ihcD1+LJ6i5RLjDcO7EtLJgegYWsx/zJableX4fOq\r\nWovRLRwjBNAj54a4o9PX888xiho3CeEnFBonH5h3b46nW4bGgKqLqu+G9t2e\r\nJg6Qd6ZFWDksE4hvcW2noIkC6tTiJhbWMXdX5WLkFg+xTxEwPi0u8MX92Gl7\r\nSX3anbFdrOuEgj/xXDmI/+Dr8zt0NRjaDLglgH0ecWxjkNe09rvk9lAGK6R6\r\nXWggTeJsc+oayYsV4n8GhLMf0ejgZ18t6s7bKF4/E9olOly06NsydfsRRiCy\r\nmPfOqw9E2Lt4sL0e+1qySPRZTV3DHxpZZq6BlrLwJBUXPqxAdD6o9nyjJ2GJ\r\nijD4mflaZcLG60OEe229LJa+v40GnFnmXWQ=\r\n=k+GJ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_2.2.4_1648685223467_0.6931774845213041"},"_hasShrinkwrap":false},"0.0.0-canary.04f01d4.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.04f01d4.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.04f01d4.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.04f01d4.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.04f01d4.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.04f01d4.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-XSWHh3iCUvDIWZBc/inkSub6mvZyWP9Q2zPlibyLLfIGYdjVmI1N3XP+ucGXz5HrRMmW4iw1QVnmPHK14eFbMw==","shasum":"2c8f1bf15e684f7f53c606007d3ab0e29f473f6a","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.04f01d4.0.tgz","fileCount":10,"unpackedSize":21083,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCOTiVUheX6QtTIFn3nfegq90toY5idN9DtzLtqLMWXJQIhAOACW1wn2mwDtqYM4rA+YBWefFvmx9Q8h0fzyiL2VEmM"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiRdVOACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpjGA//RDdCGFKHdRWVpp7ebi4Izy77hWyudZa4N+NurhzxP+AFE1DM\r\nv7GZEGSaYjo0PpHpgcXtOez1MgYwMtFr9PuZ0fnQb/y+4YFYZ+lLyOMKclLj\r\n4GWJ9SXlZx3qA58u8e1yhh5TPWmqd0UiRVQoV02pM7MH0CSyZn9u5tWgRvH/\r\nZOMCVGmCt3XtAjWLK1xBED+VXtM2ua1CaivjO8+Lr+E5WjYZv5afGU9HYt38\r\nrhSOGuMR7yJGpIGNdQWJYP3B9p9d8/6SBl15VayAIcng8VSsaoguR41hhGOa\r\ncwFVtdO50JWL3K70mVFJXKbCechgvivsJ1m2ogh5Yi7QtIeaWETxLEmQk4eG\r\nbOxS3IOQu4QZ7D8dn286oVnXPHr/fmxJuM1uFfy2Neh502x0Dj3+iwbkdvTD\r\n8OqjFdI+/2uHXkxfDyfXKTx+QR4gG4rcwbw+oQRn3wh9hcyawOcfGMaOVsOa\r\nS3x1mIi+ypTPQmZkhhuR3BzFwlScl2EfjFjrFRkAOkJgiZghALgUNUH6ewcI\r\nHrKKq40fpvZbj1A5AycO9HELuvu6kGYhI8gXYBpr6zsWXWWWXhPBWYYZbgKV\r\nyZr/WYhlIHmaV+FL+ZaXqVDd2JbJVyEw/nX7eQWh4jXXXjZuYgBeKQj0hZ2w\r\nzq0o8ChgGvl1kId28el2FXdk64vVYsD69/Y=\r\n=kvUS\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.04f01d4.0_1648743758601_0.7436329230193137"},"_hasShrinkwrap":false},"0.0.0-canary.0115aaa.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.0115aaa.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.0115aaa.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.0115aaa.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.0115aaa.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.0115aaa.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-AaOBp6Dv4hXw8XfbBo5y+BBr0sqVpldqna/clPFb60/FC09gKEzMKPJRZUTLvgysXt/QVHolpGWJ3eK2lTuavA==","shasum":"6a242e60faa1f86d2db10d6167f06d69b3822ca9","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.0115aaa.0.tgz","fileCount":10,"unpackedSize":21083,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCw2Ic//rTc7VXnuP0BVlcTD4JaBCy9uybWmjtGDz0B4wIhAKVFRY6Znjv6yvZfmXodKiTf3DchzWaPwSpotwRxPCC7"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiRiJlACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrCzBAAlD/qxt4DOtsjjW8oRZNlYGzHkISd8+TbtuXyZa4xLciNXHTH\r\nM98vKR/vejHI0IHwUrbjUnSOWgsrgSBoA/g/vjEiLTbhpMqz+slRah51HtRH\r\n2JgHGY2KOuEDmHfXR/Gy3pVsSrGs/gEhYxFDAGISG4V7H//3rK1FowcwG5vp\r\n4GXR3Pl/W/VoY5JfOugeFXLE64tJ2aofXe0Lra7WXYozQajP+U/xV/uPQRbT\r\n+6Rn6OmOQ7edyh8d2VQdJTDoXELoT9rkrbEyVRd18wtL9GKjY3uKfOR7Lnea\r\n25FuxaxHzLFJwDjqs85l/LY4awTvFJEK90rTOa+/GFuovpotVSavZlewZgab\r\nRf/nIhen4WzZ5PyENLXmRY2j3QTZRXNHkw1pbcwrNFYrQD11b9Xp0Xk8/pMo\r\nG/uw9J40taH+LDd2TsML2BkvDnoFNEqibtzfJo5fLcD0MjLbHbabQRqE/twT\r\nhff9xMBIM+qLl30YbpWTBQiaVvMNVUK65iX9Lw5/NLJdL1HLftFXMnm84KGz\r\nHA8g9SOTKfR4pXmvUEvfgc/kVAWoddCxYHmZbONRo7pr1chnM4lAV0+MYsnk\r\n+K7chv5nUd8WizjzOv4ms47IPT1eeahB/S/YGLFJ7ZihFu3AoJyCgJhKhjw1\r\nUyquqb0OwtfV51OYZy7lGlljQ35q4oN5mtI=\r\n=23eX\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.0115aaa.0_1648763493381_0.9380429042300673"},"_hasShrinkwrap":false},"0.0.0-canary.3fd760c.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.3fd760c.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.3fd760c.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.3fd760c.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.3fd760c.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.3fd760c.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-nuDmuuUk14J8XkBDDEeBq5oURXOn6n0cP0zPg76X0RQSIJZktn7giiV2mI3fLKDROaY46Jl7jEnmVuKHyc9xzA==","shasum":"f14b5392ecde039ddb9feb408d654885582619a0","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.3fd760c.0.tgz","fileCount":10,"unpackedSize":21141,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC5+oZk90Ru9kAOO7faGEKJy5wVrUqas0MGk1zRXWRLxAIhALbY2FREmPmuIAdXII1QEd56/qD0jD9u7PmweU0arzmK"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiRy49ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrTcw//QNIKo5ssUTh+IjxC4DHgLhgANHCYpR02cbGo0UIC+KTmZzRl\r\nYtj7p+JigNZO6qu+w2zG9FyPv+VphsnJycNM+QtM+dZezDU+qr7Gg48caY6j\r\nVNw3XPnmpfNJ6DfjkBSgfs4spo1kS/xhwqBW/bVDYA1TAGFcsVkOMm82xnBx\r\ni5GNKHUhLhHfhu+wSxkHh87ToxB/ognSjrrKa6cFv77LJapxYJUYkaJE2/63\r\nWyZo7zcoE8YJpIuVSjd4tsCxJuz6lFgk1sUHCWk+XUg7DjLoj8aCMERDmZSu\r\n46Av49zjpWitrun7+2JPIb4AcrrzDldshIFz69D7M7OMptzfsYmT+h7mcble\r\nqgChkdGi6j9XH110FNyLbY+SBOvQYl6pAyWMqcASCvod3881Y/+XKp0ifrdv\r\nfODUfvHsm/bEG9DPTaw34D6ciDQg6SooAFjNg4PQwa1MmWZ4JRaUI06hyAlC\r\njhWMg7MLeiAAjlhbGQNTtyDt1zVfIBuTBUlfNIfjC+hRI9fVM269jdSMu/3Z\r\n2YLKjdXAXsCNrLxcmxer39bUcvIkY0XbYfddTjS+Xj2LdCpttAL5p52kTpZW\r\nOPP0BkgbN8pTgOghVEm7BrZG8OtIU5k2ugsKYo+pXR25mUoTF7bIiiOynoxK\r\nl5hXOmC52vlZP6LAHLkXZ7jjMBAaewOgRDA=\r\n=PkB9\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.3fd760c.0_1648832061756_0.9114830259908537"},"_hasShrinkwrap":false},"0.0.0-canary.d90d4e6.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.d90d4e6.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.d90d4e6.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.d90d4e6.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.d90d4e6.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.d90d4e6.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-exOaW0Dlz8FkLkol9fmD89LQHhDcr54eqY3/aoDv7Ky7IeQ05klcocQ7JStyVsVHT8Zi3U8BAqfk+X2znS8S+Q==","shasum":"e807843ae214f3bc944164fb137c137430fe5f28","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.d90d4e6.0.tgz","fileCount":10,"unpackedSize":21141,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCMB6Q+P1YVL3A0FBwbQtOK8WecyFfpmMc4SoZfHpi8EQIhAO/harC+0XzuoNb7ZbGlVbJOcC3oBiNzLayhvufvpRZ7"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiR0SlACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqA4hAAlxJ8Rk3GjTnhVUDmCR8UZGS1X4Dcpt8V6gHNFlVjfkB6IoNs\r\nJZYiL270/+Z/1iuy1jrJjTeuuhD9hPOydCxW95d+5OnFIgCKoHz8btEXzPdR\r\nUa6N0UaWC8EJCpGQCyMLLgmEHvwrFmJdY24turMTIyc0nnkTji4OF98o0xbG\r\nJG8JUfzxytI5x9DZ0AGyu6FlqQsn4pn4pPXjvjyNcVPcsaS+XH/FCuDHt/JP\r\n5M7mN2ssEfUD3+DEaGKVmzMVRYjkEo7na7j+pWU6X3vpIlrUZIPzzHRKH0LX\r\nnIzz+9SUc8etXNBgNXT8SQ1C93OYzT39GwgguL8fa9t7SGjPiILmLkVfRBw7\r\ny6mJD72hCPcdwizdw8ezby3VeVEG4g/gWwH4SLrtbU/2DtL8Bo8NwTGZc4Dq\r\nM1SO4Q4rID8g7dOiYJSbxN4pGLCmuSo0p26j0/lyIY2dOhzws7Jm8h4wADNs\r\ncU+P4A/E2+8rzcjjHtmMPNRo0OYUjX8SB3U5Dil7DQMivYoyK2QaJV/b6Z3Y\r\nWrniPByvBzKWSsWzwr31wCslMWiu9xdKH+2Y9EQGa9IGyt0ZCKuh2lh4SFw4\r\n2sQ+WN+CnpOaRWdkzranRcU7TVatGxjNY/o3lYlJz1sP6uLakRrA0voDQJQR\r\nb8l9gIFv/6NpeC8BmEfoOtXiQv6wVnzl9LI=\r\n=8VYA\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.d90d4e6.0_1648837797240_0.9981956506431255"},"_hasShrinkwrap":false},"0.0.0-canary.0c6b102.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.0c6b102.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.0c6b102.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.0c6b102.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.0c6b102.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.0c6b102.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-dvMe20c+b+EyMdA8mcuiBneZHTEJXTrYzMbfWT+5/vooHXgrGbHTsgAG5+M608qA2h6D2yHqPpNZakS1d0pd0w==","shasum":"3dd91386bea0a36a5722ba023899ad66b5022f7f","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.0c6b102.0.tgz","fileCount":10,"unpackedSize":21083,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA6JTFOI/QRyVu679AuCX/kSmXBwJtTbLngjAa8kdyMDAiAu2DvCHrEaEfrT12ebhp6lXSO3I95ppT92KzoeHgyJNw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiS6IHACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo4dQ/6A5uIJMCUf7whgHzbAdUAMl1e7spV3wofsra+/+7YfoKGzWYS\r\nu2ATw93oVbdGvSMaEXRHR7BS4RO2K+iJgIMLuzDjyi4A/Vem5xVBIDU9jTbz\r\n4QTPOqgBPRjiuCozxM2KtxcOi05l1Dlab+IU6WhdYag7ZKqjcRcNYLRHeNGD\r\no0tmUrFMz7zvWa/zojv+5yKgXbhEkPnIQF1gxU77/gFr+W67Dvqzg8G/DxoC\r\nCHgQ8lj/LbtK7vmSn69zVEvIk19gIyH7QwOzHAG2Qxg2ueVcS5bCPc97nzsH\r\nk8/m78hq/j0ckiwgPrXKx86zz8I32Jax5zEQjhxTJ7KlD3xU8I6/9hP28e5Y\r\nRxtadm/Sd/XdsTcQCRaB1Nj1+v61d7lzXKSrwq8D8OYXGZVGJoOoxLqK5hzK\r\naeIZh+Z6jpYnRa7yz+eSk6BYX7UGHOu5DfCyyoi2XE6M93V+1SiBeB1m5aAo\r\nPL9WKzWZZXeiGdhvxsLEJSR4VjKeJpeA3RJgoU0JrxdTMjGdJGaE/w20HOCI\r\nlIpAsTpQ7Tcl9J+isVGmDbDfH9UkFFCvavcp3mfaVuwstuH0OKOFN8tnGWYa\r\nYnyISBxaRV7Kr3IFq4HNgDIQgZOT0HoDZk8kZkPo/alMG4JeURtIoKikPlNm\r\n7InYZCot8Mom1dgzJNCjW3pUhsYChdxIlrU=\r\n=5J0D\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.0c6b102.0_1649123847045_0.2511364585462077"},"_hasShrinkwrap":false},"0.0.0-canary.a48714f.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.a48714f.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.a48714f.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.a48714f.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.a48714f.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.a48714f.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-gUlpOpoy1qk4j7hD7ndvgHdapqHEm6GntjjohFTe4/yeWbLhD8WwaCR9VtildSv3sSTsrjoGjS4p7hKB+M65uQ==","shasum":"3a35b699f2d5ae3bbc104d87ee6547a150db9ace","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.a48714f.0.tgz","fileCount":10,"unpackedSize":21141,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD+Z+BByOGVDEXgReXLsZE1l9uspTpQhtgjBCwLH4sgHAIgNW6cLdCHOaB3ycxhtZ3+5/DRthtsaS5Gn4eF9j+Vkc4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiTKKGACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrJzQ/+J8rCS6WMXDZ2eF5STs9aif1aYyUWHRE0ObJObuCuk0q+4XM9\r\nvSWuwPio12xPoloDna9Hb2oa7WKEa3VhH+OmRytWAyXMIN06ML9CwOlZF7jc\r\nDecvakT4hIUmKQ6BpT7W7czyIzgpDK20IU5qbNTQmmP2A1LFnXQ+LVd1KaC9\r\nGuDoDzgF3xn6ZsEBNNnZ/9R1CY+ffHWkoHSOsfQS4e6pgBY7pna9SREuf0H0\r\ntrF5MzErnXxEl3qmq37UnupBcgPzK/QI0tbHpjzsiERJx26BuNbFov1jjpeT\r\nWb9I4PV7C6ghWZhXRrBcWzzv85lVtm0xyStzfdH1fp7SEwcRCZwzdCRxQSXg\r\nwyDxsjQ2NNHEUJdGQveJJtiX6J3MJ7aCLNV5e6yoMfq7o1W7vVmgwZfoxWKZ\r\nWpploGYq1hZTg8PNMPidX7GEu+ucU29HSY/wF0mHFWo+f9g3cokd8sF8lfev\r\n6KE4hbGV4XVI9ykPd+sQZHe0hM3yskTWQX1BYiIlJtXdUhGqPfC9XNR8hTyg\r\nmFP3I78WWjLXHRP3cdsyPH2kfR/3sNn+8iwW28Hhi3JqbMF2X1XzxavBdle1\r\nCqls0aZ7wwaWH7AZPlEsLC6FnmSBnLpi9kAjY+U2CLt5r3oYn3ZbOBlpjV/c\r\ncz43dDFE9PgwGlumtxzd5FnN1kqrVIO/i7Q=\r\n=Tf7S\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.a48714f.0_1649189509971_0.9975963356210726"},"_hasShrinkwrap":false},"0.0.0-canary.48261a2.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.48261a2.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.48261a2.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.48261a2.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.48261a2.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.48261a2.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-uatU0tPTcWYGTvc/+sPlqDkbk7k4CVmYhmBaweMEPaAMYrwF4Rofzbb837UCTUV/SFb0d1upqBpbUTSI8tp8BA==","shasum":"b08183379d277761e8083f15907152bba9127b9c","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.48261a2.0.tgz","fileCount":10,"unpackedSize":21141,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDEZ5bEAOwo749KG0ue+ktxkOI1QSACzg3fMBx20gtEnwIhAKcWNwk068JfizUPCbGeyu4wCJSrPd1I/3PHBHJ+xDgy"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiTLl3ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrKzw//WkNTJs++x42hgwTXFVQYzSaG1hEA/rK5rgD4n1naJKZKhVUi\r\ng9YFbrkjXoKXGGSSq6BZqGHi3C8iMZMoLEcqaORchkZm2fBSQ0yKsdUcRWDf\r\n+mRvoG1LJozvegTY5LD2qMP+FmwSoExXFnzaxXCUGjgyPJAIdANZvTboSOCs\r\n6IE82+04J53tCIoBLinOg7+ZSmy9JglsLBRRtTsWpCSlS043c6DJxy8dO09v\r\nYBTP4iWPgt0y0auPeJD71s/vu+P3cO5r82dKnJR4K+ExkgFarO1nvwTo4tEX\r\nogW5QKlfS6wVirA0rPbiTRMiZ17BhOmKdFSvWH/y4m8jJ4k15qSoDOLNHlcy\r\nAk36cgOFVqZ4Qj+qbcO33whD2wqPCPekaC6VAysoFXMnd1re7C0MiJJdykfP\r\nmuq9kefSJfgbBgTzbDPrTzk0I8jnBfCAS9bAmCGBS6Vcf5KtUufZE73t1yKj\r\nHs+KpPkJ6j1+b33kXqBri0W+s8p8RzLXCoEfGt9scjmyNJJRonrFACIJEV55\r\nEVR+o6QIrwWFw1ktk+awf8w82BNBRR9R7RIW1SgVlPqIrxk0CFcgmd15NJCo\r\nW51K9IVc2OZmTFiy9EjlKHpsE7PQeapQl7vXzjJWRq+2KpqDUfQMP2uQrKCV\r\ncJGnsDy1vZzDmLLFU4lf7cK2gfBkrnJI0gQ=\r\n=iIVd\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.48261a2.0_1649195383066_0.9188811921592694"},"_hasShrinkwrap":false},"0.0.0-canary.e4a0af5.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.e4a0af5.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.e4a0af5.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.e4a0af5.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.e4a0af5.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.e4a0af5.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-p7ZQYiVW8sDscdWEC3Q3x+uYbPOE7HMci695UE+B2ttYIijMem91iQW5Eq0Q+O3gZ/Q6lG0H8BsMLtaB0xkO5w==","shasum":"87ffd6f9ae7146d72759bd526605cca9f006f15c","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.e4a0af5.0.tgz","fileCount":10,"unpackedSize":21141,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDAb31cCYO0a5xqL9rZ6hRJas1UWKqs7ftHnTZ/8zyD9AIhAOfUqpsCHrYXaoqQIFEEQBGWWDoNfjiq1uSAiPbMHqcs"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiTMbyACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpNbA/6A2va/2qKjwJnR6aliUjr7GUA3X96ql1jlid1/A3xFHHbkqIc\r\ng5mGaBLVkmeECS8DUHHCNOoc+zWNQzV1x9MxHu9G9x4emqqVhxMlPaOO84in\r\nJqDHtABSkkLdkHrMJ+3Z+gf+X+emOs/fEvIkwRSe7aBv5vOj91MYtuvi+gES\r\nTpUXeMaqstFJYqV9DUmd/q2uYIYjvYFsorqYXIT2hfh95DkZ4EITg6vxuSpY\r\n0f6US87SXnBclKzf1pujkX2CKy5Dq8B9PvQ20WfEhwsz5P+KTPvz9FMAJj8S\r\n6R8tRKo5MAGINmhltgr1FHueyfW2WM70JYxuHfY0Gr5LQyEzUVBNqOidSUUD\r\nJJYKZv2HORHd1QR61iX/TkbFuKHCSk70e+RrTLh4X+4+Bc9Yuk1BcD1Cuifh\r\nxHPh1bE0qZyCc1Fn77P2BLO7BU7PWWqTEmiiz152XyD6UjKxw2N2S+J5KSJ7\r\ni8ibEv6fCfaGIZlUvenfSp73kvAZzlRim97vL7p9k+NB+VQvTe52q+RqXPSr\r\n/9sRDqhY9eHEG2/J6vP306oZfNGJOhiW42F7UE1V2ijRjUkGV1swrfzb7X71\r\nwwftupbmHrkm4UCbKRFPxQTWJmHUl7ZSoxCs6uPIdZyOkRbPOzQPRFkumkXS\r\nKt9IwsFqlg3RcXpN5WXdSID4eCdOmKzBFL0=\r\n=PNqt\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.e4a0af5.0_1649198834652_0.7944304077939122"},"_hasShrinkwrap":false},"0.0.0-canary.a5387d7.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.a5387d7.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.a5387d7.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.a5387d7.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.a5387d7.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.a5387d7.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-pqapKnYpTenKOaJoYPpa2azva8CV0ABtZrQSYnMajRJxVKNC8YkHv06vH3j7LKXN2CxmeZhdml1ETduOQdKgxA==","shasum":"e551647c02dfa1b06b87ce89f3a1e1acbf97bf8f","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.a5387d7.0.tgz","fileCount":10,"unpackedSize":21141,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD89B6EaiCLlUK8c6oQBbHW2Qr+DtxVAVIANxsjVkVZMQIhAMBz7WkqRB/gq8Xxn/N+3EvUmfVEsn+TreULupXA2l65"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiTbvTACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmofCw//WVT+3a/xYxtZNxgVBXy7YrgOUlnh0MvMcJkSOtY0RRGNjQeC\r\n19Ld3XobDGWkTX7WDBbz03qxbT8wuX2KPVLai+ftfNz9iIQ/AW74I9hSmQUa\r\n5e7q1cqJZbF+dduIHLGB192Mn0+qXxuWPOXY0e6+ySuLKNi5H5zKIXnZdU3b\r\n6qLbPzxdKnoJxcyHln6VhI8aUQqxp/E/4fTl1hQywmgS4PJHnyRmqRKVTEeE\r\npkHMDcHP9+Ov0Srffsm119DSR/vpHyUJtVeANVdg82TMoQhargA+xMP/gXYm\r\nceU0xKCH5B6I2R4dY2dyj1csL8Cisl5N9FEDg06QScXE2DFWHoQj+j/mUYmI\r\nq4EImwNCdLLaNIK+2OvWBO0zLSg3SFj9Mp7k5UemzSR1Y5uWy1KYdbvHC9HU\r\n8WblhsfSM7qEiT+kRwctaI/1yLht88C2hS9KYnYBJX0NcbyI4cprFYLTb4yN\r\nVqBVow/QOupCNvnH0lG6NUtzXBwdkV4x8XdmDR8BD2nOkcP91DAm6rwZ4aHF\r\n+Dc8bExOLM4T00uIe8gAyC0hOCx0yoihIatdue6ZmtvEUjuTE1ddsee3lj4i\r\nxTBNsl37GJR9zTv7nazfm+Wq3ZCSfZadkM1ndC/Up839fYcH4eEcaqWjIBqp\r\n2zjQy1UcQPbjLv2tSm3LGBYB59MYFZhT6ek=\r\n=SN5L\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.a5387d7.0_1649261522946_0.7807266485280839"},"_hasShrinkwrap":false},"0.0.0-canary.4f43ddb.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.4f43ddb.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.4f43ddb.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.4f43ddb.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.4f43ddb.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.4f43ddb.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-cRyvYQjMErCA0yxvi2hxWNQfqMx72sOxX/nk8T9oeioKVLQjzf8lONQ+qAE7f0DBxmMD+yiR5d8ZjiuoV5Z+4g==","shasum":"37229d4f05766f2dcc206a6898088eee5615474e","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.4f43ddb.0.tgz","fileCount":10,"unpackedSize":21141,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDnmWOotgRyUFso6aIGbM87dJlHZqoHFxRkBppVgbfaCgIgVALayxaHXfUxUOT9k66dsr/sk3KsFjAs9v72QDIsB/g="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiU6mIACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpgURAAmgTs6HvQUskzO+GmoU6/oQ67ZumOiR3bo7WsQ961CjqYLhb5\r\ncF2MRNaeILv0zb62/HYS1pmxoPSLzTXZtdPnXgmcSZ3cuO3pgkQiQpV98XAc\r\nAGn6glrZOnIr9MMWCSRUSP2rYpNR2nsNtz1YWGY3zvRGYxqCQBcNFnY26WlQ\r\nyFojfd5qvwPOrDfcpyIuy8cnDTiTcmiS08uVNAX8fr+uwyld989iH3VjICvj\r\nkv0N1C7wFDxq46GICsYwGPH8U3LzUFhxQ9K/Cb1ouPM3tJEIj4cCgmlv0gS/\r\n9HTVhHe3TcCyReDNcdriR0ELBdPaOAaIROphXHWLZ01vaDC+8O3VY99PjBOU\r\nbAADw0Vo3/tjWAJsowZTRY3ssJhiFnU/MOmYnGujcANTVdGew3NmJYZv71XQ\r\nrJExt2DoU1sfhJLBMCO5hvYIEYVrYbpwzpXeIORtL34A8WQJSpuPF7rn82Xw\r\nW8iEQC3o8PkYY4fnYfS00K0c468ht4DlEUACZsOLxD535SLPB9FKeQJ5/nCB\r\nfYzcPn9Nkp+Ohtwnh5oSbqiKj2aajrb4SXKOL7OOH21ajLA6jaxXMwb0Sukh\r\n1HdI6ZDBOyagD2gmyto1CjOrw03mn5oTkdqU7moO9zFpqI3GrRtRK8ayRUMf\r\npqLvFNmJrXD7Q2DHk/a4ESfmP00ng3ZCMqI=\r\n=PT4n\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.4f43ddb.0_1649650056234_0.14465789363955417"},"_hasShrinkwrap":false},"0.0.0-canary.f865478.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.f865478.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.f865478.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.f865478.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.f865478.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.f865478.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-tKZYGhXBu6VRBYu7s3cZJWnZK7Irf+9yMWi0d/QTa+n//0R1PgAN4auqK9Nvo4Bw+zrrgit4DWc+ZCl7lReH4g==","shasum":"7d649489b9a1eed5408827ebaaf7be196ed5cd33","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.f865478.0.tgz","fileCount":10,"unpackedSize":21141,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDODrothwuWZyQGtjOgJS5X59zUnFwRmZxHKl8ZOfaI+wIgL0clEU/73+ejMjAe7pnT7UsLkyIoCxRYWm7+wCh+5yk="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiVRWiACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp/Uw/+Ntt2N9Ct/VnwU2mbiaaGhwFWeUapADSTWJhiq/UMMMVirG83\r\nBjuiwL7MoxN+3mIX7e8jqZNZwiLls+ush2Irb8SZOm43Fd9EaTDho4n9SoBq\r\nmBWfIGZ6t9U78ss/agEMPHUQjZph+e1WnvAu5No47XHq5CoytXMBLwFj3tpz\r\n5Hj1Pl8riO8ry/c912mYv/LlwmyzhYizeguEc1dZYW6/AvxaLmfwlisXU5bf\r\nF4/+19TOA+2BPv7wF4uYppgfSQrBwlEhbb3TBscy/SZ8zudj/lH4to36QuhQ\r\n8RvZ/rr2oj0wpgRH/Sw7DEsFtQSfK4Us3xl5au3yVuIngfixonMGGZBPIxjE\r\nNjBnf7IpQkh6GEYTJyaxA5hLrvjhdy81RdlEBUG0PIVRZ/v3e373Vdmk6HLF\r\nsFEVLeL/bc367dFFXKX0LdFtFOWHznZKnRvu6wHdKdTJyL/GAeKFIqlm3Jfc\r\n4DYlNkCKucT2dnGljiJsvd0TlXYAIRbZTeR8mBpGmheHftAbMiEdRClFGmCH\r\nDBU/+sTMmKph58ts43jOGuVWtGcrzTUmOM3ZyTr3WYw9pUtk1o935OSF2Sz3\r\nE6sKkGGGMeAdnruTiVIYPRfw3QTjuIx8hqTBrUQyVgbbIhY5gd7iPAdhAbzZ\r\n+bU4jzSSNZ0bXrwtYHyOyWEqBYbO0vubPYU=\r\n=2aXy\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.f865478.0_1649743266636_0.9233826487239243"},"_hasShrinkwrap":false},"0.0.0-canary.901e6a9.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.901e6a9.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.901e6a9.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.901e6a9.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.901e6a9.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.901e6a9.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-u04EPK8f2oxfRtXqrIaNVfggP2aYonR4yVd35E3EcbcyZCuXsyeiDOXMB2uJNyEj9F0DLnS9Av9VvlS5zKpsvA==","shasum":"d0f9f6f09ffc02aa2c200f53fc1248e21365de5f","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.901e6a9.0.tgz","fileCount":10,"unpackedSize":21141,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEbcKboLLzkTfzV7UtYoy0THHPvPNWPb2Ya3pVluH40kAiEAoh203JmRJu3OFy2CGrjfl9OgXx3sX4VUI+3BA3ZNNY4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiVRwSACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpaaA//ZAKPQlVnnJTJwTeJifcACLmYTVhN920YChnT0+Lovqw8RnyX\r\nQ/jKXqBsHsC527uiD2egED0lxN47Qy/IqrvG48/hSUSsav6fKHYdYl71xWZu\r\nuTogns/FRL9HeuSp/75gY9AAOH4QiGZ39pnhXKACXZd8FBlHi+OywrNZmw/8\r\norS4UbkkbiyoIFzl0XPYw40lWLNZ1eCILafjKtqRhjayObw2x2qA5nIg2iaY\r\n7zCb5p0eSIGlxEbjnjV1oRPK/FC0fDhVd5P1h8V+KYG7IT0ziS21cacaZueo\r\nr3rpqBFgLDGRU5K1N0spxKHD003igNPCnILC2vxyVAuVSsEph57pQg6R7myZ\r\ns2b3fx1oD65pkLY7uX8CJYhXCNyR9eNNBIv0IjOjtDmAxQ5E8Tg0xLG5HFZc\r\n3MH2knA72GMrYxRUXRTBAoqL69b16XL93ufMBxjHpoZZjpB7x8RRK+mBiTVI\r\n/n8xXEJR6pHi8t86RTb2RTO+hqp81PigvmAvSL9EdtDc97VhIlkeqM9sgLAp\r\nPKwrx3ZiLY8GLULwl54grh6sG+11f9DGo8RRwnWOluqfEvkzf+/W6We8OEjg\r\n5wD+Q6KdarTO+ppULawpB8BSNbXZBKV93gllQhyJc0jXSNirorBH/ZL3VBWQ\r\nUOqm2fLRTPD+PtXD+TzTJfbIapkfanZIn24=\r\n=k/VR\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.901e6a9.0_1649744914348_0.02821161367377578"},"_hasShrinkwrap":false},"0.0.0-canary.5f75a67.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.5f75a67.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.5f75a67.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.5f75a67.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.5f75a67.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.5f75a67.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-bp4xOQbSeyC0ZlLwClT9iZHWeOG9arOU1HMSXAj1CnqVg6ZLtL3dfu20aEANp+6AbYQr0gefN2+gqxmGAZF8/A==","shasum":"d17b5da4377e64b729b13f32159d8243186ee6fe","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.5f75a67.0.tgz","fileCount":10,"unpackedSize":21141,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB+s9pQPBntQq0JJEuR9udffALHHcyl3lvRxvnfKt/nmAiA6u+RfYRbPCbE2EhVsbpt9ObGyBZ3/V3wMFDEqqKtqsw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiVSAaACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqJBw//ftX5XY/GWK1cQyCYi+QYdoIhagCXNMC1tv/h66/VSVDR5aXn\r\nLeSVaMoyA5UR47qcL0mUaY5l95w20QdM+Rjj7tShy1lgH/nF8pbFg408ZQuk\r\nGV0vNI9JCv3wrx2Vof07gXdBlojLCBm+x4XJNZxYGQdVts1I85sEbTYJrMpf\r\nfxsQD4uY4FM/XGsiOjib/TbohRyrLwdT1iZwhDM7yTzcoLN3ZTLBhmZwKOxM\r\nMYKKNwJFwIp2hjtFJEAmOQZ6DlNMZhXSEG86YV1uUtUGd2qfC1VQya7HgVBb\r\nGJ7ZZO7Ay+XOPDU8xt7lZMkhkkUIyKz7dxkM5CcZ/hp3ASceDZDmB4IVyiIs\r\nl9Yim25Qo7rY960LajK6qQY9IWbarQ70dF6BVU3uGNpPVwCP1GKbb+XWjomL\r\nqr5T5n/68vOeGs6aDrPRH/nAAEq32OA3kE3+jsXHWGziBEwpCB8tBf+Rvxhi\r\ntAIGSTnu/iDTYKU8vUlwTNvRCvD1Kt3/zH1bO72IapKx23b4lrf2rEEtSoaf\r\nEY+G0toYvvVG8zOR8WEQaxSpeV0Cn7RlZnCJWQVu/s68JEh4CcVplLJN0QHG\r\nfgksbur0evYQFRdUq63h2lleMnkMBhvivRWWvPmUcSHDOKcJPIBbcK5Q5nAj\r\n5e4AmzTlpV5unkRULMB4W640R5izbW2PwiQ=\r\n=PnFa\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.5f75a67.0_1649745946022_0.341344960969014"},"_hasShrinkwrap":false},"0.0.0-canary.66acb26.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.66acb26.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.66acb26.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.66acb26.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.66acb26.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.66acb26.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-yS+t63MghkhUUlLzKBpJyuybYqSPIsMXeh0wiIsXjylc7/vfNjtfx3N786SIJxz++C7GiGE5C/GDns2QzyKSKw==","shasum":"c2bad7e8b1bc5f667a0094cd67340df838f53594","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.66acb26.0.tgz","fileCount":10,"unpackedSize":21141,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDnpx1ZFQsJQKbVN4vTb2rbdldLtmHsVtRo00JadCEKrgIgDRlDdjdeFcAKLo0TagebNWfn4ZRalI4R0pbE3YidghM="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiXP4KACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqV9Q/+JUywbPhx0j0PjBfmreV3oshVEp1Z+XXFNvZVNSltpDY76+ZI\r\njydQ5D6b+82eMaGR0BwDqdJehiEPpqv4VQ+wV7QBGSTr8aAcwoSmZq44Pudl\r\nm4Dv4fvL/ydwq05UCTS/ql77OBEJb05FD2/mz61KSDsaqRMvh5GeehOieZf0\r\nv8Sqqq6T1gti9PWVavoy2uWB2Ia0pf8F/kEPNzHRKnMIao+rcSoHAlE78TMB\r\nshgnKshEvvkWJuIwL5dLqWAW9TfWIIbnXKaWTY61SJO4a22w7CM55WZjGAEy\r\nRCkcJCiKOPjYmdI8ARJAGBpw/+TBMEnqYraRJTflFRMj+DrSJ+tPI9SMuczh\r\nSeixRhmE84RVDLoO+PzkB1LtrbaB0y+kaKvxU9iLSMmHVbyv/fv+Df1Uzsuv\r\n2u+xoZodceLgyuevJBbpSoh/0mePzTSXq8J5miwdSIN8fxZjcTMAHdqhiAIx\r\nwl2oXb8nGh4H7ZJ41/GJ+ps4sgTcFEXJBCxRHdfHnv8ge+3HgehSo98+QfOm\r\nuB+5r4WwxP5JrMirfZamraUgk9urJQsPqrmdCnnrEjC8QXDc9S0qt4nucg6E\r\nPFveS3DmM/IMklgJvvkGlaWGZgTYpGMpnHEBVh6ZXTllUj6ZT/lkAS0UZOf0\r\n11GhJ1QxVSBSjl1hCHT6pFKugUgVdi85XaQ=\r\n=SDUh\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.66acb26.0_1650261514302_0.7179323367658079"},"_hasShrinkwrap":false},"0.0.0-canary.0abc031.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.0abc031.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.0abc031.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.0abc031.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.0abc031.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.0abc031.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-TkUPVRPgfimyeHt3G/ysXs2XPGD8iK73cCMyW8/xzCiMsfsqvYo0S8XfK3dkJO0scvCMQg9oAWwcNaTah2rkhw==","shasum":"89d1e52fb485b60f6e4330a3d95c75835a2150d3","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.0abc031.0.tgz","fileCount":10,"unpackedSize":21141,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICrNnmPNEWc7sB0JbRT74A/dM/W78jZxPeKA/bQ4HZbwAiEA+zlpEXXpQrWsmUUAT6E6czFg5JjI3/J7Qh9p12DF/10="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiXey0ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrvlw//UTCLV2J7ShHgg5QYsU7PFcH4XL4SzsZat+biyOsszcGw/N19\r\nXoDiYmIlH/urzyRXdRJ1P4drtP2wlBMmyj+Dms3w+uY8AXZAYV4vJcE6HYmr\r\nXMoVf8wJmJoAZ0fPQw1nxB5KbdfOf8Ll32HtL7zIWT4Dz4x9Pi+0gS1jrwv9\r\nJLK5WEfqAoToqUY75jv/+lHkLzpJ2ePFlg+2V8v/5n4is0enUzAnr2u+lRy+\r\nljwj0GTEL6cFT7jJgB4bhuWrPjZ21Drmx4nWicp+INAkeRHWBcdElZ2x3oFi\r\nHOspDeQBlP9iLMGum+g7AvkAwJS6qiLw7NyI+wU5v6USOksRC/TMaOi2MPjZ\r\n/diH4KDPOtfzBrD+sPh6KvTnZx/nzntLYYiLjVuU8uF8rnucxqmfIZvdSVei\r\nGnFcZ0Qn3ayfR1EBPPxUkDcTwKwCnZYR03xPIUffed6i/DjjI6mxmBdDZeW1\r\n0VT8J51n/VsqDwTq3RGlG0jGBGOj+f9w22MPC0UD2yZtZbDNBDj95wiRPalN\r\nJusHkXphfVcqFUxm5NyNdUlVWre3gg05ZB+625QMcoPcVmdUvQhl6oQyRq7d\r\nxTtq/uIPXUnElieiKum+A8oKzlO2h8JJus9ww/vIWnFu3KOEUAwvtMTbJmOL\r\nkbtEuEgiX3ijdOQj6T14PzVsLZ9D1gbBWK0=\r\n=vHhr\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.0abc031.0_1650322612644_0.03021557102948269"},"_hasShrinkwrap":false},"0.0.0-canary.4fa95ac.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.4fa95ac.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.4fa95ac.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.4fa95ac.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.4fa95ac.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.4fa95ac.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-uV2JMENpa2Efzj3GKZr/WGi04uR5VJBXweQbbsq9beN9rYQ1K+dU3BC19JMPWZ21G1XLgMwPzt8bbSnfgJRz9g==","shasum":"bdc6db9d2b402cf71ac082454ae9b70ebbc280ed","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.4fa95ac.0.tgz","fileCount":10,"unpackedSize":21141,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD9YkXthclO5gukvve/mIO+2uax2eDgxVs3PdFftYWSAwIgcs45N+tsasV//XKVi+LMG2bCuYog6wBSIshR0ScfAAs="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiXzCXACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpgog//YbWu1dAFoYc3vi7UHRTGEZsNHrM3ZpdQvAduhEyEpjNGESaw\r\nqwizetK/r+sCU2VW18y9Cs0fZoEVujGCVOig3IqtVw2PdwSQQkMKHzHwQ/pn\r\nTvyjm6STB7hCAV1NmxkQIxJNlKonkOrkTKdnO9wpypcaAlPQDFxbkBDS4DxE\r\nTazi4Djz2MSuQo9OJsdJYL5s4vk29SLaxkiszRoAyI5mttZFc9ETd0V1zQWJ\r\naTbv0kXgi+P00YnFFHNZzhFbd3gqkEZy88WOXY/Ngdq9zmGCXPVhruyQL515\r\nZOR9hqTZnMraR+CForxWt8ElT5sA3py3CG+Q4vN6p6PwDUuxWEbxh5RqUNk4\r\ngs0KwQ8OGEEtgqhtNSAgWs+f6zTkYNkKXlUxl+EKJz9df9fHjRDvNZr/Wpzo\r\nb4NJttybLiV+raL5zEyyx79EsXq/I6ZSnjyAy6EBptcPUzS9bYo7P8C1oGk0\r\n9x9s3NsR8bLiIfJ7uE/BwjJgcL3P3hjVpNZPoN3ZbGlETi4XwtR+OGxtDu+5\r\nxWUr5ccAwQAOW/nlbeNhdgRkoI4JgznInOC681xzF+KSdsFMFeHz0REemuEf\r\nEHARDDpLCWfKbntp6J8a5kJ2szKAZvcuPxfzW1P5cTntLb+cOwAgdN2uiI0u\r\nw2Z1qlnnrisZVFjsHXnigO+HX9NtByGWjU0=\r\n=6RTb\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.4fa95ac.0_1650405526983_0.6622991678734922"},"_hasShrinkwrap":false},"0.0.0-canary.483ee52.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.483ee52.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.483ee52.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.483ee52.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.483ee52.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.483ee52.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-AnBBn+1hlQfDSC4/iuT2BD3CbQb8Vslmq3ON7ANgp/BSpYxarSTc31KdNA1CK1Pu0ESm43y9VIOoW/auVZ1JAQ==","shasum":"093a38926589a8336954a762de896c4ccbe7eb44","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.483ee52.0.tgz","fileCount":10,"unpackedSize":21141,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDAcPreZ4mSkRUAbCTBCx/W0PNC55DKpVXqTaE4KvYDBAIhAKJz7zeSLrK2xdnNXt/jtH4oZ9hFwRyu1vw4YhHhey4T"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiYGnSACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr4WhAAjFuxO7AN0TZ3KTFoh9sVIxrfbsDlZSN9sYa6OSsVuG8MXPz5\r\nUgRv/OQOZpjqT9cHTY8+krzQ2qOZ2dOlchXxCzfzS8FamX8bRswE9uMjIpQ4\r\nebWhG+3F+t5Bpt19dxJwlhJz/A9aoI6gYcjD1n95kY0KESZse/Oa/KrRATt+\r\nDkdiUlnbdltvZZiLWRZEZ02JDQFiZsBMaDom3hvPpW6JVfDcbPewKkqk3aeB\r\nFjKFr5jnqqPaZHKGJKGNTPHsqk/en6CbD+WN+/zhOeils1HXeGC6fQPOdu92\r\nQEmPQ1R2gUgDEPSRmpwpBebEjWGjdGf7U8alBZUnIAAaZ4zp8GUsI+3TKpoX\r\n6A1Bf1I8hUfPGKblKMrNYEnm0+ao2lfnCCWua0IsPCISbKALwqgylTr4phAU\r\nrkHsy/RsnTwVvzitbUU9KsSiPne+QZFXHz/0/c65JNA3JgDvrtivBxLNkjjo\r\n8i1IG9G9jfAueBeEaPbDuAU8gHgK+PSqIRHKxm7OUy/2CNS//enJi7JWbfp1\r\nz+B1XgEVK9+pxLYizWWSam0vKyKzBvsrsBmu7aJ8/i4ZnnDC5yJN89AWFRqD\r\niRXM4YoG6Vw4pfEfDaUVgrEoQnY+25MBkmQBAcKOAeZ7mlx4btGfNaDHEtWb\r\nCKjJTkMJ5iGrdAI8L4A3kirPoO+4i4rucx8=\r\n=VTB7\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.483ee52.0_1650485714158_0.30938050927938776"},"_hasShrinkwrap":false},"0.0.0-canary.c2e995a.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.c2e995a.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.c2e995a.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.c2e995a.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.c2e995a.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.c2e995a.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-xo5zdN0wPldEHVj0TDt9ry28FYpVq0CUMPGomwJIDwp4hCht3lJ5Huio+sIBzPoSGH2kFOT/nL96cWEc2FcZWw==","shasum":"8042e2c0b819800fc0efacb2673b61f6c692f1e5","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.c2e995a.0.tgz","fileCount":10,"unpackedSize":21141,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCWCeYwR58bcY0/D1VgaP/iTDob1wIoU3IgY6YprNxeFAIgOBfxhZdyW23dLhGuWnC/b0j9yWqb5hN1t5z+BOV2Fyw="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiYKPhACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmopnBAAmQmYAOi7jDBVJHK3TNBM1r0cQ6FR0N6ff21xw3C/S5E53vK6\r\npYcBGo14GjB9BomojUjKvHpyn23HFkNsS5EK7h/jcGQzIDi7ucwTSwf8z4VF\r\n97k4i7G3N4tImYt7EjYa+8ZIqS8QdEVPISyouAHekFin1ykXGEnHneZvOerH\r\nMCKa/8ehdaQxVinLoQaoT7bWwhsP9AFBMPbvw7BPaA7rPJ1LtzhdAUl2r0ro\r\n1hgLMRltWg3DVmZQHd98Y/EGUSwZ3jVXd74tXuph1ZfuzFX6qIDuTUKbqVV8\r\nsuOwU5uf35HoDcu2UV9RKRg39IS+x0uWP2cduW3awyGVIge0ifTjmhmbzorI\r\n/plQ0mpnQXv5hRG+/eN9VovEQ67I12Anjdn++MNyhD8TqslvN5JS4jDU1wga\r\ncNDAHeySHzaEc+xwgB/4kOuCC2HdsFUp0B+DBK4Z16ldhihDFN3FNV3jbVko\r\n8t3OUBGur/t+FG1LpzWOsOwgfSmAG8N0kIy7Xa29DsHQYRy3FzijCI7HH5cH\r\njTDVUb8mr+eJay7SW3YLC1WdScbxWyiGdC7rd2O+1/7rJnFpYIy137aegB+x\r\ni1xhd8RXCgdt3+3+qnGJfD2c9w4FPwkf9CKOpw8JfGNY6IvfC7OsY3MbvMUp\r\niOoXmFXoiEZEOc0lvK9C7WlZssqFlzB5xOg=\r\n=GjSH\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.c2e995a.0_1650500577442_0.5883016589896541"},"_hasShrinkwrap":false},"0.0.0-canary.03b7f8c.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.03b7f8c.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.03b7f8c.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.03b7f8c.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.03b7f8c.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.03b7f8c.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-PWE5Sybh8aSRO5cw35u8z9ngccg5/MwGCAaqnR5GXVdgU/kQEZvfzPT7Gt86yhvKMGvzLvME/DMe60K+KlHH1g==","shasum":"7463abe7e9334f227c9b78952f598f4e1b3f3263","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.03b7f8c.0.tgz","fileCount":10,"unpackedSize":21141,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDZsD9OzheGZEJpDbJQkWOgosH7n788mcag6xAN9bMfdwIgXQ+k3XCLfJcbueTNMq/MvSH4TocIWv6L0xR3lSfGia0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiYZsVACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqgPg//epwyPeTMcKBgPnEdLuykHJC3XBZ+oitz2oCd0UoJB/oydNoh\r\nBxEeYMOcZRIwYayWZkpiWJBoWG47TDrSjfz5u+JRH9olZN/KcLbW9QyM1T2l\r\nKt3LJ18/qHXJ8u3ks8owFYK+Upx2mnOCpNxOgRj/GzUveljphVDwGpHiKgpM\r\nRwt2cKY7Ec8aeLqf3JdsIeq13t9C9JAZKEl+POT+kANCe1BalolMY9eCeSCH\r\npnfank8ixKwQ97X3UmdA4nTKpvGrnBe9CFm59I4T77XFMe6JySsOwS1K2wYO\r\nW5kaw80jVBMfCrSy8uOvfy4yhn/vn1dd6jF0PEmqKmjxR3/Bcr1CCLGp4s5e\r\nlaTtQ5t9CNuThPoRQd9sOPqqjFSaH32Ha3iIirVoFvN1canFvdEUP01E7s2B\r\n/xlka84jW5bOUHneMQsD3jZ9RVkyVfzLaYSoUGgLZTSU4cM3sYogpPWsYGDg\r\nyVP4utHr1AIj57rpYJK7DXlvutFTLYunWZf26tHN8ZtIZB/GNhRUQ1Q6IkC7\r\nrmn0WsQMdhphJnU+GWFzykX3ZpME9+9OR+sdF9Gt872fk1AxyLzUMWxB5qt9\r\nvIz+bg+Xvyc1dDKQBnmKO+ZFfI1lP1mO05z0Qc/ZcNV0zZ/1MauJPcFmS7as\r\nJOfcFlSifmQlDPL55wrY+kBqYO4zLV2NB2w=\r\n=0zAa\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.03b7f8c.0_1650563861034_0.7817476390362204"},"_hasShrinkwrap":false},"2.2.5":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"2.2.5","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"2.6.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"2.6.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-2.2.5.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@2.2.5","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-n6iWnAh7gjEOmC4Dl/3sLp3rcEBIS4B0zwzxTnFfnUeIc0M/ftbviWcVkkTo2IYb1KyLvlftxA6dV4Wqt0kKxg==","shasum":"9022f17fdcadd6e95ba367e4b94d288a7a62bcff","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-2.2.5.tgz","fileCount":10,"unpackedSize":21090,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCFeVgWIKzzE/tuGc7jbq4RWWvKSm0ZqFRzYyZQ/MsTpQIgGeGQc61gSNO3S4ATyf4wJyjeBIStCyic2x5g8/M684Y="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiZxmqACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpxWg/+NLy745+ELCeNbwCUvTnrtvsx8dzSDcIcuk6Y+tvxIETHcoC+\r\n9njlBtx5URtviyywhOYsaFmCUfNfiNNZ8nWF5ayvL0Y1v3ArvefCddhx1Tvk\r\nPNLjxjy/BCKjYdefNP2C8HgqoCoPHFcvXeAuNR0TUJsCSQAo/MqcOC8cGZ7S\r\n1YxN7MSsUQOzKDuCxuruvgcaYqORCqXZ6gUFwrhGsijQY50Tlkkf1EOrScZa\r\nFsIj1zHt5PKHAXBrZyRurtYU4tcT49KuT+r7UsvG/LZGDLi0tvQBs02622SC\r\nbAGnjdbXqCU/JRZbXuKnBjjqbi7zWIaWN9e85/EVdSl2DV1KcJrKaZOt9xa5\r\nEh6zuYEUG3C2Ch4Njk03YefRU+MVV1oqCsFZYrqD5eCGVaXTIDSApI8DVyO3\r\nKGc8YHuCYZLQx7yassOLPcvVbgAS0dSMtrKwkneskB5Ts0D3cWdRszUETSJn\r\nvzMEwbLyC1XX9+SU2ZOaNRVU2UD2Ju/UIvr0TjIQ79RmiybQ5eo4AD6sQwwR\r\nFEP2tromWEy2ihvfIx+hvHVWOgvfsaQkIvj8cUyhvy3bdXBndAD7IwnIcey0\r\nB8AgpXtOxnFAFQ9mvtdHLbEzAUUsedVWjyBUtSTEaA8uI/0eYHTLK2C/FK2A\r\n7jA+nrAnZsTvuDjXmuVBSwLQ8ZXfdmYDDgU=\r\n=TuuI\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_2.2.5_1650923946361_0.9220229299264389"},"_hasShrinkwrap":false},"0.0.0-canary.d9125fa.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.d9125fa.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.d9125fa.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.d9125fa.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.d9125fa.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.d9125fa.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-uYulFTNi27FVCypzqyyNxf2tUSKJK8md9M/GJl6YLlIqwjewx1VYmhzg2R5SfQ6clPOgnn5pxVXbKJ8wqTYhcg==","shasum":"91026cb2d9eac07192d27e15c2483b93e77e61de","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.d9125fa.0.tgz","fileCount":10,"unpackedSize":21141,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC+8dBFhFO7AausilMiUSsaJeg3DdOJ8AxR5BFTqKcaiAiBA0kc3tpG8B4EKfGqPYc9ukmvrrv0vIC5mpfxAa3x+yQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiZzwgACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr4Kg//QUPRDTb+WBU4naO6jiS9NeVF4MMSwtBBNaH4xICq2pN3XpY0\r\nrkd9H1Q3PG+LVvx/G+dCbYyja5CcmGkdAuJVYOUAhAXYHC0TqIPDGY7Di7fg\r\nvm2yO5XrdOPXDlt+mFgNo/eL3kA2yBkQiF193lFjcOi0cSLgsGptvKDuawX1\r\nNfoklj9JEbMKfXEaBz6WHPs2sraDNNNCO9Pz9TjHFYZDncjyOn6j6xEj2nhx\r\nT1+Lw9YLd8t7gYJDKEPusinGingplzUBVnwE7yarTO0XE5Jx12VXOS5AmRtz\r\n4t4dsOBt6loOAFV1PHY73dTLrmeGiUlWkpTIjBsUi3hlSkhGBv8KA0eiOTac\r\na8tIcwyNiTfmnzXu1TkPA2n8vuuxODjR0bmzni7Dn5bZkdnqIA+ov5cKqC6r\r\nKRsJOtmX6LT4ohK37nQZxAv5pHuQlh+9Iszw0B2bUJFEuk4FbgMtLZWB0Y+s\r\n++h6DWqH3a/3UbvdQjOzawvuo3bOi4uL4Zk/VuqIlAw3A20S/HWt2wcDNC/9\r\n/0Wwtsc/QvqXONslvUG2wrvHjqMJL4XJcLZcSSzpPqcEDA/VvoctdR35mtoA\r\nmrNM7cS2XUtdtCFIqxdDkxEv4MTvp4qvjWFuSjYuUCdS5SGqjGTUN2DjzMoc\r\nh5PaaqpLnoZlY8005gFxwlK7lQ9oCsmt4ZQ=\r\n=sLhH\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.d9125fa.0_1650932768071_0.14081400493166085"},"_hasShrinkwrap":false},"0.0.0-canary.9081ecc.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.9081ecc.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.9081ecc.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.9081ecc.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.9081ecc.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.9081ecc.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-MscJkupxdWPhLVNRoDu5h1I36qIzmB+4xfPYEaiSc8AlhjoWHzagwic05zQ98irggOsil1jbIJvFdyHCySkOqw==","shasum":"5b609275a82e4c903ad85b02005672b3d345fb6b","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.9081ecc.0.tgz","fileCount":10,"unpackedSize":21141,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCIB8NVk74izwloD7kaNjiK7Rrc8MJrmBHc/JCxzaNezAIgNpmsKNezV2bBc6wFFhilJtBvKoQNPRDW0Tap2os9mQs="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJibgLFACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmou0g//YOcKD8Gu/hvBTi5fjmOIMD4M0hVg98mMSxvnFZzhLQ2E/ykm\r\njYyWseiZoyUkQsc2bHolhnWJJXQtZf5aWjEdCkT0JWjRAbpADHv0K7qt9HyK\r\n4jmgrw/d04fAwS1x83qKEoZ79pXKuCC+OoVVkoF9BjllHvPUGJ1lh52Q6Z8w\r\n5f/6Melj8qBaXY6jIJZHyL6PnnQR/Us8ZuQBw78sNDZ7igt6Yg4HTx1NIQFW\r\nCEHklV5LpYcFlx2q9vmDGJJWomygKAp02Luz53of9xBpJpfTkSPuF2u72Tx6\r\n5yI9HB12CwX1oQWDHgEsVBYa32JznpVs9jiWSzY+Y5iYCtthyE0L2AJxFP9X\r\nq8QzS5mEZqvJFD4e8+WTZTCMMmM066KMSNj4n/hn5/uBDZ6dBkRs3vJl37wL\r\ngFMZVixcGyT2XC7hY79l3gaems0Cr3FWR75kRyjapkfEffgpIc7PwnZFIzGm\r\nnYoVCTeTkbgCtz2wEgZGQpE/Ex3yEPcX56JD0hu2YZTK5GlVpBb6DfkKAKZb\r\nls0lC8sY/23fmZiiytoF6PCScd503MVn7ExPKRI86+Fzpvh8Am/azk1zlW9I\r\nOwhoNuSqRW4fI3D0A1jf4EZ3rfEToPY8mzFIoT3ql6mdB3LRNtRb0MI+cXfJ\r\nBWXq6xXrPgcTkDK/YWskGgkSZWByORw6ROk=\r\n=2/3I\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.9081ecc.0_1651376836976_0.6617056187909629"},"_hasShrinkwrap":false},"0.0.0-canary.82afe51.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.82afe51.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.82afe51.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.82afe51.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.82afe51.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.82afe51.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-AyVVSsv7Vmkg507qVZKax5NwiB2KT7wS05BRGFikspnj8GMYqogSx2oTXP4nkN/ZIunZjpR5bSWSJI0nnNyE+Q==","shasum":"678ec8e1667853c15673cd74d65e94697b144507","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.82afe51.0.tgz","fileCount":10,"unpackedSize":21141,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDEMLgQR8RSYcmySGZm0f4Z9Aa80oXDKeA+NCuII9gDpQIhAIfKe5TMY/CXLNU/Yx1pkCRDeG+o7+eHyOg15iJq3Plk"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJicdKZACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrd+w//XsoDFLIvbahotkY4I8pLYObYOJ5OkxQipF8gyqz5i6hh32qT\r\ny82EeRaj7+NIJmD4vl3wkgdHisbeKcCs0Jk6G+0bOvwXYywAbFizO9k0tgw3\r\n3zd86O8RWHLW7WEmL+WGFmNRAyWo/4Iqkc7D7Gv4huxQc8DqE7xqAh39Ej6J\r\nQPf8D+6wPQI6CgthB9dH+dw2q+ZYoYSfrqWiDVciDm5BJb66Nev3C93eRefT\r\naEHIsA87fXTVxswpjAGtu0ZopB9yMsaJ6K2Ng6x6MCywalXMsDNlHjGaka/+\r\niNLPIRBWknBrSln8JvBixYD71LFVWEyAJfFtRClY2pYB2/8GTFmoadThwESe\r\naQJI31nAJvgYvtV/4DUehqFA9do0E4qVZu5T1A6E37gasrPW401QiplOe5/m\r\nZKKqeM3a3xD/j/sCDS0kkgEYYwkOOLkKvX7stNWmUe4/O9EV9DRh3v/jAGcq\r\nBYoB6Id/RF/489VDyrjhgiuNK5KQ9Jd3F+1dgSb+IDjSswFqK5A80GEpTl25\r\ndIIjHmbyy8C4TLabHGhkdGKncdcnl/AlsWf04lkVS9ZXgBP17OKYPx1AIzwI\r\nSsbfskznREaVjbG7H3fzZrLr8FvSyPFVy3ZW2yS710BAM7KeGhNpSdE2q6h/\r\nEgzNPJLsE+e7WfwxBucV6CkvoLGJUThU11Q=\r\n=57g6\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.82afe51.0_1651626649369_0.8662062376295934"},"_hasShrinkwrap":false},"0.0.0-canary.3afacb1.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.3afacb1.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.3afacb1.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.3afacb1.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.3afacb1.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.3afacb1.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-nqW6H0mGj8MBwkrH/rFFsg2XU/ezNAGAmX13KzBTjJZhLpiykmg7o8PwE7bpFKnBtkhYRHe/8gVz3tEDnyEvQQ==","shasum":"986f8f4a0aa09d71acbdaab3195aac98c6059536","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.3afacb1.0.tgz","fileCount":10,"unpackedSize":21141,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCeguEyWaom2lCFDYaB6TRBFDoVsHbgDlrJr82UCc/KEQIgT3HNuxCVJvk5fAzxKp2YdQZPxr0xm+7g2P/YqKX1yx0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJici1JACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoJ7w//U6WZwWPWv9fFid5fuAHpF91s3AWZtltnwMv/mVOwbl3pEIMd\r\nEd1waU210Pz1ZUVyjt21oasZB76e6Kcm8XI59snxFQCqtXzfEdxnyxIqqU3b\r\nNSm5Zi7yS79AYcqhyKd9A8K0Ak3FcXiJV0WqmGmvJlqyVrEZPbxit2dXtEaD\r\nuO9HLh+sh9pXo24C8SV6PkF67FfMlyq6138LP1xsagwWFUM5pX2m/eTYBkHp\r\ngbXp7ijL+0w8jcFt2BHoyhRsePqsEd93i+J9fvwqxXK8nFXTI7MTWc6OrLr5\r\nKsia7CnuUB14yZua7iO3adYsIJBfWQxnNddgIjpJ4ajBDZJog6KW3HeUXlfv\r\nFdQe8Qy/AlWmlAFNBrQc2thAfeIxhy3oZ0SijN6jLetXq+DGlg9bXHM3ShPs\r\nb15zVR7Mh+00hRWl2ftqMeibay4KTVYDXageQq8CDZL2H7BKeVJ6SgWP70FP\r\nGUVcfy80X+gsDJLVB3gXfsfKXAJh9S72hzzRlsJq/dgjCdTPJ1olSrO9XcOt\r\nwGa0tAatfOZw+gkYuK+bJqLxPDxonHEojbHXbe3dUqoivqxTmD5wuLB5ITK1\r\nDBtqhSTzFQ26qVl1YnY4Xc2VRsCUgENiZT74Mv0bJirPGxUskdBEyiXOPB1e\r\ntDWnFhvPOkJ2SyN2rOPDBwks7KrUl9ZK/oM=\r\n=8Gqv\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.3afacb1.0_1651649865655_0.8237607916053855"},"_hasShrinkwrap":false},"0.0.0-canary.dc38594.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.dc38594.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.dc38594.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.dc38594.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.dc38594.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.dc38594.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-8P42aSxUOV7tpjLLLhxpvkrDZn9HDf75ie3Tceyw+OeI2GwBf3LZtI/XjtE247o00bLAHReBQhcJ8FC8bkZe1g==","shasum":"2e4896c3c6866530360a4519a450cf176f146c1b","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.dc38594.0.tgz","fileCount":10,"unpackedSize":21141,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAydOVj/6GWLt9nPTZAEB9Kmpno6rhHWQAZMRuFgzmLqAiEAy9QVBUwMuWEjr7u+XVuvtzqZv33ukOZ00oqKgOAWbOE="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJidHq2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpGWg/+OVUNQegEyjhKDX8taF2bb3I6l62im6kcZc52vUNfCCr0l365\r\n+Jd6uoAA6ek0O2b/PPR+biI0QMHzNo/eVGeKjzWUIreCfPsHnzQSj14U7Deu\r\nFoVZR4oG0/Ylk8yI/Txs/SdoL7sqOrkuUfpr/WrWxjY4vw4SEVLZH+nXZt+7\r\nDagJZYFfrOPlqrVWm0R4v9w6yyG7vWYeFTjUsTvlRavTf9bcGNu0SoTk/L5l\r\nfoEy3iRC3GOeBjzJm8oGbRv0KTdPyqugfBLvrFOLXUICT5SDfkKPNNdeoUXv\r\ntzLfkldGbjsSdDZT1/Jn+IoOaueIzul7ZtsSEk5BVcncAf4EXB9DeVGV1lZO\r\njED6b59s2Zq8JUhByqFgmJHVCJ5D6vvunJBWUzLVg3rUUfywSeOspPqG3SbX\r\nDMkbm7hRXKRJ6B5eK0kpnqy7OhRz2zU3IK7rPhnTocMQu/l79f/x66SlGpcc\r\njFgowCqAVj2meUd1Dh4JVm0RAENnOCF1fUiKg7tLOGQNywy16fJIGpE2B+ec\r\nuKHGXyTqb4XkogYiUofUuUqx8yDyfIH+JhRkewONjonxfXaL0LMU82b9mly/\r\nTNi1hpSY2pukV38dNavoLLhYrA65tJQuYFZwxaaIte4JGivVW69rc9YobUA4\r\nlLxWQYWDiy71JxumRBPu3q/8vJHXnlR+ePM=\r\n=AlST\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.dc38594.0_1651800758782_0.8370079201086966"},"_hasShrinkwrap":false},"0.0.0-canary.9bf73bd.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.9bf73bd.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.9bf73bd.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.9bf73bd.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.9bf73bd.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.9bf73bd.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-Ik8yx/qLEN98Lk6W/kLa36n6NHMne5u17UYzK9qS134okQ5AaRi9Du8FrZM3sW+SE1lvSnf+OZwbbuz93RGA8A==","shasum":"2b7d571d91970f8ada1918f21f14b2e13b7fbfe0","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.9bf73bd.0.tgz","fileCount":10,"unpackedSize":21141,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHtyYnMQUKZW15ccHf2V+o2xDeHJ88tvIplwJCPPas4UAiAAzxTYe8PRCELirEGy2Q4HzL1eELS3H5ECONlO54J0qg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJieFuiACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo3jg//cv2CEQctgMxL9lKimOW1xDDEALFynpOtYK5o1iNb6258T6QG\r\nqeOf0q9aC5fQSBXxuEZWRZnanoZNXjfxcOKiEzlN/HDqVrzy4ypLhonmjfh4\r\n1gL49JBX8c5M9O5IYardf7HrVyKt+JKAK6uqPYloNIHq6OsMYmL0goxaYkCZ\r\nwd3BhcFtg2Wo5gQ0eTFAcGu4ey/BZoxe4AwePd1MAk1okIsYqZKmEAW/xTd5\r\nNzw1KVSlOCkndzlkJTawfPeuuSn9pmRQtNhIkimX/fobDCxgHf7M5cR54iM9\r\npOAgm391cEquuRebObLAsh1ayrXJrFMhQQt88OXQ76kHONht+ocjmpzlIDsn\r\nbIs6+/DLmZycLM7ZOhuc1Ug9xs0p4/6bHBJpMXxtvA53K6OZsy/7mwg3YADz\r\nyvKZSDGtrqBDyQG3dCu/Hm1MQiGuYNGLLw8U9WvFzhrzP+dBSIFcEsa50vdR\r\nZ9VaRnO0Ul4o0RS826OIypB+r9IefdPCrDVpaNzQD5izofZtunEjEFRBv9xS\r\nPUL1f0jE5GaSLedQmmeSZ/8NyTIPSI0lNT/iGr/f5G4TovsF3qrYF5JwlhOh\r\nuKR4aLpnBUProrXnpgxQYXo1zMotzyI4HF8mbBbuBLceqih3d3T7dT+Iezgj\r\nz7lsmwfcax3VO0h2rz0M+bov1dSOwsbCOUQ=\r\n=20ow\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.9bf73bd.0_1652054946060_0.7393800579415528"},"_hasShrinkwrap":false},"0.0.0-canary.0d8f1cb.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.0d8f1cb.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.0d8f1cb.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.0d8f1cb.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.0d8f1cb.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.0d8f1cb.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-K/nOB3Gxrck8xPTVYY9xIuZkF6LN7YCKPcjpD+wOdUPDIcZfU0jmarO0lD0tTEprQJyPjQWFMYjGsNnthnxTuA==","shasum":"2142a5f9e7d37ea3c45c453524d901c178907654","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.0d8f1cb.0.tgz","fileCount":10,"unpackedSize":21141,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE/Ux+xRCzBSULAGX/QhgY8gHrvICX411q+q/QtYvPyJAiEAq+YopQMaNfPjfaJ5Sv/bVK8xL+yvGEnC2nnciOe2vDA="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiecOMACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoNPA//XaGnEfcfGlP0roIPU9WbO7IpHLgoW9czK5tDf3GsbcWaIvzo\r\nHHTt+NQNXTbdvbB4jSvWgd17u8GlppcVRYoD+pkg3+cfTH0o6Gxeu+Gvq0v/\r\n3Sa3JH1wCeJ9jQg70qb9OkZ79+ZgxAxhxZ+uR00fDkGxeoH9rmHy7X8u+soP\r\nLbrP/lBEN2XGTE3Kt8fZmSQMpxEsNerg+K7VWhLBHyh58B6bSL/HeDvJPivz\r\nHMd9tarYPODQnQ+8ypcJ8W+PX0AZwSva37JHkbOW7bsvwnCXk8i1BdRjtLm+\r\nPxxIzSQivAEvO3x7AIbf0UoLYka09MYUlSnbNqwk//2EQHuIJUKdMkLx7Z1R\r\nECLTFUcqwMQFDfFfCgGr6wnhClAr9xKAml1RdwP6gwAtbsu80cD+6nYUOWLr\r\ndro9B4wLwsHhSUcon0bHb/DAf55MRGOxByAotBhWYMLcScRKMvIWg+dEkSkL\r\ntViWUHsMvlWQaQq4HAZuZ9jh3VThUZ7cRFy1ywmMwSihcSY0dBbkd1Puq+K+\r\npDNu6WMq6+khbaovCmRMwxA28K87bfuPVKJDb2FsHKAKIYs/94zTTH4TmK9M\r\nmldUzSJr0MJyM3MoARPAisvgdA6gQI00csFJAwyXZHyY5TrrRMinzJdRiAd5\r\nqafOgRJQUuTRTW6DQ105C8i2nMQCApU7rMU=\r\n=vnJN\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.0d8f1cb.0_1652147084691_0.9292178021443471"},"_hasShrinkwrap":false},"2.2.6":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"2.2.6","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"2.6.1","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"2.6.1"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-2.2.6.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@2.2.6","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-86gChZ2BL0ymHdUt5ubLlRIpLo2rZUAaQS+/iiPevS+bgLu1j66mjwv97nP2ioSRv7W+WtI0GspTt9a2nHWwDA==","shasum":"8e092fa4abd68b5bd8809430d1ce721d2762582b","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-2.2.6.tgz","fileCount":10,"unpackedSize":21090,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC0ZS6UhsaUkJEGdkVmtZfLIXszNGloFcM7Fr2BuLsxeAIgUJMk5DSJi1lrCt/UNS1q7ZsinwRH2NTaqHVatBqkaU0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJigs53ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpERxAAnTQMYrKWDqhGzYgvI1Eu08tMJvZcp/cODJwfQJCfEVIOJyvX\r\nDsbdGB/8jgyY7Sc1x4jVaHLkB4muzrhEWP03I4wHjp0BMQs0ELhigv01AhZw\r\nKBNFFqP+GJcGbXTQLIWmpcESZJuaiFgS4Rb8mfPAUvhsIYJ4r9MpWyPJsnln\r\nhEqQO0969SwIWT29VMiYQuRXoL2Y93SqjRLN1S+s1Y9sHp7UfRjOmUJq2Pd4\r\nv2Ty/EyHfakLuvivz9SjZWBLA6oHgjii3Fj6imq9DDdX/fCHjE6IT+JSV8iw\r\nItcOODo9O879u5DQLxzlWRDA7fB7SCaWqoUEQyEQF5qMdf+ngESPqwPGJMYv\r\niWtwIyWNjVgY5ahZWXvLfDRzn7WXr8MyW/+OVvDX0CqhVjZ+jbSAfW20Ngjd\r\nCQ9QB6xPHECZyaE+WPSh0bpWJsxQFpEjUwZ3pTkXnFd5ECprZ/p7vqn8CUTS\r\nj4ZWbuGOJdl9gpQ31Vf2xtB/1/MCedD0oJsR6RevyvObZ/PTX2ywnlg8KHDe\r\nmkRTZLTtTlr9eOuIwKu5GqSHV7wJ2YhaHXJ3/VmzreNFBlOPTw2BrbwYZSsb\r\n6hzlR84b2c2/7b/24ak8OuXpciRWLJEBcoSUE6s+Pd0LiUyj1L7dRNpxPFq+\r\nuDmH/FuKPyjoVwhfRwMwSox06gbHWOso/7U=\r\n=pT9M\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_2.2.6_1652739703371_0.0754318871738453"},"_hasShrinkwrap":false},"0.0.0-canary.441c97e.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.441c97e.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.441c97e.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.441c97e.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.441c97e.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.441c97e.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-wKMpJdU3Ob4F1ysHB5Gc/IGMoF6aq9iwHusQMWOSt+fG3ZvobjmQx7Jjr7vM2qKJEAbt32y+kEWXKsgWi4GKTA==","shasum":"f8a0179f6b66c167147f347b5550bcad4eb42264","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.441c97e.0.tgz","fileCount":10,"unpackedSize":21141,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC0KPSs5prYJ48HnaFJadlh2cPeh3l7kD6bEU7/j1L05gIgFfQcLPkWM7doCFDyKw0wYQ3KdmamMl1HxxKOSDV62VA="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJigvTGACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr0CRAAiiwKVp5BL1W+ihvnSsjj8mLe/Z2vqqcQQbNEfud3C/q+tiEe\r\n35B1TcWErOYFCEFhkrt0RvRkR+KZHeIKMF0pBnIzRXvziuXAoprZuCJvzq6u\r\n6Zismt0QGgRSi2oHphFHmmZXagl2YUhqarzieTQ6jopgQqFiHafD4Bf6OEPs\r\nqj2kiMnC6+2ocFGtayXEAi4ezNwzyn9PUTKKNZ2SnWlkSY/fTYSP+QpNGv3n\r\nn96cS1VziiCc1z2mRLO4tcXtAGUVDzqnh/hH4RWfiPLFw3zhraJFG1s2gGz9\r\nDkB/dnfC99ezGi/PLb9xJ0vJHx27S8nQUEN61f6STtmLzVGhuBLA2Lr0L+vm\r\nxQLttKmLwmuR4iP+XcOjRHzMSL/aS0DHt48tUEOVKnGHufWLLE0iTIZ6wl87\r\nJnXmUdOqbjNZN2+EHctsgCxE6sYXJKfJ6KW9cajbTqZU8VpvY9J5udTuGqD8\r\nehMUWCcYtjw2fU96TLaXpOAtC8n6z8C1HZvnuTVyWQCJ8oB3C5XMImq6YrtH\r\n4g7YJkqLM4OVTJSFbIEAG3+LXxluNyzd7M4sULowKsLYTh3RgS8UU3UENsxf\r\nxaWVakyaiktOZPPnGt00KDYHLtXs9dnRCySWdGxJfCCkz/5a4s16v03TsDLR\r\nIVvc30FFX3c73wET9eQMcpuO+yJEQdGQyMs=\r\n=zFEn\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.441c97e.0_1652749510408_0.7897505767850994"},"_hasShrinkwrap":false},"0.0.0-canary.94de910.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.94de910.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.94de910.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.94de910.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.94de910.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.94de910.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-B5Mouaxxz5Q63MDVHwKhcGpYc+t0ARhQIeKPWeIx2qB0CNxvMe2FsHzuQcPx88rM0psbMenYcwbrDj5ttxL/uw==","shasum":"fc5d37aa731c0d502d450e57c1ecc8e7affc3700","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.94de910.0.tgz","fileCount":10,"unpackedSize":21141,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDO7IdqoPZRem9QFjGWh3KSDHnN0+5bRcbh7SoxZ96zCgIhAKB/MeXu7b3zqhLB0LpIs8rw5rfvGl8NcfIv/ekicktJ"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJig1UCACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqiNBAAmH4QSxmhGziT+1XbIegQneVBWHpPnzcFppUCN1ZO8Iky8Bt5\r\nUyWYSGZJjb8WUXJaFcWwHxPBRjzb8Drc1gbAbGcbL6PN+TeQQRr2feFwlzFV\r\nH8DnyoNfcgOldXRI6SFIJs/fQdEeVO60FjTtgFB/EV/od0o4wDwKCSPbRfEY\r\n5AhZZWaiDuWDmsztw3Fp2SayqkLup3ccW9aKYRPRHqs4EmkdzC4Q9T5gC1xk\r\nbOY63hsfdJAnWNIe/w/gL3QiDgakiUH5ron+wodUirBj3i85cWZ2RUawtWU6\r\ns5LzPYuH5eE4YuB9ggdvUdU2CjcIlUogivYjUlHg1oqJvS/NRhH38a8A/v+T\r\nvYbNm9rECFEyRaxXvJuOQ7zsIQo33VkWXzgayFGi/Y+OBFaBfzJaAEJUw3PK\r\n/pmxW46iSzqM0EwzCUql8beFEzO+yyNI5Et6EmbWSiGt1PVjwfisIBv1Kbtj\r\nPHp1+Hj+Nl9HYWGR9EpnpgmrQ6ZdMAC+rv0kp3VgdGM22VqvxD1Wo/K8eKKj\r\n3aB5rh0mYynGsi4QRa6/qqJfYSI2441eMwzGIKq4BLfIbTHAbCTNKA4Q6A4W\r\n5CqRQ6GlVwo+juNCzFiY9TBlb553Y0zS74V+LMrabN6kouj3l9q+oMWfO1Qb\r\nL9MIi/RQ3Vnm/52178TzpHmZOhZAknzIOe8=\r\n=SGxY\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.94de910.0_1652774145952_0.6681041107703245"},"_hasShrinkwrap":false},"0.0.0-canary.a8535bf.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.a8535bf.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.a8535bf.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.a8535bf.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.a8535bf.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.a8535bf.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-26wfGDY/Zquj6etM7cBR6FDK0C51ahL6Xw8npHQIVU60IM7u0xZKoPmEYcs3fo4UEHqE0ed+cOpKzmZ0U5ApyQ==","shasum":"6f725ec61a6dd8840ad8bdf3cd335febe4e400e2","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.a8535bf.0.tgz","fileCount":10,"unpackedSize":21141,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCoJuXIhuIzJ23Tm2hnlfD7nTJNLFB56IFdP8l+sBFcIAIhAOHjEloDnFTmFFiLtKCetdeGl+WJDGngDmGX64kFup33"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJihBJCACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoVcA/+Kaa5k11MvOatmpdno8f+g9TTx7IcFAoI8PFQ5fKrxxWGxxN9\r\nZZRhq7Nn75oTWwIR12GtlQ8ZEOxdSq/Cvr0b0gVYwNB2dkp1+bdgbjCxIP27\r\n4754Vkx0YJSRjConIhvnPzfWKj0Ql29YkeXRCZYDcd+v1ALzGW+sGsyMeWgR\r\nSKKm+sg1Sivdjn1P0i7QlP8+2e+WQzZnh28HtkWViRxWWRm/zh89BwPDXSGE\r\nNAyM3iB4rsBC/P3d7G2j58CSZck9EPDtcWwKr5WqbNIF9op3UWNY+OfOxrBB\r\ntbv3Z5BBwodMJ/0Mc9Cl8rmcJojC8QRnifzXi4eRG1XXc2c28jSA1p4uIw38\r\nEtpIYCKLLVqWhwcUVf1NHZQ3ip0HD59VyaINx7d/Msa8B7DRAqDnTvan6jnz\r\n879efq459ICayGi15kk+rZkRIi4GtYlBY/iewdlwPKqOPPC1wg5g0w8fci4I\r\n7/p3DaYAmmDAyyrysNtRF8QpD7TOqq+k1+3vpsC1jQ2GWZ5Bc/lMaa62mGzP\r\nBHLnQa8wXYv13/6zUL+mS9OJKFIBsTEOUdLR17DEQ4QBEAemBBzIs5AODOts\r\nUPv28zNnJll4YU6B0XDOJFmFPdSpd9EXhED/VdNcNAsPI91z5RCUmP0wzVwV\r\nYhn5Iv9hCmXVfWEfF82m8CGhh95cef6utb4=\r\n=UVo/\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.a8535bf.0_1652822594578_0.705947289338285"},"_hasShrinkwrap":false},"0.0.0-canary.7805140.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.7805140.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.7805140.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.7805140.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.7805140.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.7805140.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-5u6QmnMzv26p+W3baMWPmjAPyGwVENH+FmbzLIPzJcCZELVA8rktGtX27KZsyHWbDrN0eaTuP0W1Qv1Z/pimcw==","shasum":"2ab8d6a636d1bd008cd651f561058ba12727bf23","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.7805140.0.tgz","fileCount":10,"unpackedSize":21141,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDqQGRY162x+oOX3hS20QRsqRhIFZURLjyngb42hKJNkAIhALOQolhDihu5D0rbJ+U00nCEQdQYQSyqUoAoIxv7SWEs"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJihF4nACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr7bg//R+N2D/k0Asj6fWlALWR4W2Jl82T1m+ogTKmJZPf9ljVA0G04\r\nEVQfMuuenSlaasVS6r1S8rJMXSPIUSXuwUGLaAFsCI1rEYgZIpYMoXwbZVxN\r\nt7u9O90TX+dtgGh0b5Q53cI6wXtMA1R0fe9lxUHQRq1XEysM91QA0hCpM0VS\r\nvYwkab7BzssBuiDllyatP8eqmcdRCS87Cwep9o8qA9c49oUzF2tqjE6I9vIV\r\nq0aYWO1SiuKjHUm5+a4G7drhlwdoV5E/5HxasMWBJoq23YPFHzrtPp+XlivF\r\nGzeFQXma56VMdFhdfY6CkysnvVV9A2e4ECgXrHH1x/bd8u7NQnziJsK6Ts5D\r\nWCoE96wNh0jsDcSN9dLalEAwuScaYr/xM4CPUzlP+rli1H0mvJ4uLeZ6MrP8\r\ne+lagy4B3n8lU2SEoL4D1uuyi/TQSntSVhD1JWAbS7FUlS7RhWg/tb2NIpan\r\njAmppDzR5AydvX8foeWYbNrrV05VxjCC5wlLlaoEXOdnflPelcCyDLnZpiTk\r\nk2dZW7sixdtwD9gih+gqQ1w+BKqvMoL9aTEps4xV0GmIxMqrkdBCeRz8f6R7\r\nbHEy1ditS/KYeiITXIVAu5+MiyRQ+1DPBnN+2g7CCeVrHlU1/1Z/+Mu+bjjB\r\n1UhLumnYqRMTrj7FEt2ZzeAzRqK3grIX8GE=\r\n=2z9/\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.7805140.0_1652842022803_0.0342962115040355"},"_hasShrinkwrap":false},"0.0.0-canary.c454879.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.c454879.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.c454879.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.c454879.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.c454879.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.c454879.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-kpOZQkCjPT10MJB93vhJCdLnnlOtYW3Za7DPT//FHbuHwAZENn7+cJ10oE4LvL1ir+iOihL19m+jZEt6xS5a2Q==","shasum":"66b9351dd351dc3e1d301329b74294a1418bfbc6","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.c454879.0.tgz","fileCount":10,"unpackedSize":21141,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCOyjVYrXsPiKEpyVETccLdOOufZ6dpGwkCfoIh+X9mxAIgPlw2EPJZ5Hze1KYOxllIqPTKBryoaF2rDPbAsM1+8jI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJihpvqACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr5PA/8CMvnWzExdN6oxIq3D8sA/lXcI2F6YvtxLZAymChKIzbzjkQH\r\nlgbyIcZ8p1OsTKCtYH72bj2wU/4fODq/EilnAkfZs0ROrToDoEcvRtb3LPRb\r\nd/6gmo0LmrZf9Zoenl3EqRjLFDgWa2xAIPudIT3wQsc5vIQHk8AXSnSRcEQI\r\npFJ0NJyUk5DoU3Nu4GLPTQx26f4ZUELFJ7poA1oKKP9U+z0pD3ZDVf6Y7hrI\r\nSpm8dmWHyP4i0FStT/j461nRYhZBDEj88/rPe1NDIgXUrMUrmM94MuNR8MAu\r\nPkkf3yE8y48034hha1/ZYBZVXGoc8Lj7TNCIbgDO2CZRFIQmB/0Dfu/UzhPT\r\n76m46U302ucaUzKxnXQGKgohCwJIAaNEqTM80oB6CbXytUWyVNsAQUl6y3bd\r\nIMsEKkcsBr/BTyiuYZsZQspkgJ7cJs3mm3YA/4D0z6SVCArZC2gseirfRE02\r\no4cHsuY3IMOphqN4ShEFuzXAKnPK5ILw4MU/mR/ZGM+xnNZOmIB65twV3kAv\r\nc6r0RqJBYNBKpKdzotZKcPhEcy5r+HlcMVTWI6FWuF+8qLrLvepzqbjEZy71\r\n57zG1zTpIkXR6Pj+0O0YN50oMdzZx6Hkalj1G7WaGdBUtxAyc5p4BOASCeMh\r\nYcotO0sYCQYTW4rpNCOa1LLPA9OP+nWojw8=\r\n=Dj0N\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.c454879.0_1652988905955_0.6513457679546837"},"_hasShrinkwrap":false},"2.2.7":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"2.2.7","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"2.6.2","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"2.6.2"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-2.2.7.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@2.2.7","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-3FIk5/sfqa8ez2AI/Lk0Fe2WT2yvDS2YQc9HbNh1cKHCQddVgkgl5gDZLMFeNzAmOuyTHDW4xT826L09sNiWmw==","shasum":"9f35a90e9fc4e14ba98d54f8cb4735c144c97b1c","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-2.2.7.tgz","fileCount":10,"unpackedSize":21090,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAtEzjzhjZSpzvMRzJDPhwzqI6U/29uzcP9Cff1A3T8rAiBLRt2Cf7jwC0C4VOYp5EHv1xWU1PHewgxNjUII+fAGvQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJihvCWACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoTzw//ZkcyA5ldR4YtIc6MHM6q/kTM0UMWFRoUJGJBKRg+1lu9Ul4z\r\nbEHIofrbvF7Rbl4Un6FjqkPWeq+aaM1qjONpnUGRPtAS0ewx5bkdUWJkFCEy\r\nToXZnZMIynkjdWBT678nTwcVFwbqWzWCofcyaTZIT/lQ0QpX3b1V5AqhseIb\r\n2o2vm7x9UVPA2rr9bLBTn433OwQJD+ALvQbz+GFJNMAdJ94xgofgnC79QgD4\r\nCwLNXooOtcCqnP6HB8oAllTAWWp4eN7SDCKJroYSfEbYnCHQCtJoo3/3BHvC\r\njWsXfaZzX8GUZO5QFra3SXZunoov0hDl24t9m77h1o7chZ6YAv6UKjWVPw8O\r\nLycSkp+wNiLf9TFtqElySlg6dUtQQvucPqBagoyHmRM5V7ZNFnZosko91Kin\r\ngRqrZHnxMCvKhuQuvalWMggZ/HuvalEGjW+4lwPJVdemWjGnuJCIxaYOxrEp\r\n91kgOWmhRKFXaoK/8liGBGIClp3fLWYpwQnRJo89WJwHOnq1/aGLgRQHAGWb\r\nZw66msmXKbHM5Py7MiCpEjsSd6nPyc5yJKM1t+OFde3+hDeEJ290vOIKerWR\r\nlIdq/424RGi/v4hWmYoHToJ2On2SD5BSZXuLrzAVgpDOLWQ1ATm6uix3b2p8\r\nRMohTtYnR7+RlXY4xcxW6wu12MQzctj763o=\r\n=MB81\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_2.2.7_1653010581856_0.25257374997436055"},"_hasShrinkwrap":false},"0.0.0-canary.234cdec.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.234cdec.1","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.234cdec.1","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.234cdec.1"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.234cdec.1.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.234cdec.1","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-riDfAfCIs0Um2VbrpSJW8kOQeGTntNxx4loloKf+wyco/gG110v8/LDSVVhICmBQBJSIHHm3I+NB+wdGugkLfA==","shasum":"cf010b029cd90c18b24328b0aae304a38b8dd3a2","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.234cdec.1.tgz","fileCount":10,"unpackedSize":21141,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBsXkRm3AISd6xj8GI8yP0DE86MPfNN32HSfktK7UaZpAiAnxHP0CcrXUIE9bh13vtTt8ea7IK7wv8YcUaY25T++dQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJijvteACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqoaA/+KrkIKRPoT8+EqoaukD+C1tLtrY2L0iJs1mHFdEVsFMSzwX0R\r\nEytvnzw7/anc9Y4hjcKk9IYyUiuVdulxEE1kgoRo5RKhvlMkYoDFD65GD3wa\r\nPYJBvZXt1cbdUQFC1ruFqAh+ityRQh8dhiFuF25UbYXQ4qyQTWJXrfSVVaJB\r\nXoFcJMDdPL2Xfjl62P1PnPMzPVnnm3sMH1TVMnRFssseG4r/gWfPm7Tjv5JL\r\nEiTozEKq0vRao0cYvvZ1ig9dUKTS2ElkE+cFLCis9A6cJdAWqcLsPjbjEY90\r\nE/scL+Y+e4+k3SFItjYr9hw+9SL6hxZYIlMIl26FBV0yrWNy/Mvg4lJa+ggK\r\nno86jBz6oYGENQwEQUDo3qNwYjSDMqJHNCNRRmmnyNYzeUZ9wCzG5VJEKIzL\r\nhn5DXxJ2KDQcXoTi2Wllwbm8UIOpO9Z01Q2XDlzcQxtDlcTVI7gjmtFfMlEl\r\nE7JuaVvc4+XvP1D4KHDO7jSA5p287qpJqOLmTvhpMOn/rB+hFK2GCaQ0ONj3\r\nm+a6iJGeFKXlYAbxL1XtLLpuL5yhfg4VDU4UG2sD6q5FW+Kb6367yKJ0/bdR\r\nDHI5gti/rHImyFaGRv97k0RnRNpIvAXsCzrRThFry/toLk+hF/pmLbgA/iFN\r\nGBUlIpVC30pkMJm/BHLM28JUpSqgw8Nj3oU=\r\n=f6x1\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.234cdec.1_1653537630191_0.7200214222815369"},"_hasShrinkwrap":false},"0.0.0-canary.ce07ef1.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.ce07ef1.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.ce07ef1.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.ce07ef1.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.ce07ef1.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.ce07ef1.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-V64Nd0g7l1jP7Hybirw3h6Gddn3QjJIrW00iE/loHBkfihb+/QwZTUA7KqG6m8JaYGtPS7zphWxpWzGeZkYAIw==","shasum":"bc0590e05835116f3488fa5398427750976f4d03","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.ce07ef1.0.tgz","fileCount":10,"unpackedSize":21141,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG0CnpXUMtPHp9/nhC0ZIWE5F4aWUw1ti3bTLxpFurHaAiAICkUvMpZUixemNMxumeYgIFJkSyK14rCgec1Qnx7xDw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJikyLRACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqPrA//eKMq6L2GgG5KGnvzpPjomubAv7gSBuJJKI3gcYvimY3ze5Uf\r\norvuKpGgrDYbwV7gBFl7nNkm7s6uifGNpVPcqkdaD/qbs9TLS0bBgyKaIXL5\r\n1/2fw4q4gOVVoCB+iYhDUEeSF2HGlN5mnt/qhk671lSdpr4qOYY+MgdQVJUW\r\nFeKeG2NeOk83hDmeaSaDcrpVpL1DRjaXM1+7Gm++dOV+U21rJFWaH/JC3IBh\r\nI7Nsps+/OZZUviiKmSXWcXT75BD05lHyr76s5ijL/lFAY0wEENR1UMSWtHu1\r\n31EqZmzhLkKlr35ObM7iHg88dmMiwH69/EKO8rgAN8Fu5XSS8JbeCG5EyZDT\r\njsnVTjT1opyt+pRe3+rIW4E6xKT0XbEn+cn5UoORppYaB5MLQLRocN/JvRnN\r\nu4oM0YeX641ZHJeECbnNQyRJwPjUAAP/tDH5DraD2VdowGIsWlLSZg7IdRUQ\r\nNBgHHPSR6lYyhyx9MD9QGCW8T02EA9jRqii8mBpvjz4R4z4aN00pFdgRs9UZ\r\nUT5laM313OYDjAuImZsUtHkU500D9IHLA12KOBzxvT2SJqv6xGpT+FkRnHhp\r\nLyqdXgvnsD5z9n9BHlNzocDiVbALVi08enJXxrxLeqQQwzTZwnWhATOPuVtA\r\nxpVNy1tnQ7LXN8By4Md7lYnJ7wVw/4oDhUM=\r\n=UFkz\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.ce07ef1.0_1653809873290_0.38678169148387576"},"_hasShrinkwrap":false},"0.0.0-canary.6d29913.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.6d29913.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.6d29913.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.6d29913.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.6d29913.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.6d29913.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-jkChV8iauAqIbg9jX9TSNJ9dperrTs5v6njfJI+uYJFlPXfmVJUZadqu9O3Qf8TvRmBv4z3wD9fC7ZLXxN5LPw==","shasum":"1ce54ae504f82d66d295c958eaa5631ad3af4956","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.6d29913.0.tgz","fileCount":10,"unpackedSize":21141,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE5I7S3qFbba7OAokWeGolHcKiTQBGfgR7C/omKHZlF+AiEA2wUFpd/CIuVYowxa5xnBV3tm/Iour275Gs4ofWNZrPQ="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJimaTQACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpMnw//ateo15TxPoZnoOA7NXPm2QgdBToA729jn0rGKlrDconqM8LJ\r\nNI5sI+6+szMigYazjTwujNz3wngxFKQs3kQgU8/UX8+U5JtSq2f7tXRDUip6\r\nXFkMGRs36FhxfmE6vZiMczqx7ztD6EsyOPTCs2qgKstbcD9LVBL0935XQFxt\r\nDR7IrGJAvr97eTMNHk+JV6bJl6oOXHE8RkfjPoPn8H7zOZnqMFttwe0ieNib\r\n2xMeKoSLgB+h/ufObZzoZ1WghQeWTDOHvX9/XqSZIcBmncI9DpnXommIqApr\r\nBHe4grhcEmODfYE++EZypq9jFq+ufvxNl3uUHoVpGPiUVgo9mLKe10c0/8RK\r\nafltWfFcQ0z+o+6++RYkuIFrYI3sipsGUD/ZlizP22SOOWjAp9cd6zv+KY0R\r\ntXzgIuynQI8W1VBN7y3U+QV776klJ7OVYhRXtvmfUdumfPtqnLvVXBG5Q9WE\r\niT8UvlU5UcOPugCWfO8NZmQBiGkDvKDjy15FjfUf5W5t+tN6vIvk+bK8lmzg\r\nu1ZHkIV7VV3Hv8WbAnw2zb9sUwAHEbKr2KCa7uc2aFcgV6ckb+4P96tkEeAk\r\nlaBR0torJ6daFS+t4JxKYzenGigtFxoLJ2oRlz40OSqYBKnaqh8ezKCTCCvv\r\nApxB5CHlWKxPk7kthUu11spiCYM/FEzPbD8=\r\n=Ab58\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.6d29913.0_1654236368742_0.6164238670235327"},"_hasShrinkwrap":false},"0.0.0-canary.eac89e2.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.eac89e2.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.eac89e2.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.eac89e2.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.eac89e2.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.eac89e2.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-Qi0fb2tDhL0L4DGVyPlPrgv3wFEpUDkpAMR+AiQty2A3UZDEhKzIXul3XY2hWwsZFNW6RUCM9ZqhKQgaWRlXAA==","shasum":"b36b42c9bc53e50d7d3d6c3d8534312ba54df819","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.eac89e2.0.tgz","fileCount":10,"unpackedSize":21141,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDZZAipypZwYdPRrivfvbIt5Ci1Hb+nkDrKt3QihVqYVQIgHxGmIblyjCgrJJgO7kn31NXv502/1JsC48thKtXP7WA="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJimbcLACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo9iBAAiDN1ef6U7wNzF2YaJmTJJlxpSgi6ipWrO/aBzxT78FQC/EXD\r\nkVzQzcrER//gpyM8zYX81+xrKJUmLIiGWm+6QatEnozWBJt/lUubhbToDfQD\r\nPKX1Jxnn+pzn6fynI46+oqnpV9ee4m4MLo+RhhGAJg6qn4m8P+lXhnxeutvL\r\n1d2egPl3Z5SjfurSHqViGQHWxfxw00G42fsfrfCMfC1VoFmLbxmTjR/KZBTZ\r\nNR6MaRgbza5N+nm61RLY49hnJNRYF89s1/IMau7TpiUNPLJ9tKX/dE85PpMM\r\nIt2Tn1qYvERnip9Y+fo7eeUFRT39KEsrCDXGeKAGs9OWSlDXPgoB8FJluYR7\r\nKSPZcY2MgS02wx+wuSUJYhKMRHgIM3K734iMTszl+0ldNNc7X6JwonoBEl9j\r\n36j6oR1TRwm3TI7M6afSGwPiPtEjlcBP1QDtMN+7HRhz+T5ONOO0evDyYjN0\r\nxiVwfMuu077vM0ixV4r9Gqr/fP/rCd1wSgT43IyhMOd+hxSUw+ZWvvhfxiXM\r\n0pOtXIibKsps0sbV20vLiKv4q6MjKn4OkdHrH5gdrllMINFbVyhMLtTTV9+t\r\n3qdEsK7YDXdZz+jhjjXYV4TMMWlBBJ0fRnh1BuqDjVA+INdhK0koJix3Zi5E\r\nN7kIiWLgFKbhJlEdNRINXey2Lnmy8yEetwc=\r\n=mJOx\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.eac89e2.0_1654241034798_0.13499863073859197"},"_hasShrinkwrap":false},"0.0.0-canary.c36b35a.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.c36b35a.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.c36b35a.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.c36b35a.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.c36b35a.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.c36b35a.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-gZ4OT9pGk2Y0u3x7cT8dSM0vFln4eq4Q+mPX5eMntWfZKQn5ulSfJaWBMrI7a0tqGzwvm9JDah3qGA9DtWYxpA==","shasum":"38f6af1a291f3b77d227752fc4226bd25d5bfbf6","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.c36b35a.0.tgz","fileCount":10,"unpackedSize":21141,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDaHk2YU165D8AndMDGJw3P9TORxNPgd/L/c8748+08jAiAHhNoHgi2CP6yIYSYKiSVOhSqL4hRA3ani1onR95AMQQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJimocjACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrm2g//Xaa9lfdy5LTb72QUDPFoEVbOy2ncuVi7lw0IzP2Sfswp0Jie\r\nrxMe3nahKL7yOk7sXuxpF2e8E6/vS6VGmkbdQsgUJR5XQmH1xLxiUz0emdc9\r\ndzJ/Ro4H6MvJ6U//NtKFC+NooSpZ9eza9XzZuxTs26oEKTzM2H2+fvWnxjMW\r\n/Yb2A9QwhGs5WqVK/QJbzNOKN8Fr1ZWyUYL/56CoF9lbTngDEKoWr39+Q+5K\r\n3O61txwwHIfSk/Sc06Nm43lDttUHbtNBVkEMio4ZBDJqyY3NmPVKNNFfQrwQ\r\nUamlF4NKPd2iSk8DFddF/TCZ7M2pPJ99VcjVtq4nFj29TfhtS9r/heKJ2N3z\r\nPUTefCTOgcmdhZ1XzFXzs//5V6zM1Soc+Z+wYICVAR7NJF0ES2i9wYIpcWMV\r\nfhDPJU79T0nDf2ov1a+K4rCPH3CwnJi0WLZgNjtdqMBk+mfpQdlrWjwStmob\r\n+HmxBTu+LVo33OqY0HZpfoBpDBxGczk8jqb7dYrMMeLaJgme9slcxuCBdMWc\r\nyTi5j0E5pWH7teo9Pqz9evf3FDhlns2QPxGghIMBckeFhSbVRGjywNjciRu7\r\nz7TzAiKJgibS3Leiifc67vdDwqf75WFcPh/hQiRKzwAZbrC0nGxfq1KwVESk\r\n3nKmW+7ujwbB/f74YQapOEo+3V8JsmDnoV8=\r\n=yQGf\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.c36b35a.0_1654294307033_0.5080293809080625"},"_hasShrinkwrap":false},"0.0.0-canary.7c27df5.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.7c27df5.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.7c27df5.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.7c27df5.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.7c27df5.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.7c27df5.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-hdoXYNo3QEZ1uvFxkr7RwhpSFJVZSAQlXb0DHIcYn/XzkeDJb9yS6X02MD5qmkJXuz50bnIpLo/TkKYr5M9r3g==","shasum":"900a7494ae9b66a7c5a60d6578e8dec4390b34a5","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.7c27df5.0.tgz","fileCount":10,"unpackedSize":21141,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDTxfMMoXrvOxgiCdPYfHnudVwhH9DdtOjIa6Yv1UT1QAiBVKTJ2lGYJJ0dpkjP0tMa+4aRLysiGNYcwyM7aJsjTvQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiqOzwACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmptww/6An/xoV3EbiuWMHfkI7t+Pi4gyuGwAg+UXZLF43qgvn+nkA6b\r\nFMuZ7FtDHEnf0ju2yeTIfDvNocnmLRq5RMfQPxzejzLSsyqAllUv157CN+K0\r\nBL5ayWqN2tAZYNt4djpSUPBGP5Enb9NXaPMrCJETmAbr0zn5TgSykOcXgEMZ\r\n019lCXeOLDX8gP4cXewRMhjfwWNHFlw3z7q6MR/ds38JDgNcoZ1NMy4MzVVD\r\nly0/sPnzE42W4GhLoakzBoTnm3u5SWczOs3oMqViN0jh54VfZPE7uc5cpn/I\r\nHL7EnQ0FYZyTjS1BO5e3kfDBw4+YLjoj0mIGD3wkGFM0aZbkMSdnlak6nK8M\r\n1083JcX5MMWDUIsToMt9yMCNABAjHcxUPLSU9tHEXYq0z5BCZnLFR7FAxAg8\r\nsMcS7FCmr22iSan37joH8kfNlRGblG58FMtx+ypW794e0PywQgF/eSJdbW9+\r\n1irxuDoMUZdEY+4tbI+Fw0GDSxlp5y1Y6NrYF6L0PiHLYMuoXU6TcY7Uk8f9\r\nyl5u/IfeK3F9sryxnmAh+Fpd5/mAiUFwVq5CaDtDbrphGLh9O/a+kOvuMc2t\r\nrSaPFrxaXTCvE64C6rzSB48thXCLwqYPf2bVFofNl/O2ny7xd95nmTpyEZgQ\r\nf/9xdMco6EFdsn7IXtdPF55p/pQg96kYM0s=\r\n=2Wns\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.7c27df5.0_1655237872339_0.9136969451699846"},"_hasShrinkwrap":false},"0.0.0-canary.8894dd7.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.8894dd7.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.8894dd7.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.8894dd7.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.8894dd7.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.8894dd7.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-xvA92rxEkI8xL0+mQpXkm3JUoMEdzslZGaQCbmZVzS+jqgP3Z0x2TpAJ5C/jGcjIuWhBd/uNHyppdzr3CCIAXg==","shasum":"59e8a123278dfb6f6f27a181d3d80a7a2668ca92","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.8894dd7.0.tgz","fileCount":10,"unpackedSize":21141,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDTVuY92UvRFZ5VIHbbaUM/vrm78KQ5UmAWTNnJpccaVAIhAPCZCG/rYH8JdRdocGvmDHPsfdUKE6gUWD0DjTm9lA99"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiqmQjACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmoirg/+IM7hiFHcPtzCRHAkQiiSs+sVIRfxsR1EUh6Kt0RqBEDS/vV+\r\nymRuIcYER0aH+VX7iWOzgREsS1gBz7IkCmWA7hRSN6SIX98dUl2QpVMQHvXG\r\nXgGuOnG/Ya6TSqmKA2hbjUBTCDoOHyuMILFciPCpx596xN7qOmfgs/f09y1b\r\n2Qj7C+gaw0Mz7nZaNiw/dKZi0Zmjqy7lc7Hh1bnHRvo1dWuiYw/yP5s08C02\r\nWwmaXTzh0sWkDKRrh+LiTogzHXrHa1wFucyyLR98Zu1R66KNQhDuRNepUGDV\r\nOR2osXBerm6zZVfLqGCzaDqy7i0I7kmQsKR8TDqrkNO7dMvrLu1+YMe2beLr\r\nHzzNOD6BMBYxF8DX3JFO9ZQhdd9OWYtiCs11Qcmk605ebBneUbYEyhlZQORG\r\nXdUyh6/QbX7hXZ61OdkTKcQ5IakOx2xGl1lwZetPuz9qSZWskwMJcxmLoYYN\r\n9n5ow3nqI8yUGgVBDVZTHTNKv3iTRhXDBRRT4w15GZIRAbRHVpDA7HbDI55V\r\nvw/vIi/HV/EpUBu+b0d5HAFS4+9MxFI8f1pe9u2EK/3dumMqDB3Ozz+6T2og\r\nOVLHULsx0BEEogMDmDwnwAWoUFeAhbSZOP9XcvZoxZgUMUMyMEd3dX5AF/ki\r\nSLWcPi7cYOLK9zARZrcpyFJD+u1scS0hxdk=\r\n=mlZE\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.8894dd7.0_1655333923729_0.0816671710847312"},"_hasShrinkwrap":false},"0.0.0-canary.5378c1f.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.5378c1f.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.5378c1f.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.5378c1f.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.5378c1f.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.5378c1f.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-May4WM/eXO2RKC5ZyfnwCoNea3mXhhkv7RnzyryeSms/xRHSdrvezVeYA0xfYiCSJkDrv9mFMybkR2ToziRrpw==","shasum":"839cf26b06a616fc31ae0cbeea08bc276d4800c2","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.5378c1f.0.tgz","fileCount":10,"unpackedSize":21141,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHENvI06NVHD4z4gWERQxsN9Dq15ABHH3Q7CsWfrstSmAiBKq/pPvhs+WN1hcJ8qPqFU/WXFRJx8oe56HiWBEe0CeA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJitkNhACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp9Tg//agRC8B5f/G6BRtnCjw2pgqMB5EufBDBad3Ws5q4llTETMiSP\r\njIpFEws+fmGZWIC/bWHYte+HrErezP4vPjTmSOzkzb/8CebBEQWVqS8fsYty\r\nrdbz1Hhdy+VDmoteZWqmhO822GtXWanmuNW5nqNLDKTtH3aZodw7nO82qS6/\r\nT2vlxGSq6GRYygWLZyFaLnwyCJG0+48sAFn/MPg7qmRa7JHD6NrR6966BPZ5\r\nII/hNL5ZwiXyvTuSAWYFyk6pXMxD6BVcZ/qXFOCMjOtXXztDaCQStJYVD7zv\r\n1/YgYckWeQjjSHdoaiMati3CWymoBSFj61NNfy7bB7e0WNPLNHy5Wd+L2wpo\r\nMJUT241wMrJUkJEFbiHZ0TCtrgP5jMBXrLqDWyeTOQd7WtLF1MP5p0pBYwZo\r\nj8HTPDI2riJNEr0iQIpu+16z/CKnkUBaJHrvVJoVHq+IWfrNsSFhH57O087H\r\nXtnKlySwqjVT94YGrIn+tYZnYHoNZnUYyONP34dBrGV2VBt5q2kSvDhlOwm5\r\nn0pnWx/EiOXfFLt6OhYpNptVQuKLlc+qFvBjwZ0adTIODyeQE+o9aI0LS0Ln\r\nZClWVM6X4SQxjgX5qPhaFiFqp8psSHh/4ClYC0T878FH8PWl930QdnzQjDF2\r\n6yU5QZG/o+PQr9V/qQ57OnvOJl5tXJaAJAY=\r\n=m5Wq\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.5378c1f.0_1656111969783_0.5783007236477717"},"_hasShrinkwrap":false},"0.0.0-canary.e08ad19.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.e08ad19.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.e08ad19.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.e08ad19.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.e08ad19.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.e08ad19.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-abs1EtRQdwafEtvBRGjN+RweH4/1Axzgoqk/jXHK6JtcHIdcmRLEv5BVgswxg+kIqQJI1R2gdivSnhh2b4Sl4w==","shasum":"04cb7e40916f12fc5b99b9e9a25c538dc92f7991","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.e08ad19.0.tgz","fileCount":10,"unpackedSize":21141,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDrjjPN8+EhfdEsuZLxGYAmfW5UZZQD4xm4j+Cs3n1C7gIhAK5lwr2nmwqKNx8EQVWz2hKckg+ZyRsx3gWZqm+OqtOZ"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJixN9hACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq3XA//YPv+Iqr/YZcDyVsRXDWODA+C7l/ofwVA/DRyEcSmeedTi4fY\r\njp/5ouZOrRj20fmDWugyoUv+gbYTuj5QiOO6KT8EWPcuP1ovLAcHYp/JaYSG\r\n0TxauyffzmM9/yx0wbFEkKLCRe7h1KOX1Bdszwag9CoCByNp98Kva0+tUPPb\r\nkiOBI7cP3PNOD6HkkN9o9ed2PGrRwW7qJ5u2OZQACVa5jqk8n/c/9AKNNWni\r\nr9vTADgG6jgnLflBrYoMzLbf9fLt5aM7dkS8uph187R6WTODzTaQwjJBt6xb\r\nW2MQRdGAySqJVc+O/HzOtalYF8x4ez/k+ZfwTAGKJXnztnXlqYfu8H8Y/xDL\r\nPkeOmqj3MD24tkLj/DBzhFpsHtSZq9dMM1K9VybVpS/WiMJ1aVq+4FTK+QZn\r\nBMNNo/+1ON3qAoL2lb1xfuJWZzv1TTJk6C2hfN8DmF9GhIMyxQFnGPM9c6K1\r\nM8mHPAKM3tutLYRzHY1uoQ0lAZr7CS2oG7JzRFq5LC7KqDugqoFlVaM46jud\r\ntiem7sUo0lZBcoZxPsuhT3FQeNkoCbJB/E0kLjsIwg2MvhyvpUhBkq3Gg3Qn\r\nH3d9vTfPXqyPfA1n/tpNMTsNEkqVjf68ijKCi5kgpxFaUqzPkiiTyJvQVn4N\r\nLMxc3viNUtzuaqogleLp2dyTwf84+sk6Wo8=\r\n=HOSj\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.e08ad19.0_1657069408918_0.0967290110089063"},"_hasShrinkwrap":false},"0.0.0-canary.57962c1.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.57962c1.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.57962c1.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.57962c1.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.57962c1.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.57962c1.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-6/eJGrpS6yOKbJ9Z/e2rQbuUFCOeR/nDH8qv+WDuHA7s1FPvSjzqcwXNYvhJwg1qTLbp3Pk0ifKd5P0e45SdoA==","shasum":"2853c1e07b4a8dc8fa6ed7cd96cd75900bc99212","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.57962c1.0.tgz","fileCount":10,"unpackedSize":21083,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGBMjs+I7XPSJFcqHv1NFIMvDmyS4/ZV9qoUFh+zuulsAiEAy3dYnyRF2GmKZK3dBBV1CG4Ld8Lo2jWiMwShNUBvkoE="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJixgkxACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpuTRAApArSnvz1RP+Wm/Vv7gvlCilDKP+wgp6U5uB3ELZhZT0Nk2/7\r\nQBKVAGfnQuQLOgDexJwZOiHdrbt3lvK+b4bgae4m9F2bYDR8SgzgJHKg05r4\r\nB30GDl6XXHELpH4Yh/ecI8RnT9xmY0fz+fgvhhbw+4zTP/1mgot4t1EUWyOs\r\njfeSF2olLRbz7TT2xNfax+0QhnO9pbwu+pdFLsrMxeXcQWOzl14gPRzi8VRC\r\n9bUig9kyano2MR5uhqk6R47ZUChpvWgolU83S740xMZONydGQkvG5LU3GEft\r\nlihQIbBocDpUZMfC5uxWUNj4pFDRXUzDP/bWvocjX+fOGDh+4ekVpySMQ4sy\r\np4XcdUKaPBp6Rcc1anhylWAdfKy2BYsJIWdxkvA/zct744GQb1mM1x108nE0\r\nkcwvg0QgZnT6hXuMqWERoPWubcC5AC3yctylVfPfr12ipA3fGrHijWBPkN98\r\nn78ALUKztsNYCo4t3zwyNU9/PT9sIdcgF5YQbXIrJ658uDn8pFj0rjb7v9qa\r\naSG4xyhU3453uK4zylekoBzf+m+2BjbTn4e8N1n2hCHaxMe0VermWuybppod\r\nymXcphhyKHw3oZp0A5qWOIcfcQM5b18aZgf+uiQ3VtXKe7g0Uwj5bLAjca7P\r\n/NZwu79TgJYydQNVDH/bZiUcA1pcOGqmSOQ=\r\n=YjxT\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.57962c1.0_1657145649671_0.2618893119743262"},"_hasShrinkwrap":false},"2.2.8":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"2.2.8","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"2.6.3","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"2.6.3"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-2.2.8.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@2.2.8","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-TC64jUOYteZ/PrVvQUfriOG0eeDvEtjDsDNi45THLaWdqApec9L8qwyn7wXFO3COy+0k7AIQfrPCI3OSSj5fmA==","shasum":"8626ca17ea41f8858176036974ae8974f5b68360","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-2.2.8.tgz","fileCount":10,"unpackedSize":21032,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDbYReh929e2wrsJWPuvSm637t2laRmKa9hudFAvKuVBwIgYuDzjKDPoMCODg3vAReKB8QKASqoZU8XzqCPz4Mnr5c="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi2Z1OACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoZuQ/9H08soxESKmUD2bcdbYaggWnmmpBPBNrDek90YAulDvsa03oU\r\nmBGYyZ1XrkvmPL3NrWLiSZtnTWLJ8j0sL2k+TXR2Ij+XQ0q0eZjyKkemeYGu\r\nAj4U9VDaA9cbIBh/vyzxiAwok0xXVJGqvy3qZnLk4HlPlBPNyC56b9MkEMbZ\r\n2xn+BNK9GgKW5p+rk8DByxX5ne47pyj4SQMUVXkf0t42R7FIIjYN3peOFup2\r\npa7kJ3HekqTJdFEcg9v7oZ75N7/kSqQNme0y9UJrqp+Mw9ZGUJd2Wc0+r6cE\r\nRWFFn4zc/nz/K2FOl1DoaphKeuFkq4fyDxKi6R9QoHZR7RyrI1CD85ISnnU5\r\naK7oQrS10zfGeq5rxTWHpkQT3BXFluhPpcwzZA1XdPZ3sZ2O22cLdYLnbM00\r\nzU0WZFbFjUwGR1qCTB68DX9erb1BzECx07/T69I8OOew8OhmD4TmdV6HcT87\r\nXKr5sIwMmDAsX/5DTK2QTa4KWX8mNPBSS5cbQSEoiKmIdYpTtcAskjQ8XEH3\r\ni7NJ9XC0n6MGd6sD0l1c0ssbnRnamKJUGCyMZSTAXaTcGcCHviLAG6FEpC2J\r\nGuqxSurEzTmjSnP6lYgP7qmNff4CV4XFuHjLZHMOTRWOhIKZB5w6pRWTlxVC\r\nXMP+SSqGK2I89xEYPb5PM4WRsa7ujQjCWJE=\r\n=Kh9g\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_2.2.8_1658428750514_0.2897341456352993"},"_hasShrinkwrap":false},"0.0.0-canary.a682711.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.a682711.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.a682711.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.a682711.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.a682711.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.a682711.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-B5gdx2DV2jMOFifQQpupMX6I0KqdkcApKaErZwRWqRaQTQnRtaEOrFuvEOdTBxWnoxmZLvAvGJKroPtQ2nS61g==","shasum":"876569dbafd671836fcec1a7c463b49355fd1591","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.a682711.0.tgz","fileCount":10,"unpackedSize":21083,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCsKSemj3JbIkeYvGhEnU3qVEdoKWQQz0odvIXf3fBlcwIgAtwSRQGK0mMxfMQLyFpLXZ5oXuynBw0NwAD4KLeiF2A="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi/AAhACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqX9A/+LKSdKnim9xvtYFbR+bQ7/DYhQ5sbhTvDoJGIMEF5sELxJgAN\r\nRkejZNE2UajUSGkRBe7wLUWG2/Ax5SV5VPg5QaMXQMjJFxJWciTSvRuNcPV0\r\ngUh2571FnaMdOuqQGX2UwGzLFTSkfXac7/7KlmVolKGX6t1IGomylyMJMmLc\r\ncje1biK1XJSoV31cey83o4X9VaJ+C0SqSfL0nszq6ubX+6BwT03m+4d2EsOI\r\nVxRBNxG6Kls4pK/13rG6sk0n8M6rdnetCLN6RvFDcNemkKMEPxpB0a6uPAMt\r\nkKTKyjza1N7ssLJdK1U9WCQzc/gvWG6/DM79BE7/JwLFGA9zCGTlfk+CctGM\r\nfORiEhPcuLK7gJTU5JcU8KQfKNG4p/wsxR8lVxbRJ6iZc7Ug2I14d0cOEqWV\r\n0uapyiNSPoOyLpNjWCly/RN+Reefcfs6RxcdyLiWdGDad4gy0oM+7DWiv45S\r\nhnj+LQTyyaSKusxSwi9Vt19eIwuS6ZF0Cmep/k/hd2WEw7DieWz5utwYAgyi\r\nwgM3Z8mjsYKiw58v9p3Hvc3Nax2W1N9RYJBSHydtng3O0m/g62t5GjHyFwP/\r\nmvNFtNBmXeBd/HZXVcMP/TZpzkBPZ2686IQn4h2YVgdYUOozZBRN4HL8egYF\r\nOeDLFpXzUjLl2Lye0zHHYwJ9Ns/IpP/STUo=\r\n=7XK9\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.a682711.0_1660682273595_0.2834507722301025"},"_hasShrinkwrap":false},"0.0.0-canary.47148f0.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.47148f0.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.47148f0.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.47148f0.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.47148f0.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.47148f0.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-ia/5lb9z7WINYjO3+3zXt4w8PcMwnqUkOn9dQEt6FDTg7QwJrPDMXCZc0IkZ7Q29IyFfcBiEIpoDPO/AK7DAog==","shasum":"1eb99d98925e6e689cb44d2f1be4c4125082165e","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.47148f0.0.tgz","fileCount":10,"unpackedSize":21083,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFR7OPhTr4wK7E9q9ueXJsORXm3UVl1uFZws0tP0rvwNAiEAoOyFFPGtMMsLfQOn75EgD49jaEN/bY1z/xUR2suRHVg="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi/VAeACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo9pw/9FxwgOHUWGAowm2VJeIT39mmkjB20VFRwpe84kxj+zlQypwvz\r\ndswleGjx8+qdPsCkHiZ6u+u6tanIPardxDTrt4silQ63S9MS8GzKFVfUYAYh\r\ngERmEyoxr81rZrrm63IRLnt9GpQ/pmJg+bgTFLPWz0Kik+zZE1Cy61wMSl9Z\r\n1rxgeK+Mxi5UmiG0co5JISDbINBoBH1eDX+cLhV3JxhG7eAkXZgLr1OeLfO4\r\n5MwIzu7vHlyLwTGI8tyMgD+13E9dchoH7Ey50QTLZ3BPhW8Bs7x9OzO1yEZJ\r\nEYaumpNrPXWMGobtKfbtei+gqgCrI/oyboBGJPtYfADxvvAIF0AFurSRet+q\r\nS8J/39SwP1U+lMWL9MT0wLTRpB6f+5Huxhvvt/bqBs9SSmtTIr21AtaZjqQL\r\neht2dlGpEgKRokWRokgq5YW7LuAYNbAbiQIw+pZldn+PnUED2yZqdCIyDIyK\r\nRPjoPCrbyhOpcqeVEFBF9RGq1Nkq7wYG6OROshpHgMI9uvoPJq5cfa6WghLg\r\nWwaGkADB8IqUxhmMJWU2x9uH8xU0gIz+JRfWfLHd7JSFq7s7+eHpdBYrrwR/\r\nUhcx65JG/dQoFSqNhntzE3umeQJKUkEu5g99Yq89X+L+2ULABr8lRTCEJVYP\r\nRYo7wl2N1q77pMyj3YWPUwr+vdsaLrwDwEk=\r\n=JPH4\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.47148f0.0_1660768286281_0.43943906928496124"},"_hasShrinkwrap":false},"0.0.0-canary.2645e7a.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.2645e7a.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.2645e7a.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.2645e7a.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.2645e7a.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.2645e7a.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-C0BHIdBpeLmc7aw3ytmzEmNYkdeg+DjV3iIJRKPi9HbGqQnrQXwCNbh92ltWBeX1h2uHRl1bk1DDoSroBheyCA==","shasum":"2a16704103eee89bd7cdda4b1ee5d3d2c17d7b3c","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.2645e7a.0.tgz","fileCount":10,"unpackedSize":21083,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH1tepnZJ/xblIuV3JrDxqwDoBQPVhOIg67e8tbA+kx2AiEAqWkLFSgBMy1cHYV+NvigDdJhJouGtR3FOQfkKVHZeVw="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjBnECACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrvcg/7B/GJdmcN/5uLdxvvmUTcLFbcO06+G5DHFlXDPJmxWiQdFv6M\r\nRH4dnkHGWYWVl4Jap8Is3bSPzuqUJie/UDbYo0JXPghbhbcCJ/afHUdH3HL1\r\nfVLzPD9tYrFdlzhNEPfTqmsoUwcw104yX9ferDBhMW35fD2qnT6y8Bbx6Zwd\r\nL76cA0QQPfxJ1c+McbXDFsS+9v7oHWvdBX4a4tbIEvJI9cuBWwqQuJdtnq5+\r\njKNJSxzFG1Gn3790o/M0A4u8kitf0CYUyqJyl5iiPhvBiSBL4cHBtGcwJYnR\r\nirYraNCvbCqXjtasbv0836AWGpnyBMKMeFuxfJu0A39URDAyyMoGYCHPxj+d\r\n3mFNklbEAUSKweFORVvtNk2cWFBc/IadTyCyZscdsltzEZthVjlad2Wg2Odp\r\nFJyB8vFDUbnHLXgaqw4/iWYmp3BH/fh5BpWGEZSlLodqQ2byt2SemQc0JK7D\r\nHTmhGyXwvhC3ghLByESGGhitbRH/lQk8CN1/756XB9Bz2SlaXNBJby4MKfEg\r\nZ2vobwpel64+rCDwCttyoaT3y5oTnSSwW1UrZfl5uRCxY7fKAKEXk3n21GFQ\r\ndK9eN3Bz6rJvc5EM4giwmawVCVhhjMlazDPm4hROjUSQIPezVTrUMQKVfEWH\r\no2rB8AQ4/2mgvVJFOfN8N44DcFgq4nTCfS4=\r\n=Keff\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.2645e7a.0_1661366530233_0.9163416521417598"},"_hasShrinkwrap":false},"0.0.0-canary.d248f7c.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.d248f7c.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"^0.131.0","fusion-core":"0.0.0-canary.d248f7c.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.d248f7c.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.d248f7c.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.d248f7c.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-l2iOVjq4aDMWYhfjkJxqaXRJH2f8/uV8XmWALZAtIstggQi93D7koxxuddLSYhWUmVHuA5KmS2R7/lpLxCz+YA==","shasum":"9bfdbf935001d2330bfdfd96efb7d8e35f9640e5","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.d248f7c.0.tgz","fileCount":10,"unpackedSize":21083,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHzyi4U34SQQ5IoL+hjuacAc0YdqKX6hNsC8hlf/aQcvAiEAnaPo0C3qPDYEt9c5qA0Wg0PmlDVviJBhd1YwMZW8BdQ="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjGTfSACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmreXA//VcQpCoebXA9C120UzUhWYSb0quSMj/+rLLuWdPcCLgxlAa0F\r\nBhqGptKeloyK3Eg//Ur2a67WQu/hR7K33JO/vxRJ8Vdno6s6R1AO5uxHXNmV\r\n+uzVfPEEWojcR2vIkOvuhn6Fhe54qn1EGEyuTK0zuENcz1iQmux7gZdnhKhJ\r\n1Yg4wNPmef5/D5pWrsQ8MKBckgA7tY53czTAhLjXjhnkCWpHvGoVfFH8R9Tn\r\n/sbzWATNCcQTw8RjoJ3YYmwda600TVYsuXFOfOLQu/ll2cQKivUUVlojY1HD\r\nKtNk/WnwsOJ9QDyGux8Nxn3ErDjwfAQ3HdZV7c7Pl4NvR/4ef1haWfim4Lg4\r\nz+dqFPTMOmRaOGr6Jbu8+RDTMrUmnCsBA46RyGsoA2lPiVYGF+BOXPCBeNao\r\nZz0zK/u1s6u0LT0VpmdFh9Fs75on2r97tpooazYey6r6QYWpkKUQlzR0Tlo6\r\nvxUJqvCvFSKh3EUF9SlbvhXs8eGclOMgXmDK5+Qyj9+YC/oE0ZttN733bCAm\r\nRZ5O0G4yhtFIb/RMz5hglgyecFX8/g6Gmitcr1goaHRMsHNgF544mTkcnTHZ\r\nuhvj50hdbsYfukO6dcLakA5qeu4KF76jXufT8sRC1/Bz2YpAqUzRa1N1ASOf\r\n39JplnrveiE43fuTEjrZ0UZ5NUOu+rqsnuk=\r\n=9hN2\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.d248f7c.0_1662597073912_0.1097493937017524"},"_hasShrinkwrap":false},"0.0.0-canary.c77e60d.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.c77e60d.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"0.131.0","fusion-core":"0.0.0-canary.c77e60d.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.c77e60d.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.c77e60d.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.c77e60d.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-0d8V7KKu6qaMlZXoqVMpTaTCpeWz/5VT+L0m4yozA1LGbB7t280L2xtXxuRes0LiJfXya5GoGX1hLkYG0VV+kg==","shasum":"aa3772cc9286775780a9f5e0a0fadc8d68251e16","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.c77e60d.0.tgz","fileCount":10,"unpackedSize":21082,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG8487OLnJcLh5MgdQ9hPC18RwY1qwPjj6mng5SY41FiAiEAhu3tOjJvQ30FYH7f+Qoo76Atnu+H4LJ8fKQoESYhYQ8="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjKjgZACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq2aRAAjH4cMMNtJZcIVSk5tHLLP+7nTWJidfaQdMcQMf5mlpm3iwUg\r\nqzQobWSXh7H5U8QqLRC0caI/svLu+7+xGGsK047vUa1v8sUv5xOGr3uibQSD\r\nc+uDLC05g1z28qoWK6ZWue98MusjkehyyVFBoNrWzse/87rzvcoEionoy3eh\r\nir8+5dLvF5zWabO/q2ysS4qM5K6tDmugzb4dQTscYAmlNrCW3L9LLibzUhOj\r\n5h+sCkURcwXe8nbqBqAE6c54PGgiDrM4gEBiDeQqtD2vNnwLAYVxfuY5Ig8v\r\nbtPutXD8n7Eg5aD4Nqf+L1xhOpii/mpgdrHVVkH0qHrCBG0ZhvTNDkXJ0U9E\r\nYdqwv7g0Cyrc673qd0o+IEpD3RwpZji818kDMC1gA3z5iuwQVUOwL2HSkYjs\r\nioZOsRrCBSJDxQvfdoL/ZCBI3rjJ0AO/SEuuttKWpyrP0hiqIs58LVxdJ6Ws\r\nueX9luh1banSGZlvuvXOVI1z6UK0OHt3LKo7T3aUvjUCNFHDPsZmlKK0/MgZ\r\nfkzwpj2hFuoDAzYvs279iQq0SR9hHlgSc9OsmH3vC44izvp2/9s6R3Ht5eck\r\nH74NgwJ/ZKsLxKsABLKiWwev5XZa5XECoSvPqn9rcZPffcunTw63UGR/bB6R\r\ntDPOesvXcrXkemeBedzZSJAxzCDeKsWfm84=\r\n=rfSY\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.c77e60d.0_1663711256795_0.8045108819946378"},"_hasShrinkwrap":false},"0.0.0-canary.5f297f6.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.5f297f6.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"0.131.0","fusion-core":"0.0.0-canary.5f297f6.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.5f297f6.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.5f297f6.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.5f297f6.0","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-/6YsYrwg8j3pHTANzhVBU+2ypIZjn/P3mTWSAilogOmRdEgeUTNKn+wdsSM6EYbmSOX0zxTvUMD28s0yA3ZbEQ==","shasum":"a21e285d7a560558d0aa327d342ef35d71ba271f","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.5f297f6.0.tgz","fileCount":10,"unpackedSize":21082,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDSGkNMtYWR9M3ldIvwoNRJ38qxbQErojAWoYwDLgmvNAiBzf3wLHmeMcCXAGLgEyYLGwEdXN5u4taRJ88WmUv0GPw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjKkEeACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqSzg//dZKXKFkbm4nci+KTYkRuG5IGFnHo8yeHR0Hq+bFdT2IGec/O\r\nDOOgSDKGmVhR7ka8DrUjuFEdTtWuJ464nZETrp3yyBekz4+lYSs8YT4czrSN\r\nkLrUVdQf7GlrCf1qoZwCxZ/n0aqa9YYaf95AiLhTjVz7NwZ0A74E9BvZe6bK\r\nDc5lC34mENPDynD6BkRpCU6V+dN07aaxs7uVIDFghYlJDqESwHinAYaO7QE1\r\nqTuDQHDeDTX5OAVTDL2ny59XNOXtButxZKYqhN0GYGfRK4gLM85BbeOiHIZi\r\nCWdrv7hKonTci2eAWZP0JZMLZgBssIv2oFfuKywzYfzXRlxw0JX3VLl9E3Mz\r\nLx92iOiWhh6+gRd4RzBlFVv6P+0Wf3Id6yuHnEmLKn8QGHqjQvGfM0I9i1ej\r\nI4WnPpRR1mZ1D0WJHM5FW2YQlfNy2dErbHakwCkImssl+zCqbcCxdor88JlG\r\ns0LuM4ZlYZgzTf25FakHEMbMSMz++/YPUA4FQPiLPgCY4MUTJIzncQm/oipA\r\nRgSw3LRdzoGeKKyf8xaUEnv7AEK/G0xSHT9f9fdCTp+Ob/CmsJUk2tIxLkTl\r\nhWF5AaRKFtMlvDIRMAzOiEXm6l8b48BbyDMWNkhC2OusFcp5PRiYcJW2kz6b\r\nZ5D6bSl0Ni78j2WKC/7PLTvf5c5z9ICx9QE=\r\n=Ze5p\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.5f297f6.0_1663713566073_0.7084037139870958"},"_hasShrinkwrap":false},"2.2.9":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"2.2.9","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"0.131.0","fusion-core":"2.7.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"2.7.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-2.2.9.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@2.2.9","_nodeVersion":"16.13.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-Zt8Inqzt48F2J3/63xTLatd6pa/yp+uq70sX2lZoFh8TdO0x5OBkaHNy6556OeaalqHvfuYeODu9Z2wyzXQY0w==","shasum":"cf36a61d87ff4fe96bfdb8c82754de1e7493adeb","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-2.2.9.tgz","fileCount":10,"unpackedSize":21031,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFQYTPoSzCZI/u0IlnzClMaD2vwUoy2Vj3cnK4iTTW1vAiB4dc2u55CPJ+r3oEik1EMGwBBuiXPMYTL9yeiPrFwFmg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjPHxpACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqaaw//RpBacdewAJPe+u3p98LN/b7f+n8RI+bDjFqpwnxpoOHQSavp\r\nxRcBt8NGVxXARGfjzRdi4G4An5v8E7Rj77wwed3ArpGEjhnwnK8oqlqJ9b1Y\r\nIAHbRP7sNfLfr2CzWiuJTJEnscDMuUmVau2dvtTe4Ip7Ar8VM+BT72JQv6dI\r\n+TJIgRyJCuOXVxVy2s3/IEAs2nuxZavLlx1W2B+8OdTmS6L3qGnOuCNrLB+E\r\nicc07gGX4hOkrDqH1SJcw3gRE6RYW0o5mz3Qvbc8J/PII2z8/1Wj1FFeG66O\r\nxYRqEboYZLedqG68i+kmEg4v/3WCtYb2o4QSqLhWYEhrotI3v33zqgPezZiW\r\nwrPXSGg0+ZFOWAj/qZyonw67rSTSDt+6mj9onyE8Q8BjLu1lC0nV5CkBv3ri\r\n38Z33Wrk+dVkaQQCZbcQcvU9hw3az0wu9pepdvv5hSElaN67CW7/VlB0tjJd\r\nAjaHy8tUn5yDPPELKru6Z0k0bYzEmGvI97Gk8p//494/91Oc8H/jBShbFZZW\r\n9gRlE+r1f0T3JFJHlmavLMGlsO2Ge1MePmAp5VCAMo50HYE0yrUtsBMJcUkT\r\nk3l+EBqUx+I1MsP/oYsFTwWfhRKWMbFdUZmwA62eynzJ6CJElHC71nBor/q/\r\nR843UzSP3UUyQiEgaPwZYTEv6UgGjOj1O8c=\r\n=aZZT\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_2.2.9_1664908393558_0.7023410901308109"},"_hasShrinkwrap":false},"0.0.0-canary.df69099.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.df69099.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"0.131.0","fusion-core":"2.7.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"2.7.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.df69099.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.df69099.0","_nodeVersion":"16.15.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-D2OV8AcHVjZU0Fg/7hFq6dxASGDIvVpHDiuGNldxW5G8eCV3uicO0h7uhzGNV9jBETp+r2lFxDnywwuyFtmysQ==","shasum":"4c6541ed4639886c9f95b397ad834404414ff825","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.df69099.0.tgz","fileCount":10,"unpackedSize":21048,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD4qX1DghWpCP6cigUTgrHTsWw4eiZnQN8hce9zuVLxtwIhAMv8H/ZUnUnKbvmMdvbrJHn9Jj/CySpGAPtxzC54cMI/"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjRxq8ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp6dw/+PwuT6UnMoXtlIxN5QTgUR5ehNKx2VANH7Yn7KCw8W+v1ZWuT\r\n6AL/PD2OA9zuvUqtO2ArPd4ut2jCVqdsTn7WyTESXwbT1nq/+4wEV+Z48UMb\r\nBehLEi8X64azeyZu6wTl5HFoddFFNJee2SbFMb5Ikd6GK6jlBMLUe6Muggkm\r\nkOrA3L6Tqkwox9vK8vMINYdvOHZvjUXqnB9l1zCjwVF3W2CAiYLBQrUpO1AX\r\nViNfBKF+zEm9OZ4aJMfAb0y8prKXEV/H95sCNxO2IuVRkzo3vW8RiHES9SYx\r\nXsJhXBViW5WvzE6Ypuunoxwoa5drDY9cnVSu8Mw1o5Z8eP57GRqPazXb1Rc7\r\n/extH7c1FTsvcN5IZElQxkibtlChCL9ZI4Qq2klANtMZNek0Lbl7h3le2UAz\r\nLTeiFn+Ry1ELVZOti8yAtN+d545vw6zw+EAW7h5x0TLkWnnYTS95MaIbEmX8\r\nwCUVNFbQiH26RHbpn0hujjjIXaE+smOF0wKPfJHz3fxwDGtCH5IOJgYpSxMT\r\nv/ITUD2O45QSlmKhx5UC0N7C/LuVJ7zuYAgE4/nvKwR7c80Wi2K64+wsKu7J\r\nvdLQAOMOyB6zhCLXi5H4b9tEdMCPN6SXras5sbLCt9I9zLmn9e7btmIcpkap\r\nor6jjhWmTPWFCu5XGft11IFam1ywb8jfh9g=\r\n=8sp5\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.df69099.0_1665604284102_0.9122991820745969"},"_hasShrinkwrap":false},"2.2.10":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"2.2.10","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"0.131.0","fusion-core":"2.7.0","jest":"^25.1.0"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"2.7.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-2.2.10.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@2.2.10","_nodeVersion":"16.15.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-f69bmnclftALmOHm63+f7dKksNlkxCIV0Yg2N0He3cFSg7t4awyw99jFslhlyQ5s+/R2aCThcrwBfOv9nxfBYg==","shasum":"2ba5e198716e4b40009fe616bc1077f263406d3b","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-2.2.10.tgz","fileCount":10,"unpackedSize":21032,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDXJkXD/FlTsBSRaYmEfJS9yPJw2arFqUl8jbRS/7U9pAIgDVbwmOSJxk1hBhdk30ax2VySNqJcX5YDeB8tsYMb54M="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjSbc4ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrTqg//b5G3BsSjgLmADFoDHXhq37/bhqDx1gG6r0BaNtaKlyt8+qJ/\r\n5gCg1Jy4SWQd/SoasTBYUkxEYoi7SeJaeaYMLVvrEIG5UKorQdBCjqMArHk+\r\n2Km/OtSz9T0co/r7uPCmRxGeq/2sFF5BiU5CTLBpxROA5I5zBQiHnplMdENe\r\nt/vrXn0lHT12jYUy/JlmHsw7/8Z6rnndF0UAsV3JNlIO/zKpRn9D6GWZnXE7\r\nA9/RDYdwTZS8Lq+gHLyA2oOjcOHrf1KzhHu8XIzykZTi4XkIEYaoqN4mBu7n\r\nTAHwXssOaJvoAxO8YRPkbr0WlG8IsUxVm68CyA7oQf6kuQtT1gkIsMAqUfTz\r\nY94OnAZimeF2QLFIF4jCYrjYObaYE6R/yrk/uUXdDUq0kptfOJViN1IZ4LLl\r\nexWEHlgila8f6iEJ+HQE5UntALDdVznv25oRbb/9S8H7WtL0IvzR5rQwQQTo\r\nXHhKtKANJ0qE85izQYFjPmG8fKCBi58mXmUQc2K5e5eYq0o4IWEEIOU0kfEl\r\nzTNWPbr9KEPNFe5MH2xWb6YYLY+RjfDhUdP+PwdgM6ad7oESOLT5sLinFhEC\r\n6GBEjSQBwRyiIGMeCsrs1ivMRRk5O+K3hGy3mLihc+ucSHcPh9eGl7Cr9I7D\r\nsdeaDI8a9k/CGTpDeIwxuHqHFfpXva/PgW4=\r\n=OqcW\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_2.2.10_1665775416249_0.28011429745740624"},"_hasShrinkwrap":false},"0.0.0-canary.7982e16.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.7982e16.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"0.131.0","fusion-core":"0.0.0-canary.7982e16.0","jest":"^28.1.3","jest-environment-jsdom":"^28.1.3"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.7982e16.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.7982e16.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.7982e16.0","_nodeVersion":"16.15.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-6s2Ms/hIQSRuylY/xcgsBf8t1S7SLCvb6TEdBiYMpwZM3/2Ffz3lJKyAZHQPGaIsaKrsnhCFlvKU/CH6g6faSg==","shasum":"ce1e44720a6e02fc689d8c0c7cd145fc7c81f257","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.7982e16.0.tgz","fileCount":10,"unpackedSize":21123,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCyEvhfR8cVI+FbbuT/i00OKhHvKRkaW1R1IP5awAdeMQIhAISpGKftQ92Zppz7Ilj45N5G7z+7pJB26/OrJyEkZFV6"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjYwbMACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoD2w/+OWe8giRg29J360S4rkPSvOGlwWI2SyEJn0OBIt9PffyOKf3m\r\nt77nh3Tm+n+vBgQVr+GW0wbyhoKovwQC+SoOBtGPIb2wRiG6xc1h2cczxaCL\r\nnFUxbaPGnfAV51rLqlHu4llhiCzovg8EC9J8vsKjNhw0RdbLj2ZPnmR0OQUo\r\nXGTgFqEL9Fca0VBJJMgzvTxVpOPDVfnlmtcfZptPFzRCTxpoivoEACOzd8oH\r\nBPkpWTLP2Rz951Az9+XWiR9kr4e4CwIx3SklQzs3SrUxk1mNqwt0xK5abXeA\r\n70rfc9+McDvzN0QuTf25cN5RXZL+ekKS8FICKra7Y7aHwgJLRyztWDtgYrbc\r\n6MHh2+Oul6iR8GwAnuDgeOWdi8RV3wRD+rpMblgljSLCYXRAPPQbcOFBqJfP\r\nhCfU8/bsX5Drq9hCwehT5ypQDDgP9fTiW+0ne6fLG9Zgb0gp3E7AsQ83TzWu\r\n6iBAez/F1G1Xh7lS18svJAjqkhQLGBP+swhwVRk0Clb7n/g0Y9DJ+jAc4riC\r\n2n/zRhbDErImHVlw+clp9PNVA82LnyYJJ1MpOzAUNftDcFKtUcd+xRVzqBj/\r\n9W1CZRGQmafSetzhwED1wY/J6C3BqTOZiXZycqgxSSqkIT8IhhqVzmXlqkeA\r\ncv+y1RmpSAhP07GZjVLW9ByptXgeLjFosZQ=\r\n=xaob\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.7982e16.0_1667434188343_0.0642572944589841"},"_hasShrinkwrap":false},"2.2.11":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"2.2.11","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","create-universal-package":"^4.1.2","flow-bin":"0.131.0","fusion-core":"2.7.1","jest":"^28.1.3","jest-environment-jsdom":"^28.1.3"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"2.7.1"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","flow":"flow","lint":"yarn g:lint","prepack":"cup-build --force-flow","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-2.2.11.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@2.2.11","_nodeVersion":"16.15.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-dF3nhNBkLFIN4trjAipip+4fZ+jpN2iDw4pETdvUT4bxmMAvGXQLJXTg9utkML88/ulOhAnnsKozCncnrnh1KA==","shasum":"09e5dd13e56eb3480584248b4abec18065322dc3","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-2.2.11.tgz","fileCount":10,"unpackedSize":21073,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC4e6JTTUI3m+4M8IjIbyLIwvGT9zkmnsfqfY4PKLCy1AiEApglNtGkl8S8lFgf46noWeo4egKdzEw2ts03/3Yb3CiA="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjZZvGACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq+0w/8C3G05sQ3VVmkBuAGTVXPCX2CsnAykJCO3Tb+S/CphiFKWC1/\r\nRtrB6IiUFm1Tpdm/P4twGNrHPaIkP+fXXMk588JtykjpSpWtMIPiwUic/9Di\r\nb5THh7yOrizHSoFHJ8DCiFS3NyrmbzUPk2o29n3Da4n5KrYQdp9ZE3VGPE54\r\n7F2doIw6dz3SoYPaGaQwCvRZIvoMPTzD0hjitnhzaT2894OgAwDRAbsa1CGO\r\nqLEVw8iAPl3+ApvAl2EWR4hlqstT5IVSONPcx5xdme+DTtm1lyxJrNB1r9GT\r\nT/X4HoWPftwKCxv+aegBHkysZ9qbI58oPs8CTWvgvrflB8Dr8ROA7dTcuj5O\r\nAbJ6nN4y0iM2Gzl4c0dJNtYLHwOCx1pCQd+ne+gtb/nBKT0w//aOwAVEh8/7\r\n4ciKSyY3z7jqqzYJzJpXo7jCn3zWNt34KhwJMaZZGx5W1sTlxmBu1TISl1n0\r\nem/wzpPYWpElxnXvpAcoASdjiDe4l7ccflhEc560SYLdCdCGtRCjLypRIaQq\r\nxw2jfJVn1iDRRtTnfunvPLgl/ng6w9lLjH3wyRDvbeu2Pdje/gteF6vjRKH5\r\nklAAmPwENP8gW8UAF9G4lezeaqQimWJaIApgWMjcfgAjs5Gtw5RAVy/Gm0qY\r\nXhoBmI4hfdY+1nr4PDRb4LVjYmOTp/4QzFk=\r\n=A9eg\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_2.2.11_1667603398180_0.36989597741399804"},"_hasShrinkwrap":false},"0.0.0-canary.af83905.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.af83905.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","@babel/preset-typescript":"^7.15.0","@types/create-universal-package-env":"workspace:*","@types/jest":"^28.1.3","babel-jest":"^28.1.3","create-universal-package":"^4.3.0","flow-bin":"0.131.0","fusion-core":"0.0.0-canary.af83905.0","jest":"^28.1.3","jest-environment-jsdom":"^28.1.3","typescript":"^4.8.4"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./lib/index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.af83905.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","lint":"yarn g:lint","prepack":"yarn tsc -b && cup-build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.af83905.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.af83905.0","_nodeVersion":"16.15.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-I9hGpu+GVbVWr25BzKThV2ysppS7w24xiwBLRIfd40rnEDAa7Uovvb3eEjurgaN2U1VGYK11iy+U7JPlA7wIKQ==","shasum":"9c397b3cb19ff1fc7176c56194a98c55d806171e","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.af83905.0.tgz","fileCount":14,"unpackedSize":28339,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFv2tW25U1wLCzg5Qi7bkCBpmOxpDQoELAyyQ8Obw/RJAiAEwZTMkL1a6vrxfwpyGEujrITFlsEoAbFHHkjTvJlfeQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjh/7oACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmofUQ//d9yJtmYn4L09qebzaB+2gmhzkUxQaNOAQV/cW8BTz7VlGjYA\r\nzrfD/nkY6KvLHwlXRQl0hzfKiNaiLsKkYUbcfW4XwbXhlFHTKi6Id0zAuhSQ\r\nCgavrcKLNu7ZVWhUH5+2PBc6JaYeYV+wTPvdWekzLFYGZTSrnxWvnkxwm00z\r\nvhQbde8Bgaq8Pne/98CYhchVt3XpDHQ8/sK6G0/CRbbkXLnQAHhqmzQ38ITC\r\n3mtIjrWF25rXXQaK/JvF6QNbK0S0kkh1vBtlvvCVFe7NkTaDJFmTepUh2toH\r\ngy/0c2puDpKpC5TF87ZgLvL7p1+XPm67b9V+IJv5pniO5KOKOakbEMwTHRlo\r\n5bGZs8w/m8hqBcFuIwA0qhJ7DyTNl75QKx8cmH6AE8rREVwYSbYgX/R/n+zq\r\nf4vFfW+1iPjWUfw0uKSe4KBeNKqwBPUT+952XgZhydPL4Q2sGhYRwBZsks1z\r\nkWze03x1vrRca+iXNKJiYZ8lPSWAaSI9AhZ2Z7Pq8PzdxMT4VU5ykBxD5TLH\r\nm4Ib/yOy2C0mQSMzPF/vgludKiPrsObkhHuX5oPzKnoXu92PTLUPEM7nJdEW\r\nen8QGHgC5FaHyRy/EofhDZ6XrLkSm+aYKPuLEBRoIr5BTMA9UPz8WZsoUujT\r\nEz2EX8uMBkJjymxWiK/UsIUy62/G3rf75Mg=\r\n=xxAq\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.af83905.0_1669857000721_0.08851166996399695"},"_hasShrinkwrap":false},"2.3.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"2.3.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","@babel/preset-typescript":"^7.15.0","@types/create-universal-package-env":"workspace:*","@types/jest":"^28.1.3","babel-jest":"^28.1.3","create-universal-package":"^4.3.0","flow-bin":"0.131.0","fusion-core":"2.8.0","jest":"^28.1.3","jest-environment-jsdom":"^28.1.3","typescript":"^4.9.3"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./lib/index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"2.8.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","lint":"yarn g:lint","prepack":"yarn tsc -b && cup-build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-2.3.0.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@2.3.0","_nodeVersion":"16.15.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-Y/DDDrGDFpZpiHUQY+78cL3rQr3Ah/q0PBWsLQgvscFdhpdvFl8dtA4gEmoH2cKkhkNLhFyvOmEnGVvddCZ0ew==","shasum":"07508108a30717a4d2321408ba9ce087c3317b98","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-2.3.0.tgz","fileCount":14,"unpackedSize":28240,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEYSjKVhp6F7zAWTxCr3F8Xtd4At8TIMJc/O/3+/oNWaAiA98Lh4k++qDElP5wIGqcHo0XW6SwVzk6yTpDThvGFhZQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjjlVwACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo2rg/+KGtrebRtYXEJ3B4FTNew5ziABQGu6He5kihrNNaHHSd0ozl6\r\n2r27YwEfP4hOTLdq9OMZ93Uo4rf1tjfLDNsJs4s2XFTYKmCFEX+jXExiKdMF\r\nu19cp2lTGDg3r1rPfFJ7Cxrx2WcOeMvXwpRD8yqFPY6cOCU8d4y4UIbLFxiN\r\nkQ6nYp9dkJJ/i60SSJhaLTTsyBC22K68mkWLUGxIyfy9eTz/ZloisT2p/5Hi\r\nYe1aVmFJnnMZr0+T81CjYzcT9fqY7OJGrET24ajPWFwO00DEcsUKYQHqo2GB\r\nTMhhSz3pGAhGOvzHSwVl/8KpP2sSvQXzZIKox3zpPlQzItybKRdghJnNueLm\r\nIBCUDPamor8IbYaGFqPsGDAEMq62Mrjs/nufZAUMbCf/nssrUpUbBljShWBl\r\nJ0KUgXfvjLKwUcDwNLU1Ix4ygOSzw3BFgU9m9cDaQBk+MYeYkmZL7hr/YoA3\r\n526+KAREjdzEiJt0gOqnmbuK5iIoryeXmoR+oBEHxyCnValvgUgwf/TWjd6b\r\nHyspKQWvvjYT4MUDMNtSSIHKDVJP8+nJ9K8EOAJKKgIc053lf8JENcaD8sU+\r\n9wAKNkcK1ZlGcstpTyZdYnOY2pPpACF3A29jVLIugXzSs4g8CxHFrrZ8LKWM\r\ned7958OnKF0pa3YpkzqjNcVYaz+WSSO8Gq0=\r\n=Ezp+\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_2.3.0_1670272368186_0.6483964829010804"},"_hasShrinkwrap":false},"0.0.0-canary.cc2fb77.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.cc2fb77.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","@babel/preset-typescript":"^7.15.0","@types/create-universal-package-env":"workspace:*","@types/jest":"^28.1.3","babel-jest":"^28.1.3","create-universal-package":"^4.3.0","flow-bin":"0.131.0","fusion-core":"0.0.0-canary.cc2fb77.0","jest":"^28.1.3","jest-environment-jsdom":"^28.1.3","typescript":"^4.9.3"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./lib/index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.cc2fb77.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","lint":"yarn g:lint","prepack":"yarn tsc -b && cup-build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.cc2fb77.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.cc2fb77.0","_nodeVersion":"16.15.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-xIvwDMv+DtBO2MWn7QRKeg7yIcMPd7fVn5QfbOhjQBQu+MY8JPX7bOkDWP8c7g1eroRGrDRGV9ZQz6bYookGkQ==","shasum":"698ef9bc31d9ea2c9623e277fcab88957dd529ab","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.cc2fb77.0.tgz","fileCount":14,"unpackedSize":28291,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC5MMcqZaPTnXGlxGpoP3DLLL3N2h0ZoV97v9h28Ryh8AiBOn6cuYruTH1S8nI3JbCx/9/A1cr7Gq2dnzIpHUyYdyA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjjqUQACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo5MQ//YYYuXgVbf03m4et1ndkLIl4oOAJ2uqZs5BQIrwZ1XQIyZ6/R\r\nfQ+lYJ0R2AZCdfq+6Za512njo2pSk1P2V9aIEdhMQ1uvnGskc+pAvO53zXVl\r\nYSOlMKnNL+1JcwrlGxD/lSZCYOL+oFbbV3XivTH+/qQHySwAIer6fkyqS5cr\r\nXog9PdMcU2HcqwFkGtVhdkMrv8V5RDjYhcsRg0aQkbqLyLRGSd9rbaY7vGnc\r\ngm2TxGXIJGRVoiam4cafnHxO9P9gem1JUpT7rzzWmrXCFj2DTsSBkYOHQO1R\r\n+GU9xdnJcsSjwzJA1McH5n2o7e4qsQaeZCHQYZ5LsdbcdmgoY4/hgZ0g74PB\r\nZnkXQX+1A9FqzyVCnMswN+zsUwttxZckR65N4ojepozlShHfMdlSm3up7AfX\r\nXAM20AvxcgB5zkiasW7r5DObVF2YCPuhiRNUJMCllKwsoTu1Qrcnf0VYoQAu\r\neCRITzKo8TOO5igUF3nLzPfHgMd6rY8+o7eSfgYMxaE+O2ZPuAN98CkofLrW\r\n3GGXGiW0BrN4XrGWxJYQ0NSmStXjcTT003SzgPyblWUSngrmYEhKu/7DUcY5\r\n+cD55eQAyTtxARGRtge7ec/3kr+/n0PsYNhc/EnqEO/P4/IV0knztdmvFcAG\r\nqHD28hhVxYdWaEf/xDoecC5l5iSwj1Ob9xI=\r\n=aAOB\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.cc2fb77.0_1670292752043_0.45424225422123876"},"_hasShrinkwrap":false},"0.0.0-canary.d18411f.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.d18411f.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","@babel/preset-typescript":"^7.15.0","@types/create-universal-package-env":"workspace:*","@types/jest":"^28.1.3","babel-jest":"^28.1.3","create-universal-package":"^4.3.0","flow-bin":"0.131.0","fusion-core":"0.0.0-canary.d18411f.0","jest":"^28.1.3","jest-environment-jsdom":"^28.1.3","typescript":"^4.9.3"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./lib/index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.d18411f.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","lint":"yarn g:lint","prepack":"yarn tsc -b && cup-build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.d18411f.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.d18411f.0","_nodeVersion":"16.15.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-SodQVvzDwxbrlO286JJO/dqM6FtpFe2LJAjwtVD0XuktcD0HKceFaDT6LEqjjk+f/mEdFQz9TmZ14gJE0xsqRQ==","shasum":"aa5e52ff05be9311ae3dda2a91895e6d26654914","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.d18411f.0.tgz","fileCount":14,"unpackedSize":28291,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICNGru/wXD3hCMqy4MZQhxlLN+Ct5W7bO/dyh4OsBbG/AiEA9RgQoep5n62f6M4P27DRPlIZb1YIbhe2820gp7HPU1Y="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjjsa5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqDyw//S761aE/izDA5zRoayRtZha91Ja3h65d+mtrSPL4bnkDDRuDE\r\nn/fxDNG4CSmB68ekCChcY7zOhCcwFi8jQBDClie7H7o8jjzQ55DSg01AOqx4\r\nhfz59nwWpFmLAgpdrU3EVSr+CRHj7nR+MWysE5nleTiXDAaYvBTEZz9fXZO8\r\njs5KFV3MzYFAGeaONmrlwKX+///HB4zrs4v+V/Yfm1ujq3GJS2wiuB+zlsU3\r\n6zwIfQl7LVCF9CUlDWqkohwsdGaYcm5wp3xtuh3PJfBFz7gnQrRJJ8tebiBf\r\nhSD/bjiIkmY0GAx4JJZIfq0s0k3kDhpeIUol0ci6ub6vV6OZCgCBArkONRJ3\r\nkf9fa0Up6SWd/+MT75ZDKXMu8F90aEqmjdCr/N7hrb1H5gcgof76jI2mnhSH\r\nBe1opv0DHLtPfdTaUplVNeb1JUq78vuQYIUTydSUAcsraNMGu0cONb89t4SQ\r\nIvFe75fAdbBfBCH+dMZ3Bbfz7L2P2iKBipZYGyp1j3WN+xnst/dgUg/O/5EE\r\nXW7P5SbryNVkOE7936psVpsCKb5/fheWEfyodNkZRElF01yZn3W9tBVonCDx\r\nnjp9hX4ZCZmHR/0ZkMvnAJAhEBum1Bi08MHyr2BRYNAwSrHKTwssvwHNdNOt\r\nal9akh/kfQZMiXABNubRs3yELP6nzU4VTY0=\r\n=YE9O\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.d18411f.0_1670301368975_0.8190984306458193"},"_hasShrinkwrap":false},"0.0.0-canary.7f1cb1f.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.7f1cb1f.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","@babel/preset-typescript":"^7.15.0","@types/create-universal-package-env":"workspace:*","@types/jest":"^28.1.3","babel-jest":"^28.1.3","create-universal-package":"^4.3.0","flow-bin":"0.131.0","fusion-core":"0.0.0-canary.7f1cb1f.0","jest":"^28.1.3","jest-environment-jsdom":"^28.1.3","typescript":"^4.9.3"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./lib/index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.7f1cb1f.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","lint":"yarn g:lint","prepack":"yarn tsc -b && cup-build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.7f1cb1f.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.7f1cb1f.0","_nodeVersion":"16.15.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-KMXeKfnciCAMI8cO43EJ6HZrt7QQ4E5doi27f1sBc13C9+TG/Z1WvwMFB9JU6OChSHCycK24Vw5nxJkZzZ9BeQ==","shasum":"973251807999c1522bef04712a68864a77f7ecf2","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.7f1cb1f.0.tgz","fileCount":14,"unpackedSize":28291,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD52szub26/skNf4FtVTxblC/uj/+XCK70Q8pkdWOADZgIgdRv7LGu/IwUunMfDjy/LgEyHcaPuwZT/DWMz5MLgvZI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjjtuwACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoHDg//f1/vvs3i34v3W+BGH+VNqLcQ++1SvVSbutdqIb3fFdHw+6Bn\r\nUyIhGE5H2DW002FkXAFJcGByqlqKIWztRwPSV4SUU8plHPxUWxVEX/xm0Ssg\r\n0IIr2fqHMpn1GYOCZAUaHqeWO9KpQf9FUz2zZwdVLYoTBJJtiOc51GadUt3i\r\nK59dAG9kPnx5G7j1K8URb7G6PotLqPaxeq/8MXhgY9PmK2gZk6yXHwg7Pt/c\r\nMu7nW4rcHlpyk62XNzaQJPkDatyNCuQrnrSoroEIdfZ4jwP0pGs+MyPSxr/j\r\nF8hxhJmynIUpdtBZVWHTFno/8/Jj0QOOfxq3hxzWy4vYn9gAalkLLHy5nY9b\r\nH7Dj65PdfIZeUcvca9AdabwSStt9iez3BgULwfKXLo/crPX+KUl82I9tECY1\r\n7Q9z2NG8pzur/NoQMat7Fz7cV3rA7Zt4s/52+LQndzfuYZn2XX82t1YSMyHW\r\nTyiP1tr8Sqi3ZeMPk0e5/Sem0IqYCKyUB7opQ0QhbuRMxy+hXRGpOzVrqLjv\r\nXDPgsD0Y9WVTkyVrO0UjToWEYKeUDDGNcrdHtH86F11OOK/JRvot8E3RjFNa\r\nyPx8j81L8QhwF65ttfd9a3T9DmlRb8d8I4WJ+gL3htrTaotc/Jb1vtGkp9nl\r\nVrprJ0wsRknV2V3Sml8gbqQoIi0mCYoXHI8=\r\n=YU7w\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.7f1cb1f.0_1670306735939_0.7203402824059699"},"_hasShrinkwrap":false},"2.3.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"2.3.1","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","@babel/preset-typescript":"^7.15.0","@types/create-universal-package-env":"workspace:*","@types/jest":"^28.1.3","babel-jest":"^28.1.3","create-universal-package":"^4.3.0","flow-bin":"0.131.0","fusion-core":"2.8.1","jest":"^28.1.3","jest-environment-jsdom":"^28.1.3","typescript":"^4.9.3"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./lib/index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"2.8.1"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","lint":"yarn g:lint","prepack":"yarn tsc -b && cup-build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-2.3.1.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@2.3.1","_nodeVersion":"16.15.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-vZ/IQmGqm95omGR5WLa/oqifKMRLO7gxZEmUts/hnbQefJ1e1g+gzismUbwU00e9QfPu9Co+szVKZym5gyCTJg==","shasum":"9c4bcffdb4a6e491d5d0038015d6b075eca505e7","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-2.3.1.tgz","fileCount":14,"unpackedSize":28240,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCkeM99WiV7d21kZT0FgXQamyP/+avh0awORRhfJLPE0gIhANhjlz/uXPEn/Sv41HVlQ92rUm+k+FWNet/HqsObhcE8"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjj/JKACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpv1A/9FoG+rJOCX9sKm8pRA7oXPtlIKM0RsFREG6ZNHI2tl/odLSDv\r\nVynlcJQ6J+T56U0KLN0GY18TEf07qIxgXf84eTEvS8NViIvlr9fLQTDIdpZV\r\nJ9JnJFtfPlMHS9yGbGtHOI6kKcKGSNCyzKAhleLgxdM4dxlMj5eKQl9iFZH7\r\nabeiCRd5npDbqpqBkVt+MWE1VT+v+bKDvyzMPu3++lP3mVozvRNwqrzBrzOl\r\nf7MdrF9bJWiRs4E8kEBVVhO9o8XBvi21yGZcJElFyrdxpRxXeQ0WnIhVyQQV\r\nyeaRMez8X5ty6yqnBZwptsqf/dDLyzDbn5KbAQ6mwNwIE3oE0N99/Gdev50d\r\nhWPAVkbtJpEJy5QhLWfr0TYnFg9qV9iwOjeKdh3sO8X60q4gnXwMDzRHA9Gr\r\nv2Ui36xqqz0oLSWee4fmDyY7+bpGIQghay76k4n9D3XWEF8v9NMgMqsqq/2G\r\nvZpj4RKn781k+u2lJsQAeXi+OcxRVUahIavM2sVhj863b0YsbJrvPaBmtloM\r\n5EHj14yGf7g/w3qHEwi4pLCnbozrCxGMdgDgHvQBPyKVXoR+7ph76189NTdC\r\nowK4gJTv+v65wLFx/3HEwEdRu01DC0EXRqvr1sN1Lgy4zugyiYIQ9e1h3xzd\r\neunWQc+JaK8DSEvyD656F3C3otBWV+kVwPg=\r\n=CQbS\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_2.3.1_1670378058032_0.30137184595605193"},"_hasShrinkwrap":false},"0.0.0-canary.1ea3b4c.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.1ea3b4c.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","@babel/preset-typescript":"^7.15.0","@types/create-universal-package-env":"workspace:*","@types/jest":"^28.1.3","babel-jest":"^28.1.3","create-universal-package":"^4.3.0","flow-bin":"0.131.0","fusion-core":"0.0.0-canary.1ea3b4c.0","jest":"^28.1.3","jest-environment-jsdom":"^28.1.3","typescript":"^4.9.3"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./lib/index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.1ea3b4c.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","lint":"yarn g:lint","prepack":"yarn tsc -b && cup-build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.1ea3b4c.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.1ea3b4c.0","_nodeVersion":"16.15.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-yGT7rCZ9ZBuEwks8reSP+C7Wb0uz77GssvT05jzo1MDnF2RvTdISHzFc1uJ+hrSfCizQYR1COfuMlTQnJiRWiw==","shasum":"e8bc598bdb021c9517a907e8168bd7f80c3c0a10","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.1ea3b4c.0.tgz","fileCount":14,"unpackedSize":28291,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCo39dvW2fXiJbymARmJA+CjYyEZy11JWlA0XbU3OG70AIhAOeArC2CzpANu6EodlQtNgbVmxUOe8xdDfibFNo7pE0l"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjkPftACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqp9Q/8DVJfkRQY1nge49JvliRCnGfugfRFzMtq7/gitmkFxJmmjFc3\r\nVkGlE0LMz+NkcsTZIchob586ygWeM1r9PZe7SzxXcKcV+ft6g2F1HQHEQV4L\r\nSk2V3wol+3cqo83vDmNXeXXWma3b/nNdLli0BD6mfhUCMPn+fXonN4/mG+Vd\r\n9qKxc8StZQkgWs7DJu9nqWm6nrlfZmxm4a1hq7mydA/bKTZqTpfGLXIK4nNM\r\nDB/9YpKuImbCaf39if3Rv6Y68HCzwm/JLgkUR6hjmn1ZTnLCs+msxL07wDw1\r\nsV8u7513PRosth3acTvUJJvfAiOPMmVBpCnE4CK+K9DyLwbBlAVSc7+2zZJv\r\n5hJVasSr9SqP8nSdqchzIFp7Eg0Lv++Uk9cP945sHec+xq7RzcVnDPI4ZRlY\r\nnAIYYnItiv6xKqDKxK1O8vyrABUgfJhgzZlvXphGN/a0o5Vcy14JEhnTekKk\r\ncF760E4NdP2DDhaaC02DLKNbVP5VyOqDU+iaM3bslUVN+lndqZzyf7XZXkIz\r\nI4zKEt2f0IkOa+m9AK9E9IZgPSNMT2TvKebuxsnKjvgaBu/4rCYIb2nJhicU\r\nRicW82zkSHDiUppQ4mROsDDRgD6AZPiTF6TgnQGX8IwaRSTNjyIJXNIICQqK\r\nhOLZ0/Df1rscvSMtkJs/1RcLLJh+0k3j9Z4=\r\n=15cl\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.1ea3b4c.0_1670445037602_0.1344580838425875"},"_hasShrinkwrap":false},"2.3.2":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"2.3.2","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.15.0","@babel/plugin-transform-flow-strip-types":"^7.14.5","@babel/preset-env":"^7.15.0","@babel/preset-typescript":"^7.15.0","@types/create-universal-package-env":"workspace:*","@types/jest":"^28.1.3","babel-jest":"^28.1.3","create-universal-package":"^4.3.0","flow-bin":"0.131.0","fusion-core":"2.8.2","jest":"^28.1.3","jest-environment-jsdom":"^28.1.3","typescript":"^4.9.3"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./lib/index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"2.8.2"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","lint":"yarn g:lint","prepack":"yarn tsc -b && cup-build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-2.3.2.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@2.3.2","_nodeVersion":"16.15.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-nkz3ARkbNeMfJWJ7nsBJxj1nQpQMACJfCJboIzEj085Im80wpuCzlJWgH5n3sOXaYQiY7afKUvam3LAELB4G9g==","shasum":"ac5f3361123f98626e627f1ef86f49582357c956","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-2.3.2.tgz","fileCount":14,"unpackedSize":28240,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDEHteFewRfOZohuSiz31cEfefudXvvCmmBD6Xq5KaR9AIhAN5mnUfOC0rWKXZtW1n0mVcKZb4/Bt0Y+6B2Pd9rUwaO"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjkTOuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqF7A//brgSMLQ5H6FH4gle1LpXcDcETeslh8zrnvKB++3ZU1KN3iUY\r\n29W79OiSVmUF5CJEwXIObMTMGDJjH4nLr0tuiS+hy2EiVCDWlz6Lc9vRjjZ9\r\nbNMGOSz7zTvPVT9Bz8VysEHsGWXsU78f2rCitgRP8BB9o4JcHIRSTOjaRrC0\r\nJ0rjG5AuA1dFgtmBthk+gQ92F1Th3zq0RDNG0+uiyT7npRdRo8IY44/5uudw\r\nTck5GRoP6E8ZhO27dAZba61yxf5y3sbht7DgLIcIuH0tgEB9qYWwP/PGTlxR\r\ns9TnkffA3HfTdB3Wk2I64YqHRZ05Xm3QjhZ+rqh6+EZ/GTsbiWdTmbowY2zN\r\nE1280smpwho3JruSUfeV192SDR0HtguYQK6xC6xnvi8s0BYsohCb7/GrKOyL\r\nCFHpepf2fb4XM3b53w6/JcBi4YP0ZNVrxE285bNRPC7iQEtUrqIidJjHPvri\r\n30pab8HKNjCyuJzuG7MvFYmqAC+G89XIu0PlRCf8Jn+cbMaklB+mJual/dBd\r\nUW7pNq9riqO3Gd2gnYcP+rCTEsTIoFtFk8b3Ppgw4wMp35PKaAUISfSqvO3z\r\nbUbQJgE9IpN8ZnvAqnOmd37diTQPp2zA6Pz1E5w9Rc19eG9FOyYtF/c08RuO\r\nx4bsEQQSHXpMiSrcpTWsuwGxBll0174qSas=\r\n=m7hf\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_2.3.2_1670460334174_0.3527652300326194"},"_hasShrinkwrap":false},"0.0.0-canary.f1ab874.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.f1ab874.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.20.5","@babel/plugin-transform-flow-strip-types":"^7.19.0","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@types/create-universal-package-env":"workspace:*","@types/jest":"^28.1.3","babel-jest":"^28.1.3","create-universal-package":"^4.3.0","flow-bin":"0.131.0","fusion-core":"0.0.0-canary.f1ab874.0","jest":"^28.1.3","jest-environment-jsdom":"^28.1.3","typescript":"^4.9.3"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./lib/index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.f1ab874.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","lint":"yarn g:lint","prepack":"yarn tsc -b && cup-build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.f1ab874.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.f1ab874.0","_nodeVersion":"16.15.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-eJk8EZWHqbhdSovXBgWl1CrIqh3n4AB1a9PDoZNbasumMWVMpkfcJrSRxoLvb0wkjn/xV7N3XLEkYI1NNfOB6w==","shasum":"328f4c1fa2943c65599af5dcddf689246044899b","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.f1ab874.0.tgz","fileCount":14,"unpackedSize":28291,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCKrWcNGr577I/8ymZDzWkEq1PMPwjkBbXd3XOpTu47IQIhAIhkieqw0+ezy8PtiqvGVQa1Bmeon9OPNwGCfSscNPHd"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjl4nPACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpQog/+OyNX5JfaG/kalRk5gY1J/vCaC1C8Lt7Ns5DY5U71eeetogLQ\r\n+rIAumejTMEb4X7IXeP9AWejI9WDsRPtzEQAdT6krCUTd22VyXeXJvQHT/s3\r\nLQ0SxKKuprZ6nTQkIEFxJ2HI0whBQH4Fkg2vR0G3DitbyNcAMrtGAtPe2umI\r\nguEYxR8PWRhx5cjomlivFMVlrQUZ68nGHrI3behBrW6h6Xcd/Zuejaykr26C\r\nrvLP/bgM86wNy3gN3FID6W9SKngDVN5ymHVD2RQDkRv1WS+7fmgPlQ7D5uSP\r\n14XmOyoCMaUHUndUdwkCP5Rq8mqr38CB7FUun1jFAG7jfd7BkMjEFAI5PvkD\r\n7A1uOKUE3vIY5t3o/Z0GjaDvND/NA7rO63i5rYAkx7xjbYZlNstS7ifoNznP\r\nSspoPJT1jZdOGK1ZHOwG5vwkuT79LNbptIx5tSiOTYyUYfxjndZm/4V++iwd\r\ncCWZhxJxF7uBfJ/NZJBt3QglF8sHzZJhgSZ+/tc0BgaQpwPQrvrSq3kFKsWB\r\nYOaPjqeDt9eTUwmgxnZ0V/zlO4a3ykc/LHPt+gcjGAiUMt/47FgeYLNsCVx5\r\nNlx575OANcFrU43JJIqGiOmhlrJSvmz0Xk6tbj3GAE4ntc9vY5l+eoSWKGih\r\ndqj4Lpsg0MfemTZKtBJrnW2coHmC8I3SOXM=\r\n=w0rQ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.f1ab874.0_1670875599562_0.413383295603138"},"_hasShrinkwrap":false},"2.3.3":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"2.3.3","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.20.5","@babel/plugin-transform-flow-strip-types":"^7.19.0","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@types/create-universal-package-env":"workspace:*","@types/jest":"^28.1.3","babel-jest":"^28.1.3","create-universal-package":"^4.3.0","flow-bin":"0.131.0","fusion-core":"2.8.3","jest":"^28.1.3","jest-environment-jsdom":"^28.1.3","typescript":"^4.9.3"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./lib/index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"2.8.3"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","lint":"yarn g:lint","prepack":"yarn tsc -b && cup-build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-2.3.3.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@2.3.3","_nodeVersion":"16.15.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-ZpetKsvtxp8kw1s5jrCrdgEFz9tNfhMusIoya0h1HSU/A0BsM+HfBhDpL8zozmy5qYGmbCgeJrwzxt2dc7n0PQ==","shasum":"c2078ad9fc8739d82da6c05527a495938d8f8745","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-2.3.3.tgz","fileCount":14,"unpackedSize":28240,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCzpIgqeWcFJm2B5N2n1u5YAz6OsodZbcClgt6RPUlm2gIgINt/yQb5UQ2iv/6orOMA8Rx9+CbxD4ec9E3SfwJuCJA="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjnPL0ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqtJQ/8C6sjdKgbOq7z01/Kk+ixpJ8di67j/WHyWYhxvcCMvdV8ELes\r\nJ9S6m6CiUn/7iqEzLRJvjlbDGR/Nm3bkAF5uuIVBkBQYmTOp7ACUm57/wXMi\r\nRozgyH6zr7y0CTOIBRENjW4CK7YKRGmCbAnu9I8rOI5DDpPwBvBipaN3Bq7h\r\nx/vCFj6/j7tubnkXyWDryVCpI4KaEa+K+0UJPu0BVTkPHRNJ+dNhb9EdCX8u\r\nKcSBTvr7eGDSjBEM6JfZknBKmJCgUGWxeVWKqVBbDzMJ0LPbT7sEiP1ZdgYB\r\nddfLuwEMhzdlZoBqII3E7QCN2jY+wZgNkidGfPQd5qnVCqToDmti6rd9eoEz\r\n0YCalYPLCOfCv+jf+BXQL+sybWKjM9KxPavDAHzOOHchrdogPoj/wJoADEt1\r\n05rvpkn8V33MWO93jNA/1hXJ8p+g946Wn6OMPczMvirpBcjQYmCBIZEFN7+y\r\nTb5sLFoHed6JAvoWlyifik6nMdNki/uBBcxWNsW8Mj0trLsDyFzvLhd+DqEU\r\nv9bvliKfukLwj9PSeCitJZNy3BW5CG16NkrwQtI+NdunsN32s+WXOxB7P3r/\r\nS/GZn3n7gIsJT4blyi2AJ2oMGrlnHuygcDWoblQt0c8O9k5ACsQL4q3D6MIv\r\noK4Yq/YFedX+pnCFmi+97+jmZLEvnEpKqT0=\r\n=2Gds\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_2.3.3_1671230196235_0.9955238235624102"},"_hasShrinkwrap":false},"2.4.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"2.4.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.20.5","@babel/plugin-transform-flow-strip-types":"^7.19.0","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@types/create-universal-package-env":"workspace:*","@types/jest":"^28.1.3","babel-jest":"^28.1.3","create-universal-package":"^4.3.0","flow-bin":"0.131.0","fusion-core":"2.9.0","jest":"^28.1.3","jest-environment-jsdom":"^28.1.3","typescript":"^4.9.3"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./lib/index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"2.9.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","lint":"yarn g:lint","prepack":"yarn tsc -b && cup-build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-2.4.0.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@2.4.0","_nodeVersion":"16.15.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-EdR5ec3otS9ouqXVgQHYNg5kjhYShUW4S1A9GhLBBV228XVz40B4C/MjRHLDPArRo2ZUJVTqsf4Hg/OGAck3vA==","shasum":"8c04e06047c91fa3cebbd7fccbec3f600d046a1b","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-2.4.0.tgz","fileCount":14,"unpackedSize":28240,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICJV9qlMW8gcHzDWEHGnxR1QA+14DEPs5c7jp+4D4sheAiEA4I6iluHf2W+Xb9hzxI8iLBHyloOKlWXgXRUJJE2Mq2U="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj0H1FACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqERQ//UWgo9oNJtpQqxRvabAqgdeaemo84kQeJI3yoqSUQFwgHJe3M\r\nh8RJkiMUpZoLnKugp5mhCl6SKpO7B3MvZf9ics9GI0C9862XOFVXl4zhzt1i\r\n4Xxm+/y6FlZdQRIRjpVfEOX6gWYGNnUKaLOaywwPPTFvzXCK46oc0g8nh+ZG\r\nUFz/pkw0Dy7d+Jzo/JJY5W10Cegw7EMSTnwWd+JtGxbsSQIAdAOh7vBO1m3A\r\naAUJLy7DgWnHkFXKLYD2BucXiIkVEpl4WMmBcKCPaxqmwYygKkWF6Z65MqHM\r\nQnfRHB7NwBUrrU/ccBTNj8F42Z9/x0BzEMezy1Y1B8zDncKetQltGpgWpZWW\r\nEnIArn6VyN6hjXNa/TlTM3brxSfDdLCVlBCMtpV7bHELDSZBLuZ3G8LeadCP\r\nSIceVL0E6FSwjIGW5edBZMx+I59mVwAYm6kr+4iWed/aSceIJwhZJfySBifW\r\nh0iYm8muSJvblfKajI0pCcBetha9ooeHajpNEv0kCr/65X1O317bv0PG3hLg\r\n201H3ssukh7hJwNqQ2S2EwPo1zXfn2LQqeF6wtZpUPJzZ7xTk2nkU2Ba/+Ok\r\nKlVLtlG9rZ0Yud7gADTvUC1KZ4ZXMnx0fnsn5UIRK5a1Id3/mrbTzrChGkuQ\r\np4dGIH+tDayPS4uOs4V2yVpj0yEQ/JlF1HQ=\r\n=d8WA\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_2.4.0_1674607941034_0.2772418953941016"},"_hasShrinkwrap":false},"3.0.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"3.0.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.20.5","@babel/plugin-transform-flow-strip-types":"^7.19.0","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@types/create-universal-package-env":"workspace:*","@types/jest":"^28.1.3","babel-jest":"^28.1.3","create-universal-package":"^4.3.0","flow-bin":"0.131.0","fusion-core":"2.9.0","jest":"^28.1.3","jest-environment-jsdom":"^28.1.3","typescript":"^4.9.3"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./lib/index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"2.9.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","lint":"yarn g:lint","prepack":"yarn tsc -b && cup-build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-3.0.0.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@3.0.0","_nodeVersion":"16.15.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-l7gBOm6PVZI5i5UWEvma72thPmIwsuskkrCHk7VtMXocUlHbptzcRPdQxfVuoLJg2zYxDpGCSOxczobK9K5GZw==","shasum":"7da8993932b5a2e9438244ede317a20d994ab166","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-3.0.0.tgz","fileCount":14,"unpackedSize":28554,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDbhKEfOBr4vtt1bXW/k362+pFiniR05C8UE2XQm1/8WQIhAKFmIqBZo51ExDoJ4JuozcZ8tNdkkWS2eXkbOfa5+C0L"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj2tNlACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpKRw/+PR5C1BPd3Xl1XTy7pXyWKmtQOIJ0ZUdnriwBrk6qdDP3d3+x\r\nDYl2mioG6oqL5chyp+cinDx3++s/zVrbAzE1dHuazWQohj5riEp2OaAjcXlo\r\nsXdltMFJteyy57nC1HRcGrNPXAQ999CBRwaym6hF8U6AUXcCPlXiLFpFrNnJ\r\nDa3jMKXNEYSecQGI8xpQKETNUQnB9Y/1VRIgfCBS0JcwukSfxOrxg+C/8aXy\r\n7Q3njgKldbTnBxALl9z06ira+0kRuaiGs+e28Alwpe2qQf7niH7SJEw/G/aX\r\n42v5aJQh7yCeUjsXAWTGAKkMYNkhOAdXkneQ9RBv8d9ibemom/T0v9ZnRVut\r\n6FqKByUnvKRgRDjhUbUxBHUqVloqCz2BKKwcmTKK4s5LeV52hBZRPDNNTVR1\r\nUSIH2n5u0vSB3TA1tPZ44N8PmfVGgKKUG1slkN2KkMZVJR93BmFbIelG3P50\r\n9LIaTizMbIlwDyqO1DJZWw2MMO1GXqA4nYmoIfhSI6RWPXPZzGw+bCqUSuEM\r\npMsNiUvqZik/qZuPzQA2VFxEjok6YkUQZJXvoleXkl93vYB6oZNU2wdHaZ/+\r\noR6Kw630Q4XBbNkEIR70wawzEq3062K5+1TNyniy3IapO98ftAdutuCIZd2u\r\nj/nqevfjqzc6gqiN1vO6W5I2DPtrdjRy16U=\r\n=h997\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_3.0.0_1675285349701_0.9986012141561598"},"_hasShrinkwrap":false},"3.0.1":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"3.0.1","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.20.5","@babel/plugin-transform-flow-strip-types":"^7.19.0","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@types/create-universal-package-env":"workspace:*","@types/jest":"^28.1.3","babel-jest":"^28.1.3","create-universal-package":"^4.3.0","flow-bin":"0.131.0","fusion-core":"2.10.0","jest":"^28.1.3","jest-environment-jsdom":"^28.1.3","typescript":"^4.9.3"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./lib/index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"2.10.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","lint":"yarn g:lint","prepack":"yarn tsc -b && cup-build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-3.0.1.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@3.0.1","_nodeVersion":"16.15.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-WElJT5uFKTshlYPyFDagduJQyYE6N8RIkcSLIzLCbWdCVctCzw5MBRGSTVHOqs5tUshDAzVYvTm/eKS7AARQvQ==","shasum":"b37d706e7dc7e6e6d7dc480e20601e7aa885bdcc","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-3.0.1.tgz","fileCount":14,"unpackedSize":28556,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDniBa9P4mGScio4MvC74fIvMyDi4MUC/sGbLvJzSacmgIhAPpprnljC3nyvHUVD42F5xWMCNhPpcjbQa4UWCE6jydY"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj5E7pACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoVoQ//V6bPoDfVBYP8olMl1uEpOlvctl9CTYwlQtiq+7EkV4ZOii9q\r\n4ZDm1xT6ew508cob6x+Ikj61t8bH8/U2Ic63qi50rZO57f+1jYTtbdFnIBbc\r\nTQySTZDiO2SB5dqy+dNUdtfYJG2zbm1p5SqzZi6noA5NzGGNscKbhxCgBLep\r\nPXFQkYBfRPFyPaDv4wo6NfEUw7Oo63u8kyGIQWxz7dANOM9aUYV8n2L6SDV6\r\nt5lp0ZtQ8QIb5CKl8dok0ZY6PDk7SKWK7bixnzeY1na+WOv1LptamStJ+0VH\r\n8e0TMDTHyAgp2dCvFaz9LI+K3/3SXx3zZukOdBx9JNC7fWDGxTMIRw0z+YaP\r\nAWdP73o2wOc+akOUiMgVIqyBmwnsPDFPlde5A2pQQoG5QM3dvimduMioWlyG\r\nbylhBYK4g1AJTvzQXcBorbwL/XidFkfsBm8a+qj17HFIQ8F2oSo0Ml8vhtFl\r\n3Url6tXjkLqjWeo7ZavmFfEu8SoqSCvs0c/kkY0RBL3Bjk4KZgAhiYYpHO2r\r\nwphAfDSw07h/i76iNYCQkj4j6xzRcJStiL8taIkRtcH9Xp9d/P63e2FCYvOo\r\nziY26tvdEtAN8XGTLZ9KYDxjKlmKSwryPyCsG5Um9hHFo5FgiraFM4uShnMf\r\ngZZJNexepOyHnq8CfLV5L5Wa7YqajPv5pbA=\r\n=BjeO\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_3.0.1_1675906793344_0.7407990979412227"},"_hasShrinkwrap":false},"0.0.0-canary.1cbe20f.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.1cbe20f.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.20.5","@babel/plugin-transform-flow-strip-types":"^7.19.0","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@types/create-universal-package-env":"workspace:*","@types/jest":"^28.1.3","babel-jest":"^28.1.3","create-universal-package":"^4.3.0","flow-bin":"0.131.0","fusion-core":"0.0.0-canary.1cbe20f.0","jest":"^28.1.3","jest-environment-jsdom":"^28.1.3","typescript":"^4.9.3"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./lib/index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.1cbe20f.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","lint":"yarn g:lint","prepack":"yarn tsc -b && cup-build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.1cbe20f.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.1cbe20f.0","_nodeVersion":"16.15.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-IZTpj5EHesEzRn6O4No/1aLu6WEZVBzT/bvKIkAHX172uZX8OGWjxqMnwBpWap1HTKhyc9rmtbHGN5iKZuFJUw==","shasum":"9d462fbe404ff1b74fbeb894fe724735b25655e2","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.1cbe20f.0.tgz","fileCount":14,"unpackedSize":28605,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEBwbkvREJBVSy0puNw2Cibeq8Nm5JnbNStJDlBmtp4TAiAlKH9Mw+w2TUmHKoYqBLf2FJ1aLl6Km6wr07X0BWTmpw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj8BU0ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqgnA/8CWb0kyURQgne6t94kHX8i4BXqEIHbzuCjS9hQWVJXsJiKHVj\r\nyi4KR0kK/KgDyA0kHtaqJ4h2puFMxCwnCytr1BFS0J2+2hXJX+GO6CZGtqp5\r\nFIrtN4FAU8889zzD6/mDprDo9sRdM3cr3fW2CxPnyqjFT3AdTEhB3CKKF4F+\r\nhmLdamrslDbD67pPdyfGivRt0WW1WHMpdHXh4hVLXeKhGeRzPZR7NDpmgeCk\r\n3Yrr1iK+FzACx0uSJNns0WHRTy8d3sEA3PU4nvSR6tYUKxVceom2iDC+T0Lk\r\nDDPZKyN0sHBK3kBoaWIMwoUrtltZTYWWi4ZQTQZWwpGLNCnnbYXSEuInpY8O\r\n833aauENnxdkCFQfaW0ROlxE5jheEVz/HG4NqyBoB10ICQYSq1QhtfeO6Pra\r\njyBXldMq/CIjUUBn0pD0/raoxxQVHvVDfFsDDd5gic1vPPc++C9Nzz9Au6K0\r\nMb++skA9n4CjGpA0NmumuDJl8GaYEMmqL6s3P0H5EdOj0Rkihe4D3AKBxDZv\r\nuxAIsfNCdr86oUKCEZyaZhUUtinda9F5PYVumhLxq6ci4evAz0LupGwoFbpd\r\n1c+vaYXIKuUD/mfsn3N904OneXI8x1NE4dASIxnh6SDQYNyDEVOolxEU3Y6t\r\nILwhNhBMgZEplNeOKXLX3mRxDPr0mQPrjU8=\r\n=vWTu\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.1cbe20f.0_1676678451808_0.3652425970456985"},"_hasShrinkwrap":false},"0.0.0-canary.52f9d6c.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.52f9d6c.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.20.5","@babel/plugin-transform-flow-strip-types":"^7.19.0","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@types/create-universal-package-env":"workspace:*","@types/jest":"^28.1.3","babel-jest":"^28.1.3","create-universal-package":"^4.3.0","flow-bin":"0.131.0","fusion-core":"0.0.0-canary.52f9d6c.0","jest":"^28.1.3","jest-environment-jsdom":"^28.1.3","typescript":"^4.9.3"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./lib/index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.52f9d6c.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","lint":"yarn g:lint","prepack":"yarn tsc -b && cup-build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.52f9d6c.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.52f9d6c.0","_nodeVersion":"16.15.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-8k2RcFqNJo8A//mXl380zXYWceDITzyres+JcBe+3o5SPJU5Fshpby35RbfsIm301X5Z6GVqn6fp/QjKuoJZHw==","shasum":"b24973109e87f6ab7e1c7366ee26fba4a4478b98","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.52f9d6c.0.tgz","fileCount":14,"unpackedSize":28605,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDNUfA8FSXjIE+UxyLrwsM56S+0boq7hkQC5V7eWRVavQIgXBNponU0xsSnririUlYYLjm2SvwWuLFl4jT4/Pt325k="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj8DZXACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr01RAAgS1uA+Q4iHTs1ERLxfQjkBA+xNAg//oBPIzcsTRPRdCYsWV8\r\nwSSkB8lkZfRIYzuvvXhRC9HGDlFGOBSMsQ0zbIBCLCCjWPiaGpY7mWkTQsa8\r\nhMtc1RO8xB4wWV7PTy8qlPHuD7FSOB0pn/1GqrGwtzuYhROUfusrLEnZJnP6\r\nz76LuAm8oyB5md0p7Kiw28cf/ffxDcuwElhi4P/z+3pHfOLP6W1t5DuxKjqJ\r\nMkWa7ucO3VgwCdbTep5GwTrfIn8HPHWJhdN1F7RJH/heUtVM6QO14itRi4H4\r\nOalzhJEdlvyHa/unqzlKTroeTqh7pHaVGxVzW/7f71j7Omy+vVtPfaRmdrFQ\r\nIzs4WjWnqe4TYM47krRDxVgBlnnLCczT2W3AkmMt4/9vGOrG4Gys42mze6jf\r\nxKjXe9NPuAiLmMeH5fQ24B66e9Xw83yyRD9ZV9IwbxDsn73K8DYMMYFmhP+z\r\nUWXeTdP8r4cEA9NpPF57CxUUW1lRcxAeCOYHYGxLsVKlL1o20k9TQcaYvc1C\r\nddUyAa1Zsw8XK1M72oDshfr4/JWljsEVwkO5Ml/ZyJEGw5WKyU5CNFY0ikwg\r\nMWAaiCb3WKYMgWM1NdNe3e7FAcQqmtZbq6M75OWAkc/PQsrPHKXbZdAnMsjq\r\ntLHgHOJd339VSPVw7S1nR19PYgQd89FJxxQ=\r\n=oVm7\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.52f9d6c.0_1676686935117_0.7912726979608242"},"_hasShrinkwrap":false},"3.0.2":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"3.0.2","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.20.5","@babel/plugin-transform-flow-strip-types":"^7.19.0","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@types/create-universal-package-env":"workspace:*","@types/jest":"^28.1.3","babel-jest":"^28.1.3","create-universal-package":"^4.3.0","flow-bin":"0.131.0","fusion-core":"2.11.0","jest":"^28.1.3","jest-environment-jsdom":"^28.1.3","typescript":"^4.9.3"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./lib/index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"2.11.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","lint":"yarn g:lint","prepack":"yarn tsc -b && cup-build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-3.0.2.tgz","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@3.0.2","_nodeVersion":"16.15.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-h9EAKABc0aJZaUXg3igMOYqQke3Nu1m2fWdkUjJT2fcuEp75Xw6DCx6ugmE+iIYIG8dWcxJ8hPy2JlniENjh1w==","shasum":"2afa888f0e53c7f760585466772fe2768b534498","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-3.0.2.tgz","fileCount":14,"unpackedSize":28556,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID/bNsVxxOtf1B6sVqqzj/doofeQiY86/Bq7W6c6Zmf1AiEAtreNGgHqR4pk1tcgbKG6Z0tMfGyU9TSV0+6WgTno3JU="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj89sgACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr3WhAAoBkbap7mWekPtNUZNfnBYV//pdsW4YdJEDL4S+qtO3KuIDRS\r\nPKqIw05WVZU4frcDh38yLw2Q0yM/cAL5d3fPLew5REnHxSPkE/ArcXUX9erk\r\nynKcQkO3mx5MAZu1WJrWjSrBo/ZSctOmC2TK/4xqHKAJWiza9q6JGEQLJiUa\r\n5tgqdmekqp90JQFuk8zr6BY71CP+nukNs3ZRhQ+ujnBrQhlsXxI1KSZbz3bG\r\nW9Np8GyvB4auTW+xYiDEP7QqwBqTD2yrMB4D09JGIxpT0mYQw+MdCdyW8Ys0\r\nWcWwmsI6MjRgebu5kvoQLYqSL2ZzoLHYE6f/v+aBkgAOdHDtknmS4dMbpqQQ\r\nkUlfwePsdBad8975KUJOaLziRT3tg0FUEC6sIj7H/UgKsGubTV0P5ebvn9Vi\r\n40D6Q4vdFmbSOjbesXqlqPIq9a4kE7t4wXcPcSgX6P+8p28oDbFx/qlfpibA\r\nd3OOm7qbZcIbUydcb1txmHPHTRME3KKzgf5jNTyk+rdyaVKeD5P1JRk+nHPr\r\niFbx3MX0jISkRIeOOA/cUfLQSqpTjm4dSK+wUyte9MOEq6sbgIZxpenlzEe7\r\ncYXRXWLLaQMPC0mHu/VaGqPk8i5D4oWxCaFrmPr9yE4vPYlay8qH0bWMYikc\r\nae0mgVitrs+EoGgO8RXYhhzsXZ3sVkdsn+o=\r\n=i8O6\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_3.0.2_1676925728270_0.10583845983966578"},"_hasShrinkwrap":false},"0.0.0-canary.ca778ef.0":{"name":"fusion-tokens","description":"Dependency injection tokens for FusionJS","version":"0.0.0-canary.ca778ef.0","browser":{"./dist-node-cjs/index.js":"./dist-browser-cjs/index.js","./dist-node-esm/index.js":"./dist-browser-esm/index.js"},"devDependencies":{"@babel/core":"^7.20.5","@babel/plugin-transform-flow-strip-types":"^7.19.0","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@types/create-universal-package-env":"workspace:*","@types/jest":"^28.1.3","babel-jest":"^28.1.3","create-universal-package":"^4.3.0","flow-bin":"0.131.0","fusion-core":"0.0.0-canary.ca778ef.0","jest":"^28.1.3","jest-environment-jsdom":"^28.1.3","typescript":"^4.9.3"},"engines":{"node":">=8.9.4","npm":">=5.0.0","yarn":">=1.0.0"},"homepage":"https://fusionjs.com/api/fusion-tokens","license":"MIT","main":"./dist-node-cjs/index.js","types":"./lib/index.d.ts","module":"./dist-node-esm/index.js","peerDependencies":{"fusion-core":"0.0.0-canary.ca778ef.0"},"repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"scripts":{"clean":"cup-clean","lint":"yarn g:lint","prepack":"yarn tsc -b && cup-build","test":"jest","view-cover":"npm run cover && open coverage/index.html"},"sideEffects":false,"_resolved":"","_integrity":"","_from":"file:fusion-tokens-0.0.0-canary.ca778ef.0.tgz","readme":"[![Build status](https://badge.buildkite.com/7a82192275779f6a8ba81f7d4a1b0d294256838faa1dfdf080.svg?branch=master)](https://buildkite.com/uberopensource/fusionjs)\n\n# fusion-tokens\n\nDependency injection tokens for Fusion.js.\n\nFusion.js dependency injection is based on tokens rather than strings. This avoids naming collision issues.\nThis package provides utilities to create named tokens, as well as common tokens that are used by packages maintained by the Fusion.js team.\n\n---\n\n### Table of contents\n\n* [Installation](#installation)\n* [API](#api)\n  * [FetchToken](#fetchtoken)\n  * [LoggerToken](#loggertoken)\n  * [SessionToken](#sessiontoken)\n  * [CacheToken](#cachetoken)\n\n---\n\n### Installation\n\n```sh\nyarn add fusion-tokens\n```\n\n---\n\n### API\n\n#### `FetchToken`\n\n```js\nimport {FetchToken} from 'fusion-tokens';\n```\n\nA token for a fetch implementation.\n\n##### Types\n\n```flow\ntype Fetch = (input: string, options: Object) => Promise<Response>\n```\n\nTypically, [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or a polyfill such as [unfetch](https://github.com/developit/unfetch).\n\n#### `LoggerToken`\n\n```js\nimport {LoggerToken} from 'fusion-tokens';\n```\n\nA token for a logger implementation.\n\n##### Types\n\n```flow\ntype Logger = {\n  log(level: string, arg: any): void,\n  error(arg: any): void,\n  warn(arg: any): void,\n  info(arg: any): void,\n  verbose(arg: any): void,\n  debug(arg: any): void,\n  silly(arg: any): void,\n}\n```\n\nTypically, `console` or a logger library such as [Winston](https://github.com/winstonjs/winston).\n\n#### `SessionToken`\n\n```js\nimport {SessionToken} from 'fusion-tokens';\n```\n\nA token for a session implementation.\n\n##### Types\n\n```flow\ntype Session = {\n  from(ctx: Context): {\n    get(key: string): any,\n    set(key: string, val: any): void,\n  },\n}\n```\n\nTypically, the service provided by [`fusion-plugin-jwt`](https://github.com/fusionjs/fusionjs/tree/master/fusion-plugin-jwt) or a custom wrapper around similar key-value store APIs (such as [Redis](https://redis.io/)).\n\n#### `CacheToken`\n\n```js\nimport {CacheToken} from 'fusion-tokens';\n```\n\nA token for a caching implementation.\n\n##### Types\n\n```flow\ntype Cache = {\n  get(key: string): Promise<mixed>,\n  set(key: string, val: any): Promise<mixed>,\n  del(key: string): Promise<mixed>,\n}\n```\n\nStandard API for caching.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"},"_id":"fusion-tokens@0.0.0-canary.ca778ef.0","_nodeVersion":"16.15.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-JMrRuUqy+o3ZZkRunC+85KIHivISpMgGiX/eFRh0TbVKBmx4Er8QDZCRUVic9peG4qI+wH/Z+WBWNCIj7BRttw==","shasum":"960df7621ffdb5f3c753a556edca2bf9782d291c","tarball":"https://registry.npmjs.org/fusion-tokens/-/fusion-tokens-0.0.0-canary.ca778ef.0.tgz","fileCount":14,"unpackedSize":28605,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDJPJHiEVMYnVriWL33bclbnpMxJ3hAfF34hD2KqgpXcAIhAIPqfPKYcs7x3Tk5SmcFnHJXpu8egZqfnV1SbvrvOks3"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj/9Q6ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmozVA//Rv2v4wMCY3bth8lZlDN2xPlnpFb90ItLWbKKjflZnamA6eqR\r\nzOChuEBpo7EIxjJXEApTSAasqX6RYPHEaLI9t/dxoqK6m8nzqdtwWREJN2wb\r\nu8W7P1YUNejKVizvvr4CKtLjh1hw0SCe826l9zB1h+sDrfPS9GtnDsyz4yYP\r\nthHYG/FKpBENO60/IE2wlnIA4gFm0xsBUN4/2Wp7YqjJhE01RMI4dVVUuMay\r\nE9V0yLUYn5m0HiOHdI0gfjc5Yq1I82AU9JOEauXY/TJzQG1GeZdha7LW3+A8\r\n1TUx2kkkWoEz9VFq2/CB/PVKyajjTmfTxX34so/fYOOUqVFXOXLjCKSrALyx\r\n6R5cCs0lFI+z993HIteERXg5LPeXxCJNG8533Pb3CRK7rkB5VlLl0golbEuC\r\noAucK7WYZinIUrir/gUyQpvuwy9Gb6uyyVF1cL9Qausx90Q5kmzGxLX4UdLp\r\nNUA9TRvE4APcipuK6eS8In4wAabKCJkhvd+jpbF/wP/8i5Lsy3hXhXqiTh9F\r\nsH4KV0Juw/tzV/yFITAYLD9fwK7yU7c4FZnolc5OmxivD2XGYsrPiUZEaVtH\r\naZLuZiRNS4is+cMqPzwk7ocSGKaXYC8xqRrPLLDAh/OvxY9NYr83FoRPEkpZ\r\nCalS8iDEwsxRYnuy0e76LMEC4GGytrg0I3I=\r\n=fyIR\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"fusion-ci","email":"fusionjs+ci@uber.com"},"directories":{},"maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fusion-tokens_0.0.0-canary.ca778ef.0_1677710393966_0.6622849089089335"},"_hasShrinkwrap":false}},"readme":"","maintainers":[{"name":"fusion-ci","email":"fusionjs+ci@uber.com"}],"time":{"modified":"2023-03-01T22:39:54.266Z","created":"2018-01-09T23:50:52.432Z","0.0.2":"2018-01-09T23:50:52.432Z","0.0.4":"2018-01-10T20:13:04.862Z","0.0.5":"2018-01-18T00:43:33.774Z","0.0.6":"2018-02-02T00:00:00.066Z","1.0.0":"2018-02-09T22:14:58.502Z","1.0.1":"2018-02-12T18:46:28.436Z","1.0.2":"2018-03-02T01:35:54.285Z","1.0.3":"2018-03-22T20:16:09.777Z","1.0.4-0":"2018-06-29T18:14:18.910Z","1.0.4":"2018-07-04T01:01:36.895Z","1.1.0-0":"2018-08-24T22:02:53.930Z","1.1.0":"2018-09-05T17:45:23.173Z","1.1.1":"2018-11-13T01:21:26.705Z","0.0.0-canary.309a1d1.0":"2019-05-23T00:50:39.474Z","0.0.0-canary.309a1d1.1":"2019-05-23T01:30:34.253Z","0.0.0-canary.9941505.0":"2019-05-23T01:52:06.097Z","0.0.0-canary.3811188.0":"2019-05-23T22:45:25.182Z","2.0.0":"2019-05-23T23:01:12.027Z","0.0.0-canary.872b547.0":"2019-05-24T17:11:59.348Z","0.0.0-canary.fd5a750.0":"2019-06-06T18:34:02.488Z","0.0.0-canary.4e310bc.0":"2019-06-06T20:06:14.930Z","0.0.0-canary.5bf099f.0":"2019-06-06T23:33:43.325Z","0.0.0-canary.2fb1140.0":"2019-06-07T18:00:28.448Z","0.0.0-canary.d9a277c.0":"2019-06-07T18:23:28.700Z","0.0.0-canary.9b5e4cf.0":"2019-06-08T00:41:20.513Z","0.0.0-canary.43352f4.0":"2019-06-10T18:54:03.131Z","0.0.0-canary.43352f4.1":"2019-06-10T18:56:04.256Z","0.0.0-canary.4fb3fa6.0":"2019-06-10T19:02:36.381Z","0.0.0-canary.4fb3fa6.1":"2019-06-10T23:29:32.710Z","0.0.0-canary.72a6835.0":"2019-06-11T00:24:56.262Z","0.0.0-canary.af0fe55.0":"2019-06-11T16:56:31.464Z","0.0.0-canary.af0fe55.1":"2019-06-11T18:19:19.769Z","0.0.0-canary.1131efb.0":"2019-06-11T18:37:54.672Z","0.0.0-canary.2fcf0b5.0":"2019-06-11T20:16:22.638Z","0.0.0-canary.2fcf0b5.1":"2019-06-11T20:21:05.533Z","0.0.0-canary.c237758.0":"2019-06-12T00:17:21.250Z","0.0.0-canary.8c0849b.0":"2019-06-12T03:22:36.864Z","0.0.0-canary.0b1303b.0":"2019-06-12T16:48:09.962Z","0.0.0-canary.7cfc88b.0":"2019-06-12T17:00:41.761Z","0.0.0-canary.b7caf15.0":"2019-06-12T21:04:17.486Z","0.0.0-canary.b7caf15.1":"2019-06-12T21:24:04.563Z","0.0.0-canary.8ae44a5.0":"2019-06-12T22:18:00.198Z","0.0.0-canary.8ae44a5.1":"2019-06-12T22:24:15.990Z","0.0.0-canary.51752cd.0":"2019-06-13T00:10:45.149Z","0.0.0-canary.27245f3.0":"2019-06-13T17:38:28.097Z","0.0.0-canary.3703af8.0":"2019-06-14T03:02:33.543Z","0.0.0-canary.3703af8.1":"2019-06-14T15:14:28.851Z","0.0.0-canary.d93b398.0":"2019-06-14T16:34:36.063Z","0.0.0-canary.d0b5703.0":"2019-06-14T21:46:09.541Z","0.0.0-canary.801e47f.0":"2019-06-17T16:24:20.082Z","0.0.0-canary.63145f9.0":"2019-06-18T00:15:25.948Z","2.0.1":"2019-06-18T00:35:23.294Z","0.0.0-canary.407b8e4.0":"2019-06-26T20:28:05.293Z","0.0.0-canary.ed79452.0":"2019-06-27T18:52:11.927Z","0.0.0-canary.3e2cc31.0":"2019-06-28T17:46:32.521Z","0.0.0-canary.5c3b351.0":"2019-07-01T21:36:56.823Z","0.0.0-canary.16ee004.0":"2019-07-01T23:14:02.066Z","0.0.0-canary.69d2497.0":"2019-07-03T18:10:26.563Z","0.0.0-canary.69d2497.1":"2019-07-03T18:14:40.001Z","2.0.2":"2019-07-03T22:16:55.174Z","0.0.0-canary.98adb08.0":"2019-07-08T22:02:01.975Z","0.0.0-canary.016f954.0":"2019-07-09T00:32:02.616Z","0.0.0-canary.1ddabc1.0":"2019-07-09T18:20:18.372Z","0.0.0-canary.1ddabc1.1":"2019-07-09T18:22:41.070Z","0.0.0-canary.40eb0a5.0":"2019-07-09T20:02:23.631Z","0.0.0-canary.40eb0a5.1":"2019-07-09T20:05:41.381Z","0.0.0-canary.fbfd207.0":"2019-07-10T18:24:12.261Z","0.0.0-canary.4c30d33.0":"2019-07-10T21:06:22.090Z","0.0.0-canary.e1e65f2.0":"2019-07-11T16:35:13.868Z","0.0.0-canary.4cb9c2b.0":"2019-07-11T17:11:24.430Z","0.0.0-canary.b0e5994.0":"2019-07-11T23:22:11.575Z","0.0.0-canary.50aa07c.0":"2019-07-12T16:16:04.676Z","0.0.0-canary.0a4669b.0":"2019-07-12T19:51:19.480Z","0.0.0-canary.0a4669b.1":"2019-07-12T20:13:16.645Z","0.0.0-canary.3b5ed2f.0":"2019-07-12T20:42:10.173Z","0.0.0-canary.db655de.1":"2019-07-16T01:05:09.765Z","0.0.0-canary.396f8bb.0":"2019-07-16T18:14:03.812Z","0.0.0-canary.66cfac0.0":"2019-07-16T19:04:32.488Z","0.0.0-canary.403f456.0":"2019-07-17T00:52:28.201Z","0.0.0-canary.ec8188c.0":"2019-07-17T15:51:06.247Z","0.0.0-canary.e9f07ef.0":"2019-07-22T16:54:38.182Z","0.0.0-canary.fc2bf62.0":"2019-07-22T20:07:32.030Z","0.0.0-canary.a8de467.0":"2019-07-22T22:10:12.904Z","0.0.0-canary.a8de467.1":"2019-07-22T22:16:05.714Z","0.0.0-canary.02195f4.0":"2019-07-23T03:15:28.824Z","0.0.0-canary.da2cfec.0":"2019-07-23T16:32:38.839Z","0.0.0-canary.14b4f0e.0":"2019-07-23T17:36:19.420Z","0.0.0-canary.0953f07.0":"2019-07-23T21:48:03.305Z","0.0.0-canary.471a10b.0":"2019-07-24T17:10:21.611Z","0.0.0-canary.9dc742c.0":"2019-07-24T17:11:08.729Z","0.0.0-canary.fbc7ca5.0":"2019-07-24T21:45:03.329Z","0.0.0-canary.08790d0.0":"2019-07-24T22:54:46.972Z","0.0.0-canary.17cfc1d.0":"2019-07-24T22:55:31.782Z","0.0.0-canary.d0e4cd8.0":"2019-07-24T22:55:51.684Z","0.0.0-canary.6499178.0":"2019-07-25T01:01:57.294Z","0.0.0-canary.47d3251.0":"2019-07-25T06:06:23.328Z","0.0.0-canary.1b63aac.0":"2019-07-25T20:31:09.378Z","0.0.0-canary.675492e.0":"2019-07-25T22:41:53.223Z","0.0.0-canary.a8af54e.0":"2019-07-26T03:06:41.915Z","0.0.0-canary.4a47f03.0":"2019-07-26T18:40:40.542Z","0.0.0-canary.88403d8.0":"2019-07-30T23:55:00.771Z","0.0.0-canary.96b08c1.0":"2019-07-31T20:35:53.633Z","0.0.0-canary.631e52a.0":"2019-08-01T16:09:44.993Z","2.0.3":"2019-08-01T18:01:32.029Z","0.0.0-canary.bdd94ac.0":"2019-08-01T18:33:22.243Z","0.0.0-canary.ca9c1e7.0":"2019-08-02T19:07:18.190Z","0.0.0-canary.36c6897.0":"2019-08-05T20:08:21.615Z","0.0.0-canary.87693bb.0":"2019-08-06T17:57:41.061Z","0.0.0-canary.87693bb.1":"2019-08-06T17:58:20.748Z","0.0.0-canary.73b3b7a.0":"2019-08-06T21:06:13.053Z","0.0.0-canary.3a6c203.0":"2019-08-06T22:19:58.472Z","0.0.0-canary.b30cfc9.0":"2019-08-06T23:09:20.159Z","0.0.0-canary.d1e11d1.0":"2019-08-06T23:32:43.981Z","0.0.0-canary.d1e11d1.1":"2019-08-06T23:37:57.063Z","0.0.0-canary.465e7e1.0":"2019-08-07T00:08:59.234Z","0.0.0-canary.465e7e1.1":"2019-08-07T00:12:31.224Z","0.0.0-canary.465e7e1.2":"2019-08-07T00:14:00.339Z","0.0.0-canary.bd48967.0":"2019-08-07T23:26:48.880Z","0.0.0-canary.aa5bec0.0":"2019-08-08T01:50:03.698Z","0.0.0-canary.4c8e718.0":"2019-08-09T19:29:26.985Z","0.0.0-canary.e3270dd.0":"2019-08-12T17:38:14.118Z","0.0.0-canary.73f956e.0":"2019-08-13T19:11:39.986Z","0.0.0-canary.1e7190d.0":"2019-08-14T23:18:28.836Z","0.0.0-canary.b102bb9.0":"2019-08-15T20:20:46.417Z","0.0.0-canary.ffb0ab3.0":"2019-08-19T16:25:58.005Z","2.0.4":"2019-08-19T21:21:24.309Z","0.0.0-canary.e2fcadb.0":"2019-08-22T21:22:32.325Z","0.0.0-canary.d767d28.0":"2019-08-23T18:16:14.867Z","0.0.0-canary.c189a42.0":"2019-08-23T20:26:58.686Z","0.0.0-canary.aa40d96.0":"2019-08-27T01:40:01.466Z","0.0.0-canary.a9d6e7c.0":"2019-08-27T16:58:37.693Z","0.0.0-canary.f608c58.0":"2019-08-27T20:34:29.477Z","0.0.0-canary.9d5ef83.0":"2019-08-29T17:28:49.069Z","0.0.0-canary.096185d.0":"2019-08-29T21:08:04.118Z","0.0.0-canary.d78b7bb.0":"2019-08-29T21:42:24.835Z","0.0.0-canary.2a2b83b.0":"2019-08-30T19:52:57.182Z","0.0.0-canary.a0f0132.0":"2019-09-04T22:51:32.135Z","0.0.0-canary.66d82db.0":"2019-09-05T16:34:01.992Z","0.0.0-canary.109b061.0":"2019-09-05T16:34:23.641Z","2.0.5":"2019-09-05T20:11:38.025Z","0.0.0-canary.413f404.0":"2019-09-16T18:34:56.061Z","0.0.0-canary.c0ad947.0":"2019-09-16T20:29:02.253Z","0.0.0-canary.ad6c873.0":"2019-09-16T20:44:15.220Z","0.0.0-canary.08011c5.0":"2019-09-16T20:52:46.263Z","0.0.0-canary.a27ac53.0":"2019-09-16T22:20:04.919Z","0.0.0-canary.ff793d9.0":"2019-09-17T00:03:54.713Z","0.0.0-canary.2925a25.0":"2019-09-18T04:40:28.306Z","0.0.0-canary.5cc0676.0":"2019-09-18T22:23:09.318Z","0.0.0-canary.34b9387.0":"2019-09-18T22:33:54.920Z","0.0.0-canary.49d4d79.0":"2019-09-19T22:56:38.012Z","0.0.0-canary.d4b0b6c.0":"2019-09-19T23:43:56.954Z","0.0.0-canary.5be6a00.0":"2019-09-20T00:25:25.081Z","0.0.0-canary.dd07585.0":"2019-09-20T01:06:48.562Z","0.0.0-canary.22593cf.0":"2019-09-20T01:10:47.087Z","0.0.0-canary.a911dd9.0":"2019-09-20T17:17:24.350Z","0.0.0-canary.67e33d8.0":"2019-09-20T18:28:11.809Z","0.0.0-canary.d787a1d.0":"2019-09-23T19:30:07.740Z","0.0.0-canary.a399454.0":"2019-09-24T17:33:01.233Z","2.0.6":"2019-09-24T18:36:12.881Z","0.0.0-canary.acb5af0.0":"2019-09-25T21:11:54.772Z","0.0.0-canary.d7c5910.0":"2019-10-30T20:43:40.382Z","0.0.0-canary.f12f055.0":"2019-10-30T22:08:57.382Z","0.0.0-canary.0b935d0.0":"2019-10-30T22:09:14.612Z","0.0.0-canary.37af1b2.0":"2019-11-05T05:25:51.672Z","0.0.0-canary.e3078c3.0":"2019-11-05T21:26:03.366Z","0.0.0-canary.f8e4f0b.0":"2019-11-11T19:13:01.334Z","0.0.0-canary.0af264b.0":"2019-11-12T01:37:56.910Z","0.0.0-canary.78c977f.0":"2019-11-12T17:48:55.477Z","0.0.0-canary.0af264b.1":"2019-11-12T20:25:25.787Z","0.0.0-canary.cdf3e91.0":"2019-11-12T21:05:00.260Z","0.0.0-canary.55945c5.0":"2019-11-12T23:57:32.871Z","2.0.7":"2019-11-13T20:26:40.622Z","0.0.0-canary.08a30a3.0":"2019-11-19T20:05:11.913Z","0.0.0-canary.602f682.0":"2019-11-20T23:30:44.365Z","0.0.0-canary.b4d0561.0":"2019-11-21T01:28:33.450Z","0.0.0-canary.abe8bb4.0":"2019-11-22T01:20:34.361Z","0.0.0-canary.abe8bb4.1":"2019-11-22T18:31:22.756Z","0.0.0-canary.f16f299.1":"2019-11-22T19:57:41.822Z","0.0.0-canary.73dfe8c.0":"2019-11-22T23:26:00.685Z","0.0.0-canary.9dca7da.0":"2019-11-23T01:48:49.407Z","2.0.8":"2019-11-25T19:53:47.542Z","0.0.0-canary.2dbfb1d.0":"2019-11-25T22:49:06.876Z","0.0.0-canary.777f2cc.0":"2019-11-26T00:34:48.328Z","0.0.0-canary.6e4e073.0":"2019-12-05T18:16:11.156Z","0.0.0-canary.b7558a7.0":"2019-12-06T00:10:30.218Z","0.0.0-canary.f55f645.0":"2019-12-06T17:47:28.577Z","0.0.0-canary.a1f34dc.0":"2019-12-06T19:47:13.968Z","0.0.0-canary.17b7929.0":"2019-12-09T21:20:08.497Z","0.0.0-canary.e266b31.0":"2019-12-09T21:25:18.897Z","0.0.0-canary.2e98cc9.0":"2019-12-11T03:41:48.017Z","0.0.0-canary.c4b78ee.0":"2019-12-11T20:20:00.626Z","0.0.0-canary.87d361c.0":"2019-12-12T00:43:02.509Z","0.0.0-canary.32cd5ea.0":"2019-12-14T01:18:48.796Z","0.0.0-canary.8057c37.0":"2019-12-17T18:08:39.229Z","0.0.0-canary.4d95fad.1":"2019-12-19T23:13:09.415Z","0.0.0-canary.39fc7dc.0":"2019-12-26T21:33:28.349Z","0.0.0-canary.549dba2.0":"2020-01-07T00:59:04.723Z","0.0.0-canary.69f275d.0":"2020-01-07T23:46:21.949Z","0.0.0-canary.1d2aed6.0":"2020-01-09T00:08:42.916Z","0.0.0-canary.7ed789a.0":"2020-01-09T01:18:35.623Z","0.0.0-canary.cd789cd.0":"2020-01-10T21:10:35.591Z","0.0.0-canary.ee6892e.0":"2020-01-10T21:57:19.426Z","0.0.0-canary.abffccd.0":"2020-01-11T00:40:10.236Z","0.0.0-canary.b94debb.0":"2020-01-11T01:20:39.008Z","2.0.9":"2020-01-14T00:43:02.768Z","0.0.0-canary.659c743.0":"2020-01-22T19:45:17.173Z","0.0.0-canary.df13289.0":"2020-01-23T01:53:57.453Z","0.0.0-canary.79c5c12.0":"2020-01-23T19:22:21.191Z","0.0.0-canary.3a8e24a.0":"2020-01-23T22:49:23.413Z","0.0.0-canary.55e2075.0":"2020-01-24T00:49:35.390Z","0.0.0-canary.294feb4.0":"2020-01-24T22:28:16.327Z","0.0.0-canary.5c80f83.0":"2020-01-27T18:56:08.793Z","0.0.0-canary.cdb104d.0":"2020-01-28T00:24:17.026Z","0.0.0-canary.1db323f.0":"2020-01-28T00:42:38.352Z","0.0.0-canary.aaaf2fa.0":"2020-01-28T02:27:42.130Z","0.0.0-canary.fed6152.0":"2020-01-28T07:47:09.634Z","0.0.0-canary.971253d.0":"2020-01-28T08:04:16.303Z","0.0.0-canary.659c743.1":"2020-01-28T08:52:32.106Z","0.0.0-canary.dcf8c03.1":"2020-01-28T23:02:37.748Z","0.0.0-canary.4fc2099.0":"2020-01-29T06:22:11.881Z","0.0.0-canary.2917daa.0":"2020-01-29T17:54:24.285Z","2.1.0":"2020-01-29T19:49:55.875Z","0.0.0-canary.97698d3.0":"2020-01-29T22:23:10.236Z","0.0.0-canary.69bc71d.0":"2020-01-31T03:00:24.262Z","0.0.0-canary.fa2f39f.0":"2020-01-31T19:20:10.833Z","0.0.0-canary.1d3504b.0":"2020-01-31T21:58:18.243Z","0.0.0-canary.2effc34.0":"2020-01-31T22:42:04.469Z","0.0.0-canary.deed5b0.0":"2020-02-01T02:16:26.602Z","0.0.0-canary.3088ca8.0":"2020-02-03T21:11:17.118Z","0.0.0-canary.9a71266.0":"2020-02-03T21:18:43.919Z","0.0.0-canary.9a71266.1":"2020-02-03T21:40:27.568Z","0.0.0-canary.9a71266.2":"2020-02-03T22:05:00.276Z","0.0.0-canary.d07e1e4.0":"2020-02-04T18:45:42.962Z","0.0.0-canary.05b1cf5.0":"2020-02-04T18:53:09.038Z","0.0.0-canary.986cea9.0":"2020-02-04T21:37:14.014Z","0.0.0-canary.b8a6237.0":"2020-02-05T18:26:45.504Z","0.0.0-canary.2c705b4.0":"2020-02-05T20:57:10.128Z","0.0.0-canary.4b659af.0":"2020-02-05T21:14:49.198Z","0.0.0-canary.96e8674.0":"2020-02-05T21:24:26.932Z","0.0.0-canary.96e8674.1":"2020-02-05T21:34:34.805Z","0.0.0-canary.96e8674.2":"2020-02-05T21:46:02.212Z","0.0.0-canary.b640602.0":"2020-02-05T23:18:54.649Z","0.0.0-canary.b640602.1":"2020-02-05T23:32:17.801Z","0.0.0-canary.2ef1293.0":"2020-02-05T23:52:03.699Z","0.0.0-canary.2ef1293.1":"2020-02-06T01:13:25.646Z","0.0.0-canary.2467727.0":"2020-02-06T19:11:50.999Z","0.0.0-canary.ccad833.0":"2020-02-06T19:50:11.858Z","0.0.0-canary.e70cabc.0":"2020-02-07T22:33:10.143Z","0.0.0-canary.ed74fa2.0":"2020-02-08T00:08:29.002Z","0.0.0-canary.b127562.0":"2020-02-11T01:17:44.164Z","0.0.0-canary.fee0408.0":"2020-02-11T20:48:04.912Z","0.0.0-canary.9dededf.0":"2020-02-11T21:45:32.105Z","0.0.0-canary.9dededf.1":"2020-02-11T21:49:51.905Z","0.0.0-canary.9dededf.2":"2020-02-11T21:57:23.397Z","0.0.0-canary.9dededf.3":"2020-02-11T22:00:08.993Z","0.0.0-canary.a0a3534.0":"2020-02-13T00:22:03.987Z","0.0.0-canary.513dcf4.0":"2020-02-13T00:45:21.409Z","0.0.0-canary.b276aaf.0":"2020-02-13T18:56:39.566Z","0.0.0-canary.a8e624c.0":"2020-02-14T00:10:59.104Z","0.0.0-canary.2661049.0":"2020-02-14T01:37:47.667Z","0.0.0-canary.2661049.1":"2020-02-14T01:46:54.105Z","0.0.0-canary.7eb4e1e.0":"2020-02-14T20:14:47.102Z","0.0.0-canary.5e59509.0":"2020-02-19T00:12:08.663Z","0.0.0-canary.062c690.0":"2020-02-19T01:42:48.537Z","0.0.0-canary.c9627c1.0":"2020-02-19T02:15:07.988Z","0.0.0-canary.48ddc5e.0":"2020-02-19T23:31:27.417Z","0.0.0-canary.119a885.0":"2020-02-20T19:01:53.778Z","0.0.0-canary.9908539.0":"2020-02-20T22:57:43.156Z","0.0.0-canary.5386f4d.0":"2020-02-24T16:24:18.244Z","2.1.1":"2020-02-25T19:04:23.764Z","0.0.0-canary.74cf916.0":"2020-04-09T20:31:29.877Z","0.0.0-canary.5a76e33.0":"2020-04-14T01:19:04.947Z","0.0.0-canary.8de64d7.0":"2020-04-14T19:51:37.924Z","0.0.0-canary.d9ad58b.0":"2020-04-15T06:35:24.692Z","0.0.0-canary.9049f58.0":"2020-04-16T04:17:21.903Z","0.0.0-canary.1f389e4.0":"2020-04-16T17:37:42.190Z","0.0.0-canary.952803d.0":"2020-04-16T19:07:14.886Z","0.0.0-canary.0813b9b.0":"2020-04-18T00:11:27.041Z","0.0.0-canary.0cd5338.0":"2020-04-20T21:47:49.068Z","0.0.0-canary.e8742f5.0":"2020-04-20T22:51:26.947Z","0.0.0-canary.e794932.0":"2020-04-20T22:53:59.727Z","0.0.0-canary.e8742f5.1":"2020-04-20T22:57:29.559Z","0.0.0-canary.7debfaa.0":"2020-04-20T23:51:30.060Z","0.0.0-canary.840675c.0":"2020-04-21T02:05:42.434Z","0.0.0-canary.a3a7eac.0":"2020-04-21T17:11:34.014Z","0.0.0-canary.f69e6b0.0":"2020-04-22T18:41:39.254Z","0.0.0-canary.1850336.0":"2020-04-22T22:11:05.651Z","0.0.0-canary.2dbdc73.0":"2020-04-23T00:25:26.201Z","0.0.0-canary.7379dad.0":"2020-04-23T00:46:18.002Z","0.0.0-canary.22b9ab8.0":"2020-04-24T19:22:44.405Z","0.0.0-canary.69f59b4.0":"2020-04-24T20:57:28.636Z","0.0.0-canary.3d209a6.0":"2020-04-24T21:51:49.449Z","0.0.0-canary.70b95a2.0":"2020-04-24T23:46:25.274Z","0.0.0-canary.99a4452.0":"2020-04-25T18:28:24.933Z","0.0.0-canary.649174e.0":"2020-04-27T20:24:46.527Z","0.0.0-canary.99a4452.2":"2020-04-28T18:47:49.443Z","0.0.0-canary.649174e.1":"2020-04-28T18:49:06.945Z","0.0.0-canary.2450eb8.0":"2020-04-28T19:00:16.787Z","0.0.0-canary.2450eb8.1":"2020-04-28T19:01:44.558Z","0.0.0-canary.3b3b756.0":"2020-04-29T00:27:17.487Z","0.0.0-canary.3b3b756.3":"2020-04-29T01:51:53.228Z","0.0.0-canary.45a5f32.0":"2020-04-30T22:08:08.226Z","0.0.0-canary.45a5f32.1":"2020-05-04T17:52:05.163Z","2.1.2":"2020-05-04T22:47:52.944Z","0.0.0-canary.4e80a7c.0":"2020-08-27T22:21:15.871Z","0.0.0-canary.4d0772e.0":"2020-08-29T00:04:14.915Z","0.0.0-canary.8a530ea.0":"2020-08-29T01:14:04.310Z","0.0.0-canary.3915f48.0":"2020-09-04T21:07:51.213Z","0.0.0-canary.b3c0cf8.0":"2020-09-09T17:36:44.109Z","0.0.0-canary.42048ff.0":"2020-09-11T07:28:37.292Z","2.1.3":"2020-09-14T22:37:05.060Z","2.1.4":"2020-09-16T23:13:54.131Z","0.0.0-canary.4c67dce.0":"2020-09-23T20:55:45.407Z","0.0.0-canary.4123cce.0":"2020-10-22T20:55:20.306Z","0.0.0-canary.17e330d.0":"2020-10-27T00:14:33.112Z","0.0.0-canary.318c08c.0":"2020-10-30T17:11:22.449Z","0.0.0-canary.e74b783.0":"2020-11-04T19:02:40.196Z","0.0.0-canary.a33a9c8.0":"2020-11-06T19:57:37.574Z","0.0.0-canary.5a2a7a7.0":"2020-11-07T00:04:16.782Z","0.0.0-canary.77061d0.0":"2020-11-09T19:03:59.113Z","0.0.0-canary.89ca12c.0":"2020-11-10T19:43:04.740Z","2.1.5":"2020-11-13T19:09:31.029Z","0.0.0-canary.770d485.0":"2020-11-13T21:22:19.032Z","0.0.0-canary.6d664ad.0":"2020-12-16T22:48:12.954Z","0.0.0-canary.579111b.0":"2020-12-17T03:09:01.070Z","0.0.0-canary.2eb76df.0":"2020-12-17T03:48:29.024Z","2.1.6":"2021-01-05T03:03:11.708Z","0.0.0-canary.4cee1e1.0":"2021-01-05T21:44:30.120Z","0.0.0-canary.b936566.0":"2021-01-20T20:14:53.305Z","0.0.0-canary.7d3770e.0":"2021-01-20T20:56:30.842Z","0.0.0-canary.c848126.0":"2021-01-28T21:25:17.009Z","0.0.0-canary.7eef88a.0":"2021-03-10T17:38:25.141Z","2.1.7":"2021-03-12T00:50:43.458Z","0.0.0-canary.5086770.0":"2021-03-12T03:25:05.989Z","0.0.0-canary.243e09c.0":"2021-03-18T23:28:55.852Z","0.0.0-canary.156446a.0":"2021-04-02T22:36:36.912Z","0.0.0-canary.bda3eb5.0":"2021-04-07T20:51:26.896Z","0.0.0-canary.7852906.0":"2021-04-08T22:14:07.436Z","0.0.0-canary.36c1f93.0":"2021-04-12T14:50:47.959Z","0.0.0-canary.147decc.0":"2021-04-13T17:08:58.190Z","0.0.0-canary.481456c.0":"2021-04-13T21:57:21.616Z","0.0.0-canary.4d2f7e5.0":"2021-04-13T23:14:48.876Z","0.0.0-canary.9158df6.0":"2021-04-14T14:24:36.727Z","0.0.0-canary.c68f2d4.0":"2021-04-14T19:01:47.116Z","0.0.0-canary.fa4dd7d.0":"2021-04-14T21:59:42.425Z","2.1.8":"2021-04-16T22:13:15.422Z","0.0.0-canary.60586e2.0":"2021-05-17T15:01:50.867Z","0.0.0-canary.b3081dd.0":"2021-05-21T21:58:34.572Z","2.1.9":"2021-05-25T00:33:22.746Z","0.0.0-canary.dc6dd20.0":"2021-06-14T19:43:52.582Z","0.0.0-canary.66de151.0":"2021-06-15T02:22:59.048Z","2.1.10":"2021-06-16T21:33:58.409Z","0.0.0-canary.cc30c9b.0":"2021-07-27T01:39:48.642Z","0.0.0-canary.e5a3019.0":"2021-07-27T23:36:43.486Z","0.0.0-canary.74b8151.0":"2021-07-28T01:34:07.449Z","0.0.0-canary.d9ecd19.0":"2021-07-30T18:58:06.922Z","0.0.0-canary.f0b60b1.0":"2021-08-12T22:21:22.489Z","2.1.11":"2021-08-17T17:35:54.162Z","0.0.0-canary.0833d86.0":"2021-08-31T17:55:28.901Z","0.0.0-canary.009cb5f.0":"2021-09-01T01:20:20.470Z","0.0.0-canary.34f1f86.0":"2021-09-01T21:05:27.597Z","0.0.0-canary.0f75d56.0":"2021-09-01T22:16:01.053Z","0.0.0-canary.addd6fb.0":"2021-09-02T00:53:28.199Z","0.0.0-canary.e938140.0":"2021-09-08T17:21:27.228Z","0.0.0-canary.04ebbff.0":"2021-09-10T17:10:43.683Z","0.0.0-canary.77d64ce.0":"2021-09-16T22:00:01.516Z","2.2.0":"2021-09-17T16:55:30.709Z","0.0.0-canary.a5335ef.0":"2021-11-08T21:54:50.178Z","0.0.0-canary.99bcfaa.0":"2021-11-15T22:36:01.479Z","0.0.0-canary.858e9e0.0":"2021-11-16T00:43:11.444Z","0.0.0-canary.940ae04.0":"2021-11-17T00:14:49.042Z","0.0.0-canary.61befa0.0":"2021-11-17T21:48:04.664Z","0.0.0-canary.358ea34.0":"2021-11-23T14:23:20.026Z","0.0.0-canary.0585b99.0":"2021-11-23T19:48:18.567Z","0.0.0-canary.4d4635d.0":"2021-11-23T20:59:33.098Z","0.0.0-canary.4457a44.0":"2021-11-23T21:22:41.221Z","2.2.1":"2021-11-24T22:32:03.740Z","0.0.0-canary.69a107c.0":"2021-12-06T23:41:48.811Z","0.0.0-canary.c638cb0.0":"2021-12-07T21:48:33.735Z","2.2.2":"2021-12-09T20:42:25.488Z","0.0.0-canary.6c63a07.0":"2022-01-03T21:50:22.806Z","0.0.0-canary.2fa3949.0":"2022-01-04T22:06:19.000Z","2.2.3":"2022-01-28T19:28:35.215Z","0.0.0-canary.2961969.0":"2022-03-22T18:05:40.200Z","0.0.0-canary.5dafecb.0":"2022-03-23T22:57:10.383Z","0.0.0-canary.f10290c.0":"2022-03-24T03:06:06.582Z","0.0.0-canary.4b95c4d.0":"2022-03-27T08:17:03.744Z","0.0.0-canary.ba7901a.0":"2022-03-28T04:42:34.089Z","0.0.0-canary.53e71c9.0":"2022-03-28T05:36:34.507Z","2.2.4":"2022-03-31T00:07:03.661Z","0.0.0-canary.04f01d4.0":"2022-03-31T16:22:38.829Z","0.0.0-canary.0115aaa.0":"2022-03-31T21:51:33.549Z","0.0.0-canary.3fd760c.0":"2022-04-01T16:54:21.897Z","0.0.0-canary.d90d4e6.0":"2022-04-01T18:29:57.409Z","0.0.0-canary.0c6b102.0":"2022-04-05T01:57:27.128Z","0.0.0-canary.a48714f.0":"2022-04-05T20:11:50.087Z","0.0.0-canary.48261a2.0":"2022-04-05T21:49:43.186Z","0.0.0-canary.e4a0af5.0":"2022-04-05T22:47:14.799Z","0.0.0-canary.a5387d7.0":"2022-04-06T16:12:03.131Z","0.0.0-canary.4f43ddb.0":"2022-04-11T04:07:36.380Z","0.0.0-canary.f865478.0":"2022-04-12T06:01:06.797Z","0.0.0-canary.901e6a9.0":"2022-04-12T06:28:34.477Z","0.0.0-canary.5f75a67.0":"2022-04-12T06:45:46.168Z","0.0.0-canary.66acb26.0":"2022-04-18T05:58:34.484Z","0.0.0-canary.0abc031.0":"2022-04-18T22:56:52.809Z","0.0.0-canary.4fa95ac.0":"2022-04-19T21:58:47.118Z","0.0.0-canary.483ee52.0":"2022-04-20T20:15:14.318Z","0.0.0-canary.c2e995a.0":"2022-04-21T00:22:57.834Z","0.0.0-canary.03b7f8c.0":"2022-04-21T17:57:41.179Z","2.2.5":"2022-04-25T21:59:06.503Z","0.0.0-canary.d9125fa.0":"2022-04-26T00:26:08.254Z","0.0.0-canary.9081ecc.0":"2022-05-01T03:47:17.162Z","0.0.0-canary.82afe51.0":"2022-05-04T01:10:49.628Z","0.0.0-canary.3afacb1.0":"2022-05-04T07:37:45.815Z","0.0.0-canary.dc38594.0":"2022-05-06T01:32:38.946Z","0.0.0-canary.9bf73bd.0":"2022-05-09T00:09:06.200Z","0.0.0-canary.0d8f1cb.0":"2022-05-10T01:44:44.885Z","2.2.6":"2022-05-16T22:21:43.564Z","0.0.0-canary.441c97e.0":"2022-05-17T01:05:10.570Z","0.0.0-canary.94de910.0":"2022-05-17T07:55:46.080Z","0.0.0-canary.a8535bf.0":"2022-05-17T21:23:14.751Z","0.0.0-canary.7805140.0":"2022-05-18T02:47:02.993Z","0.0.0-canary.c454879.0":"2022-05-19T19:35:06.201Z","2.2.7":"2022-05-20T01:36:21.998Z","0.0.0-canary.234cdec.1":"2022-05-26T04:00:30.387Z","0.0.0-canary.ce07ef1.0":"2022-05-29T07:37:53.458Z","0.0.0-canary.6d29913.0":"2022-06-03T06:06:08.920Z","0.0.0-canary.eac89e2.0":"2022-06-03T07:23:54.986Z","0.0.0-canary.c36b35a.0":"2022-06-03T22:11:47.226Z","0.0.0-canary.7c27df5.0":"2022-06-14T20:17:52.514Z","0.0.0-canary.8894dd7.0":"2022-06-15T22:58:43.945Z","0.0.0-canary.5378c1f.0":"2022-06-24T23:06:09.975Z","0.0.0-canary.e08ad19.0":"2022-07-06T01:03:29.113Z","0.0.0-canary.57962c1.0":"2022-07-06T22:14:09.827Z","2.2.8":"2022-07-21T18:39:10.699Z","0.0.0-canary.a682711.0":"2022-08-16T20:37:53.719Z","0.0.0-canary.47148f0.0":"2022-08-17T20:31:26.450Z","0.0.0-canary.2645e7a.0":"2022-08-24T18:42:10.420Z","0.0.0-canary.d248f7c.0":"2022-09-08T00:31:14.091Z","0.0.0-canary.c77e60d.0":"2022-09-20T22:00:57.080Z","0.0.0-canary.5f297f6.0":"2022-09-20T22:39:26.201Z","2.2.9":"2022-10-04T18:33:13.715Z","0.0.0-canary.df69099.0":"2022-10-12T19:51:24.294Z","2.2.10":"2022-10-14T19:23:36.459Z","0.0.0-canary.7982e16.0":"2022-11-03T00:09:48.567Z","2.2.11":"2022-11-04T23:09:58.286Z","0.0.0-canary.af83905.0":"2022-12-01T01:10:00.865Z","2.3.0":"2022-12-05T20:32:48.364Z","0.0.0-canary.cc2fb77.0":"2022-12-06T02:12:32.222Z","0.0.0-canary.d18411f.0":"2022-12-06T04:36:09.172Z","0.0.0-canary.7f1cb1f.0":"2022-12-06T06:05:36.108Z","2.3.1":"2022-12-07T01:54:18.171Z","0.0.0-canary.1ea3b4c.0":"2022-12-07T20:30:37.785Z","2.3.2":"2022-12-08T00:45:34.347Z","0.0.0-canary.f1ab874.0":"2022-12-12T20:06:39.734Z","2.3.3":"2022-12-16T22:36:36.412Z","2.4.0":"2023-01-25T00:52:21.250Z","3.0.0":"2023-02-01T21:02:29.864Z","3.0.1":"2023-02-09T01:39:53.603Z","0.0.0-canary.1cbe20f.0":"2023-02-18T00:00:52.083Z","0.0.0-canary.52f9d6c.0":"2023-02-18T02:22:15.304Z","3.0.2":"2023-02-20T20:42:08.424Z","0.0.0-canary.ca778ef.0":"2023-03-01T22:39:54.179Z"},"license":"MIT","readmeFilename":"","homepage":"https://fusionjs.com/api/fusion-tokens","repository":{"directory":"fusion-tokens","type":"git","url":"git+https://github.com/fusionjs/fusionjs.git"},"bugs":{"url":"https://github.com/fusionjs/fusionjs/issues"}}