{"_id":"@derhuerst/stable-public-transport-ids","_rev":"13-e1f132012b3806cc823fe45933c1b739","name":"@derhuerst/stable-public-transport-ids","description":"Get stable IDs for public transport stations, etc.","dist-tags":{"latest":"2.1.0","next":"3.0.0-alpha.3"},"versions":{"1.0.0":{"name":"@derhuerst/stable-public-transport-ids","version":"1.0.0","keywords":["public transport","transit","id"],"author":{"name":"Jannis R","email":"mail@jannisr.de"},"license":"ISC","_id":"@derhuerst/stable-public-transport-ids@1.0.0","maintainers":[{"name":"derhuerst","email":"mail@jannisr.de"}],"homepage":"https://github.com/derhuerst/stable-public-transport-ids","bugs":{"url":"https://github.com/derhuerst/stable-public-transport-ids/issues"},"dist":{"shasum":"677b066b8b834d407e57cdb706119949ecead7d9","tarball":"https://registry.npmjs.org/@derhuerst/stable-public-transport-ids/-/stable-public-transport-ids-1.0.0.tgz","fileCount":7,"integrity":"sha512-pZxpjQ7u8BK8f6kAz9dKpq3PDzt3XipaSb1vSTXU4bHIAl9J+neDQQ/6YCSf8SnpJug/etDiJG3lukQ15zm9Iw==","signatures":[{"sig":"MEUCIAW9wPCcDtfhcnVlJo+0sxK3/w6IIsBmAtO63IRLvRdBAiEA4fz61gHJI7q80PjtY1efBDU0vLyhLbL+zUZKIGXUEFI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7021,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdk8hCCRA9TVsSAnZWagAABkQP/1FYLbTjARRVPwv+DsaR\ngN8B4Jk3RmjfsORg8zxG0VcqeU6JcZ8ebURA5Aah8WGecdmIcHoeUj66aY4t\nAnie8FhCz4YKtBKWRnOA5roTrZb3WmEAdIPq2M7lpFAn5qy5/jUqmJ4IYA+b\ncCb4SBWirWp7r6PQdFPK6yESHEg+rKtOmsAINEttI5+zPijO0/EORwuO45QK\n17zl5zBDc+SiH6LTvmsa/BX/RZJU6CXZ5fj8ZhwUOETfs+6xnbn4zrnjGP0N\n5mOPjZIsb3w07RxLcbpnTJ2YiScmUYvc5ftc+XRqP2Cuc2scmrqbnX5//MJr\n58o55ffpMGmrW3CFn4F5hhM3hDTrf6MrXRzM1w/9RAGmYFZhy8ZncKlzA7PV\nbODXFrMmFiTwx8dcKYIyFcEmn5WdyxYHViaeEOLROhJyy7wTPOszgWkyCBZd\n9J52qiHZM7Ow6mSdM/FBfevyVHsyrSpmf87uOisBTThnE9hzOHZP+eT3QpVh\nIgCV7+nu1vDOfM4YUCW9SHPfhEvzVYwm5jn054etnFcMzVXTDZt3XBvM9ZyL\n4CLOQw0BMPF0AO48rxktDdVj4rw7P+hXWIqmhhy+6PeAToA+aH1hU0XpBHdv\nZ3tWWuZDb7tlvJ8G4N9IMcmZOH6LnWcydC84fySD42FB06EyZE+lDA9sdhLQ\niTLv\r\n=RaLz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","engines":{"node":">=10"},"gitHead":"f0ca8593d7165be7d6a0b37da514b35204fba3a7","scripts":{"test":"env NODE_ENV=dev node test.js | tap-min","prepublishOnly":"npm test"},"_npmUser":{"name":"derhuerst","email":"mail@jannisr.de"},"repository":{"url":"git+https://github.com/derhuerst/stable-public-transport-ids.git","type":"git"},"_npmVersion":"6.11.3","dataVersion":1,"description":"Get stable IDs for public transport stations, etc.","directories":{},"_nodeVersion":"12.10.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.10.1","slugg":"^1.2.1","tap-min":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/stable-public-transport-ids_1.0.0_1569966145239_0.06468868193194943","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@derhuerst/stable-public-transport-ids","version":"1.0.1","keywords":["public transport","transit","id"],"author":{"name":"Jannis R","email":"mail@jannisr.de"},"license":"ISC","_id":"@derhuerst/stable-public-transport-ids@1.0.1","maintainers":[{"name":"derhuerst","email":"mail@jannisr.de"}],"homepage":"https://github.com/derhuerst/stable-public-transport-ids","bugs":{"url":"https://github.com/derhuerst/stable-public-transport-ids/issues"},"dist":{"shasum":"80e9faa3d58cb3ccb083236af7a9b27877fd0495","tarball":"https://registry.npmjs.org/@derhuerst/stable-public-transport-ids/-/stable-public-transport-ids-1.0.1.tgz","fileCount":7,"integrity":"sha512-e7L4r0s71kkr1Lov0EaQT+Xy1SyfBWyIzaoNuB4oDyX/FITLViZdpVOgDO7x6/Ei82Cv7SpFbgt2N8Ugmuj8xg==","signatures":[{"sig":"MEYCIQCuQGmatIURt90Fd2XJ9vH2zyMxxqmGUY51acFIYIv5OAIhAIATZF28NiAqgOLC/NKGnE5SfpnsfmZcjh6YuOTryv0h","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7139,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd99HYCRA9TVsSAnZWagAAmD4QAIIrzQFPxib6FwgoYqMZ\nnzXvFWPd7InKoDVPj1i0bvXivUw2RGaa8tepgBZ1QJtmUQ9VJiABqd1i1GtQ\na4qgCSrVDWon7/mPhmvuSzASQj7cP0U0CI53EgnkdrtNgmYZgKzEAwl+mxcy\nyzDW1Ixunc9p09IsAzTAm1MVRjn1/pGFm7mkXLA1ytXAfD4c5vwiUzFe//wR\n1oj/5c/EpoLBqRi0HcQ9uC6SXPjlUPxst/I8jhDGRnLLlMM4wiQzYZCd19JS\nWq7rp33HOpUCPUaDkA3k7vVIDzcMCfCPnrLsBo9fPtYmpNlibZGtgNFY1zw9\n9UK5P6OBlhHbbwfL5LXhDap2Eh482VgX2eD1NDZopcGjuTRbVbWdSpiWXLcg\nx+JPFUA/vPI92WIBAMh2g5aqBus3ISnaw2a0YzQoNel4Jxbq8bh92Ow4Fr8B\nTiRPnKZsMBA/C11Adihg3nWynxnnTl1/TYna3Di0w3p+vAhaMdVsmnLpTzqm\nxZGKRP7n9gflyZJCjQCmElcVQ4rHqz28O7tuTuDIlL83oPtLO2fcb7hFlEr0\nVyRcqa3eKs4zvvs0bTCaap6K5cosZhACj9YEWyfrpq3wlhA9A6DALq751Uuw\nGQcMjNZtJw5MYIx1Zp332wQq1VATxiugjULfnP72I/rMdRB1hA6wqBDcwaM/\nfTPl\r\n=csz4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","engines":{"node":">=10"},"gitHead":"823e20562f05f62cc71ec70b7f2cc9a3e2e0db75","scripts":{"test":"env NODE_ENV=dev node test.js | tap-min","prepublishOnly":"npm test"},"_npmUser":{"name":"derhuerst","email":"mail@jannisr.de"},"repository":{"url":"git+https://github.com/derhuerst/stable-public-transport-ids.git","type":"git"},"_npmVersion":"6.12.1","dataVersion":1,"description":"Get stable IDs for public transport stations, etc.","directories":{},"_nodeVersion":"12.13.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.10.1","slugg":"^1.2.1","tap-min":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/stable-public-transport-ids_1.0.1_1576522199636_0.3176307011737307","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"@derhuerst/stable-public-transport-ids","version":"1.1.0","keywords":["public transport","transit","id"],"author":{"name":"Jannis R","email":"mail@jannisr.de"},"license":"ISC","_id":"@derhuerst/stable-public-transport-ids@1.1.0","maintainers":[{"name":"derhuerst","email":"mail@jannisr.de"}],"homepage":"https://github.com/derhuerst/stable-public-transport-ids","bugs":{"url":"https://github.com/derhuerst/stable-public-transport-ids/issues"},"dist":{"shasum":"52bcecd289361a5528cd2f291e0e6345b5ae3f3a","tarball":"https://registry.npmjs.org/@derhuerst/stable-public-transport-ids/-/stable-public-transport-ids-1.1.0.tgz","fileCount":8,"integrity":"sha512-YfYgZ6zUOXib0OO7F/BEfEFsQT192MUluE8dVrDCGXHddeaisEp5r8NQHQ2Bi6aZeUAKlG2BkwJeHomMHiDB/Q==","signatures":[{"sig":"MEUCIBfwvfYfVLPUCIqZnG4+HyxfX4H8gYhW2HxgcfvIeAFcAiEA59bpa/DgsBHxTzbfAe14pRUkZ9/aOJB35W6TjSr9Wow=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10508,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeHITaCRA9TVsSAnZWagAA2XcP/1TGNHO3uZ5/ZEB6945O\ntOT4Y+TPeX9lc5nKCfc4R+iD74VxQjPKjOUMsnVk1yKrvcYgE/GoBU1HXtmY\njU9PlIvM3K2x9Jme/lrC+T4AlCEChtysWiTANJZs6eEWWhCO4zmb9gB0EL88\neiL2xzJlhglNmEeFfPePATdJW7OvTnpsCSNyursYW35zZMjDMt/HFJ/v4Eo2\nt8SWPBBWSKBfAy48i2KibTyVo924sp+uKHcWMIpexMSixHWWZKKMpr6dFPwK\nVWWTI1HucfWjoDGZ/ZTx/9H7s9aq8klQsMUY6aUEfw/R8mOAvcshFgCWm6Gz\n9R6PLBjZ/N3w8ZNduUF8Kq3Y4YkLs6BUdsd7EEPRZhw5SZ7a78nFP2lQ5PAt\ngDSPx+OPugRY8wf1IK14zig808ZJoA5IFgoqxCc/UKVpPF/xd0S8eCCHnfD/\nG/JQkIx0lioWzeMzHsRHU7MLzMuJJtiOdoPuu85Ahz6MBEfCCQhHNvMDNQsz\nTJQGSrcggDbpJCKdyQpaYSmHjkL4nTm6+/zDAbagRuaGAyvMjmuIhT6Xr3GL\nqql44ON0I5M1PL7mvZrH9jsovPlmOoWXBTYJ6GI/HIL93NuOETiC58iIDBBY\nuYToGCyh07A8G6t4S20DS6/rgozT1jH+qBNPe4Cw3amQSH4JHqh7NmVoZGOm\n85AO\r\n=4kLS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","engines":{"node":">=10"},"gitHead":"9af9861928bd3c4a4d5084da31b202cb808dae42","scripts":{"test":"env NODE_ENV=dev node test.js | tap-min","prepublishOnly":"npm test"},"_npmUser":{"name":"derhuerst","email":"mail@jannisr.de"},"repository":{"url":"git+https://github.com/derhuerst/stable-public-transport-ids.git","type":"git"},"_npmVersion":"6.13.4","dataVersion":1,"description":"Get stable IDs for public transport stations, etc.","directories":{},"_nodeVersion":"12.14.0","dependencies":{"ngeohash":"^0.6.3","@turf/bbox":"^6.0.1","@turf/helpers":"^6.1.4","@turf/distance":"^6.0.1","@turf/center-of-mass":"^6.0.1"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.10.1","slugg":"^1.2.1","tap-min":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/stable-public-transport-ids_1.1.0_1578927321593_0.7474238763263175","host":"s3://npm-registry-packages"}},"1.2.0":{"name":"@derhuerst/stable-public-transport-ids","version":"1.2.0","keywords":["public transport","transit","id"],"author":{"name":"Jannis R","email":"mail@jannisr.de"},"license":"ISC","_id":"@derhuerst/stable-public-transport-ids@1.2.0","maintainers":[{"name":"derhuerst","email":"mail@jannisr.de"}],"homepage":"https://github.com/derhuerst/stable-public-transport-ids","bugs":{"url":"https://github.com/derhuerst/stable-public-transport-ids/issues"},"dist":{"shasum":"013719e8728a17ad20ac7debbf4005308f4d6938","tarball":"https://registry.npmjs.org/@derhuerst/stable-public-transport-ids/-/stable-public-transport-ids-1.2.0.tgz","fileCount":9,"integrity":"sha512-6bZuPb/1i6KjGKXTyEHpuwPxlBgnX0gNPKlHQ8gb9mnbulWvAQVccHwwu96XdAgSaeZFj/Rgc/mAYNBuL8ipOQ==","signatures":[{"sig":"MEYCIQD0MLB2QLCspys+YArXkCQQPWv5vhk2Y/rWL4EN3wGuLQIhAIdli0oaiuttv+1tfdP8AsFfw8Lg9qUDzjHLaXPxwdcz","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11061,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeYoWtCRA9TVsSAnZWagAAkxoQAIIOIx8YsUHjnL1rIZLR\n/OVsz6INydcJ/zfEWCEvYrFxTExdoOjg5jhwUGZRv52e8DZwMeze266qjxLM\nGhWpP7s8lUs6Bt6xVlpx9mKAt60kCKF3i5pMakr5qBpmHclypxcS/ZVjMHJr\nyHt0BoIT3B9zNhW4HwDWTXpMri6SYLSaOIO1S7ql3Qa/pNJyUGrsEWsh6SLF\n1mi3IA8VCHAx9+c3DGXyxeSTQE7C2IJDoarRSfgaiN/TF2p+Ey8cmpGZBTxr\nVhMctFSJFqmOCDzE9JrMW7QXXN9meiSeLxIiBCWy6di8CAwyCmsxk31aVLPA\nXcEeUgSP1b20t7pJoJOqDRr0GN2wLsl+T9zOrVIFQuzDglKoyUzeLbmKV1Q1\ndmmLE1Itxe6JJfo8Os2Ds+hhU/L/o4S5lxetVjYxMVmkrZFtbtnjykRZkV2g\nLWR/33c3hB3CLyQIjC3dEpOV5evIzVAwLjjhk0Mnk3M1TmSsgvohqpRJN1Zm\ndq+HAlTg5fBieD6jHaHE4WSYNiuYRueJz6M/FJDRx+hH/MPkWxjccvCA5CWQ\ndqPfbexbD8hnQMx9N5wvSJzCe1LodRzgNtlvT9QXyRzwkfTdp+a3BE2IzFYs\nZZnIePoV9iIsFKHBgHXhAke2+PFyM746jb8fnPB+qlz4hohVS+/PY1bbDQ7S\nQBCg\r\n=nFWt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","engines":{"node":">=10"},"gitHead":"a76a5ca71c77afb0a14d2610168f3427f33d8552","scripts":{"test":"env NODE_ENV=dev node test.js | tap-min","prepublishOnly":"npm test"},"_npmUser":{"name":"derhuerst","email":"mail@jannisr.de"},"repository":{"url":"git+https://github.com/derhuerst/stable-public-transport-ids.git","type":"git"},"_npmVersion":"6.13.4","dataVersion":1,"description":"Get stable IDs for public transport stations, etc.","directories":{},"_nodeVersion":"12.16.1","dependencies":{"ngeohash":"^0.6.3","@turf/bbox":"^6.0.1","@turf/helpers":"^6.1.4","@turf/distance":"^6.0.1","@turf/center-of-mass":"^6.0.1"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.10.1","slugg":"^1.2.1","tap-min":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/stable-public-transport-ids_1.2.0_1583515052832_0.8970358490208128","host":"s3://npm-registry-packages"}},"1.3.0":{"name":"@derhuerst/stable-public-transport-ids","version":"1.3.0","keywords":["public transport","transit","id"],"author":{"name":"Jannis R","email":"mail@jannisr.de"},"license":"ISC","_id":"@derhuerst/stable-public-transport-ids@1.3.0","maintainers":[{"name":"derhuerst","email":"mail@jannisr.de"}],"homepage":"https://github.com/derhuerst/stable-public-transport-ids","bugs":{"url":"https://github.com/derhuerst/stable-public-transport-ids/issues"},"dist":{"shasum":"b7bd0e63bc01c9cf4b17f041d73aede81c3b9147","tarball":"https://registry.npmjs.org/@derhuerst/stable-public-transport-ids/-/stable-public-transport-ids-1.3.0.tgz","fileCount":11,"integrity":"sha512-xKl7XsUFRCBpdL/g0S5WnurxM1/3NgeuiKvvpI1pMYtSAuh4u4wbjhvyV1tCQaACFOdQ8RAY4x4aPudISrPXdg==","signatures":[{"sig":"MEYCIQD4G9+goFjOM8/Priq3o/4YeGWrC8zMr2tK1GgZh+KZqAIhAPWyc6J/KHQRKJxwY2D27hEBDDrNDbct4oG1MODQL1tl","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17954,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbjgWCRA9TVsSAnZWagAAuf8P/0AGBz5/j4r8F40LGKLr\nAL8AiPIJ+ngoGBN9q9x2TghiwHAghyG5KYDfLusbXze6GhYeh9IKPonIckYc\nI0HS1CwxsezWILaggjnrMEz/cABA1Yp7ouXsa8/G/AdDN99OKltvPU41tUNK\nmh4OuL4U7LOb/ih20YW7XhlemU8GSw9Klvw7UuIOB37pafGYdk49htUYxE5l\nILH7WCioFCcB3T6ZXCYqWGzbxiEqkKXLhgdUpf9nbaenkJ5hk8QOxNXNagFp\nD150Fn5Tunrl9blBKyQ2l+PIRkKy2cGbdAYrM9qZWmWaMtntj4oNMuHeBnyb\nOXDxG/R09jwBWAmFMsUJWKTxZVJbhlvFpvxJHMoWXJP4C7Jr8qz8kg/iLu+/\nj7MU9HKQX6dyS7rQvHxmGfw0sXpy7bCPxxSvrDZb1uieKO767+VxVIm5q1fP\n3Zi8cP70YLRWM5Rr3TvXHamR+v1RGunt6VYSzRNeulsu3XUdwnjKx2yq363H\n9oNgGj1kFg7KYKJWuZzFDoTz+JrY0QGP1aUsThL3XczTmivG0lfYwGCrrDZz\noCHR3Gaq2ZEViqbexemHh6Go4/gVp4QQh3KlZsUMy9eAHMdaapQ37MElUil3\nAu4SQqwsHg3+w4iSYFWn0oJSnc85nwmGgImtJsJQk0Wcqy5qtFiPcL0++IZP\nA8BP\r\n=tN9B\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","engines":{"node":">=10"},"gitHead":"5f4ab9db1d0a9446e57aed25c208f34506074261","scripts":{"test":"env NODE_ENV=dev node test.js | tap-min","prepublishOnly":"npm test"},"_npmUser":{"name":"derhuerst","email":"mail@jannisr.de"},"repository":{"url":"git+https://github.com/derhuerst/stable-public-transport-ids.git","type":"git"},"_npmVersion":"6.14.7","dataVersion":1,"description":"Get stable IDs for public transport stations, etc.","directories":{},"_nodeVersion":"14.9.0","dependencies":{"ngeohash":"^0.6.3","shorthash":"0.0.2","@turf/bbox":"^6.0.1","@turf/helpers":"^6.1.4","@turf/distance":"^6.0.1","@turf/center-of-mass":"^6.0.1"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.10.1","slugg":"^1.2.1","tap-min":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/stable-public-transport-ids_1.3.0_1601058838131_0.7533338818316977","host":"s3://npm-registry-packages"}},"1.3.1":{"name":"@derhuerst/stable-public-transport-ids","version":"1.3.1","keywords":["public transport","transit","id"],"author":{"name":"Jannis R","email":"mail@jannisr.de"},"license":"ISC","_id":"@derhuerst/stable-public-transport-ids@1.3.1","maintainers":[{"name":"derhuerst","email":"mail@jannisr.de"}],"homepage":"https://github.com/derhuerst/stable-public-transport-ids","bugs":{"url":"https://github.com/derhuerst/stable-public-transport-ids/issues"},"dist":{"shasum":"2f55704693bc2c5539170d475c0f39bd8b68be7a","tarball":"https://registry.npmjs.org/@derhuerst/stable-public-transport-ids/-/stable-public-transport-ids-1.3.1.tgz","fileCount":11,"integrity":"sha512-Hws3AabSd2ZDf9t6pKPN10LgA0iFA38CKDVKBuG9x8fEGe9/mMcSRYc6vkeK7I8iXojXDBQ/SgHeYEVs7rhvLA==","signatures":[{"sig":"MEUCIQC6dRBDfk6ZK0i0fhgXt1rnQqHZ993vONjdZFwmnwQcggIgS+cmERrQqzN1AQxJePwf5rMr2lzkKWDk37o8zVNw/hk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18296},"main":"index.js","engines":{"node":">=10"},"gitHead":"a58de1cba1a6082c696c5f26466c3d0a99d0fa91","scripts":{"test":"env NODE_ENV=dev node test.js | tap-min","prepublishOnly":"npm test"},"_npmUser":{"name":"derhuerst","email":"mail@jannisr.de"},"repository":{"url":"git+https://github.com/derhuerst/stable-public-transport-ids.git","type":"git"},"_npmVersion":"8.0.0","dataVersion":1,"description":"Get stable IDs for public transport stations, etc.","directories":{},"_nodeVersion":"16.11.1","dependencies":{"ngeohash":"^0.6.3","shorthash":"0.0.2","@turf/bbox":"^6.0.1","@turf/helpers":"^6.1.4","@turf/distance":"^6.0.1","@turf/center-of-mass":"^6.0.1"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.10.1","slugg":"^1.2.1","tap-min":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/stable-public-transport-ids_1.3.1_1635187733690_0.8177079456175067","host":"s3://npm-registry-packages"}},"1.3.2":{"name":"@derhuerst/stable-public-transport-ids","version":"1.3.2","keywords":["public transport","transit","id"],"author":{"name":"Jannis R","email":"mail@jannisr.de"},"license":"ISC","_id":"@derhuerst/stable-public-transport-ids@1.3.2","maintainers":[{"name":"derhuerst","email":"mail@jannisr.de"}],"homepage":"https://github.com/derhuerst/stable-public-transport-ids","bugs":{"url":"https://github.com/derhuerst/stable-public-transport-ids/issues"},"dist":{"shasum":"8c17a4a36618dab3f8347b92d4c96bec21d3535e","tarball":"https://registry.npmjs.org/@derhuerst/stable-public-transport-ids/-/stable-public-transport-ids-1.3.2.tgz","fileCount":11,"integrity":"sha512-tWVCM3Sau2zhlznJ1oAYlIllzf69ZwWL4/EB8v7uJ/fWdaNJ6ya3vK7eypFsEpJLOKXnJX0snDNJKGzwypLH3A==","signatures":[{"sig":"MEYCIQCMY/FYUShXVRUhVheqO2s3B1BU6KhNYUE+b+u8WCsFeQIhANG0BkIthaCOZ41lcKii1BQA+ileV31zluBU2cv+zNZL","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18417},"main":"index.js","engines":{"node":">=10"},"gitHead":"a3c05d20ccf6f796f27b0cc679b4c4948b941c2d","scripts":{"lint":"eslint .","test":"env NODE_ENV=dev node test.js | tap-min","benchmark":"node benchmark.js","prepublishOnly":"npm run lint && npm test"},"_npmUser":{"name":"derhuerst","email":"mail@jannisr.de"},"repository":{"url":"git+https://github.com/derhuerst/stable-public-transport-ids.git","type":"git"},"_npmVersion":"8.1.0","dataVersion":1,"description":"Get stable IDs for public transport stations, etc.","directories":{},"_nodeVersion":"17.0.1","dependencies":{"ngeohash":"^0.6.3","shorthash":"0.0.2","@turf/bbox":"^6.0.1","@turf/helpers":"^6.1.4","@turf/distance":"^6.0.1","@turf/center-of-mass":"^6.0.1"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.3.1","slugg":"^1.2.1","eslint":"^7.32.0","tap-min":"^2.0.0","benchmark":"^2.1.4"},"_npmOperationalInternal":{"tmp":"tmp/stable-public-transport-ids_1.3.2_1635773274440_0.895828019330251","host":"s3://npm-registry-packages"}},"2.0.0-alpha.1":{"name":"@derhuerst/stable-public-transport-ids","version":"2.0.0-alpha.1","keywords":["public transport","transit","id"],"author":{"name":"Jannis R","email":"mail@jannisr.de"},"license":"ISC","_id":"@derhuerst/stable-public-transport-ids@2.0.0-alpha.1","maintainers":[{"name":"derhuerst","email":"mail@jannisr.de"}],"homepage":"https://github.com/derhuerst/stable-public-transport-ids","bugs":{"url":"https://github.com/derhuerst/stable-public-transport-ids/issues"},"dist":{"shasum":"3f50d4e2770b2ccc29e7287514da3c246718b652","tarball":"https://registry.npmjs.org/@derhuerst/stable-public-transport-ids/-/stable-public-transport-ids-2.0.0-alpha.1.tgz","fileCount":11,"integrity":"sha512-auCAD7KdG3rs0Dr7JI0F6OBOaKG0Dazq/jsxJcj9+SzesMbJai81VZ853sQVnMWmZLM1SzdBPPEAGV6YjjUXLw==","signatures":[{"sig":"MEYCIQC/80t4D0ZyCmgmbBTPC/D+5zVeyBAGvxVbxYY2q/fszgIhAIFpK3M/Gbe0yS1lrpywEKoztociADfRbc9kVWxBx3NG","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19948},"main":"index.js","readme":"# stable-public-transport-ids\n\n**Get stable IDs for public transport data.**\n\n[![npm version](https://img.shields.io/npm/v/@derhuerst/stable-public-transport-ids.svg)](https://www.npmjs.com/package/@derhuerst/stable-public-transport-ids)\n[![build status](https://api.travis-ci.org/derhuerst/stable-public-transport-ids.svg?branch=master)](https://travis-ci.org/derhuerst/stable-public-transport-ids)\n![ISC-licensed](https://img.shields.io/github/license/derhuerst/stable-public-transport-ids.svg)\n[![support me via GitHub Sponsors](https://img.shields.io/badge/support%20me-donate-fa7664.svg)](https://github.com/sponsors/derhuerst)\n[![chat with me on Twitter](https://img.shields.io/badge/chat%20with%20me-on%20Twitter-1da1f2.svg)](https://twitter.com/derhuerst)\n\n[*Why linked open transit data?*](https://github.com/public-transport/why-linked-open-transit-data) explains the background of this project:\n\n> Because public transportation *data* reflects strongly interconnected public transportation *systems*, it has many links. **When data by an author/source \"A\" refers to data from *another* author/source \"B\", it needs a reliable and precise way to identify items in \"B\" data.** In federated systems, especially in [linked data](https://en.wikipedia.org/wiki/Linked_data) systems, the need for stable & globally unique IDs is even more significant than in traditional, centralized systems.\n\n**This project explores how to derive such IDs *from the data itself* in a deterministic way**. There is an inherent trade-off: In order to prevent collisions, the input data (which the ID will be computed from) must be quite detailed; On the other hand, for these IDs to be easily computable (e.g. offline), only little data should have to be transferred & stored.\n\nIt is an ongoing process of\n\n- generalising them enough to support all relevant kinds of public transportation infrastructure,\n- designing them to identify local infrastructure precisely (enough),\n- finding and \"covering\" enough edge cases for the standard to be practical in real-world szenarios,\n- formally describing, testing and implementing the standard in multiple evironments & programming languages.\n\n**In addition, we use indeterministic but well-known (and thus rather stable) identifiers**, such as [Wikidata](https://wikidata.org/) IDs, to work as a \"stepping-stone\" until the deterministic IDs have widespread adoption.\n\n**This project computes *multiple* IDs per item, with a varying degree of precision (and thus uniqueness), stability and reusability.** Refer to the [*Usage* section](#usage) for more.\n\n## Installation\n\n```shell\nnpm install @derhuerst/stable-public-transport-ids\n```\n\n\n## Usage\n\n*Note:* This project is currently strongly biased towards *German* [GTFS](https://developers.google.com/transit/gtfs/) & [`hafas-client`](https://github.com/public-transport/hafas-client) data.\n\nFor each supported \"type\", this package exposes a function that generates a list of IDs. If any of these match any ID of another item (of the same type), they can be considered the same.\n\nAs an example, the function `areStopsTheSame` checks if two stops are the same:\n\n```js\n// This string will be used for all non-globally-unique pieces\n// of identifying information (e.g. IDs from the provider).\n// You could use the canonical abbreviation of the transit operator.\nconst dataSource = 'some-data-source'\n\n// The following implementation is simplified for demonstration purposes.\n// In practice, it should handle as many cases as possible:\n// - normalize various Unicode chars to ASCII\n// - remove inconsistent spaces\n// - remove vendor-/API-specific prefixes & suffixes\nconst normalizeName = name => name.toLowerCase().trim().replace(/\\s+/, '-')\n\nconst createGetStopIds = require('@derhuerst/stable-public-transport-ids/stop')\nconst getStopIds = createGetStopIds(dataSource, normalizeName)\n\nconst areStopsTheSame = (stopA, stopB) => {\n\tconst idsForA = getStopIds(stopA)\n\treturn getStopIds(stopB).some(idForB => idsForA.includes(idForB))\n}\n```\n\nWe can generate IDs for stops, lines & departures/arrivals as follows:\n\n```js\nconst createGetLineIds = require('@derhuerst/stable-public-transport-ids/line')\nconst createGetArrDepIds = require('@derhuerst/stable-public-transport-ids/arrival-departure')\n\nconst stop = {\n\ttype: 'station',\n\tid: '900000024101',\n\tname: 'S Charlottenburg',\n\tlocation: {\n\t\ttype: 'location',\n\t\tlatitude: 52.504806,\n\t\tlongitude: 13.303846\n\t}\n}\nconst stopIds = getStopIds(stop)\nconsole.log(stopIds)\n// [\n// \t'1:some data source:900000024101',\n// \t'1:s charlottenburg:52.50:13.30'\n// \t…\n// ]\n\nconst line = {\n\ttype: 'line',\n\tid: '18299',\n\tproduct: 'suburban',\n\tpublic: true,\n\tname: 'S9'\n}\nconst getLineIds = createGetLineIds(dataSource, normalizeName)\nconst lineIds = getLineIds(line)\n\nconsole.log(lineIds)\n// [\n// \t'1:some data source:18299',\n// \t'1:suburban:s9'\n// ]\n\nconst dep = {\n\ttripId: 'trip-12345',\n\tstop,\n\twhen: null,\n\tplannedWhen: '2017-12-17T19:32:00+01:00',\n\tplatform: null,\n\tplannedPlatform: '2',\n\tline,\n\tfahrtNr: '12345',\n\tdirection: 'S Spandau'\n}\nconst routeIds = []\nconst tripIds = [dep.tripId]\nconst getArrDepIds = createGetArrDepIds(stopIds, tripIds, routeIds, lineIds, normalizeName)\n\nconsole.log(getArrDepIds('departure', dep))\n// [\n// \t'1:departure:1:some data source:900000024101:trip-12345',\n// \t'1:departure:1:s charlottenburg:52.50:13.30:trip-12345'\n// \t…\n// ]\n```\n\n\n## Related\n\n- [*Why linked open transit data?*](https://github.com/public-transport/why-linked-open-transit-data)\n- [Linked Connections](https://linkedconnections.org)\n- [TransitLand Onestop ID scheme](https://transit.land/documentation/onestop-id-scheme/)\n- [*Identification of Fixed Objects in Public Transport (IFOPT)* ](https://en.wikipedia.org/wiki/Identification_of_Fixed_Objects_in_Public_Transport) [CEN](https://en.wikipedia.org/wiki/European_Committee_for_Standardization) spec\n\n\n## Contributing\n\nIf you have a question or need support using `stable-public-transport-ids`, please double-check your code and setup first. If you think you have found a bug or want to propose a feature, refer to [the issues page](https://github.com/derhuerst/stable-public-transport-ids/issues).\n","engines":{"node":">=10"},"gitHead":"0d1b820f816a02a6e4bcbb5acc6bbd8f03282a23","scripts":{"lint":"eslint .","test":"env NODE_ENV=dev node test.js | tap-min","benchmark":"node benchmark.js","prepublishOnly":"npm run lint && npm test"},"_npmUser":{"name":"derhuerst","email":"mail@jannisr.de"},"repository":{"url":"git+https://github.com/derhuerst/stable-public-transport-ids.git","type":"git"},"_npmVersion":"8.1.2","dataVersion":1,"description":"Get stable IDs for public transport stations, etc.","directories":{},"_nodeVersion":"17.0.1","dependencies":{"ngeohash":"^0.6.3","shorthash":"0.0.2","@turf/bbox":"^6.0.1","@turf/helpers":"^6.1.4","@turf/distance":"^6.0.1","@turf/center-of-mass":"^6.0.1"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"tape":"^5.3.1","slugg":"^1.2.1","eslint":"^7.32.0","tap-min":"^2.0.0","benchmark":"^2.1.4"},"_npmOperationalInternal":{"tmp":"tmp/stable-public-transport-ids_2.0.0-alpha.1_1636059367213_0.31481582034455813","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@derhuerst/stable-public-transport-ids","version":"2.0.0","keywords":["public transport","transit","id"],"author":{"name":"Jannis R","email":"mail@jannisr.de"},"license":"ISC","_id":"@derhuerst/stable-public-transport-ids@2.0.0","maintainers":[{"name":"derhuerst","email":"mail@jannisr.de"}],"homepage":"https://github.com/derhuerst/stable-public-transport-ids","bugs":{"url":"https://github.com/derhuerst/stable-public-transport-ids/issues"},"dist":{"shasum":"acc401e80c436a6d8bcb9f1cb85458bb883342b9","tarball":"https://registry.npmjs.org/@derhuerst/stable-public-transport-ids/-/stable-public-transport-ids-2.0.0.tgz","fileCount":11,"integrity":"sha512-m0SXIpJt2FE22jXBR5Ugo10zvc9rgyASqBw3FDIhdTLqhxviP9AjQG4FNd0nZIyzzyvJ4yb65Ctjmu750YPC6Q==","signatures":[{"sig":"MEUCIQDhWgDtrmKWW76EIJ8UK/qNiIT6QMHB9RO1R5b9qMHJ/AIgeOXztFcVigseOzhy2hFtkflx55ogeidn+IeZxgoSeAA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19939,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlnVcCRA9TVsSAnZWagAA/6oQAI2F6NIKdftZbpRYDGKg\nVobTS+/Ln1sDiE5B9izvxKq4TusfqpdNaimrV3rli2HBg+oKoddVlN37FYr8\nGmMCvH+ivGaZFxvd2kcPgfJSlz/em+qABqF6Y6PB7Pwb5SW62NIzCaBGYSDz\nvyuBPftsTdjgMqhU7iQsEqYkrYZoislAX2mbsOO5rS/tP4T7NX1z5pbzuMn9\n8+Dke71RVP58alvMX8ZoDxc28iosHzPhcICXbamRX2YY3cqR/Zg2+qScDRyd\n3r1bOx1+Z58tvQoUnzuAhp5N3SvC7JJPZoDhHvIW+uG67koBfGuWkgII4zaW\nJtVIF3/zuzChnyY1QhbPxijeKxnvk4cq3eqP32ZZ6I/zqzJH3u0MKkDoWiZ6\npOXJe+dvRbTiu6PK7m9VemEymWf5ww+zuvTJK0ZUHE6S4iNPh2Xre4Om2TBn\nA9t+kl0yTg4/skRBW3FcO5kfezaqVs8tH5KyaSY0LnKT6DDflEMacsblWeUJ\nmkvyg1eDhrz6ejDaSwNcrpllaKr8xV1orhBRQJBVnZLM0iiE1W9oeMmDcEUP\nfBoNiIlS4g6gFIhwfPm4Qe7KEMEi9od6OV5kITQN9xGuzBbA6xBMg6t40bwl\nz6ZSIIW6fAm3n77Tz1YkXjsAswJVZhZT8q14SgObpyM6j4P3HMtAUkpyokD/\n8gqE\r\n=vcMV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","engines":{"node":">=14"},"gitHead":"b69a038e6513fdc3a4774b4c031b935c10724fd6","scripts":{"lint":"eslint .","test":"env NODE_ENV=dev node test.js | tap-min","benchmark":"node benchmark.js","prepublishOnly":"npm run lint && npm test"},"_npmUser":{"name":"derhuerst","email":"mail@jannisr.de"},"repository":{"url":"git+https://github.com/derhuerst/stable-public-transport-ids.git","type":"git"},"_npmVersion":"8.1.3","dataVersion":1,"description":"Get stable IDs for public transport stations, etc.","directories":{},"_nodeVersion":"17.0.1","dependencies":{"ngeohash":"^0.6.3","shorthash":"0.0.2","@turf/bbox":"^6.0.1","@turf/helpers":"^6.1.4","@turf/distance":"^6.0.1","@turf/center-of-mass":"^6.0.1"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.3.1","slugg":"^1.2.1","eslint":"^8.2.0","tap-min":"^2.0.0","benchmark":"^2.1.4"},"_npmOperationalInternal":{"tmp":"tmp/stable-public-transport-ids_2.0.0_1637250396434_0.4712177820782044","host":"s3://npm-registry-packages"}},"2.1.0":{"name":"@derhuerst/stable-public-transport-ids","version":"2.1.0","keywords":["public transport","transit","id"],"author":{"name":"Jannis R","email":"mail@jannisr.de"},"license":"ISC","_id":"@derhuerst/stable-public-transport-ids@2.1.0","maintainers":[{"name":"derhuerst","email":"mail@jannisr.de"}],"homepage":"https://github.com/derhuerst/stable-public-transport-ids","bugs":{"url":"https://github.com/derhuerst/stable-public-transport-ids/issues"},"dist":{"shasum":"1d80e08bacf9ef73bddd44e4166cd0ab0072d253","tarball":"https://registry.npmjs.org/@derhuerst/stable-public-transport-ids/-/stable-public-transport-ids-2.1.0.tgz","fileCount":12,"integrity":"sha512-odmW/RejxFVhEU7ATLmPl6zb/DAY6qyVcs4FieCXrGaMQLyts66uyT33XmHtF11oXaGileIwgp/I7WePEks0og==","signatures":[{"sig":"MEUCIGV4+mescblOpSGhVZHaSLboTqs/BWBThg4KHrixrvjEAiEA2B5CrFs2JPNaHBAQ4bym7qbvXURpxnSfKt9CLFx+zT0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19943,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiPFRcACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr7AA/+P3SR2Ln7RTqli+rcMX94JgDxNlqCcMiLx380CwH/kcPxszFL\r\nhWAIM6Sid/ETiFCr0n/ecRYSfwS8ca8KXjzSH3eQlCm6oYYjy1Mohxj+B6+7\r\nqLEqee9fbjF8PMMZmaWsiAOevsd1y9/WE+5LaDkxpiX3MGcUHhLZnnm5nN0p\r\n667nhu8rkCwNp4NNep2M1UhyiqGfOFW+DuPr6MJtxEdRCIhE8MlEnUq/fysA\r\nkkG//GSH540dYkpJYiwrA+IsL6mTIF8oArjTZ9prvXTJDbkbVI8OlswOxvwI\r\nR7n0ehkI6woSDp+0pmMIFGCXhD6ZGK9+ZeInL9Us26CK7IuSdzxlO2xEoyRo\r\nFKEbqS+Z6mnnrOQlM05QvS5hn++R7etxN1OtPUaviKdDMzpvdkULSCw45eIk\r\n35tVDd1ND5JSQgAqWBv2PxrcRGsP6k8rH/S7aGaNCUkNkjMAQkejaklFjqJP\r\nIX3HLVO0yMNYo9RMV4oEUewzMsNZggb5rF1V1SaZlySkatP8U2y0xfDklTSg\r\n7JhhgwvBTKLeGYMdTWQRa0udn+P+b3QhfgLBRPEx/Xoa1aKBdX26hElYKLs/\r\nBBF9CZSv8p1k/W8mlLrg2MHONy7SoDj4HJNTYjYslMlnjPsPN4+V2tqpdGYK\r\nzV90l7QhvqTBXFLZfKJf/qAYQCrAeHm1PRE=\r\n=X/Oz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","engines":{"node":">=14"},"gitHead":"cdfb63910a45e8bd28bf2f815e1390071f5f9dcf","scripts":{"lint":"eslint .","test":"env NODE_ENV=dev node test.js | tap-min","benchmark":"node benchmark.js","prepublishOnly":"npm run lint && npm test"},"_npmUser":{"name":"derhuerst","email":"mail@jannisr.de"},"repository":{"url":"git+https://github.com/derhuerst/stable-public-transport-ids.git","type":"git"},"_npmVersion":"8.4.1","dataVersion":1,"description":"Get stable IDs for public transport stations, etc.","directories":{},"_nodeVersion":"17.5.0","dependencies":{"ngeohash":"^0.6.3","shorthash":"0.0.2","@turf/bbox":"^6.0.1","@turf/helpers":"^6.1.4","@turf/distance":"^6.0.1","@turf/center-of-mass":"^6.0.1"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.3.1","slugg":"^1.2.1","eslint":"^8.2.0","tap-min":"^2.0.0","benchmark":"^2.1.4"},"_npmOperationalInternal":{"tmp":"tmp/stable-public-transport-ids_2.1.0_1648120924028_0.9837545696474557","host":"s3://npm-registry-packages"}},"3.0.0-alpha.1":{"name":"@derhuerst/stable-public-transport-ids","version":"3.0.0-alpha.1","keywords":["public transport","transit","id"],"author":{"name":"Jannis R","email":"mail@jannisr.de"},"license":"ISC","_id":"@derhuerst/stable-public-transport-ids@3.0.0-alpha.1","maintainers":[{"name":"derhuerst","email":"mail@jannisr.de"}],"homepage":"https://github.com/derhuerst/stable-public-transport-ids","bugs":{"url":"https://github.com/derhuerst/stable-public-transport-ids/issues"},"dist":{"shasum":"9cb79d6d7e98c2654ebc1201f3fe65d9a43d2178","tarball":"https://registry.npmjs.org/@derhuerst/stable-public-transport-ids/-/stable-public-transport-ids-3.0.0-alpha.1.tgz","fileCount":12,"integrity":"sha512-3HDi98p+QHs9mGSBMmvjdYC9Wj4BEpsHBh65E/nPr3tAnxnNNpgk1TOH0Jg/Z5XDdVMvcDhIu18kUgUBoCm2Zg==","signatures":[{"sig":"MEUCIA4COmz5AccZKtGp7rg8D4l+ScgW2lZ7fP2t5YnyzI5iAiEAyqDANx1+q5bSUDD6CqTsWNMSNWTir7ecmYOlHm5KMuI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22990},"main":"index.js","type":"module","readme":"# stable-public-transport-ids\n\n**Get stable IDs for public transport data.**\n\n[![npm version](https://img.shields.io/npm/v/@derhuerst/stable-public-transport-ids.svg)](https://www.npmjs.com/package/@derhuerst/stable-public-transport-ids)\n![ISC-licensed](https://img.shields.io/github/license/derhuerst/stable-public-transport-ids.svg)\n[![support me via GitHub Sponsors](https://img.shields.io/badge/support%20me-donate-fa7664.svg)](https://github.com/sponsors/derhuerst)\n[![chat with me on Twitter](https://img.shields.io/badge/chat%20with%20me-on%20Twitter-1da1f2.svg)](https://twitter.com/derhuerst)\n\n[*Why linked open transit data?*](https://github.com/public-transport/why-linked-open-transit-data) explains the background of this project:\n\n> Because public transportation *data* reflects strongly interconnected public transportation *systems*, it has many links. **When data by an author/source \"A\" refers to data from *another* author/source \"B\", it needs a reliable and precise way to identify items in \"B\" data.** In federated systems, especially in [linked data](https://en.wikipedia.org/wiki/Linked_data) systems, the need for stable & globally unique IDs is even more significant than in traditional, centralized systems.\n\n**This project explores how to derive such IDs *from the data itself* in a deterministic way**. There is an inherent trade-off: In order to prevent collisions, the input data (which the ID will be computed from) must be quite detailed; On the other hand, for these IDs to be easily computable (e.g. offline), only little data should have to be transferred & stored.\n\nIt is an ongoing process of\n\n- generalising them enough to support all relevant kinds of public transportation infrastructure,\n- designing them to identify local infrastructure precisely (enough),\n- finding and \"covering\" enough edge cases for the standard to be practical in real-world szenarios,\n- formally describing, testing and implementing the standard in multiple evironments & programming languages.\n\n**In addition, we use indeterministic but well-known (and thus rather stable) identifiers**, such as [Wikidata](https://wikidata.org/) IDs, to work as a \"stepping-stone\" until the deterministic IDs have widespread adoption.\n\n**This project computes *multiple* IDs per item, with a varying degree of precision (and thus uniqueness), stability and reusability.** Refer to the [*Usage* section](#usage) for more.\n\n## Installation\n\n```shell\nnpm install @derhuerst/stable-public-transport-ids\n```\n\n\n## Usage\n\n*Note:* This project is currently strongly biased towards *German* [GTFS](https://developers.google.com/transit/gtfs/) & [`hafas-client`](https://github.com/public-transport/hafas-client) data.\n\nFor each supported \"type\", this package exposes a function that generates a list of IDs. If any of these match any ID of another item (of the same type), they can be considered the same.\n\nAs an example, the function `areStopsTheSame` checks if two stops are the same:\n\n```js\nimport {createGetStableStopIds} from '@derhuerst/stable-public-transport-ids/stop.js'\n\n// This string will be used for all non-globally-unique pieces\n// of identifying information (e.g. IDs from the provider).\n// You could use the canonical abbreviation of the transit operator.\nconst dataSource = 'some-data-source'\n\n// The following implementation is simplified for demonstration purposes.\n// In practice, it should handle as many cases as possible:\n// - normalize various Unicode chars to ASCII\n// - remove inconsistent spaces\n// - remove vendor-/API-specific prefixes & suffixes\nconst normalizeName = name => name.toLowerCase().trim().replace(/\\s+/, '-')\nconst getStopIds = createGetStableStopIds(dataSource, normalizeName)\n\nconst areStopsTheSame = (stopA, stopB) => {\n\tconst idsForA = getStopIds(stopA)\n\treturn getStopIds(stopB).some(idForB => idsForA.includes(idForB))\n}\n```\n\nWe can generate IDs for stops, lines & departures/arrivals as follows:\n\n```js\nimport {createGetStableLineIds} from '@derhuerst/stable-public-transport-ids/line.js'\nimport {createGetStableDepartureIds} from '@derhuerst/stable-public-transport-ids/arrival-departure.js'\n\nconst stop = {\n\ttype: 'station',\n\tid: '900000024101',\n\tname: 'S Charlottenburg',\n\tlocation: {\n\t\ttype: 'location',\n\t\tlatitude: 52.504806,\n\t\tlongitude: 13.303846\n\t}\n}\nconst stopIds = getStopIds(stop)\nconsole.log(stopIds)\n// [\n// \t'2:some data source:900000024101',\n// \t'2:s charlottenburg:52.50:13.30'\n// \t…\n// ]\n\nconst line = {\n\ttype: 'line',\n\tid: '18299',\n\tproduct: 'suburban',\n\tpublic: true,\n\tname: 'S9'\n}\nconst getLineIds = createGetStableLineIds(dataSource, normalizeName)\nconst lineIds = getLineIds(line)\n\nconsole.log(lineIds)\n// [\n// \t'2:some data source:18299',\n// \t'2:suburban:s9'\n// ]\n\nconst dep = {\n\ttripId: 'trip-12345',\n\tstop,\n\twhen: null,\n\tplannedWhen: '2017-12-17T19:32:00+01:00',\n\tplatform: null,\n\tplannedPlatform: '2',\n\tline,\n\tfahrtNr: '12345',\n\tdirection: 'S Spandau'\n}\nconst routeIds = []\nconst tripIds = [['some-data-source' + dep.tripId, 20]]\nconst getDepIds = createGetStableDepartureIds(\n\tstopIds, tripIds, routeIds, lineIds,\n\tnormalizeName,\n)\n\nconsole.log(getDepIds('departure', dep))\n// [\n// \t'2:dep:some data source:900000024101:trip-12345',\n// \t'2:dep:s charlottenburg:52.50:13.30:trip-12345'\n// \t…\n// ]\n```\n\n\n## Related\n\n- [*Why linked open transit data?*](https://github.com/public-transport/why-linked-open-transit-data)\n- [Linked Connections](https://linkedconnections.org)\n- [TransitLand Onestop ID scheme](https://transit.land/documentation/onestop-id-scheme/)\n- [*Identification of Fixed Objects in Public Transport (IFOPT)* ](https://en.wikipedia.org/wiki/Identification_of_Fixed_Objects_in_Public_Transport) [CEN](https://en.wikipedia.org/wiki/European_Committee_for_Standardization) spec\n\n\n## Contributing\n\nIf you have a question or need support using `stable-public-transport-ids`, please double-check your code and setup first. If you think you have found a bug or want to propose a feature, refer to [the issues page](https://github.com/derhuerst/stable-public-transport-ids/issues).\n","engines":{"node":">=20"},"gitHead":"187726c3dfc5cc67e39db152939f398762ce6d81","scripts":{"lint":"eslint .","test":"env NODE_ENV=dev node test.js | tap-min","benchmark":"node benchmark.js","prepublishOnly":"npm run lint && npm test"},"_npmUser":{"name":"derhuerst","email":"mail@jannisr.de"},"repository":{"url":"git+https://github.com/derhuerst/stable-public-transport-ids.git","type":"git"},"_npmVersion":"10.2.4","dataVersion":2,"description":"Get stable IDs for public transport stations, etc.","directories":{},"_nodeVersion":"21.6.2","dependencies":{"ngeohash":"^0.6.3","shorthash":"0.0.2","@turf/bbox":"^6.0.1","@turf/helpers":"^6.1.4","@turf/distance":"^6.0.1","@turf/center-of-mass":"^6.0.1"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"tape":"^5.3.1","slugg":"^1.2.1","eslint":"^8.2.0","tap-min":"^3.0.0","benchmark":"^2.1.4"},"_npmOperationalInternal":{"tmp":"tmp/stable-public-transport-ids_3.0.0-alpha.1_1709567359255_0.1455759584608618","host":"s3://npm-registry-packages"}},"3.0.0-alpha.2":{"name":"@derhuerst/stable-public-transport-ids","version":"3.0.0-alpha.2","keywords":["public transport","transit","id"],"author":{"name":"Jannis R","email":"mail@jannisr.de"},"license":"ISC","_id":"@derhuerst/stable-public-transport-ids@3.0.0-alpha.2","maintainers":[{"name":"derhuerst","email":"mail@jannisr.de"}],"homepage":"https://github.com/derhuerst/stable-public-transport-ids","bugs":{"url":"https://github.com/derhuerst/stable-public-transport-ids/issues"},"dist":{"shasum":"7eb97db5b7aa3a423cfed688cf67aa681568ad02","tarball":"https://registry.npmjs.org/@derhuerst/stable-public-transport-ids/-/stable-public-transport-ids-3.0.0-alpha.2.tgz","fileCount":12,"integrity":"sha512-6bJyJO1J/ufHgn3fGCyHycSQYieh/CUDspnoxHTsCC4GrBsOg05qpwyTETK2JQbIE7gFbKtq1wVcQaCoKbQhxw==","signatures":[{"sig":"MEYCIQC7ksGAq1LB/neoQQHGoRfX2f8sCuHLelNslTLvB/OW1QIhANHNIHbdDUnnruZlMEv6dO+CbN9SBoKLU1ykiGllOaTU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22908},"main":"index.js","type":"module","readme":"# stable-public-transport-ids\n\n**Get stable IDs for public transport data.**\n\n[![npm version](https://img.shields.io/npm/v/@derhuerst/stable-public-transport-ids.svg)](https://www.npmjs.com/package/@derhuerst/stable-public-transport-ids)\n![ISC-licensed](https://img.shields.io/github/license/derhuerst/stable-public-transport-ids.svg)\n[![support me via GitHub Sponsors](https://img.shields.io/badge/support%20me-donate-fa7664.svg)](https://github.com/sponsors/derhuerst)\n[![chat with me on Twitter](https://img.shields.io/badge/chat%20with%20me-on%20Twitter-1da1f2.svg)](https://twitter.com/derhuerst)\n\n[*Why linked open transit data?*](https://github.com/public-transport/why-linked-open-transit-data) explains the background of this project:\n\n> Because public transportation *data* reflects strongly interconnected public transportation *systems*, it has many links. **When data by an author/source \"A\" refers to data from *another* author/source \"B\", it needs a reliable and precise way to identify items in \"B\" data.** In federated systems, especially in [linked data](https://en.wikipedia.org/wiki/Linked_data) systems, the need for stable & globally unique IDs is even more significant than in traditional, centralized systems.\n\n**This project explores how to derive such IDs *from the data itself* in a deterministic way**. There is an inherent trade-off: In order to prevent collisions, the input data (which the ID will be computed from) must be quite detailed; On the other hand, for these IDs to be easily computable (e.g. offline), only little data should have to be transferred & stored.\n\nIt is an ongoing process of\n\n- generalising them enough to support all relevant kinds of public transportation infrastructure,\n- designing them to identify local infrastructure precisely (enough),\n- finding and \"covering\" enough edge cases for the standard to be practical in real-world szenarios,\n- formally describing, testing and implementing the standard in multiple evironments & programming languages.\n\n**In addition, we use indeterministic but well-known (and thus rather stable) identifiers**, such as [Wikidata](https://wikidata.org/) IDs, to work as a \"stepping-stone\" until the deterministic IDs have widespread adoption.\n\n**This project computes *multiple* IDs per item, with a varying degree of precision (and thus uniqueness), stability and reusability.** Refer to the [*Usage* section](#usage) for more.\n\n## Installation\n\n```shell\nnpm install @derhuerst/stable-public-transport-ids\n```\n\n\n## Usage\n\n*Note:* This project is currently strongly biased towards *German* [GTFS](https://developers.google.com/transit/gtfs/) & [`hafas-client`](https://github.com/public-transport/hafas-client) data.\n\nFor each supported \"type\", this package exposes a function that generates a list of IDs. If any of these match any ID of another item (of the same type), they can be considered the same.\n\nAs an example, the function `areStopsTheSame` checks if two stops are the same:\n\n```js\nimport {createGetStableStopIds} from '@derhuerst/stable-public-transport-ids/stop.js'\n\n// This string will be used for all non-globally-unique pieces\n// of identifying information (e.g. IDs from the provider).\n// You could use the canonical abbreviation of the organization that generates and/or manages the stop IDs.\nconst namespace = 'some-data-source'\n\n// The following implementation is simplified for demonstration purposes.\n// In practice, it should handle as many cases as possible:\n// - normalize various Unicode chars to ASCII\n// - remove inconsistent spaces\n// - remove vendor-/API-specific prefixes & suffixes\nconst normalizeName = name => name.toLowerCase().trim().replace(/\\s+/, '-')\nconst getStopIds = createGetStableStopIds(namespace, normalizeName)\n\nconst areStopsTheSame = (stopA, stopB) => {\n\tconst idsForA = getStopIds(stopA)\n\treturn getStopIds(stopB).some(idForB => idsForA.includes(idForB))\n}\n```\n\nWe can generate IDs for stops, lines & departures/arrivals as follows:\n\n```js\nimport {createGetStableLineIds} from '@derhuerst/stable-public-transport-ids/line.js'\nimport {createGetStableDepartureIds} from '@derhuerst/stable-public-transport-ids/arrival-departure.js'\n\nconst stop = {\n\ttype: 'station',\n\tid: '900000024101',\n\tname: 'S Charlottenburg',\n\tlocation: {\n\t\ttype: 'location',\n\t\tlatitude: 52.504806,\n\t\tlongitude: 13.303846\n\t}\n}\nconst stopIds = getStopIds(stop)\nconsole.log(stopIds)\n// [\n// \t'2:some data source:900000024101',\n// \t'2:s charlottenburg:52.50:13.30'\n// \t…\n// ]\n\nconst line = {\n\ttype: 'line',\n\tid: '18299',\n\tproduct: 'suburban',\n\tpublic: true,\n\tname: 'S9'\n}\nconst getLineIds = createGetStableLineIds(namespace, normalizeName)\nconst lineIds = getLineIds(line)\n\nconsole.log(lineIds)\n// [\n// \t'2:some data source:18299',\n// \t'2:suburban:s9'\n// ]\n\nconst dep = {\n\ttripId: 'trip-12345',\n\tstop,\n\twhen: null,\n\tplannedWhen: '2017-12-17T19:32:00+01:00',\n\tplatform: null,\n\tplannedPlatform: '2',\n\tline,\n\tfahrtNr: '12345',\n\tdirection: 'S Spandau'\n}\nconst routeIds = []\nconst tripIds = [['some-data-source' + dep.tripId, 20]]\nconst getDepIds = createGetStableDepartureIds(\n\tstopIds, tripIds, routeIds, lineIds,\n\tnormalizeName,\n)\n\nconsole.log(getDepIds('departure', dep))\n// [\n// \t'2:dep:some data source:900000024101:trip-12345',\n// \t'2:dep:s charlottenburg:52.50:13.30:trip-12345'\n// \t…\n// ]\n```\n\n\n## Related\n\n- [*Why linked open transit data?*](https://github.com/public-transport/why-linked-open-transit-data)\n- [Linked Connections](https://linkedconnections.org)\n- [TransitLand Onestop ID scheme](https://transit.land/documentation/onestop-id-scheme/)\n- [*Identification of Fixed Objects in Public Transport (IFOPT)* ](https://en.wikipedia.org/wiki/Identification_of_Fixed_Objects_in_Public_Transport) [CEN](https://en.wikipedia.org/wiki/European_Committee_for_Standardization) spec\n\n\n## Contributing\n\nIf you have a question or need support using `stable-public-transport-ids`, please double-check your code and setup first. If you think you have found a bug or want to propose a feature, refer to [the issues page](https://github.com/derhuerst/stable-public-transport-ids/issues).\n","engines":{"node":">=20"},"gitHead":"58d16d486a9a43d32e8f48d7f20686ea1ebaee83","scripts":{"lint":"eslint .","test":"node --test test.js","benchmark":"node benchmark.js","prepublishOnly":"npm run lint && npm test"},"_npmUser":{"name":"derhuerst","email":"mail@jannisr.de"},"repository":{"url":"git+https://github.com/derhuerst/stable-public-transport-ids.git","type":"git"},"_npmVersion":"10.7.0","dataVersion":2,"description":"Get stable IDs for public transport stations, etc.","directories":{},"_nodeVersion":"22.2.0","dependencies":{"ngeohash":"^0.6.3","shorthash":"0.0.2","@turf/bbox":"^7.0.0","@turf/helpers":"^7.0.0","@turf/distance":"^7.0.0","@turf/center-of-mass":"^7.0.0"},"_hasShrinkwrap":false,"readmeFilename":"readme.md","devDependencies":{"slugg":"^1.2.1","eslint":"^8.2.0","benchmark":"^2.1.4"},"_npmOperationalInternal":{"tmp":"tmp/stable-public-transport-ids_3.0.0-alpha.2_1718276782886_0.9678147089199809","host":"s3://npm-registry-packages"}},"3.0.0-alpha.3":{"name":"@derhuerst/stable-public-transport-ids","description":"Get stable IDs for public transport stations, etc.","version":"3.0.0-alpha.3","type":"module","dataVersion":2,"main":"index.js","keywords":["public transport","transit","id"],"author":{"name":"Jannis R","email":"mail@jannisr.de"},"homepage":"https://github.com/derhuerst/stable-public-transport-ids","repository":{"type":"git","url":"git+https://github.com/derhuerst/stable-public-transport-ids.git"},"bugs":{"url":"https://github.com/derhuerst/stable-public-transport-ids/issues"},"license":"ISC","engines":{"node":">=20"},"dependencies":{"@turf/bbox":"^7.0.0","@turf/center-of-mass":"^7.0.0","@turf/distance":"^7.0.0","@turf/helpers":"^7.0.0","ngeohash":"^0.6.3","shorthash":"0.0.2"},"devDependencies":{"benchmark":"^2.1.4","eslint":"^8.2.0","slugg":"^1.2.1"},"scripts":{"benchmark":"node benchmark.js","lint":"eslint .","test":"node --test test.js","prepublishOnly":"npm run lint && npm test"},"_id":"@derhuerst/stable-public-transport-ids@3.0.0-alpha.3","readme":"# stable-public-transport-ids\n\n**Get stable IDs for public transport data.**\n\n[![npm version](https://img.shields.io/npm/v/@derhuerst/stable-public-transport-ids.svg)](https://www.npmjs.com/package/@derhuerst/stable-public-transport-ids)\n![ISC-licensed](https://img.shields.io/github/license/derhuerst/stable-public-transport-ids.svg)\n[![support me via GitHub Sponsors](https://img.shields.io/badge/support%20me-donate-fa7664.svg)](https://github.com/sponsors/derhuerst)\n[![chat with me on Twitter](https://img.shields.io/badge/chat%20with%20me-on%20Twitter-1da1f2.svg)](https://twitter.com/derhuerst)\n\n[*Why linked open transit data?*](https://github.com/public-transport/why-linked-open-transit-data) explains the background of this project:\n\n> Because public transportation *data* reflects strongly interconnected public transportation *systems*, it has many links. **When data by an author/source \"A\" refers to data from *another* author/source \"B\", it needs a reliable and precise way to identify items in \"B\" data.** In federated systems, especially in [linked data](https://en.wikipedia.org/wiki/Linked_data) systems, the need for stable & globally unique IDs is even more significant than in traditional, centralized systems.\n\n**This project explores how to derive such IDs *from the data itself* in a deterministic way**. There is an inherent trade-off: In order to prevent collisions, the input data (which the ID will be computed from) must be quite detailed; On the other hand, for these IDs to be easily computable (e.g. offline), only little data should have to be transferred & stored.\n\nIt is an ongoing process of\n\n- generalising them enough to support all relevant kinds of public transportation infrastructure,\n- designing them to identify local infrastructure precisely (enough),\n- finding and \"covering\" enough edge cases for the standard to be practical in real-world szenarios,\n- formally describing, testing and implementing the standard in multiple evironments & programming languages.\n\n**In addition, we use indeterministic but well-known (and thus rather stable) identifiers**, such as [Wikidata](https://wikidata.org/) IDs, to work as a \"stepping-stone\" until the deterministic IDs have widespread adoption.\n\n**This project computes *multiple* IDs per item, with a varying degree of precision (and thus uniqueness), stability and reusability.** Refer to the [*Usage* section](#usage) for more.\n\n## Installation\n\n```shell\nnpm install @derhuerst/stable-public-transport-ids\n```\n\n\n## How it works\n\n*Note:* This project is currently strongly biased towards *German* [GTFS](https://developers.google.com/transit/gtfs/) & [`hafas-client`](https://github.com/public-transport/hafas-client) data.\n\nFor each supported \"type\", this package exposes **a function that generates a list of IDs. If any of these match any ID of another item (of the same type), they can be considered equal** with a certain degree of certainty.\n\nIDs also have an associated specificity, which allow you to make (vage) assumptions about this degree of certainty. For example, when trying to find out if two items represent the same physical entity, you might want to expect some degree of certainty, or only match IDs with a similar degree of certainty.\n\nAs it is currently implemented, the IDs' specificities are integers, and their order of magnitude roughly represents the degree of specificity. As an example, let's consider stable stop IDs:\n\nstable ID | specificity\n-|-\n`2:Q111326217` | `10`\n`2:some-data-source:900000024101` | `20`\n`2:s-charlottenburg:52.5050:13.3040` | `30`\n`2:s-charlottenburg:52.5050:13.3050` | `31`\n`2:s-charlottenburg:52.5050:13.3030` | `31`\n`2:s-charlottenburg:52.5060:13.3040` | `31`\n`2:s-charlottenburg:52.5040:13.3040` | `31`\n`2:s-charlottenburg:52.5060:13.3050` | `32`\n`2:s-charlottenburg:52.5060:13.3030` | `32`\n`2:s-charlottenburg:52.5040:13.3050` | `32`\n`2:s-charlottenburg:52.5040:13.3030` | `32`\n\n\n## Usage\n\nAs an example, the function `areStopsTheSame` checks if two stops are the same:\n\n```js\nimport {createGetStableStopIds} from '@derhuerst/stable-public-transport-ids/stop.js'\n\n// This string will be used for all non-globally-unique pieces\n// of identifying information (e.g. IDs from the provider).\n// You could use the canonical abbreviation of the organization that generates and/or manages the stop IDs.\nconst namespace = 'some-data-source'\n\n// The following implementation is simplified for demonstration purposes.\n// In practice, it should handle as many cases as possible:\n// - normalize various Unicode chars to ASCII\n// - remove inconsistent spaces\n// - remove vendor-/API-specific prefixes & suffixes\nconst normalizeName = name => name.toLowerCase().trim().replace(/\\s+/, '-')\nconst getStopIds = createGetStableStopIds(namespace, normalizeName)\n\nconst areStopsTheSame = (stopA, stopB) => {\n\tconst idsForA = getStopIds(stopA)\n\treturn getStopIds(stopB).some(idForB => idsForA.includes(idForB))\n}\n```\n\nWe can generate IDs for stops, lines & departures/arrivals as follows:\n\n```js\nimport {createGetStableLineIds} from '@derhuerst/stable-public-transport-ids/line.js'\nimport {createGetStableDepartureIds} from '@derhuerst/stable-public-transport-ids/arrival-departure.js'\n\nconst stop = {\n\ttype: 'station',\n\tid: '900000024101',\n\tname: 'S Charlottenburg',\n\tlocation: {\n\t\ttype: 'location',\n\t\tlatitude: 52.504806,\n\t\tlongitude: 13.303846\n\t}\n}\nconst stopIds = getStopIds(stop)\nconsole.log(stopIds)\n// [\n// \t'2:some-data-source:900000024101',\n// \t'2:s charlottenburg:52.50:13.30'\n// \t…\n// ]\n\nconst line = {\n\ttype: 'line',\n\tid: '18299',\n\tproduct: 'suburban',\n\tpublic: true,\n\tname: 'S9'\n}\nconst getLineIds = createGetStableLineIds(namespace, normalizeName)\nconst lineIds = getLineIds(line)\n\nconsole.log(lineIds)\n// [\n// \t'2:some-data-source:18299',\n// \t'2:suburban:s9'\n// ]\n\nconst dep = {\n\ttripId: 'trip-12345',\n\tstop,\n\twhen: null,\n\tplannedWhen: '2017-12-17T19:32:00+01:00',\n\tplatform: null,\n\tplannedPlatform: '2',\n\tline,\n\tfahrtNr: '12345',\n\tdirection: 'S Spandau'\n}\nconst routeIds = []\nconst tripIds = [['some-data-source' + dep.tripId, 20]]\nconst getDepIds = createGetStableDepartureIds(\n\tstopIds, tripIds, routeIds, lineIds,\n\tnormalizeName,\n)\n\nconsole.log(getDepIds('departure', dep))\n// [\n// \t'2:dep:some-data-source:900000024101:trip-12345',\n// \t'2:dep:s charlottenburg:52.50:13.30:trip-12345'\n// \t…\n// ]\n```\n\n\n## Related\n\n- [*Why linked open transit data?*](https://github.com/public-transport/why-linked-open-transit-data)\n- [Linked Connections](https://linkedconnections.org)\n- [TransitLand Onestop ID scheme](https://transit.land/documentation/onestop-id-scheme/)\n- [*Identification of Fixed Objects in Public Transport (IFOPT)* ](https://en.wikipedia.org/wiki/Identification_of_Fixed_Objects_in_Public_Transport) [CEN](https://en.wikipedia.org/wiki/European_Committee_for_Standardization) spec\n\n\n## Contributing\n\nIf you have a question or need support using `stable-public-transport-ids`, please double-check your code and setup first. If you think you have found a bug or want to propose a feature, refer to [the issues page](https://github.com/derhuerst/stable-public-transport-ids/issues).\n","readmeFilename":"readme.md","gitHead":"ee0bc3d3f1dc3a6600ff7db03ab5668c5320b2a9","_nodeVersion":"22.2.0","_npmVersion":"10.7.0","dist":{"integrity":"sha512-BaHi5SYcXgkkBbwAz0Ovv2UXikpmJzmFU2YEObkV8k+k6mmi0Sl0rRcsxUs29beXfcojMBZid38NW7o3RaMjAg==","shasum":"9ddaa95ed4f2405ef2a29c86f92bab5481515377","tarball":"https://registry.npmjs.org/@derhuerst/stable-public-transport-ids/-/stable-public-transport-ids-3.0.0-alpha.3.tgz","fileCount":12,"unpackedSize":23922,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDl+4HiKakwW0UIXZeLe0aINBqIg6+73rjQQuHDNt8IVgIgY8SCadfKZSIfGUeSUhhXbucHItxAQvyrTxsjYL7jW0k="}]},"_npmUser":{"name":"derhuerst","email":"mail@jannisr.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/stable-public-transport-ids_3.0.0-alpha.3_1718981501039_0.7244653602988149"},"_hasShrinkwrap":false}},"time":{"created":"2019-10-01T21:42:25.016Z","modified":"2024-06-21T14:51:41.378Z","1.0.0":"2019-10-01T21:42:25.393Z","1.0.1":"2019-12-16T18:49:59.748Z","1.1.0":"2020-01-13T14:55:21.703Z","1.2.0":"2020-03-06T17:17:32.933Z","1.3.0":"2020-09-25T18:33:58.377Z","1.3.1":"2021-10-25T18:48:53.878Z","1.3.2":"2021-11-01T13:27:54.562Z","2.0.0-alpha.1":"2021-11-04T20:56:07.337Z","2.0.0":"2021-11-18T15:46:36.602Z","2.1.0":"2022-03-24T11:22:04.197Z","3.0.0-alpha.1":"2024-03-04T15:49:19.434Z","3.0.0-alpha.2":"2024-06-13T11:06:23.074Z","3.0.0-alpha.3":"2024-06-21T14:51:41.217Z"},"maintainers":[{"name":"derhuerst","email":"mail@jannisr.de"}],"author":{"name":"Jannis R","email":"mail@jannisr.de"},"repository":{"url":"git+https://github.com/derhuerst/stable-public-transport-ids.git","type":"git"},"keywords":["public transport","transit","id"],"license":"ISC","homepage":"https://github.com/derhuerst/stable-public-transport-ids","bugs":{"url":"https://github.com/derhuerst/stable-public-transport-ids/issues"},"readme":"","readmeFilename":""}