{"_id":"@synonymdev/slashtags-seeder","_rev":"26-333859e18826968b7e25d1fc7cd91a76","name":"@synonymdev/slashtags-seeder","dist-tags":{"latest":"1.0.0-alpha.4"},"versions":{"1.0.0-alpha.0":{"name":"@synonymdev/slashtags-seeder","version":"1.0.0-alpha.0","author":"","license":"ISC","_id":"@synonymdev/slashtags-seeder@1.0.0-alpha.0","maintainers":[{"name":"pwltr","email":"philippwalter@pm.me"},{"name":"miguelmedeirosweb","email":"miguel@miguelmedeiros.com.br"},{"name":"rbndg","email":"rbandegi@gmail.com"},{"name":"bitcoinerrorlog","email":"john@synonym.to"},{"name":"jayvdb","email":"jayvdb1@gmail.com"},{"name":"coreyphillips","email":"corey.lyle.phillips@gmail.com"},{"name":"nzh","email":"ar.nazeh@gmail.com"}],"dist":{"shasum":"fe0ba3d1bd6af87e1ae94f2cc7d96336579c651c","tarball":"https://registry.npmjs.org/@synonymdev/slashtags-seeder/-/slashtags-seeder-1.0.0-alpha.0.tgz","fileCount":19,"integrity":"sha512-Chy+PzwyFnBuiJ3EWqMca/brJUe4uaYdQoHWgpuKSl7qZYGrd4k4Y6GAZkdO+slWYurDvKPrAz5B3MTvYlnoEQ==","signatures":[{"sig":"MEQCIHLe+XvBEk6avFC5l/njQl9PiagVYPHSlE6496xlFn+hAiBAWf8AiHpbKdl59+SOmvo/J8TROYQoWqjTIF15IKomAg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":39257},"main":"index.js","gitHead":"c10e11ad52348d29b4be41bb77c41cacc4c0076b","scripts":{"test":"brittle test/*","start":"node bin.js"},"_npmUser":{"name":"nzh","email":"ar.nazeh@gmail.com"},"_npmVersion":"9.5.0","description":"Slashtags seeding server and RPC client","directories":{},"_nodeVersion":"18.15.0","dependencies":{"config":"^3.3.7","fastify":"^4.2.0","hyperbee":"^2.0.0","corestore":"github:slashtags/corestore#passive-replication","hyperswarm":"^4.3.6","compact-encoding":"^2.11.0","@hyperswarm/testnet":"^3.1.1","@synonymdev/slashtags-rpc":"^1.0.0-alpha.1","@synonymdev/slashtags-sdk":"^1.0.0-alpha.18"},"_hasShrinkwrap":false,"devDependencies":{"brittle":"^3.1.1","random-access-memory":"^6.1.0"},"_npmOperationalInternal":{"tmp":"tmp/slashtags-seeder_1.0.0-alpha.0_1684226535841_0.18615470998884964","host":"s3://npm-registry-packages"}},"1.0.0-alpha.1":{"name":"@synonymdev/slashtags-seeder","version":"1.0.0-alpha.1","_id":"@synonymdev/slashtags-seeder@1.0.0-alpha.1","maintainers":[{"name":"pwltr","email":"philippwalter@pm.me"},{"name":"miguelmedeirosweb","email":"miguel@miguelmedeiros.com.br"},{"name":"rbndg","email":"rbandegi@gmail.com"},{"name":"bitcoinerrorlog","email":"john@synonym.to"},{"name":"jayvdb","email":"jayvdb1@gmail.com"},{"name":"coreyphillips","email":"corey.lyle.phillips@gmail.com"},{"name":"nzh","email":"ar.nazeh@gmail.com"}],"dist":{"shasum":"a1f76fe992bac15e998d941b580f7200f90a38a1","tarball":"https://registry.npmjs.org/@synonymdev/slashtags-seeder/-/slashtags-seeder-1.0.0-alpha.1.tgz","fileCount":27,"integrity":"sha512-yRZL3ziLlfXxRzPAUBGQk5KwqAZfro9Xp9gUuzkmUrBgwQvswzb94a4AFgbVNPEq1imvxgzjpgnfJFZ7KqmmTQ==","signatures":[{"sig":"MEUCIQD3cLutSXC5kb6GyAZsykXVv7GHEA5ikMloVP+dNdBzwAIgZL8QAEgKiC3M0Z0TuQ0f9dbyxM3CiIoysogS6Lw1liM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":31596},"main":"index.js","gitHead":"53f3fc24bc3427b8e953c1843b28a0502ba5160a","scripts":{"lint":"standard --fix","test":"brittle test/* -cov","build":"tsc","fullcheck":"npm run lint && npm run build && npm run test","prepublishOnly":"npm run fullcheck"},"_npmUser":{"name":"nzh","email":"ar.nazeh@gmail.com"},"_npmVersion":"9.5.0","description":"Slashtags seeding server and RPC client","directories":{},"_nodeVersion":"18.15.0","dependencies":{"fastify":"^4.2.0","hyperbee":"^2.0.0","corestore":"github:slashtags/corestore#passive-replication","hyperswarm":"^4.3.6","compact-encoding":"^2.11.0","@hyperswarm/testnet":"^3.1.1","@synonymdev/slashtags-rpc":"^1.0.0-alpha.1"},"_hasShrinkwrap":false,"devDependencies":{"brittle":"^3.1.1","standard":"^17.0.0","typescript":"^5.0.4","@types/node":"^20.2.3","random-access-memory":"^6.1.0"},"_npmOperationalInternal":{"tmp":"tmp/slashtags-seeder_1.0.0-alpha.1_1684905748162_0.9933856797486023","host":"s3://npm-registry-packages"}},"1.0.0-alpha.2":{"name":"@synonymdev/slashtags-seeder","version":"1.0.0-alpha.2","_id":"@synonymdev/slashtags-seeder@1.0.0-alpha.2","maintainers":[{"name":"pwltr","email":"philippwalter@pm.me"},{"name":"miguelmedeirosweb","email":"miguel@miguelmedeiros.com.br"},{"name":"rbndg","email":"rbandegi@gmail.com"},{"name":"bitcoinerrorlog","email":"john@synonym.to"},{"name":"jayvdb","email":"jayvdb1@gmail.com"},{"name":"coreyphillips","email":"corey.lyle.phillips@gmail.com"},{"name":"nzh","email":"ar.nazeh@gmail.com"}],"dist":{"shasum":"70ad2e47fdfff47b1963fdf05fb1a9900f8dfd10","tarball":"https://registry.npmjs.org/@synonymdev/slashtags-seeder/-/slashtags-seeder-1.0.0-alpha.2.tgz","fileCount":27,"integrity":"sha512-LxfLobX9ozcW/8ClwARU5/cH6A1dWImMOO9CA0D/1s4TYTzPzKC7TBV85gBR7DPRoeHCO97nqxSWT91tuhFLtA==","signatures":[{"sig":"MEUCIDUs8SC9OKH+INfU3AANVuK0ChfWv6EjAOX0bbcqZDZ/AiEA8zUrMkeo4KuZCuTMlUm+cRlVOpv4vAP8UQyhuv3a+sA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":32133},"main":"index.js","gitHead":"c4e1dbbf03f425069ee316e3f6c40f864df078ce","scripts":{"lint":"standard --fix","test":"brittle test/* -cov","build":"tsc","fullcheck":"npm run lint && npm run build && npm run test","prepublishOnly":"npm run fullcheck"},"_npmUser":{"name":"nzh","email":"ar.nazeh@gmail.com"},"_npmVersion":"9.5.0","description":"Slashtags seeding server and RPC client","directories":{},"_nodeVersion":"18.15.0","dependencies":{"fastify":"^4.2.0","hyperbee":"^2.0.0","corestore":"github:slashtags/corestore#passive-replication","hyperswarm":"^4.3.6","compact-encoding":"^2.11.0","@hyperswarm/testnet":"^3.1.1","@synonymdev/slashtags-rpc":"^1.0.0-alpha.1"},"_hasShrinkwrap":false,"devDependencies":{"brittle":"^3.1.1","standard":"^17.0.0","typescript":"^5.0.4","@types/node":"^20.2.3","random-access-memory":"^6.1.0"},"_npmOperationalInternal":{"tmp":"tmp/slashtags-seeder_1.0.0-alpha.2_1686121552219_0.03275163325347119","host":"s3://npm-registry-packages"}},"1.0.0-alpha.3":{"name":"@synonymdev/slashtags-seeder","version":"1.0.0-alpha.3","_id":"@synonymdev/slashtags-seeder@1.0.0-alpha.3","maintainers":[{"name":"pwltr","email":"philippwalter@pm.me"},{"name":"miguelmedeirosweb","email":"miguel@miguelmedeiros.com.br"},{"name":"rbndg","email":"rbandegi@gmail.com"},{"name":"bitcoinerrorlog","email":"john@synonym.to"},{"name":"jayvdb","email":"jayvdb1@gmail.com"},{"name":"coreyphillips","email":"corey.lyle.phillips@gmail.com"},{"name":"nzh","email":"ar.nazeh@gmail.com"}],"dist":{"shasum":"8e64f401f6c4717fc94d820531d0b99cb8824e9c","tarball":"https://registry.npmjs.org/@synonymdev/slashtags-seeder/-/slashtags-seeder-1.0.0-alpha.3.tgz","fileCount":27,"integrity":"sha512-JCEbhUsXk4HtitVrpRbngMrM3AMN43Qp/PLAMYqQOKJ5rvqyJZw4jYYwJ/n8WYEug2oPh2wjQyZAhhnzt0roOg==","signatures":[{"sig":"MEYCIQCgOAzXaNTNSl3ex6bpZ30i6qEMZLPe3S9pDggN40nPKQIhAMkz9IgnZyvRGxSzHnuAwVGXgf8xHAtz8IEjF4Z/ZpcV","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":31751},"main":"index.js","gitHead":"5ba93e1219771b5360fe66548cfbd20b6724598e","scripts":{"lint":"standard --fix","test":"brittle test/* -cov","build":"tsc","fullcheck":"npm run lint && npm run build && npm run test","prepublishOnly":"npm run fullcheck"},"_npmUser":{"name":"nzh","email":"ar.nazeh@gmail.com"},"_npmVersion":"9.5.0","description":"Slashtags seeding server and RPC client","directories":{},"_nodeVersion":"18.15.0","dependencies":{"fastify":"^4.2.0","hyperbee":"^2.0.0","corestore":"github:slashtags/corestore#passive-replication","hyperswarm":"^4.3.6","compact-encoding":"^2.11.0","@hyperswarm/testnet":"^3.1.1","@synonymdev/slashtags-rpc":"^1.0.0-5"},"_hasShrinkwrap":false,"devDependencies":{"brittle":"^3.1.1","standard":"^17.0.0","typescript":"^5.0.4","@types/node":"^20.2.3","random-access-memory":"^6.1.0"},"_npmOperationalInternal":{"tmp":"tmp/slashtags-seeder_1.0.0-alpha.3_1686206897560_0.6529425693962712","host":"s3://npm-registry-packages"}},"1.0.0-alpha.4":{"name":"@synonymdev/slashtags-seeder","version":"1.0.0-alpha.4","_id":"@synonymdev/slashtags-seeder@1.0.0-alpha.4","maintainers":[{"name":"pwltr","email":"philippwalter@pm.me"},{"name":"miguelmedeirosweb","email":"miguel@miguelmedeiros.com.br"},{"name":"rbndg","email":"rbandegi@gmail.com"},{"name":"bitcoinerrorlog","email":"john@synonym.to"},{"name":"jayvdb","email":"jayvdb1@gmail.com"},{"name":"coreyphillips","email":"corey.lyle.phillips@gmail.com"},{"name":"nzh","email":"ar.nazeh@gmail.com"}],"dist":{"shasum":"9bf8718acf97c6ae0dcdb6dcfe6d3303dc375eca","tarball":"https://registry.npmjs.org/@synonymdev/slashtags-seeder/-/slashtags-seeder-1.0.0-alpha.4.tgz","fileCount":27,"integrity":"sha512-stx+H2dsblldgFgXxaapKTPQ/uohc0MeGP/hvMXuu7A1Lmcd6k0yCIuYXgdBIYja+4+9yzVr4ejDFuUJJRWwtA==","signatures":[{"sig":"MEUCIEi506X7OGiNmpwOspUJtAGDECzcIYOSQ2W+UnVY5TA+AiEAlKUee0YFSZXfcWKDMd0Bkrhv8QevIOZhaF7J9VianjE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":31757},"main":"index.js","gitHead":"53e0ac78b7e9dd5d3bb22edda6eb0f81683dcde4","scripts":{"lint":"standard --fix","test":"brittle test/* -cov","build":"tsc","fullcheck":"npm run lint && npm run build && npm run test","prepublishOnly":"npm run fullcheck"},"_npmUser":{"name":"nzh","email":"ar.nazeh@gmail.com"},"_npmVersion":"9.5.0","description":"Slashtags seeding server and RPC client","directories":{},"_nodeVersion":"18.15.0","dependencies":{"fastify":"^4.2.0","hyperbee":"^2.0.0","corestore":"github:slashtags/corestore#passive-replication","hyperswarm":"^4.3.6","compact-encoding":"^2.11.0","@hyperswarm/testnet":"^3.1.1","@synonymdev/slashtags-rpc":"^1.0.0-alpha.5"},"_hasShrinkwrap":false,"devDependencies":{"brittle":"^3.1.1","standard":"^17.0.0","typescript":"^5.0.4","@types/node":"^20.2.3","random-access-memory":"^6.1.0"},"_npmOperationalInternal":{"tmp":"tmp/slashtags-seeder_1.0.0-alpha.4_1686207241769_0.5343154538863251","host":"s3://npm-registry-packages"}}},"time":{"created":"2023-05-16T08:42:15.840Z","modified":"2026-09-07T09:46:39.137Z","1.0.0-alpha.0":"2023-05-16T08:42:16.008Z","1.0.0-alpha.1":"2023-05-24T05:22:28.326Z","1.0.0-alpha.2":"2023-06-07T07:05:52.406Z","1.0.0-alpha.3":"2023-06-08T06:48:17.720Z","1.0.0-alpha.4":"2023-06-08T06:54:01.974Z"},"description":"Slashtags seeding server and RPC client","maintainers":[{"email":"pavel@synonym.to","name":"thisispav"},{"email":"john@synonym.to","name":"bitcoinerrorlog"},{"email":"corey.lyle.phillips@gmail.com","name":"coreyphillips"},{"email":"philippwalter@pm.me","name":"pwltr"},{"email":"deniszalessky@gmail.com","name":"dzdidi_restored"},{"email":"octrif@gmail.com","name":"ovitrif"},{"email":"crequena2@gmail.com","name":"shacollision"},{"email":"jamesbrowning91@gmail.com","name":"catch-21"},{"email":"oier@synonym.to","name":"tipogi"},{"email":"andrei@synonym.to","name":"andrei-synonym"},{"email":"tomos@synonym.to","name":"86667-tomos"},{"email":"jayvdb1@gmail.com","name":"jayvdb"},{"email":"sevi_buehler@hotmail.com","name":"sebubu"}],"readme":"# slashtag-seeding-server\n\nSeeds Hypercores\n\nMake HTTP requests to the this server to tell it about new Hypercores to be seeded. It will then track and maintain an in-sync copy of the hypercore.\n\n## Add seeds using Slashtags\n\n```\n// The slashtags (mine one, and the seeding servers)\nconst mySlashtag = 'slash:...my slashtag...'\nconst serverSlashtag = 'slash:...servers slashtag here...'\n\n// A hypercore you want to seed (probably shared on hyperswarm)\nconst core = ... your hypercore that you want to seed ...\n\n// Create the protocol and add the hypercores public key to the seeding list\nconst protocol = new SeedingProtocol(mySlashtag)\nconst response = await protocol.seedAdd(serverSlashtag, core.key.toString('hex'))\n```\n\n## The Web Server\n\nBy default listens on port 3000 (see config)\n\nPOST `/seeding/hypercore` with a json body...\n```\n{\n    \"publicKey\": \"public key of hypercore, hex encoded\"\n}\n```\n\nGET `/seeding/hypercore/:key`\nwhere :key is the hex encoded public key of a hypercore.\nQueries the seeding server for up to date information about a specific hypercore.\nA 200 response will contain the following\n```\n{\n    key: <public key>,\n    length: <current length of the hypercore on the seeding server>,\n    contiguousLength: <Number of blocks contiguously available starting from the first block of this core>,\n    lastUpdated: <when the seeding server last saw a change (ms timestamp)>,\n}\n```\n\n## Config\n\n* **http.logger**: true to enable logging on the HTTP server\n* **http.port**: the port for the http server to listen on\n* **store.path**: The path to a folder where the app will store data (for hypercores, key/value store etc)\n* **store.dbName**: A name used to derive the keys for the hyperbee key value store\n* **slashtags.primaryKey**: The key used to derive the servers slashtag\n* **testClient.path**: The path to store data for the test client\n* **testClient.coreName**: The name used to derive the keys for the test hypercore that is created\n\nTo change the config from the defaults found in `config/default.json`, you should create a new file `config/local.json` and override any settings you want to be different from the defaults in there. `local.json` is git ignored.\n\n## Inner workings...\n\nWhen a new hypercore is given to the seeding server (eg via an http request), we create a local copy of the hypercore. We join a topic (the hypercores discovery key) in the hyperswarm to find other peers that are online and download any updates.\n\nFinally we store the new hypercores key in a key/value store (Hyperbee).\n\nDuring startup, all keys in the key/value store are fetched so we can restart the process of monitoring all the hypercores we are responsible for tracking.\n","readmeFilename":"README.md"}