@git.zone/tswatch 2.2.0 → 2.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/tswatch.classes.tswatch.js +14 -3
- package/dist_ts/tswatch.classes.watcher.d.ts +1 -1
- package/dist_ts/tswatch.classes.watcher.js +6 -6
- package/dist_ts/tswatch.plugins.d.ts +3 -3
- package/dist_ts/tswatch.plugins.js +4 -4
- package/package.json +14 -14
- package/readme.hints.md +8 -2
- package/readme.md +56 -10
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/tswatch.classes.tswatch.ts +15 -2
- package/ts/tswatch.classes.watcher.ts +5 -5
- package/ts/tswatch.plugins.ts +4 -4
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@git.zone/tswatch',
|
|
6
|
-
version: '2.
|
|
6
|
+
version: '2.2.2',
|
|
7
7
|
description: 'A development tool for automatically watching and re-compiling TypeScript projects upon detecting file changes, enhancing developer workflows.'
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxtQkFBbUI7SUFDekIsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLGdKQUFnSjtDQUM5SixDQUFBIn0=
|
|
@@ -3,6 +3,17 @@ import * as paths from './tswatch.paths.js';
|
|
|
3
3
|
import * as interfaces from './interfaces/index.js';
|
|
4
4
|
import { Watcher } from './tswatch.classes.watcher.js';
|
|
5
5
|
import { logger } from './tswatch.logging.js';
|
|
6
|
+
// Create smartfs instance for directory operations
|
|
7
|
+
const smartfs = new plugins.smartfs.SmartFs(new plugins.smartfs.SmartFsProviderNode());
|
|
8
|
+
/**
|
|
9
|
+
* Lists all folders in a directory
|
|
10
|
+
*/
|
|
11
|
+
const listFolders = async (dirPath) => {
|
|
12
|
+
const entries = await smartfs.directory(dirPath).list();
|
|
13
|
+
return entries
|
|
14
|
+
.filter((entry) => entry.isDirectory)
|
|
15
|
+
.map((entry) => entry.name);
|
|
16
|
+
};
|
|
6
17
|
export class TsWatch {
|
|
7
18
|
constructor(watchmodeArg) {
|
|
8
19
|
this.watcherMap = new plugins.lik.ObjectMap();
|
|
@@ -62,7 +73,7 @@ export class TsWatch {
|
|
|
62
73
|
timeout: null,
|
|
63
74
|
}));
|
|
64
75
|
// lets get the other ts folders
|
|
65
|
-
let tsfolders = await
|
|
76
|
+
let tsfolders = await listFolders(paths.cwd);
|
|
66
77
|
tsfolders = tsfolders.filter((itemArg) => itemArg.startsWith('ts') && itemArg !== 'ts_web');
|
|
67
78
|
const smartshellInstance = new plugins.smartshell.Smartshell({
|
|
68
79
|
executor: 'bash',
|
|
@@ -101,7 +112,7 @@ export class TsWatch {
|
|
|
101
112
|
bundler: 'esbuild',
|
|
102
113
|
});
|
|
103
114
|
};
|
|
104
|
-
let tsfolders = await
|
|
115
|
+
let tsfolders = await listFolders(paths.cwd);
|
|
105
116
|
tsfolders = tsfolders.filter((itemArg) => itemArg.startsWith('ts') && itemArg !== 'ts_web');
|
|
106
117
|
for (const tsfolder of tsfolders) {
|
|
107
118
|
this.watcherMap.add(new Watcher({
|
|
@@ -179,4 +190,4 @@ export class TsWatch {
|
|
|
179
190
|
});
|
|
180
191
|
}
|
|
181
192
|
}
|
|
182
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
193
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHN3YXRjaC5jbGFzc2VzLnRzd2F0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy90c3dhdGNoLmNsYXNzZXMudHN3YXRjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxLQUFLLE1BQU0sb0JBQW9CLENBQUM7QUFDNUMsT0FBTyxLQUFLLFVBQVUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTlDLG1EQUFtRDtBQUNuRCxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUM7QUFFdkY7O0dBRUc7QUFDSCxNQUFNLFdBQVcsR0FBRyxLQUFLLEVBQUUsT0FBZSxFQUFxQixFQUFFO0lBQy9ELE1BQU0sT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4RCxPQUFPLE9BQU87U0FDWCxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7U0FDcEMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDaEMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxPQUFPLE9BQU87SUFLbEIsWUFBWSxZQUFvQztRQUh6QyxlQUFVLEdBQUcsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBVyxDQUFDO1FBSXZELElBQUksQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtB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
|
|
@@ -11,7 +11,7 @@ export class Watcher {
|
|
|
11
11
|
this.smartshellInstance = new plugins.smartshell.Smartshell({
|
|
12
12
|
executor: 'bash',
|
|
13
13
|
});
|
|
14
|
-
this.
|
|
14
|
+
this.smartwatchInstance = new plugins.smartwatch.Smartwatch([]);
|
|
15
15
|
this.options = optionsArg;
|
|
16
16
|
}
|
|
17
17
|
/**
|
|
@@ -21,9 +21,9 @@ export class Watcher {
|
|
|
21
21
|
logger.log('info', `trying to start watcher for ${this.options.filePathToWatch}`);
|
|
22
22
|
await this.setupCleanup();
|
|
23
23
|
console.log(`Looking at ${this.options.filePathToWatch} for changes`);
|
|
24
|
-
this.
|
|
25
|
-
await this.
|
|
26
|
-
const changeObservable = await this.
|
|
24
|
+
this.smartwatchInstance.add([this.options.filePathToWatch]); // __dirname refers to the directory of this very file
|
|
25
|
+
await this.smartwatchInstance.start();
|
|
26
|
+
const changeObservable = await this.smartwatchInstance.getObservableFor('change');
|
|
27
27
|
changeObservable.subscribe(() => {
|
|
28
28
|
this.updateCurrentExecution();
|
|
29
29
|
});
|
|
@@ -83,10 +83,10 @@ export class Watcher {
|
|
|
83
83
|
* stops the watcher
|
|
84
84
|
*/
|
|
85
85
|
async stop() {
|
|
86
|
-
await this.
|
|
86
|
+
await this.smartwatchInstance.stop();
|
|
87
87
|
if (this.currentExecution && !this.currentExecution.childProcess.killed) {
|
|
88
88
|
this.currentExecution.kill();
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHN3YXRjaC5jbGFzc2VzLndhdGNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy90c3dhdGNoLmNsYXNzZXMud2F0Y2hlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQVM5Qzs7R0FFRztBQUNILE1BQU0sT0FBTyxPQUFPO0lBWWxCLFlBQVksVUFBc0M7UUFYbEQ7O1dBRUc7UUFDSyx1QkFBa0IsR0FBRyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDO1lBQzdELFFBQVEsRUFBRSxNQUFNO1NBQ2pCLENBQUMsQ0FBQztRQUdLLHVCQUFrQixHQUFHLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7UUFJakUsSUFBSSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUM7SUFDNUIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLEtBQUs7UUFDaEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsK0JBQStCLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztRQUNsRixNQUFNLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMxQixPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLGNBQWMsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxzREFBc0Q7UUFDbkgsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdEMsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0Is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
|
|
@@ -5,12 +5,12 @@ export { tsbundle };
|
|
|
5
5
|
import * as typedserver from '@api.global/typedserver';
|
|
6
6
|
export { typedserver };
|
|
7
7
|
import * as lik from '@push.rocks/lik';
|
|
8
|
-
import * as smartchok from '@push.rocks/smartchok';
|
|
9
8
|
import * as smartcli from '@push.rocks/smartcli';
|
|
10
9
|
import * as smartdelay from '@push.rocks/smartdelay';
|
|
11
|
-
import * as
|
|
10
|
+
import * as smartfs from '@push.rocks/smartfs';
|
|
12
11
|
import * as smartlog from '@push.rocks/smartlog';
|
|
13
12
|
import * as smartlogDestinationLocal from '@push.rocks/smartlog-destination-local';
|
|
14
13
|
import * as smartshell from '@push.rocks/smartshell';
|
|
14
|
+
import * as smartwatch from '@push.rocks/smartwatch';
|
|
15
15
|
import * as taskbuffer from '@push.rocks/taskbuffer';
|
|
16
|
-
export { lik,
|
|
16
|
+
export { lik, smartcli, smartdelay, smartfs, smartlog, smartlogDestinationLocal, smartshell, smartwatch, taskbuffer, };
|
|
@@ -9,13 +9,13 @@ import * as typedserver from '@api.global/typedserver';
|
|
|
9
9
|
export { typedserver };
|
|
10
10
|
// @pushrocks scope
|
|
11
11
|
import * as lik from '@push.rocks/lik';
|
|
12
|
-
import * as smartchok from '@push.rocks/smartchok';
|
|
13
12
|
import * as smartcli from '@push.rocks/smartcli';
|
|
14
13
|
import * as smartdelay from '@push.rocks/smartdelay';
|
|
15
|
-
import * as
|
|
14
|
+
import * as smartfs from '@push.rocks/smartfs';
|
|
16
15
|
import * as smartlog from '@push.rocks/smartlog';
|
|
17
16
|
import * as smartlogDestinationLocal from '@push.rocks/smartlog-destination-local';
|
|
18
17
|
import * as smartshell from '@push.rocks/smartshell';
|
|
18
|
+
import * as smartwatch from '@push.rocks/smartwatch';
|
|
19
19
|
import * as taskbuffer from '@push.rocks/taskbuffer';
|
|
20
|
-
export { lik,
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
export { lik, smartcli, smartdelay, smartfs, smartlog, smartlogDestinationLocal, smartshell, smartwatch, taskbuffer, };
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHN3YXRjaC5wbHVnaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvdHN3YXRjaC5wbHVnaW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9CQUFvQjtBQUNwQixPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFFaEIsaUJBQWlCO0FBQ2pCLE9BQU8sS0FBSyxRQUFRLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFDO0FBRXBCLG1CQUFtQjtBQUNuQixPQUFPLEtBQUssV0FBVyxNQUFNLHlCQUF5QixDQUFDO0FBRXZELE9BQU8sRUFBRSxXQUFXLEVBQUUsQ0FBQztBQUV2QixtQkFBbUI7QUFDbkIsT0FBTyxLQUFLLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEtBQUssUUFBUSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sS0FBSyxVQUFVLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxLQUFLLE9BQU8sTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEtBQUssUUFBUSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sS0FBSyx3QkFBd0IsTUFBTSx3Q0FBd0MsQ0FBQztBQUNuRixPQUFPLEtBQUssVUFBVSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sS0FBSyxVQUFVLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxLQUFLLFVBQVUsTUFBTSx3QkFBd0IsQ0FBQztBQUVyRCxPQUFPLEVBQ0wsR0FBRyxFQUNILFFBQVEsRUFDUixVQUFVLEVBQ1YsT0FBTyxFQUNQLFFBQVEsRUFDUix3QkFBd0IsRUFDeEIsVUFBVSxFQUNWLFVBQVUsRUFDVixVQUFVLEdBQ1gsQ0FBQyJ9
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@git.zone/tswatch",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.2",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "A development tool for automatically watching and re-compiling TypeScript projects upon detecting file changes, enhancing developer workflows.",
|
|
6
6
|
"exports": {
|
|
7
|
-
"
|
|
7
|
+
".": "./dist_ts/index.js"
|
|
8
8
|
},
|
|
9
9
|
"type": "module",
|
|
10
10
|
"author": "Lossless GmbH",
|
|
@@ -13,24 +13,24 @@
|
|
|
13
13
|
"tswatch": "cli.js"
|
|
14
14
|
},
|
|
15
15
|
"devDependencies": {
|
|
16
|
-
"@git.zone/tsbuild": "^
|
|
17
|
-
"@git.zone/tstest": "^
|
|
18
|
-
"@types/node": "^
|
|
16
|
+
"@git.zone/tsbuild": "^3.1.2",
|
|
17
|
+
"@git.zone/tstest": "^3.1.3",
|
|
18
|
+
"@types/node": "^24.10.1"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@api.global/typedserver": "^3.0.
|
|
22
|
-
"@git.zone/tsbundle": "^2.
|
|
23
|
-
"@git.zone/tsrun": "^
|
|
21
|
+
"@api.global/typedserver": "^3.0.80",
|
|
22
|
+
"@git.zone/tsbundle": "^2.6.2",
|
|
23
|
+
"@git.zone/tsrun": "^2.0.0",
|
|
24
24
|
"@push.rocks/early": "^4.0.4",
|
|
25
25
|
"@push.rocks/lik": "^6.2.2",
|
|
26
|
-
"@push.rocks/
|
|
27
|
-
"@push.rocks/smartcli": "^4.0.11",
|
|
26
|
+
"@push.rocks/smartcli": "^4.0.19",
|
|
28
27
|
"@push.rocks/smartdelay": "^3.0.5",
|
|
29
|
-
"@push.rocks/
|
|
30
|
-
"@push.rocks/smartlog": "^3.1.
|
|
28
|
+
"@push.rocks/smartfs": "^1.1.3",
|
|
29
|
+
"@push.rocks/smartlog": "^3.1.10",
|
|
31
30
|
"@push.rocks/smartlog-destination-local": "^9.0.2",
|
|
32
|
-
"@push.rocks/smartshell": "^3.
|
|
33
|
-
"@push.rocks/
|
|
31
|
+
"@push.rocks/smartshell": "^3.3.0",
|
|
32
|
+
"@push.rocks/smartwatch": "^5.0.0",
|
|
33
|
+
"@push.rocks/taskbuffer": "^3.4.0"
|
|
34
34
|
},
|
|
35
35
|
"files": [
|
|
36
36
|
"ts/**/*",
|
package/readme.hints.md
CHANGED
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
6. **echo**: Test mode that runs `npm -v` (for testing)
|
|
15
15
|
|
|
16
16
|
## Key Implementation Details
|
|
17
|
-
- Uses `@push.rocks/
|
|
17
|
+
- Uses `@push.rocks/smartwatch` (v5.x) for file watching - class is `Smartwatch`
|
|
18
|
+
- Uses `@push.rocks/smartfs` (v1.x) for directory operations - uses `SmartFs` with `SmartFsProviderNode`
|
|
18
19
|
- Uses `@git.zone/tsbundle` for bundling with esbuild
|
|
19
20
|
- Uses `@api.global/typedserver` for development server in element mode
|
|
20
21
|
- Element/website modes watch multiple `ts*/` directories
|
|
@@ -41,4 +42,9 @@
|
|
|
41
42
|
## Common Issues to Watch For
|
|
42
43
|
- The test mode runs `test2` script, not `test`
|
|
43
44
|
- Website mode restarts the entire server process on backend changes
|
|
44
|
-
- Element mode rebuilds and reloads on any ts* folder change
|
|
45
|
+
- Element mode rebuilds and reloads on any ts* folder change
|
|
46
|
+
|
|
47
|
+
## Migration Notes (v2.2.x)
|
|
48
|
+
- Replaced `@push.rocks/smartchok` with `@push.rocks/smartwatch` (v5.x)
|
|
49
|
+
- Replaced `@push.rocks/smartfile` with `@push.rocks/smartfs` for directory listing
|
|
50
|
+
- Class names: `Smartwatch` for file watching, `SmartFs` + `SmartFsProviderNode` for filesystem ops
|
package/readme.md
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
A TypeScript file watcher that automatically recompiles and executes your project when files change. Designed to streamline development workflows for various TypeScript project types.
|
|
4
4
|
|
|
5
|
+
## Issue Reporting and Security
|
|
6
|
+
|
|
7
|
+
For reporting bugs, issues, or security vulnerabilities, please visit [community.foss.global/](https://community.foss.global/). This is the central community hub for all issue reporting. Developers who sign and comply with our contribution agreement and go through identification can also get a [code.foss.global/](https://code.foss.global/) account to submit Pull Requests directly.
|
|
8
|
+
|
|
5
9
|
## Features
|
|
6
10
|
|
|
7
11
|
- 🔄 **Automatic recompilation** on file changes
|
|
@@ -11,11 +15,6 @@ A TypeScript file watcher that automatically recompiles and executes your projec
|
|
|
11
15
|
- 🛠️ **Flexible CLI and programmatic API**
|
|
12
16
|
- 📦 **Zero configuration** for standard project structures
|
|
13
17
|
|
|
14
|
-
## Prerequisites
|
|
15
|
-
|
|
16
|
-
- Node.js (v14 or higher)
|
|
17
|
-
- pnpm (recommended) or npm
|
|
18
|
-
|
|
19
18
|
## Installation
|
|
20
19
|
|
|
21
20
|
Install `@git.zone/tswatch` globally or as a development dependency:
|
|
@@ -44,6 +43,7 @@ tswatch service
|
|
|
44
43
|
## CLI Commands
|
|
45
44
|
|
|
46
45
|
### `tswatch` or `tswatch npm`
|
|
46
|
+
|
|
47
47
|
Watches TypeScript files and runs `npm test` on changes. This is the default mode.
|
|
48
48
|
|
|
49
49
|
```bash
|
|
@@ -53,6 +53,7 @@ tswatch npm
|
|
|
53
53
|
```
|
|
54
54
|
|
|
55
55
|
### `tswatch element`
|
|
56
|
+
|
|
56
57
|
Sets up a development environment for web components/elements:
|
|
57
58
|
- Starts a dev server on port 3002
|
|
58
59
|
- Bundles TypeScript to `dist_watch/`
|
|
@@ -64,6 +65,7 @@ tswatch element
|
|
|
64
65
|
```
|
|
65
66
|
|
|
66
67
|
### `tswatch service`
|
|
68
|
+
|
|
67
69
|
Watches TypeScript files in `./ts/` and runs `npm run startTs` on changes. Ideal for backend services.
|
|
68
70
|
|
|
69
71
|
```bash
|
|
@@ -71,6 +73,7 @@ tswatch service
|
|
|
71
73
|
```
|
|
72
74
|
|
|
73
75
|
### `tswatch website`
|
|
76
|
+
|
|
74
77
|
Full website development mode:
|
|
75
78
|
- Bundles TypeScript files to `dist_serve/`
|
|
76
79
|
- Processes HTML files
|
|
@@ -82,6 +85,7 @@ tswatch website
|
|
|
82
85
|
```
|
|
83
86
|
|
|
84
87
|
### `tswatch test`
|
|
88
|
+
|
|
85
89
|
Runs `npm run test2` whenever files change. Useful for projects with custom test scripts.
|
|
86
90
|
|
|
87
91
|
```bash
|
|
@@ -93,6 +97,7 @@ tswatch test
|
|
|
93
97
|
tswatch expects certain project structures depending on the mode:
|
|
94
98
|
|
|
95
99
|
### NPM/Node Projects
|
|
100
|
+
|
|
96
101
|
```
|
|
97
102
|
project/
|
|
98
103
|
├── ts/ # TypeScript source files
|
|
@@ -101,6 +106,7 @@ project/
|
|
|
101
106
|
```
|
|
102
107
|
|
|
103
108
|
### Element Projects
|
|
109
|
+
|
|
104
110
|
```
|
|
105
111
|
project/
|
|
106
112
|
├── ts/ # Backend TypeScript
|
|
@@ -111,6 +117,7 @@ project/
|
|
|
111
117
|
```
|
|
112
118
|
|
|
113
119
|
### Website Projects
|
|
120
|
+
|
|
114
121
|
```
|
|
115
122
|
project/
|
|
116
123
|
├── ts/ # Backend TypeScript
|
|
@@ -137,8 +144,23 @@ await watcher.start();
|
|
|
137
144
|
await watcher.stop();
|
|
138
145
|
```
|
|
139
146
|
|
|
147
|
+
### Available Watch Modes
|
|
148
|
+
|
|
149
|
+
The `TsWatch` class accepts the following modes:
|
|
150
|
+
|
|
151
|
+
| Mode | Description |
|
|
152
|
+
|------|-------------|
|
|
153
|
+
| `node` | Runs `npm test` on changes (default) |
|
|
154
|
+
| `test` | Runs `npm run test2` on changes |
|
|
155
|
+
| `element` | Web component development with dev server |
|
|
156
|
+
| `service` | Runs `npm run startTs` for services |
|
|
157
|
+
| `website` | Full website mode with bundling |
|
|
158
|
+
| `echo` | Test mode that runs `npm -v` |
|
|
159
|
+
|
|
140
160
|
### Custom Watchers
|
|
141
161
|
|
|
162
|
+
For more granular control, use the `Watcher` class directly:
|
|
163
|
+
|
|
142
164
|
```typescript
|
|
143
165
|
import { Watcher } from '@git.zone/tswatch';
|
|
144
166
|
|
|
@@ -154,6 +176,8 @@ await customWatcher.start();
|
|
|
154
176
|
### Using Function Callbacks
|
|
155
177
|
|
|
156
178
|
```typescript
|
|
179
|
+
import { Watcher } from '@git.zone/tswatch';
|
|
180
|
+
|
|
157
181
|
const watcher = new Watcher({
|
|
158
182
|
filePathToWatch: './src',
|
|
159
183
|
functionToCall: async () => {
|
|
@@ -161,8 +185,19 @@ const watcher = new Watcher({
|
|
|
161
185
|
// Your custom logic here
|
|
162
186
|
}
|
|
163
187
|
});
|
|
188
|
+
|
|
189
|
+
await watcher.start();
|
|
164
190
|
```
|
|
165
191
|
|
|
192
|
+
### Watcher Options
|
|
193
|
+
|
|
194
|
+
| Option | Type | Description |
|
|
195
|
+
|--------|------|-------------|
|
|
196
|
+
| `filePathToWatch` | `string` | Path to watch for changes |
|
|
197
|
+
| `commandToExecute` | `string` | Shell command to run on changes |
|
|
198
|
+
| `functionToCall` | `() => Promise<any>` | Async function to call on changes |
|
|
199
|
+
| `timeout` | `number` | Optional timeout in milliseconds |
|
|
200
|
+
|
|
166
201
|
## Development Server
|
|
167
202
|
|
|
168
203
|
Element mode includes a built-in development server:
|
|
@@ -178,6 +213,7 @@ Access your project at `http://localhost:3002` when running in element mode.
|
|
|
178
213
|
1. **TypeScript Config**: Ensure your `tsconfig.json` is properly configured for your target environment
|
|
179
214
|
2. **Package Scripts**: Define appropriate scripts in `package.json`:
|
|
180
215
|
- `test`: For npm mode
|
|
216
|
+
- `test2`: For test mode
|
|
181
217
|
- `startTs`: For service/website modes
|
|
182
218
|
- `build`: For general compilation
|
|
183
219
|
|
|
@@ -186,44 +222,54 @@ Access your project at `http://localhost:3002` when running in element mode.
|
|
|
186
222
|
## Common Use Cases
|
|
187
223
|
|
|
188
224
|
### Developing a Node.js Library
|
|
225
|
+
|
|
189
226
|
```bash
|
|
190
227
|
tswatch npm
|
|
191
228
|
```
|
|
229
|
+
|
|
192
230
|
Automatically runs tests when you modify source files.
|
|
193
231
|
|
|
194
232
|
### Building a Web Component
|
|
233
|
+
|
|
195
234
|
```bash
|
|
196
235
|
tswatch element
|
|
197
236
|
```
|
|
237
|
+
|
|
198
238
|
Get instant feedback with live reload while developing custom elements.
|
|
199
239
|
|
|
200
240
|
### Creating a Backend Service
|
|
241
|
+
|
|
201
242
|
```bash
|
|
202
243
|
tswatch service
|
|
203
244
|
```
|
|
245
|
+
|
|
204
246
|
Automatically restart your service on code changes.
|
|
205
247
|
|
|
206
248
|
### Full-Stack Web Application
|
|
249
|
+
|
|
207
250
|
```bash
|
|
208
251
|
tswatch website
|
|
209
252
|
```
|
|
253
|
+
|
|
210
254
|
Handle both frontend and backend compilation with asset processing.
|
|
211
255
|
|
|
212
256
|
## License and Legal Information
|
|
213
257
|
|
|
214
|
-
This repository contains open-source code
|
|
258
|
+
This repository contains open-source code licensed under the MIT License. A copy of the license can be found in the [LICENSE](./LICENSE) file.
|
|
215
259
|
|
|
216
260
|
**Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.
|
|
217
261
|
|
|
218
262
|
### Trademarks
|
|
219
263
|
|
|
220
|
-
This project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH and are not included within the scope of the MIT license granted herein.
|
|
264
|
+
This project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH or third parties, and are not included within the scope of the MIT license granted herein.
|
|
265
|
+
|
|
266
|
+
Use of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines or the guidelines of the respective third-party owners, and any usage must be approved in writing. Third-party trademarks used herein are the property of their respective owners and used only in a descriptive manner, e.g. for an implementation of an API or similar.
|
|
221
267
|
|
|
222
268
|
### Company Information
|
|
223
269
|
|
|
224
|
-
Task Venture Capital GmbH
|
|
225
|
-
Registered at District
|
|
270
|
+
Task Venture Capital GmbH
|
|
271
|
+
Registered at District Court Bremen HRB 35230 HB, Germany
|
|
226
272
|
|
|
227
|
-
For any legal inquiries or
|
|
273
|
+
For any legal inquiries or further information, please contact us via email at hello@task.vc.
|
|
228
274
|
|
|
229
275
|
By using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.
|
package/ts/00_commitinfo_data.ts
CHANGED
|
@@ -5,6 +5,19 @@ import * as interfaces from './interfaces/index.js';
|
|
|
5
5
|
import { Watcher } from './tswatch.classes.watcher.js';
|
|
6
6
|
import { logger } from './tswatch.logging.js';
|
|
7
7
|
|
|
8
|
+
// Create smartfs instance for directory operations
|
|
9
|
+
const smartfs = new plugins.smartfs.SmartFs(new plugins.smartfs.SmartFsProviderNode());
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Lists all folders in a directory
|
|
13
|
+
*/
|
|
14
|
+
const listFolders = async (dirPath: string): Promise<string[]> => {
|
|
15
|
+
const entries = await smartfs.directory(dirPath).list();
|
|
16
|
+
return entries
|
|
17
|
+
.filter((entry) => entry.isDirectory)
|
|
18
|
+
.map((entry) => entry.name);
|
|
19
|
+
};
|
|
20
|
+
|
|
8
21
|
export class TsWatch {
|
|
9
22
|
public watchmode: interfaces.TWatchModes;
|
|
10
23
|
public watcherMap = new plugins.lik.ObjectMap<Watcher>();
|
|
@@ -79,7 +92,7 @@ export class TsWatch {
|
|
|
79
92
|
);
|
|
80
93
|
|
|
81
94
|
// lets get the other ts folders
|
|
82
|
-
let tsfolders = await
|
|
95
|
+
let tsfolders = await listFolders(paths.cwd);
|
|
83
96
|
tsfolders = tsfolders.filter(
|
|
84
97
|
(itemArg) => itemArg.startsWith('ts') && itemArg !== 'ts_web',
|
|
85
98
|
);
|
|
@@ -125,7 +138,7 @@ export class TsWatch {
|
|
|
125
138
|
bundler: 'esbuild',
|
|
126
139
|
});
|
|
127
140
|
};
|
|
128
|
-
let tsfolders = await
|
|
141
|
+
let tsfolders = await listFolders(paths.cwd);
|
|
129
142
|
tsfolders = tsfolders.filter(
|
|
130
143
|
(itemArg) => itemArg.startsWith('ts') && itemArg !== 'ts_web',
|
|
131
144
|
);
|
|
@@ -20,7 +20,7 @@ export class Watcher {
|
|
|
20
20
|
});
|
|
21
21
|
|
|
22
22
|
private currentExecution: plugins.smartshell.IExecResultStreaming;
|
|
23
|
-
private
|
|
23
|
+
private smartwatchInstance = new plugins.smartwatch.Smartwatch([]);
|
|
24
24
|
private options: IWatcherConstructorOptions;
|
|
25
25
|
|
|
26
26
|
constructor(optionsArg: IWatcherConstructorOptions) {
|
|
@@ -34,9 +34,9 @@ export class Watcher {
|
|
|
34
34
|
logger.log('info', `trying to start watcher for ${this.options.filePathToWatch}`);
|
|
35
35
|
await this.setupCleanup();
|
|
36
36
|
console.log(`Looking at ${this.options.filePathToWatch} for changes`);
|
|
37
|
-
this.
|
|
38
|
-
await this.
|
|
39
|
-
const changeObservable = await this.
|
|
37
|
+
this.smartwatchInstance.add([this.options.filePathToWatch]); // __dirname refers to the directory of this very file
|
|
38
|
+
await this.smartwatchInstance.start();
|
|
39
|
+
const changeObservable = await this.smartwatchInstance.getObservableFor('change');
|
|
40
40
|
changeObservable.subscribe(() => {
|
|
41
41
|
this.updateCurrentExecution();
|
|
42
42
|
});
|
|
@@ -99,7 +99,7 @@ export class Watcher {
|
|
|
99
99
|
* stops the watcher
|
|
100
100
|
*/
|
|
101
101
|
public async stop() {
|
|
102
|
-
await this.
|
|
102
|
+
await this.smartwatchInstance.stop();
|
|
103
103
|
if (this.currentExecution && !this.currentExecution.childProcess.killed) {
|
|
104
104
|
this.currentExecution.kill();
|
|
105
105
|
}
|
package/ts/tswatch.plugins.ts
CHANGED
|
@@ -13,23 +13,23 @@ export { typedserver };
|
|
|
13
13
|
|
|
14
14
|
// @pushrocks scope
|
|
15
15
|
import * as lik from '@push.rocks/lik';
|
|
16
|
-
import * as smartchok from '@push.rocks/smartchok';
|
|
17
16
|
import * as smartcli from '@push.rocks/smartcli';
|
|
18
17
|
import * as smartdelay from '@push.rocks/smartdelay';
|
|
19
|
-
import * as
|
|
18
|
+
import * as smartfs from '@push.rocks/smartfs';
|
|
20
19
|
import * as smartlog from '@push.rocks/smartlog';
|
|
21
20
|
import * as smartlogDestinationLocal from '@push.rocks/smartlog-destination-local';
|
|
22
21
|
import * as smartshell from '@push.rocks/smartshell';
|
|
22
|
+
import * as smartwatch from '@push.rocks/smartwatch';
|
|
23
23
|
import * as taskbuffer from '@push.rocks/taskbuffer';
|
|
24
24
|
|
|
25
25
|
export {
|
|
26
26
|
lik,
|
|
27
|
-
smartchok,
|
|
28
27
|
smartcli,
|
|
29
28
|
smartdelay,
|
|
30
|
-
|
|
29
|
+
smartfs,
|
|
31
30
|
smartlog,
|
|
32
31
|
smartlogDestinationLocal,
|
|
33
32
|
smartshell,
|
|
33
|
+
smartwatch,
|
|
34
34
|
taskbuffer,
|
|
35
35
|
};
|