Compare commits

..

8 Commits

Author SHA1 Message Date
256a14fcb0 3.0.6 2019-08-02 16:32:52 +02:00
7aa0f05bae fix(core): update 2019-08-02 16:32:52 +02:00
6208cab36a 3.0.5 2019-03-15 23:50:40 +01:00
50a9697baf fix(objectmap): getArray() now has correct return type 2019-03-15 23:50:39 +01:00
7956cf6ace 3.0.4 2018-12-11 01:41:05 +01:00
d8956d4e32 fix(ci): remove old build dependencies 2018-12-11 01:41:05 +01:00
c93a67c351 3.0.3 2018-12-11 01:36:15 +01:00
fafd9867ad fix(core): update 2018-12-11 01:36:14 +01:00
14 changed files with 654 additions and 375 deletions

View File

@ -34,21 +34,34 @@ snyk:
- docker - docker
- notpriv - notpriv
sast:
stage: security
image: registry.gitlab.com/hosttoday/ht-docker-dbase:npmci
variables:
DOCKER_DRIVER: overlay2
allow_failure: true
services:
- docker:stable-dind
script:
- npmci npm prepare
- npmci npm install
- npmci command npm run build
- export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/')
- docker run
--env SAST_CONFIDENCE_LEVEL="${SAST_CONFIDENCE_LEVEL:-3}"
--volume "$PWD:/code"
--volume /var/run/docker.sock:/var/run/docker.sock
"registry.gitlab.com/gitlab-org/security-products/sast:$SP_VERSION" /app/bin/run /code
artifacts:
reports:
sast: gl-sast-report.json
tags:
- docker
- priv
# ==================== # ====================
# test stage # test stage
# ==================== # ====================
testLEGACY:
stage: test
script:
- npmci npm prepare
- npmci node install legacy
- npmci npm install
- npmci npm test
coverage: /\d+.?\d+?\%\s*coverage/
tags:
- docker
- notpriv
allow_failure: true
testLTS: testLTS:
stage: test stage: test

3
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,3 @@
{
"workbench.colorCustomizations": {}
}

View File

@ -1,26 +1,20 @@
# lik # @pushrocks/lik
light little helpers for node light little helpers for node
## Availabililty ## Availabililty and Links
* [npmjs.org (npm package)](https://www.npmjs.com/package/@pushrocks/lik)
[![npm](https://pushrocks.gitlab.io/assets/repo-button-npm.svg)](https://www.npmjs.com/package/lik) * [gitlab.com (source)](https://gitlab.com/pushrocks/lik)
[![git](https://pushrocks.gitlab.io/assets/repo-button-git.svg)](https://GitLab.com/pushrocks/lik) * [github.com (source mirror)](https://github.com/pushrocks/lik)
[![git](https://pushrocks.gitlab.io/assets/repo-button-mirror.svg)](https://github.com/pushrocks/lik) * [docs (typedoc)](https://pushrocks.gitlab.io/lik/)
[![docs](https://pushrocks.gitlab.io/assets/repo-button-docs.svg)](https://pushrocks.gitlab.io/lik/)
## Status for master ## Status for master
[![build status](https://gitlab.com/pushrocks/lik/badges/master/build.svg)](https://gitlab.com/pushrocks/lik/commits/master)
[![build status](https://GitLab.com/pushrocks/lik/badges/master/build.svg)](https://GitLab.com/pushrocks/lik/commits/master) [![coverage report](https://gitlab.com/pushrocks/lik/badges/master/coverage.svg)](https://gitlab.com/pushrocks/lik/commits/master)
[![coverage report](https://GitLab.com/pushrocks/lik/badges/master/coverage.svg)](https://GitLab.com/pushrocks/lik/commits/master) [![npm downloads per month](https://img.shields.io/npm/dm/@pushrocks/lik.svg)](https://www.npmjs.com/package/@pushrocks/lik)
[![npm downloads per month](https://img.shields.io/npm/dm/lik.svg)](https://www.npmjs.com/package/lik) [![Known Vulnerabilities](https://snyk.io/test/npm/@pushrocks/lik/badge.svg)](https://snyk.io/test/npm/@pushrocks/lik)
[![Dependency Status](https://david-dm.org/pushrocks/lik.svg)](https://david-dm.org/pushrocks/lik) [![TypeScript](https://img.shields.io/badge/TypeScript->=%203.x-blue.svg)](https://nodejs.org/dist/latest-v10.x/docs/api/)
[![bitHound Dependencies](https://www.bithound.io/github/pushrocks/lik/badges/dependencies.svg)](https://www.bithound.io/github/pushrocks/lik/master/dependencies/npm) [![node](https://img.shields.io/badge/node->=%2010.x.x-blue.svg)](https://nodejs.org/dist/latest-v10.x/docs/api/)
[![bitHound Code](https://www.bithound.io/github/pushrocks/lik/badges/code.svg)](https://www.bithound.io/github/pushrocks/lik) [![JavaScript Style Guide](https://img.shields.io/badge/code%20style-prettier-ff69b4.svg)](https://prettier.io/)
[![Known Vulnerabilities](https://snyk.io/test/npm/lik/badge.svg)](https://snyk.io/test/npm/lik)
[![TypeScript](https://img.shields.io/badge/TypeScript-2.x-blue.svg)](https://nodejs.org/dist/latest-v6.x/docs/api/)
[![node](https://img.shields.io/badge/node->=%206.x.x-blue.svg)](https://nodejs.org/dist/latest-v6.x/docs/api/)
[![JavaScript Style Guide](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com/)
## Usage ## Usage
@ -41,7 +35,9 @@ like when a certain string is removed or added to the map
Sometimes you need to keep track of objects, but implementing logic for removing, finding or updating is tedious. Sometimes you need to keep track of objects, but implementing logic for removing, finding or updating is tedious.
Objectmap takes care of keeping track of objects for you. Objectmap takes care of keeping track of objects for you.
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh) For further information read the linked docs at the top of this readme.
> | By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html)
[![repo-footer](https://pushrocks.gitlab.io/assets/repo-footer.svg)](https://push.rocks) > MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
| By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html)
[![repo-footer](https://pushrocks.gitlab.io/assets/repo-footer.svg)](https://maintainedby.lossless.com)

View File

@ -1,14 +1,16 @@
{ {
"npmci": { "npmci": {
"npmGlobalTools": [ "npmGlobalTools": [],
"@gitzone/npmts"
],
"npmAccessLevel": "public" "npmAccessLevel": "public"
}, },
"npmts": { "gitzone": {
"coverageTreshold": 40, "module": {
"testConfig": { "githost": "gitlab.com",
"parallel": false "gitscope": "pushrocks",
"gitrepo": "lik",
"shortDescription": "light little helpers for node",
"npmPackagename": "@pushrocks/lik",
"license": "MIT"
} }
} }
} }

821
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{ {
"name": "@pushrocks/lik", "name": "@pushrocks/lik",
"version": "3.0.2", "version": "3.0.6",
"private": false, "private": false,
"description": "light little helpers for node", "description": "light little helpers for node",
"main": "dist/index.js", "main": "dist/index.js",
@ -20,18 +20,18 @@
}, },
"homepage": "https://gitlab.com/pushrocks/lik#README", "homepage": "https://gitlab.com/pushrocks/lik#README",
"devDependencies": { "devDependencies": {
"@gitzone/tsbuild": "^2.0.22", "@gitzone/tsbuild": "^2.1.3",
"@gitzone/tsrun": "^1.1.13", "@gitzone/tsrun": "^1.1.17",
"@gitzone/tstest": "^1.0.15", "@gitzone/tstest": "^1.0.18",
"@pushrocks/tapbundle": "^3.0.7", "@pushrocks/tapbundle": "^3.0.7",
"@types/node": "^10.12.10", "@types/node": "^10.12.12",
"tslint": "^5.11.0", "tslint": "^5.11.0",
"tslint-config-prettier": "^1.16.0" "tslint-config-prettier": "^1.17.0"
}, },
"dependencies": { "dependencies": {
"@pushrocks/smartdelay": "^2.0.2", "@pushrocks/smartdelay": "^2.0.2",
"@pushrocks/smartpromise": "^2.0.5", "@pushrocks/smartpromise": "^2.0.5",
"@pushrocks/smartrx": "^2.0.2", "@pushrocks/smartrx": "^2.0.3",
"@pushrocks/smarttime": "^3.0.5", "@pushrocks/smarttime": "^3.0.5",
"@types/minimatch": "^3.0.3", "@types/minimatch": "^3.0.3",
"minimatch": "^3.0.4", "minimatch": "^3.0.4",

View File

@ -4,7 +4,7 @@ import * as lik from '../ts/index';
let testInterestmap: lik.InterestMap<number, number>; let testInterestmap: lik.InterestMap<number, number>;
tap.test('should create an interestmap', async () => { tap.test('should create an interestmap', async () => {
testInterestmap = new lik.InterestMap((numberArg) => { testInterestmap = new lik.InterestMap(numberArg => {
return numberArg.toString(); return numberArg.toString();
}); });
}); });

View File

@ -0,0 +1,25 @@
// import test framework
import { expect, tap } from '@pushrocks/tapbundle';
import * as events from 'events';
import * as smartpromise from '@pushrocks/smartpromise';
// import the module
import * as lik from '../ts/index';
let testTimedAggregator: lik.TimedAggregtor<string>;
tap.test('should create a timed aggregaotor', async (tools) => {
testTimedAggregator = new lik.TimedAggregtor<string>({
aggregationIntervalInMillis: 1000,
functionForAggregation: (aggregation) => {
console.log(aggregation);
}
});
testTimedAggregator.add('This');
testTimedAggregator.add('is a whole sentence.');
await tools.delayFor(1001);
testTimedAggregator.add('This one is another.');
await tools.delayFor(2000);
});
tap.start();

View File

@ -7,4 +7,5 @@ export * from './lik.limitedarray';
export * from './lik.looptracker'; export * from './lik.looptracker';
export * from './lik.objectmap'; export * from './lik.objectmap';
export * from './lik.stringmap'; export * from './lik.stringmap';
export * from './lik.timedaggregator';
export * from './lik.tree'; export * from './lik.tree';

View File

@ -1,6 +1,6 @@
import * as plugins from './lik.plugins'; import * as plugins from './lik.plugins';
import { InterestMap, IInterestComparisonFunc} from './lik.interestmap'; import { InterestMap, IInterestComparisonFunc } from './lik.interestmap';
export class Interest<DTInterestId, DTInterestFullfillment> { export class Interest<DTInterestId, DTInterestFullfillment> {
private interestMapRef: InterestMap<DTInterestId, DTInterestFullfillment>; private interestMapRef: InterestMap<DTInterestId, DTInterestFullfillment>;
@ -21,7 +21,9 @@ export class Interest<DTInterestId, DTInterestFullfillment> {
return this.comparisonFunc(this.originalInterest); return this.comparisonFunc(this.originalInterest);
} }
private interestDeferred: plugins.smartpromise.Deferred<DTInterestFullfillment> = new plugins.smartpromise.Deferred(); private interestDeferred: plugins.smartpromise.Deferred<
DTInterestFullfillment
> = new plugins.smartpromise.Deferred();
public interestFullfilled = this.interestDeferred.promise; public interestFullfilled = this.interestDeferred.promise;
/** /**

View File

@ -7,8 +7,6 @@ import { Interest } from './lik.interestmap.interest';
export type IInterestComparisonFunc<T> = (objectArg: T) => string; export type IInterestComparisonFunc<T> = (objectArg: T) => string;
export class InterestMap<DTInterestId, DTInterestFullfillment> { export class InterestMap<DTInterestId, DTInterestFullfillment> {
/** /**
* stores interests that are currently fullfilled by the cache * stores interests that are currently fullfilled by the cache
@ -95,12 +93,11 @@ export class InterestMap<DTInterestId, DTInterestFullfillment> {
* inform lost interest * inform lost interest
* @param interestId * @param interestId
*/ */
public informLostInterest (interestId: DTInterestId) { public informLostInterest(interestId: DTInterestId) {
const wantedInterest = this.findInterest(interestId); const wantedInterest = this.findInterest(interestId);
if (wantedInterest) { if (wantedInterest) {
wantedInterest.markLost(); wantedInterest.markLost();
} }
} }
/** /**

View File

@ -95,7 +95,7 @@ export class Objectmap<T> {
/** /**
* returns a cloned array of all the objects currently in the Objectmap * returns a cloned array of all the objects currently in the Objectmap
*/ */
public getArray() { public getArray(): T[] {
const returnArray: any[] = []; const returnArray: any[] = [];
for (const objectItem of this.objectArray) { for (const objectItem of this.objectArray) {
returnArray.push(objectItem); returnArray.push(objectItem);

View File

@ -14,17 +14,12 @@ import * as smartpromise from '@pushrocks/smartpromise';
import * as smartrx from '@pushrocks/smartrx'; import * as smartrx from '@pushrocks/smartrx';
import * as smarttime from '@pushrocks/smarttime'; import * as smarttime from '@pushrocks/smarttime';
export { export { smartdelay, smartpromise, smartrx, smarttime };
smartdelay,
smartpromise,
smartrx,
smarttime
};
// ============== // ==============
// third party // third party
// ============== // ==============
import * as minimatch from 'minimatch'; import minimatch from 'minimatch';
const symbolTree = require('symbol-tree'); const symbolTree = require('symbol-tree');
export { minimatch, symbolTree }; export { minimatch, symbolTree };

42
ts/lik.timedaggregator.ts Normal file
View File

@ -0,0 +1,42 @@
import * as plugins from './lik.plugins';
export interface ITimedAggregatorOptions<T> {
aggregationIntervalInMillis: number;
functionForAggregation: (input: T[]) => void;
}
export class TimedAggregtor<T> {
public options: ITimedAggregatorOptions<T>;
private storageArray: T[] = [];
constructor(optionsArg: ITimedAggregatorOptions<T>) {
this.options = optionsArg;
}
private aggregationTimer: plugins.smarttime.Timer;
private checkAggregationStatus () {
const addAggregationTimer = () => {
this.aggregationTimer = new plugins.smarttime.Timer(this.options.aggregationIntervalInMillis);
this.aggregationTimer.completed.then(() => {
const aggregateForProcessing = this.storageArray;
if (aggregateForProcessing.length === 0) {
this.aggregationTimer = null;
return;
}
this.storageArray = [];
addAggregationTimer();
this.options.functionForAggregation(aggregateForProcessing);
});
this.aggregationTimer.start();
};
if (!this.aggregationTimer) {
addAggregationTimer();
}
}
public add(aggregationArg: T) {
this.storageArray.push(aggregationArg);
this.checkAggregationStatus();
}
};