kutt
Version:
Node.js & browser (TypeScript) client for Kutt url shortener
305 lines (201 loc) • 6.01 kB
Markdown
Node.js & browser (TypeScript) client for [Kutt][KUTT_URL] url shortener.
[![NPM Version][NPM_BADGE]][NPM_URL]
[![Test][TEST_BADGE]][TEST_URL]
[![NPM Monthly Downloads][NPM_MONTHLY_DOWNLOADS_BADGE]][NPM_MONTHLY_DOWNLOADS_URL]
[![NPM Total Downloads][NPM_TOTAL_DOWNLOADS_BADGE]][NPM_TOTAL_DOWNLOADS_URL]
[![NPM Bundle Size (minified)][BUNDLE_BADGE]][BUNDLE_URL]
[![NPM Bundle Size (minified + gzip)][BUNDLE_GZIP_BADGE]][BUNDLE_GZIP_URL]
[![Known Vulnerabilities][VULNERABILITIES_BADGE]][VULNERABILITIES_URL]
[![Pull Requests][PRS_BADGE]][PRS_URL]
[![License][LICENSE_BADGE]][LICENSE_URL]
[![Github Stars][STARS_BADGE]][STARS_URL]
[![Github Forks][FORKS_BADGE]][FORKS_URL]
## Table of Contents
- [Installation](#installation)
- [Usage](#usage)
- [CommonJS](#commonjs)
- [ECMAScript](#ecmascript)
- [Default Config](#default-config)
- [Instance](#instance)
- [Instance Config](#instance-config)
- [Domains](#domains)
- [Health](#health)
- [Links](#links)
- [Users](#users)
- [Versioning](#versioning)
- [Authors](#authors)
- [License](#license)
## Installation
```shell
npm i kutt
```
## Usage
### CommonJS
```typescript
const Kutt = require("kutt").default;
```
or
```typescript
const { Kutt } = require("kutt");
```
```typescript
import Kutt from "kutt";
```
or
```typescript
import { Kutt } from "kutt";
```
```typescript
const api: string = Kutt.get("api");
const key: string = Kutt.get("key");
const timeout: number = Kutt.get("timeout");
```
```typescript
Kutt
.set("api", "https://kutt.it/api/v2") // API base url (Default value)
.set("key", "") // API key (Default value)
.set("timeout", 1e4); // Request timeout (Default value)
```
```typescript
const kutt = new Kutt();
```
Override the default config only for the instance.
```typescript
const api: string = kutt.get("api");
const key: string = kutt.get("key");
const timeout: number = kutt.get("timeout");
```
```typescript
kutt
.set("api", "https://kutt.it/api/v2") // API base url
.set("key", "") // API key
.set("timeout", 1e4); // Request timeout
```
```typescript
const domains = kutt.domains();
```
Create a domain.
```typescript
const domain = await domains.create({
address: "string",
homepage: "string",
});
```
Delete a domain.
```typescript
const message = await domains.remove(domain.id);
```
```typescript
const health = kutt.health();
```
Check API health.
```typescript
const isHealthy = await health.check();
```
```typescript
const links = kutt.links();
```
Get list of links.
```typescript
const result = await links.list();
```
You can also pass in pagination params.
```typescript
const result = await links.list({
skip: 0, // Default value
limit: 10, // Default value
all: 10, // Default value
});
```
Create a short link.
```typescript
const link = await links.create({
target: "string",
description: "string",
expire_in: "2 minutes/hours/days",
password: "string",
customurl: "string",
reuse: false,
domain: "string",
});
```
Get link stats.
```typescript
const stats = await links.stats(link.id);
```
Update a link.
```typescript
const updatedLink = await links.update(link.id, {
target: "string",
address: "string",
description: "string",
expire_in: "2 minutes/hours/days",
});
```
Delete a link.
```typescript
const message = await links.remove(link.id);
```
```typescript
const users = kutt.users();
```
Get user info.
```typescript
const info = await users.info();
```
We use [SemVer][SEMVER_URL] for versioning. For the versions available, see
the [releases on this repository][RELEASES_URL].
- **Ardalan Amini** - *Core Maintainer* - [@ardalanamini](https://github.com/ardalanamini)
See also the list of [contributors][CONTRIBUTORS_URL] who participated in this project.
This project is licensed under the MIT License - see the [LICENSE][LICENSE_URL] file for details
[]: https://img.shields.io/npm/v/kutt.svg
[]: https://www.npmjs.com/package/kutt
[]: https://github.com/ardalanamini/node-kutt/actions/workflows/test.yml/badge.svg
[]: https://github.com/ardalanamini/node-kutt/actions/workflows/test.yml
[]: https://img.shields.io/npm/dm/kutt.svg
[]: https://www.npmjs.com/package/kutt
[]: https://img.shields.io/npm/dt/kutt.svg
[]: https://www.npmjs.com/package/kutt
[]: https://img.shields.io/bundlephobia/min/kutt.svg
[]: https://bundlephobia.com/package/kutt
[]: https://img.shields.io/bundlephobia/minzip/kutt.svg
[]: https://bundlephobia.com/package/kutt
[]: https://snyk.io/test/github/ardalanamini/node-kutt/badge.svg?targetFile=package.json
[]: https://snyk.io/test/github/ardalanamini/node-kutt?targetFile=package.json
[]: https://img.shields.io/badge/PRs-Welcome-brightgreen.svg
[]: https://github.com/ardalanamini/node-kutt/pulls
[]: https://img.shields.io/github/license/ardalanamini/node-kutt.svg
[]: https://github.com/ardalanamini/node-kutt/blob/master/LICENSE
[]: https://img.shields.io/github/stars/ardalanamini/node-kutt.svg?style=social&label=Stars
[]: https://github.com/ardalanamini/node-kutt
[]: https://img.shields.io/github/forks/ardalanamini/node-kutt.svg?style=social&label=Fork
[]: https://github.com/ardalanamini/node-kutt
[]: https://kutt.it
[]: http://semver.org
[]: https://github.com/ardalanamini/node-kutt/releases
[]: https://github.com/ardalanamini/node-kutt/contributors