Skip to content
This repository has been archived by the owner on Oct 18, 2021. It is now read-only.

Commit

Permalink
Add typescript declaration
Browse files Browse the repository at this point in the history
Closes #22
  • Loading branch information
frontsideair committed Dec 6, 2019
1 parent 65450df commit 1a960fa
Show file tree
Hide file tree
Showing 5 changed files with 145 additions and 1 deletion.
34 changes: 34 additions & 0 deletions example/app.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import express, { Express } from "express";
import Keyv from "keyv";
import { Tgl, middleware, router, Toggle } from "tgl";

const toggles: Toggle[] = [
{
name: "universal",
description: "Do we address the world, or the whole universe?",
defaultValue: false
},
{
name: "lasers",
description: "Enable lasers!!!",
defaultValue: true
}
];
const storage: Keyv<boolean> = new Keyv();
const tgl: Tgl = new Tgl({ toggles, storage });

tgl.get("hello");
tgl.set("hello", true);

const app: Express = express();

app.use(middleware(tgl));

app.get("/", (req, res) => {
const universal = req.tgl.get("universal");
res.send(universal ? "Hello, universe!" : "Hello, world!");
});

app.use("/tgl", router(tgl));

module.exports = app;
40 changes: 40 additions & 0 deletions lib/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
declare namespace Express {
interface Request extends TglRequest {}
}

declare interface TglRequest {
tgl?: Tgl;
}

declare module "tgl" {
import express from "express";
import Keyv from "keyv";

export interface Toggle {
name: string;
description: string;
defaultValue: boolean;
}

export function middleware(tgl: Tgl): express.Handler;

export function router(tgl: Tgl): express.Router;

export class Tgl {
constructor({
toggles,
storage,
interval
}: {
toggles: Toggle[];
storage: Keyv<boolean>;
interval?: number;
});

toggles: boolean[];

get(key: string): boolean;

set(key: string, value: boolean): Promise<void>;
}
}
2 changes: 1 addition & 1 deletion lib/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ class Tgl {

async set(key, value) {
this._cache[key] = value;
return this._storage.set(key, value);
await this._storage.set(key, value);
}

get(key) {
Expand Down
68 changes: 68 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@
"license": "MIT",
"dependencies": {
"@keyv/sqlite": "^2.0.1",
"@types/express": "^4.17.2",
"@types/keyv": "^3.1.0",
"body-parser": "^1.19.0",
"express": "^4.17.1",
"keyv": "^4.0.0"
Expand Down

0 comments on commit 1a960fa

Please sign in to comment.