169 lines
15 KiB
JavaScript
169 lines
15 KiB
JavaScript
import * as plugins from './tswatch.plugins.js';
|
|
import * as paths from './tswatch.paths.js';
|
|
import * as interfaces from './interfaces/index.js';
|
|
import { Watcher } from './tswatch.classes.watcher.js';
|
|
export class TsWatch {
|
|
constructor(watchmodeArg) {
|
|
this.watcherMap = new plugins.lik.ObjectMap();
|
|
this.watchmode = watchmodeArg;
|
|
}
|
|
/**
|
|
* starts the TsWatch instance
|
|
*/
|
|
async start() {
|
|
const tsbundle = new plugins.tsbundle.TsBundle();
|
|
const htmlHandler = new plugins.tsbundle.HtmlHandler();
|
|
switch (this.watchmode) {
|
|
case 'test':
|
|
/**
|
|
* this strategy runs test whenever there is a change in the ts directory
|
|
*/
|
|
this.watcherMap.add(new Watcher({
|
|
filePathToWatch: paths.cwd,
|
|
commandToExecute: 'npm run test2',
|
|
timeout: null,
|
|
}));
|
|
break;
|
|
case 'node':
|
|
this.watcherMap.add(new Watcher({
|
|
filePathToWatch: paths.cwd,
|
|
commandToExecute: 'npm run test',
|
|
timeout: null,
|
|
}));
|
|
break;
|
|
case 'element':
|
|
(async () => {
|
|
/**
|
|
* this strategy runs a standard server and bundles the ts files to a dist_watch directory
|
|
*/
|
|
// lets create a standard server
|
|
console.log('bundling TypeScript files to "dist_watch" Note: This is for development only!');
|
|
this.typedserver = new plugins.typedserver.TypedServer({
|
|
cors: true,
|
|
injectReload: true,
|
|
serveDir: plugins.path.join(paths.cwd, './dist_watch/'),
|
|
port: 3002,
|
|
enableCompression: true,
|
|
preferredCompressionMethod: 'gzip',
|
|
});
|
|
const bundleAndReloadElement = async () => {
|
|
await tsbundle.build(paths.cwd, './html/index.ts', './dist_watch/bundle.js', {
|
|
bundler: 'esbuild',
|
|
});
|
|
await this.typedserver.reload();
|
|
};
|
|
this.watcherMap.add(new Watcher({
|
|
filePathToWatch: plugins.path.join(paths.cwd, './ts_web/'),
|
|
functionToCall: async () => {
|
|
await bundleAndReloadElement();
|
|
},
|
|
timeout: null,
|
|
}));
|
|
// lets get the other ts folders
|
|
let tsfolders = await plugins.smartfile.fs.listFolders(paths.cwd);
|
|
tsfolders = tsfolders.filter((itemArg) => itemArg.startsWith('ts') && itemArg !== 'ts_web');
|
|
const smartshellInstance = new plugins.smartshell.Smartshell({
|
|
executor: 'bash',
|
|
});
|
|
for (const tsfolder of tsfolders) {
|
|
this.watcherMap.add(new Watcher({
|
|
filePathToWatch: plugins.path.join(paths.cwd, `./${tsfolder}/`),
|
|
functionToCall: async () => {
|
|
await smartshellInstance.exec(`npm run build`);
|
|
await this.typedserver.reload();
|
|
},
|
|
timeout: null,
|
|
}));
|
|
}
|
|
this.watcherMap.add(new Watcher({
|
|
filePathToWatch: plugins.path.join(paths.cwd, './html/'),
|
|
functionToCall: async () => {
|
|
await htmlHandler.processHtml({
|
|
from: plugins.path.join(paths.cwd, './html/index.html'),
|
|
to: plugins.path.join(paths.cwd, './dist_watch/index.html'),
|
|
minify: false,
|
|
});
|
|
await bundleAndReloadElement();
|
|
},
|
|
timeout: null,
|
|
}));
|
|
})();
|
|
break;
|
|
case 'website':
|
|
(async () => {
|
|
const bundleAndReloadWebsite = async () => {
|
|
await tsbundle.build(paths.cwd, './ts_web/index.ts', './dist_serve/bundle.js', {
|
|
bundler: 'esbuild',
|
|
});
|
|
};
|
|
let tsfolders = await plugins.smartfile.fs.listFolders(paths.cwd);
|
|
tsfolders = tsfolders.filter((itemArg) => itemArg.startsWith('ts') && itemArg !== 'ts_web');
|
|
const smartshellInstance = new plugins.smartshell.Smartshell({
|
|
executor: 'bash',
|
|
});
|
|
for (const tsfolder of tsfolders) {
|
|
this.watcherMap.add(new Watcher({
|
|
filePathToWatch: plugins.path.join(paths.cwd, `./${tsfolder}/`),
|
|
commandToExecute: `npm run startTs`,
|
|
timeout: null,
|
|
}));
|
|
}
|
|
this.watcherMap.add(new Watcher({
|
|
filePathToWatch: plugins.path.join(paths.cwd, './ts_web/'),
|
|
functionToCall: async () => {
|
|
await bundleAndReloadWebsite();
|
|
},
|
|
timeout: null,
|
|
}));
|
|
this.watcherMap.add(new Watcher({
|
|
filePathToWatch: plugins.path.join(paths.cwd, './html/'),
|
|
functionToCall: async () => {
|
|
await htmlHandler.processHtml({
|
|
from: plugins.path.join(paths.cwd, './html/index.html'),
|
|
to: plugins.path.join(paths.cwd, './dist_serve/index.html'),
|
|
minify: false,
|
|
});
|
|
await bundleAndReloadWebsite();
|
|
},
|
|
timeout: null,
|
|
}));
|
|
})();
|
|
break;
|
|
case 'service':
|
|
this.watcherMap.add(new Watcher({
|
|
filePathToWatch: plugins.path.join(paths.cwd, './ts/'),
|
|
commandToExecute: 'npm run startTs',
|
|
timeout: null,
|
|
}));
|
|
break;
|
|
case 'echo':
|
|
const tsWatchInstanceEchoSomething = new Watcher({
|
|
filePathToWatch: plugins.path.join(paths.cwd, './ts'),
|
|
commandToExecute: 'npm -v',
|
|
timeout: null,
|
|
});
|
|
this.watcherMap.add(tsWatchInstanceEchoSomething);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
this.watcherMap.forEach(async (watcher) => {
|
|
await watcher.start();
|
|
});
|
|
if (this.typedserver) {
|
|
await this.typedserver.start();
|
|
}
|
|
}
|
|
/**
|
|
* stops the execution of any active Watchers
|
|
*/
|
|
async stop() {
|
|
if (this.typedserver) {
|
|
await this.typedserver.stop();
|
|
}
|
|
this.watcherMap.forEach(async (watcher) => {
|
|
await watcher.stop();
|
|
});
|
|
}
|
|
}
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHN3YXRjaC5jbGFzc2VzLnRzd2F0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy90c3dhdGNoLmNsYXNzZXMudHN3YXRjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxLQUFLLE1BQU0sb0JBQW9CLENBQUM7QUFDNUMsT0FBTyxLQUFLLFVBQVUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFdkQsTUFBTSxPQUFPLE9BQU87SUFLbEIsWUFBWSxZQUFvQztRQUh6QyxlQUFVLEdBQUcsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBVyxDQUFDO1FBSXZELElBQUksQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxLQUFLO1FBQ2hCLE1BQU0sUUFBUSxHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqRCxNQUFNLFdBQVcsR0FBRyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdkQsUUFBUSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDdkIsS0FBSyxNQUFNO2dCQUNUOzttQkFFRztnQkFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FDakIsSUFBSSxPQUFPLENBQUM7b0JBQ1YsZUFBZSxFQUFFLEtBQUssQ0FBQyxHQUFHO29CQUMxQixnQkFBZ0IsRUFBRSxlQUFlO29CQUNqQyxPQUFPLEVBQUUsSUFBSTtpQkFDZCxDQUFDLENBQ0gsQ0FBQztnQkFDRixNQUFNO1lBQ1IsS0FBSyxNQUFNO2dCQUNULElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUNqQixJQUFJLE9BQU8sQ0FBQztvQkFDVixlQUFlLEVBQUUsS0FBSyxD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
|