{"_id":"@ch1/browser-dna-express-tables","_rev":"1-c045f33f9962e16a3b86d5862ec2afcd","name":"@ch1/browser-dna-express-tables","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@ch1/browser-dna-express-tables","version":"0.1.0","description":"Browser DNA Express Tables is a tool for consuming DNA Express Fingerprint objects and storing them in SQL database","keywords":["CH1","Fingerprint","Server","Express","Database","@ch1/browser-dna-express"],"main":"dist/index.cjs.js","module":"dist/index.js","types":"dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/bennett000/ch1-browser-dna-express-tables.git"},"homepage":"https://github.com/bennett000/ch1-browser-dna-express-tables","bugs":{"url":"https://github.com/bennett000/ch1-browser-dna-express/issues-tables"},"author":{"name":"dev@michaeljbennett.info"},"contributors":[],"license":"LGPL-3.0","private":false,"scripts":{"prebuild":"rimraf ./dist","build":"tsc","postbuild":"rollup --input ./dist/index.js --format cjs --file ./dist/index.cjs.js","pretest":"rimraf ./dist && rimraf ./coverage","test":"jest","test:watch":"jest --watch","typegen":"sql-tables ./src/schema.ts ./src/typegen.ts"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{js,json,css,md}":["prettier --single-quote --write src/**/*.ts","git add"]},"jest":{"collectCoverage":true,"collectCoverageFrom":["**/*.{ts,tsx}","!**/node_modules/**","!**/coverage/**","!**/dist/**","!**/*.d.ts","!**/interfaces.ts","!**/index.ts"],"coverageDirectory":"coverage/","coveragePathIgnorePatterns":["/node_modules/","/coverage/","/dist/","/example/"],"coverageReporters":["json","lcov","text","html"],"transform":{"^.+\\.tsx?$":"ts-jest"},"testRegex":"(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","moduleFileExtensions":["ts","tsx","js","jsx","json","node"]},"devDependencies":{"@ch1/browser-dna":"^0.1.1","@ch1/browser-dna-express":"^0.2.0","@ch1/xhr":"^0.3.0","@types/express":"^4.16.0","@types/jest":"^23.3.1","@types/node":"^10.9.4","body-parser":"^1.18.3","cors":"^2.8.4","express":"^4.16.3","express-rate-limit":"^3.2.0","helmet":"^3.13.0","husky":"^1.0.0-rc.13","jest":"^23.5.0","lint-staged":"^7.2.2","prettier":"^1.14.2","rimraf":"^2.6.2","rollup":"^0.66.2","rollup-plugin-commonjs":"^9.1.8","rollup-plugin-node-resolve":"^3.4.0","ts-jest":"^23.1.4","typescript":"^3.0.3"},"dependencies":{"@ch1/sql-tables":"^1.2.10"},"gitHead":"9f2b57967727b6293d12f6fdcb9ab61e09154876","_id":"@ch1/browser-dna-express-tables@0.1.0","_npmVersion":"5.5.1","_nodeVersion":"9.2.0","_npmUser":{"name":"bennett000","email":"dev@michaeljbennett.info"},"dist":{"integrity":"sha512-A0xfLZ85OKzavlTBvobuFuvS42JHchVuoagp3Ouls3Q7aGGZiUF/44mmPHjddqC+t4ccEti+cmv8PuxoKnNSsw==","shasum":"581be73fdacd048d309ff56576001fb309708158","tarball":"https://registry.npmjs.org/@ch1/browser-dna-express-tables/-/browser-dna-express-tables-0.1.0.tgz","fileCount":54,"unpackedSize":108234,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbpxUbCRA9TVsSAnZWagAALegP/1PY5H64aJ24Scj5GQz1\n9AKpwIT3GafDd5W59r/C2X8yS6rpYl44RVzl7tWsy6Ii3uHGV/XOjSdn7AzR\nG2p3Wy5q2gHwru1DBrfNusKxrmVxFlA2dyhV70RFdIXjnsJOsv1Uh6WogEYB\ncuiWPSb2TmME2YDD8b1wk2eb8eVpTk/c1E17JW/NiWJeYVcnoKgZvELptax6\nkeoWtAK6x0NvlKDGd7X+sTMz5nbbH2qyflLDZhYnAkX84Rlein5zbWSAkyeR\nVUhxP5qCneSN5W8Dw5PbLbvU1QklJnM0rIl/SjZaJmpeFfWDi3GQ+e2vT326\nwUXUIigs0t+S62dJwSlWyRKK6GfWUwUnZQEn+RsgMcw780LzUXH7zhgr3iGE\n9K+mHYDmuxoFNPE8ccmwJeSb1KmnFkjRcmIJNG9ncXDIN363fc6k9AslUlz8\nG2nPDh7BkxZxKLbwpH+hxNL3ZMzdPlq2RWkQDeifsELqh657WWvO3jukYZfa\n8tunyYueG8suC5aWEimZ8TqIMmbQcdmQrN+9I5x8oWtntRbNCnp+QpCbGaTS\nQ8RSGnr74oAla3D+pWZGsyM7xReOeXmWw4ScOE9ydOjpAnH2iOM71hd22fDH\npjU08eYkgcfMCUbV+MHP+akGf8JuVoxRUIkDJu/XiWxW6lmm5OiqWsfNFKAY\nDCa6\r\n=B866\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEcotUnTgxeQ4FOGIcj1Gt/rZDjR6WP2nzDxQ5e3QfkFAiBYHMcRMBoChbUsHOz3XCaZRIn69oCcQO2Y9/nffsTSWg=="}]},"maintainers":[{"name":"bennett000","email":"dev@michaeljbennett.info"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/browser-dna-express-tables_0.1.0_1537676570818_0.9722537541854972"},"_hasShrinkwrap":false}},"time":{"created":"2018-09-23T04:22:50.658Z","0.1.0":"2018-09-23T04:22:50.970Z","modified":"2022-04-04T22:25:57.673Z"},"maintainers":[{"name":"bennett000","email":"dev@michaeljbennett.info"}],"description":"Browser DNA Express Tables is a tool for consuming DNA Express Fingerprint objects and storing them in SQL database","homepage":"https://github.com/bennett000/ch1-browser-dna-express-tables","keywords":["CH1","Fingerprint","Server","Express","Database","@ch1/browser-dna-express"],"repository":{"type":"git","url":"git+https://github.com/bennett000/ch1-browser-dna-express-tables.git"},"contributors":[],"author":{"name":"dev@michaeljbennett.info"},"bugs":{"url":"https://github.com/bennett000/ch1-browser-dna-express/issues-tables"},"license":"LGPL-3.0","readme":"# CH1 Browser DNA Express Tables\n\n[![CircleCI](https://circleci.com/gh/bennett000/ch1-browser-dna-express-tables.svg?style=svg)](https://circleci.com/gh/bennett000/ch1-browser-dna-express-tables)\n\n_This is not well maintained_\n\n## Installation\n\n`yarn add @ch1/browser-dna-express-tables`\n\n## What is This\n\nFingerprinting middleware for express. This middleware works with\n[@ch1/browser-dna-express](https://www.npmjs.com/package/@ch1/browser-dna-express 'Browser fingerprinting express middleware') and stores its fingerpritns\nin a sql database\n\n## Morality of Browser Fingerprinting\n\nFingerprinting can be a hot button topic and for good reason. Privacy on\nthe internet is an illusion. We should expect some modicum of privacy but\nwe should also be aware of the limitations of the tools we use. This library\nand other - more robust - libraries like [Panopticlick](https://github.com/EFForg/panopticlick-python 'Panopticlick EFF')\nshow just how much trivial seeming data we give away that actually \"marks\"\nus.\n\nUltimately your fingerprint from a library like this, in combination with an\nIP address is not _really_ enough to uniquely identify most people but it\n_really_ shrinks the pool, especially in certain areas.\n\n### Why Would We Want This?\n\nWhile we want and should have privacy there is a strong use case for having\nour connections be semi-identifiable.\n\nConsider the following:\n\n- You run a web service of some sort\n- You're getting a _lot_ of connections from one IP\n- The IP represents a huge institution that has a lot of legitimate users\n  but due to NAT they all appear as one user\n\nThis is where at least fingerprinting headers and connection detail server\nside helps.\n\nAnother case would be implementing an app that uses semi-anonymous sharing\nhaving a JS + server side fingerprint would allow the app to _somewhat_\ndistinguish anonymous connections for the purpose of say short term chat.\n\n## Usage\n\nUse at the top level of an express app\n\n```ts\nimport { fingerprint } from '@ch1/browser-dna-express';\nimport { fingerprintStore, schema } from '@ch1/browser-dna-express-tables';\nimport { create as createSql } from '@ch1/sql-tables';\n\nconst sql = createSql(/* db connection config */, {\n  ...schema,\n  /* custom schema here */\n})\n\n// where app is your express app\napp.use(fingerprint());\napp.use(fingerprintStore(sql));\n```\n\nThis should store fingerprint data on _every_ request, which is really\nexpensive.\n\n## License\n\n[LGPL](./LICENSE 'Lesser GNU Public License')\n","readmeFilename":"README.md"}