@git.zone/tswatch 2.3.13 → 3.0.1
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 +2 -2
- package/dist_ts/index.d.ts +4 -1
- package/dist_ts/index.js +5 -2
- package/dist_ts/interfaces/index.d.ts +1 -1
- package/dist_ts/interfaces/index.js +2 -2
- package/dist_ts/interfaces/interfaces.config.d.ts +58 -0
- package/dist_ts/interfaces/interfaces.config.js +2 -0
- package/dist_ts/tswatch.classes.confighandler.d.ts +30 -0
- package/dist_ts/tswatch.classes.confighandler.js +172 -0
- package/dist_ts/tswatch.classes.tswatch.d.ts +28 -3
- package/dist_ts/tswatch.classes.tswatch.js +135 -165
- package/dist_ts/tswatch.classes.watcher.d.ts +31 -3
- package/dist_ts/tswatch.classes.watcher.js +105 -25
- package/dist_ts/tswatch.cli.js +39 -28
- package/dist_ts/tswatch.init.d.ts +25 -0
- package/dist_ts/tswatch.init.js +168 -0
- package/dist_ts/tswatch.plugins.d.ts +3 -1
- package/dist_ts/tswatch.plugins.js +7 -5
- package/npmextra.json +12 -6
- package/package.json +21 -15
- package/readme.hints.md +88 -46
- package/readme.md +284 -149
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/index.ts +6 -2
- package/ts/interfaces/index.ts +1 -1
- package/ts/interfaces/interfaces.config.ts +61 -0
- package/ts/tswatch.classes.confighandler.ts +185 -0
- package/ts/tswatch.classes.tswatch.ts +161 -197
- package/ts/tswatch.classes.watcher.ts +134 -23
- package/ts/tswatch.cli.ts +37 -31
- package/ts/tswatch.init.ts +199 -0
- package/ts/tswatch.plugins.ts +7 -3
- package/dist_ts/interfaces/interfaces.watchmodes.d.ts +0 -1
- package/dist_ts/interfaces/interfaces.watchmodes.js +0 -2
- package/ts/interfaces/interfaces.watchmodes.ts +0 -1
package/dist_ts/tswatch.cli.js
CHANGED
|
@@ -2,37 +2,48 @@ import * as plugins from './tswatch.plugins.js';
|
|
|
2
2
|
import * as paths from './tswatch.paths.js';
|
|
3
3
|
import { logger } from './tswatch.logging.js';
|
|
4
4
|
import { TsWatch } from './tswatch.classes.tswatch.js';
|
|
5
|
+
import { ConfigHandler } from './tswatch.classes.confighandler.js';
|
|
6
|
+
import { runInit } from './tswatch.init.js';
|
|
5
7
|
const tswatchCli = new plugins.smartcli.Smartcli();
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Standard command (no args) - run with config or launch wizard
|
|
10
|
+
*/
|
|
11
|
+
tswatchCli.standardCommand().subscribe(async (argvArg) => {
|
|
12
|
+
const configHandler = new ConfigHandler();
|
|
13
|
+
if (configHandler.hasConfig()) {
|
|
14
|
+
// Config exists - run with it
|
|
15
|
+
const tsWatch = TsWatch.fromConfig();
|
|
16
|
+
if (tsWatch) {
|
|
17
|
+
logger.log('info', 'Starting tswatch with configuration from npmextra.json');
|
|
18
|
+
await tsWatch.start();
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
logger.log('error', 'Failed to load configuration');
|
|
22
|
+
process.exit(1);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
// No config - launch wizard
|
|
27
|
+
logger.log('info', 'No tswatch configuration found in npmextra.json');
|
|
28
|
+
const config = await runInit();
|
|
29
|
+
if (config) {
|
|
30
|
+
// Run with the newly created config
|
|
31
|
+
const tsWatch = new TsWatch(config);
|
|
32
|
+
await tsWatch.start();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
9
35
|
});
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
});
|
|
20
|
-
tswatchCli.addCommand('service').subscribe(async (argvArg) => {
|
|
21
|
-
logger.log('info', `running test task`);
|
|
22
|
-
const tsWatch = new TsWatch('service');
|
|
23
|
-
await tsWatch.start();
|
|
24
|
-
});
|
|
25
|
-
tswatchCli.addCommand('test').subscribe(async (argvArg) => {
|
|
26
|
-
logger.log('info', `running test task`);
|
|
27
|
-
const tsWatch = new TsWatch('test');
|
|
28
|
-
await tsWatch.start();
|
|
29
|
-
});
|
|
30
|
-
tswatchCli.addCommand('website').subscribe(async (argvArg) => {
|
|
31
|
-
logger.log('info', `running watch task for a gitzone website project`);
|
|
32
|
-
const tsWatch = new TsWatch('website');
|
|
33
|
-
await tsWatch.start();
|
|
36
|
+
/**
|
|
37
|
+
* Init command - force run wizard (overwrite existing config)
|
|
38
|
+
*/
|
|
39
|
+
tswatchCli.addCommand('init').subscribe(async (argvArg) => {
|
|
40
|
+
logger.log('info', 'Running tswatch configuration wizard');
|
|
41
|
+
const config = await runInit();
|
|
42
|
+
if (config) {
|
|
43
|
+
logger.log('ok', 'Configuration created successfully');
|
|
44
|
+
}
|
|
34
45
|
});
|
|
35
46
|
export const runCli = async () => {
|
|
36
47
|
tswatchCli.startParse();
|
|
37
48
|
};
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHN3YXRjaC5jbGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy90c3dhdGNoLmNsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxLQUFLLE1BQU0sb0JBQW9CLENBQUM7QUFDNUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTVDLE1BQU0sVUFBVSxHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUVuRDs7R0FFRztBQUNILFVBQVUsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO0lBQ3ZELE1BQU0sYUFBYSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7SUFFMUMsSUFBSSxhQUFhLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztRQUM5Qiw4QkFBOEI7UUFDOUIsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3JDLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSx3REFBd0QsQ0FBQyxDQUFDO1lBQzdFLE1BQU0sT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3hCLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsOEJBQThCLENBQUMsQ0FBQztZQUNwRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDO1NBQU0sQ0FBQztRQUNOLDRCQUE0QjtRQUM1QixNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxpREFBaUQsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxFQUFFLENBQUM7UUFDL0IsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLG9DQUFvQztZQUNwQyxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwQyxNQUFNLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN4QixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMsQ0FBQyxDQUFDO0FBRUg7O0dBRUc7QUFDSCxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7SUFDeEQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsc0NBQXNDLENBQUMsQ0FBQztJQUMzRCxNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sRUFBRSxDQUFDO0lBQy9CLElBQUksTUFBTSxFQUFFLENBQUM7UUFDWCxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxvQ0FBb0MsQ0FBQyxDQUFDO0lBQ3pELENBQUM7QUFDSCxDQUFDLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxLQUFLLElBQUksRUFBRTtJQUMvQixVQUFVLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDMUIsQ0FBQyxDQUFDIn0=
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as interfaces from './interfaces/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Interactive init wizard for creating tswatch configuration
|
|
4
|
+
*/
|
|
5
|
+
export declare class TswatchInit {
|
|
6
|
+
private configHandler;
|
|
7
|
+
private smartInteract;
|
|
8
|
+
constructor();
|
|
9
|
+
/**
|
|
10
|
+
* Run the interactive init wizard
|
|
11
|
+
*/
|
|
12
|
+
run(): Promise<interfaces.ITswatchConfig | null>;
|
|
13
|
+
/**
|
|
14
|
+
* Run custom configuration wizard
|
|
15
|
+
*/
|
|
16
|
+
private runCustomWizard;
|
|
17
|
+
/**
|
|
18
|
+
* Save configuration to npmextra.json
|
|
19
|
+
*/
|
|
20
|
+
private saveConfig;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Run the init wizard
|
|
24
|
+
*/
|
|
25
|
+
export declare const runInit: () => Promise<interfaces.ITswatchConfig | null>;
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import * as plugins from './tswatch.plugins.js';
|
|
2
|
+
import * as paths from './tswatch.paths.js';
|
|
3
|
+
import * as interfaces from './interfaces/index.js';
|
|
4
|
+
import { ConfigHandler } from './tswatch.classes.confighandler.js';
|
|
5
|
+
import { logger } from './tswatch.logging.js';
|
|
6
|
+
const CONFIG_KEY = '@git.zone/tswatch';
|
|
7
|
+
/**
|
|
8
|
+
* Interactive init wizard for creating tswatch configuration
|
|
9
|
+
*/
|
|
10
|
+
export class TswatchInit {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.configHandler = new ConfigHandler();
|
|
13
|
+
this.smartInteract = new plugins.smartinteract.SmartInteract([]);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Run the interactive init wizard
|
|
17
|
+
*/
|
|
18
|
+
async run() {
|
|
19
|
+
console.log('\n=== tswatch Configuration Wizard ===\n');
|
|
20
|
+
// Ask for template choice
|
|
21
|
+
const templateAnswer = await this.smartInteract.askQuestion({
|
|
22
|
+
name: 'template',
|
|
23
|
+
type: 'list',
|
|
24
|
+
message: 'Select a configuration template:',
|
|
25
|
+
default: 'npm',
|
|
26
|
+
choices: [
|
|
27
|
+
{ name: 'npm - Watch ts/ and test/, run npm test', value: 'npm' },
|
|
28
|
+
{ name: 'test - Watch ts/ and test/, run npm run test2', value: 'test' },
|
|
29
|
+
{ name: 'service - Watch ts/, restart npm run startTs', value: 'service' },
|
|
30
|
+
{ name: 'element - Dev server + bundling for web components', value: 'element' },
|
|
31
|
+
{ name: 'website - Full stack: backend + frontend + assets', value: 'website' },
|
|
32
|
+
{ name: 'custom - Configure watchers manually', value: 'custom' },
|
|
33
|
+
],
|
|
34
|
+
});
|
|
35
|
+
const template = templateAnswer.value;
|
|
36
|
+
let config;
|
|
37
|
+
if (template === 'custom') {
|
|
38
|
+
config = await this.runCustomWizard();
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
// Get preset config
|
|
42
|
+
const preset = this.configHandler.getPreset(template);
|
|
43
|
+
if (!preset) {
|
|
44
|
+
console.error(`Unknown template: ${template}`);
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
config = { ...preset, preset: template };
|
|
48
|
+
}
|
|
49
|
+
// Save to npmextra.json
|
|
50
|
+
await this.saveConfig(config);
|
|
51
|
+
console.log('\nConfiguration saved to npmextra.json');
|
|
52
|
+
console.log('Run "tswatch" to start watching.\n');
|
|
53
|
+
return config;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Run custom configuration wizard
|
|
57
|
+
*/
|
|
58
|
+
async runCustomWizard() {
|
|
59
|
+
const config = {};
|
|
60
|
+
// Ask about server
|
|
61
|
+
const serverAnswer = await this.smartInteract.askQuestion({
|
|
62
|
+
name: 'enableServer',
|
|
63
|
+
type: 'confirm',
|
|
64
|
+
message: 'Enable development server?',
|
|
65
|
+
default: false,
|
|
66
|
+
});
|
|
67
|
+
if (serverAnswer.value) {
|
|
68
|
+
const portAnswer = await this.smartInteract.askQuestion({
|
|
69
|
+
name: 'port',
|
|
70
|
+
type: 'input',
|
|
71
|
+
message: 'Server port:',
|
|
72
|
+
default: '3002',
|
|
73
|
+
});
|
|
74
|
+
const serveDirAnswer = await this.smartInteract.askQuestion({
|
|
75
|
+
name: 'serveDir',
|
|
76
|
+
type: 'input',
|
|
77
|
+
message: 'Directory to serve:',
|
|
78
|
+
default: './dist_watch/',
|
|
79
|
+
});
|
|
80
|
+
config.server = {
|
|
81
|
+
enabled: true,
|
|
82
|
+
port: parseInt(portAnswer.value, 10),
|
|
83
|
+
serveDir: serveDirAnswer.value,
|
|
84
|
+
liveReload: true,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
// Add watchers
|
|
88
|
+
config.watchers = [];
|
|
89
|
+
let addMore = true;
|
|
90
|
+
while (addMore) {
|
|
91
|
+
console.log('\n--- Add a watcher ---');
|
|
92
|
+
const nameAnswer = await this.smartInteract.askQuestion({
|
|
93
|
+
name: 'name',
|
|
94
|
+
type: 'input',
|
|
95
|
+
message: 'Watcher name:',
|
|
96
|
+
default: `watcher-${config.watchers.length + 1}`,
|
|
97
|
+
});
|
|
98
|
+
const watchAnswer = await this.smartInteract.askQuestion({
|
|
99
|
+
name: 'watch',
|
|
100
|
+
type: 'input',
|
|
101
|
+
message: 'Glob pattern(s) to watch (comma-separated):',
|
|
102
|
+
default: './ts/**/*',
|
|
103
|
+
});
|
|
104
|
+
const commandAnswer = await this.smartInteract.askQuestion({
|
|
105
|
+
name: 'command',
|
|
106
|
+
type: 'input',
|
|
107
|
+
message: 'Command to execute:',
|
|
108
|
+
default: 'npm run test',
|
|
109
|
+
});
|
|
110
|
+
const restartAnswer = await this.smartInteract.askQuestion({
|
|
111
|
+
name: 'restart',
|
|
112
|
+
type: 'confirm',
|
|
113
|
+
message: 'Restart command on each change (vs queue)?',
|
|
114
|
+
default: true,
|
|
115
|
+
});
|
|
116
|
+
// Parse watch patterns
|
|
117
|
+
const watchPatterns = watchAnswer.value
|
|
118
|
+
.split(',')
|
|
119
|
+
.map((p) => p.trim())
|
|
120
|
+
.filter((p) => p.length > 0);
|
|
121
|
+
config.watchers.push({
|
|
122
|
+
name: nameAnswer.value,
|
|
123
|
+
watch: watchPatterns.length === 1 ? watchPatterns[0] : watchPatterns,
|
|
124
|
+
command: commandAnswer.value,
|
|
125
|
+
restart: restartAnswer.value,
|
|
126
|
+
debounce: 300,
|
|
127
|
+
runOnStart: true,
|
|
128
|
+
});
|
|
129
|
+
const moreAnswer = await this.smartInteract.askQuestion({
|
|
130
|
+
name: 'addMore',
|
|
131
|
+
type: 'confirm',
|
|
132
|
+
message: 'Add another watcher?',
|
|
133
|
+
default: false,
|
|
134
|
+
});
|
|
135
|
+
addMore = moreAnswer.value;
|
|
136
|
+
}
|
|
137
|
+
return config;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Save configuration to npmextra.json
|
|
141
|
+
*/
|
|
142
|
+
async saveConfig(config) {
|
|
143
|
+
const npmextraPath = plugins.path.join(paths.cwd, 'npmextra.json');
|
|
144
|
+
// Read existing npmextra.json if it exists
|
|
145
|
+
let existingConfig = {};
|
|
146
|
+
try {
|
|
147
|
+
const smartfsInstance = new plugins.smartfs.SmartFs(new plugins.smartfs.SmartFsProviderNode());
|
|
148
|
+
const content = await smartfsInstance.file(npmextraPath).encoding('utf8').read();
|
|
149
|
+
existingConfig = JSON.parse(content);
|
|
150
|
+
}
|
|
151
|
+
catch {
|
|
152
|
+
// File doesn't exist or is invalid, start fresh
|
|
153
|
+
}
|
|
154
|
+
// Update with new tswatch config
|
|
155
|
+
existingConfig[CONFIG_KEY] = config;
|
|
156
|
+
// Write back
|
|
157
|
+
const smartfsInstance = new plugins.smartfs.SmartFs(new plugins.smartfs.SmartFsProviderNode());
|
|
158
|
+
await smartfsInstance.file(npmextraPath).encoding('utf8').write(JSON.stringify(existingConfig, null, 2));
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Run the init wizard
|
|
163
|
+
*/
|
|
164
|
+
export const runInit = async () => {
|
|
165
|
+
const init = new TswatchInit();
|
|
166
|
+
return init.run();
|
|
167
|
+
};
|
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHN3YXRjaC5pbml0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvdHN3YXRjaC5pbml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxLQUFLLEtBQUssTUFBTSxvQkFBb0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssVUFBVSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFOUMsTUFBTSxVQUFVLEdBQUcsbUJBQW1CLENBQUM7QUFFdkM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sV0FBVztJQUl0QjtRQUNFLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksT0FBTyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLEdBQUc7UUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7UUFFeEQsMEJBQTBCO1FBQzFCLE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUM7WUFDMUQsSUFBSSxFQUFFLFVBQVU7WUFDaEIsSUFBSSxFQUFFLE1BQU07WUFDWixPQUFPLEVBQUUsa0NBQWtDO1lBQzNDLE9BQU8sRUFBRSxLQUFLO1lBQ2QsT0FBTyxFQUFFO2dCQUNQLEVBQUUsSUFBSSxFQUFFLHlDQUF5QyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7Z0JBQ2pFLEVBQUUsSUFBSSxFQUFFLCtDQUErQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7Z0JBQ3hFLEVBQUUsSUFBSSxFQUFFLDhDQUE4QyxFQUFFLEtB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
|
|
@@ -5,12 +5,14 @@ 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 npmextra from '@push.rocks/npmextra';
|
|
8
9
|
import * as smartcli from '@push.rocks/smartcli';
|
|
9
10
|
import * as smartdelay from '@push.rocks/smartdelay';
|
|
10
11
|
import * as smartfs from '@push.rocks/smartfs';
|
|
12
|
+
import * as smartinteract from '@push.rocks/smartinteract';
|
|
11
13
|
import * as smartlog from '@push.rocks/smartlog';
|
|
12
14
|
import * as smartlogDestinationLocal from '@push.rocks/smartlog-destination-local';
|
|
13
15
|
import * as smartshell from '@push.rocks/smartshell';
|
|
14
16
|
import * as smartwatch from '@push.rocks/smartwatch';
|
|
15
17
|
import * as taskbuffer from '@push.rocks/taskbuffer';
|
|
16
|
-
export { lik, smartcli, smartdelay, smartfs, smartlog, smartlogDestinationLocal, smartshell, smartwatch, taskbuffer, };
|
|
18
|
+
export { lik, npmextra, smartcli, smartdelay, smartfs, smartinteract, smartlog, smartlogDestinationLocal, smartshell, smartwatch, taskbuffer, };
|
|
@@ -1,21 +1,23 @@
|
|
|
1
1
|
// node native scope
|
|
2
2
|
import * as path from 'path';
|
|
3
3
|
export { path };
|
|
4
|
-
// @
|
|
4
|
+
// @git.zone scope
|
|
5
5
|
import * as tsbundle from '@git.zone/tsbundle';
|
|
6
6
|
export { tsbundle };
|
|
7
|
-
// @
|
|
7
|
+
// @api.global scope
|
|
8
8
|
import * as typedserver from '@api.global/typedserver';
|
|
9
9
|
export { typedserver };
|
|
10
|
-
// @
|
|
10
|
+
// @push.rocks scope
|
|
11
11
|
import * as lik from '@push.rocks/lik';
|
|
12
|
+
import * as npmextra from '@push.rocks/npmextra';
|
|
12
13
|
import * as smartcli from '@push.rocks/smartcli';
|
|
13
14
|
import * as smartdelay from '@push.rocks/smartdelay';
|
|
14
15
|
import * as smartfs from '@push.rocks/smartfs';
|
|
16
|
+
import * as smartinteract from '@push.rocks/smartinteract';
|
|
15
17
|
import * as smartlog from '@push.rocks/smartlog';
|
|
16
18
|
import * as smartlogDestinationLocal from '@push.rocks/smartlog-destination-local';
|
|
17
19
|
import * as smartshell from '@push.rocks/smartshell';
|
|
18
20
|
import * as smartwatch from '@push.rocks/smartwatch';
|
|
19
21
|
import * as taskbuffer from '@push.rocks/taskbuffer';
|
|
20
|
-
export { lik, smartcli, smartdelay, smartfs, smartlog, smartlogDestinationLocal, smartshell, smartwatch, taskbuffer, };
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
export { lik, npmextra, smartcli, smartdelay, smartfs, smartinteract, smartlog, smartlogDestinationLocal, smartshell, smartwatch, taskbuffer, };
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHN3YXRjaC5wbHVnaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvdHN3YXRjaC5wbHVnaW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9CQUFvQjtBQUNwQixPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFFaEIsa0JBQWtCO0FBQ2xCLE9BQU8sS0FBSyxRQUFRLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFDO0FBRXBCLG9CQUFvQjtBQUNwQixPQUFPLEtBQUssV0FBVyxNQUFNLHlCQUF5QixDQUFDO0FBRXZELE9BQU8sRUFBRSxXQUFXLEVBQUUsQ0FBQztBQUV2QixvQkFBb0I7QUFDcEIsT0FBTyxLQUFLLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEtBQUssUUFBUSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sS0FBSyxRQUFRLE1BQU0sc0JBQXNCLENBQUM7QUFDakQsT0FBTyxLQUFLLFVBQVUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEtBQUssT0FBTyxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE9BQU8sS0FBSyxhQUFhLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxLQUFLLFFBQVEsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEtBQUssd0JBQXdCLE1BQU0sd0NBQXdDLENBQUM7QUFDbkYsT0FBTyxLQUFLLFVBQVUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEtBQUssVUFBVSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sS0FBSyxVQUFVLE1BQU0sd0JBQXdCLENBQUM7QUFFckQsT0FBTyxFQUNMLEdBQUcsRUFDSCxRQUFRLEVBQ1IsUUFBUSxFQUNSLFVBQVUsRUFDVixPQUFPLEVBQ1AsYUFBYSxFQUNiLFFBQVEsRUFDUix3QkFBd0IsRUFDeEIsVUFBVSxFQUNWLFVBQVUsRUFDVixVQUFVLEdBQ1gsQ0FBQyJ9
|
package/npmextra.json
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
3
|
-
"npmGlobalTools": [],
|
|
4
|
-
"npmAccessLevel": "public"
|
|
5
|
-
},
|
|
6
|
-
"gitzone": {
|
|
2
|
+
"@git.zone/cli": {
|
|
7
3
|
"projectType": "npm",
|
|
8
4
|
"module": {
|
|
9
5
|
"githost": "code.foss.global",
|
|
@@ -34,9 +30,19 @@
|
|
|
34
30
|
"node.js",
|
|
35
31
|
"development server"
|
|
36
32
|
]
|
|
33
|
+
},
|
|
34
|
+
"release": {
|
|
35
|
+
"registries": [
|
|
36
|
+
"https://verdaccio.lossless.digital",
|
|
37
|
+
"https://registry.npmjs.org"
|
|
38
|
+
],
|
|
39
|
+
"accessLevel": "public"
|
|
37
40
|
}
|
|
38
41
|
},
|
|
39
|
-
"tsdoc": {
|
|
42
|
+
"@git.zone/tsdoc": {
|
|
40
43
|
"legal": "\n## License and Legal Information\n\nThis repository contains open-source code that is licensed under the MIT License. A copy of the MIT License can be found in the [license](license) file within this repository. \n\n**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.\n\n### Trademarks\n\nThis 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. Use of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines, and any usage must be approved in writing by Task Venture Capital GmbH.\n\n### Company Information\n\nTask Venture Capital GmbH \nRegistered at District court Bremen HRB 35230 HB, Germany\n\nFor any legal inquiries or if you require further information, please contact us via email at hello@task.vc.\n\nBy 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.\n"
|
|
44
|
+
},
|
|
45
|
+
"@ship.zone/szci": {
|
|
46
|
+
"npmGlobalTools": []
|
|
41
47
|
}
|
|
42
48
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@git.zone/tswatch",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.1",
|
|
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": {
|
|
@@ -12,20 +12,27 @@
|
|
|
12
12
|
"bin": {
|
|
13
13
|
"tswatch": "cli.js"
|
|
14
14
|
},
|
|
15
|
+
"scripts": {
|
|
16
|
+
"test": "(tstest test/ --web)",
|
|
17
|
+
"build": "(tsbuild --web --allowimplicitany)",
|
|
18
|
+
"buildDocs": "tsdoc"
|
|
19
|
+
},
|
|
15
20
|
"devDependencies": {
|
|
16
|
-
"@git.zone/tsbuild": "^
|
|
17
|
-
"@git.zone/tstest": "^3.1.
|
|
18
|
-
"@types/node": "^25.0.
|
|
21
|
+
"@git.zone/tsbuild": "^4.1.2",
|
|
22
|
+
"@git.zone/tstest": "^3.1.6",
|
|
23
|
+
"@types/node": "^25.0.10"
|
|
19
24
|
},
|
|
20
25
|
"dependencies": {
|
|
21
|
-
"@api.global/typedserver": "^
|
|
22
|
-
"@git.zone/tsbundle": "^2.
|
|
23
|
-
"@git.zone/tsrun": "^2.0.
|
|
26
|
+
"@api.global/typedserver": "^8.3.0",
|
|
27
|
+
"@git.zone/tsbundle": "^2.8.3",
|
|
28
|
+
"@git.zone/tsrun": "^2.0.1",
|
|
24
29
|
"@push.rocks/early": "^4.0.4",
|
|
25
30
|
"@push.rocks/lik": "^6.2.2",
|
|
26
|
-
"@push.rocks/
|
|
31
|
+
"@push.rocks/npmextra": "^5.1.2",
|
|
32
|
+
"@push.rocks/smartcli": "^4.0.20",
|
|
27
33
|
"@push.rocks/smartdelay": "^3.0.5",
|
|
28
|
-
"@push.rocks/smartfs": "^1.
|
|
34
|
+
"@push.rocks/smartfs": "^1.3.1",
|
|
35
|
+
"@push.rocks/smartinteract": "^2.0.16",
|
|
29
36
|
"@push.rocks/smartlog": "^3.1.10",
|
|
30
37
|
"@push.rocks/smartlog-destination-local": "^9.0.2",
|
|
31
38
|
"@push.rocks/smartshell": "^3.3.0",
|
|
@@ -76,9 +83,8 @@
|
|
|
76
83
|
"url": "https://code.foss.global/git.zone/tswatch/issues"
|
|
77
84
|
},
|
|
78
85
|
"homepage": "https://code.foss.global/git.zone/tswatch#readme",
|
|
79
|
-
"
|
|
80
|
-
"
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}
|
|
86
|
+
"pnpm": {
|
|
87
|
+
"overrides": {}
|
|
88
|
+
},
|
|
89
|
+
"packageManager": "pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977"
|
|
90
|
+
}
|
package/readme.hints.md
CHANGED
|
@@ -1,51 +1,93 @@
|
|
|
1
1
|
# tswatch Project Hints
|
|
2
2
|
|
|
3
|
-
## Core Architecture
|
|
4
|
-
|
|
5
|
-
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
3
|
+
## Core Architecture (v3.x - Config-Driven)
|
|
4
|
+
|
|
5
|
+
tswatch is now a config-driven TypeScript file watcher. Configuration is read from `npmextra.json` under the key `@git.zone/tswatch`.
|
|
6
|
+
|
|
7
|
+
### Key Classes
|
|
8
|
+
|
|
9
|
+
- **TsWatch**: Main orchestrator class, accepts `ITswatchConfig`
|
|
10
|
+
- **Watcher**: Handles individual file watching with debouncing and restart modes
|
|
11
|
+
- **ConfigHandler**: Loads and manages configuration from npmextra.json
|
|
12
|
+
- **TswatchInit**: Interactive wizard for creating configuration
|
|
13
|
+
|
|
14
|
+
### Configuration Structure
|
|
15
|
+
|
|
16
|
+
```json
|
|
17
|
+
{
|
|
18
|
+
"@git.zone/tswatch": {
|
|
19
|
+
"watchers": [
|
|
20
|
+
{
|
|
21
|
+
"name": "backend",
|
|
22
|
+
"watch": "./ts/**/*",
|
|
23
|
+
"command": "npm run startTs",
|
|
24
|
+
"restart": true,
|
|
25
|
+
"debounce": 300,
|
|
26
|
+
"runOnStart": true
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
"server": {
|
|
30
|
+
"enabled": true,
|
|
31
|
+
"port": 3002,
|
|
32
|
+
"serveDir": "./dist_watch/",
|
|
33
|
+
"liveReload": true
|
|
34
|
+
},
|
|
35
|
+
"bundles": [
|
|
36
|
+
{
|
|
37
|
+
"name": "frontend",
|
|
38
|
+
"from": "./html/index.ts",
|
|
39
|
+
"to": "./dist_watch/bundle.js",
|
|
40
|
+
"watchPatterns": ["./ts_web/**/*"],
|
|
41
|
+
"triggerReload": true
|
|
42
|
+
}
|
|
43
|
+
],
|
|
44
|
+
"preset": "element"
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Available Presets
|
|
50
|
+
|
|
51
|
+
- **npm**: Watch ts/ and test/, run `npm test`
|
|
52
|
+
- **test**: Watch ts/ and test/, run `npm run test2`
|
|
53
|
+
- **service**: Watch ts/, run `npm run startTs` with restart
|
|
54
|
+
- **element**: Dev server on 3002, bundle ts_web, watch html
|
|
55
|
+
- **website**: Full stack with backend restart + frontend bundling + assets
|
|
56
|
+
|
|
57
|
+
### CLI Commands
|
|
58
|
+
|
|
59
|
+
- `tswatch` - Run with config (or launch wizard if no config)
|
|
60
|
+
- `tswatch init` - Force run the configuration wizard
|
|
15
61
|
|
|
16
62
|
## Key Implementation Details
|
|
17
|
-
|
|
18
|
-
- Uses `@push.rocks/
|
|
63
|
+
|
|
64
|
+
- Uses `@push.rocks/smartwatch` (v6.x) for file watching - class is `Smartwatch`
|
|
65
|
+
- Uses `@push.rocks/smartfs` (v1.x) for filesystem operations
|
|
66
|
+
- Uses `@push.rocks/npmextra` for reading npmextra.json config
|
|
67
|
+
- Uses `@push.rocks/smartinteract` for the init wizard
|
|
19
68
|
- Uses `@git.zone/tsbundle` for bundling with esbuild
|
|
20
|
-
- Uses `@api.global/typedserver` for development server
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
33
|
-
-
|
|
34
|
-
-
|
|
35
|
-
-
|
|
36
|
-
|
|
37
|
-
##
|
|
38
|
-
|
|
39
|
-
-
|
|
40
|
-
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
-
|
|
44
|
-
-
|
|
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
|
|
51
|
-
- Directory paths are converted to glob patterns (`/path/to/dir/` → `/path/to/dir/**/*`) for smartwatch compatibility
|
|
69
|
+
- Uses `@api.global/typedserver` for development server
|
|
70
|
+
|
|
71
|
+
### Watcher Features
|
|
72
|
+
|
|
73
|
+
- **Debouncing**: Configurable delay before executing (default: 300ms)
|
|
74
|
+
- **Restart mode**: Kill previous process before restarting (configurable)
|
|
75
|
+
- **Named watchers**: All watchers have names for clear logging
|
|
76
|
+
- **Multiple watch patterns**: Can watch multiple glob patterns
|
|
77
|
+
|
|
78
|
+
### Server Features
|
|
79
|
+
|
|
80
|
+
- Port configurable (default: 3002)
|
|
81
|
+
- CORS enabled
|
|
82
|
+
- Gzip compression
|
|
83
|
+
- Live reload injection (configurable)
|
|
84
|
+
- SPA fallback support
|
|
85
|
+
|
|
86
|
+
## Project Structure
|
|
87
|
+
|
|
88
|
+
- `ts/tswatch.classes.tswatch.ts` - Main TsWatch class
|
|
89
|
+
- `ts/tswatch.classes.watcher.ts` - Watcher class with debounce/restart
|
|
90
|
+
- `ts/tswatch.classes.confighandler.ts` - Config loading
|
|
91
|
+
- `ts/tswatch.init.ts` - Interactive init wizard
|
|
92
|
+
- `ts/tswatch.cli.ts` - CLI entry point
|
|
93
|
+
- `ts/interfaces/interfaces.config.ts` - Type definitions
|