fix(core): update

This commit is contained in:
Philipp Kunz 2021-10-03 17:37:03 +02:00
parent de87e314c0
commit d4cea26fb5
15 changed files with 194 additions and 130 deletions

16
.gitignore vendored
View File

@ -1,6 +1,20 @@
.nogit/ .nogit/
node_modules/
# artifacts
coverage/ coverage/
public/ public/
pages/ pages/
# installs
node_modules/
# caches
.yarn/ .yarn/
.cache/
.rpt2_cache
# builds
dist/
dist_*/
# custom

View File

@ -1,16 +1,16 @@
# gitzone standard # gitzone ci_default
image: hosttoday/ht-docker-node:npmci image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
cache: cache:
paths: paths:
- .npmci_cache/ - .npmci_cache/
key: "$CI_BUILD_STAGE" key: '$CI_BUILD_STAGE'
stages: stages:
- security - security
- test - test
- release - release
- metadata - metadata
# ==================== # ====================
# security stage # security stage
@ -18,109 +18,115 @@ stages:
mirror: mirror:
stage: security stage: security
script: script:
- npmci git mirror - npmci git mirror
only:
- tags
tags: tags:
- docker - lossless
- notpriv - docker
- notpriv
snyk: auditProductionDependencies:
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
stage: security stage: security
script: script:
- npmci command npm install -g snyk - npmci npm prepare
- npmci command npm install --ignore-scripts - npmci command npm install --production --ignore-scripts
- npmci command snyk test - npmci command npm config set registry https://registry.npmjs.org
- npmci command npm audit --audit-level=high --only=prod --production
tags: tags:
- docker - docker
- notpriv allow_failure: true
auditDevDependencies:
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
stage: security
script:
- npmci npm prepare
- npmci command npm install --ignore-scripts
- npmci command npm config set registry https://registry.npmjs.org
- npmci command npm audit --audit-level=high --only=dev
tags:
- docker
allow_failure: true
# ==================== # ====================
# test stage # 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: testStable:
stage: test stage: test
script: script:
- npmci node install lts - npmci npm prepare
- npmci npm install - npmci node install stable
- npmci npm test - npmci npm install
- npmci npm test
coverage: /\d+.?\d+?\%\s*coverage/ coverage: /\d+.?\d+?\%\s*coverage/
tags: tags:
- docker - docker
- notpriv
testBuild:
testSTABLE:
stage: test stage: test
script: script:
- npmci node install stable - npmci npm prepare
- npmci npm install - npmci node install stable
- npmci npm test - npmci npm install
- npmci command npm run build
coverage: /\d+.?\d+?\%\s*coverage/ coverage: /\d+.?\d+?\%\s*coverage/
tags: tags:
- docker - docker
- notpriv
release: release:
stage: release stage: release
script: script:
- npmci node install stable - npmci node install stable
- npmci npm publish - npmci npm publish
only: only:
- tags - tags
tags: tags:
- docker - lossless
- notpriv - docker
- notpriv
# ==================== # ====================
# metadata stage # metadata stage
# ==================== # ====================
codequality: codequality:
stage: metadata stage: metadata
image: docker:stable
allow_failure: true allow_failure: true
services: only:
- docker:stable-dind - tags
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 prepare
--env SOURCE_CODE="$PWD" - npmci npm install
--volume "$PWD":/code - npmci command "tslint -c tslint.json ./ts/**/*.ts"
--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 - lossless
- priv - docker
- priv
trigger: trigger:
stage: metadata stage: metadata
script: script:
- npmci trigger - npmci trigger
only: only:
- tags - tags
tags: tags:
- docker - lossless
- notpriv - docker
- notpriv
pages: pages:
image: hosttoday/ht-docker-node:npmci
stage: metadata stage: metadata
script: script:
- npmci command npm install -g typedoc typescript - npmci node install lts
- npmci command npm install -g @gitzone/tsdoc
- npmci npm prepare
- npmci npm install - npmci npm install
- npmci command typedoc --module "commonjs" --target "ES2016" --out public/ ts/ - npmci command tsdoc
tags: tags:
- lossless
- docker - docker
- notpriv - notpriv
only: only:
@ -128,15 +134,5 @@ pages:
artifacts: artifacts:
expire_in: 1 week expire_in: 1 week
paths: paths:
- public - 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 allow_failure: true

11
.vscode/launch.json vendored Normal file
View File

@ -0,0 +1,11 @@
{
"version": "0.2.0",
"configurations": [
{
"command": "npm test",
"name": "Run npm test",
"request": "launch",
"type": "node-terminal"
}
]
}

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

@ -0,0 +1,26 @@
{
"json.schemas": [
{
"fileMatch": ["/npmextra.json"],
"schema": {
"type": "object",
"properties": {
"npmci": {
"type": "object",
"description": "settings for npmci"
},
"gitzone": {
"type": "object",
"description": "settings for gitzone",
"properties": {
"projectType": {
"type": "string",
"enum": ["website", "element", "service", "npm", "wcc"]
}
}
}
}
}
}
]
}

View File

@ -1,6 +1,17 @@
{ {
"gitzone": {
"projectType": "npm",
"module": {
"githost": "gitlab.com",
"gitscope": "pushrocks",
"gitrepo": "smartfuzzy",
"shortDescription": "search things easily",
"npmPackagename": "@pushrocks/smartfuzzy",
"license": "MIT"
}
},
"npmci": { "npmci": {
"npmGlobalTools": [], "npmGlobalTools": [],
"npmAccessLevel": "public" "npmAccessLevel": "public"
} }
} }

27
package-lock.json generated
View File

@ -18,7 +18,7 @@
"@gitzone/tsbuild": "^2.1.27", "@gitzone/tsbuild": "^2.1.27",
"@gitzone/tstest": "^1.0.57", "@gitzone/tstest": "^1.0.57",
"@pushrocks/tapbundle": "^3.2.14", "@pushrocks/tapbundle": "^3.2.14",
"@types/node": "^10.7.1" "@types/node": "^16.10.2"
} }
}, },
"node_modules/@apiglobal/typedrequest": { "node_modules/@apiglobal/typedrequest": {
@ -1890,13 +1890,6 @@
"tsbundle": "cli.js" "tsbundle": "cli.js"
} }
}, },
"node_modules/@gitzone/tsbundle/node_modules/@types/node": {
"version": "16.10.2",
"resolved": "https://verdaccio.lossless.one/@types%2fnode/-/node-16.10.2.tgz",
"integrity": "sha512-zCclL4/rx+W5SQTzFs9wyvvyCwoK9QtBpratqz2IYJ3O8Umrn0m3nsTv0wQBk9sRGpvUe9CwPDrQFB10f1FIjQ==",
"dev": true,
"license": "MIT"
},
"node_modules/@gitzone/tsbundle/node_modules/rollup-plugin-sourcemaps": { "node_modules/@gitzone/tsbundle/node_modules/rollup-plugin-sourcemaps": {
"version": "0.6.3", "version": "0.6.3",
"resolved": "https://verdaccio.lossless.one/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.6.3.tgz", "resolved": "https://verdaccio.lossless.one/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.6.3.tgz",
@ -3164,9 +3157,9 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/@types/node": { "node_modules/@types/node": {
"version": "10.7.1", "version": "16.10.2",
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.7.1.tgz", "resolved": "https://verdaccio.lossless.one/@types%2fnode/-/node-16.10.2.tgz",
"integrity": "sha512-EGoI4ylB/lPOaqXqtzAyL8HcgOuCtH2hkEaLmkueOYufsTFWBn4VCvlCDC2HW8Q+9iF+QVC3sxjDKQYjHQeZ9w==", "integrity": "sha512-zCclL4/rx+W5SQTzFs9wyvvyCwoK9QtBpratqz2IYJ3O8Umrn0m3nsTv0wQBk9sRGpvUe9CwPDrQFB10f1FIjQ==",
"dev": true, "dev": true,
"license": "MIT" "license": "MIT"
}, },
@ -16076,12 +16069,6 @@
"typescript": "^4.4.2" "typescript": "^4.4.2"
}, },
"dependencies": { "dependencies": {
"@types/node": {
"version": "16.10.2",
"resolved": "https://verdaccio.lossless.one/@types%2fnode/-/node-16.10.2.tgz",
"integrity": "sha512-zCclL4/rx+W5SQTzFs9wyvvyCwoK9QtBpratqz2IYJ3O8Umrn0m3nsTv0wQBk9sRGpvUe9CwPDrQFB10f1FIjQ==",
"dev": true
},
"rollup-plugin-sourcemaps": { "rollup-plugin-sourcemaps": {
"version": "0.6.3", "version": "0.6.3",
"resolved": "https://verdaccio.lossless.one/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.6.3.tgz", "resolved": "https://verdaccio.lossless.one/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.6.3.tgz",
@ -17137,9 +17124,9 @@
"integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ=="
}, },
"@types/node": { "@types/node": {
"version": "10.7.1", "version": "16.10.2",
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.7.1.tgz", "resolved": "https://verdaccio.lossless.one/@types%2fnode/-/node-16.10.2.tgz",
"integrity": "sha512-EGoI4ylB/lPOaqXqtzAyL8HcgOuCtH2hkEaLmkueOYufsTFWBn4VCvlCDC2HW8Q+9iF+QVC3sxjDKQYjHQeZ9w==", "integrity": "sha512-zCclL4/rx+W5SQTzFs9wyvvyCwoK9QtBpratqz2IYJ3O8Umrn0m3nsTv0wQBk9sRGpvUe9CwPDrQFB10f1FIjQ==",
"dev": true "dev": true
}, },
"@types/parcel-bundler": { "@types/parcel-bundler": {

View File

@ -3,8 +3,8 @@
"version": "1.1.3", "version": "1.1.3",
"private": false, "private": false,
"description": "fuzzy match strings against word dictionaries/arrays", "description": "fuzzy match strings against word dictionaries/arrays",
"main": "dist/index.js", "main": "dist_ts/index.js",
"typings": "dist/index.d.ts", "typings": "dist_ts/index.d.ts",
"author": "Lossless GmbH", "author": "Lossless GmbH",
"license": "MIT", "license": "MIT",
"scripts": { "scripts": {
@ -16,12 +16,27 @@
"@gitzone/tsbuild": "^2.1.27", "@gitzone/tsbuild": "^2.1.27",
"@gitzone/tstest": "^1.0.57", "@gitzone/tstest": "^1.0.57",
"@pushrocks/tapbundle": "^3.2.14", "@pushrocks/tapbundle": "^3.2.14",
"@types/node": "^10.7.1" "@types/node": "^16.10.2"
}, },
"dependencies": { "dependencies": {
"@pushrocks/smartpromise": "^3.1.6", "@pushrocks/smartpromise": "^3.1.6",
"@tsclass/tsclass": "^3.0.33", "@tsclass/tsclass": "^3.0.33",
"fuse.js": "^6.4.6", "fuse.js": "^6.4.6",
"leven": "^3.1.0" "leven": "^3.1.0"
} },
} "browserslist": [
"last 1 chrome versions"
],
"files": [
"ts/**/*",
"ts_web/**/*",
"dist/**/*",
"dist_*/**/*",
"dist_ts/**/*",
"dist_ts_web/**/*",
"assets/**/*",
"cli.js",
"npmextra.json",
"readme.md"
]
}

View File

@ -11,7 +11,7 @@ tap.test('should sort objects', async () => {
tags: ['city', 'Europe', 'hello'], tags: ['city', 'Europe', 'hello'],
timestamp: Date.now(), timestamp: Date.now(),
featuredImageUrl: null, featuredImageUrl: null,
url: null url: null,
}, },
{ {
title: 'Washington is a great city', title: 'Washington is a great city',
@ -20,15 +20,15 @@ tap.test('should sort objects', async () => {
tags: ['city', 'USA', 'hello'], tags: ['city', 'USA', 'hello'],
timestamp: Date.now(), timestamp: Date.now(),
featuredImageUrl: null, featuredImageUrl: null,
url: null url: null,
} },
]; ];
const testArticleSearch = new smartfuzzy.ArticleSearch(articleArray); const testArticleSearch = new smartfuzzy.ArticleSearch(articleArray);
const result = await testArticleSearch.search('USA'); const result = await testArticleSearch.search('USA');
console.log(result); console.log(result);
console.log(result[0].matches) console.log(result[0].matches);
}); });
tap.start(); tap.start();

View File

@ -11,7 +11,7 @@ tap.test('should sort objects', async () => {
testObjectSorter = new smartfuzzy.ObjectSorter([ testObjectSorter = new smartfuzzy.ObjectSorter([
new Car('BMW'), new Car('BMW'),
new Car('Mercedes Benz'), new Car('Mercedes Benz'),
new Car('Volvo') new Car('Volvo'),
]); ]);
const result = testObjectSorter.sort('Volvo', ['brand']); const result = testObjectSorter.sort('Volvo', ['brand']);

View File

@ -8,7 +8,7 @@ tap.test('should create an instance of Smartfuzzy', async () => {
'Sony', 'Sony',
'Deutsche Bahn', 'Deutsche Bahn',
'Apple Inc.', 'Apple Inc.',
"Trader Joe's" "Trader Joe's",
]); ]);
expect(testSmartfuzzy).to.be.instanceof(smartfuzzy.Smartfuzzy); expect(testSmartfuzzy).to.be.instanceof(smartfuzzy.Smartfuzzy);
}); });

View File

@ -54,7 +54,7 @@ export class ArticleSearch {
weight: 1, weight: 1,
}, },
], ],
includeMatches: true includeMatches: true,
}); });
this.readyDeferred.resolve(); this.readyDeferred.resolve();
} else { } else {

View File

@ -3,7 +3,6 @@ import * as plugins from './smartfuzzy.plugins';
export class ObjectSorter<T> { export class ObjectSorter<T> {
public objectDictionary: T[]; public objectDictionary: T[];
constructor(objectDictionaryArg: T[] = []) { constructor(objectDictionaryArg: T[] = []) {
this.objectDictionary = objectDictionaryArg; this.objectDictionary = objectDictionaryArg;
} }
@ -16,11 +15,10 @@ export class ObjectSorter<T> {
distance: 100, distance: 100,
maxPatternLength: 32, maxPatternLength: 32,
minMatchCharLength: 1, minMatchCharLength: 1,
keys: objectKeysArg keys: objectKeysArg,
}; };
const fuse = new plugins.fuseJs<T>(this.objectDictionary, fuseOptions); const fuse = new plugins.fuseJs<T>(this.objectDictionary, fuseOptions);
const result = fuse.search(stringArg); const result = fuse.search(stringArg);
return result; return result;
} }
}
}

View File

@ -38,7 +38,7 @@ export class Smartfuzzy {
const fuseDictionary: { name: string }[] = []; const fuseDictionary: { name: string }[] = [];
for (const wordArg of this.dictionary) { for (const wordArg of this.dictionary) {
fuseDictionary.push({ fuseDictionary.push({
name: wordArg name: wordArg,
}); });
} }
const fuseOptions = { const fuseOptions = {
@ -48,13 +48,13 @@ export class Smartfuzzy {
distance: 100, distance: 100,
maxPatternLength: 32, maxPatternLength: 32,
minMatchCharLength: 1, minMatchCharLength: 1,
keys: ['name'] keys: ['name'],
}; };
const fuse = new plugins.fuseJs(fuseDictionary, fuseOptions); const fuse = new plugins.fuseJs(fuseDictionary, fuseOptions);
const fuzzyResult = fuse.search(stringArg); const fuzzyResult = fuse.search(stringArg);
let closestMatch: string = null; let closestMatch: string = null;
if(fuzzyResult.length > 0) { if (fuzzyResult.length > 0) {
closestMatch = fuzzyResult[0].item.name closestMatch = fuzzyResult[0].item.name;
} }
return closestMatch; return closestMatch;
} }

View File

@ -1,16 +1,12 @@
// @pushrocks scope // @pushrocks scope
import * as smartpromise from '@pushrocks/smartpromise'; import * as smartpromise from '@pushrocks/smartpromise';
export { export { smartpromise };
smartpromise
}
// @tsclass scope // @tsclass scope
import * as tsclass from '@tsclass/tsclass'; import * as tsclass from '@tsclass/tsclass';
export { export { tsclass };
tsclass
}
// third party scope // third party scope
import leven from 'leven'; import leven from 'leven';

View File

@ -1,7 +1,17 @@
{ {
"extends": ["tslint:latest", "tslint-config-prettier"], "extends": ["tslint:latest", "tslint-config-prettier"],
"rules": { "rules": {
"semicolon": [true, "always"] "semicolon": [true, "always"],
"no-console": false,
"ordered-imports": false,
"object-literal-sort-keys": false,
"member-ordering": {
"options":{
"order": [
"static-method"
]
}
} }
} },
"defaultSeverity": "warning"
}