From 936f93fb5d691517ffbd88e8cb050fde3f04df81 Mon Sep 17 00:00:00 2001 From: Sebastian Seedorf Date: Mon, 16 Nov 2020 12:40:47 +0100 Subject: [PATCH] inital #3 --- README.md | 32 ++++++++++++++++++- out/index.d.ts | 2 +- out/polyfill.d.ts | 10 +++++- package-lock.json | 60 +++++++++++++++++++++++++++++++++++ package.json | 5 +-- src/index.ts | 2 +- src/polyfill-worker.ts | 2 +- src/polyfill.ts | 11 ++++++- src/types/auth-proxy.d.ts | 9 ------ src/types/extend-request.d.ts | 28 ++++++++++++++++ src/types/logging.d.ts | 5 --- src/types/permissions.d.ts | 5 --- 12 files changed, 144 insertions(+), 27 deletions(-) delete mode 100644 src/types/auth-proxy.d.ts create mode 100644 src/types/extend-request.d.ts delete mode 100644 src/types/logging.d.ts delete mode 100644 src/types/permissions.d.ts diff --git a/README.md b/README.md index 44ac9ab..4164685 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,36 @@ npm install git+https://git.biotronik.int/scm/coe-bs-website/node-pkg-express-ut ##### 2. Copy the types -Copy the folder `src/types` to some location within the source folder of your project. +Copy the content below to any location within the source folder of your project and name it `extend-request.d.ts`. It just needs to sit there with no more action required. +```ts +// extend-request.d.ts + +declare global { + namespace Express { + interface UserInfo { + email: string, + email_verified: boolean, + family_name: string, + given_name: string, + groups: string[], + name: string, + preferred_username: string, + sub: string, + } + + interface Request { + getUserInfo(): Promise; + noLogging: boolean|undefined; + permissionDetails?: import('role-acl').Permission; + } + + interface Response { + initLogout(): boolean; + } + } +} + +export {}; +``` diff --git a/out/index.d.ts b/out/index.d.ts index 63d66d8..4f8aa89 100644 --- a/out/index.d.ts +++ b/out/index.d.ts @@ -5,7 +5,7 @@ export { AuthProxy } from './auth-proxy'; export { Resolvable, WaitForSync } from './helpers/resolvable'; export { urlJoin } from './helpers/urlJoin'; export { AutoReloader } from './auto-reload'; -export { Polyfill } from './polyfill'; +export { Polyfill, PolyfillOptions } from './polyfill'; export { Session } from './session'; export { Permissions } from './permissions'; export { UserInfo } from './helpers/userinfo'; diff --git a/out/polyfill.d.ts b/out/polyfill.d.ts index db7fc52..1aaf546 100644 --- a/out/polyfill.d.ts +++ b/out/polyfill.d.ts @@ -1,5 +1,13 @@ import { RequestHandler } from 'express'; -import { PolyfillOptions } from 'polyfill-library'; +import { PolyfillFeatureList } from 'polyfill-library'; +export declare type PolyfillOptions = { + minify: boolean; + unknown: 'polyfill' | 'ignore'; + features: PolyfillFeatureList; + excludes: string[]; + uaString: string; + rum: boolean; +}; declare function getRouter(opts?: Partial): RequestHandler; export declare const Polyfill: { getRouter: typeof getRouter; diff --git a/package-lock.json b/package-lock.json index 56206ed..a3bc38b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2369,6 +2369,66 @@ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true }, + "pkg-express-utils-types": { + "version": "file:../node-pkg-express-utils-types", + "dependencies": { + "@types/node": { + "version": "14.14.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.7.tgz", + "integrity": "sha512-Zw1vhUSQZYw+7u5dAwNbIA9TuTotpzY/OF7sJM9FqPOF3SPjKnxrjoTktXDZgUjybf4cWVBP7O8wvKdSaGHweg==" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "jsonpath-plus": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-0.18.1.tgz", + "integrity": "sha512-4yQiuV641HROc4z9YGvnsr8yAdmzbu8JjdAen8WfiXsXewKvTG4ie2bSygF2maek9PcbtROmS6aLQs31BD+oNQ==" + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" + }, + "lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=" + }, + "matcher": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-1.1.1.tgz", + "integrity": "sha512-+BmqxWIubKTRKNWx/ahnCkk3mG8m7OturVlqq6HiojGJTd5hVYbgZm6WzcYPCoB+KBT4Vd6R7WSRG2OADNaCjg==", + "requires": { + "escape-string-regexp": "^1.0.4" + } + }, + "notation": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/notation/-/notation-1.3.6.tgz", + "integrity": "sha512-DIuJmrP/Gg1DcXKaApsqcjsJD6jEccqKSfmU3BUx/f1GHsMiTJh70cERwYc64tOmTRTARCeMwkqNNzjh3AHhiw==" + }, + "role-acl": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/role-acl/-/role-acl-4.5.4.tgz", + "integrity": "sha512-T7baCc5BCFzLaxUrtAEIDcfK8HM/WTt6l2SLiMts6zLADSp7wOrrU3op0HVKhwjKi01d0Q6T4NeZ0jdLii9WuQ==", + "requires": { + "jsonpath-plus": "^0.18.0", + "lodash.clonedeep": "^4.5.0", + "lodash.flattendeep": "^4.4.0", + "matcher": "^1.0.0", + "notation": "^1.3.5" + } + }, + "typescript": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.5.tgz", + "integrity": "sha512-ywmr/VrTVCmNTJ6iV2LwIrfG1P+lv6luD8sUJs+2eI9NLGigaN+nUQc13iHqisq7bra9lnmUSYqbJvegraBOPQ==" + } + } + }, "polyfill-library": { "version": "3.97.0", "resolved": "https://registry.npmjs.org/polyfill-library/-/polyfill-library-3.97.0.tgz", diff --git a/package.json b/package.json index e461505..00823ce 100644 --- a/package.json +++ b/package.json @@ -25,15 +25,16 @@ "express-session": "^1.17.1", "json-prune": "^1.1.0", "node-fetch": "^2.6.1", + "pkg-express-utils-types": "file:../node-pkg-express-utils-types", "polyfill-library": "^3.97.0", "proper-url-join": "^2.1.1", "redis": "^3.0.2", "role-acl": "^4.5.4", + "run-script-os": "^1.1.3", "threads": "^1.6.3", "tiny-worker": "^2.3.0", "uuid": "^8.3.1", - "winston": "^3.3.3", - "run-script-os": "^1.1.3" + "winston": "^3.3.3" }, "devDependencies": { "@types/connect-redis": "0.0.15", diff --git a/src/index.ts b/src/index.ts index 7853cb5..a1ee247 100644 --- a/src/index.ts +++ b/src/index.ts @@ -5,7 +5,7 @@ export {AuthProxy} from './auth-proxy'; export {Resolvable, WaitForSync} from './helpers/resolvable'; export {urlJoin} from './helpers/urlJoin'; export {AutoReloader} from './auto-reload'; -export {Polyfill} from './polyfill'; +export {Polyfill, PolyfillOptions} from './polyfill'; export {Session} from './session'; export {Permissions} from './permissions'; diff --git a/src/polyfill-worker.ts b/src/polyfill-worker.ts index 77ddc29..838a823 100644 --- a/src/polyfill-worker.ts +++ b/src/polyfill-worker.ts @@ -3,7 +3,7 @@ import {expose} from "threads/worker"; import * as fs from "fs"; import {analyze} from '@10xjs/polyfill-analyzer'; import allPolyfills from '@10xjs/polyfill-analyzer/dist/polyfills'; -import {PolyfillFeatureList} from "polyfill-library"; +import {PolyfillFeatureList} from 'polyfill-library'; expose(() => { const exclude = [ diff --git a/src/polyfill.ts b/src/polyfill.ts index 0ea5c5d..4ff15df 100644 --- a/src/polyfill.ts +++ b/src/polyfill.ts @@ -1,10 +1,19 @@ import {RequestHandler} from 'express'; import * as polyfillLibrary from 'polyfill-library'; -import {PolyfillFeatureList, PolyfillOptions} from 'polyfill-library'; +import {PolyfillFeatureList} from 'polyfill-library'; import {DefaultConfig, Logger, WaitForSync} from '.'; import {spawn, Thread, Worker} from 'threads'; import {WorkerFunction} from 'threads/dist/types/worker'; +export type PolyfillOptions = { + minify: boolean, + unknown: 'polyfill'|'ignore', + features: PolyfillFeatureList, + excludes: string[], + uaString: string, + rum: boolean, +} + const features = new WaitForSync(); (async () => { diff --git a/src/types/auth-proxy.d.ts b/src/types/auth-proxy.d.ts deleted file mode 100644 index 0fde67d..0000000 --- a/src/types/auth-proxy.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -declare namespace Express { - interface Request { - getUserInfo(): Promise; - } - - interface Response { - initLogout(): boolean; - } -} diff --git a/src/types/extend-request.d.ts b/src/types/extend-request.d.ts new file mode 100644 index 0000000..4b557a2 --- /dev/null +++ b/src/types/extend-request.d.ts @@ -0,0 +1,28 @@ +// extend-request.d.ts + +declare global { + namespace Express { + interface UserInfo { + email: string, + email_verified: boolean, + family_name: string, + given_name: string, + groups: string[], + name: string, + preferred_username: string, + sub: string, + } + + interface Request { + getUserInfo(): Promise; + noLogging: boolean|undefined; + permissionDetails?: import('role-acl').Permission; + } + + interface Response { + initLogout(): boolean; + } + } +} + +export {}; diff --git a/src/types/logging.d.ts b/src/types/logging.d.ts deleted file mode 100644 index 83b2916..0000000 --- a/src/types/logging.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -declare namespace Express { - interface Request { - noLogging: boolean|undefined; - } -} diff --git a/src/types/permissions.d.ts b/src/types/permissions.d.ts deleted file mode 100644 index 49ed626..0000000 --- a/src/types/permissions.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -declare namespace Express { - interface Request { - permissionDetails?: import('role-acl').Permission; - } -}