{"_id":"@alt-javascript/scanner-darkly","_rev":"3-5efe1a25de2bbcbcefb2b5452d150110","name":"@alt-javascript/scanner-darkly","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@alt-javascript/scanner-darkly","version":"1.0.0","description":"A Pluggable Scanner For Launch Darkly Feature Flag Variations =============================================================","author":{"name":"Craig Parravicini"},"keywords":["launch","darkly","feature","toggle","config"],"publishConfig":{"registry":"https://registry.npmjs.org/"},"homepage":"https://github.com/craigparra/alt-scanner-darkly#readme","repository":{"type":"git","url":"git+https://github.com/craigparra/alt-scanner-darkly.git"},"main":"index.js","scripts":{"lint":"npx eslint \"./*.js\" \"./test/**/*.js\" --fix","test":"mocha --require test/fixtures","coverage":"npm run nyc","mocha":"mocha --require test/fixtures","nyc":"nyc --reporter=json-summary --reporter=text-summary --reporter=lcov npm run test"},"license":"MIT","dependencies":{"@alt-javascript/boot":"^1.0.3","@alt-javascript/config":"^1.0.5","@alt-javascript/logger":"^1.1.5","launchdarkly-node-server-sdk":"^6.2.0"},"devDependencies":{"babel-eslint":"^10.1.0","chai":"^4.3.4","eslint":"^7.30.0","eslint-config-airbnb-base":"^14.2.1","eslint-plugin-import":"^2.23.4","mocha":"^9.0.2","nyc":"^15.1.0","run-script-os":"^1.1.6"},"gitHead":"b3e3800cc7d19172fabab8f43564e0b684cf03e6","bugs":{"url":"https://github.com/craigparra/alt-scanner-darkly/issues"},"_id":"@alt-javascript/scanner-darkly@1.0.0","_nodeVersion":"14.17.2","_npmVersion":"7.14.0","dist":{"integrity":"sha512-DkLsYhXFtkoTRnZYUeLtQU5Rnb1BsSThfagwps6VX46/ox9RHs8fWXw9anwnuaN9CNdqlEcwH6BFODQ/U8BBQw==","shasum":"294d8122f36ce83b915fea4299367a13fee68a99","tarball":"https://registry.npmjs.org/@alt-javascript/scanner-darkly/-/scanner-darkly-1.0.0.tgz","fileCount":10,"unpackedSize":9528,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhALm0CRA9TVsSAnZWagAALrAQAIrTQYSDC49jBadnRtRC\nQmgP82O1IenxZgPKZcyweQKxFYd8E1OTTnHy5dq02tOQPlFb6d0OEdsN+X5F\nXIkhlLC7juMrsBhVkG++zBWp15HLeriQW5wmDKMJcwHE+A0ChhfU3TBsia5o\nWsOAL1j05CSbOWv8J6uuUZJpDhJbLfqxiRcIVX6vhCQ3c3pv9o1i1diXM7lM\nA+L41Sf9MDscNJcBm23MubtEZ3OUblxCFMqHQjYmxTb0BIYxk8p07mD/PQbF\n++zSjkgd06IrzoHf2nO4nqXlDXA+ha2nt2oJI4j6apWqtvaXVIdhxLX/HXjQ\nKsXFtxYckZQD+Yw6uEwF9q916pdSvPYLfvEa4swq2T3crB8navUxyyvUD0Lz\n1kA2uJ3xJSnR19V35uXH1zEt8wjwUqnEQwKQCbo1OUGswMa6ftVx2AjqsiT4\nGDyE3qh1xkbDvLZb3FRkgU5TU1QGJg0nu1BFNtcDx6n6e3hu5he0mM4+TR+F\nVNkCtrWpnvGhHAEkjpbUvUcoTx/qyQQEd/OQNux3Q3bnwZ8JWQNlFz0hvvD3\nlSqcAqgPqIvYvMArZ6ytqP22IZGoljL/z+/pi1Z5BQ8Ya9YN23eVPzv4Qnma\n71HUtCzlZq+8WWU9ii3V/PXXkaKfYe7O5XUuYRiB1/coYx4x8TefLxy5dNLe\n6Yr7\r\n=Klsh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFywqiSVciO8x15YkAiIrZSaOzW47BXzIorxcpSeif/fAiEAggitzuYExc4NYGvANvjRbWHS4qCAidugvHcDSg1SLGI="}]},"_npmUser":{"name":"craigparra","email":"craigparra@gmail.com"},"directories":{},"maintainers":[{"name":"craigparra","email":"craigparra@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/scanner-darkly_1.0.0_1627437491989_0.21091740158691974"},"_hasShrinkwrap":false},"1.0.1":{"name":"@alt-javascript/scanner-darkly","version":"1.0.1","description":"A Pluggable Scanner For Launch Darkly Feature Flag Variations","author":{"name":"Craig Parravicini"},"keywords":["launch","darkly","feature","toggle","config"],"publishConfig":{"registry":"https://registry.npmjs.org/"},"homepage":"https://github.com/craigparra/alt-scanner-darkly#readme","repository":{"type":"git","url":"git+https://github.com/craigparra/alt-scanner-darkly.git"},"main":"index.js","scripts":{"lint":"npx eslint \"./*.js\" \"./test/**/*.js\" --fix","test":"mocha --require test/fixtures","coverage":"npm run nyc","mocha":"mocha --require test/fixtures","nyc":"nyc --reporter=json-summary --reporter=text-summary --reporter=lcov npm run test"},"license":"MIT","dependencies":{"@alt-javascript/boot":"^1.0.3","@alt-javascript/config":"^1.0.5","@alt-javascript/logger":"^1.1.5","launchdarkly-node-server-sdk":"^6.2.0"},"devDependencies":{"babel-eslint":"^10.1.0","chai":"^4.3.4","eslint":"^7.30.0","eslint-config-airbnb-base":"^14.2.1","eslint-plugin-import":"^2.23.4","mocha":"^9.0.2","nyc":"^15.1.0","run-script-os":"^1.1.6"},"gitHead":"3d55ab7d1cc0ad7ac26362fb9efd3ae8d2b1595f","bugs":{"url":"https://github.com/craigparra/alt-scanner-darkly/issues"},"_id":"@alt-javascript/scanner-darkly@1.0.1","_nodeVersion":"14.17.2","_npmVersion":"7.14.0","dist":{"integrity":"sha512-cNd7PiLz+WyV29vJwr682JyPdh7GxPrwJTO2bfg5Zb1+k7Tt82u1EdA2QQk2i8uZ0ilgxl01y4+O9jjDfBZ/jA==","shasum":"24585a3a1077f6f4646d7fc2e25ed5ebb76f668f","tarball":"https://registry.npmjs.org/@alt-javascript/scanner-darkly/-/scanner-darkly-1.0.1.tgz","fileCount":10,"unpackedSize":9696,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhAQFxCRA9TVsSAnZWagAAjG4P/A5VYwb56vmqMajNse3K\ndceJkCnzt5p4zzQI7AMfQ4I91PI/OGgj4Y+ABonCkGw1z5+JShxXXtjZ0K75\n8M9CvDRZSXZGOoldWu43o+VmGzUDCVfQZqhGoQPHFqpTa7KXMvPtySMdK5Xq\nWPNBK1qfQQ+vAAha7QEzpbpd823vukD8fNTqA9dHOs1ufK/ItNEK4gpa32N0\ndNSOJXFOz+MZuPNh2X1qDlPB7Ed7vs6kYNDnFhlbsp4tmpgTC5YVgsqoO6N+\nlyNu+EGp2UxeUaaRIBqAwoRJpRI1ZlK5Ej1+4CtmIjSNnp0vjvXnTpJjlRL0\nMBhVR318vGyy5Zuxh87mnCSB16D8Hsb7Ctsz7nq0XGLh8nh5kn2y06xJBxWT\nFI/1Izxk96P03y5v1QCnPGa/H/vDqvGmZ1Lw+KsLR8lUaYVKzBJ4WiXD0K6e\niW30KO7KftlsTPL4HMFBdoHUDCeHV6Dov2Y5lA2OA4OpDZZRv5ODoE4bZFdV\nuGSfn8px0Hmg5MtKDjuHcCN7UQxDe8GDLGOHG6QjQpbsC9XDUJzMyfv4jNXF\n+cpinpd3uNsWcCEIks7mebwjm3e7L78aK/++AZq9eY3soFJRcbrh4e4ClwQ5\nAlZEhq5Yt5eH9zlUPTjpKyGnYYWrL8bimyt0LY4HYCOVH+QfO0L6YI9ZPVbm\nRsXV\r\n=xlBW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC2Helf9ONVjNtzIvK52av42UN6WCkCYQLxGqr+S78p6AIgRe0CGw+12adHGtxDOGW0F1cjJNEfZLEvZUNdqN8mjWc="}]},"_npmUser":{"name":"craigparra","email":"craigparra@gmail.com"},"directories":{},"maintainers":[{"name":"craigparra","email":"craigparra@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/scanner-darkly_1.0.1_1627455857110_0.7407187859483053"},"_hasShrinkwrap":false},"1.0.2":{"name":"@alt-javascript/scanner-darkly","version":"1.0.2","description":"A Pluggable Scanner For Launch Darkly Feature Flag Variations","author":{"name":"Craig Parravicini"},"keywords":["launch","darkly","feature","toggle","config"],"publishConfig":{"registry":"https://registry.npmjs.org/"},"homepage":"https://github.com/alt-javascript/scanner-darkly#readme","repository":{"type":"git","url":"git+https://github.com/alt-javascript/scanner-darkly.git"},"main":"index.js","scripts":{"lint":"npx eslint \"./*.js\" \"./test/**/*.js\" --fix","test":"mocha --require test/fixtures","coverage":"npm run nyc","mocha":"mocha --require test/fixtures","nyc":"nyc --reporter=json-summary --reporter=text-summary --reporter=lcov npm run test"},"license":"MIT","dependencies":{"@alt-javascript/boot":"^1.0.3","@alt-javascript/config":"^1.0.5","@alt-javascript/logger":"^1.1.5","launchdarkly-node-server-sdk":"^6.2.0"},"devDependencies":{"babel-eslint":"^10.1.0","chai":"^4.3.4","eslint":"^7.30.0","eslint-config-airbnb-base":"^14.2.1","eslint-plugin-import":"^2.23.4","mocha":"^9.0.2","nyc":"^15.1.0","run-script-os":"^1.1.6"},"gitHead":"f4113fcde30f8a42846ec7f56f5fdb0a8dc9b41c","bugs":{"url":"https://github.com/alt-javascript/scanner-darkly/issues"},"_id":"@alt-javascript/scanner-darkly@1.0.2","_nodeVersion":"14.17.2","_npmVersion":"7.14.0","dist":{"integrity":"sha512-qyvEpPCaGZfUCtW3g0wOCz0lncHMQWlQCS7D1CaBD3B/4WbGFEBXgdGK/gkAEZ9lWWKGh9+fa9x42qa41cahGg==","shasum":"f98c69985592e4855c276f3e76beddfa1b627c22","tarball":"https://registry.npmjs.org/@alt-javascript/scanner-darkly/-/scanner-darkly-1.0.2.tgz","fileCount":10,"unpackedSize":9766,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhB5fyCRA9TVsSAnZWagAApvEP/2jsAQAgiD4b5E2xvWu8\nasQJlRNy5KQMhkc7bQtJKMQDFTVUyGctmEw7FxejKuh7Uelu+cWZrS+IZylx\nJtrxA4KqHe3ngauo3XyRk45RNFddhhfuk3gOPAgVnPhwU7hW1Tv0BEfeFZgV\n3Adr8MFIaNlkSPJwqSc5Z32PLMNgxQNKlxIumP7XdZoz1DbBHr9od24QuLAy\nQtRN/z0YHI/rb1yBeY5+84mejY9FxzAMH66yVZzND4FQ0hlNv1gZFJu6e7gY\nEX7FrbzSTb3Nv9//KrjHQj0bqiQ4Wdnm6Z3TeM5+t+tcGgautD5W/URX5tKR\noyWBKpHb6iOqdFkqjXLVyfx5v7z//SDA0JbyY5rELZSuCZkmX7RgDNgJYXJK\na4R2VsBCy/6SOUsrGnDdhcQ0BldGNg8kiegyod+TsgsJ3Tfj/U3YO+vyMblQ\nEFFXHg+pnR3H1CPT/zWjDgiPn9vaAn3H+iYG8t68BP0Yczy+i6JSJiYhd4xT\ndK0hmggDVWtU/Jfr69nljId6QCQpPhw7WtLcfR13Tz7UUgT93QrMIsmYzR5J\nH/Ag94jwr9LyKnS6j9lC4rmhl+tBLmMxyDdQh9JX072WMRl0i0ZYzEJf5RTi\nmP2sFLM5to2wLMRW7AjSvpqfEwIYDRbTCNA+hzh4v/RnV7DIjJD5VLvOI0PO\ncXkD\r\n=Bl0I\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCw4MphYZ1vueUrjHDp9PB+JxT2A5hHeaSAIxuLrwO00QIhAJU+6XYu522788fiUTpKFmeUrDj5P4zQgGfodGY7ke0g"}]},"_npmUser":{"name":"craigparra","email":"craigparra@gmail.com"},"directories":{},"maintainers":[{"name":"craigparra","email":"craigparra@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/scanner-darkly_1.0.2_1627887601834_0.014760345801225316"},"_hasShrinkwrap":false}},"time":{"created":"2021-07-28T01:58:11.932Z","1.0.0":"2021-07-28T01:58:12.113Z","modified":"2022-04-04T13:39:21.396Z","1.0.1":"2021-07-28T07:04:17.238Z","1.0.2":"2021-08-02T07:00:02.233Z"},"maintainers":[{"name":"craigparra","email":"craigparra@gmail.com"}],"description":"A Pluggable Scanner For Launch Darkly Feature Flag Variations","homepage":"https://github.com/alt-javascript/scanner-darkly#readme","keywords":["launch","darkly","feature","toggle","config"],"repository":{"type":"git","url":"git+https://github.com/alt-javascript/scanner-darkly.git"},"author":{"name":"Craig Parravicini"},"bugs":{"url":"https://github.com/alt-javascript/scanner-darkly/issues"},"license":"MIT","readme":"A Pluggable Scanner For Launch Darkly Feature Flag Variations\n=============================================================\n\n[![NPM](https://nodei.co/npm/@alt-javascript/scanner-darkly.svg?downloads=true&downloadRank=true)](https://nodei.co/npm/@alt-javascript/scanner-darkly/)\n<br/>\n![Language Badge](https://img.shields.io/github/languages/top/alt-javascript/scanner-darkly)\n![Package Badge](https://img.shields.io/npm/v/@alt-javascript/scanner-darkly) <br/>\n[release notes](https://github.com/alt-javascript/scanner-darkly/blob/main/History.md)\n\n<a name=\"intro\">Introduction</a>\n--------------------------------\nA pluggable scanner for listening and acting on Launch Darkly feature flag variations in\nserver-side node.js.\n\n<a name=\"usage\">Usage</a>\n-------------------------\n\nTo use the module, follow the example in the included `scan.js` file, which plays nicely with all the other\n@alt-javascript modules.\n\nThe Scanner, takes an `Arctor` (or array of `Arctors`) that will act on flagged LaunchDarkly variations with\nthe implemented `see(clearly)` function, in this case the provided `LogArctor` outputs the changed flag value.\n\n`scan.js`\n```javascript\nconst LaunchDarkly = require('launchdarkly-node-server-sdk');\nconst ScannerDarkly = require('@alt-javascript/scanner-darkly');\nconst {config} = require (\"@alt-javascript/config\");\nconst {boot} = require (\"@alt-javascript/boot\");\nconst {LoggerFactory} = require ('@alt-javascript/logger');\nboot({ config });\n\n\nconst LogArctor = require('@alt-javascript/scanner-darkly'); // this  uses booted logging config, so is required after boot().\n\nconst logger = LoggerFactory.getLogger('@alt-javascript/scanner-darkly/scan');\nconst ldlogger = LoggerFactory.getLogger('LaunchDarkly');\nconst SDK_KEY = config.get('scanner.darkly.sdk-key');\nconst scannerDarkly = new ScannerDarkly(\n    new LogArctor('logging-levels', {\"key\": \"user@test.com\"},null),\n    SDK_KEY,\n    {logger : ldlogger});\n\nscannerDarkly.init();\n// ... later, on process exit.\nscannerDarkly.destroy();\n```\n\nWhen your LaunchDarkly product, environment, sdk-key and feature flag are configured, you should see output like:\n\n```shell\nWed Jul 28 2021 10:57:03 GMT+1000 (GMT+10:00):LaunchDarkly:info:Initializing stream processor to receive feature flag updates\nWed Jul 28 2021 10:57:04 GMT+1000 (GMT+10:00):LaunchDarkly:info:Opened LaunchDarkly stream connection\nWed Jul 28 2021 10:57:04 GMT+1000 (GMT+10:00):LaunchDarkly:debug:Received put event\nWed Jul 28 2021 10:57:15 GMT+1000 (GMT+10:00):LaunchDarkly:debug:Received patch event\nWed Jul 28 2021 10:57:15 GMT+1000 (GMT+10:00):LaunchDarkly:debug:Updating logging-levels in features\nWed Jul 28 2021 10:57:15 GMT+1000 (GMT+10:00):@alt-javascript/scanner-darkly/LogArctor:info:Variation seen clearly as {\"crew_prestart/src/services\":\"debug\"}\nWed Jul 28 2021 10:57:18 GMT+1000 (GMT+10:00):LaunchDarkly:debug:Flushing %d events2\n\n```\n\n<a name=\"arctor\">Yes, its Arctor, not Actor</a>\n----------------------------------------\n\nYes, the class is called `Arctor` _by design_, and in homage to one of my very favourite novels, \n\n\n> What does a scanner see? he asked himself. I mean, really see? Into the head? \n> Down into the heart? Does a passive infrared scanner like they used to use or a cube-type holo-scanner \n> like they use these days, the latest thing, see into me - into us - clearly or darkly? \n> I hope it does, he thought, see clearly, because I can't any longer these days see into myself. \n> I see only murk. Murk outside; murk inside. I hope, for everyone's sake, the scanners do better. \n> Because, he thought, if the scanner sees only darkly, the way I myself do, then we are cursed, \n> cursed again and like we have been continually, and we'll wind up dead this way,\n> knowing very little and getting that little fragment wrong too.\n> \n>― [A Scanner Darkly - Philip. K. Dick, 1977](https://en.wikipedia.org/wiki/A_Scanner_Darkly)\n\n\nThe movie is pretty good too, _weird good_.\n","readmeFilename":"README.md"}