From 15058aebfad5eb5012b679b79f10a8ca6f17ce22 Mon Sep 17 00:00:00 2001 From: Phil Kunz Date: Fri, 17 Aug 2018 23:23:49 +0200 Subject: [PATCH] fix(package): initial --- .gitignore | 6 + .gitlab-ci.yml | 142 ++++++++++++++++++++++++ npmextra.json | 8 ++ package-lock.json | 5 + package.json | 17 +++ test/test.ts | 8 ++ ts/index.ts | 3 + ts/smartsession.classes.smartsession.ts | 17 +++ ts/smartsession.classes.store.ts | 63 +++++++++++ ts/smartsession.plugins.ts | 2 + tslint.json | 3 + 11 files changed, 274 insertions(+) create mode 100644 .gitignore create mode 100644 .gitlab-ci.yml create mode 100644 npmextra.json create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 test/test.ts create mode 100644 ts/index.ts create mode 100644 ts/smartsession.classes.smartsession.ts create mode 100644 ts/smartsession.classes.store.ts create mode 100644 ts/smartsession.plugins.ts create mode 100644 tslint.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..344b0dc --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +.nogit/ +node_modules/ +coverage/ +public/ +pages/ +.yarn/ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..a1d614e --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,142 @@ +# gitzone standard +image: hosttoday/ht-docker-node:npmci + +cache: + paths: + - .npmci_cache/ + key: "$CI_BUILD_STAGE" + +stages: +- security +- test +- release +- metadata + +# ==================== +# security stage +# ==================== +mirror: + stage: security + script: + - npmci git mirror + tags: + - docker + - notpriv + +snyk: + stage: security + script: + - npmci command npm install -g snyk + - npmci command npm install --ignore-scripts + - npmci command snyk test + tags: + - docker + - notpriv + +# ==================== +# test stage +# ==================== +testLEGACY: + stage: test + script: + - npmci node install legacy + - npmci npm install + - npmci npm test + coverage: /\d+.?\d+?\%\s*coverage/ + tags: + - docker + - notpriv + allow_failure: true + +testLTS: + stage: test + script: + - npmci node install lts + - npmci npm install + - npmci npm test + coverage: /\d+.?\d+?\%\s*coverage/ + tags: + - docker + - notpriv + +testSTABLE: + stage: test + script: + - npmci node install stable + - npmci npm install + - npmci npm test + coverage: /\d+.?\d+?\%\s*coverage/ + tags: + - docker + - notpriv + +release: + stage: release + script: + - npmci node install stable + - npmci npm publish + only: + - tags + tags: + - docker + - notpriv + +# ==================== +# metadata stage +# ==================== +codequality: + stage: metadata + image: docker:stable + allow_failure: true + services: + - docker:stable-dind + script: + - export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/') + - docker run + --env SOURCE_CODE="$PWD" + --volume "$PWD":/code + --volume /var/run/docker.sock:/var/run/docker.sock + "registry.gitlab.com/gitlab-org/security-products/codequality:$SP_VERSION" /code + artifacts: + paths: [codeclimate.json] + tags: + - docker + - priv + +trigger: + stage: metadata + script: + - npmci trigger + only: + - tags + tags: + - docker + - notpriv + +pages: + image: hosttoday/ht-docker-node:npmci + stage: metadata + script: + - npmci command npm install -g typedoc typescript + - npmci npm install + - npmci command typedoc --module "commonjs" --target "ES2016" --out public/ ts/ + tags: + - docker + - notpriv + only: + - tags + artifacts: + expire_in: 1 week + paths: + - public + allow_failure: true + +windowsCompatibility: + image: stefanscherer/node-windows:10-build-tools + stage: metadata + script: + - npm install & npm test + coverage: /\d+.?\d+?\%\s*coverage/ + tags: + - windows + allow_failure: true diff --git a/npmextra.json b/npmextra.json new file mode 100644 index 0000000..aa842b7 --- /dev/null +++ b/npmextra.json @@ -0,0 +1,8 @@ +{ + "npmci": { + "npmGlobalTools": [ + "@gitzone/npmts", + "ts-node" + ] + } +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..9acaf3d --- /dev/null +++ b/package-lock.json @@ -0,0 +1,5 @@ +{ + "name": "smartsession", + "version": "1.0.1", + "lockfileVersion": 1 +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..e58ecdf --- /dev/null +++ b/package.json @@ -0,0 +1,17 @@ +{ + "name": "smartsession", + "private": false, + "version": "1.0.1", + "description": "handle sessions serverside", + "main": "dist/index.js", + "typings": "dist/index.d.ts", + "author": "Lossless GmbH", + "license": "MIT", + "scripts": { + "test": "(tsrun test/test.ts)", + "format": "(gitzone format)", + "build": "(npmts)" + }, + "devDependencies": {}, + "dependencies": {} +} diff --git a/test/test.ts b/test/test.ts new file mode 100644 index 0000000..300c2c4 --- /dev/null +++ b/test/test.ts @@ -0,0 +1,8 @@ +import { expect, tap } from '@pushrocks/tapbundle'; +import * as smartsession from '../ts/index'; + +tap.test('first test', async () => { + console.log(smartsession.standardExport); +}); + +tap.start(); diff --git a/ts/index.ts b/ts/index.ts new file mode 100644 index 0000000..9e5f2ac --- /dev/null +++ b/ts/index.ts @@ -0,0 +1,3 @@ + +import * as smartsession from './smartsession.classes.smartsession'; + diff --git a/ts/smartsession.classes.smartsession.ts b/ts/smartsession.classes.smartsession.ts new file mode 100644 index 0000000..6f63ca2 --- /dev/null +++ b/ts/smartsession.classes.smartsession.ts @@ -0,0 +1,17 @@ +import * as plugins from './smartsession.plugins'; +import { } from './smartsession.classes.store'; + + + +export class Smartsession { + /** + * registers a new user with a given key and assign + */ + register(uuidArg: string, payloadArg: T): boolean { + return true + } + + registerAndGenerateUuid(): string { + return '' + } +} \ No newline at end of file diff --git a/ts/smartsession.classes.store.ts b/ts/smartsession.classes.store.ts new file mode 100644 index 0000000..d729e32 --- /dev/null +++ b/ts/smartsession.classes.store.ts @@ -0,0 +1,63 @@ +import * as plugins from './smartsession.plugins'; + +export interface storageObject { + [key: string]: any +} + +/** + * SessionStore is in charge of storing session related data + */ +export class SessionStore { + memoryStore: storageObject = {}; + + /** + * check for an id + */ + checkForId(idArg: string): boolean { + if(this.memoryStore[idArg]) { + return true; + } + return false + } + + /** + * gets an id + */ + getId(idArg: string): T { + return this.memoryStore[idArg]; + } + + /** + * + */ + removeId(idArg: string): boolean { + // TODO: implement + if(this.checkForId(idArg)) { + delete this.memoryStore[idArg]; + return true + } + return false + } + + /** + * updates an id within store + */ + updateId(idArg: string, payloadArg: T) { + if(this.checkForId(idArg)) { + this.memoryStore[idArg] = payloadArg; + } + } + + /** + * upserts an id within store + */ + upsertId(idArg: string, payloadArg: T) { + this.memoryStore[idArg] = payloadArg; + } + + /** + * syncs the fast memory store with a persistence layer in an async way + * TODO: Think about what actions need to be blocking to ensure cluster availability + */ + sync() {} +}; diff --git a/ts/smartsession.plugins.ts b/ts/smartsession.plugins.ts new file mode 100644 index 0000000..29aa9da --- /dev/null +++ b/ts/smartsession.plugins.ts @@ -0,0 +1,2 @@ +const removeme = {}; +export { removeme }; diff --git a/tslint.json b/tslint.json new file mode 100644 index 0000000..45052ad --- /dev/null +++ b/tslint.json @@ -0,0 +1,3 @@ +{ + "extends": "tslint-config-standard" +}