Compare commits

...

66 Commits

Author SHA1 Message Date
6e90bdda36 2.1.75 2024-05-10 16:54:46 +02:00
82cce58d69 fix(core): update 2024-05-10 16:54:45 +02:00
a316cc6725 2.1.74 2024-05-10 16:52:43 +02:00
05738a5c94 fix(core): update 2024-05-10 16:52:43 +02:00
651a06ff7b 2.1.73 2024-05-10 15:55:25 +02:00
2f04474dab fix(core): update 2024-05-10 15:55:25 +02:00
d88af368a4 2.1.72 2024-01-08 16:17:15 +01:00
e60816be4c fix(core): update 2024-01-08 16:17:15 +01:00
a9e383ba2d 2.1.71 2024-01-08 16:06:31 +01:00
a3e1cf9e3d fix(core): update 2024-01-08 16:06:30 +01:00
8790886815 2.1.70 2023-08-26 15:34:43 +02:00
611bd0d542 fix(core): update 2023-08-26 15:34:42 +02:00
b182fa5c0a 2.1.69 2023-08-26 14:40:49 +02:00
03d4996284 fix(core): update 2023-08-26 14:40:48 +02:00
6b2d2c9cc3 2.1.68 2023-08-26 13:30:07 +02:00
e9dc5ae444 fix(core): update 2023-08-26 13:30:06 +02:00
24574bdb4d 2.1.67 2023-08-26 13:27:51 +02:00
2fe98bec22 fix(core): update 2023-08-26 13:27:51 +02:00
87b6a4efb2 2.1.66 2023-06-03 16:45:40 +02:00
dc81d99ac3 fix(core): update 2023-06-03 16:45:40 +02:00
5d0c9b0326 2.1.65 2022-08-03 19:34:52 +02:00
f27c27bd31 fix(core): update 2022-08-03 19:34:51 +02:00
67e42cc0bd 2.1.64 2022-08-03 19:05:31 +02:00
4a71b92868 fix(core): update 2022-08-03 19:05:31 +02:00
c251bce006 2.1.63 2022-05-25 23:43:44 +02:00
f83b872f31 fix(core): update 2022-05-25 23:43:44 +02:00
4e93832683 2.1.62 2022-05-25 11:52:42 +02:00
4d37e880a3 fix(core): update 2022-05-25 11:52:42 +02:00
b7e6412b7a 2.1.61 2022-03-24 18:24:05 +01:00
113717886c fix(core): update 2022-03-24 18:24:05 +01:00
98b4d4bc5b 2.1.60 2022-03-18 22:12:28 +01:00
83f496f0ca fix(core): update 2022-03-18 22:12:27 +01:00
662b7d4e6c 2.1.59 2022-03-18 14:33:22 +01:00
ab43ea0a10 fix(core): update 2022-03-18 14:33:22 +01:00
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
318189c7b2 2.1.43 2022-03-11 18:08:24 +01:00
167483b909 2.1.42 2022-03-11 18:08:19 +01:00
24 changed files with 2553 additions and 3335 deletions

View File

@ -12,30 +12,38 @@ stages:
- release - release
- metadata - metadata
before_script:
- pnpm install -g pnpm
- pnpm install -g @shipzone/npmci
- npmci npm prepare
# ==================== # ====================
# security stage # security stage
# ==================== # ====================
mirror: # ====================
stage: security # security stage
script: # ====================
- npmci git mirror auditProductionDependencies:
tags:
- lossless
- docker
- notpriv
audit:
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 command npm config set registry https://registry.npmjs.org
- npmci command npm install --ignore-scripts - npmci command pnpm audit --audit-level=high --prod
- npmci command npm config set registry https://registry.npmjs.org
- npmci command npm audit --audit-level=high
tags: tags:
- lossless - lossless
- docker - docker
- notpriv allow_failure: true
auditDevDependencies:
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
stage: security
script:
- npmci command npm config set registry https://registry.npmjs.org
- npmci command pnpm audit --audit-level=high --dev
tags:
- lossless
- docker
allow_failure: true
# ==================== # ====================
# test stage # test stage
@ -44,28 +52,22 @@ audit:
testStable: testStable:
stage: test stage: test
script: script:
- npmci npm prepare
- npmci node install stable - npmci node install stable
- npmci npm install - npmci npm install
- 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
script: script:
- npmci npm prepare
- npmci node install stable - npmci node install stable
- npmci npm install - npmci npm install
- npmci command npm run build - npmci npm build
coverage: /\d+.?\d+?\%\s*coverage/ coverage: /\d+.?\d+?\%\s*coverage/
tags: tags:
- lossless
- docker - docker
- notpriv
release: release:
stage: release stage: release
@ -85,11 +87,12 @@ 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 typescript
- npmci npm prepare - npmci npm prepare
- npmci npm install - npmci npm install
- npmci command "tslint -c tslint.json ./ts/**/*.ts"
tags: tags:
- lossless - lossless
- docker - docker
@ -109,11 +112,9 @@ trigger:
pages: pages:
stage: metadata stage: metadata
script: script:
- npmci node install lts - npmci node install stable
- npmci command npm install -g @gitzone/tsdoc
- npmci npm prepare
- npmci npm install - npmci npm install
- npmci command tsdoc - npmci command npm run buildDocs
tags: tags:
- lossless - lossless
- docker - docker

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

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 #!/usr/bin/env node
process.env.CLI_CALL = 'true'; process.env.CLI_CALL = 'true';
const cliTool = require('./dist_ts/index'); const cliTool = await import('./dist_ts/index.js');
cliTool.runCli(); cliTool.runCli();

View File

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

View File

@ -9,7 +9,7 @@
"githost": "gitlab.com", "githost": "gitlab.com",
"gitscope": "gitzone", "gitscope": "gitzone",
"gitrepo": "tsbuild", "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", "npmPackagename": "@gitzone/tsbuild",
"license": "MIT" "license": "MIT"
} }

3166
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,17 +1,18 @@
{ {
"name": "@gitzone/tsbuild", "name": "@git.zone/tsbuild",
"version": "2.1.41", "version": "2.1.75",
"private": false, "private": false,
"description": "TypeScript nightly to easily make use of latest features", "description": "TypeScript nightly to easily make use of latest features",
"main": "dist_ts/index.js", "main": "dist_ts/index.js",
"typings": "dist_ts/index.d.ts", "typings": "dist_ts/index.d.ts",
"type": "module",
"bin": { "bin": {
"tsbuild": "./cli.js" "tsbuild": "./cli.js"
}, },
"scripts": { "scripts": {
"test": "tsrun test/test.ts", "test": "tsrun test/test.ts",
"testCustom": "node cli.ts.js custom ts_web", "build": "node cli.ts.js --web --allowimplicitany",
"build": "node cli.ts.js --web" "buildDocs": "tsdoc"
}, },
"repository": { "repository": {
"type": "git", "type": "git",
@ -27,20 +28,19 @@
}, },
"homepage": "https://gitlab.com/pushrocks/tsn#README", "homepage": "https://gitlab.com/pushrocks/tsn#README",
"dependencies": { "dependencies": {
"@pushrocks/early": "^3.0.6", "@push.rocks/early": "^4.0.4",
"@pushrocks/smartcli": "^3.0.14", "@push.rocks/smartcli": "^4.0.10",
"@pushrocks/smartfile": "^9.0.6", "@push.rocks/smartdelay": "^3.0.5",
"@pushrocks/smartlog": "^2.0.44", "@push.rocks/smartfile": "^11.0.14",
"@pushrocks/smartpath": "^4.0.3", "@push.rocks/smartlog": "^3.0.3",
"@pushrocks/smartpromise": "^3.1.7", "@push.rocks/smartpath": "^5.0.18",
"typescript": "4.7.0-dev.20220311" "@push.rocks/smartpromise": "^4.0.3",
"typescript": "5.4.5"
}, },
"devDependencies": { "devDependencies": {
"@gitzone/tsrun": "1.2.18", "@git.zone/tsrun": "^1.2.46",
"@pushrocks/tapbundle": "^4.0.8", "@push.rocks/tapbundle": "^5.0.23",
"@types/node": "^17.0.21", "@types/node": "^20.12.11"
"tslint": "^6.1.3",
"tslint-config-prettier": "^1.18.0"
}, },
"files": [ "files": [
"ts/**/*", "ts/**/*",
@ -53,5 +53,8 @@
"cli.js", "cli.js",
"npmextra.json", "npmextra.json",
"readme.md" "readme.md"
],
"browserslist": [
"last 1 chrome versions"
] ]
} }

2343
pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -8,13 +8,19 @@ TypeScript nightly to easily make use of latest features
* [docs (typedoc)](https://gitzone.gitlab.io/tsbuild/) * [docs (typedoc)](https://gitzone.gitlab.io/tsbuild/)
## Status for master ## 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) Status Category | Status Badge
[![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) GitLab Pipelines | [![pipeline status](https://gitlab.com/gitzone/tsbuild/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/gitzone/tsbuild/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/@gitzone/tsbuild)](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/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)
## Usage ## Usage
@ -25,12 +31,12 @@ import * as tsn from 'tsn';
let myGlobStringObject = { let myGlobStringObject = {
'./myTsFolder/**/*.ts': './myDestinationFolder/', './myTsFolder/**/*.ts': './myDestinationFolder/',
'./someOtherTsFolder/**/*.ts': './myOtherDestinationFolder/' './someOtherTsFolder/**/*.ts': './myOtherDestinationFolder/',
}; };
let tsOptions = { let tsOptions = {
target: tsn.ScriptTarget.ES2015, target: tsn.ScriptTarget.ES2015,
module: tsn.ModuleKind.CommonJS module: tsn.ModuleKind.CommonJS,
}; };
/* /*
@ -73,7 +79,6 @@ We are always happy for code contributions. If you are not the code contributing
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) ## Legal
> MIT licensed | **©** [Task Venture Capital GmbH](https://task.vc)
| By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy) | By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy)
[![repo-footer](https://lossless.gitlab.io/publicrelations/repofooter.svg)](https://maintainedby.lossless.com)

View File

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

View File

@ -1,12 +1,12 @@
console.log('test'); console.log('test');
console.log('test2'); console.log('test2');
import * as early from '@pushrocks/early'; import * as early from '@push.rocks/early';
early.start(); early.start();
early.stop(); early.stop();
import {anExportedString} from './tocompile2'; import { anExportedString } from './tocompile2.js';
console.log(anExportedString); console.log(anExportedString);
class test2 { class test2 {

View File

@ -1,18 +1,18 @@
import { tap, expect, expectAsync } from '@pushrocks/tapbundle'; import { tap, expect, expectAsync } from '@push.rocks/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 assetfiles: string[] = ['./test/assets/tocompile.ts', './test/assets/tocompile2.ts'];
let assetfiles2 = { 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' }); 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); tsbuild.compileGlobStringObject(assetfiles2);
}); });

8
ts/00_commitinfo_data.ts Normal file
View File

@ -0,0 +1,8 @@
/**
* autocreated commitinfo by @pushrocks/commitinfo
*/
export const commitinfo = {
name: '@git.zone/tsbuild',
version: '2.1.75',
description: 'TypeScript nightly to easily make use of latest features'
}

View File

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

4
ts/paths.ts Normal file
View File

@ -0,0 +1,4 @@
import * as plugins from './plugins.js';
export const cwd = process.cwd();
export const packageDir = plugins.path.join(plugins.smartpath.get.dirnameFromImportMetaUrl(import.meta.url), '../');

22
ts/plugins.ts Normal file
View File

@ -0,0 +1,22 @@
// node native
import * as path from 'path';
export {
path
}
// @push.rocks scope
import * as smartcli from '@push.rocks/smartcli';
import * as smartdelay from '@push.rocks/smartdelay';
import * as smartfile from '@push.rocks/smartfile';
import * as smartpath from '@push.rocks/smartpath';
import * as smartpromise from '@push.rocks/smartpromise';
export { smartcli, smartdelay, smartfile, smartpath, smartpromise };
// third party scope
import typescript from 'typescript';
export {
typescript
}

View File

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

View File

@ -1,5 +1,6 @@
import * as plugins from './tsbuild.plugins'; import * as plugins from './plugins.js';
import * as tsbuild from './tsbuild.exports'; import * as paths from './paths.js';
import * as tsbuild from './tsbuild.exports.js';
export const runCli = async () => { export const runCli = async () => {
const tsbuildCli = new plugins.smartcli.Smartcli(); const tsbuildCli = new plugins.smartcli.Smartcli();
@ -7,7 +8,7 @@ export const runCli = async () => {
/** /**
* the standard task compiles anything in ts/ directory to dist directory * the standard task compiles anything in ts/ directory to dist directory
*/ */
tsbuildCli.standardTask().subscribe(async (argvArg) => { tsbuildCli.standardCommand().subscribe(async (argvArg) => {
tsbuild.compileGlobStringObject( tsbuild.compileGlobStringObject(
{ {
'./ts/**/*.ts': './dist_ts', './ts/**/*.ts': './dist_ts',
@ -23,7 +24,7 @@ export const runCli = async () => {
*/ */
tsbuildCli.addCommand('custom').subscribe(async (argvArg) => { tsbuildCli.addCommand('custom').subscribe(async (argvArg) => {
const listedDirectories = argvArg._; const listedDirectories = argvArg._;
listedDirectories.shift(); listedDirectories.shift(); // removes the first element that is "custom"
const compilationCommandObject: { [key: string]: string } = {}; const compilationCommandObject: { [key: string]: string } = {};
for (const directory of listedDirectories) { for (const directory of listedDirectories) {
compilationCommandObject[`./${directory}/**/*.ts`] = `./dist_${directory}`; compilationCommandObject[`./${directory}/**/*.ts`] = `./dist_${directory}`;
@ -31,15 +32,28 @@ export const runCli = async () => {
await tsbuild.compileGlobStringObject(compilationCommandObject, {}, process.cwd(), argvArg); await tsbuild.compileGlobStringObject(compilationCommandObject, {}, process.cwd(), argvArg);
}); });
tsbuildCli.addCommand('element').subscribe(async (argvArg) => { /**
await tsbuild.compileGlobStringObject( * the custom command compiles any customDir to dist_customDir
{ */
'./ts_web/**/*.ts': 'dist_ts_web', tsbuildCli.addCommand('tsfolders').subscribe(async (argvArg) => {
}, const tsFolders = await plugins.smartfile.fs.listFolders(paths.cwd, /^ts/)
{}, const compilationCommandObject: { [key: string]: string } = {};
process.cwd(), for (const tsFolder of tsFolders) {
{ web: true } compilationCommandObject[`./${tsFolder}/**/*.ts`] = `./dist_${tsFolder}`;
); }
await tsbuild.compileGlobStringObject(compilationCommandObject, {}, process.cwd(), argvArg);
});
/**
* the custom command compiles any customDir to dist_customDir
*/
tsbuildCli.addCommand('interfaces').subscribe(async (argvArg) => {
const tsFolders = ['ts_interfaces']
const compilationCommandObject: { [key: string]: string } = {};
for (const tsFolder of tsFolders) {
compilationCommandObject[`./${tsFolder}/**/*.ts`] = `./dist_${tsFolder}`;
}
await tsbuild.compileGlobStringObject(compilationCommandObject, {}, process.cwd(), argvArg);
}); });
tsbuildCli.startParse(); tsbuildCli.startParse();

View File

@ -1,7 +1,10 @@
import * as plugins from './tsbuild.plugins'; import * as plugins from './plugins.js';
import { compiler, CompilerOptions, mergeCompilerOptions } from './tsbuild.classes.compiler'; 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 * compile am array of absolute file paths
@ -27,7 +30,7 @@ export let compileGlobStringObject = async (
cwdArg: string = process.cwd(), cwdArg: string = process.cwd(),
argvArg?: any argvArg?: any
) => { ) => {
let compiledFiles: plugins.smartfile.Smartfile[] = []; let compiledFiles: plugins.smartfile.SmartFile[] = [];
for (const keyArg in globStringObjectArg) { for (const keyArg in globStringObjectArg) {
if (globStringObjectArg[keyArg]) { if (globStringObjectArg[keyArg]) {
console.log( console.log(
@ -37,14 +40,14 @@ export let compileGlobStringObject = async (
const absoluteFilePathArray: string[] = plugins.smartpath.transform.toAbsolute( const absoluteFilePathArray: string[] = plugins.smartpath.transform.toAbsolute(
fileTreeArray, fileTreeArray,
cwdArg cwdArg
); ) as string[];
const destDir: string = plugins.smartpath.transform.toAbsolute( const destDir: string = plugins.smartpath.transform.toAbsolute(
globStringObjectArg[keyArg], globStringObjectArg[keyArg],
cwdArg cwdArg
); ) as string;
tsOptionsArg = { tsOptionsArg = {
...tsOptionsArg, ...tsOptionsArg,
outDir: destDir outDir: destDir,
}; };
compiledFiles = compiledFiles.concat( compiledFiles = compiledFiles.concat(
compiledFiles, compiledFiles,

View File

@ -1,7 +0,0 @@
import * as smartcli from '@pushrocks/smartcli';
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 };

11
tsconfig.json Normal file
View File

@ -0,0 +1,11 @@
{
"compilerOptions": {
"experimentalDecorators": true,
"useDefineForClassFields": false,
"target": "ES2022",
"module": "NodeNext",
"moduleResolution": "NodeNext",
"esModuleInterop": true,
"verbatimModuleSyntax": true
}
}

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