@git.zone/tswatch 3.0.1 → 3.2.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.
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/interfaces/interfaces.config.d.ts +13 -0
- package/dist_ts/tswatch.classes.tswatch.d.ts +1 -0
- package/dist_ts/tswatch.classes.tswatch.js +18 -3
- package/package.json +6 -6
- package/readme.hints.md +1 -0
- package/readme.md +1 -0
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/interfaces/interfaces.config.ts +10 -0
- package/ts/tswatch.classes.tswatch.ts +16 -2
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@git.zone/tswatch',
|
|
6
|
-
version: '3.0
|
|
6
|
+
version: '3.2.0',
|
|
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=
|
|
@@ -42,6 +42,19 @@ export interface IBundleConfig {
|
|
|
42
42
|
watchPatterns?: string[];
|
|
43
43
|
/** If true, trigger server reload after bundling (default: true) */
|
|
44
44
|
triggerReload?: boolean;
|
|
45
|
+
/** Output mode: 'bundle' writes JS, 'base64ts' writes base64-encoded TS (default: 'bundle') */
|
|
46
|
+
outputMode?: 'bundle' | 'base64ts';
|
|
47
|
+
/** Bundler to use (default: 'esbuild') */
|
|
48
|
+
bundler?: 'esbuild' | 'rolldown' | 'rspack';
|
|
49
|
+
/** Whether to produce a production build (default: false) */
|
|
50
|
+
production?: boolean;
|
|
51
|
+
/** Files to include alongside the bundle */
|
|
52
|
+
includeFiles?: (string | {
|
|
53
|
+
from: string;
|
|
54
|
+
to: string;
|
|
55
|
+
})[];
|
|
56
|
+
/** Max chars per line for base64ts output. 0 or undefined = unlimited */
|
|
57
|
+
maxLineLength?: number;
|
|
45
58
|
}
|
|
46
59
|
/**
|
|
47
60
|
* Main tswatch configuration
|
|
@@ -12,6 +12,7 @@ export declare class TsWatch {
|
|
|
12
12
|
watcherMap: plugins.lik.ObjectMap<Watcher>;
|
|
13
13
|
typedserver: plugins.typedserver.TypedServer | null;
|
|
14
14
|
private tsbundle;
|
|
15
|
+
private customBundleHandler;
|
|
15
16
|
private htmlHandler;
|
|
16
17
|
private assetsHandler;
|
|
17
18
|
constructor(configArg: interfaces.ITswatchConfig);
|
|
@@ -15,6 +15,7 @@ export class TsWatch {
|
|
|
15
15
|
this.watcherMap = new plugins.lik.ObjectMap();
|
|
16
16
|
this.typedserver = null;
|
|
17
17
|
this.tsbundle = new plugins.tsbundle.TsBundle();
|
|
18
|
+
this.customBundleHandler = new plugins.tsbundle.CustomBundleHandler();
|
|
18
19
|
this.htmlHandler = new plugins.tsbundle.HtmlHandler();
|
|
19
20
|
this.assetsHandler = new plugins.tsbundle.AssetsHandler();
|
|
20
21
|
this.config = configArg;
|
|
@@ -72,6 +73,7 @@ export class TsWatch {
|
|
|
72
73
|
port: port,
|
|
73
74
|
compression: true,
|
|
74
75
|
spaFallback: true,
|
|
76
|
+
noCache: true,
|
|
75
77
|
securityHeaders: {
|
|
76
78
|
crossOriginOpenerPolicy: 'same-origin',
|
|
77
79
|
crossOriginEmbedderPolicy: 'require-corp',
|
|
@@ -107,10 +109,23 @@ export class TsWatch {
|
|
|
107
109
|
// Assets directory copy
|
|
108
110
|
await this.assetsHandler.processAssets();
|
|
109
111
|
}
|
|
112
|
+
else if (bundleConfig.outputMode && bundleConfig.outputMode !== 'bundle') {
|
|
113
|
+
// Non-default outputMode (e.g. base64ts) — use CustomBundleHandler
|
|
114
|
+
await this.customBundleHandler.processSingleBundle({
|
|
115
|
+
from: bundleConfig.from,
|
|
116
|
+
to: bundleConfig.to,
|
|
117
|
+
outputMode: bundleConfig.outputMode,
|
|
118
|
+
bundler: bundleConfig.bundler || 'esbuild',
|
|
119
|
+
production: bundleConfig.production || false,
|
|
120
|
+
includeFiles: bundleConfig.includeFiles,
|
|
121
|
+
maxLineLength: bundleConfig.maxLineLength,
|
|
122
|
+
});
|
|
123
|
+
}
|
|
110
124
|
else {
|
|
111
|
-
// TypeScript bundling
|
|
125
|
+
// Standard TypeScript bundling (default)
|
|
112
126
|
await this.tsbundle.build(paths.cwd, fromPath, toPath, {
|
|
113
|
-
bundler: 'esbuild',
|
|
127
|
+
bundler: bundleConfig.bundler || 'esbuild',
|
|
128
|
+
production: bundleConfig.production || false,
|
|
114
129
|
});
|
|
115
130
|
}
|
|
116
131
|
logger.log('ok', `[${name}] bundle complete`);
|
|
@@ -164,4 +179,4 @@ export class TsWatch {
|
|
|
164
179
|
});
|
|
165
180
|
}
|
|
166
181
|
}
|
|
167
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
182
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHN3YXRjaC5jbGFzc2VzLnRzd2F0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy90c3dhdGNoLmNsYXNzZXMudHN3YXRjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxLQUFLLE1BQU0sb0JBQW9CLENBQUM7QUFDNUMsT0FBTyxLQUFLLFVBQVUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU5Qzs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyxPQUFPO0lBVWxCLFlBQVksU0FBb0M7UUFSekMsZUFBVSxHQUFHLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQVcsQ0FBQztRQUNsRCxnQkFBVyxHQUEyQyxJQUFJLENBQUM7UUFFMUQsYUFBUSxHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMzQyx3QkFBbUIsR0FBRyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUNqRSxnQkFBVyxHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqRCxrQkFBYSxHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUczRCxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQWU7UUFDdEMsTUFBTSxhQUFhLEdBQUcsSUFBSSxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEQsTUFBTSxNQUFNLEdB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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@git.zone/tswatch",
|
|
3
|
-
"version": "3.0
|
|
3
|
+
"version": "3.2.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": {
|
|
@@ -19,16 +19,16 @@
|
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
21
21
|
"@git.zone/tsbuild": "^4.1.2",
|
|
22
|
-
"@git.zone/tstest": "^3.1.
|
|
23
|
-
"@types/node": "^25.
|
|
22
|
+
"@git.zone/tstest": "^3.1.8",
|
|
23
|
+
"@types/node": "^25.2.1"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@api.global/typedserver": "^8.3.0",
|
|
27
|
-
"@git.zone/tsbundle": "^2.
|
|
27
|
+
"@git.zone/tsbundle": "^2.9.0",
|
|
28
28
|
"@git.zone/tsrun": "^2.0.1",
|
|
29
29
|
"@push.rocks/early": "^4.0.4",
|
|
30
30
|
"@push.rocks/lik": "^6.2.2",
|
|
31
|
-
"@push.rocks/npmextra": "^5.
|
|
31
|
+
"@push.rocks/npmextra": "^5.3.3",
|
|
32
32
|
"@push.rocks/smartcli": "^4.0.20",
|
|
33
33
|
"@push.rocks/smartdelay": "^3.0.5",
|
|
34
34
|
"@push.rocks/smartfs": "^1.3.1",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"@push.rocks/smartlog-destination-local": "^9.0.2",
|
|
38
38
|
"@push.rocks/smartshell": "^3.3.0",
|
|
39
39
|
"@push.rocks/smartwatch": "^6.3.0",
|
|
40
|
-
"@push.rocks/taskbuffer": "^
|
|
40
|
+
"@push.rocks/taskbuffer": "^4.2.0"
|
|
41
41
|
},
|
|
42
42
|
"files": [
|
|
43
43
|
"ts/**/*",
|
package/readme.hints.md
CHANGED
|
@@ -82,6 +82,7 @@ tswatch is now a config-driven TypeScript file watcher. Configuration is read fr
|
|
|
82
82
|
- Gzip compression
|
|
83
83
|
- Live reload injection (configurable)
|
|
84
84
|
- SPA fallback support
|
|
85
|
+
- No-cache headers (prevents browser caching during development)
|
|
85
86
|
|
|
86
87
|
## Project Structure
|
|
87
88
|
|
package/readme.md
CHANGED
|
@@ -371,6 +371,7 @@ Config:
|
|
|
371
371
|
The built-in development server (enabled in `element` and `website` presets) features:
|
|
372
372
|
|
|
373
373
|
- **Live Reload** - Automatically refreshes browser on changes
|
|
374
|
+
- **No Caching** - Prevents browser caching during development (sends `Cache-Control: no-store, no-cache` headers)
|
|
374
375
|
- **CORS** - Cross-origin requests enabled
|
|
375
376
|
- **Compression** - Gzip compression for faster loading
|
|
376
377
|
- **SPA Fallback** - Single-page application routing support
|
package/ts/00_commitinfo_data.ts
CHANGED
|
@@ -44,6 +44,16 @@ export interface IBundleConfig {
|
|
|
44
44
|
watchPatterns?: string[];
|
|
45
45
|
/** If true, trigger server reload after bundling (default: true) */
|
|
46
46
|
triggerReload?: boolean;
|
|
47
|
+
/** Output mode: 'bundle' writes JS, 'base64ts' writes base64-encoded TS (default: 'bundle') */
|
|
48
|
+
outputMode?: 'bundle' | 'base64ts';
|
|
49
|
+
/** Bundler to use (default: 'esbuild') */
|
|
50
|
+
bundler?: 'esbuild' | 'rolldown' | 'rspack';
|
|
51
|
+
/** Whether to produce a production build (default: false) */
|
|
52
|
+
production?: boolean;
|
|
53
|
+
/** Files to include alongside the bundle */
|
|
54
|
+
includeFiles?: (string | { from: string; to: string })[];
|
|
55
|
+
/** Max chars per line for base64ts output. 0 or undefined = unlimited */
|
|
56
|
+
maxLineLength?: number;
|
|
47
57
|
}
|
|
48
58
|
|
|
49
59
|
/**
|
|
@@ -18,6 +18,7 @@ export class TsWatch {
|
|
|
18
18
|
public typedserver: plugins.typedserver.TypedServer | null = null;
|
|
19
19
|
|
|
20
20
|
private tsbundle = new plugins.tsbundle.TsBundle();
|
|
21
|
+
private customBundleHandler = new plugins.tsbundle.CustomBundleHandler();
|
|
21
22
|
private htmlHandler = new plugins.tsbundle.HtmlHandler();
|
|
22
23
|
private assetsHandler = new plugins.tsbundle.AssetsHandler();
|
|
23
24
|
|
|
@@ -89,6 +90,7 @@ export class TsWatch {
|
|
|
89
90
|
port: port,
|
|
90
91
|
compression: true,
|
|
91
92
|
spaFallback: true,
|
|
93
|
+
noCache: true,
|
|
92
94
|
securityHeaders: {
|
|
93
95
|
crossOriginOpenerPolicy: 'same-origin',
|
|
94
96
|
crossOriginEmbedderPolicy: 'require-corp',
|
|
@@ -127,10 +129,22 @@ export class TsWatch {
|
|
|
127
129
|
} else if (fromPath.endsWith('/') || !fromPath.includes('.')) {
|
|
128
130
|
// Assets directory copy
|
|
129
131
|
await this.assetsHandler.processAssets();
|
|
132
|
+
} else if (bundleConfig.outputMode && bundleConfig.outputMode !== 'bundle') {
|
|
133
|
+
// Non-default outputMode (e.g. base64ts) — use CustomBundleHandler
|
|
134
|
+
await this.customBundleHandler.processSingleBundle({
|
|
135
|
+
from: bundleConfig.from,
|
|
136
|
+
to: bundleConfig.to,
|
|
137
|
+
outputMode: bundleConfig.outputMode,
|
|
138
|
+
bundler: bundleConfig.bundler || 'esbuild',
|
|
139
|
+
production: bundleConfig.production || false,
|
|
140
|
+
includeFiles: bundleConfig.includeFiles,
|
|
141
|
+
maxLineLength: bundleConfig.maxLineLength,
|
|
142
|
+
});
|
|
130
143
|
} else {
|
|
131
|
-
// TypeScript bundling
|
|
144
|
+
// Standard TypeScript bundling (default)
|
|
132
145
|
await this.tsbundle.build(paths.cwd, fromPath, toPath, {
|
|
133
|
-
bundler: 'esbuild',
|
|
146
|
+
bundler: bundleConfig.bundler || 'esbuild',
|
|
147
|
+
production: bundleConfig.production || false,
|
|
134
148
|
});
|
|
135
149
|
}
|
|
136
150
|
|