Compare commits

...

12 Commits

Author SHA1 Message Date
08cb2392fa 3.0.18 2020-01-23 17:14:58 +00:00
4e1fa4efab fix(core): update 2020-01-23 17:14:57 +00:00
26d00bb9d3 3.0.17 2019-11-24 11:44:33 +00:00
fd27ed1a56 fix(core): update 2019-11-24 11:44:32 +00:00
1f31fe9dc5 3.0.16 2019-11-24 11:44:21 +00:00
bd7888f7ce fix(core): update 2019-11-24 11:44:21 +00:00
201812e182 3.0.15 2019-11-24 11:43:32 +00:00
8dfa3f8965 fix(core): update 2019-11-24 11:43:32 +00:00
43d50b746b 3.0.14 2019-10-10 18:24:04 +02:00
a1ee8f37d6 fix(core): update 2019-10-10 18:24:03 +02:00
8d9c75e113 3.0.13 2019-10-10 18:14:08 +02:00
8ff2a9d64a fix(core): update 2019-10-10 18:14:07 +02:00
9 changed files with 340 additions and 275 deletions

22
.gitignore vendored
View File

@ -1,4 +1,22 @@
.yarn/ .nogit/
pages/
# artifacts
coverage/
public/ public/
pages/
# installs
node_modules/ node_modules/
# caches
.yarn/
.cache/
.rpt2_cache
# builds
dist/
dist_web/
dist_serve/
dist_ts_web/
# 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
@ -20,17 +20,19 @@ mirror:
script: script:
- npmci git mirror - npmci git mirror
tags: tags:
- lossless
- docker - docker
- notpriv - notpriv
snyk: snyk:
image: registry.gitlab.com/hosttoday/ht-docker-node:snyk
stage: security stage: security
script: script:
- npmci npm prepare - npmci npm prepare
- npmci command npm install -g snyk
- npmci command npm install --ignore-scripts - npmci command npm install --ignore-scripts
- npmci command snyk test - npmci command snyk test
tags: tags:
- lossless
- docker - docker
- notpriv - notpriv
@ -38,19 +40,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
@ -59,6 +49,20 @@ testSTABLE:
- npmci npm test - npmci npm test
coverage: /\d+.?\d+?\%\s*coverage/ coverage: /\d+.?\d+?\%\s*coverage/
tags: tags:
- lossless
- 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:
- lossless
- docker - docker
- notpriv - notpriv
@ -70,6 +74,7 @@ release:
only: only:
- tags - tags
tags: tags:
- lossless
- docker - docker
- notpriv - notpriv
@ -78,20 +83,14 @@ 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 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:
- lossless
- docker - docker
- priv - priv
@ -102,18 +101,20 @@ trigger:
only: only:
- tags - tags
tags: tags:
- lossless
- docker - docker
- notpriv - 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 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:

4
.snyk Normal file
View File

@ -0,0 +1,4 @@
# Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities.
version: v1.13.5
ignore: {}
patch: {}

284
package-lock.json generated
View File

@ -1,22 +1,28 @@
{ {
"name": "@pushrocks/smartstring", "name": "@pushrocks/smartstring",
"version": "3.0.12", "version": "3.0.18",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {
"@apiglobal/typedrequest-interfaces": {
"version": "1.0.10",
"resolved": "https://verdaccio.lossless.one/@apiglobal%2ftypedrequest-interfaces/-/typedrequest-interfaces-1.0.10.tgz",
"integrity": "sha512-RGG7s/mP7MGVz3g+y/kvH0ZrVWY/vJy3BignsUv3DLtoFvfWnvxqT2WWqSJhyXCOSeR/nzVsGxFgKAI/ZVZKdg==",
"dev": true
},
"@babel/code-frame": { "@babel/code-frame": {
"version": "7.5.5", "version": "7.8.3",
"resolved": "https://verdaccio.lossless.one/@babel%2fcode-frame/-/code-frame-7.5.5.tgz", "resolved": "https://verdaccio.lossless.one/@babel%2fcode-frame/-/code-frame-7.8.3.tgz",
"integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/highlight": "^7.0.0" "@babel/highlight": "^7.8.3"
} }
}, },
"@babel/highlight": { "@babel/highlight": {
"version": "7.5.0", "version": "7.8.3",
"resolved": "https://verdaccio.lossless.one/@babel%2fhighlight/-/highlight-7.5.0.tgz", "resolved": "https://verdaccio.lossless.one/@babel%2fhighlight/-/highlight-7.8.3.tgz",
"integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==",
"dev": true, "dev": true,
"requires": { "requires": {
"chalk": "^2.0.0", "chalk": "^2.0.0",
@ -93,14 +99,14 @@
} }
}, },
"@pushrocks/lik": { "@pushrocks/lik": {
"version": "3.0.11", "version": "3.0.13",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2flik/-/lik-3.0.11.tgz", "resolved": "https://verdaccio.lossless.one/@pushrocks%2flik/-/lik-3.0.13.tgz",
"integrity": "sha512-SDKRPj9+xBTqozlDPcA7O6BcccM1Tw/sXPVP+OnhNxCubDZ/L2kGNpPpqm43NJUoNxSSo5wdBw4N7MAFYCGdVg==", "integrity": "sha512-YDxYoh2UksEfUxcjSjTwLsW5j852E5FrMG62CUi1I7ZpBxf96b7P1t2pRWsQsNnHRz6FHckW/A1V6XKASB+jZA==",
"dev": true, "dev": true,
"requires": { "requires": {
"@pushrocks/smartdelay": "^2.0.3", "@pushrocks/smartdelay": "^2.0.6",
"@pushrocks/smartpromise": "^3.0.2", "@pushrocks/smartpromise": "^3.0.6",
"@pushrocks/smartrx": "^2.0.3", "@pushrocks/smartrx": "^2.0.5",
"@pushrocks/smarttime": "^3.0.12", "@pushrocks/smarttime": "^3.0.12",
"@types/minimatch": "^3.0.3", "@types/minimatch": "^3.0.3",
"minimatch": "^3.0.4", "minimatch": "^3.0.4",
@ -131,12 +137,12 @@
} }
}, },
"@pushrocks/smartdelay": { "@pushrocks/smartdelay": {
"version": "2.0.3", "version": "2.0.6",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartdelay/-/smartdelay-2.0.3.tgz", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartdelay/-/smartdelay-2.0.6.tgz",
"integrity": "sha512-TXKDDqsc7sBTLl+oiYNaF6IdNk1n70i8ur8QfwcUU6tegTnrEkvMWy9h5Zdty/fq1ioCNpKLvuXoA+fgYVwKGQ==", "integrity": "sha512-4wUnzWNhRPODpaaL5GuRaje/C5dg+TMhBxmr57PKc2fqYpy6azWJwonf/s5xpcbJLCPJRbj1x8M5MqgCFq2uvg==",
"dev": true, "dev": true,
"requires": { "requires": {
"@pushrocks/smartpromise": "^3.0.2" "@pushrocks/smartpromise": "^3.0.6"
} }
}, },
"@pushrocks/smartevent": { "@pushrocks/smartevent": {
@ -184,42 +190,45 @@
} }
}, },
"@pushrocks/smarthash": { "@pushrocks/smarthash": {
"version": "2.0.6", "version": "2.1.6",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmarthash/-/smarthash-2.0.6.tgz", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmarthash/-/smarthash-2.1.6.tgz",
"integrity": "sha512-jHk9srgRLkszk/oPCUOkxTX2Fqu7qKwx13aEeSIBx8UCtFbXPLecJAqEaGEVk1mw9e4Oq0iC6O0jEnxKo5NQwA==", "integrity": "sha512-TYa3wECYkeDoE8SomxcCJFg5Kt4+G4MtNMu3yATJCCoPLJIbyV1CwUvYuFYkkce2W4ZvH9h/N6dsHc69oI5Jcw==",
"dev": true, "dev": true,
"requires": { "requires": {
"@pushrocks/smartjson": "^3.0.5", "@pushrocks/smartjson": "^3.0.10",
"@pushrocks/smartpromise": "^3.0.2", "@pushrocks/smartpromise": "^3.0.6",
"@types/through2": "^2.0.34", "@types/through2": "^2.0.34",
"through2": "^3.0.1" "through2": "^3.0.1"
} }
}, },
"@pushrocks/smartjson": { "@pushrocks/smartjson": {
"version": "3.0.8", "version": "3.0.10",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartjson/-/smartjson-3.0.8.tgz", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartjson/-/smartjson-3.0.10.tgz",
"integrity": "sha512-EjC3611RSZaZmK+nXxXrYDBxdxYWtrxjOrZtQzbYn0yM33KSCH0sLIAG8B2wYZVAOj4A2pC8mVxFSJ1w3iRFHg==", "integrity": "sha512-0tBkET2yjmSSIf4DlgeyU8U/J2EshTmQGuMY28EjPq9VvuCFXLh72WmETpA4QqKRMqhWp1+P+RZgnQupW3GQxQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"@types/fast-json-stable-stringify": "^2.0.0", "@types/fast-json-stable-stringify": "^2.0.0",
"fast-json-stable-stringify": "^2.0.0", "fast-json-stable-stringify": "^2.1.0",
"lodash.clonedeep": "^4.5.0" "lodash.clonedeep": "^4.5.0"
} }
}, },
"@pushrocks/smartlog": { "@pushrocks/smartlog": {
"version": "2.0.19", "version": "2.0.21",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartlog/-/smartlog-2.0.19.tgz", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartlog/-/smartlog-2.0.21.tgz",
"integrity": "sha512-I2mDx7WcUlADYWxu5nNP3NSJv95YrCZoG/rarbEqovK7pJQ9a0aINmIcCHkQeL1VSWvxgvhXwHyV/yNEJ4zh3Q==", "integrity": "sha512-U+YazzcMrU74crrGV50kYzlOWu//MF5i1wxRMSJonWsiixsWPTPpLsbAVxmIsPcDJyf0u3RixMeelA0WKhhqpg==",
"dev": true, "dev": true,
"requires": { "requires": {
"@pushrocks/smartlog-interfaces": "^2.0.5" "@pushrocks/smartlog-interfaces": "^2.0.5"
} }
}, },
"@pushrocks/smartlog-interfaces": { "@pushrocks/smartlog-interfaces": {
"version": "2.0.5", "version": "2.0.9",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartlog-interfaces/-/smartlog-interfaces-2.0.5.tgz", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartlog-interfaces/-/smartlog-interfaces-2.0.9.tgz",
"integrity": "sha512-eLNlRpDwy3E+6v/B6fo/NiAo+UxBO3SxKgIIsgUGbWfVpsyUi0PG2xfVCdhJlhL1AsRRvKglfHSOB8qKE+XCLw==", "integrity": "sha512-JlVBHNjac0+VbTyigBqVXLsOWggmg9vONk8cofvfUmYq8QZ3XmEQlkljotjgn01ZA6aEQ4NmskRy0XSNcJl/Fw==",
"dev": true "dev": true,
"requires": {
"@apiglobal/typedrequest-interfaces": "^1.0.7"
}
}, },
"@pushrocks/smartlog-source-ora": { "@pushrocks/smartlog-source-ora": {
"version": "1.0.8", "version": "1.0.8",
@ -263,9 +272,9 @@
"dev": true "dev": true
}, },
"@pushrocks/smartrequest": { "@pushrocks/smartrequest": {
"version": "1.1.36", "version": "1.1.47",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartrequest/-/smartrequest-1.1.36.tgz", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartrequest/-/smartrequest-1.1.47.tgz",
"integrity": "sha512-qeTRLFZZ3WOui7TkMNg8eGgZe3J9HG2XoaxR8hW65oX+TBUHcMEwA6EKuBaTWk6WUe/aJmfClw9DjjBnFCqtvQ==", "integrity": "sha512-0AuqtAI14VeWeXl2WpJbgCybVlG03rOjdGchAqy5k5lg9ACLhN3Z4kmoLgpBysWO/L2SjlAKB489SRyV3acykg==",
"dev": true, "dev": true,
"requires": { "requires": {
"@pushrocks/smartpromise": "^3.0.5", "@pushrocks/smartpromise": "^3.0.5",
@ -313,21 +322,22 @@
} }
}, },
"@pushrocks/tapbundle": { "@pushrocks/tapbundle": {
"version": "3.0.13", "version": "3.2.0",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2ftapbundle/-/tapbundle-3.0.13.tgz", "resolved": "https://verdaccio.lossless.one/@pushrocks%2ftapbundle/-/tapbundle-3.2.0.tgz",
"integrity": "sha512-23O4UMBafCuD+RnUlXNvtT9DGbL1HMD+xZE1Zcr7Ll7WvgxUgRQQfk9kq6qbLLbjaRe1J2Ijsgh1HuZbBaucLQ==", "integrity": "sha512-xnKIGe7NJqxWBaFeKIEXShDjV2wap1XJqmlp3m1MKqmIF62vRpZnkzpyE1ZAoNwiYQmIsXIpvP/PDv+iPevPfw==",
"dev": true, "dev": true,
"requires": { "requires": {
"@pushrocks/early": "^3.0.3", "@pushrocks/early": "^3.0.3",
"@pushrocks/smartdelay": "^2.0.3", "@pushrocks/smartdelay": "^2.0.3",
"@pushrocks/smartfile": "^7.0.6",
"@pushrocks/smartpromise": "^3.0.2", "@pushrocks/smartpromise": "^3.0.2",
"smartchai": "^2.0.1" "smartchai": "^2.0.1"
} }
}, },
"@types/chai": { "@types/chai": {
"version": "4.2.3", "version": "4.2.7",
"resolved": "https://verdaccio.lossless.one/@types%2fchai/-/chai-4.2.3.tgz", "resolved": "https://verdaccio.lossless.one/@types%2fchai/-/chai-4.2.7.tgz",
"integrity": "sha512-VRw2xEGbll3ZiTQ4J02/hUjNqZoue1bMhoo2dgM2LXjDdyaq4q80HgBDHwpI0/VKlo4Eg+BavyQMv/NYgTetzA==", "integrity": "sha512-luq8meHGYwvky0O7u0eQZdA7B4Wd9owUCqvbw2m3XCrCU8mplYOujMBbvyS547AxJkC+pGnd0Cm15eNxEUNU8g==",
"dev": true "dev": true
}, },
"@types/chai-as-promised": { "@types/chai-as-promised": {
@ -383,18 +393,18 @@
} }
}, },
"@types/fs-extra": { "@types/fs-extra": {
"version": "8.0.0", "version": "8.0.1",
"resolved": "https://verdaccio.lossless.one/@types%2ffs-extra/-/fs-extra-8.0.0.tgz", "resolved": "https://verdaccio.lossless.one/@types%2ffs-extra/-/fs-extra-8.0.1.tgz",
"integrity": "sha512-bCtL5v9zdbQW86yexOlXWTEGvLNqWxMFyi7gQA7Gcthbezr2cPSOb8SkESVKA937QD5cIwOFLDFt0MQoXOEr9Q==", "integrity": "sha512-J00cVDALmi/hJOYsunyT52Hva5TnJeKP5yd1r+mH/ZU0mbYZflR0Z5kw5kITtKTRYMhm1JMClOFYdHnQszEvqw==",
"dev": true, "dev": true,
"requires": { "requires": {
"@types/node": "*" "@types/node": "*"
} }
}, },
"@types/luxon": { "@types/luxon": {
"version": "1.15.2", "version": "1.21.0",
"resolved": "https://verdaccio.lossless.one/@types%2fluxon/-/luxon-1.15.2.tgz", "resolved": "https://verdaccio.lossless.one/@types%2fluxon/-/luxon-1.21.0.tgz",
"integrity": "sha512-zHPoyVrLvNaiMRYdhmh88Rn489ZgAgbc6iLxR5Yi0VCNfeNYHcszbhJV2vDHLNrVGy35BPtWBRn4OP2F9BBvFw==", "integrity": "sha512-Zhrf65tpjOlVIYrUhX9eu1VzRo8iixQDLFPbfqFxPpG4pBTNNPZ2BFhYE0IAsDfW9GWg+RcrUqiLwrGJH4rq4w==",
"dev": true "dev": true
}, },
"@types/minimatch": { "@types/minimatch": {
@ -404,9 +414,9 @@
"dev": true "dev": true
}, },
"@types/node": { "@types/node": {
"version": "12.7.12", "version": "13.1.8",
"resolved": "https://verdaccio.lossless.one/@types%2fnode/-/node-12.7.12.tgz", "resolved": "https://verdaccio.lossless.one/@types%2fnode/-/node-13.1.8.tgz",
"integrity": "sha512-KPYGmfD0/b1eXurQ59fXD1GBzhSQfz6/lKBxkaHX9dKTzjXbK68Zt7yGUxUsCS1jeTy/8aL+d9JEr+S54mpkWQ==", "integrity": "sha512-6XzyyNM9EKQW4HKuzbo/CkOIjn/evtCmsU+MUM1xDfJ+3/rNjBttM1NgN7AOQvN6tP1Sl1D1PIKMreTArnxM9A==",
"dev": true "dev": true
}, },
"@types/through2": { "@types/through2": {
@ -425,15 +435,15 @@
"dev": true "dev": true
}, },
"@types/yargs": { "@types/yargs": {
"version": "12.0.13", "version": "12.0.15",
"resolved": "https://verdaccio.lossless.one/@types%2fyargs/-/yargs-12.0.13.tgz", "resolved": "https://verdaccio.lossless.one/@types%2fyargs/-/yargs-12.0.15.tgz",
"integrity": "sha512-CXlavd8Q7ZQkB7sMpx9QKC/B7gUsjtftxMHNr7qGJaDiZZ+Qmhwe4Zt3aS9aXF7cn6BYQuFlKU1UlrebyKsh9g==", "integrity": "sha512-stWBBTD1IX7iMc/L38Azs0P5vHl6AcuiV8fuuXXgQVLmlXJ7igykYuroMHgpGrD1vwrk56yEBD6dIM5or1Robw==",
"dev": true "dev": true
}, },
"agentkeepalive": { "agentkeepalive": {
"version": "4.0.2", "version": "4.1.0",
"resolved": "https://verdaccio.lossless.one/agentkeepalive/-/agentkeepalive-4.0.2.tgz", "resolved": "https://verdaccio.lossless.one/agentkeepalive/-/agentkeepalive-4.1.0.tgz",
"integrity": "sha512-A5gSniD4xMCYtSD4ilUHpQRB9ZbNjtIPittKUv7bA0j0UCwbT3EJBUYLKPJ/dtmaXRYWI2mG4/O90xbi7oahNw==", "integrity": "sha512-CW/n1wxF8RpEuuiq6Vbn9S8m0VSYDMnZESqaJ6F2cWN9fY8rei2qaxweIaRgq+ek8TqfoFIsUjaGNKGGEHElSg==",
"dev": true, "dev": true,
"requires": { "requires": {
"debug": "^4.1.0", "debug": "^4.1.0",
@ -463,9 +473,9 @@
} }
}, },
"arg": { "arg": {
"version": "4.1.1", "version": "4.1.2",
"resolved": "https://verdaccio.lossless.one/arg/-/arg-4.1.1.tgz", "resolved": "https://verdaccio.lossless.one/arg/-/arg-4.1.2.tgz",
"integrity": "sha512-SlmP3fEA88MBv0PypnXZ8ZfJhwmDeIE3SP71j37AiXQBXYosPV0x6uISAaHYSlSVhmHOVkomen0tbGk6Anlebw==", "integrity": "sha512-+ytCkGcBtHZ3V2r2Z06AncYO8jz46UEamcspGoU8lHcEbpn6J77QK0vdWvChsclg/tM5XIJC5tnjmPp7Eq6Obg==",
"dev": true "dev": true
}, },
"argparse": { "argparse": {
@ -632,9 +642,9 @@
} }
}, },
"commander": { "commander": {
"version": "2.20.1", "version": "2.20.3",
"resolved": "https://verdaccio.lossless.one/commander/-/commander-2.20.1.tgz", "resolved": "https://verdaccio.lossless.one/commander/-/commander-2.20.3.tgz",
"integrity": "sha512-cCuLsMhJeWQ/ZpsFTbE765kvVfoeSddc4nU3up4fV+fDBcfUXnbITJ+JzhkdjzOqhURjZgujxaioam4RM9yGUg==", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
"dev": true "dev": true
}, },
"concat-map": { "concat-map": {
@ -644,9 +654,9 @@
"dev": true "dev": true
}, },
"cron": { "cron": {
"version": "1.7.2", "version": "1.8.1",
"resolved": "https://verdaccio.lossless.one/cron/-/cron-1.7.2.tgz", "resolved": "https://verdaccio.lossless.one/cron/-/cron-1.8.1.tgz",
"integrity": "sha512-+SaJ2OfeRvfQqwXQ2kgr0Y5pzBR/lijf5OpnnaruwWnmI799JfWr2jN2ItOV9s3A/+TFOt6mxvKzQq5F0Jp6VQ==", "integrity": "sha512-T60noGxx/2h4FDRBf6449FrINbitSCwIZEcDIwbIPX+mkNkNH0t/4yw0RBGpOiA5yveM4koNHcAuIFopp7vbuA==",
"dev": true, "dev": true,
"requires": { "requires": {
"moment-timezone": "^0.5.x" "moment-timezone": "^0.5.x"
@ -666,11 +676,11 @@
} }
}, },
"crypto-random-string": { "crypto-random-string": {
"version": "3.0.1", "version": "3.1.0",
"resolved": "https://verdaccio.lossless.one/crypto-random-string/-/crypto-random-string-3.0.1.tgz", "resolved": "https://verdaccio.lossless.one/crypto-random-string/-/crypto-random-string-3.1.0.tgz",
"integrity": "sha512-dUL0cJ4PBLanJGJQBHQUkvZ3C4q13MXzl54oRqAIiJGiNkOZ4JDwkg/SBo7daGghzlJv16yW1p/4lIQukmbedA==", "integrity": "sha512-Tip3yGB+bA7B0W8E4K4mNf2rZhu5r2G5Tb89/utEl5tP1QuLjTF/S9a1b8ifDrR4ORc9Utf6tscpSEtBY3YcPQ==",
"requires": { "requires": {
"type-fest": "^0.5.2" "type-fest": "^0.8.1"
} }
}, },
"debug": { "debug": {
@ -719,9 +729,9 @@
"dev": true "dev": true
}, },
"diff": { "diff": {
"version": "4.0.1", "version": "4.0.2",
"resolved": "https://verdaccio.lossless.one/diff/-/diff-4.0.1.tgz", "resolved": "https://verdaccio.lossless.one/diff/-/diff-4.0.2.tgz",
"integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
"dev": true "dev": true
}, },
"end-of-stream": { "end-of-stream": {
@ -767,15 +777,15 @@
} }
}, },
"fast-json-stable-stringify": { "fast-json-stable-stringify": {
"version": "2.0.0", "version": "2.1.0",
"resolved": "https://verdaccio.lossless.one/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", "resolved": "https://verdaccio.lossless.one/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
"integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
"dev": true "dev": true
}, },
"figures": { "figures": {
"version": "3.0.0", "version": "3.1.0",
"resolved": "https://verdaccio.lossless.one/figures/-/figures-3.0.0.tgz", "resolved": "https://verdaccio.lossless.one/figures/-/figures-3.1.0.tgz",
"integrity": "sha512-HKri+WoWoUgr83pehn/SIgLOMZ9nAWC6dcGj26RY2R4F50u4+RTUz0RCrUlOV3nKRAICW1UGzyb+kcX2qK1S/g==", "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==",
"dev": true, "dev": true,
"requires": { "requires": {
"escape-string-regexp": "^1.0.5" "escape-string-regexp": "^1.0.5"
@ -840,9 +850,9 @@
} }
}, },
"glob": { "glob": {
"version": "7.1.4", "version": "7.1.6",
"resolved": "https://verdaccio.lossless.one/glob/-/glob-7.1.4.tgz", "resolved": "https://verdaccio.lossless.one/glob/-/glob-7.1.6.tgz",
"integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
"dev": true, "dev": true,
"requires": { "requires": {
"fs.realpath": "^1.0.0", "fs.realpath": "^1.0.0",
@ -854,9 +864,9 @@
} }
}, },
"graceful-fs": { "graceful-fs": {
"version": "4.2.2", "version": "4.2.3",
"resolved": "https://verdaccio.lossless.one/graceful-fs/-/graceful-fs-4.2.2.tgz", "resolved": "https://verdaccio.lossless.one/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==", "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
"dev": true "dev": true
}, },
"has-flag": { "has-flag": {
@ -904,7 +914,7 @@
}, },
"is-number": { "is-number": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", "resolved": "https://verdaccio.lossless.one/is-number/-/is-number-4.0.0.tgz",
"integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ=="
}, },
"is-promise": { "is-promise": {
@ -956,9 +966,9 @@
} }
}, },
"kind-of": { "kind-of": {
"version": "6.0.2", "version": "6.0.3",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", "resolved": "https://verdaccio.lossless.one/kind-of/-/kind-of-6.0.3.tgz",
"integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="
}, },
"lcid": { "lcid": {
"version": "2.0.0", "version": "2.0.0",
@ -995,9 +1005,9 @@
} }
}, },
"luxon": { "luxon": {
"version": "1.19.3", "version": "1.21.3",
"resolved": "https://verdaccio.lossless.one/luxon/-/luxon-1.19.3.tgz", "resolved": "https://verdaccio.lossless.one/luxon/-/luxon-1.21.3.tgz",
"integrity": "sha512-YwTDjGRQC0QC9Iya2g2eKZfgEFqRId4ZoLHORQcfTMB/5xrTx427V7ZPjQJ1vzvhA2vJfG2bh1Kv8V8IFMWCUA==", "integrity": "sha512-lLRwNcNnkZLuv13A1FUuZRZmTWF7ro2ricYvb0L9cvBYHPvZhQdKwrYnZzi103D2XKmlVmxWpdn2wfIiOt2YEw==",
"dev": true "dev": true
}, },
"make-error": { "make-error": {
@ -1016,9 +1026,9 @@
} }
}, },
"math-random": { "math-random": {
"version": "1.0.1", "version": "1.0.4",
"resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", "resolved": "https://verdaccio.lossless.one/math-random/-/math-random-1.0.4.tgz",
"integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=" "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A=="
}, },
"mem": { "mem": {
"version": "4.3.0", "version": "4.3.0",
@ -1032,18 +1042,18 @@
} }
}, },
"mime-db": { "mime-db": {
"version": "1.40.0", "version": "1.43.0",
"resolved": "https://verdaccio.lossless.one/mime-db/-/mime-db-1.40.0.tgz", "resolved": "https://verdaccio.lossless.one/mime-db/-/mime-db-1.43.0.tgz",
"integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==",
"dev": true "dev": true
}, },
"mime-types": { "mime-types": {
"version": "2.1.24", "version": "2.1.26",
"resolved": "https://verdaccio.lossless.one/mime-types/-/mime-types-2.1.24.tgz", "resolved": "https://verdaccio.lossless.one/mime-types/-/mime-types-2.1.26.tgz",
"integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"mime-db": "1.40.0" "mime-db": "1.43.0"
} }
}, },
"mimic-fn": { "mimic-fn": {
@ -1088,9 +1098,9 @@
"dev": true "dev": true
}, },
"moment-timezone": { "moment-timezone": {
"version": "0.5.26", "version": "0.5.27",
"resolved": "https://verdaccio.lossless.one/moment-timezone/-/moment-timezone-0.5.26.tgz", "resolved": "https://verdaccio.lossless.one/moment-timezone/-/moment-timezone-0.5.27.tgz",
"integrity": "sha512-sFP4cgEKTCymBBKgoxZjYzlSovC20Y6J7y3nanDc5RoBIXKlZhoYwBoZGe3flwU6A372AcRwScH8KiwV6zjy1g==", "integrity": "sha512-EIKQs7h5sAsjhPCqN6ggx6cEbs94GK050254TIJySD1bzoM5JTYDwAU1IoVOeTOL6Gm27kYJ51/uuvq1kIlrbw==",
"dev": true, "dev": true,
"requires": { "requires": {
"moment": ">= 2.9.0" "moment": ">= 2.9.0"
@ -1110,7 +1120,7 @@
}, },
"normalize-newline": { "normalize-newline": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/normalize-newline/-/normalize-newline-3.0.0.tgz", "resolved": "https://verdaccio.lossless.one/normalize-newline/-/normalize-newline-3.0.0.tgz",
"integrity": "sha1-HL6oBKukNgAfg5OKsh7AOdaa6dM=" "integrity": "sha1-HL6oBKukNgAfg5OKsh7AOdaa6dM="
}, },
"npm-run-path": { "npm-run-path": {
@ -1215,9 +1225,9 @@
"dev": true "dev": true
}, },
"p-limit": { "p-limit": {
"version": "2.2.1", "version": "2.2.2",
"resolved": "https://verdaccio.lossless.one/p-limit/-/p-limit-2.2.1.tgz", "resolved": "https://verdaccio.lossless.one/p-limit/-/p-limit-2.2.2.tgz",
"integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"p-try": "^2.0.0" "p-try": "^2.0.0"
@ -1280,7 +1290,7 @@
}, },
"randomatic": { "randomatic": {
"version": "3.1.1", "version": "3.1.1",
"resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", "resolved": "https://verdaccio.lossless.one/randomatic/-/randomatic-3.1.1.tgz",
"integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==",
"requires": { "requires": {
"is-number": "^4.0.0", "is-number": "^4.0.0",
@ -1289,9 +1299,9 @@
} }
}, },
"readable-stream": { "readable-stream": {
"version": "3.4.0", "version": "3.5.0",
"resolved": "https://verdaccio.lossless.one/readable-stream/-/readable-stream-3.4.0.tgz", "resolved": "https://verdaccio.lossless.one/readable-stream/-/readable-stream-3.5.0.tgz",
"integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", "integrity": "sha512-gSz026xs2LfxBPudDuI41V1lka8cxg64E66SGe78zJlsUofOg/yqwezdIcdfwik6B4h8LFmWPA9ef9X3FiNFLA==",
"dev": true, "dev": true,
"requires": { "requires": {
"inherits": "^2.0.3", "inherits": "^2.0.3",
@ -1312,9 +1322,9 @@
"dev": true "dev": true
}, },
"resolve": { "resolve": {
"version": "1.12.0", "version": "1.15.0",
"resolved": "https://verdaccio.lossless.one/resolve/-/resolve-1.12.0.tgz", "resolved": "https://verdaccio.lossless.one/resolve/-/resolve-1.15.0.tgz",
"integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", "integrity": "sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw==",
"dev": true, "dev": true,
"requires": { "requires": {
"path-parse": "^1.0.6" "path-parse": "^1.0.6"
@ -1331,9 +1341,9 @@
} }
}, },
"rxjs": { "rxjs": {
"version": "6.5.3", "version": "6.5.4",
"resolved": "https://verdaccio.lossless.one/rxjs/-/rxjs-6.5.3.tgz", "resolved": "https://verdaccio.lossless.one/rxjs/-/rxjs-6.5.4.tgz",
"integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==",
"dev": true, "dev": true,
"requires": { "requires": {
"tslib": "^1.9.0" "tslib": "^1.9.0"
@ -1399,9 +1409,9 @@
"dev": true "dev": true
}, },
"source-map-support": { "source-map-support": {
"version": "0.5.13", "version": "0.5.16",
"resolved": "https://verdaccio.lossless.one/source-map-support/-/source-map-support-0.5.13.tgz", "resolved": "https://verdaccio.lossless.one/source-map-support/-/source-map-support-0.5.16.tgz",
"integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"buffer-from": "^1.0.0", "buffer-from": "^1.0.0",
@ -1481,16 +1491,16 @@
} }
}, },
"ts-node": { "ts-node": {
"version": "8.4.1", "version": "8.6.2",
"resolved": "https://verdaccio.lossless.one/ts-node/-/ts-node-8.4.1.tgz", "resolved": "https://verdaccio.lossless.one/ts-node/-/ts-node-8.6.2.tgz",
"integrity": "sha512-5LpRN+mTiCs7lI5EtbXmF/HfMeCjzt7DH9CZwtkr6SywStrNQC723wG+aOWFiLNn7zT3kD/RnFqi3ZUfr4l5Qw==", "integrity": "sha512-4mZEbofxGqLL2RImpe3zMJukvEvcO1XP8bj8ozBPySdCUXEcU5cIRwR0aM3R+VoZq7iXc8N86NC0FspGRqP4gg==",
"dev": true, "dev": true,
"requires": { "requires": {
"arg": "^4.1.0", "arg": "^4.1.0",
"diff": "^4.0.1", "diff": "^4.0.1",
"make-error": "^1.1.1", "make-error": "^1.1.1",
"source-map-support": "^0.5.6", "source-map-support": "^0.5.6",
"yn": "^3.0.0" "yn": "3.1.1"
} }
}, },
"tslib": { "tslib": {
@ -1500,9 +1510,9 @@
"dev": true "dev": true
}, },
"tslint": { "tslint": {
"version": "5.20.0", "version": "6.0.0",
"resolved": "https://verdaccio.lossless.one/tslint/-/tslint-5.20.0.tgz", "resolved": "https://verdaccio.lossless.one/tslint/-/tslint-6.0.0.tgz",
"integrity": "sha512-2vqIvkMHbnx8acMogAERQ/IuINOq6DFqgF8/VDvhEkBqQh/x6SP0Y+OHnKth9/ZcHQSroOZwUQSN18v8KKF0/g==", "integrity": "sha512-9nLya8GBtlFmmFMW7oXXwoXS1NkrccqTqAtwXzdPV9e2mqSEvCki6iHL/Fbzi5oqbugshzgGPk7KBb2qNP1DSA==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/code-frame": "^7.0.0", "@babel/code-frame": "^7.0.0",
@ -1516,7 +1526,7 @@
"mkdirp": "^0.5.1", "mkdirp": "^0.5.1",
"resolve": "^1.3.2", "resolve": "^1.3.2",
"semver": "^5.3.0", "semver": "^5.3.0",
"tslib": "^1.8.0", "tslib": "^1.10.0",
"tsutils": "^2.29.0" "tsutils": "^2.29.0"
} }
}, },
@ -1542,14 +1552,14 @@
"dev": true "dev": true
}, },
"type-fest": { "type-fest": {
"version": "0.5.2", "version": "0.8.1",
"resolved": "https://verdaccio.lossless.one/type-fest/-/type-fest-0.5.2.tgz", "resolved": "https://verdaccio.lossless.one/type-fest/-/type-fest-0.8.1.tgz",
"integrity": "sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw==" "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA=="
}, },
"typescript": { "typescript": {
"version": "3.6.4", "version": "3.7.5",
"resolved": "https://verdaccio.lossless.one/typescript/-/typescript-3.6.4.tgz", "resolved": "https://verdaccio.lossless.one/typescript/-/typescript-3.7.5.tgz",
"integrity": "sha512-unoCll1+l+YK4i4F8f22TaNVPRHcD9PA3yCuZ8g5e0qGqlVlJ/8FSateOLLSagn+Yg5+ZwuPkL8LFUc0Jcvksg==", "integrity": "sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw==",
"dev": true "dev": true
}, },
"universalify": { "universalify": {

View File

@ -1,6 +1,6 @@
{ {
"name": "@pushrocks/smartstring", "name": "@pushrocks/smartstring",
"version": "3.0.12", "version": "3.0.18",
"private": false, "private": false,
"description": "handle strings in smart ways. TypeScript ready.", "description": "handle strings in smart ways. TypeScript ready.",
"main": "dist/index.js", "main": "dist/index.js",
@ -27,16 +27,27 @@
"@gitzone/tsbuild": "^2.1.17", "@gitzone/tsbuild": "^2.1.17",
"@gitzone/tsrun": "^1.2.8", "@gitzone/tsrun": "^1.2.8",
"@gitzone/tstest": "^1.0.28", "@gitzone/tstest": "^1.0.28",
"@pushrocks/tapbundle": "^3.0.13", "@pushrocks/tapbundle": "^3.2.0",
"@types/node": "^12.7.12", "@types/node": "^13.1.8",
"tslint": "^5.20.0", "tslint": "^6.0.0",
"tslint-config-prettier": "^1.18.0" "tslint-config-prettier": "^1.18.0"
}, },
"dependencies": { "dependencies": {
"crypto-random-string": "^3.0.1", "crypto-random-string": "^3.1.0",
"js-base64": "^2.5.1", "js-base64": "^2.5.1",
"normalize-newline": "^3.0.0", "normalize-newline": "^3.0.0",
"randomatic": "^3.1.1", "randomatic": "^3.1.1",
"strip-indent": "^3.0.0" "strip-indent": "^3.0.0"
} },
"files": [
"ts/**/*",
"ts_web/**/*",
"dist/**/*",
"dist_web/**/*",
"dist_ts_web/**/*",
"assets/**/*",
"cli.js",
"npmextra.json",
"readme.md"
]
} }

View File

@ -8,7 +8,7 @@ handle strings in smart ways. TypeScript ready.
* [docs (typedoc)](https://pushrocks.gitlab.io/smartstring/) * [docs (typedoc)](https://pushrocks.gitlab.io/smartstring/)
## Status for master ## Status for master
[![build status](https://gitlab.com/pushrocks/smartstring/badges/master/build.svg)](https://gitlab.com/pushrocks/smartstring/commits/master) [![pipeline status](https://gitlab.com/pushrocks/smartstring/badges/master/pipeline.svg)](https://gitlab.com/pushrocks/smartstring/commits/master)
[![coverage report](https://gitlab.com/pushrocks/smartstring/badges/master/coverage.svg)](https://gitlab.com/pushrocks/smartstring/commits/master) [![coverage report](https://gitlab.com/pushrocks/smartstring/badges/master/coverage.svg)](https://gitlab.com/pushrocks/smartstring/commits/master)
[![npm downloads per month](https://img.shields.io/npm/dm/@pushrocks/smartstring.svg)](https://www.npmjs.com/package/@pushrocks/smartstring) [![npm downloads per month](https://img.shields.io/npm/dm/@pushrocks/smartstring.svg)](https://www.npmjs.com/package/@pushrocks/smartstring)
[![Known Vulnerabilities](https://snyk.io/test/npm/@pushrocks/smartstring/badge.svg)](https://snyk.io/test/npm/@pushrocks/smartstring) [![Known Vulnerabilities](https://snyk.io/test/npm/@pushrocks/smartstring/badge.svg)](https://snyk.io/test/npm/@pushrocks/smartstring)
@ -58,9 +58,13 @@ smartstring.indent.indent('somestringanotherstring', '>>>> '); // indents a stri
smartstring.indent.normalize(' somestring anotherstring', '>>>> '); // looks for the least amount of indention and removes superflouous space smartstring.indent.normalize(' somestring anotherstring', '>>>> '); // looks for the least amount of indention and removes superflouous space
``` ```
## Contribution
We are always happy for code contributions. If you are not the code contributing type that is ok. Still, maintaining Open Source repositories takes considerable time and thought. If you like the quality of what we do and our modules are useful to you we would appreciate a little monthly contribution: You can [contribute one time](https://lossless.link/contribute-onetime) or [contribute monthly](https://lossless.link/contribute). :)
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)

View File

@ -1,5 +1,5 @@
// node native // node native
import * as crypto from 'crypto'; import crypto from 'crypto';
import * as url from 'url'; import * as url from 'url';
export { crypto, url }; export { crypto, url };

View File

@ -4,68 +4,75 @@ import * as base64 from './smartstring.base64';
export const isUtf8 = (stringArg: string) => { export const isUtf8 = (stringArg: string) => {
const bytes = Buffer.from(stringArg); const bytes = Buffer.from(stringArg);
let i = 0; let i = 0;
while(i < bytes.length) while (i < bytes.length) {
{ if (
if( (// ASCII // ASCII
bytes[i] === 0x09 || bytes[i] === 0x09 ||
bytes[i] === 0x0A || bytes[i] === 0x0a ||
bytes[i] === 0x0D || bytes[i] === 0x0d ||
(0x20 <= bytes[i] && bytes[i] <= 0x7E) (0x20 <= bytes[i] && bytes[i] <= 0x7e)
)
) { ) {
i += 1; i += 1;
continue; continue;
} }
if( (// non-overlong 2-byte if (
(0xC2 <= bytes[i] && bytes[i] <= 0xDF) && // non-overlong 2-byte
(0x80 <= bytes[i+1] && bytes[i+1] <= 0xBF) 0xc2 <= bytes[i] &&
) bytes[i] <= 0xdf &&
0x80 <= bytes[i + 1] &&
bytes[i + 1] <= 0xbf
) { ) {
i += 2; i += 2;
continue; continue;
} }
if( (// excluding overlongs if (
bytes[i] === 0xE0 && // excluding overlongs
(0xA0 <= bytes[i + 1] && bytes[i + 1] <= 0xBF) && (bytes[i] === 0xe0 &&
(0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF) 0xa0 <= bytes[i + 1] &&
) || bytes[i + 1] <= 0xbf &&
(// straight 3-byte 0x80 <= bytes[i + 2] &&
((0xE1 <= bytes[i] && bytes[i] <= 0xEC) || bytes[i + 2] <= 0xbf) || // straight 3-byte
bytes[i] === 0xEE || (((0xe1 <= bytes[i] && bytes[i] <= 0xec) || bytes[i] === 0xee || bytes[i] === 0xef) &&
bytes[i] === 0xEF) && 0x80 <= bytes[i + 1] &&
(0x80 <= bytes[i + 1] && bytes[i+1] <= 0xBF) && bytes[i + 1] <= 0xbf &&
(0x80 <= bytes[i+2] && bytes[i+2] <= 0xBF) 0x80 <= bytes[i + 2] &&
) || bytes[i + 2] <= 0xbf) || // excluding surrogates
(// excluding surrogates (bytes[i] === 0xed &&
bytes[i] === 0xED && 0x80 <= bytes[i + 1] &&
(0x80 <= bytes[i+1] && bytes[i+1] <= 0x9F) && bytes[i + 1] <= 0x9f &&
(0x80 <= bytes[i+2] && bytes[i+2] <= 0xBF) 0x80 <= bytes[i + 2] &&
) bytes[i + 2] <= 0xbf)
) { ) {
i += 3; i += 3;
continue; continue;
} }
if( (// planes 1-3 if (
bytes[i] === 0xF0 && // planes 1-3
(0x90 <= bytes[i + 1] && bytes[i + 1] <= 0xBF) && (bytes[i] === 0xf0 &&
(0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF) && 0x90 <= bytes[i + 1] &&
(0x80 <= bytes[i + 3] && bytes[i + 3] <= 0xBF) bytes[i + 1] <= 0xbf &&
) || 0x80 <= bytes[i + 2] &&
(// planes 4-15 bytes[i + 2] <= 0xbf &&
(0xF1 <= bytes[i] && bytes[i] <= 0xF3) && 0x80 <= bytes[i + 3] &&
(0x80 <= bytes[i + 1] && bytes[i + 1] <= 0xBF) && bytes[i + 3] <= 0xbf) || // planes 4-15
(0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF) && (0xf1 <= bytes[i] &&
(0x80 <= bytes[i + 3] && bytes[i + 3] <= 0xBF) bytes[i] <= 0xf3 &&
) || 0x80 <= bytes[i + 1] &&
(// plane 16 bytes[i + 1] <= 0xbf &&
bytes[i] === 0xF4 && 0x80 <= bytes[i + 2] &&
(0x80 <= bytes[i + 1] && bytes[i + 1] <= 0x8F) && bytes[i + 2] <= 0xbf &&
(0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF) && 0x80 <= bytes[i + 3] &&
(0x80 <= bytes[i + 3] && bytes[i + 3] <= 0xBF) bytes[i + 3] <= 0xbf) || // plane 16
) (bytes[i] === 0xf4 &&
0x80 <= bytes[i + 1] &&
bytes[i + 1] <= 0x8f &&
0x80 <= bytes[i + 2] &&
bytes[i + 2] <= 0xbf &&
0x80 <= bytes[i + 3] &&
bytes[i + 3] <= 0xbf)
) { ) {
i += 4; i += 4;
continue; continue;
@ -78,5 +85,15 @@ export const isUtf8 = (stringArg: string) => {
}; };
export const isBase64 = (stringArg: string) => { export const isBase64 = (stringArg: string) => {
return stringArg.endsWith('='); const notBase64 = /[^A-Z0-9+\/=]/i;
const len = stringArg.length;
if (!len || len % 4 !== 0 || notBase64.test(stringArg)) {
return false;
}
const firstPaddingChar = stringArg.indexOf('=');
return (
firstPaddingChar === -1 ||
firstPaddingChar === len - 1 ||
(firstPaddingChar === len - 2 && stringArg[len - 1] === '=')
);
}; };