{"_id":"@binary-stars/bs-uuid-generator","_rev":"7-602ac6fad054a44a2be1654a0427ab5c","name":"@binary-stars/bs-uuid-generator","dist-tags":{"latest":"0.3.0"},"versions":{"0.1.0":{"name":"@binary-stars/bs-uuid-generator","engines":{"node":"16.20"},"version":"0.1.0","description":"UUID generator for dependency injection, clean code and testing","main":"dist/bs-uuid-generator.js","types":"./dist/bs-uuid-generator.d.ts","scripts":{"wtest":"jest --detectOpenHandles --watch","test":"jest --collectCoverage --detectOpenHandles","jestClearCache":"jest --clearCache","lint":"eslint","lint-fix":"npm run lint -- --fix","style":"prettier --check .","style-fix":"prettier --write .","review":"npm run test && npm run lint && npm run style","fix":"npm run lint-fix && npm run style-fix","build":"tsc"},"repository":{"type":"git","url":"git+https://binary-stars@bitbucket.org/binary-stars/bs-ts-uuid-generator.git"},"keywords":["testing","portsandadapters","database","cleanarchitecture","cleancode"],"author":{"name":"binary stars GmbH"},"license":"MIT","homepage":"https://bitbucket.org/binary-stars/bs-ts-uuid-generator#readme","jest":{"preset":"ts-jest","testEnvironment":"node","moduleFileExtensions":["ts","js"],"collectCoverageFrom":["src/**/*.ts","!<rootDir>/node_modules/","!<rootDir>/test"],"coverageThreshold":{"global":{"statements":100,"branches":100,"functions":100,"lines":100}},"coverageReporters":["text"]},"devDependencies":{"@types/jest":"^27.5.2","eslint":"8.5.0","eslint-config-prettier":"^8.3.0","jest":"^27.5.1","prettier":"^2.5.1","ts-jest":"^27.1.4","@types/uuid":"^8.3.2","uuid":"^8.3.2"},"bugs":{"url":"https://bitbucket.org/binary-stars/bs-ts-uuid-generator/issues"},"directories":{"test":"test"},"gitHead":"60d0de075101fa3439c1d9571e481f861fcd6c2e","_id":"@binary-stars/bs-uuid-generator@0.1.0","_nodeVersion":"16.20.2","_npmVersion":"8.19.4","dist":{"integrity":"sha512-Xt3ZMWVxrsE4WMJcXR46FfHTpnTh9IpYlEtULI4XRvcRbLNNXm32ab5rDpiU12d0YdmoeCM5iOPfyjLhMxxVIg==","shasum":"d0e38a31bfe5765a2c82becdbf349b5745065fb2","tarball":"https://registry.npmjs.org/@binary-stars/bs-uuid-generator/-/bs-uuid-generator-0.1.0.tgz","fileCount":21,"unpackedSize":19241,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFMe00OZm2Hc+O28kvwKwSnYTWB57/o7cWIc4PXX83C/AiBpxPeDPsjDGNcrDsK4O+NV0VihDyYOZZCngl0FtuKNzw=="}]},"_npmUser":{"name":"binary-stars","email":"code@binary-stars.eu"},"maintainers":[{"name":"binary-stars","email":"code@binary-stars.eu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bs-uuid-generator_0.1.0_1694034221530_0.21164733030506877"},"_hasShrinkwrap":false},"0.2.0":{"name":"@binary-stars/bs-uuid-generator","version":"0.2.0","description":"UUID generator for dependency injection, clean code and testing","main":"dist/bs-uuid-generator.js","types":"./dist/bs-uuid-generator.d.ts","scripts":{"wtest":"jest --detectOpenHandles --watch","test":"jest --collectCoverage --detectOpenHandles","jestClearCache":"jest --clearCache","lint":"eslint","lint-fix":"npm run lint -- --fix","style":"prettier --check .","style-fix":"prettier --write .","review":"npm run test && npm run lint && npm run style","fix":"npm run lint-fix && npm run style-fix","build":"tsc"},"repository":{"type":"git","url":"git+https://binary-stars@bitbucket.org/binary-stars/bs-ts-uuid-generator.git"},"keywords":["testing","database","DataAccessObject","cleancode"],"author":{"name":"binary stars GmbH"},"license":"MIT","homepage":"https://bitbucket.org/binary-stars/bs-ts-uuid-generator#readme","jest":{"preset":"ts-jest","testEnvironment":"node","moduleFileExtensions":["ts","js"],"collectCoverageFrom":["src/**/*.ts","!<rootDir>/node_modules/","!<rootDir>/test"],"coverageThreshold":{"global":{"statements":100,"branches":100,"functions":100,"lines":100}},"coverageReporters":["text"]},"devDependencies":{"@types/jest":"^27.5.2","eslint":"8.5.0","eslint-config-prettier":"^8.3.0","jest":"^27.5.1","prettier":"^2.5.1","ts-jest":"^27.1.4","@types/uuid":"^8.3.2","uuid":"^8.3.2"},"bugs":{"url":"https://bitbucket.org/binary-stars/bs-ts-uuid-generator/issues"},"directories":{"test":"test"},"gitHead":"a904fce2188a5809a113f47a75ea4ddd138dc85d","_id":"@binary-stars/bs-uuid-generator@0.2.0","_npmVersion":"6.4.1","_nodeVersion":"10.15.0","_npmUser":{"name":"binary-stars","email":"code@binary-stars.eu"},"dist":{"integrity":"sha512-kFJFTeQz9azjpSeuOZqleEEfF27HFrA2q6ujwEp+RqGIlP2eEEWIRJLyNHA0seMrHl9FwgNgWfuIgl9pXnrP9g==","shasum":"2bde4405201b3b7808903d15d4b3d53917b813d6","tarball":"https://registry.npmjs.org/@binary-stars/bs-uuid-generator/-/bs-uuid-generator-0.2.0.tgz","fileCount":17,"unpackedSize":20790,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCn+FgYQyVpL+FmcXe3MzWuVEjhRg5QLSYw29miBkWEPAIhAOYRLItdhCQhuAR+4HWlSF+on1It/QTULwj4WKsmOvAI"}]},"maintainers":[{"name":"binary-stars","email":"code@binary-stars.eu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bs-uuid-generator_0.2.0_1694540290244_0.19168161049135235"},"_hasShrinkwrap":false},"0.2.1":{"name":"@binary-stars/bs-uuid-generator","version":"0.2.1","description":"UUID generator for dependency injection, clean code and testing","main":"dist/bs-uuid-generator.js","types":"./dist/bs-uuid-generator.d.ts","scripts":{"wtest":"jest --detectOpenHandles --watch","test":"jest --collectCoverage --detectOpenHandles","jestClearCache":"jest --clearCache","lint":"eslint","lint-fix":"npm run lint -- --fix","style":"prettier --check .","style-fix":"prettier --write .","review":"npm run test && npm run lint && npm run style","fix":"npm run lint-fix && npm run style-fix","build":"tsc"},"repository":{"type":"git","url":"git+https://binary-stars@bitbucket.org/binary-stars/bs-ts-uuid-generator.git"},"keywords":["testing","database","DataAccessObject","cleancode"],"author":{"name":"binary stars GmbH"},"license":"MIT","homepage":"https://bitbucket.org/binary-stars/bs-ts-uuid-generator#readme","jest":{"preset":"ts-jest","testEnvironment":"node","moduleFileExtensions":["ts","js"],"collectCoverageFrom":["src/**/*.ts","!<rootDir>/node_modules/","!<rootDir>/test"],"coverageThreshold":{"global":{"statements":100,"branches":100,"functions":100,"lines":100}},"coverageReporters":["text"]},"devDependencies":{"@types/jest":"^27.5.2","eslint":"8.5.0","eslint-config-prettier":"^8.3.0","jest":"^27.5.1","prettier":"^2.5.1","ts-jest":"^27.1.4","@types/uuid":"^8.3.2","uuid":"^8.3.2"},"bugs":{"url":"https://bitbucket.org/binary-stars/bs-ts-uuid-generator/issues"},"directories":{"test":"test"},"gitHead":"30427435e96d491b9c2fc3ab8fd6c418888ec4e8","_id":"@binary-stars/bs-uuid-generator@0.2.1","_npmVersion":"6.4.1","_nodeVersion":"10.15.1","_npmUser":{"name":"binary-stars","email":"code@binary-stars.eu"},"dist":{"integrity":"sha512-UW2wgpNn+PzC++YHkIzKuRiB1eyZrMRaZXTb1ekmnSr11FKdOGcXj/NzlxPViOfcw/zB8QbOpr1BzwxqH/mRfA==","shasum":"576eeba804a247cbb7b0cc81cf2f66e8f9d13523","tarball":"https://registry.npmjs.org/@binary-stars/bs-uuid-generator/-/bs-uuid-generator-0.2.1.tgz","fileCount":16,"unpackedSize":18708,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHhlwAHGV4FvSQC54SMa7rKpiEoPHCuz3laTQ88WV0eqAiATrf3ldsuGMPPzoYqn6ipYQ5KoR9MEqEvXZYQWRLL6og=="}]},"maintainers":[{"name":"binary-stars","email":"code@binary-stars.eu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bs-uuid-generator_0.2.1_1694542272581_0.8448978427066158"},"_hasShrinkwrap":false},"0.2.2":{"name":"@binary-stars/bs-uuid-generator","version":"0.2.2","description":"UUID generator for dependency injection, clean code and testing","main":"dist/bs-uuid-generator.js","types":"./dist/bs-uuid-generator.d.ts","scripts":{"wtest":"jest --detectOpenHandles --watch","test":"jest --collectCoverage --detectOpenHandles","jestClearCache":"jest --clearCache","lint":"eslint","lint-fix":"npm run lint -- --fix","style":"prettier --check .","style-fix":"prettier --write .","review":"npm run test && npm run lint && npm run style","fix":"npm run lint-fix && npm run style-fix","build":"tsc"},"repository":{"type":"git","url":"git+https://binary-stars@bitbucket.org/binary-stars/bs-ts-uuid-generator.git"},"keywords":["testing","database","DataAccessObject","cleancode"],"author":{"name":"binary stars GmbH"},"license":"MIT","homepage":"https://bitbucket.org/binary-stars/bs-ts-uuid-generator#readme","jest":{"preset":"ts-jest","testEnvironment":"node","moduleFileExtensions":["ts","js"],"collectCoverageFrom":["src/**/*.ts","!<rootDir>/node_modules/","!<rootDir>/test"],"coverageThreshold":{"global":{"statements":100,"branches":100,"functions":100,"lines":100}},"coverageReporters":["text"]},"devDependencies":{"@types/jest":"^27.5.2","eslint":"8.5.0","eslint-config-prettier":"^8.3.0","jest":"^27.5.1","prettier":"^2.5.1","ts-jest":"^27.1.4","@types/uuid":"^8.3.2","uuid":"^8.3.2"},"bugs":{"url":"https://bitbucket.org/binary-stars/bs-ts-uuid-generator/issues"},"directories":{"test":"test"},"gitHead":"437627a4015f8cf838b55582b4355fa70c34ac3b","_id":"@binary-stars/bs-uuid-generator@0.2.2","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-E2iNsLuY2HVBqGC6Z5j/rXauaGfFbgA9DuhXgvcmD33mlKJdaVPmzxobrUpq1r6nmGAojSyUHUQEOu8UlTWKkA==","shasum":"539c47fe9fa8b565cfabc67e8063e399ff7aa412","tarball":"https://registry.npmjs.org/@binary-stars/bs-uuid-generator/-/bs-uuid-generator-0.2.2.tgz","fileCount":23,"unpackedSize":26801,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCrMv1N0/271LsIk3J9e412+WN4Xw1cseOcB8cC22foJwIhAI1cSNx6A5oYpSHkMjB50enfTrR9NMiktrmnG/fk94ew"}]},"_npmUser":{"name":"binary-stars","email":"code@binary-stars.eu"},"maintainers":[{"name":"binary-stars","email":"code@binary-stars.eu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bs-uuid-generator_0.2.2_1694544473703_0.49017707743485395"},"_hasShrinkwrap":false},"0.2.3":{"name":"@binary-stars/bs-uuid-generator","description":"UUID generator for dependency injection, clean code and testing","main":"dist/bs-uuid-generator.js","types":"./dist/bs-uuid-generator.d.ts","scripts":{"wtest":"jest --detectOpenHandles --watch","test":"jest --collectCoverage --detectOpenHandles","jestClearCache":"jest --clearCache","lint":"eslint","lint-fix":"npm run lint -- --fix","style":"prettier --check .","style-fix":"prettier --write .","review":"npm run test && npm run lint && npm run style","fix":"npm run lint-fix && npm run style-fix","build":"tsc"},"repository":{"type":"git","url":"git+https://binary-stars@bitbucket.org/binary-stars/bs-ts-uuid-generator.git"},"keywords":["testing","database","DataAccessObject","cleancode"],"author":{"name":"binary stars GmbH"},"license":"MIT","homepage":"https://bitbucket.org/binary-stars/bs-ts-uuid-generator#readme","jest":{"preset":"ts-jest","testEnvironment":"node","moduleFileExtensions":["ts","js"],"collectCoverageFrom":["src/**/*.ts","!<rootDir>/node_modules/","!<rootDir>/test"],"coverageThreshold":{"global":{"statements":100,"branches":100,"functions":100,"lines":100}},"coverageReporters":["text"]},"devDependencies":{"@types/jest":"^27.5.2","eslint":"8.5.0","eslint-config-prettier":"^8.3.0","jest":"^27.5.1","prettier":"^2.5.1","ts-jest":"^27.1.4","@types/uuid":"^8.3.2","uuid":"^8.3.2"},"bugs":{"url":"https://bitbucket.org/binary-stars/bs-ts-uuid-generator/issues"},"directories":{"test":"test"},"version":"0.2.3","gitHead":"c64aff864bd0461663bd535f2e4f67b2b67713d3","_id":"@binary-stars/bs-uuid-generator@0.2.3","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-Hwv82LSGVak9wU6RzvI5Uvg8Ky9plSsm5VDWAH/18Z9FORrlFKYouOZoHudQfFrE2GNw7lUss0wE2Y/8yhSVXQ==","shasum":"1d3cfb3499dbeb9fa1b92c907c6a6f9d5607c94e","tarball":"https://registry.npmjs.org/@binary-stars/bs-uuid-generator/-/bs-uuid-generator-0.2.3.tgz","fileCount":23,"unpackedSize":27465,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDtHRHyLNK5ihqdBqEp1vG6/0Qyb8Nq+9GGi+ZMOcPwRgIhAIK9U3HRfHShYuNF3dACSZRfDwdUVzpkehOU8UufxEGX"}]},"_npmUser":{"name":"binary-stars","email":"code@binary-stars.eu"},"maintainers":[{"name":"binary-stars","email":"code@binary-stars.eu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bs-uuid-generator_0.2.3_1695886225474_0.7581524557525052"},"_hasShrinkwrap":false},"0.2.4":{"name":"@binary-stars/bs-uuid-generator","description":"UUID generator for dependency injection, clean code and testing","main":"dist/bs-uuid-generator.js","types":"./dist/bs-uuid-generator.d.ts","scripts":{"wtest":"jest --detectOpenHandles --watch","test":"jest --verbose --collectCoverage --detectOpenHandles","jestClearCache":"jest --clearCache","lint":"eslint","lint-fix":"npm run lint -- --fix","style":"prettier --check .","style-fix":"prettier --write .","review":"npm run test && npm run lint && npm run style","fix":"npm run lint-fix && npm run style-fix","build":"tsc"},"repository":{"type":"git","url":"git+https://binary-stars@bitbucket.org/binary-stars/bs-ts-uuid-generator.git"},"keywords":["testing","database","DataAccessObject","cleancode"],"author":{"name":"binary stars GmbH"},"license":"MIT","homepage":"https://bitbucket.org/binary-stars/bs-ts-uuid-generator#readme","jest":{"preset":"ts-jest","testEnvironment":"node","moduleFileExtensions":["ts","js"],"collectCoverageFrom":["src/**/*.ts","!<rootDir>/node_modules/","!<rootDir>/test"],"coverageThreshold":{"global":{"statements":100,"branches":100,"functions":100,"lines":100}},"coverageReporters":["text"]},"devDependencies":{"@types/jest":"^27.5.2","eslint":"8.5.0","eslint-config-prettier":"^8.3.0","jest":"^27.5.1","prettier":"^2.5.1","ts-jest":"^27.1.4","@types/uuid":"^8.3.2","uuid":"^8.3.2"},"bugs":{"url":"https://bitbucket.org/binary-stars/bs-ts-uuid-generator/issues"},"directories":{"test":"test"},"version":"0.2.4","gitHead":"7a879c3a5405e85348b6e2056ed3c6b4a6b7e1c6","_id":"@binary-stars/bs-uuid-generator@0.2.4","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-XQGMDL+9tNjzt933xgBIC4iLBVZs4EuMgNLYHlz8ZOd+cXEddnvKauTu6Q3nTkEHOk1oy9Nw5g5XwDvtbqK1MQ==","shasum":"379624b8ad8ede3b268bb3c2cd3b3939edbb5e07","tarball":"https://registry.npmjs.org/@binary-stars/bs-uuid-generator/-/bs-uuid-generator-0.2.4.tgz","fileCount":23,"unpackedSize":27809,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD/0Z9EoJ76ykkZqB+vbDnZ57mDejWUwtGDndQUQi8udgIhANjNjIIXxbFu/x+ksz7fp4jwisTqyHKM4JShBxvrV4nO"}]},"_npmUser":{"name":"binary-stars","email":"code@binary-stars.eu"},"maintainers":[{"name":"binary-stars","email":"code@binary-stars.eu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bs-uuid-generator_0.2.4_1696018937008_0.1545825923247075"},"_hasShrinkwrap":false},"0.3.0":{"name":"@binary-stars/bs-uuid-generator","description":"UUID generator for dependency injection, clean code and testing","main":"dist/bs-uuid-generator.js","types":"./dist/bs-uuid-generator.d.ts","scripts":{"wtest":"jest --detectOpenHandles --watch","test":"jest --verbose --collectCoverage --detectOpenHandles","jestClearCache":"jest --clearCache","lint":"eslint","lint-fix":"npm run lint -- --fix","style":"prettier --check .","style-fix":"prettier --write .","review":"npm run test && npm run lint && npm run style","fix":"npm run lint-fix && npm run style-fix","build":"tsc"},"repository":{"type":"git","url":"git+https://binary-stars@bitbucket.org/binary-stars/bs-ts-uuid-generator.git"},"keywords":["testing","database","DataAccessObject","cleancode"],"author":{"name":"binary stars GmbH"},"license":"MIT","homepage":"https://bitbucket.org/binary-stars/bs-ts-uuid-generator#readme","jest":{"preset":"ts-jest","testEnvironment":"node","moduleFileExtensions":["ts","js"],"collectCoverageFrom":["src/**/*.ts","!<rootDir>/node_modules/","!<rootDir>/test"],"coverageThreshold":{"global":{"statements":100,"branches":100,"functions":100,"lines":100}},"coverageReporters":["text"]},"devDependencies":{"@types/jest":"^27.5.2","eslint":"8.5.0","eslint-config-prettier":"^8.3.0","jest":"^27.5.1","prettier":"^2.5.1","ts-jest":"^27.1.4","@types/uuid":"^8.3.2","uuid":"^8.3.2"},"bugs":{"url":"https://bitbucket.org/binary-stars/bs-ts-uuid-generator/issues"},"directories":{"test":"test"},"version":"0.3.0","gitHead":"864415110cc166221f175d52298410637aa0942f","_id":"@binary-stars/bs-uuid-generator@0.3.0","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-EDg0owW3Q4Lm66QbeME6eUqkoukRufdyfqC5ZA3NqZP5Zt/VbZbyx+uM5Sf0/brKFK+U2FRIsvSdS8B1B0qyNg==","shasum":"3489635ec5b230fef11dd2072e70e2eabda78ba9","tarball":"https://registry.npmjs.org/@binary-stars/bs-uuid-generator/-/bs-uuid-generator-0.3.0.tgz","fileCount":23,"unpackedSize":29027,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF29vp/MqZ0RIpLwYmOgpys+nuRwQhPwtFzKvECr5hwXAiBPSZVUve7OPs1XyCqxv2qxw8kLupJbQ3ciZ9fM9sTCDw=="}]},"_npmUser":{"name":"binary-stars","email":"code@binary-stars.eu"},"maintainers":[{"name":"binary-stars","email":"code@binary-stars.eu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bs-uuid-generator_0.3.0_1696019954513_0.81399869547529"},"_hasShrinkwrap":false}},"time":{"created":"2023-09-06T21:03:41.529Z","0.1.0":"2023-09-06T21:03:41.735Z","modified":"2023-09-29T20:39:14.960Z","0.2.0":"2023-09-12T17:38:10.410Z","0.2.1":"2023-09-12T18:11:12.832Z","0.2.2":"2023-09-12T18:47:53.964Z","0.2.3":"2023-09-28T07:30:25.637Z","0.2.4":"2023-09-29T20:22:17.169Z","0.3.0":"2023-09-29T20:39:14.780Z"},"maintainers":[{"name":"binary-stars","email":"code@binary-stars.eu"}],"description":"UUID generator for dependency injection, clean code and testing","homepage":"https://bitbucket.org/binary-stars/bs-ts-uuid-generator#readme","keywords":["testing","database","DataAccessObject","cleancode"],"repository":{"type":"git","url":"git+https://binary-stars@bitbucket.org/binary-stars/bs-ts-uuid-generator.git"},"author":{"name":"binary stars GmbH"},"bugs":{"url":"https://bitbucket.org/binary-stars/bs-ts-uuid-generator/issues"},"license":"MIT","readme":"# README\n\nWhen you create objects with auto-generated IDs then it's cumbersome to test them for equality \n because the generated attribute value is (duh!) auto-generated.\nThis library enables you to inject the UUID generator via the strategy pattern and\n choose the appropriate implementation for testing as opposed to production.\nAs for the production-ready implmentation, you can either use `UuidGeneratorUuidv4Impl` (which uses the \"uuid\" npm package) \n or use any other tool via `UuidGeneratorDelegatingImpl`.\nBrought to you by binary stars GmbH, written in TypeScript and tested with 100% coverage.\n\n## Installation\n\n- `npm i --save @binary-stars/bs-uuid-generator`\n\n## How to use\n\n### In your production code:\n\n```TypeScript\n// this type is just a tweak, you can use whatever\ntype Entity<T> = T & {\n  id: string\n}\n\ntype User = {\n  name: string\n}\n\n// In this example I'm injecting the uuidGenerator into the Data Access Object.\n// I think this is a nice design choice but you can have the uuid generated whereever you want instead.\nclass MyUserDaoWithAutoId {\n  constructor(private uuidGenerator: UuidGenerator) {}\n\n  put(user: User): Entity<User> {\n    return {\n      ...user,\n      id: this.uuidGenerator.create(),\n    }\n  }\n}\n```\n\n### In your production initialization/dependency injection/factory code:\n\n```TypeScript\nimport UuidGeneratorUuidv4Impl from '@binary-stars/bs-uuid-generator/dist/UuidGeneratorUuidv4Impl'\nconst dao = new MyUserDaoWithAutoId(new UuidGeneratorUuidv4Impl())\n\n/* ALTERNATIVELY, use any other way to create a UUID Generator */\nimport UuidGeneratorDelegatingImpl from '@binary-stars/bs-uuid-generator/dist/UuidGeneratorDelegatingImpl'\n\nconst genSimpleRandom = () => {\n  let out = ''\n  for (let i = 0; i < 32; i++) {\n    const rand = Math.floor(Math.random() * 16)\n    if (rand < 10) {\n      out += `${rand}`\n    } else {\n      out += String.fromCharCode(rand + 87)\n    }\n  }\n  return out\n}\n\nconst dao = new MyUserDaoWithAutoId(\n  new UuidGeneratorDelegatingImpl(genSimpleRandom),\n)\n\n```\n\n### In your tests\n\n```TypeScript\nimport UuidGenerator, {\n  isUuid,\n  UuidGeneratorDelegatingImpl,\n} from '@binary-stars/bs-uuid-generator/dist/UuidGenerator'\nimport {\n  UuidGeneratorFixedImpl,\n  UuidGeneratorSequenceImpl,\n} from '@binary-stars/bs-uuid-generator/dist/UuidGenerators'\n\n\nlet dao: MyUserDaoWithAutoId\n\ndescribe('Demo', () => {\n  test(\"Production Mode: in production we want to use a ROBUST implementation, so let's use the uuid4 lib\", () => {\n    // given\n    dao = new MyUserDaoWithAutoId(new UuidGeneratorUuidv4Impl())\n\n    // when\n    const actual = dao.put({name: 'Joey'})\n\n    // then\n    expect(actual.name).toEqual('Joey')\n    expect(actual.id).toBeTruthy()\n    expect(isUuid(actual.id)).toBe(true)\n  })\n\n  test('... but we could use any other implementation just as well', () => {\n    // given\n    const genSimpleRandom = () => {\n      let out = ''\n      for (let i = 0; i < 32; i++) {\n        const rand = Math.floor(Math.random() * 16)\n        if (rand < 10) {\n          out += `${rand}`\n        } else {\n          out += String.fromCharCode(rand + 87)\n        }\n      }\n      return out\n    }\n\n    dao = new MyUserDaoWithAutoId(\n      new UuidGeneratorDelegatingImpl(genSimpleRandom),\n    )\n\n    // when\n    const actual = dao.put({name: 'Joey'})\n\n    // then\n    expect(actual.name).toEqual('Joey')\n    expect(actual.id).toBeTruthy()\n    expect(isUuid(actual.id)).toBe(true)\n  })\n\n\n  test('Testing Mode: in testing we want to use a test friendly implementation, e.g. one that always yields the same value', () => {\n    // given\n    dao = new MyUserDaoWithAutoId(UuidGeneratorFixedImpl.ONE)\n\n    // when\n    let actual = dao.put({name: 'Joey'})\n\n    // then\n    expect(actual).toEqual({\n      name: 'Joey',\n      id: '00000000-0000-0000-0000-000000000001',\n    })\n    // the same fact as above:\n    expect(actual.id).toEqual(UuidGeneratorFixedImpl.ONE.create())\n\n    // when 2\n    actual = dao.put({name: 'CJ'})\n    // then 2\n    expect(actual).toEqual({\n      name: 'CJ',\n      id: '00000000-0000-0000-0000-000000000001',\n    })\n    // the same fact as above:\n    expect(actual.id).toEqual(UuidGeneratorFixedImpl.ONE.create())\n  })\n\n\n  test('Testing Mode: ... or an implementation that works like a sequence', () => {\n    // given\n    const uuidGenerator = new UuidGeneratorSequenceImpl()\n    dao = new MyUserDaoWithAutoId(uuidGenerator)\n\n    // when\n    let actual = dao.put({name: 'Joey'})\n\n    // then\n    expect(actual).toEqual({\n      name: 'Joey',\n      id: UuidGeneratorSequenceImpl.get(1),\n    })\n    // the same fact as above:\n    expect(actual.id).toEqual('00000000-0000-0000-0000-000000000001')\n\n    // when 2\n    actual = dao.put({name: 'CJ'})\n    // then 2\n    expect(actual).toEqual({\n      name: 'CJ',\n      id: UuidGeneratorSequenceImpl.get(2),\n    })\n    // the same fact as above:\n    expect(actual.id).toEqual('00000000-0000-0000-0000-000000000002')\n  })\n})\n\n\n```\n\n## Contribution guidelines\n\n- 100% code coverage\n- run `npm run review` to check style, eslint, run tests and check coverage\n\n## About us\n\n- binary stars GmbH, Hausinger Str. 8, 40764 Langenfeld, Germany\n- #clean-code #clean-architecture #tdd #xp #agile\n- We offer a CTO2Go for your software projects & products + developers, QA engineers and agile project managers\n- Wanna know how we achieve 100% coverage EVERY TIME? Contact us about our training & consulting services.\n- Our open source projects: https://www.binary-stars.eu/en/open-source-projects/\n\n## Version History\n- 0.3.0\n  - Remove dashes if dashes = false\n  - Bump to 0.3 to indicate 'more major' change\n- 0.2.4\n  - Improve build process\n  - Fix FormattingDecorator as it wasn't really a decorator before\n- 0.2.3 (finally public)\n  - improve readme and demo testss\n- 0.2.2 (private)\n  - fix README & CI script\n- 0.2.1 (private)\n  - fix README & CI script\n- 0.2.0 (private)\n  - create README\n- 0.1.0 (private)\n  - first working release\n","readmeFilename":"README.md"}