@plq/faker
Version:
A set of classes for mocking known data types such as browser history, browser download list, persona, domain name, Jira project, GitHub repository, etc.
207 lines (155 loc) • 5.59 kB
Markdown
# faker
A set of classes for mocking known data types such as browser history, browser download list, browser bookmarks, person, domain name, Jira project, GitHub repository, etc.
## Installation
Install the library using npm:
```bash
npm install /faker
```
## Usage
### `Domain`
Generates an object with random protocol, domain name and TLD.
It's using for generating [History](#history), [Project](#project), [Repository](#repository), [Tracker](#tracker) and [User](#user).
```typescript
import { Domain } from '@plq/faker'
const domain = new Domain()
domain.getItem()
/* Output: {
protocol: 'https', // Random protocol
name: 'close-reality', // Random domain name
tld: 'name', // Random TLD
domainName: 'close-reality.name',
full: 'https://close-reality.name',
} */
```
Or you can generate a domain with predefined data:
```typescript
new Domain('https://github.com') // Nothing random
new Domain('npmjs.com') // Random protocol
new Domain('development') // Random protocol and TLD
```
### `Downloads`
Generates an array of random download items.
See [chrome.downloads.DownloadItem](https://developer.chrome.com/docs/extensions/reference/downloads/#type-DownloadItem).
```typescript
import { Downloads } from '/faker'
const downloads = new Downloads()
downloads.getItems() // Returns an array of download items
downloads.getItem() // Returns a single download item
```
With predefined data, class accepts an object with type of [downloads.DownloadQuery](https://developer.chrome.com/docs/extensions/reference/downloads/https://developer.chrome.com/docs/extensions/reference/downloads/#type-DownloadQuery):
```typescript
new Downloads({
url: 'https://downloads.info', // All download items will have the same domain
limit: 100, // Number of download items
startedAfter: new Date('2023-01-01').getTime(), // All items will be created with startTime after 2023-01-01
startedBefore: new Date('2023-01-31').getTime(), // All items will be created with startTime before 2023-01-31
})
```
### `History`
Generates an array of random history items.
See [chrome.history.HistoryItem](https://developer.chrome.com/docs/extensions/reference/history/#type-HistoryItem).
```typescript
import { History } from '/faker'
const history = new History()
history.getItems() // Returns an array of history items
history.getItem() // Returns a single history item
```
With predefined data, class accepts an object with type of [history.search.query](https://developer.chrome.com/docs/extensions/reference/history/#type-search-query):
```typescript
new History({
text: 'https://github.com', // All history items will have the same domain
maxResults: 100, // Number of history items
startTime: new Date('2023-01-01').getTime(), // All items will be created with lastVisitTime after 2023-01-01
endTime: new Date('2023-01-31').getTime(), // All items will be created with lastVisitTime before 2023-01-31
})
```
### `Project`
Generates an object with random project name.
```typescript
import { Project } from '/faker'
const project = new Project()
project.getItem()
/* Output: {
name: 'Zieme, Hauck and McClure'
shortName: 'Zieme'
abbreviation: 'ZHM'
} */
```
### `Repository`
Generates an object with random GitHub or Gitlab repository data.
```typescript
import { Repository } from '/faker'
const repository = new Repository()
repository.getItem()
/* Output: {
provider: 'github' | 'gitlab', // Random or predefined
user: 'Nettie_Zboncak40', // Random user nickname
project: 'zieme', // Random project shortName
url: https://${provider}.${project}.${tld}, // Random url
} */
```
Repository constructor params:
- user?: MockUserItem,
- project?: MockProjectItem,
- domain?: MockDomainItem
```typescript
new Repository({
user: new User().getItem(),
project: new Project().getItem(),
domain: new Domain().getItem(),
})
```
### `Tracker`
Generates an object with random Jira or Youtrack tracker data.
```typescript
import { Tracker } from '/faker'
const tracker = new Tracker()
tracker.getItem()
/*
Output: {
provider: 'jira' | 'youtrack', // Random or predefined
user: 'Nettie_Zboncak40', // Random user nickname
project: 'zieme', // Random project shortName
url: `https://${provider}.${tld}/${user}/${project}`, // Random url
path: `${user}/${project}`
}
*/
```
Tracker constructor params:
- user?: MockUserItem,
- project?: MockProjectItem,
- domain?: MockDomainItem
```typescript
new Tracker({
user: new User().getItem(),
project: new Project().getItem(),
domain: new Domain().getItem(),
})
```
### `User`
Generates an object with random user data.
```typescript
import { User } from '/faker'
const user = new User()
user.getItem()
/* Output: {
nickname: 'Helene_Muller11'
email: 'Helene_Muller11@fakerjs.dev'
firstName: 'Helene'
lastName: 'Muller'
fullName: 'Helene Muller'
} */
```
User constructor params:
- domain?: MockDomainItem
```typescript
new User(
new Domain().getItem() // Using for email generation
)
```
## Contributing
Contributions are welcome! If you find any issues or have suggestions for improvements, please submit an issue or a pull request on the [GitHub repository](https://github.com/Akurganow/faker).
## License
This library is distributed under the MIT License. See the [LICENSE](https://github.com/Akurganow/faker/blob/main/LICENSE) file for more information.
## Bug Reports
If you encounter any bugs or issues, please report them on the [issue tracker](https://github.com/Akurganow/faker/issues).