Compare commits

...

30 Commits

Author SHA1 Message Date
0561f655cb 2.1.58 2022-03-18 14:32:35 +01:00
b0b1be70ab fix(core): update 2022-03-18 14:32:35 +01:00
dda03bad45 2.1.57 2022-03-18 14:31:48 +01:00
a0b9f8d8f3 fix(core): update 2022-03-18 14:31:48 +01:00
da823e51d5 2.1.56 2022-03-15 20:06:48 +01:00
b68aa06941 fix(core): update 2022-03-15 20:06:48 +01:00
f5ee2c2c70 2.1.55 2022-03-15 10:21:15 +01:00
0c018e6448 fix(core): update 2022-03-15 10:21:15 +01:00
565c66e4e6 2.1.54 2022-03-15 10:18:09 +01:00
72ad77446c fix(core): update 2022-03-15 10:18:08 +01:00
59ce28395f 2.1.53 2022-03-15 10:04:59 +01:00
cddd7ffd25 fix(core): update 2022-03-15 10:04:59 +01:00
48ef556e6b 2.1.52 2022-03-15 09:59:31 +01:00
0645beb199 fix(core): update 2022-03-15 09:59:30 +01:00
97f52d1016 2.1.51 2022-03-15 09:45:49 +01:00
8d725e2e11 fix(core): update 2022-03-15 09:45:49 +01:00
42b83b888e 2.1.50 2022-03-14 21:46:42 +01:00
832664b667 fix(core): update 2022-03-14 21:46:41 +01:00
4925809030 2.1.49 2022-03-14 16:04:07 +01:00
622a080b3c fix(core): update 2022-03-14 16:04:07 +01:00
18747dbc83 2.1.48 2022-03-12 23:15:28 +01:00
210a7a07f7 fix(core): update 2022-03-12 23:15:28 +01:00
211d42c36b 2.1.47 2022-03-12 21:09:33 +01:00
cfbe4bbcb9 fix(core): update 2022-03-12 21:09:33 +01:00
72350a49ec 2.1.46 2022-03-12 19:42:49 +01:00
d4a0d03301 fix(core): update 2022-03-12 19:42:49 +01:00
75f506ba0e 2.1.45 2022-03-12 19:32:15 +01:00
035207f4f9 fix(core): update 2022-03-12 19:32:15 +01:00
6d2d48af9d 2.1.44 2022-03-12 19:05:47 +01:00
9adbce12e1 fix(core): update 2022-03-12 19:05:46 +01:00
20 changed files with 481 additions and 782 deletions

View File

@ -12,6 +12,9 @@ stages:
- release
- metadata
before_script:
- npm install -g @shipzone/npmci
# ====================
# security stage
# ====================
@ -19,23 +22,36 @@ mirror:
stage: security
script:
- npmci git mirror
only:
- tags
tags:
- lossless
- docker
- 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
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
- npmci command npm audit --audit-level=high --only=dev
tags:
- lossless
- docker
- notpriv
allow_failure: true
# ====================
# test stage
@ -50,9 +66,7 @@ testStable:
- npmci npm test
coverage: /\d+.?\d+?\%\s*coverage/
tags:
- lossless
- docker
- priv
testBuild:
stage: test
@ -63,9 +77,7 @@ testBuild:
- npmci command npm run build
coverage: /\d+.?\d+?\%\s*coverage/
tags:
- lossless
- docker
- notpriv
release:
stage: release
@ -85,11 +97,12 @@ release:
codequality:
stage: metadata
allow_failure: true
only:
- tags
script:
- npmci command npm install -g tslint typescript
- npmci command npm install -g typescript
- npmci npm prepare
- npmci npm install
- npmci command "tslint -c tslint.json ./ts/**/*.ts"
tags:
- lossless
- docker

24
.vscode/launch.json vendored
View File

@ -2,28 +2,10 @@
"version": "0.2.0",
"configurations": [
{
"name": "current file",
"type": "node",
"command": "npm test",
"name": "Run npm test",
"request": "launch",
"args": [
"${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"
"type": "node-terminal"
}
]
}

View File

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

4
cli.child.ts Normal file
View File

@ -0,0 +1,4 @@
#!/usr/bin/env node
process.env.CLI_CALL = 'true';
import * as cliTool from './ts/index.js';
cliTool.runCli();

2
cli.js
View File

@ -1,4 +1,4 @@
#!/usr/bin/env node
process.env.CLI_CALL = 'true';
const cliTool = require('./dist_ts/index');
const cliTool = await import('./dist_ts/index.js');
cliTool.runCli();

View File

@ -1,5 +1,4 @@
#!/usr/bin/env node
process.env.CLI_CALL = 'true';
require('@gitzone/tsrun');
const cliTool = require('./ts/index');
cliTool.runCli();
import * as tsrun from '@gitzone/tsrun';
tsrun.runPath('./cli.child.js');

View File

@ -9,7 +9,7 @@
"githost": "gitlab.com",
"gitscope": "gitzone",
"gitrepo": "tsbuild",
"shortDescription": "TypeScript nightly to easily make use of latest features",
"description": "TypeScript nightly to easily make use of latest features",
"npmPackagename": "@gitzone/tsbuild",
"license": "MIT"
}

1023
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,17 +1,18 @@
{
"name": "@gitzone/tsbuild",
"version": "2.1.43",
"version": "2.1.58",
"private": false,
"description": "TypeScript nightly to easily make use of latest features",
"main": "dist_ts/index.js",
"typings": "dist_ts/index.d.ts",
"type": "module",
"bin": {
"tsbuild": "./cli.js"
},
"scripts": {
"test": "tsrun test/test.ts",
"testCustom": "node cli.ts.js custom ts_web",
"build": "node cli.ts.js --web"
"build": "node cli.ts.js --web --allowimplicitany"
},
"repository": {
"type": "git",
@ -29,18 +30,17 @@
"dependencies": {
"@pushrocks/early": "^3.0.6",
"@pushrocks/smartcli": "^3.0.14",
"@pushrocks/smartdelay": "^2.0.13",
"@pushrocks/smartfile": "^9.0.6",
"@pushrocks/smartlog": "^2.0.44",
"@pushrocks/smartpath": "^4.0.3",
"@pushrocks/smartpath": "^5.0.4",
"@pushrocks/smartpromise": "^3.1.7",
"typescript": "4.7.0-dev.20220311"
"typescript": "4.7.0"
},
"devDependencies": {
"@gitzone/tsrun": "1.2.18",
"@pushrocks/tapbundle": "^4.0.8",
"@types/node": "^17.0.21",
"tslint": "^6.1.3",
"tslint-config-prettier": "^1.18.0"
"@gitzone/tsrun": "^1.2.31",
"@pushrocks/tapbundle": "^5.0.2",
"@types/node": "^17.0.21"
},
"files": [
"ts/**/*",
@ -53,5 +53,8 @@
"cli.js",
"npmextra.json",
"readme.md"
],
"browserslist": [
"last 1 chrome versions"
]
}

View File

@ -8,13 +8,20 @@ TypeScript nightly to easily make use of latest features
* [docs (typedoc)](https://gitzone.gitlab.io/tsbuild/)
## Status for master
[![pipeline status](https://gitlab.com/gitzone/tsbuild/badges/master/pipeline.svg)](https://gitlab.com/gitzone/tsbuild/commits/master)
[![coverage report](https://gitlab.com/gitzone/tsbuild/badges/master/coverage.svg)](https://gitlab.com/gitzone/tsbuild/commits/master)
[![npm downloads per month](https://img.shields.io/npm/dm/@gitzone/tsbuild.svg)](https://www.npmjs.com/package/@gitzone/tsbuild)
[![Known Vulnerabilities](https://snyk.io/test/npm/@gitzone/tsbuild/badge.svg)](https://snyk.io/test/npm/@gitzone/tsbuild)
[![TypeScript](https://img.shields.io/badge/TypeScript->=%203.x-blue.svg)](https://nodejs.org/dist/latest-v10.x/docs/api/)
[![node](https://img.shields.io/badge/node->=%2010.x.x-blue.svg)](https://nodejs.org/dist/latest-v10.x/docs/api/)
[![JavaScript Style Guide](https://img.shields.io/badge/code%20style-prettier-ff69b4.svg)](https://prettier.io/)
Status Category | Status Badge
-- | --
GitLab Pipelines | [![pipeline status](https://gitlab.com/gitzone/tsbuild/badges/master/pipeline.svg)](https://lossless.cloud)
GitLab Pipline Test Coverage | [![coverage report](https://gitlab.com/gitzone/tsbuild/badges/master/coverage.svg)](https://lossless.cloud)
npm | [![npm downloads per month](https://badgen.net/npm/dy/@gitzone/tsbuild)](https://lossless.cloud)
Snyk | [![Known Vulnerabilities](https://badgen.net/snyk/gitzone/tsbuild)](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/@gitzone/tsbuild)](https://lossless.cloud)
PackagePhobia (package size on registry) | [![PackagePhobia](https://badgen.net/packagephobia/publish/@gitzone/tsbuild)](https://lossless.cloud)
BundlePhobia (total size when bundled) | [![BundlePhobia](https://badgen.net/bundlephobia/minzip/@gitzone/tsbuild)](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
@ -25,12 +32,12 @@ import * as tsn from 'tsn';
let myGlobStringObject = {
'./myTsFolder/**/*.ts': './myDestinationFolder/',
'./someOtherTsFolder/**/*.ts': './myOtherDestinationFolder/'
'./someOtherTsFolder/**/*.ts': './myOtherDestinationFolder/',
};
let tsOptions = {
target: tsn.ScriptTarget.ES2015,
module: tsn.ModuleKind.CommonJS
module: tsn.ModuleKind.CommonJS,
};
/*

View File

@ -3,7 +3,7 @@ console.log('test2');
import * as early from '@pushrocks/early';
early.start();
early.stop();
import { anExportedString } from './tocompile2';
import { anExportedString } from './tocompile2.js';
console.log(anExportedString);
class test2 {
constructor() {
@ -14,4 +14,4 @@ class test2 {
const run = async () => {
return 'hi';
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9jb21waWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdG9jb21waWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDcEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUVyQixPQUFPLEtBQUssS0FBSyxNQUFNLGtCQUFrQixDQUFDO0FBRTFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNkLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUViLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUM5QyxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFFOUIsTUFBTSxLQUFLO0lBRVQ7UUFEQSxTQUFJLEdBQWEsRUFBRSxDQUFDO1FBRWxCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEIsQ0FBQztDQUNGO0FBRUQsTUFBTSxHQUFHLEdBQUcsS0FBSyxJQUFxQixFQUFFO0lBQ3RDLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDIn0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9jb21waWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdG9jb21waWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDcEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUVyQixPQUFPLEtBQUssS0FBSyxNQUFNLGtCQUFrQixDQUFDO0FBRTFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNkLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUViLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUU5QixNQUFNLEtBQUs7SUFFVDtRQURBLFNBQUksR0FBYSxFQUFFLENBQUM7UUFFbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLEdBQUcsR0FBRyxLQUFLLElBQXFCLEVBQUU7SUFDdEMsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUMifQ==

View File

@ -1 +1 @@
export declare const anExportedString = "exported string";
export declare const anExportedString = 'exported string';

View File

@ -6,7 +6,7 @@ import * as early from '@pushrocks/early';
early.start();
early.stop();
import {anExportedString} from './tocompile2';
import { anExportedString } from './tocompile2.js';
console.log(anExportedString);
class test2 {

View File

@ -1,18 +1,18 @@
import { tap, expect, expectAsync } from '@pushrocks/tapbundle';
import * as tsbuild from '../ts/index';
import * as tsbuild from '../ts/index.js';
let assetfiles: string[] = ['./test/assets/tocompile.ts', './test/assets/tocompile2.ts'];
let assetfiles2 = {
'./test/assets/**/!(*.d.ts|*.js|output)': './test/assets/output'
'./test/assets/**/!(*.d.ts|*.js|output)': './test/assets/output',
};
tap.test('should convert files from an array with single files to output', async tools => {
tap.test('should convert files from an array with single files to output', async (tools) => {
tsbuild.compileFileArray(assetfiles, { outDir: './test/assets/output' });
});
tap.test('should convert files from an array with single files to output', async tools => {
tap.test('should convert files from an array with single files to output', async (tools) => {
tsbuild.compileGlobStringObject(assetfiles2);
});

View File

@ -1,5 +1,5 @@
import * as early from '@pushrocks/early';
early.start('tsbuild');
export * from './tsbuild.exports';
export * from './tsbuild.cli';
early.stop();
export * from './tsbuild.exports.js';
export * from './tsbuild.cli.js';
early.stop();

View File

@ -1,7 +1,6 @@
// import all the stuff we need
import * as plugins from './tsbuild.plugins';
import { CompilerOptions } from 'typescript';
export { CompilerOptions, ScriptTarget, ModuleKind } from 'typescript';
import * as plugins from './tsbuild.plugins.js';
import { CompilerOptions, ScriptTarget, ModuleKind } from './tsbuild.exports.js';
/**
* the default typescript compilerOptions
@ -13,18 +12,13 @@ export const compilerOptionsDefault: CompilerOptions = {
inlineSourceMap: true,
noEmitOnError: true,
outDir: 'dist_ts/',
module: plugins.typescript.ModuleKind.CommonJS,
moduleResolution: plugins.typescript.ModuleResolutionKind.Node12,
lib: [],
noImplicitAny: false,
esModuleInterop: true,
module: plugins.typescript.ModuleKind.ES2020,
target: plugins.typescript.ScriptTarget.ES2020,
importsNotUsedAsValues: plugins.typescript.ImportsNotUsedAsValues.Preserve
};
export const compilerOptionsWebDefault: CompilerOptions = {
...compilerOptionsDefault,
lib: [...compilerOptionsDefault.lib, 'lib.dom.d.ts']
moduleResolution: plugins.typescript.ModuleResolutionKind.Node12,
lib: ['lib.dom.d.ts'],
noImplicitAny: true,
esModuleInterop: true,
importsNotUsedAsValues: plugins.typescript.ImportsNotUsedAsValues.Preserve,
};
/**
@ -34,34 +28,47 @@ export const mergeCompilerOptions = (
customTsOptions: CompilerOptions,
argvArg?: any
): CompilerOptions => {
const defaultOptionsToMerge = (() => {
if (argvArg && argvArg.web) {
return compilerOptionsWebDefault;
} else {
return compilerOptionsDefault;
}
})();
// create merged options
const mergedOptions: CompilerOptions = {
...defaultOptionsToMerge,
...compilerOptionsDefault,
...customTsOptions,
...argvArg && argvArg.skiplibcheck ? {
skipLibCheck: true
} : {},
...(argvArg && argvArg.skiplibcheck
? {
skipLibCheck: true,
}
: {}),
...(argvArg && argvArg.allowimplicitany
? {
noImplicitAny: false,
}
: {}),
...(argvArg && argvArg.commonjs
? {
module: plugins.typescript.ModuleKind.CommonJS,
moduleResolution: plugins.typescript.ModuleResolutionKind.NodeJs,
}
: {}),
};
console.log(mergedOptions);
return mergedOptions;
};
/**
* the internal main compiler function that compiles the files
*/
export const compiler = (
export const compiler = async (
fileNames: string[],
options: plugins.typescript.CompilerOptions,
argvArg?: any
): Promise<any[]> => {
if (options.skipLibCheck) {
console.log('? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?');
console.log('You are skipping libcheck... Is that really wanted?');
console.log('? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?');
await plugins.smartdelay.delayFor(5000);
}
console.log(`Compiling ${fileNames.length} files...`);
const done = plugins.smartpromise.defer<any[]>();
const program = plugins.typescript.createProgram(fileNames, options);
@ -75,7 +82,7 @@ export const compiler = (
const allDiagnostics = plugins.typescript
.getPreEmitDiagnostics(program)
.concat(emitResult.diagnostics);
allDiagnostics.forEach(diagnostic => {
allDiagnostics.forEach((diagnostic) => {
if (diagnostic.file) {
const { line, character } = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start!);
const message = plugins.typescript.flattenDiagnosticMessageText(diagnostic.messageText, '\n');

View File

@ -1,5 +1,5 @@
import * as plugins from './tsbuild.plugins';
import * as tsbuild from './tsbuild.exports';
import * as plugins from './tsbuild.plugins.js';
import * as tsbuild from './tsbuild.exports.js';
export const runCli = async () => {
const tsbuildCli = new plugins.smartcli.Smartcli();
@ -38,7 +38,7 @@ export const runCli = async () => {
},
{},
process.cwd(),
{ web: true }
{ web: true, ...argvArg }
);
});

View File

@ -1,7 +1,10 @@
import * as plugins from './tsbuild.plugins';
import { compiler, CompilerOptions, mergeCompilerOptions } from './tsbuild.classes.compiler';
import * as plugins from './tsbuild.plugins.js';
import type { CompilerOptions, ScriptTarget, ModuleKind } from 'typescript';
import { compiler, mergeCompilerOptions } from './tsbuild.classes.compiler.js';
export * from './tsbuild.classes.compiler';
export type { CompilerOptions, ScriptTarget, ModuleKind };
export * from './tsbuild.classes.compiler.js';
/**
* compile am array of absolute file paths
@ -44,7 +47,7 @@ export let compileGlobStringObject = async (
);
tsOptionsArg = {
...tsOptionsArg,
outDir: destDir
outDir: destDir,
};
compiledFiles = compiledFiles.concat(
compiledFiles,

View File

@ -1,7 +1,8 @@
import * as smartcli from '@pushrocks/smartcli';
import * as smartdelay from '@pushrocks/smartdelay';
import * as smartfile from '@pushrocks/smartfile';
import * as smartpath from '@pushrocks/smartpath';
import * as smartpromise from '@pushrocks/smartpromise';
import typescript from 'typescript';
export { smartcli, smartfile, smartpath, smartpromise, typescript };
export { smartcli, smartdelay, smartfile, smartpath, smartpromise, typescript };

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"
}