BREAKING CHANGE(protocol): Introduce protocol v2 implementation and update build configuration with revised build order, new tspublish files, and enhanced documentation
This commit is contained in:
		| @@ -40,9 +40,17 @@ This project integrates tstest with tapbundle through a modular architecture: | ||||
|    - Automatically detects browser environment and only enables in browser context | ||||
|  | ||||
| 3. **Build System** | ||||
|    - Uses `tsbuild tsfolders` to compile TypeScript | ||||
|    - Maintains separate output directories: `/dist_ts/`, `/dist_ts_tapbundle/`, `/dist_ts_tapbundle_node/` | ||||
|    - Compilation order is resolved automatically based on dependencies | ||||
|    - Uses `tsbuild tsfolders` to compile TypeScript (invoked by `pnpm build`) | ||||
|    - Maintains separate output directories: `/dist_ts/`, `/dist_ts_tapbundle/`, `/dist_ts_tapbundle_node/`, `/dist_ts_tapbundle_protocol/` | ||||
|    - Compilation order is resolved automatically based on dependencies in tspublish.json files | ||||
|    - Protocol imports use compiled dist directories: | ||||
|      ```typescript | ||||
|      // In ts/tstest.classes.tap.parser.ts | ||||
|      import { ProtocolParser } from '../dist_ts_tapbundle_protocol/index.js'; | ||||
|       | ||||
|      // In ts_tapbundle/tapbundle.classes.tap.ts   | ||||
|      import { ProtocolEmitter } from '../dist_ts_tapbundle_protocol/index.js'; | ||||
|      ``` | ||||
|  | ||||
| ### Test Scripts | ||||
|  | ||||
| @@ -102,6 +110,19 @@ A new internal protocol is being designed that will: | ||||
| - Use Unicode delimiters `⟦TSTEST:⟧` that won't conflict with test content | ||||
| - Support structured JSON metadata | ||||
| - Allow rich error reporting with stack traces and diffs | ||||
| - Maintain backwards compatibility during migration | ||||
| - Completely replace v1 protocol (no backwards compatibility) | ||||
|  | ||||
| See `readme.protocol.md` for the full specification and `tapbundle.protocols.ts` for the implementation utilities. | ||||
| ### ts_tapbundle_protocol Directory | ||||
| The protocol v2 implementation is contained in a separate `ts_tapbundle_protocol` directory: | ||||
| - **Isomorphic Code**: All protocol code works in both browser and Node.js environments | ||||
| - **No Platform Dependencies**: No Node.js-specific imports, ensuring true cross-platform compatibility | ||||
| - **Clean Separation**: Protocol logic is isolated from platform-specific code in tstest and tapbundle | ||||
| - **Shared Implementation**: Both tstest (parser) and tapbundle (emitter) use the same protocol classes | ||||
| - **Build Process**:  | ||||
|   - Compiled by `pnpm build` via tsbuild to `dist_ts_tapbundle_protocol/` | ||||
|   - Build order managed through tspublish.json files | ||||
|   - Other modules import from the compiled dist directory, not source | ||||
|  | ||||
| This architectural decision ensures the protocol can be used in any JavaScript environment without modification and maintains proper build dependencies. | ||||
|  | ||||
| See `readme.protocol.md` for the full specification and `ts_tapbundle_protocol/` for the implementation. | ||||
		Reference in New Issue
	
	Block a user