Compare commits

..

10 Commits

Author SHA1 Message Date
211529ffff 3.0.7 2019-09-16 13:19:42 +02:00
d4f5d19231 fix(core): update 2019-09-16 13:19:42 +02:00
80d6a5103a 3.0.6 2019-09-16 13:18:45 +02:00
c22bbe2daf fix(core): update 2019-09-16 13:18:45 +02:00
82af55fae9 3.0.5 2019-05-10 17:07:26 +02:00
90f8ee4e9d fix(core): update 2019-05-10 17:07:25 +02:00
4fe85134c4 3.0.4 2019-05-10 17:05:04 +02:00
c307b7c7b0 fix(core): update 2019-05-10 17:05:04 +02:00
e4f608f7eb 3.0.3 2019-05-10 17:03:07 +02:00
0689e33ae6 fix(core): update 2019-05-10 17:03:07 +02:00
8 changed files with 605 additions and 378 deletions

5
.gitignore vendored
View File

@@ -8,9 +8,12 @@ pages/
# installs # installs
node_modules/ node_modules/
# caches and builds # caches
.yarn/ .yarn/
.cache/ .cache/
.rpt2_cache
# builds
dist/ dist/
dist_web/ dist_web/
dist_serve/ dist_serve/

View File

@@ -1,5 +1,5 @@
# gitzone standard # gitzone ci_default
image: hosttoday/ht-docker-node:npmci image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
cache: cache:
paths: paths:
@@ -38,19 +38,7 @@ snyk:
# test stage # test stage
# ==================== # ====================
testLTS: testStable:
stage: test
script:
- npmci npm prepare
- npmci node install lts
- npmci npm install
- npmci npm test
coverage: /\d+.?\d+?\%\s*coverage/
tags:
- docker
- notpriv
testSTABLE:
stage: test stage: test
script: script:
- npmci npm prepare - npmci npm prepare
@@ -60,6 +48,18 @@ testSTABLE:
coverage: /\d+.?\d+?\%\s*coverage/ coverage: /\d+.?\d+?\%\s*coverage/
tags: tags:
- docker - docker
- priv
testBuild:
stage: test
script:
- npmci npm prepare
- npmci node install stable
- npmci npm install
- npmci command npm run build
coverage: /\d+.?\d+?\%\s*coverage/
tags:
- docker
- notpriv - notpriv
release: release:
@@ -78,19 +78,11 @@ release:
# ==================== # ====================
codequality: codequality:
stage: metadata stage: metadata
image: docker:stable
allow_failure: true allow_failure: true
services:
- docker:stable-dind
script: script:
- export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/') - npmci command npm install -g tslint typescript
- docker run - npmci npm install
--env SOURCE_CODE="$PWD" - npmci command "tslint -c tslint.json ./ts/**/*.ts"
--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: tags:
- docker - docker
- priv - priv
@@ -106,13 +98,15 @@ trigger:
- notpriv - notpriv
pages: pages:
image: hosttoday/ht-docker-node:npmci image: hosttoday/ht-docker-dbase:npmci
services:
- docker:stable-dind
stage: metadata stage: metadata
script: script:
- npmci command npm install -g typedoc typescript - npmci command npm install -g @gitzone/tsdoc
- npmci npm prepare - npmci npm prepare
- npmci npm install - npmci npm install
- npmci command typedoc --module "commonjs" --target "ES2016" --out public/ ts/ - npmci command tsdoc
tags: tags:
- docker - docker
- notpriv - notpriv

View File

@@ -56,6 +56,6 @@ mergedData = myNpmExtra.dataFor('sometool', {
For further information read the linked docs at the top of this readme. For further information read the linked docs at the top of this readme.
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh) > MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
| By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html) | By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy)
[![repo-footer](https://pushrocks.gitlab.io/assets/repo-footer.svg)](https://maintainedby.lossless.com) [![repo-footer](https://lossless.gitlab.io/publicrelations/repofooter.svg)](https://maintainedby.lossless.com)

764
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{ {
"name": "@pushrocks/npmextra", "name": "@pushrocks/npmextra",
"version": "3.0.2", "version": "3.0.7",
"private": false, "private": false,
"description": "do more with npm", "description": "do more with npm",
"main": "dist/index.js", "main": "dist/index.js",
@@ -20,18 +20,30 @@
}, },
"homepage": "https://gitlab.com/pushrocks/npmextra#README", "homepage": "https://gitlab.com/pushrocks/npmextra#README",
"dependencies": { "dependencies": {
"@pushrocks/smartfile": "^7.0.2", "@pushrocks/smartfile": "^7.0.4",
"@pushrocks/smartlog": "^2.0.19", "@pushrocks/smartlog": "^2.0.19",
"@pushrocks/smartpath": "^4.0.1", "@pushrocks/smartpath": "^4.0.1",
"@pushrocks/smartpromise": "^3.0.2", "@pushrocks/smartpromise": "^3.0.5",
"@pushrocks/taskbuffer": "^2.0.7", "@pushrocks/taskbuffer": "^2.0.10"
"smartlodash": "^1.0.1"
}, },
"devDependencies": { "devDependencies": {
"@gitzone/tsbuild": "^2.1.11", "@gitzone/tsbuild": "^2.1.17",
"@gitzone/tsrun": "^1.2.6", "@gitzone/tsrun": "^1.2.8",
"@gitzone/tstest": "^1.0.20", "@gitzone/tstest": "^1.0.24",
"@pushrocks/tapbundle": "^3.0.9", "@pushrocks/tapbundle": "^3.0.13",
"@types/node": "^12.0.0" "@types/node": "^12.7.5",
} "tslint": "^5.20.0",
"tslint-config-prettier": "^1.18.0"
},
"files": [
"ts/*",
"ts_web/*",
"dist/*",
"dist_web/*",
"dist_ts_web/*",
"assets/*",
"cli.js",
"npmextra.json",
"readme.md"
]
} }

View File

@@ -1,7 +1,7 @@
import * as plugins from './npmextra.plugins'; import * as plugins from './npmextra.plugins';
import * as paths from './npmextra.paths'; import * as paths from './npmextra.paths';
import { Task, TaskOnce } from '@pushrocks/taskbuffer'; import { Task } from '@pushrocks/taskbuffer';
export type TKeyValueStore = 'path' | 'gitProject' | 'custom'; export type TKeyValueStore = 'path' | 'gitProject' | 'custom';
@@ -9,34 +9,48 @@ export type TKeyValueStore = 'path' | 'gitProject' | 'custom';
* kvStore is a simple key vlaue store to store data about projects between runs * kvStore is a simple key vlaue store to store data about projects between runs
*/ */
export class KeyValueStore { export class KeyValueStore {
dataObject: any; private dataObject: any = {};
deletedObject: any = {}; private deletedObject: any = {};
initialReadTask = new TaskOnce({ public syncTask = new Task({
taskFunction: async () => { name: 'syncTask',
this.dataObject = plugins.smartfile.fs.toObjectSync(this.filePath);
}
});
syncTask = new Task({
buffered: true, buffered: true,
bufferMax: 2, bufferMax: 2,
execDelay: 500, execDelay: 500,
taskFunction: async () => { taskFunction: async () => {
this.dataObject = plugins.smartlodash.merge( this.dataObject = {
{}, ...plugins.smartfile.fs.toObjectSync(this.filePath),
plugins.smartfile.fs.toObjectSync(this.filePath), ...this.dataObject
this.dataObject };
); for (const key of Object.keys(this.deletedObject)) {
for (let key in this.deletedObject) {
delete this.dataObject[key]; delete this.dataObject[key];
} }
this.deletedObject = {}; this.deletedObject = {};
await plugins.smartfile.memory.toFs(JSON.stringify(this.dataObject), this.filePath); await plugins.smartfile.memory.toFs(JSON.stringify(this.dataObject), this.filePath);
}, }
name: 'syncTask'
}); });
type: TKeyValueStore; // the type of the kvStore /**
identity: string; // the identity of the kvStore * computes the identity
filePath: string; // the filePath of the kvStore */
private initFilePath = () => {
// determine the right base directory
let baseDir: string;
if (this.type === 'custom') {
baseDir = paths.kvCustomDir;
} else if (this.type === 'gitProject') {
baseDir = paths.kvGitDir;
} else if (this.type === 'path') {
baseDir = paths.kvPathDir;
}
this.filePath = plugins.path.join(baseDir, this.identity + '.json');
plugins.smartfile.fs.ensureDirSync(paths.kvCustomDir);
plugins.smartfile.fs.ensureDirSync(paths.kvGitDir);
plugins.smartfile.fs.ensureDirSync(paths.kvPathDir);
plugins.smartfile.fs.ensureFileSync(this.filePath, '{}');
};
public type: TKeyValueStore; // the type of the kvStore
public identity: string; // the identity of the kvStore
public filePath: string; // the filePath of the kvStore
/** /**
* the constructor of keyvalue store * the constructor of keyvalue store
@@ -53,68 +67,46 @@ export class KeyValueStore {
/** /**
* reads all keyValue pairs at once and returns them * reads all keyValue pairs at once and returns them
*/ */
async readAll() { public async readAll() {
await this.initialReadTask.trigger(); await this.syncTask.trigger();
this.syncTask.trigger();
return this.dataObject; return this.dataObject;
} }
/** /**
* reads a keyValueFile from disk * reads a keyValueFile from disk
*/ */
async readKey(keyArg: string) { public async readKey(keyArg: string) {
let data = await this.readAll(); await this.syncTask.trigger();
return data[keyArg]; return this.dataObject[keyArg];
} }
/** /**
* writes a specific key to the keyValueStore * writes a specific key to the keyValueStore
*/ */
async writeKey(keyArg: string, valueArg: any) { public async writeKey(keyArg: string, valueArg: any) {
let writeObject: any = {}; await this.writeAll({
writeObject[keyArg] = valueArg; [keyArg]: valueArg
this.writeAll(writeObject); });
}
public async deleteKey(keyArg: string) {
this.deletedObject[keyArg] = this.dataObject[keyArg];
await this.syncTask.trigger();
} }
/** /**
* writes all keyValue pairs in the object argument * writes all keyValue pairs in the object argument
*/ */
async writeAll(keyValueObject) { public async writeAll(keyValueObject) {
plugins.smartlodash.merge(this.dataObject, keyValueObject); this.dataObject = { ...this.dataObject, ...keyValueObject };
this.syncTask.trigger(); await this.syncTask.trigger();
} }
/** /**
* wipes a key value store from disk * wipes a key value store from disk
*/ */
async wipe() { public async wipe() {
for (let key in this.dataObject) { this.dataObject = {};
this.deletedObject[key] = this.dataObject[key]; await plugins.smartfile.fs.remove(this.filePath);
}
}
/**
* updates a value
*/
async update(keyObject) {}
/**
* computes the identity
*/
private initFilePath() {
// determine the right base directory
let baseDir: string;
if (this.type === 'custom') {
baseDir = paths.kvCustomDir;
} else if (this.type === 'gitProject') {
baseDir = paths.kvGitDir;
} else if (this.type === 'path') {
baseDir = paths.kvPathDir;
}
this.filePath = plugins.path.join(baseDir, this.identity + '.json');
plugins.smartfile.fs.ensureDirSync(paths.kvCustomDir);
plugins.smartfile.fs.ensureDirSync(paths.kvGitDir);
plugins.smartfile.fs.ensureDirSync(paths.kvPathDir);
plugins.smartfile.fs.ensureFileSync(this.filePath, '{}');
} }
} }

View File

@@ -34,7 +34,10 @@ export class Npmextra {
} else { } else {
npmextraToolOptions = {}; npmextraToolOptions = {};
} }
let mergedOptions = plugins.smartlodash.merge({}, defaultOptionsArg, npmextraToolOptions); let mergedOptions = {
...defaultOptionsArg,
...npmextraToolOptions
};
return mergedOptions; return mergedOptions;
} }

View File

@@ -1,9 +1,8 @@
import * as beautylog from '@pushrocks/smartlog'; import * as beautylog from '@pushrocks/smartlog';
import * as path from 'path'; import * as path from 'path';
import * as smartfile from '@pushrocks/smartfile'; import * as smartfile from '@pushrocks/smartfile';
import smartlodash from 'smartlodash';
import * as smartpath from '@pushrocks/smartpath'; import * as smartpath from '@pushrocks/smartpath';
import * as smartpromise from '@pushrocks/smartpromise'; import * as smartpromise from '@pushrocks/smartpromise';
import * as taskbuffer from '@pushrocks/taskbuffer'; import * as taskbuffer from '@pushrocks/taskbuffer';
export { beautylog, path, smartfile, smartpath, smartpromise, smartlodash, taskbuffer }; export { beautylog, path, smartfile, smartpath, smartpromise, taskbuffer };