{"_id":"@codylabs/snowflake-id-generator","_rev":"8-61b5a8494aab92c5f57d00d718452a68","name":"@codylabs/snowflake-id-generator","dist-tags":{"latest":"0.1.0"},"versions":{"0.0.1":{"name":"@codylabs/snowflake-id-generator","version":"0.0.1","author":{"name":"Cody Nguyen"},"_id":"@codylabs/snowflake-id-generator@0.0.1","maintainers":[{"name":"cuongnd1705","email":"cuongnd.work@gmail.com"}],"dist":{"shasum":"2bce88d308285bd466b34a039d3367710202fe97","tarball":"https://registry.npmjs.org/@codylabs/snowflake-id-generator/-/snowflake-id-generator-0.0.1.tgz","fileCount":5,"integrity":"sha512-QU7qAgDE84125tixilZRJnVxC/inSDxSG2sl8Ln8/vpm0/xMnaMSJOrGylig6aBi/AXhK+Cb1b3zjgIaJcj/kw==","signatures":[{"sig":"MEUCICiGoOojyRzJN55U2sOrvNwTD1OyDYXPYifyFgc8FOrvAiEArItapefcfFSXw8iA2N9OpMsEPyA6DWzvEiNjJUEqt3M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10820},"main":"./dist/index.js","_from":"file:codylabs-snowflake-id-generator-0.0.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","scripts":{"test":"jest --passWithNoTests","build":"tsup src/index.ts --format cjs,esm --dts","clean":"rm -rf .turbo node_modules dist","test:watch":"jest --watch"},"_npmUser":{"name":"cuongnd1705","email":"cuongnd.work@gmail.com"},"_resolved":"/private/var/folders/0k/nvltwwn96g1fl0_3lkl2v01r0000gn/T/32f3f90fd746dda81aea3d6c0fdeb4ce/codylabs-snowflake-id-generator-0.0.1.tgz","_integrity":"sha512-QU7qAgDE84125tixilZRJnVxC/inSDxSG2sl8Ln8/vpm0/xMnaMSJOrGylig6aBi/AXhK+Cb1b3zjgIaJcj/kw==","_npmVersion":"10.9.0","description":"A Snowflake ID generator for unique identifier creation.","directories":{},"_nodeVersion":"22.12.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^6.0.0","typescript":"^5.6.3","@codylabs/typescript-configs":"0.0.6"},"_npmOperationalInternal":{"tmp":"tmp/snowflake-id-generator_0.0.1_1733459358228_0.6495189766934915","host":"s3://npm-registry-packages"}},"0.0.2":{"name":"@codylabs/snowflake-id-generator","version":"0.0.2","author":{"name":"Cody Nguyen"},"_id":"@codylabs/snowflake-id-generator@0.0.2","maintainers":[{"name":"cuongnd1705","email":"cuongnd.work@gmail.com"}],"dist":{"shasum":"0c10e3af956e43760a9f980638fca5c91edd7846","tarball":"https://registry.npmjs.org/@codylabs/snowflake-id-generator/-/snowflake-id-generator-0.0.2.tgz","fileCount":5,"integrity":"sha512-Ukg+dWptQ478MMUTmLUi+eYuxzYtjSqmhfaKUWw5B6PlrAoXIH7EYyXdH0HcQWPBINKUDGUOWsO2pXgQkjNnfA==","signatures":[{"sig":"MEQCIASq+M6vvsyFx0bvZiWGqGWXDsAI5isizV5Gm2aknt0wAiAucscIZRwvDz5QLTQsn1QxWpxiPz81N7XaS3F+d4wPvQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10820},"main":"./dist/index.js","_from":"file:codylabs-snowflake-id-generator-0.0.2.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","scripts":{"test":"jest --passWithNoTests","build":"tsup src/index.ts --format cjs,esm --dts","clean":"rm -rf .turbo node_modules dist","test:watch":"jest --watch"},"_npmUser":{"name":"cuongnd1705","email":"cuongnd.work@gmail.com"},"_resolved":"/private/var/folders/wv/mjqybr5958sgj92d81_68wsh0000gn/T/10bfee829d8788de40f56cdb1cd99b66/codylabs-snowflake-id-generator-0.0.2.tgz","_integrity":"sha512-Ukg+dWptQ478MMUTmLUi+eYuxzYtjSqmhfaKUWw5B6PlrAoXIH7EYyXdH0HcQWPBINKUDGUOWsO2pXgQkjNnfA==","_npmVersion":"10.9.2","description":"A Snowflake ID generator for unique identifier creation.","directories":{},"_nodeVersion":"22.13.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^6.0.0","typescript":"^5.7.3","@codylabs/typescript-configs":"0.0.7"},"_npmOperationalInternal":{"tmp":"tmp/snowflake-id-generator_0.0.2_1738773570437_0.8542181648516047","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@codylabs/snowflake-id-generator","version":"0.0.3","author":{"name":"Cody Nguyen"},"_id":"@codylabs/snowflake-id-generator@0.0.3","maintainers":[{"name":"cuongnd1705","email":"cuongnd.work@gmail.com"}],"dist":{"shasum":"b1fc95e511594c04f3614c14cc6a02c9c7955d36","tarball":"https://registry.npmjs.org/@codylabs/snowflake-id-generator/-/snowflake-id-generator-0.0.3.tgz","fileCount":5,"integrity":"sha512-aL7MYyRtGZA5hU/iQnMzeeN4Kyg03NAgwS02vp2iR1hLJeZOxGdKAuJrCtszrf+wDVc4U5s26cqs02Gt5pjkIg==","signatures":[{"sig":"MEYCIQDFqSvg7ET+7Rx7paXYCv9L9pSFQU6wOuEdQ17xPBP43AIhAIWtKh64DiyW+osOguNUmKsaQLNArHz6VR8NsDAZ9609","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10851},"main":"./dist/index.js","_from":"file:codylabs-snowflake-id-generator-0.0.3.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","scripts":{"test":"jest --passWithNoTests","build":"tsup src/index.ts --format cjs,esm --dts","clean":"rm -rf .turbo node_modules dist","prebuild":"rimraf dist","test:watch":"jest --watch"},"_npmUser":{"name":"cuongnd1705","email":"cuongnd.work@gmail.com"},"_resolved":"/private/var/folders/wv/mjqybr5958sgj92d81_68wsh0000gn/T/610f29b2d27de69a5083daef59c1d0ff/codylabs-snowflake-id-generator-0.0.3.tgz","_integrity":"sha512-aL7MYyRtGZA5hU/iQnMzeeN4Kyg03NAgwS02vp2iR1hLJeZOxGdKAuJrCtszrf+wDVc4U5s26cqs02Gt5pjkIg==","_npmVersion":"10.9.2","description":"A Snowflake ID generator for unique identifier creation.","directories":{},"_nodeVersion":"22.13.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^6.0.0","typescript":"^5.7.3","@codylabs/typescript-configs":"0.0.7"},"_npmOperationalInternal":{"tmp":"tmp/snowflake-id-generator_0.0.3_1738774648381_0.5697608010268029","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@codylabs/snowflake-id-generator","version":"0.0.4","author":{"name":"Cody Nguyen"},"_id":"@codylabs/snowflake-id-generator@0.0.4","maintainers":[{"name":"cuongnd1705","email":"cuongnd.work@gmail.com"}],"dist":{"shasum":"e7feffb455d21c28edf731686388282f772922f4","tarball":"https://registry.npmjs.org/@codylabs/snowflake-id-generator/-/snowflake-id-generator-0.0.4.tgz","fileCount":6,"integrity":"sha512-3DsIYYkDUmi6MhE2VSGiMFwVRFXzCqBXS5JM7z6gg0rqs7GFx3f86i3rrUyg6AqPbbUEbSyLFLcWExdQs4qfHQ==","signatures":[{"sig":"MEYCIQCaelj/yms80RHoVJ8H5rKtDMbUk3CCr19AQLTq3q7T/QIhAJ//XywBd1dCQzFGhMI/m8p2M+ZTgyL+meFzmM17pdcp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17252},"main":"./dist/index.js","_from":"file:codylabs-snowflake-id-generator-0.0.4.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","scripts":{"test":"jest --passWithNoTests","build":"tsup src/index.ts --format cjs,esm --dts","clean":"rm -rf .turbo node_modules dist","prebuild":"rimraf dist","test:watch":"jest --watch"},"_npmUser":{"name":"cuongnd1705","email":"cuongnd.work@gmail.com"},"_resolved":"/private/var/folders/hk/4rrl8z7x7fx14d_xr0bclqyr0000gn/T/412c60cb538372e0ab5ee312e5080d6c/codylabs-snowflake-id-generator-0.0.4.tgz","_integrity":"sha512-3DsIYYkDUmi6MhE2VSGiMFwVRFXzCqBXS5JM7z6gg0rqs7GFx3f86i3rrUyg6AqPbbUEbSyLFLcWExdQs4qfHQ==","_npmVersion":"11.6.2","description":"A Snowflake ID generator for unique identifier creation.","directories":{},"_nodeVersion":"24.12.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5.9.3","@codylabs/typescript-configs":"0.0.7"},"_npmOperationalInternal":{"tmp":"tmp/snowflake-id-generator_0.0.4_1765957307166_0.10167166178880316","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@codylabs/snowflake-id-generator","version":"0.0.5","author":"Cody Nguyen","_id":"@codylabs/snowflake-id-generator@0.0.5","maintainers":[{"name":"cuongnd1705","email":"cuongnd.work@gmail.com"}],"dist":{"shasum":"0f89aac527ea77374b6d95785aba36336a89f332","tarball":"https://registry.npmjs.org/@codylabs/snowflake-id-generator/-/snowflake-id-generator-0.0.5.tgz","fileCount":6,"integrity":"sha512-+Zvowm+sC8YIsM0MwqhxJKZ1XRVWz6PGLLxdwtw6jHehEg3dSCVEgDgsWyB3mPt+Pn8CBWNNge4wXUQjJwz+8Q==","signatures":[{"sig":"MEQCID01eQ8rNQNegyVc6OunHPmCxkNuIzv6ShvuiAAeHKL7AiAIPYD5/FhMWKN30vchLwnL7Fs4aKdHOPoiVmS2I8trbQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16327},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","scripts":{"test":"jest --passWithNoTests","build":"tsdown src/index.ts --format cjs,esm --dts","clean":"rm -rf .turbo node_modules dist","prebuild":"rimraf dist","test:watch":"jest --watch"},"_npmUser":{"name":"cuongnd1705","email":"cuongnd.work@gmail.com"},"description":"A Snowflake ID generator for unique identifier creation.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.22.0","typescript":"^6.0.3","@codylabs/typescript-configs":"0.0.8"},"_npmOperationalInternal":{"tmp":"tmp/snowflake-id-generator_0.0.5_1779529538159_0.11579440096926485","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@codylabs/snowflake-id-generator","version":"0.0.6","author":"Cody Nguyen","_id":"@codylabs/snowflake-id-generator@0.0.6","maintainers":[{"name":"cuongnd1705","email":"cuongnd.work@gmail.com"}],"dist":{"shasum":"2fbc6f30595ce65ddb427104756528cf60dfdc09","tarball":"https://registry.npmjs.org/@codylabs/snowflake-id-generator/-/snowflake-id-generator-0.0.6.tgz","fileCount":6,"integrity":"sha512-UVKmyDjKgHzchBjCqiZsnlsZPlDADu9aIBbMm2VqniOFFhMzS1aNMzDg0rZsOIkMJxufed+dk1MaTq+QQGSdVA==","signatures":[{"sig":"MEQCICT2ADLKArN9n3dS9Gcyvl2R5idMJkNSR/bkDli+x4x7AiAfZUWuXaGRl5BDM5LR2K6fej+27N8kZzlJ+q409ojf6A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16574},"main":"./dist/index.cjs","types":"./dist/index.d.cts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"test":"jest --passWithNoTests","build":"tsdown src/index.ts --format cjs,esm --dts","clean":"rm -rf .turbo node_modules dist","prebuild":"rimraf dist","test:watch":"jest --watch"},"_npmUser":{"name":"cuongnd1705","email":"cuongnd.work@gmail.com"},"description":"A Snowflake ID generator for unique identifier creation.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.22.0","typescript":"^6.0.3","@codylabs/typescript-configs":"0.0.8"},"_npmOperationalInternal":{"tmp":"tmp/snowflake-id-generator_0.0.6_1779634121900_0.05141476702941605","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@codylabs/snowflake-id-generator","version":"0.0.7","author":"Cody Nguyen","license":"MIT","_id":"@codylabs/snowflake-id-generator@0.0.7","maintainers":[{"name":"cuongnd1705","email":"cuongnd.work@gmail.com"}],"homepage":"https://github.com/cuongnd1705/codylabs#readme","bugs":{"url":"https://github.com/cuongnd1705/codylabs/issues"},"dist":{"shasum":"3cd7e6b7d360404629a3844ec1a6084df9e91f27","tarball":"https://registry.npmjs.org/@codylabs/snowflake-id-generator/-/snowflake-id-generator-0.0.7.tgz","fileCount":6,"integrity":"sha512-A9eDXPsh1kxwP/jNmzV2VPi1+omoqqz9kaJfes7jPV0C+RWrGY/gkfTdAXmr0v2LfVVXTDZq6CmTcWxQXRatSw==","signatures":[{"sig":"MEUCICw7FNC30D66IuUAriIbof4aiWA3Pb76WWqcJ+5UiLofAiEAr67Llj2KKWftneQzMKN1CrqYEP1/B+y/BP9aNFuELUo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16844},"main":"./dist/index.cjs","types":"./dist/index.d.cts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"test":"vitest run","build":"tsdown src/index.ts --format cjs,esm --dts","clean":"rm -rf .turbo node_modules dist","prebuild":"rimraf dist","test:watch":"vitest"},"_npmUser":{"name":"cuongnd1705","email":"cuongnd.work@gmail.com"},"repository":{"url":"git+https://github.com/cuongnd1705/codylabs.git","type":"git"},"description":"A Snowflake ID generator for unique identifier creation.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.22.1","vitest":"^4.1.7","typescript":"^6.0.3","@codylabs/typescript-configs":"0.0.9"},"_npmOperationalInternal":{"tmp":"tmp/snowflake-id-generator_0.0.7_1780126506641_0.034541988884553954","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@codylabs/snowflake-id-generator","version":"0.1.0","description":"A Snowflake ID generator for unique identifier creation.","homepage":"https://github.com/cuongnd1705/codylabs#readme","bugs":{"url":"https://github.com/cuongnd1705/codylabs/issues"},"license":"MIT","author":"Cody Nguyen","repository":{"type":"git","url":"git+https://github.com/cuongnd1705/codylabs.git"},"main":"./dist/index.cjs","module":"./dist/index.mjs","types":"./dist/index.d.cts","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"publishConfig":{"access":"public"},"devDependencies":{"@codylabs/typescript-configs":"0.1.0","tsdown":"^0.22.14","typescript":"^6.0.3","vitest":"^4.1.11"},"scripts":{"build":"tsdown src/index.ts --format cjs,esm --dts","clean":"rm -rf .turbo node_modules dist","prebuild":"rimraf dist","test":"vitest run","test:watch":"vitest"},"_nodeVersion":"24.20.0","_id":"@codylabs/snowflake-id-generator@0.1.0","dist":{"integrity":"sha512-mfXVa5AoR5areLq+2eqVW0v/el+dRUxxh9qqacEiNt1rD9UK8g6GG8VORiwZTvHNRZOsMM2dgHeOcE4vCH7eyQ==","shasum":"d711b3a6219b8085970d982731a6937d61a41a41","tarball":"https://registry.npmjs.org/@codylabs/snowflake-id-generator/-/snowflake-id-generator-0.1.0.tgz","fileCount":6,"unpackedSize":16884,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCzFxyz25foDQB5bMXAfooRUdf0o64r1VOfjj9d4guAgAIgNMuh28vmwQbbG6BsumbESyndS2IkTI9lhlWmWZZYQ/Q="}]},"_npmUser":{"name":"cuongnd1705","email":"cuongnd.work@gmail.com"},"directories":{},"maintainers":[{"name":"cuongnd1705","email":"cuongnd.work@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/snowflake-id-generator_0.1.0_1788017130984_0.6199304594167783"},"_hasShrinkwrap":false}},"time":{"created":"2024-12-06T04:29:18.138Z","modified":"2026-08-29T15:25:31.300Z","0.0.1":"2024-12-06T04:29:18.411Z","0.0.2":"2025-02-05T16:39:30.676Z","0.0.3":"2025-02-05T16:57:28.561Z","0.0.4":"2025-12-17T07:41:47.308Z","0.0.5":"2026-05-23T09:45:38.310Z","0.0.6":"2026-05-24T14:48:42.048Z","0.0.7":"2026-05-30T07:35:06.777Z","0.1.0":"2026-08-29T15:25:31.119Z"},"bugs":{"url":"https://github.com/cuongnd1705/codylabs/issues"},"author":"Cody Nguyen","license":"MIT","homepage":"https://github.com/cuongnd1705/codylabs#readme","repository":{"type":"git","url":"git+https://github.com/cuongnd1705/codylabs.git"},"description":"A Snowflake ID generator for unique identifier creation.","maintainers":[{"name":"cuongnd1705","email":"cuongnd.work@gmail.com"}],"readme":"# Snowflake ID Generator\n\nA TypeScript implementation of Twitter's Snowflake ID generation algorithm. This package provides a distributed unique ID generator that creates 64-bit IDs based on timestamp, worker ID, datacenter ID, and sequence numbers.\n\n## Features\n\n- 64-bit unique ID generation\n- Configurable epoch\n- Supports worker and datacenter IDs for distributed systems\n- Zero dependencies\n- Written in TypeScript with full type safety\n\n## Installation\n\n```sh\n# npm\nnpm install @codylabs/snowflake-id-generator\n\n# yarn\nyarn add @codylabs/snowflake-id-generator\n\n# pnpm\npnpm add @codylabs/snowflake-id-generator\n```\n\n## Usage\n\n### Basic usage\n\n```ts\nimport { SnowflakeGenerator } from '@codylabs/snowflake-id-generator';\n\n// Create a new generator instance\nconst generator = new SnowflakeIdGenerator();\n\n// Generate a new ID\nconst id = generator.nextId();\nconsole.log(id.toString()); // Example: \"1234567890123456789\"\n```\n\n### Advanced configuration:\n\n```ts\nconst generator = new SnowflakeIdGenerator(1n, 1n, {\n  epoch: 1609459200000n, // Custom epoch (default: 2021-01-01)\n  workerIdBits: 5n, // Bits allocated for worker ID\n  datacenterIdBits: 5n, // Bits allocated for datacenter ID\n  sequenceBits: 12n, // Bits allocated for sequence\n  sequence: 0n, // Starting sequence number\n});\n```\n\n### API Reference\n\nSnowflakeIdGenerator\n\n**Constructor**\n\n```ts\nconstructor(\n  workerId: Snowflake = 0n,\n  datacenterId: Snowflake = 0n,\n  options?: SnowflakeIdGeneratorOptions\n)\n```\n\n**Options**\n\n```ts\ninterface SnowflakeIdGeneratorOptions {\n  epoch?: Snowflake; // Custom epoch timestamp\n  workerIdBits?: Snowflake; // Number of bits for worker ID\n  datacenterIdBits?: Snowflake; // Number of bits for datacenter ID\n  sequence?: Snowflake; // Starting sequence number\n  sequenceBits?: Snowflake; // Number of bits for sequence\n}\n```\n\n**Methods**\n\n- `nextId(): bigint` - Generates and returns the next unique ID\n- `tilNextMillis(lastTimestamp: bigint): bigint` - Internal method to wait for next millisecond\n\n**Properties**\n\n- `workerId: bigint` - Gets the current worker ID\n- `datacenterId: bigint` - Gets the current datacenter ID\n- `currentSequence: bigint` - Gets the current sequence number\n- `lastTimestamp: bigint` - Gets the last timestamp used\n\n### ID Structure\n\nThe generated ID is a 64-bit integer with the following structure:\n\n```\n+-------------+------------------+----------------+-----------------+\n| Timestamp   | Datacenter ID    | Worker ID      | Sequence        |\n| 41 bits     | 5 bits           | 5 bits         | 12 bits         |\n+-------------+------------------+----------------+-----------------+\n```\n","readmeFilename":""}