@git.zone/tswatch 2.3.13 → 3.0.0

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.
Files changed (35) hide show
  1. package/dist_ts/00_commitinfo_data.js +2 -2
  2. package/dist_ts/index.d.ts +4 -1
  3. package/dist_ts/index.js +5 -2
  4. package/dist_ts/interfaces/index.d.ts +1 -1
  5. package/dist_ts/interfaces/index.js +2 -2
  6. package/dist_ts/interfaces/interfaces.config.d.ts +58 -0
  7. package/dist_ts/interfaces/interfaces.config.js +2 -0
  8. package/dist_ts/tswatch.classes.confighandler.d.ts +30 -0
  9. package/dist_ts/tswatch.classes.confighandler.js +172 -0
  10. package/dist_ts/tswatch.classes.tswatch.d.ts +28 -3
  11. package/dist_ts/tswatch.classes.tswatch.js +135 -165
  12. package/dist_ts/tswatch.classes.watcher.d.ts +31 -3
  13. package/dist_ts/tswatch.classes.watcher.js +105 -25
  14. package/dist_ts/tswatch.cli.js +39 -28
  15. package/dist_ts/tswatch.init.d.ts +25 -0
  16. package/dist_ts/tswatch.init.js +168 -0
  17. package/dist_ts/tswatch.plugins.d.ts +3 -1
  18. package/dist_ts/tswatch.plugins.js +7 -5
  19. package/npmextra.json +12 -6
  20. package/package.json +21 -15
  21. package/readme.hints.md +88 -46
  22. package/readme.md +284 -149
  23. package/ts/00_commitinfo_data.ts +1 -1
  24. package/ts/index.ts +6 -2
  25. package/ts/interfaces/index.ts +1 -1
  26. package/ts/interfaces/interfaces.config.ts +61 -0
  27. package/ts/tswatch.classes.confighandler.ts +185 -0
  28. package/ts/tswatch.classes.tswatch.ts +161 -197
  29. package/ts/tswatch.classes.watcher.ts +134 -23
  30. package/ts/tswatch.cli.ts +37 -31
  31. package/ts/tswatch.init.ts +199 -0
  32. package/ts/tswatch.plugins.ts +7 -3
  33. package/dist_ts/interfaces/interfaces.watchmodes.d.ts +0 -1
  34. package/dist_ts/interfaces/interfaces.watchmodes.js +0 -2
  35. package/ts/interfaces/interfaces.watchmodes.ts +0 -1
@@ -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
- // standard behaviour will assume gitzone setup
7
- tswatchCli.standardCommand().subscribe((argvArg) => {
8
- tswatchCli.triggerCommand('npm', {});
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
- tswatchCli.addCommand('element').subscribe(async (argvArg) => {
11
- logger.log('info', `running watch task for a gitzone element project`);
12
- const tsWatch = new TsWatch('element');
13
- await tsWatch.start();
14
- });
15
- tswatchCli.addCommand('npm').subscribe(async (argvArg) => {
16
- logger.log('info', `running watch task for a gitzone element project`);
17
- const tsWatch = new TsWatch('node');
18
- await tsWatch.start();
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHN3YXRjaC5jbGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy90c3dhdGNoLmNsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxLQUFLLE1BQU0sb0JBQW9CLENBQUM7QUFDNUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUV2RCxNQUFNLFVBQVUsR0FBRyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7QUFFbkQsK0NBQStDO0FBQy9DLFVBQVUsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtJQUNqRCxVQUFVLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN2QyxDQUFDLENBQUMsQ0FBQztBQUVILFVBQVUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUMzRCxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxrREFBa0QsQ0FBQyxDQUFDO0lBQ3ZFLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0sT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ3hCLENBQUMsQ0FBQyxDQUFDO0FBRUgsVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO0lBQ3ZELE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLGtEQUFrRCxDQUFDLENBQUM7SUFDdkUsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEMsTUFBTSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDeEIsQ0FBQyxDQUFDLENBQUM7QUFFSCxVQUFVLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7SUFDM0QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztJQUN4QyxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN2QyxNQUFNLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUN4QixDQUFDLENBQUMsQ0FBQztBQUVILFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUN4RCxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLE1BQU0sT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ3hCLENBQUMsQ0FBQyxDQUFDO0FBRUgsVUFBVSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO0lBQzNELE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLGtEQUFrRCxDQUFDLENBQUM7SUFDdkUsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdkMsTUFBTSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDeEIsQ0FBQyxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsS0FBSyxJQUFJLEVBQUU7SUFDL0IsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQzFCLENBQUMsQ0FBQyJ9
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
- // @gitzone scope
4
+ // @git.zone scope
5
5
  import * as tsbundle from '@git.zone/tsbundle';
6
6
  export { tsbundle };
7
- // @apiglobal scope
7
+ // @api.global scope
8
8
  import * as typedserver from '@api.global/typedserver';
9
9
  export { typedserver };
10
- // @pushrocks scope
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHN3YXRjaC5wbHVnaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvdHN3YXRjaC5wbHVnaW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9CQUFvQjtBQUNwQixPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFFaEIsaUJBQWlCO0FBQ2pCLE9BQU8sS0FBSyxRQUFRLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFDO0FBRXBCLG1CQUFtQjtBQUNuQixPQUFPLEtBQUssV0FBVyxNQUFNLHlCQUF5QixDQUFDO0FBRXZELE9BQU8sRUFBRSxXQUFXLEVBQUUsQ0FBQztBQUV2QixtQkFBbUI7QUFDbkIsT0FBTyxLQUFLLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEtBQUssUUFBUSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sS0FBSyxVQUFVLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxLQUFLLE9BQU8sTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEtBQUssUUFBUSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sS0FBSyx3QkFBd0IsTUFBTSx3Q0FBd0MsQ0FBQztBQUNuRixPQUFPLEtBQUssVUFBVSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sS0FBSyxVQUFVLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxLQUFLLFVBQVUsTUFBTSx3QkFBd0IsQ0FBQztBQUVyRCxPQUFPLEVBQ0wsR0FBRyxFQUNILFFBQVEsRUFDUixVQUFVLEVBQ1YsT0FBTyxFQUNQLFFBQVEsRUFDUix3QkFBd0IsRUFDeEIsVUFBVSxFQUNWLFVBQVUsRUFDVixVQUFVLEdBQ1gsQ0FBQyJ9
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
- "npmci": {
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": "2.3.13",
3
+ "version": "3.0.0",
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": "^3.1.2",
17
- "@git.zone/tstest": "^3.1.3",
18
- "@types/node": "^25.0.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": "^7.11.1",
22
- "@git.zone/tsbundle": "^2.6.3",
23
- "@git.zone/tsrun": "^2.0.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/smartcli": "^4.0.19",
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.2.0",
34
+ "@push.rocks/smartfs": "^1.3.1",
35
+ "@push.rocks/smartinteract": "^2.1.0",
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
- "scripts": {
80
- "test": "(tstest test/ --web)",
81
- "build": "(tsbuild --web --allowimplicitany)",
82
- "buildDocs": "tsdoc"
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
- - tswatch is a TypeScript file watcher with multiple operation modes
5
- - Main class `TsWatch` orchestrates different watch modes
6
- - `Watcher` class handles individual file watching and command execution
7
-
8
- ## Available Watch Modes
9
- 1. **npm/node** (default): Runs `npm test` on changes
10
- 2. **test**: Runs `npm run test2` on changes
11
- 3. **element**: Web component development with dev server on port 3002
12
- 4. **service**: Runs `npm run startTs` for service projects
13
- 5. **website**: Full website mode with bundling and asset processing
14
- 6. **echo**: Test mode that runs `npm -v` (for testing)
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
- - 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`
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 in element mode
21
- - Element/website modes watch multiple `ts*/` directories
22
- - All modes support both command execution and function callbacks
23
-
24
- ## CLI Entry Points
25
- - `cli.js` -> Main CLI entry point
26
- - `ts/tswatch.cli.ts` -> CLI implementation with smartcli
27
- - Default command triggers npm mode
28
-
29
- ## Project Structure Expectations
30
- - `ts/` - Backend TypeScript files
31
- - `ts_web/` - Frontend TypeScript files (element/website modes)
32
- - `html/` - HTML templates (element/website modes)
33
- - `assets/` - Static assets (website mode only)
34
- - `dist_watch/` - Output for element mode
35
- - `dist_serve/` - Output for website mode
36
-
37
- ## Development Server Details
38
- - Port: 3002
39
- - Features: CORS, gzip compression, live reload injection
40
- - Only available in element mode via `typedserver` property
41
-
42
- ## Common Issues to Watch For
43
- - The test mode runs `test2` script, not `test`
44
- - Website mode restarts the entire server process on backend changes
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