fix(core): update

This commit is contained in:
Philipp Kunz 2022-03-14 13:26:48 +01:00
parent 618b3da86e
commit ddfae30a18
15 changed files with 17592 additions and 754 deletions

View File

@ -12,6 +12,9 @@ stages:
- release - release
- metadata - metadata
before_script:
- npm install -g @shipzone/npmci
# ==================== # ====================
# security stage # security stage
# ==================== # ====================
@ -19,23 +22,36 @@ mirror:
stage: security stage: security
script: script:
- npmci git mirror - npmci git mirror
only:
- tags
tags: tags:
- lossless - lossless
- docker - docker
- notpriv - notpriv
audit: auditProductionDependencies:
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
stage: security
script:
- npmci npm prepare
- npmci command npm install --production --ignore-scripts
- npmci command npm config set registry https://registry.npmjs.org
- npmci command npm audit --audit-level=high --only=prod --production
tags:
- docker
allow_failure: true
auditDevDependencies:
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
stage: security stage: security
script: script:
- npmci npm prepare - npmci npm prepare
- npmci command npm install --ignore-scripts - npmci command npm install --ignore-scripts
- npmci command npm config set registry https://registry.npmjs.org - npmci command npm config set registry https://registry.npmjs.org
- npmci command npm audit --audit-level=high - npmci command npm audit --audit-level=high --only=dev
tags: tags:
- lossless
- docker - docker
- notpriv allow_failure: true
# ==================== # ====================
# test stage # test stage
@ -50,9 +66,7 @@ testStable:
- npmci npm test - npmci npm test
coverage: /\d+.?\d+?\%\s*coverage/ coverage: /\d+.?\d+?\%\s*coverage/
tags: tags:
- lossless
- docker - docker
- priv
testBuild: testBuild:
stage: test stage: test
@ -63,9 +77,7 @@ testBuild:
- npmci command npm run build - npmci command npm run build
coverage: /\d+.?\d+?\%\s*coverage/ coverage: /\d+.?\d+?\%\s*coverage/
tags: tags:
- lossless
- docker - docker
- notpriv
release: release:
stage: release stage: release
@ -85,6 +97,8 @@ release:
codequality: codequality:
stage: metadata stage: metadata
allow_failure: true allow_failure: true
only:
- tags
script: script:
- npmci command npm install -g tslint typescript - npmci command npm install -g tslint typescript
- npmci npm prepare - npmci npm prepare

24
.vscode/launch.json vendored
View File

@ -2,28 +2,10 @@
"version": "0.2.0", "version": "0.2.0",
"configurations": [ "configurations": [
{ {
"name": "current file", "command": "npm test",
"type": "node", "name": "Run npm test",
"request": "launch", "request": "launch",
"args": [ "type": "node-terminal"
"${relativeFile}"
],
"runtimeArgs": ["-r", "@gitzone/tsrun"],
"cwd": "${workspaceRoot}",
"protocol": "inspector",
"internalConsoleOptions": "openOnSessionStart"
},
{
"name": "test.ts",
"type": "node",
"request": "launch",
"args": [
"test/test.ts"
],
"runtimeArgs": ["-r", "@gitzone/tsrun"],
"cwd": "${workspaceRoot}",
"protocol": "inspector",
"internalConsoleOptions": "openOnSessionStart"
} }
] ]
} }

View File

@ -15,7 +15,7 @@
"properties": { "properties": {
"projectType": { "projectType": {
"type": "string", "type": "string",
"enum": ["website", "element", "service", "npm"] "enum": ["website", "element", "service", "npm", "wcc"]
} }
} }
} }

View File

@ -1,8 +1,5 @@
{ {
"npmci": { "npmci": {
"npmGlobalTools": [
"@gitzone/npmts"
],
"npmAccessLevel": "public" "npmAccessLevel": "public"
}, },
"gitzone": { "gitzone": {
@ -11,7 +8,7 @@
"githost": "gitlab.com", "githost": "gitlab.com",
"gitscope": "pushrocks", "gitscope": "pushrocks",
"gitrepo": "smartpath", "gitrepo": "smartpath",
"shortDescription": "offers smart ways to handle paths", "description": "offers smart ways to handle paths",
"npmPackagename": "@pushrocks/smartpath", "npmPackagename": "@pushrocks/smartpath",
"license": "MIT" "license": "MIT"
} }

18153
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -5,6 +5,7 @@
"description": "offers smart ways to handle paths", "description": "offers smart ways to handle paths",
"main": "dist_ts/index.js", "main": "dist_ts/index.js",
"typings": "dist_ts/index.d.ts", "typings": "dist_ts/index.d.ts",
"type": "module",
"scripts": { "scripts": {
"test": "(tstest test)", "test": "(tstest test)",
"build": "(tsbuild)" "build": "(tsbuild)"
@ -24,13 +25,12 @@
"url": "https://github.com/pushrocks/smartpath/issues" "url": "https://github.com/pushrocks/smartpath/issues"
}, },
"homepage": "https://github.com/pushrocks/smartpath", "homepage": "https://github.com/pushrocks/smartpath",
"dependencies": {},
"devDependencies": { "devDependencies": {
"@gitzone/tsbuild": "^2.1.22", "@gitzone/tsbuild": "^2.1.48",
"@gitzone/tsrun": "^1.2.8", "@gitzone/tsrun": "^1.2.31",
"@gitzone/tstest": "^1.0.28", "@gitzone/tstest": "^1.0.67",
"@pushrocks/tapbundle": "^3.2.1", "@pushrocks/tapbundle": "^5.0.2",
"@types/node": "^13.11.1" "@types/node": "^17.0.21"
}, },
"files": [ "files": [
"ts/**/*", "ts/**/*",
@ -43,5 +43,8 @@
"cli.js", "cli.js",
"npmextra.json", "npmextra.json",
"readme.md" "readme.md"
],
"browserslist": [
"last 1 chrome versions"
] ]
} }

View File

@ -8,13 +8,20 @@ offers smart ways to handle paths
* [docs (typedoc)](https://pushrocks.gitlab.io/smartpath/) * [docs (typedoc)](https://pushrocks.gitlab.io/smartpath/)
## Status for master ## Status for master
[![pipeline status](https://gitlab.com/pushrocks/smartpath/badges/master/pipeline.svg)](https://gitlab.com/pushrocks/smartpath/commits/master)
[![coverage report](https://gitlab.com/pushrocks/smartpath/badges/master/coverage.svg)](https://gitlab.com/pushrocks/smartpath/commits/master) Status Category | Status Badge
[![npm downloads per month](https://img.shields.io/npm/dm/@pushrocks/smartpath.svg)](https://www.npmjs.com/package/@pushrocks/smartpath) -- | --
[![Known Vulnerabilities](https://snyk.io/test/npm/@pushrocks/smartpath/badge.svg)](https://snyk.io/test/npm/@pushrocks/smartpath) GitLab Pipelines | [![pipeline status](https://gitlab.com/pushrocks/smartpath/badges/master/pipeline.svg)](https://lossless.cloud)
[![TypeScript](https://img.shields.io/badge/TypeScript->=%203.x-blue.svg)](https://nodejs.org/dist/latest-v10.x/docs/api/) GitLab Pipline Test Coverage | [![coverage report](https://gitlab.com/pushrocks/smartpath/badges/master/coverage.svg)](https://lossless.cloud)
[![node](https://img.shields.io/badge/node->=%2010.x.x-blue.svg)](https://nodejs.org/dist/latest-v10.x/docs/api/) npm | [![npm downloads per month](https://badgen.net/npm/dy/@pushrocks/smartpath)](https://lossless.cloud)
[![JavaScript Style Guide](https://img.shields.io/badge/code%20style-prettier-ff69b4.svg)](https://prettier.io/) Snyk | [![Known Vulnerabilities](https://badgen.net/snyk/pushrocks/smartpath)](https://lossless.cloud)
TypeScript Support | [![TypeScript](https://badgen.net/badge/TypeScript/>=%203.x/blue?icon=typescript)](https://lossless.cloud)
node Support | [![node](https://img.shields.io/badge/node->=%2010.x.x-blue.svg)](https://nodejs.org/dist/latest-v10.x/docs/api/)
Code Style | [![Code Style](https://badgen.net/badge/style/prettier/purple)](https://lossless.cloud)
PackagePhobia (total standalone install weight) | [![PackagePhobia](https://badgen.net/packagephobia/install/@pushrocks/smartpath)](https://lossless.cloud)
PackagePhobia (package size on registry) | [![PackagePhobia](https://badgen.net/packagephobia/publish/@pushrocks/smartpath)](https://lossless.cloud)
BundlePhobia (total size when bundled) | [![BundlePhobia](https://badgen.net/bundlephobia/minzip/@pushrocks/smartpath)](https://lossless.cloud)
Platform support | [![Supports Windows 10](https://badgen.net/badge/supports%20Windows%2010/yes/green?icon=windows)](https://lossless.cloud) [![Supports Mac OS X](https://badgen.net/badge/supports%20Mac%20OS%20X/yes/green?icon=apple)](https://lossless.cloud)
## Usage ## Usage

View File

@ -1,11 +1,11 @@
import { tap, expect } from '@pushrocks/tapbundle'; import { tap, expect, expectAsync } from '@pushrocks/tapbundle';
import * as smartpath from '../ts/index'; import * as smartpath from '../ts/index.js';
let mySmartpath: smartpath.Smartpath; let mySmartpath: smartpath.Smartpath;
tap.test('expect create a valid instance', async () => { tap.test('expect create a valid instance', async () => {
mySmartpath = new smartpath.Smartpath('/some/path/to/some.file'); mySmartpath = new smartpath.Smartpath('/some/path/to/some.file');
expect(mySmartpath).to.be.instanceof(smartpath.Smartpath); expect(mySmartpath).toBeInstanceOf(smartpath.Smartpath);
expect(mySmartpath.pathLevelsBackwards).to.be.of.length(5); expect(mySmartpath.pathLevelsBackwards.length === 5).toBeTrue();
}); });
let filePathString = './somedir/somefile.json'; let filePathString = './somedir/somefile.json';
@ -13,21 +13,21 @@ let dirPathString = './somedir/anotherdir';
let dirPathString2 = './somedir/another.dir/'; let dirPathString2 = './somedir/another.dir/';
tap.test('expect be true for a file path', async () => { tap.test('expect be true for a file path', async () => {
expect(smartpath.check.isFile(filePathString)).to.be.true; expect(smartpath.check.isFile(filePathString)).toBeTrue();
}); });
tap.test('expect be false for a directory path', async () => { tap.test('expect be false for a directory path', async () => {
expect(smartpath.check.isFile(dirPathString)).to.be.false; expect(smartpath.check.isFile(dirPathString)).toBeFalse();
expect(smartpath.check.isFile(dirPathString2)).to.be.false; expect(smartpath.check.isFile(dirPathString2)).toBeFalse();
}); });
tap.test('expect be true for a directory path', async () => { tap.test('expect be true for a directory path', async () => {
expect(smartpath.check.isDir(dirPathString)).to.be.true; expect(smartpath.check.isDir(dirPathString)).toBeTrue();
expect(smartpath.check.isDir(dirPathString2)).to.be.true; expect(smartpath.check.isDir(dirPathString2)).toBeTrue();
}); });
tap.test('expect be false for a file path', async () => { tap.test('expect be false for a file path', async () => {
expect(smartpath.check.isDir(filePathString)).to.be.false; expect(smartpath.check.isDir(filePathString)).toBeFalse();
}); });
let baseString = '/basedir'; let baseString = '/basedir';
@ -35,25 +35,25 @@ let relativeString = 'somedir/somefile.txt';
let relativeString2 = 'anotherdir/anotherfile.txt'; let relativeString2 = 'anotherdir/anotherfile.txt';
let relativeArray = [relativeString, relativeString, relativeString2]; let relativeArray = [relativeString, relativeString, relativeString2];
tap.test('expect make a string absolute', async () => { tap.test('expect make a string absolute', async () => {
expect(smartpath.transform.toAbsolute(relativeString)).startWith('/'); expect(smartpath.transform.toAbsolute(relativeString)).toStartWith('/');
expect(smartpath.transform.toAbsolute(relativeString)).endWith(relativeString); expect(smartpath.transform.toAbsolute(relativeString)).toEndWith(relativeString);
expect(smartpath.transform.toAbsolute(relativeString, baseString)).equal( expect(smartpath.transform.toAbsolute(relativeString, baseString)).toEqual(
'/basedir/somedir/somefile.txt' '/basedir/somedir/somefile.txt'
); );
}); });
tap.test('expect make an array of relative Strings an Array of absolute Strings', async () => { tap.test('expect make an array of relative Strings an Array of absolute Strings', async () => {
let absoluteArray = smartpath.transform.toAbsolute(relativeArray, baseString); let absoluteArray = smartpath.transform.toAbsolute(relativeArray, baseString);
expect(absoluteArray[2]).to.startWith('/'); expect(absoluteArray[2]).toStartWith('/');
expect(absoluteArray[2]).endWith(relativeString2); expect(absoluteArray[2]).toEndWith(relativeString2);
}); });
tap.test("expect return 'url' for an URL", async () => { tap.test("expect return 'url' for an URL", async () => {
expect(smartpath.get.type('https://push.rocks/some/url')).equal('url'); expect(smartpath.get.type('https://push.rocks/some/url')).toEqual('url');
expect(smartpath.get.type('https://push.rocks/some/url')).not.equal('local'); expect(smartpath.get.type('https://push.rocks/some/url')).not.toEqual('local');
}); });
tap.test("expect return 'path' for a Path", async () => { tap.test("expect return 'path' for a Path", async () => {
expect(smartpath.get.type('/some/absolute/path/')).equal('local'); expect(smartpath.get.type('/some/absolute/path/')).toEqual('local');
expect(smartpath.get.type('./some/relative/path/')).not.equal('url'); expect(smartpath.get.type('./some/relative/path/')).not.toEqual('url');
}); });
tap.test('expect a absolute path for an home relative URL', async () => { tap.test('expect a absolute path for an home relative URL', async () => {

View File

@ -1,8 +1,8 @@
// import modules // import modules
import * as check from './smartpath.check'; import * as check from './smartpath.check.js';
import * as get from './smartpath.get'; import * as get from './smartpath.get.js';
import * as transform from './smartpath.transform'; import * as transform from './smartpath.transform.js';
export { check, get, transform }; export { check, get, transform };
export * from './smartpath.classes.smartpath'; export * from './smartpath.classes.smartpath.js';

View File

@ -1,9 +1,9 @@
import plugins = require('./smartpath.plugins'); import * as plugins from './smartpath.plugins.js';
export let isDir = function(pathArg: string) { export let isDir = function (pathArg: string) {
return !isFile(pathArg); return !isFile(pathArg);
}; };
export let isFile = function(pathArg) { export let isFile = function (pathArg) {
return /\.[a-zA-Z]*$/.test(pathArg); // checks if there is a .anything at the end return /\.[a-zA-Z]*$/.test(pathArg); // checks if there is a .anything at the end
}; };

View File

@ -1,5 +1,5 @@
import * as plugins from './smartpath.plugins'; import * as plugins from './smartpath.plugins.js';
import * as getMod from './smartpath.get'; import * as getMod from './smartpath.get.js';
export class Smartpath { export class Smartpath {
originalPath: string; originalPath: string;

View File

@ -1,11 +1,11 @@
import plugins = require('./smartpath.plugins'); import * as plugins from './smartpath.plugins.js'
export type TPathType = 'url' | 'local'; export type TPathType = 'url' | 'local';
/** /**
* returns the type of the given path. Can be "url" or "local" * returns the type of the given path. Can be "url" or "local"
*/ */
export let type = function(pathStringArg: string): TPathType { export const type = (pathStringArg: string): TPathType => {
let urlRegex = /http[s|\s]:\/\/.*/i; const urlRegex = /http[s|\s]:\/\/.*/i;
if (urlRegex.exec(pathStringArg)) { if (urlRegex.exec(pathStringArg)) {
return 'url'; return 'url';
} else { } else {
@ -13,7 +13,19 @@ export let type = function(pathStringArg: string): TPathType {
} }
}; };
export let home = function(pathArgument?: string) { /**
* gets the dirname from import.meta.url
*/
export const getDirnameFromImportMetaUrl = () => {
}
/**
* returns homedir as absolute path
* @param pathArgument if a pathargument is given, ~ is being replaced with the homedir
* @returns
*/
export const home = (pathArgument?: string) => {
if (pathArgument) { if (pathArgument) {
return pathArgument.replace('~', plugins.os.homedir()); return pathArgument.replace('~', plugins.os.homedir());
} else { } else {
@ -23,7 +35,7 @@ export let home = function(pathArgument?: string) {
export type TSystemArg = 'dynamic' | 'windows' | 'linux' | 'osx'; export type TSystemArg = 'dynamic' | 'windows' | 'linux' | 'osx';
export let pathLevels = (pathArg: string, systemArg: TSystemArg = 'dynamic') => { export const pathLevels = (pathArg: string, systemArg: TSystemArg = 'dynamic') => {
let pathLevelArray: string[]; let pathLevelArray: string[];
if (systemArg === 'dynamic') { if (systemArg === 'dynamic') {
pathLevelArray = pathArg.split(plugins.path.sep); pathLevelArray = pathArg.split(plugins.path.sep);
@ -31,6 +43,6 @@ export let pathLevels = (pathArg: string, systemArg: TSystemArg = 'dynamic') =>
return pathLevelArray; return pathLevelArray;
}; };
export let pathLevelsBackwards = (pathArg: string, systemArg?: TSystemArg) => { export const pathLevelsBackwards = (pathArg: string, systemArg?: TSystemArg) => {
return pathLevels(pathArg, systemArg).reverse(); return pathLevels(pathArg, systemArg).reverse();
}; };

View File

@ -1,4 +1,5 @@
import * as os from 'os'; import * as os from 'os';
import * as path from 'path'; import * as path from 'path';
import * as url from 'url';
export { os, path }; export { os, path, url };

View File

@ -1,11 +1,11 @@
import plugins = require('./smartpath.plugins'); import * as plugins from './smartpath.plugins.js';
/* ------------------------------------------ * /* ------------------------------------------ *
* ------------ helpers --------------------- * * ------------ helpers --------------------- *
* ------------------------------------------ */ * ------------------------------------------ */
// checks a file // checks a file
let makeAbsolute = function(localPathArg: string, baseArg?: string): string { let makeAbsolute = function (localPathArg: string, baseArg?: string): string {
let absolutePath: string; let absolutePath: string;
let alreadyAbsolute = plugins.path.isAbsolute(localPathArg); let alreadyAbsolute = plugins.path.isAbsolute(localPathArg);
if (baseArg && !alreadyAbsolute) { if (baseArg && !alreadyAbsolute) {
@ -21,7 +21,7 @@ let makeAbsolute = function(localPathArg: string, baseArg?: string): string {
/* ------------------------------------------ * /* ------------------------------------------ *
* ------- export functions ----------------- * * ------- export functions ----------------- *
* ------------------------------------------ */ * ------------------------------------------ */
export let toAbsolute = function(relativeArg: string | string[], baseArg?: string): any { export let toAbsolute = function (relativeArg: string | string[], baseArg?: string): any {
if (typeof relativeArg === 'string') { if (typeof relativeArg === 'string') {
return makeAbsolute(relativeArg, baseArg); return makeAbsolute(relativeArg, baseArg);
} else if (Array.isArray(relativeArg)) { } else if (Array.isArray(relativeArg)) {

View File

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