Mock UUID
This package is ment for testing and development purposes where a repeatable UUID is needed only. My personal reason to do it is to fill a mock state in React, and to be honest because I was bored and went a bit overboard. :-P
Goes beyond saying but don't use this in production. Use a proper UUID library.
Repo at Github: https://github.com/nkholski/mock-uuid
Install
Run npm i -D mock-uuid
Public methods
Method | Signature | Description |
---|---|---|
v2,v3,v4,v5 | no parameters | Mimics v2,v3,v4,v5 in UUID |
mockUuid.getIncrementalGenerator | (seed:number = Math.E, uuidVersion = 4, variant = 1) => () => uuid:string | Function to generate uuid with built in incrementation |
mockUuid.getGenerator | (seed:number = Math.E, uuidVersion = 4, variant = 1) => (i: number) => uuid:string | Function to generate uuid with index as a parameter |
mockUuid.get | (i: number, seed = Math.E, uuidVersion = 4, variant = 1) => uuid:string | Get UUID with index i |
Parameters
Parameter | Valid values | Description |
---|---|---|
seed | any number | Uuid generation is based on the seed. |
uuidVersion | 2,3,4 or 5 | Which version of UUID to generate (version 1 is not supported) |
variant | 0,1,2,3 | Which variant to use |
Usage example
Recommended: Switching between UUID and Mock UUID
Import import { v4 as uuidv4 } from "mock-uuid"
during development to be able to easilly switch Mock UUID to proper UUID in production by changing the import to import { v4 as uuidv4 } from 'uuid'
. All your code should work with either. (works for v2, v3, v4 and v5)
Mocking a list of books:
import { mockUuid } from "mock-uuid";
const books = [];
const getUuid = mockUuid.getIncrementalGenerator();
for(let i=0;i<numberOfBooks;i++){
books.push({
id: uuid(),
title: `book ${i+1}`,
});
}
Mocking a list of books with uuid by index:
import { mockUuid } from "mock-uuid";
const books:Book[] = [];
for(let i=0;i<numberOfBooks;i++){
books.push({
id: mockUuid.getUuid(i),
title: `book ${i+1}`,
});
}
books[0].id === mockUuid.getUuid(0); // <-- true
Development
The script is built in Typescript. The intructions below is only relevant if you want to poke in it. Start with $ npm i
to install dependencies.
- Build:
npm run build
- Test:
npm run test