Compare commits
22 Commits
Author | SHA1 | Date | |
---|---|---|---|
9e55126adf | |||
5271f0153e | |||
ba0aaf2793 | |||
1f46e387e7 | |||
03625bfca4 | |||
cc92e3e9ca | |||
c1e66d498a | |||
bfbb802e88 | |||
655fd8b92e | |||
a240cdfde1 | |||
2af7682cf0 | |||
c62619bd27 | |||
ffaf54f1de | |||
2c6b955819 | |||
9bb13e1ede | |||
d9bd5e5340 | |||
b76de3e04d | |||
808726d1df | |||
d011f10b9b | |||
d1baa20aad | |||
71779693d7 | |||
1113251aea |
4
cli.child.ts
Normal file
4
cli.child.ts
Normal file
@ -0,0 +1,4 @@
|
||||
#!/usr/bin/env node
|
||||
process.env.CLI_CALL = 'true';
|
||||
import * as cliTool from './ts/index.js';
|
||||
cliTool.runCli();
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env node
|
||||
process.env.CLI_CALL = 'true';
|
||||
await import('@gitzone/tsrun');
|
||||
const cliTool = await import('./ts/index.js');
|
||||
cliTool.runCli();
|
||||
|
||||
import * as tsrun from '@gitzone/tsrun';
|
||||
tsrun.runPath('./cli.child.js', import.meta.url);
|
||||
|
1305
package-lock.json
generated
1305
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
16
package.json
16
package.json
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@gitzone/tsrun",
|
||||
"version": "1.2.26",
|
||||
"version": "1.2.37",
|
||||
"description": "run typescript programs efficiently",
|
||||
"main": "dist_ts/index.js",
|
||||
"typings": "dist_ts/index.d.ts",
|
||||
@ -16,18 +16,16 @@
|
||||
"build": "(tsbuild)"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@gitzone/tsbuild": "^2.1.43",
|
||||
"@gitzone/tsbuild": "^2.1.63",
|
||||
"@pushrocks/smartcli": "^3.0.14",
|
||||
"@types/node": "^17.0.21",
|
||||
"node-fetch": "^3.2.2",
|
||||
"tslint": "^6.1.2",
|
||||
"tslint-config-prettier": "^1.18.0"
|
||||
"@types/node": "^17.0.42",
|
||||
"node-fetch": "^3.2.6"
|
||||
},
|
||||
"dependencies": {
|
||||
"@pushrocks/smartfile": "^9.0.6",
|
||||
"@pushrocks/smartfile": "^10.0.2",
|
||||
"@pushrocks/smartshell": "^2.0.30",
|
||||
"ts-node": "^10.7.0",
|
||||
"typescript": "4.7.0-dev.20220311"
|
||||
"ts-node": "^10.8.1",
|
||||
"typescript": "^4.7.3"
|
||||
},
|
||||
"private": false,
|
||||
"files": [
|
||||
|
8
ts/00_commitinfo_data.ts
Normal file
8
ts/00_commitinfo_data.ts
Normal file
@ -0,0 +1,8 @@
|
||||
/**
|
||||
* autocreated commitinfo by @pushrocks/commitinfo
|
||||
*/
|
||||
export const commitinfo = {
|
||||
name: '@gitzone/tsrun',
|
||||
version: '1.2.37',
|
||||
description: 'run typescript programs efficiently'
|
||||
}
|
39
ts/index.ts
39
ts/index.ts
@ -1,35 +1,42 @@
|
||||
import * as plugins from './plugins.js';
|
||||
const __dirname = plugins.path.dirname(plugins.url.fileURLToPath(import.meta.url));
|
||||
|
||||
import { dirname } from 'path';
|
||||
import { fileURLToPath } from 'url';
|
||||
|
||||
const __dirname = dirname(fileURLToPath(import.meta.url));
|
||||
|
||||
export const runPath = async (pathArg: string) => {
|
||||
export const runPath = async (pathArg: string, fromFileUrl?: string) => {
|
||||
pathArg = fromFileUrl
|
||||
? plugins.path.join(plugins.path.dirname(plugins.url.fileURLToPath(fromFileUrl)), pathArg)
|
||||
: pathArg;
|
||||
await runCli(pathArg);
|
||||
}
|
||||
};
|
||||
|
||||
export const runCli = async (pathArg?: string) => {
|
||||
// contents of argv array
|
||||
// process.argv[0] -> node Executable
|
||||
// process.argv[1] -> tsrun executable
|
||||
const relativePathToTsFile = pathArg ? pathArg : process.argv[2];
|
||||
const absolutePathToTsFile = plugins.path.join(process.cwd(), relativePathToTsFile);
|
||||
|
||||
|
||||
process.argv.splice(0, 3); // this ensures transparent arguments for the child process
|
||||
const absolutePathToTsFile = plugins.path.isAbsolute(relativePathToTsFile)
|
||||
? relativePathToTsFile
|
||||
: plugins.path.join(process.cwd(), relativePathToTsFile);
|
||||
|
||||
// we want to have command line arguments available in the child process.
|
||||
// when we have a path sepcified through a function there is one argeument less to pay respect to.
|
||||
// thus when pathArg is specifed -> we only splice 2
|
||||
pathArg ? process.argv.splice(0, 2) : process.argv.splice(0, 3); // this ensures transparent arguments for the child process
|
||||
|
||||
// lets setup things for execution
|
||||
const smartshellInstance = new plugins.smartshell.Smartshell({
|
||||
executor: 'bash'
|
||||
executor: 'bash',
|
||||
});
|
||||
|
||||
const tsNodeLoaderPath = plugins.path.join(__dirname, 'loader.js')
|
||||
const tsNodeLoaderPath = plugins.path.join(__dirname, 'loader.js');
|
||||
// note: -> reduce on emtpy array does not work
|
||||
// thus check needed before reducing the argv array
|
||||
smartshellInstance.exec(`node --loader ${tsNodeLoaderPath} ${absolutePathToTsFile} ${process.argv.length > 0 ? process.argv.reduce((prevArg, currentArg) => {
|
||||
smartshellInstance.exec(
|
||||
`node --loader ${tsNodeLoaderPath} ${absolutePathToTsFile} ${
|
||||
process.argv.length > 0
|
||||
? process.argv.reduce((prevArg, currentArg) => {
|
||||
return prevArg + ' ' + currentArg;
|
||||
}) : ''}`);
|
||||
|
||||
})
|
||||
: ''
|
||||
}`
|
||||
);
|
||||
};
|
||||
|
@ -4,11 +4,12 @@ import type { CompilerOptions } from 'typescript';
|
||||
const defaultTsNodeOptions: plugins.tsNode.CreateOptions = {
|
||||
compilerOptions: {
|
||||
lib: ['dom'],
|
||||
target: <any>'es2020', // Script Target should be a string -> 2 is for ES2015
|
||||
target: <any>'es2022', // Script Target should be a string -> 2 is for ES2015
|
||||
experimentalDecorators: true,
|
||||
useDefineForClassFields: false,
|
||||
esModuleInterop: true,
|
||||
strictNullChecks: false,
|
||||
moduleResolution: <any>'node12',
|
||||
moduleResolution: <any>'nodenext',
|
||||
module: <any>'ESNext',
|
||||
importsNotUsedAsValues: <any>'preserve',
|
||||
} as CompilerOptions,
|
||||
|
@ -1,3 +1,12 @@
|
||||
// node native
|
||||
import * as path from 'path';
|
||||
import * as url from 'url';
|
||||
|
||||
export {
|
||||
path,
|
||||
url
|
||||
}
|
||||
|
||||
// @pushrocks scope
|
||||
import * as smartshell from '@pushrocks/smartshell';
|
||||
|
||||
@ -6,10 +15,8 @@ export {
|
||||
}
|
||||
|
||||
// third party scope
|
||||
import * as path from 'path';
|
||||
import * as tsNode from 'ts-node';
|
||||
|
||||
export {
|
||||
path,
|
||||
tsNode
|
||||
}
|
@ -1,7 +1,9 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"experimentalDecorators": true,
|
||||
"useDefineForClassFields": false,
|
||||
"target": "ES2022",
|
||||
"module": "ES2022",
|
||||
"target": "ES2020",
|
||||
"moduleResolution": "Node12"
|
||||
"moduleResolution": "nodenext"
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user