From 2b9f574b03c6db69f2371783de23e8b1a23d07b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20B=C5=82a=C5=BCejewicz=20=28Peter=20Blazejewicz=29?= Date: Tue, 8 Sep 2020 22:58:29 +0200 Subject: [PATCH] feat(user-idle-observer): new definition (#47239) Simple lib tracking client side user inactivity - definition file - tests https://www.npmjs.com/package/user-idle-observer https://github.com/vladagurets/user-idle-observer#example Thanks! --- types/user-idle-observer/index.d.ts | 44 +++++++++++++++++++ types/user-idle-observer/tsconfig.json | 24 ++++++++++ types/user-idle-observer/tslint.json | 1 + .../user-idle-observer-tests.ts | 15 +++++++ 4 files changed, 84 insertions(+) create mode 100644 types/user-idle-observer/index.d.ts create mode 100644 types/user-idle-observer/tsconfig.json create mode 100644 types/user-idle-observer/tslint.json create mode 100644 types/user-idle-observer/user-idle-observer-tests.ts diff --git a/types/user-idle-observer/index.d.ts b/types/user-idle-observer/index.d.ts new file mode 100644 index 0000000000..0a17328c11 --- /dev/null +++ b/types/user-idle-observer/index.d.ts @@ -0,0 +1,44 @@ +// Type definitions for user-idle-observer 1.0 +// Project: https://github.com/vladagurets/user-idle-observer#readme +// Definitions by: Piotr Błażejewicz +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +export as namespace userIDLEObserver; + +/** + * This lib allows you to track user inactivity time. + */ +declare function userIDLEObserver(opts?: userIDLEObserver.Options): userIDLEObserver.UserIDLEObserver; + +declare namespace userIDLEObserver { + /** + * observer options + */ + interface Options { + /** + * fire callback on user inactivity time in ms + * @default 3_000 + */ + idleTime?: number; + /** + * callback that will triger after opts.idleTime of user's IDLE + * @default console.log + */ + cb?: Callback; + /** + * @default ["mousemove", "mousedown", "keydown", "scroll", "touchstart", "resize", "visibilitychange"] + */ + listeners?: Array; + } + + interface UserIDLEObserver { + /** + * destroy observer instance + */ + destroy(): void; + } + + type Callback = (time: number) => void; +} + +export = userIDLEObserver; diff --git a/types/user-idle-observer/tsconfig.json b/types/user-idle-observer/tsconfig.json new file mode 100644 index 0000000000..f55a1b756a --- /dev/null +++ b/types/user-idle-observer/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6", + "DOM" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictFunctionTypes": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "user-idle-observer-tests.ts" + ] +} diff --git a/types/user-idle-observer/tslint.json b/types/user-idle-observer/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/user-idle-observer/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" } diff --git a/types/user-idle-observer/user-idle-observer-tests.ts b/types/user-idle-observer/user-idle-observer-tests.ts new file mode 100644 index 0000000000..21ed436cf3 --- /dev/null +++ b/types/user-idle-observer/user-idle-observer-tests.ts @@ -0,0 +1,15 @@ +import IDLEObserver = require('user-idle-observer'); + +const observer = IDLEObserver({ + idleTime: 5000, + cb: time => { + console.log(`User was innactive for ${time}ms`); + }, + listeners: ['mousemove', 'mousedown', 'keydown'], +}); + +IDLEObserver(); +IDLEObserver({}); +IDLEObserver({ + cb: console.log, +});