LAB / EXPLORATION
TypeScript Lab: Flatten Parent Tree
Planned
LAB 103 — Tree Structures
Move a parent under another parent while preserving two levels.
LAB
TypeScript Lab: Flatten Parent Tree
Preview coming soon
TypeScript Lab: Flatten Parent Tree
Concept
Flattening prevents deeper nesting by promoting existing children beside the moved node.
Concept
Flattening prevents deeper nesting by promoting existing children beside the moved node.
Objective & Explanation
What the project should make visible and why the concept matters.Learning Target
Objective
Move a parent under another parent while preserving two levels.
Explanation
Flattening prevents deeper nesting by promoting existing children beside the moved node.
Project Plan
Structure, technologies, data boundary, and source connection.Build Instructions
Build only the focused behavior, then use the visual layer to inspect it.Setup
Create the standalone project folder and listed files.Install TypeScript locally and initialize the compiler configuration.
Implement
Implement the smallest version that demonstrates the concept.- Use dedicated learning rows in SQLite; keep destructive practice isolated from important records.
- Implement the focused query or persistence operation in TypeScript.
Run & Inspect
Render the returned or changed data in the browser.Change one input or action and confirm the visible result changes for the expected reason.
Code & Configuration
Starter configuration plus the focused implementation example.Focused TypeScript
Implement this behavior first, then alter the input.for (const child of oldChildren) {
database.prepare(`
UPDATE content_nodes
SET parent_id = ?, sort_order = ?
WHERE id = ?
`).run(targetParentId, nextOrder, child.id);
nextOrder += 10;
}Starter Configuration
Keep the project independently buildable.package.json
{
"type": "module",
"scripts": {
"build": "tsc",
"start": "npm run build && node --enable-source-maps dist/server.js"
},
"devDependencies": {
"@types/node": "^26.4.0",
"typescript": "^7.0.2"
}
}tsconfig.json
{
"compilerOptions": {
"rootDir": "./src",
"outDir": "./dist",
"target": "ES2022",
"module": "ES2022",
"lib": ["ES2022", "DOM"],
"types": ["node"],
"strict": true,
"sourceMap": true
},
"include": ["src/**/*.ts"]
}Expected Visual Result
The output is the proof that the concept is working.Visible Proof
The browser should visibly demonstrate: move a parent under another parent while preserving two levels.
Data: SQLite