A comprehensive web component compiler that transforms TypeScript and JSX code into standards-compliant web components with complete development toolchain.
75
Build a development workflow automation tool that monitors a Stencil component library project during development and provides real-time feedback on build status.
Your solution should implement the following functionality:
Watch Mode Setup: Create a module that can start a watch process for a Stencil project during development. The watch process should monitor source files and automatically recompile when changes are detected.
Build Status Monitoring: Implement functionality to track and report the build status. The system should be able to detect when:
Development Configuration: Ensure the watch process runs in development mode, which includes source maps and debugging information for easier troubleshooting.
Process Management: Implement proper process lifecycle management:
Create a TypeScript module dev-workflow.ts that exports the following:
startDevWatch() that initiates the watch process and returns a handle for managing itgetLastBuildStatus() that returns the status of the most recent build (e.g., "success", "error", "building")stopWatch() that terminates the watch processThe module should handle the standard output from the build tool to determine build status.
File: dev-workflow.test.ts
import { startDevWatch, getLastBuildStatus } from './dev-workflow';
test('should start watch mode successfully', async () => {
const handle = await startDevWatch();
expect(handle).toBeDefined();
expect(handle.isRunning).toBe(true);
});File: dev-workflow.test.ts
import { startDevWatch, getLastBuildStatus } from './dev-workflow';
test('should detect when build completes', async () => {
await startDevWatch();
// Wait for initial build
await new Promise(resolve => setTimeout(resolve, 5000));
const status = getLastBuildStatus();
expect(['success', 'error']).toContain(status);
});File: dev-workflow.test.ts
import { startDevWatch, stopWatch } from './dev-workflow';
test('should stop watch process cleanly', async () => {
const handle = await startDevWatch();
await stopWatch();
expect(handle.isRunning).toBe(false);
});Provides the build tooling and watch command for component compilation.
stencil.config.ts file exists in the project rootInstall with Tessl CLI
npx tessl i tessl/npm-stencil--coredocs
evals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
scenario-10