@tannerbroberts/about-time-core 0.1.0 → 0.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/README.md +104 -16
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -3
- package/dist/index.js.map +1 -1
- package/dist/templates/createBusyTemplate.d.ts +1 -0
- package/dist/templates/createBusyTemplate.d.ts.map +1 -1
- package/dist/templates/createBusyTemplate.js +4 -0
- package/dist/templates/createBusyTemplate.js.map +1 -1
- package/dist/templates/createLaneTemplate.d.ts +1 -0
- package/dist/templates/createLaneTemplate.d.ts.map +1 -1
- package/dist/templates/createLaneTemplate.js +4 -0
- package/dist/templates/createLaneTemplate.js.map +1 -1
- package/dist/templates/index.d.ts +4 -5
- package/dist/templates/index.d.ts.map +1 -1
- package/dist/templates/index.js +7 -2
- package/dist/templates/index.js.map +1 -1
- package/dist/templates/layout/addSegmentToEnd.d.ts.map +1 -1
- package/dist/templates/layout/addSegmentToEnd.js +6 -0
- package/dist/templates/layout/addSegmentToEnd.js.map +1 -1
- package/dist/templates/layout/applyLaneLayout.d.ts.map +1 -1
- package/dist/templates/layout/applyLaneLayout.js +4 -1
- package/dist/templates/layout/applyLaneLayout.js.map +1 -1
- package/dist/templates/layout/fitLaneDurationToLast.d.ts.map +1 -1
- package/dist/templates/layout/fitLaneDurationToLast.js +3 -0
- package/dist/templates/layout/fitLaneDurationToLast.js.map +1 -1
- package/dist/templates/layout/index.d.ts +2 -0
- package/dist/templates/layout/index.d.ts.map +1 -1
- package/dist/templates/layout/index.js +2 -0
- package/dist/templates/layout/index.js.map +1 -1
- package/dist/templates/layout/insertGap.d.ts +3 -3
- package/dist/templates/layout/insertGap.d.ts.map +1 -1
- package/dist/templates/layout/insertGap.js +7 -13
- package/dist/templates/layout/insertGap.js.map +1 -1
- package/dist/templates/layout/insertSegmentAt.d.ts.map +1 -1
- package/dist/templates/layout/insertSegmentAt.js +3 -0
- package/dist/templates/layout/insertSegmentAt.js.map +1 -1
- package/dist/templates/layout/pushSegmentToStart.d.ts.map +1 -1
- package/dist/templates/layout/pushSegmentToStart.js +3 -0
- package/dist/templates/layout/pushSegmentToStart.js.map +1 -1
- package/dist/templates/layout/visualizeLane.d.ts +31 -0
- package/dist/templates/layout/visualizeLane.d.ts.map +1 -0
- package/dist/templates/layout/visualizeLane.js +163 -0
- package/dist/templates/layout/visualizeLane.js.map +1 -0
- package/dist/templates/layout/visualizeLaneIds.d.ts +28 -0
- package/dist/templates/layout/visualizeLaneIds.d.ts.map +1 -0
- package/dist/templates/layout/visualizeLaneIds.js +176 -0
- package/dist/templates/layout/visualizeLaneIds.js.map +1 -0
- package/dist/types/validation.d.ts +8 -1
- package/dist/types/validation.d.ts.map +1 -1
- package/dist/validation/validateLane.d.ts.map +1 -1
- package/dist/validation/validateLane.js +10 -0
- package/dist/validation/validateLane.js.map +1 -1
- package/package.json +5 -1
package/README.md
CHANGED
|
@@ -8,41 +8,129 @@ Core template operations and validation for about-time.
|
|
|
8
8
|
npm install @tannerbroberts/about-time-core
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
+
## Core Concepts
|
|
12
|
+
|
|
13
|
+
Templates represent scheduled activities. There are two types:
|
|
14
|
+
|
|
15
|
+
- **BusyTemplate**: An atomic task with a duration (e.g., "Boil water for 5 minutes")
|
|
16
|
+
- **LaneTemplate**: A container that holds other templates at specific time offsets
|
|
17
|
+
|
|
18
|
+
### Visual Representation
|
|
19
|
+
|
|
20
|
+
> ⚠️ **Note**: The `visualizeLane` function is a **debugging/development utility only**. It's useful for understanding lane structures during development, but production applications should use a proper frontend UI for visualization.
|
|
21
|
+
|
|
22
|
+
Templates can be visualized using ASCII art where each character represents 1 second:
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
█░██ ← grandchild busy templates
|
|
26
|
+
░______░░░░ ← child lane segment
|
|
27
|
+
____________ ← root lane (12 seconds)
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Legend:
|
|
31
|
+
- `█` = busy template (active work)
|
|
32
|
+
- `_` = lane template (container)
|
|
33
|
+
- `░` = empty space (gap within a lane)
|
|
34
|
+
- ` ` = outside the lane's span
|
|
35
|
+
|
|
11
36
|
## Usage
|
|
12
37
|
|
|
13
38
|
```typescript
|
|
14
39
|
import {
|
|
15
40
|
createBusyTemplate,
|
|
16
41
|
createLaneTemplate,
|
|
17
|
-
|
|
18
|
-
validateVariableNames,
|
|
42
|
+
visualizeLane,
|
|
19
43
|
TemplateMap,
|
|
20
44
|
} from '@tannerbroberts/about-time-core';
|
|
21
45
|
|
|
22
|
-
// Initialize template storage
|
|
23
46
|
const templates: TemplateMap = {};
|
|
24
47
|
|
|
25
|
-
// Create
|
|
26
|
-
const
|
|
48
|
+
// Create busy templates
|
|
49
|
+
const prep = createBusyTemplate({
|
|
50
|
+
intent: 'Prep ingredients',
|
|
51
|
+
estimatedDuration: 2000, // 2 seconds
|
|
52
|
+
}, templates, crypto.randomUUID);
|
|
53
|
+
|
|
54
|
+
const cook = createBusyTemplate({
|
|
55
|
+
intent: 'Cook',
|
|
56
|
+
estimatedDuration: 3000, // 3 seconds
|
|
57
|
+
}, templates, crypto.randomUUID);
|
|
58
|
+
|
|
59
|
+
// Create a lane to organize the tasks
|
|
60
|
+
const recipe = createLaneTemplate({
|
|
61
|
+
intent: 'Make dinner',
|
|
62
|
+
estimatedDuration: 8000, // 8 seconds
|
|
63
|
+
segments: [
|
|
64
|
+
{ templateId: prep.id, relationshipId: 'r1', offset: 0 },
|
|
65
|
+
{ templateId: cook.id, relationshipId: 'r2', offset: 3000 },
|
|
66
|
+
],
|
|
67
|
+
}, templates, crypto.randomUUID);
|
|
68
|
+
|
|
69
|
+
// Visualize the lane
|
|
70
|
+
console.log(visualizeLane(recipe.id, templates));
|
|
71
|
+
// Output:
|
|
72
|
+
// ██░███░░
|
|
73
|
+
// ________
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Nested Lanes
|
|
77
|
+
|
|
78
|
+
Lanes can contain other lanes, enabling complex scheduling hierarchies:
|
|
79
|
+
|
|
80
|
+
```typescript
|
|
81
|
+
const task = createBusyTemplate({
|
|
82
|
+
intent: 'Task',
|
|
83
|
+
estimatedDuration: 1000,
|
|
84
|
+
}, templates, crypto.randomUUID);
|
|
85
|
+
|
|
86
|
+
const innerLane = createLaneTemplate({
|
|
87
|
+
intent: 'Inner',
|
|
88
|
+
estimatedDuration: 2000,
|
|
89
|
+
segments: [{ templateId: task.id, relationshipId: 'r1', offset: 0 }],
|
|
90
|
+
}, templates, crypto.randomUUID);
|
|
91
|
+
|
|
92
|
+
const middleLane = createLaneTemplate({
|
|
93
|
+
intent: 'Middle',
|
|
94
|
+
estimatedDuration: 4000,
|
|
95
|
+
segments: [{ templateId: innerLane.id, relationshipId: 'r2', offset: 1000 }],
|
|
96
|
+
}, templates, crypto.randomUUID);
|
|
97
|
+
|
|
98
|
+
const rootLane = createLaneTemplate({
|
|
99
|
+
intent: 'Root',
|
|
100
|
+
estimatedDuration: 6000,
|
|
101
|
+
segments: [{ templateId: middleLane.id, relationshipId: 'r3', offset: 1000 }],
|
|
102
|
+
}, templates, crypto.randomUUID);
|
|
103
|
+
|
|
104
|
+
console.log(visualizeLane(rootLane.id, templates));
|
|
105
|
+
// Output:
|
|
106
|
+
// █░ ← task (deepest)
|
|
107
|
+
// ░__░ ← inner lane
|
|
108
|
+
// ░____░ ← middle lane
|
|
109
|
+
// ______ ← root lane
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Resource Management
|
|
113
|
+
|
|
114
|
+
Templates can track resource consumption and production:
|
|
115
|
+
|
|
116
|
+
```typescript
|
|
117
|
+
const boilWater = createBusyTemplate({
|
|
27
118
|
intent: 'Boil water',
|
|
28
|
-
estimatedDuration:
|
|
119
|
+
estimatedDuration: 5000,
|
|
29
120
|
willConsume: { water_cups: 2, clean_pot: 1 },
|
|
30
121
|
willProduce: { boiling_water_cups: 2 },
|
|
31
122
|
}, templates, crypto.randomUUID);
|
|
32
|
-
|
|
33
|
-
// Validate variable names
|
|
34
|
-
const validation = validateVariableNames(template.willConsume);
|
|
35
|
-
if (!validation.isValid) {
|
|
36
|
-
console.error(validation.errors);
|
|
37
|
-
}
|
|
38
123
|
```
|
|
39
124
|
|
|
40
125
|
## Exports
|
|
41
126
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
127
|
+
| Path | Description |
|
|
128
|
+
|------|-------------|
|
|
129
|
+
| `@tannerbroberts/about-time-core` | Everything |
|
|
130
|
+
| `@tannerbroberts/about-time-core/types` | Type definitions only |
|
|
131
|
+
| `@tannerbroberts/about-time-core/templates` | Template CRUD + layout operations |
|
|
132
|
+
| `@tannerbroberts/about-time-core/layout` | Layout utilities only (visualizeLane, packSegments, etc.) |
|
|
133
|
+
| `@tannerbroberts/about-time-core/validation` | Validation functions |
|
|
46
134
|
|
|
47
135
|
## Documentation
|
|
48
136
|
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,kBAAkB,CAAC;AAGjC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,uBAAuB,CAAC
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,kBAAkB,CAAC;AAGjC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,uBAAuB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
// Types
|
|
2
2
|
export * from './types/index.js';
|
|
3
|
-
// Template operations
|
|
3
|
+
// Template operations (CRUD + Layout)
|
|
4
4
|
export * from './templates/index.js';
|
|
5
5
|
// Validation
|
|
6
6
|
export * from './validation/index.js';
|
|
7
|
-
// Layout utilities
|
|
8
|
-
export * from './templates/layout/index.js';
|
|
9
7
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,QAAQ;AACR,cAAc,kBAAkB,CAAC;AAEjC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,QAAQ;AACR,cAAc,kBAAkB,CAAC;AAEjC,sCAAsC;AACtC,cAAc,sBAAsB,CAAC;AAErC,aAAa;AACb,cAAc,uBAAuB,CAAC"}
|
|
@@ -15,6 +15,7 @@ export type IdGenerator = () => string;
|
|
|
15
15
|
* @param templates - Template map to add to (mutated in place)
|
|
16
16
|
* @param generateId - Function to generate unique IDs (e.g., crypto.randomUUID)
|
|
17
17
|
* @returns The created BusyTemplate
|
|
18
|
+
* @throws Error if estimatedDuration is 0 or not specified
|
|
18
19
|
*/
|
|
19
20
|
export declare function createBusyTemplate(input: CreateBusyTemplateInput, templates: TemplateMap, generateId: IdGenerator): BusyTemplate;
|
|
20
21
|
//# sourceMappingURL=createBusyTemplate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createBusyTemplate.d.ts","sourceRoot":"","sources":["../../src/templates/createBusyTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAEhG,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,QAAQ,CAAC;IAC5B,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,CAAC,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC;AAEvC
|
|
1
|
+
{"version":3,"file":"createBusyTemplate.d.ts","sourceRoot":"","sources":["../../src/templates/createBusyTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAEhG,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,QAAQ,CAAC;IAC5B,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,CAAC,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC;AAEvC;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,uBAAuB,EAC9B,SAAS,EAAE,WAAW,EACtB,UAAU,EAAE,WAAW,GACtB,YAAY,CAkBd"}
|
|
@@ -6,8 +6,12 @@
|
|
|
6
6
|
* @param templates - Template map to add to (mutated in place)
|
|
7
7
|
* @param generateId - Function to generate unique IDs (e.g., crypto.randomUUID)
|
|
8
8
|
* @returns The created BusyTemplate
|
|
9
|
+
* @throws Error if estimatedDuration is 0 or not specified
|
|
9
10
|
*/
|
|
10
11
|
export function createBusyTemplate(input, templates, generateId) {
|
|
12
|
+
if (!input.estimatedDuration || input.estimatedDuration <= 0) {
|
|
13
|
+
throw new Error('Template duration must be greater than 0');
|
|
14
|
+
}
|
|
11
15
|
const template = {
|
|
12
16
|
templateType: 'busy',
|
|
13
17
|
id: generateId(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createBusyTemplate.js","sourceRoot":"","sources":["../../src/templates/createBusyTemplate.ts"],"names":[],"mappings":"AAYA
|
|
1
|
+
{"version":3,"file":"createBusyTemplate.js","sourceRoot":"","sources":["../../src/templates/createBusyTemplate.ts"],"names":[],"mappings":"AAYA;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAA8B,EAC9B,SAAsB,EACtB,UAAuB;IAEvB,IAAI,CAAC,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,iBAAiB,IAAI,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,QAAQ,GAAiB;QAC7B,YAAY,EAAE,MAAM;QACpB,EAAE,EAAE,UAAU,EAAE;QAChB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,SAAS;QACrC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,UAAU,EAAE,EAAE;QACd,WAAW,EAAE,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE;QACrC,WAAW,EAAE,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE;KACtC,CAAC;IAEF,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;IAClC,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -14,6 +14,7 @@ export type IdGenerator = () => string;
|
|
|
14
14
|
* @param templates - Template map to add to (mutated in place)
|
|
15
15
|
* @param generateId - Function to generate unique IDs
|
|
16
16
|
* @returns The created LaneTemplate
|
|
17
|
+
* @throws Error if estimatedDuration is 0 or not specified
|
|
17
18
|
*/
|
|
18
19
|
export declare function createLaneTemplate(input: CreateLaneTemplateInput, templates: TemplateMap, generateId: IdGenerator): LaneTemplate;
|
|
19
20
|
//# sourceMappingURL=createLaneTemplate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createLaneTemplate.d.ts","sourceRoot":"","sources":["../../src/templates/createLaneTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE5F,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,QAAQ,CAAC;IAC5B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC;AAEvC
|
|
1
|
+
{"version":3,"file":"createLaneTemplate.d.ts","sourceRoot":"","sources":["../../src/templates/createLaneTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE5F,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,QAAQ,CAAC;IAC5B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC;AAEvC;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,uBAAuB,EAC9B,SAAS,EAAE,WAAW,EACtB,UAAU,EAAE,WAAW,GACtB,YAAY,CA4Bd"}
|
|
@@ -6,8 +6,12 @@
|
|
|
6
6
|
* @param templates - Template map to add to (mutated in place)
|
|
7
7
|
* @param generateId - Function to generate unique IDs
|
|
8
8
|
* @returns The created LaneTemplate
|
|
9
|
+
* @throws Error if estimatedDuration is 0 or not specified
|
|
9
10
|
*/
|
|
10
11
|
export function createLaneTemplate(input, templates, generateId) {
|
|
12
|
+
if (!input.estimatedDuration || input.estimatedDuration <= 0) {
|
|
13
|
+
throw new Error('Template duration must be greater than 0');
|
|
14
|
+
}
|
|
11
15
|
const template = {
|
|
12
16
|
templateType: 'lane',
|
|
13
17
|
id: generateId(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createLaneTemplate.js","sourceRoot":"","sources":["../../src/templates/createLaneTemplate.ts"],"names":[],"mappings":"AAWA
|
|
1
|
+
{"version":3,"file":"createLaneTemplate.js","sourceRoot":"","sources":["../../src/templates/createLaneTemplate.ts"],"names":[],"mappings":"AAWA;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAA8B,EAC9B,SAAsB,EACtB,UAAuB;IAEvB,IAAI,CAAC,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,iBAAiB,IAAI,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,QAAQ,GAAiB;QAC7B,YAAY,EAAE,MAAM;QACpB,EAAE,EAAE,UAAU,EAAE;QAChB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,SAAS;QACrC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,UAAU,EAAE,EAAE;QACd,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;KAC9C,CAAC;IAEF,+DAA+D;IAC/D,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC5C,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;gBACpB,QAAQ,EAAE,QAAQ,CAAC,EAAE;gBACrB,cAAc,EAAE,OAAO,CAAC,cAAc;aACvC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;IAClC,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
export { createBusyTemplate } from './createBusyTemplate.js';
|
|
2
|
-
export type { CreateBusyTemplateInput } from './createBusyTemplate.js';
|
|
2
|
+
export type { CreateBusyTemplateInput, IdGenerator } from './createBusyTemplate.js';
|
|
3
3
|
export { createLaneTemplate } from './createLaneTemplate.js';
|
|
4
4
|
export type { CreateLaneTemplateInput } from './createLaneTemplate.js';
|
|
5
5
|
export { getTemplateById } from './getTemplateById.js';
|
|
6
6
|
export { getTemplates } from './getTemplates.js';
|
|
7
7
|
export type { GetTemplatesOptions } from './getTemplates.js';
|
|
8
8
|
export { searchTemplates } from './searchTemplates.js';
|
|
9
|
+
export { getVocabulary } from './getVocabulary.js';
|
|
9
10
|
export { updateTemplate } from './updateTemplate.js';
|
|
10
|
-
export type {
|
|
11
|
+
export type { BusyTemplateUpdates, LaneTemplateUpdates, TemplateUpdates, UpdateTemplateResult, } from './updateTemplate.js';
|
|
12
|
+
export * from './layout/index.js';
|
|
11
13
|
export { deleteTemplate } from './deleteTemplate.js';
|
|
12
14
|
export type { DeleteTemplateResult } from './deleteTemplate.js';
|
|
13
|
-
export { getVocabulary } from './getVocabulary.js';
|
|
14
|
-
export * from './layout/index.js';
|
|
15
|
-
export type { IdGenerator } from './createBusyTemplate.js';
|
|
16
15
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,YAAY,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,YAAY,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAGvE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EACV,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAG7B,cAAc,mBAAmB,CAAC;AAGlC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/templates/index.js
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
|
+
// ==================== CREATE ====================
|
|
1
2
|
export { createBusyTemplate } from './createBusyTemplate.js';
|
|
2
3
|
export { createLaneTemplate } from './createLaneTemplate.js';
|
|
4
|
+
// ==================== READ ====================
|
|
3
5
|
export { getTemplateById } from './getTemplateById.js';
|
|
4
6
|
export { getTemplates } from './getTemplates.js';
|
|
5
7
|
export { searchTemplates } from './searchTemplates.js';
|
|
6
|
-
export { updateTemplate } from './updateTemplate.js';
|
|
7
|
-
export { deleteTemplate } from './deleteTemplate.js';
|
|
8
8
|
export { getVocabulary } from './getVocabulary.js';
|
|
9
|
+
// ==================== UPDATE ====================
|
|
10
|
+
export { updateTemplate } from './updateTemplate.js';
|
|
11
|
+
// Layout helpers (Update operations)
|
|
9
12
|
export * from './layout/index.js';
|
|
13
|
+
// ==================== DELETE ====================
|
|
14
|
+
export { deleteTemplate } from './deleteTemplate.js';
|
|
10
15
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG7D,iDAAiD;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,mDAAmD;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAQrD,qCAAqC;AACrC,cAAc,mBAAmB,CAAC;AAElC,mDAAmD;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addSegmentToEnd.d.ts","sourceRoot":"","sources":["../../../src/templates/layout/addSegmentToEnd.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGlG;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,UAAU,EACnB,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,WAAW,GACrB,YAAY,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"addSegmentToEnd.d.ts","sourceRoot":"","sources":["../../../src/templates/layout/addSegmentToEnd.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGlG;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,UAAU,EACnB,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,WAAW,GACrB,YAAY,GAAG,IAAI,CA0CrB"}
|
|
@@ -14,11 +14,17 @@ export function addSegmentToEnd(laneId, childId, relationshipId, templates) {
|
|
|
14
14
|
if (!lane || !isLaneTemplate(lane) || !child) {
|
|
15
15
|
return null;
|
|
16
16
|
}
|
|
17
|
+
if (child.estimatedDuration <= 0) {
|
|
18
|
+
throw new Error(`Template "${child.intent}" (${child.id}) has zero or negative duration`);
|
|
19
|
+
}
|
|
17
20
|
// Calculate current end time
|
|
18
21
|
let maxEndTime = 0;
|
|
19
22
|
for (const segment of lane.segments) {
|
|
20
23
|
const segmentChild = templates[segment.templateId];
|
|
21
24
|
if (segmentChild) {
|
|
25
|
+
if (segmentChild.estimatedDuration <= 0) {
|
|
26
|
+
throw new Error(`Template "${segmentChild.intent}" (${segmentChild.id}) has zero or negative duration`);
|
|
27
|
+
}
|
|
22
28
|
const endTime = segment.offset + segmentChild.estimatedDuration;
|
|
23
29
|
if (endTime > maxEndTime) {
|
|
24
30
|
maxEndTime = endTime;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addSegmentToEnd.js","sourceRoot":"","sources":["../../../src/templates/layout/addSegmentToEnd.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAkB,EAClB,OAAmB,EACnB,cAA8B,EAC9B,SAAsB;IAEtB,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAEjC,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,6BAA6B;IAC7B,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpC,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACnD,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,YAAY,CAAC,iBAAiB,CAAC;YAChE,IAAI,OAAO,GAAG,UAAU,EAAE,CAAC;gBACzB,UAAU,GAAG,OAAO,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG;QACjB,UAAU,EAAE,OAAO;QACnB,cAAc;QACd,MAAM,EAAE,UAAU;KACnB,CAAC;IAEF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAE/B,iBAAiB;IACjB,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;QACpB,QAAQ,EAAE,MAAM;QAChB,cAAc;KACf,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
1
|
+
{"version":3,"file":"addSegmentToEnd.js","sourceRoot":"","sources":["../../../src/templates/layout/addSegmentToEnd.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAkB,EAClB,OAAmB,EACnB,cAA8B,EAC9B,SAAsB;IAEtB,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAEjC,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,KAAK,CAAC,iBAAiB,IAAI,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,aAAa,KAAK,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,iCAAiC,CAAC,CAAC;IAC5F,CAAC;IAED,6BAA6B;IAC7B,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpC,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACnD,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,YAAY,CAAC,iBAAiB,IAAI,CAAC,EAAE,CAAC;gBACxC,MAAM,IAAI,KAAK,CAAC,aAAa,YAAY,CAAC,MAAM,MAAM,YAAY,CAAC,EAAE,iCAAiC,CAAC,CAAC;YAC1G,CAAC;YACD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,YAAY,CAAC,iBAAiB,CAAC;YAChE,IAAI,OAAO,GAAG,UAAU,EAAE,CAAC;gBACzB,UAAU,GAAG,OAAO,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG;QACjB,UAAU,EAAE,OAAO;QACnB,cAAc;QACd,MAAM,EAAE,UAAU;KACnB,CAAC;IAEF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAE/B,iBAAiB;IACjB,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;QACpB,QAAQ,EAAE,MAAM;QAChB,cAAc;KACf,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"applyLaneLayout.d.ts","sourceRoot":"","sources":["../../../src/templates/layout/applyLaneLayout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAG5F,MAAM,WAAW,iBAAiB;IAChC,cAAc,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,eAAe,GAAG,cAAc,GAAG,cAAc,CAAC;IAChG,GAAG,CAAC,EAAE,QAAQ,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,WAAW,EACtB,OAAO,GAAE,iBAAsB,GAC9B,YAAY,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"applyLaneLayout.d.ts","sourceRoot":"","sources":["../../../src/templates/layout/applyLaneLayout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAG5F,MAAM,WAAW,iBAAiB;IAChC,cAAc,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,eAAe,GAAG,cAAc,GAAG,cAAc,CAAC;IAChG,GAAG,CAAC,EAAE,QAAQ,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,WAAW,EACtB,OAAO,GAAE,iBAAsB,GAC9B,YAAY,GAAG,IAAI,CAwErB"}
|
|
@@ -19,9 +19,12 @@ export function applyLaneLayout(laneId, templates, options = {}) {
|
|
|
19
19
|
const { justifyContent = 'start', gap = 0 } = options;
|
|
20
20
|
// Sort segments by current offset to maintain relative order
|
|
21
21
|
const sortedSegments = [...lane.segments].sort((a, b) => a.offset - b.offset);
|
|
22
|
-
// Calculate total duration of children
|
|
22
|
+
// Calculate total duration of children (throw if zero-duration found)
|
|
23
23
|
const childDurations = sortedSegments.map(s => {
|
|
24
24
|
const child = templates[s.templateId];
|
|
25
|
+
if (child && child.estimatedDuration <= 0) {
|
|
26
|
+
throw new Error(`Template "${child.intent}" (${child.id}) has zero or negative duration`);
|
|
27
|
+
}
|
|
25
28
|
return child ? child.estimatedDuration : 0;
|
|
26
29
|
});
|
|
27
30
|
const totalChildDuration = childDurations.reduce((sum, d) => sum + d, 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"applyLaneLayout.js","sourceRoot":"","sources":["../../../src/templates/layout/applyLaneLayout.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAOzD;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAkB,EAClB,SAAsB,EACtB,UAA6B,EAAE;IAE/B,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAC/B,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,EAAE,cAAc,GAAG,OAAO,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC;IAEtD,6DAA6D;IAC7D,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAE9E,
|
|
1
|
+
{"version":3,"file":"applyLaneLayout.js","sourceRoot":"","sources":["../../../src/templates/layout/applyLaneLayout.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fitLaneDurationToLast.d.ts","sourceRoot":"","sources":["../../../src/templates/layout/fitLaneDurationToLast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGlF;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,WAAW,GACrB,YAAY,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"fitLaneDurationToLast.d.ts","sourceRoot":"","sources":["../../../src/templates/layout/fitLaneDurationToLast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGlF;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,WAAW,GACrB,YAAY,GAAG,IAAI,CA2BrB"}
|
|
@@ -20,6 +20,9 @@ export function fitLaneDurationToLast(laneId, templates) {
|
|
|
20
20
|
for (const segment of lane.segments) {
|
|
21
21
|
const child = templates[segment.templateId];
|
|
22
22
|
if (child) {
|
|
23
|
+
if (child.estimatedDuration <= 0) {
|
|
24
|
+
throw new Error(`Template "${child.intent}" (${child.id}) has zero or negative duration`);
|
|
25
|
+
}
|
|
23
26
|
const endTime = segment.offset + child.estimatedDuration;
|
|
24
27
|
if (endTime > maxEndTime) {
|
|
25
28
|
maxEndTime = endTime;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fitLaneDurationToLast.js","sourceRoot":"","sources":["../../../src/templates/layout/fitLaneDurationToLast.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAkB,EAClB,SAAsB;IAEtB,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAC/B,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC5C,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,iBAAiB,CAAC;YACzD,IAAI,OAAO,GAAG,UAAU,EAAE,CAAC;gBACzB,UAAU,GAAG,OAAO,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC;IACpC,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
1
|
+
{"version":3,"file":"fitLaneDurationToLast.js","sourceRoot":"","sources":["../../../src/templates/layout/fitLaneDurationToLast.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAkB,EAClB,SAAsB;IAEtB,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAC/B,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC5C,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,KAAK,CAAC,iBAAiB,IAAI,CAAC,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CAAC,aAAa,KAAK,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,iCAAiC,CAAC,CAAC;YAC5F,CAAC;YACD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,iBAAiB,CAAC;YACzD,IAAI,OAAO,GAAG,UAAU,EAAE,CAAC;gBACzB,UAAU,GAAG,OAAO,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC;IACpC,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -7,4 +7,6 @@ export * from './insertGap.js';
|
|
|
7
7
|
export * from './addSegmentToEnd.js';
|
|
8
8
|
export * from './pushSegmentToStart.js';
|
|
9
9
|
export * from './insertSegmentAt.js';
|
|
10
|
+
export * from './visualizeLane.js';
|
|
11
|
+
export * from './visualizeLaneIds.js';
|
|
10
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/layout/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,yCAAyC,CAAC;AACxD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/layout/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,yCAAyC,CAAC;AACxD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC"}
|
|
@@ -7,4 +7,6 @@ export * from './insertGap.js';
|
|
|
7
7
|
export * from './addSegmentToEnd.js';
|
|
8
8
|
export * from './pushSegmentToStart.js';
|
|
9
9
|
export * from './insertSegmentAt.js';
|
|
10
|
+
export * from './visualizeLane.js';
|
|
11
|
+
export * from './visualizeLaneIds.js';
|
|
10
12
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/layout/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,yCAAyC,CAAC;AACxD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/layout/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,yCAAyC,CAAC;AACxD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { TemplateId, TemplateMap, LaneTemplate, Duration } from '../../types/index.js';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Inserts empty space before a specific segment by shifting it and all subsequent segments.
|
|
4
4
|
*
|
|
5
5
|
* @param laneId - ID of the lane
|
|
6
|
-
* @param
|
|
6
|
+
* @param beforeSegmentIndex - Index of the segment before which to insert the gap
|
|
7
7
|
* @param gapDuration - Duration of the gap to insert
|
|
8
8
|
* @param templates - Template map (mutated in place)
|
|
9
9
|
* @returns The updated LaneTemplate or null
|
|
10
10
|
*/
|
|
11
|
-
export declare function insertGap(laneId: TemplateId,
|
|
11
|
+
export declare function insertGap(laneId: TemplateId, beforeSegmentIndex: number, gapDuration: Duration, templates: TemplateMap): LaneTemplate | null;
|
|
12
12
|
//# sourceMappingURL=insertGap.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insertGap.d.ts","sourceRoot":"","sources":["../../../src/templates/layout/insertGap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAG5F;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CACvB,MAAM,EAAE,UAAU,EAClB,
|
|
1
|
+
{"version":3,"file":"insertGap.d.ts","sourceRoot":"","sources":["../../../src/templates/layout/insertGap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAG5F;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CACvB,MAAM,EAAE,UAAU,EAClB,kBAAkB,EAAE,MAAM,EAC1B,WAAW,EAAE,QAAQ,EACrB,SAAS,EAAE,WAAW,GACrB,YAAY,GAAG,IAAI,CAoBrB"}
|
|
@@ -1,30 +1,24 @@
|
|
|
1
1
|
import { isLaneTemplate } from '../../types/template.js';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Inserts empty space before a specific segment by shifting it and all subsequent segments.
|
|
4
4
|
*
|
|
5
5
|
* @param laneId - ID of the lane
|
|
6
|
-
* @param
|
|
6
|
+
* @param beforeSegmentIndex - Index of the segment before which to insert the gap
|
|
7
7
|
* @param gapDuration - Duration of the gap to insert
|
|
8
8
|
* @param templates - Template map (mutated in place)
|
|
9
9
|
* @returns The updated LaneTemplate or null
|
|
10
10
|
*/
|
|
11
|
-
export function insertGap(laneId,
|
|
11
|
+
export function insertGap(laneId, beforeSegmentIndex, gapDuration, templates) {
|
|
12
12
|
const lane = templates[laneId];
|
|
13
13
|
if (!lane || !isLaneTemplate(lane)) {
|
|
14
14
|
return null;
|
|
15
15
|
}
|
|
16
|
-
if (
|
|
16
|
+
if (beforeSegmentIndex < 0 || beforeSegmentIndex >= lane.segments.length) {
|
|
17
17
|
return null;
|
|
18
18
|
}
|
|
19
|
-
const targetSegment = lane.segments[
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
return null;
|
|
23
|
-
const shiftThreshold = targetSegment.offset + child.estimatedDuration;
|
|
24
|
-
for (let i = 0; i < lane.segments.length; i++) {
|
|
25
|
-
if (i === afterSegmentIndex)
|
|
26
|
-
continue;
|
|
27
|
-
const segment = lane.segments[i];
|
|
19
|
+
const targetSegment = lane.segments[beforeSegmentIndex];
|
|
20
|
+
const shiftThreshold = targetSegment.offset;
|
|
21
|
+
for (const segment of lane.segments) {
|
|
28
22
|
if (segment.offset >= shiftThreshold) {
|
|
29
23
|
segment.offset += gapDuration;
|
|
30
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insertGap.js","sourceRoot":"","sources":["../../../src/templates/layout/insertGap.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD;;;;;;;;GAQG;AACH,MAAM,UAAU,SAAS,CACvB,MAAkB,EAClB,
|
|
1
|
+
{"version":3,"file":"insertGap.js","sourceRoot":"","sources":["../../../src/templates/layout/insertGap.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD;;;;;;;;GAQG;AACH,MAAM,UAAU,SAAS,CACvB,MAAkB,EAClB,kBAA0B,EAC1B,WAAqB,EACrB,SAAsB;IAEtB,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAC/B,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,kBAAkB,GAAG,CAAC,IAAI,kBAAkB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACzE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IACxD,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC;IAE5C,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpC,IAAI,OAAO,CAAC,MAAM,IAAI,cAAc,EAAE,CAAC;YACrC,OAAO,CAAC,MAAM,IAAI,WAAW,CAAC;QAChC,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insertSegmentAt.d.ts","sourceRoot":"","sources":["../../../src/templates/layout/insertSegmentAt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAG5G;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,QAAQ,EAChB,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,WAAW,GACrB,YAAY,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"insertSegmentAt.d.ts","sourceRoot":"","sources":["../../../src/templates/layout/insertSegmentAt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAG5G;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,QAAQ,EAChB,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,WAAW,GACrB,YAAY,GAAG,IAAI,CAmCrB"}
|
|
@@ -16,6 +16,9 @@ export function insertSegmentAt(laneId, childId, offset, relationshipId, templat
|
|
|
16
16
|
if (!lane || !isLaneTemplate(lane) || !child) {
|
|
17
17
|
return null;
|
|
18
18
|
}
|
|
19
|
+
if (child.estimatedDuration <= 0) {
|
|
20
|
+
throw new Error(`Template "${child.intent}" (${child.id}) has zero or negative duration`);
|
|
21
|
+
}
|
|
19
22
|
const shiftAmount = child.estimatedDuration;
|
|
20
23
|
// Shift segments that start at or after the insertion offset
|
|
21
24
|
for (const segment of lane.segments) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insertSegmentAt.js","sourceRoot":"","sources":["../../../src/templates/layout/insertSegmentAt.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAkB,EAClB,OAAmB,EACnB,MAAgB,EAChB,cAA8B,EAC9B,SAAsB;IAEtB,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAEjC,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,iBAAiB,CAAC;IAE5C,6DAA6D;IAC7D,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpC,IAAI,OAAO,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC;YAC7B,OAAO,CAAC,MAAM,IAAI,WAAW,CAAC;QAChC,CAAC;IACH,CAAC;IAED,kBAAkB;IAClB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACjB,UAAU,EAAE,OAAO;QACnB,cAAc;QACd,MAAM;KACP,CAAC,CAAC;IAEH,iBAAiB;IACjB,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;QACpB,QAAQ,EAAE,MAAM;QAChB,cAAc;KACf,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
1
|
+
{"version":3,"file":"insertSegmentAt.js","sourceRoot":"","sources":["../../../src/templates/layout/insertSegmentAt.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAkB,EAClB,OAAmB,EACnB,MAAgB,EAChB,cAA8B,EAC9B,SAAsB;IAEtB,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAEjC,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,KAAK,CAAC,iBAAiB,IAAI,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,aAAa,KAAK,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,iCAAiC,CAAC,CAAC;IAC5F,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,iBAAiB,CAAC;IAE5C,6DAA6D;IAC7D,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpC,IAAI,OAAO,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC;YAC7B,OAAO,CAAC,MAAM,IAAI,WAAW,CAAC;QAChC,CAAC;IACH,CAAC;IAED,kBAAkB;IAClB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACjB,UAAU,EAAE,OAAO;QACnB,cAAc;QACd,MAAM;KACP,CAAC,CAAC;IAEH,iBAAiB;IACjB,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;QACpB,QAAQ,EAAE,MAAM;QAChB,cAAc;KACf,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pushSegmentToStart.d.ts","sourceRoot":"","sources":["../../../src/templates/layout/pushSegmentToStart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGlG;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,UAAU,EACnB,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,WAAW,GACrB,YAAY,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"pushSegmentToStart.d.ts","sourceRoot":"","sources":["../../../src/templates/layout/pushSegmentToStart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGlG;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,UAAU,EACnB,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,WAAW,GACrB,YAAY,GAAG,IAAI,CAiCrB"}
|
|
@@ -15,6 +15,9 @@ export function pushSegmentToStart(laneId, childId, relationshipId, templates) {
|
|
|
15
15
|
if (!lane || !isLaneTemplate(lane) || !child) {
|
|
16
16
|
return null;
|
|
17
17
|
}
|
|
18
|
+
if (child.estimatedDuration <= 0) {
|
|
19
|
+
throw new Error(`Template "${child.intent}" (${child.id}) has zero or negative duration`);
|
|
20
|
+
}
|
|
18
21
|
const shiftAmount = child.estimatedDuration;
|
|
19
22
|
// Shift existing segments
|
|
20
23
|
for (const segment of lane.segments) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pushSegmentToStart.js","sourceRoot":"","sources":["../../../src/templates/layout/pushSegmentToStart.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAkB,EAClB,OAAmB,EACnB,cAA8B,EAC9B,SAAsB;IAEtB,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAEjC,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,iBAAiB,CAAC;IAE5C,0BAA0B;IAC1B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpC,OAAO,CAAC,MAAM,IAAI,WAAW,CAAC;IAChC,CAAC;IAED,2BAA2B;IAC3B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QACpB,UAAU,EAAE,OAAO;QACnB,cAAc;QACd,MAAM,EAAE,CAAC;KACV,CAAC,CAAC;IAEH,iBAAiB;IACjB,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;QACpB,QAAQ,EAAE,MAAM;QAChB,cAAc;KACf,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
1
|
+
{"version":3,"file":"pushSegmentToStart.js","sourceRoot":"","sources":["../../../src/templates/layout/pushSegmentToStart.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAkB,EAClB,OAAmB,EACnB,cAA8B,EAC9B,SAAsB;IAEtB,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAEjC,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,KAAK,CAAC,iBAAiB,IAAI,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,aAAa,KAAK,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,iCAAiC,CAAC,CAAC;IAC5F,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,iBAAiB,CAAC;IAE5C,0BAA0B;IAC1B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpC,OAAO,CAAC,MAAM,IAAI,WAAW,CAAC;IAChC,CAAC;IAED,2BAA2B;IAC3B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QACpB,UAAU,EAAE,OAAO;QACnB,cAAc;QACd,MAAM,EAAE,CAAC;KACV,CAAC,CAAC;IAEH,iBAAiB;IACjB,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;QACpB,QAAQ,EAAE,MAAM;QAChB,cAAc;KACf,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { TemplateId, TemplateMap } from '../../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Generates a text-based visualization of a lane and its segments.
|
|
4
|
+
*
|
|
5
|
+
* **⚠️ DEBUG UTILITY ONLY** - This function is intended for development and
|
|
6
|
+
* debugging purposes. Production applications should use a proper frontend
|
|
7
|
+
* UI for visualization, not ASCII art.
|
|
8
|
+
*
|
|
9
|
+
* - 1 character = 1 second
|
|
10
|
+
* - `█` = busy template
|
|
11
|
+
* - `_` = lane template
|
|
12
|
+
* - `░` = empty space within a lane's span (gap)
|
|
13
|
+
* - ` ` = outside any lane's span at that level
|
|
14
|
+
*
|
|
15
|
+
* Segments render in layers above their parent lane, with the deepest
|
|
16
|
+
* children at the top and the root lane floor at the bottom.
|
|
17
|
+
*
|
|
18
|
+
* @param laneId - ID of the lane to visualize
|
|
19
|
+
* @param templates - Template map containing all referenced templates
|
|
20
|
+
* @returns Multi-line string visualization
|
|
21
|
+
* @throws Error if durations/offsets aren't whole seconds, overlaps exist, or templates are missing
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```
|
|
25
|
+
* █░██ ← grandchild busy templates
|
|
26
|
+
* ░______░░░░ ← child lane segment
|
|
27
|
+
* ____________ ← root lane
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export declare function visualizeLane(laneId: TemplateId, templates: TemplateMap): string;
|
|
31
|
+
//# sourceMappingURL=visualizeLane.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visualizeLane.d.ts","sourceRoot":"","sources":["../../../src/templates/layout/visualizeLane.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAgB,MAAM,sBAAsB,CAAC;AAKlF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,WAAW,GACrB,MAAM,CAgCR"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { isLaneTemplate, isBusyTemplate } from '../../types/template.js';
|
|
2
|
+
const MS_PER_CHAR = 1000;
|
|
3
|
+
/**
|
|
4
|
+
* Generates a text-based visualization of a lane and its segments.
|
|
5
|
+
*
|
|
6
|
+
* **⚠️ DEBUG UTILITY ONLY** - This function is intended for development and
|
|
7
|
+
* debugging purposes. Production applications should use a proper frontend
|
|
8
|
+
* UI for visualization, not ASCII art.
|
|
9
|
+
*
|
|
10
|
+
* - 1 character = 1 second
|
|
11
|
+
* - `█` = busy template
|
|
12
|
+
* - `_` = lane template
|
|
13
|
+
* - `░` = empty space within a lane's span (gap)
|
|
14
|
+
* - ` ` = outside any lane's span at that level
|
|
15
|
+
*
|
|
16
|
+
* Segments render in layers above their parent lane, with the deepest
|
|
17
|
+
* children at the top and the root lane floor at the bottom.
|
|
18
|
+
*
|
|
19
|
+
* @param laneId - ID of the lane to visualize
|
|
20
|
+
* @param templates - Template map containing all referenced templates
|
|
21
|
+
* @returns Multi-line string visualization
|
|
22
|
+
* @throws Error if durations/offsets aren't whole seconds, overlaps exist, or templates are missing
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```
|
|
26
|
+
* █░██ ← grandchild busy templates
|
|
27
|
+
* ░______░░░░ ← child lane segment
|
|
28
|
+
* ____________ ← root lane
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export function visualizeLane(laneId, templates) {
|
|
32
|
+
const lane = templates[laneId];
|
|
33
|
+
if (!lane) {
|
|
34
|
+
throw new Error(`Template "${laneId}" not found in templates map`);
|
|
35
|
+
}
|
|
36
|
+
if (!isLaneTemplate(lane)) {
|
|
37
|
+
throw new Error(`Template "${laneId}" is not a lane template`);
|
|
38
|
+
}
|
|
39
|
+
// Validate whole seconds
|
|
40
|
+
validateWholeSeconds(lane, templates);
|
|
41
|
+
// Validate no overlaps
|
|
42
|
+
validateNoOverlaps(lane, templates);
|
|
43
|
+
const width = lane.estimatedDuration / MS_PER_CHAR;
|
|
44
|
+
if (width > 20) {
|
|
45
|
+
throw new Error(`Lane duration exceeds 20 seconds (${width}s). Max supported is 20 seconds.`);
|
|
46
|
+
}
|
|
47
|
+
const layers = [];
|
|
48
|
+
// Add root lane floor (all underscores)
|
|
49
|
+
layers.push('_'.repeat(width));
|
|
50
|
+
// If root has segments, add children layers recursively
|
|
51
|
+
if (lane.segments.length > 0) {
|
|
52
|
+
addChildrenLayers(lane, templates, layers, 0, width);
|
|
53
|
+
}
|
|
54
|
+
// Reverse so deepest children are on top, root floor at bottom
|
|
55
|
+
return layers.reverse().join('\n');
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Recursively adds visualization layers for a lane's children.
|
|
59
|
+
* Each layer is added to the array, then we recurse into lane children.
|
|
60
|
+
*/
|
|
61
|
+
function addChildrenLayers(lane, templates, layers, globalOffset, totalWidth) {
|
|
62
|
+
const laneWidth = lane.estimatedDuration / MS_PER_CHAR;
|
|
63
|
+
// Build this lane's children layer
|
|
64
|
+
const layer = Array(totalWidth).fill(' ');
|
|
65
|
+
// Fill lane's span with ░ (represents empty space, will be overwritten by segments)
|
|
66
|
+
for (let i = globalOffset; i < globalOffset + laneWidth; i++) {
|
|
67
|
+
layer[i] = '░';
|
|
68
|
+
}
|
|
69
|
+
// Overlay segments
|
|
70
|
+
for (const segment of lane.segments) {
|
|
71
|
+
const child = templates[segment.templateId];
|
|
72
|
+
// Already validated in validateWholeSeconds
|
|
73
|
+
const segStart = globalOffset + segment.offset / MS_PER_CHAR;
|
|
74
|
+
const segDuration = child.estimatedDuration / MS_PER_CHAR;
|
|
75
|
+
const char = isBusyTemplate(child) ? '█' : '_';
|
|
76
|
+
for (let i = 0; i < segDuration; i++) {
|
|
77
|
+
layer[segStart + i] = char;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
layers.push(layer.join(''));
|
|
81
|
+
// Recursively add children layers for lane children that have segments
|
|
82
|
+
for (const segment of lane.segments) {
|
|
83
|
+
const child = templates[segment.templateId];
|
|
84
|
+
if (isLaneTemplate(child) && child.segments.length > 0) {
|
|
85
|
+
const childGlobalOffset = globalOffset + segment.offset / MS_PER_CHAR;
|
|
86
|
+
addChildrenLayers(child, templates, layers, childGlobalOffset, totalWidth);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Validates that all durations and offsets are whole seconds (divisible by 1000ms).
|
|
92
|
+
* Recursively validates all referenced templates.
|
|
93
|
+
*/
|
|
94
|
+
function validateWholeSeconds(lane, templates, visited = new Set()) {
|
|
95
|
+
if (visited.has(lane.id)) {
|
|
96
|
+
return; // Avoid infinite loops on circular references
|
|
97
|
+
}
|
|
98
|
+
visited.add(lane.id);
|
|
99
|
+
if (lane.estimatedDuration % MS_PER_CHAR !== 0) {
|
|
100
|
+
throw new Error(`Lane "${lane.id}" has non-whole-second duration: ${lane.estimatedDuration}ms. ` +
|
|
101
|
+
`Duration must be divisible by ${MS_PER_CHAR}ms.`);
|
|
102
|
+
}
|
|
103
|
+
for (const segment of lane.segments) {
|
|
104
|
+
if (segment.offset % MS_PER_CHAR !== 0) {
|
|
105
|
+
throw new Error(`Segment in lane "${lane.id}" has non-whole-second offset: ${segment.offset}ms. ` +
|
|
106
|
+
`Offset must be divisible by ${MS_PER_CHAR}ms.`);
|
|
107
|
+
}
|
|
108
|
+
const child = templates[segment.templateId];
|
|
109
|
+
if (!child) {
|
|
110
|
+
throw new Error(`Segment references template "${segment.templateId}" which was not found in templates map`);
|
|
111
|
+
}
|
|
112
|
+
if (child.estimatedDuration <= 0) {
|
|
113
|
+
throw new Error(`Template "${child.id}" has zero or negative duration`);
|
|
114
|
+
}
|
|
115
|
+
if (child.estimatedDuration % MS_PER_CHAR !== 0) {
|
|
116
|
+
throw new Error(`Template "${child.id}" has non-whole-second duration: ${child.estimatedDuration}ms. ` +
|
|
117
|
+
`Duration must be divisible by ${MS_PER_CHAR}ms.`);
|
|
118
|
+
}
|
|
119
|
+
// Recursively validate lane children
|
|
120
|
+
if (isLaneTemplate(child)) {
|
|
121
|
+
validateWholeSeconds(child, templates, visited);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Validates that no segments overlap within a lane.
|
|
127
|
+
* Recursively validates all lane children.
|
|
128
|
+
*/
|
|
129
|
+
function validateNoOverlaps(lane, templates, visited = new Set()) {
|
|
130
|
+
if (visited.has(lane.id)) {
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
visited.add(lane.id);
|
|
134
|
+
// Build a list of segment spans
|
|
135
|
+
const spans = [];
|
|
136
|
+
for (const segment of lane.segments) {
|
|
137
|
+
const child = templates[segment.templateId];
|
|
138
|
+
// Child existence already validated
|
|
139
|
+
const start = segment.offset;
|
|
140
|
+
const end = segment.offset + child.estimatedDuration;
|
|
141
|
+
spans.push({ start, end, templateId: segment.templateId });
|
|
142
|
+
}
|
|
143
|
+
// Sort by start time
|
|
144
|
+
spans.sort((a, b) => a.start - b.start);
|
|
145
|
+
// Check for overlaps
|
|
146
|
+
for (let i = 0; i < spans.length - 1; i++) {
|
|
147
|
+
const current = spans[i];
|
|
148
|
+
const next = spans[i + 1];
|
|
149
|
+
if (current.end > next.start) {
|
|
150
|
+
throw new Error(`Overlap detected in lane "${lane.id}": ` +
|
|
151
|
+
`segment "${current.templateId}" (ends at ${current.end}ms) ` +
|
|
152
|
+
`overlaps with segment "${next.templateId}" (starts at ${next.start}ms)`);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
// Recursively validate lane children
|
|
156
|
+
for (const segment of lane.segments) {
|
|
157
|
+
const child = templates[segment.templateId];
|
|
158
|
+
if (isLaneTemplate(child)) {
|
|
159
|
+
validateNoOverlaps(child, templates, visited);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=visualizeLane.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visualizeLane.js","sourceRoot":"","sources":["../../../src/templates/layout/visualizeLane.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { TemplateId, TemplateMap } from '../../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Generates a text-based visualization of a lane showing only template IDs.
|
|
4
|
+
*
|
|
5
|
+
* **⚠️ DEBUG UTILITY ONLY** - This function is intended for development and
|
|
6
|
+
* debugging purposes. Production applications should use a proper frontend
|
|
7
|
+
* UI for visualization, not ASCII art.
|
|
8
|
+
*
|
|
9
|
+
* - 1 character = 1 second
|
|
10
|
+
* - Each template's ID character fills its duration
|
|
11
|
+
* - No gap characters, spaces, or lane markers - only IDs
|
|
12
|
+
* - Segments render in layers above their parent lane
|
|
13
|
+
*
|
|
14
|
+
* @param laneId - ID of the lane to visualize
|
|
15
|
+
* @param templates - Template map containing all referenced templates
|
|
16
|
+
* @returns Multi-line string visualization with only ID characters
|
|
17
|
+
* @throws Error if any template ID is not exactly 1 character
|
|
18
|
+
* @throws Error if durations/offsets aren't whole seconds, overlaps exist, or templates are missing
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```
|
|
22
|
+
* CD ← grandchild segments
|
|
23
|
+
* BBBBB ← child lane segment
|
|
24
|
+
* AAAAAAAAA ← root lane
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export declare function visualizeLaneIds(laneId: TemplateId, templates: TemplateMap): string;
|
|
28
|
+
//# sourceMappingURL=visualizeLaneIds.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visualizeLaneIds.d.ts","sourceRoot":"","sources":["../../../src/templates/layout/visualizeLaneIds.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAgB,MAAM,sBAAsB,CAAC;AAKlF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,WAAW,GACrB,MAAM,CAmCR"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { isLaneTemplate } from '../../types/template.js';
|
|
2
|
+
const MS_PER_CHAR = 1000;
|
|
3
|
+
/**
|
|
4
|
+
* Generates a text-based visualization of a lane showing only template IDs.
|
|
5
|
+
*
|
|
6
|
+
* **⚠️ DEBUG UTILITY ONLY** - This function is intended for development and
|
|
7
|
+
* debugging purposes. Production applications should use a proper frontend
|
|
8
|
+
* UI for visualization, not ASCII art.
|
|
9
|
+
*
|
|
10
|
+
* - 1 character = 1 second
|
|
11
|
+
* - Each template's ID character fills its duration
|
|
12
|
+
* - No gap characters, spaces, or lane markers - only IDs
|
|
13
|
+
* - Segments render in layers above their parent lane
|
|
14
|
+
*
|
|
15
|
+
* @param laneId - ID of the lane to visualize
|
|
16
|
+
* @param templates - Template map containing all referenced templates
|
|
17
|
+
* @returns Multi-line string visualization with only ID characters
|
|
18
|
+
* @throws Error if any template ID is not exactly 1 character
|
|
19
|
+
* @throws Error if durations/offsets aren't whole seconds, overlaps exist, or templates are missing
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```
|
|
23
|
+
* CD ← grandchild segments
|
|
24
|
+
* BBBBB ← child lane segment
|
|
25
|
+
* AAAAAAAAA ← root lane
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export function visualizeLaneIds(laneId, templates) {
|
|
29
|
+
const lane = templates[laneId];
|
|
30
|
+
if (!lane) {
|
|
31
|
+
throw new Error(`Template "${laneId}" not found in templates map`);
|
|
32
|
+
}
|
|
33
|
+
if (!isLaneTemplate(lane)) {
|
|
34
|
+
throw new Error(`Template "${laneId}" is not a lane template`);
|
|
35
|
+
}
|
|
36
|
+
// Validate single-character IDs
|
|
37
|
+
validateSingleCharIds(lane, templates);
|
|
38
|
+
// Validate whole seconds
|
|
39
|
+
validateWholeSeconds(lane, templates);
|
|
40
|
+
// Validate no overlaps
|
|
41
|
+
validateNoOverlaps(lane, templates);
|
|
42
|
+
const width = lane.estimatedDuration / MS_PER_CHAR;
|
|
43
|
+
if (width > 20) {
|
|
44
|
+
throw new Error(`Lane duration exceeds 20 seconds (${width}s). Max supported is 20 seconds.`);
|
|
45
|
+
}
|
|
46
|
+
const layers = [];
|
|
47
|
+
// Add root lane floor (all its ID character)
|
|
48
|
+
layers.push(lane.id.repeat(width));
|
|
49
|
+
// If root has segments, add children layers recursively
|
|
50
|
+
if (lane.segments.length > 0) {
|
|
51
|
+
addChildrenLayers(lane, templates, layers, 0, width);
|
|
52
|
+
}
|
|
53
|
+
// Reverse so deepest children are on top, root floor at bottom
|
|
54
|
+
return layers.reverse().join('\n');
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Recursively adds visualization layers for a lane's children.
|
|
58
|
+
* Each layer is added to the array, then we recurse into lane children.
|
|
59
|
+
*/
|
|
60
|
+
function addChildrenLayers(lane, templates, layers, globalOffset, totalWidth) {
|
|
61
|
+
// Build this lane's children layer
|
|
62
|
+
const layer = Array(totalWidth).fill(' ');
|
|
63
|
+
// Overlay segments with their ID characters
|
|
64
|
+
for (const segment of lane.segments) {
|
|
65
|
+
const child = templates[segment.templateId];
|
|
66
|
+
const segStart = globalOffset + segment.offset / MS_PER_CHAR;
|
|
67
|
+
const segDuration = child.estimatedDuration / MS_PER_CHAR;
|
|
68
|
+
for (let i = 0; i < segDuration; i++) {
|
|
69
|
+
layer[segStart + i] = child.id;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
layers.push(layer.join(''));
|
|
73
|
+
// Recursively add children layers for lane children that have segments
|
|
74
|
+
for (const segment of lane.segments) {
|
|
75
|
+
const child = templates[segment.templateId];
|
|
76
|
+
if (isLaneTemplate(child) && child.segments.length > 0) {
|
|
77
|
+
const childGlobalOffset = globalOffset + segment.offset / MS_PER_CHAR;
|
|
78
|
+
addChildrenLayers(child, templates, layers, childGlobalOffset, totalWidth);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Validates that all template IDs are exactly 1 character.
|
|
84
|
+
* Recursively validates all referenced templates.
|
|
85
|
+
*/
|
|
86
|
+
function validateSingleCharIds(lane, templates, visited = new Set()) {
|
|
87
|
+
if (visited.has(lane.id)) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
visited.add(lane.id);
|
|
91
|
+
if (lane.id.length !== 1) {
|
|
92
|
+
throw new Error(`Template ID "${lane.id}" is not a single character. ` +
|
|
93
|
+
`All template IDs must be exactly 1 character for visualizeLaneIds.`);
|
|
94
|
+
}
|
|
95
|
+
for (const segment of lane.segments) {
|
|
96
|
+
const child = templates[segment.templateId];
|
|
97
|
+
if (!child) {
|
|
98
|
+
throw new Error(`Segment references template "${segment.templateId}" which was not found in templates map`);
|
|
99
|
+
}
|
|
100
|
+
if (child.id.length !== 1) {
|
|
101
|
+
throw new Error(`Template ID "${child.id}" is not a single character. ` +
|
|
102
|
+
`All template IDs must be exactly 1 character for visualizeLaneIds.`);
|
|
103
|
+
}
|
|
104
|
+
if (isLaneTemplate(child)) {
|
|
105
|
+
validateSingleCharIds(child, templates, visited);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Validates that all durations and offsets are whole seconds (divisible by 1000ms).
|
|
111
|
+
* Recursively validates all referenced templates.
|
|
112
|
+
*/
|
|
113
|
+
function validateWholeSeconds(lane, templates, visited = new Set()) {
|
|
114
|
+
if (visited.has(lane.id)) {
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
visited.add(lane.id);
|
|
118
|
+
if (lane.estimatedDuration % MS_PER_CHAR !== 0) {
|
|
119
|
+
throw new Error(`Lane "${lane.id}" has non-whole-second duration: ${lane.estimatedDuration}ms. ` +
|
|
120
|
+
`Duration must be divisible by ${MS_PER_CHAR}ms.`);
|
|
121
|
+
}
|
|
122
|
+
for (const segment of lane.segments) {
|
|
123
|
+
if (segment.offset % MS_PER_CHAR !== 0) {
|
|
124
|
+
throw new Error(`Segment in lane "${lane.id}" has non-whole-second offset: ${segment.offset}ms. ` +
|
|
125
|
+
`Offset must be divisible by ${MS_PER_CHAR}ms.`);
|
|
126
|
+
}
|
|
127
|
+
const child = templates[segment.templateId];
|
|
128
|
+
if (!child) {
|
|
129
|
+
throw new Error(`Segment references template "${segment.templateId}" which was not found in templates map`);
|
|
130
|
+
}
|
|
131
|
+
if (child.estimatedDuration <= 0) {
|
|
132
|
+
throw new Error(`Template "${child.id}" has zero or negative duration`);
|
|
133
|
+
}
|
|
134
|
+
if (child.estimatedDuration % MS_PER_CHAR !== 0) {
|
|
135
|
+
throw new Error(`Template "${child.id}" has non-whole-second duration: ${child.estimatedDuration}ms. ` +
|
|
136
|
+
`Duration must be divisible by ${MS_PER_CHAR}ms.`);
|
|
137
|
+
}
|
|
138
|
+
if (isLaneTemplate(child)) {
|
|
139
|
+
validateWholeSeconds(child, templates, visited);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Validates that no segments overlap within a lane.
|
|
145
|
+
* Recursively validates all lane children.
|
|
146
|
+
*/
|
|
147
|
+
function validateNoOverlaps(lane, templates, visited = new Set()) {
|
|
148
|
+
if (visited.has(lane.id)) {
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
visited.add(lane.id);
|
|
152
|
+
const spans = [];
|
|
153
|
+
for (const segment of lane.segments) {
|
|
154
|
+
const child = templates[segment.templateId];
|
|
155
|
+
const start = segment.offset;
|
|
156
|
+
const end = segment.offset + child.estimatedDuration;
|
|
157
|
+
spans.push({ start, end, templateId: segment.templateId });
|
|
158
|
+
}
|
|
159
|
+
spans.sort((a, b) => a.start - b.start);
|
|
160
|
+
for (let i = 0; i < spans.length - 1; i++) {
|
|
161
|
+
const current = spans[i];
|
|
162
|
+
const next = spans[i + 1];
|
|
163
|
+
if (current.end > next.start) {
|
|
164
|
+
throw new Error(`Overlap detected in lane "${lane.id}": ` +
|
|
165
|
+
`segment "${current.templateId}" (ends at ${current.end}ms) ` +
|
|
166
|
+
`overlaps with segment "${next.templateId}" (starts at ${next.start}ms)`);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
for (const segment of lane.segments) {
|
|
170
|
+
const child = templates[segment.templateId];
|
|
171
|
+
if (isLaneTemplate(child)) {
|
|
172
|
+
validateNoOverlaps(child, templates, visited);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=visualizeLaneIds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visualizeLaneIds.js","sourceRoot":"","sources":["../../../src/templates/layout/visualizeLaneIds.ts"],"names":[],"mappings":"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"}
|
|
@@ -82,8 +82,15 @@ export interface ExceedsParentDurationError {
|
|
|
82
82
|
childDuration: Duration;
|
|
83
83
|
endTime: Duration;
|
|
84
84
|
}
|
|
85
|
+
/** Template has zero duration (invalid) */
|
|
86
|
+
export interface ZeroDurationError {
|
|
87
|
+
type: 'zero-duration';
|
|
88
|
+
message: string;
|
|
89
|
+
templateId: TemplateId;
|
|
90
|
+
templateIntent: string;
|
|
91
|
+
}
|
|
85
92
|
/** Union of all validation error types */
|
|
86
|
-
export type ValidationError = DoubleLinkingError | BusyOverlapError | UnsatisfiedConsumeError | UnsatisfiedProduceError | MissingTemplateError | DurationHierarchyError | NegativeOffsetError | ExceedsParentDurationError;
|
|
93
|
+
export type ValidationError = DoubleLinkingError | BusyOverlapError | UnsatisfiedConsumeError | UnsatisfiedProduceError | MissingTemplateError | DurationHierarchyError | NegativeOffsetError | ExceedsParentDurationError | ZeroDurationError;
|
|
87
94
|
/** Result of lane validation */
|
|
88
95
|
export interface ValidationResult {
|
|
89
96
|
isValid: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/types/validation.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/types/validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateLane.d.ts","sourceRoot":"","sources":["../../src/validation/validateLane.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EAEZ,WAAW,EACX,gBAAgB,EAGjB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"validateLane.d.ts","sourceRoot":"","sources":["../../src/validation/validateLane.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EAEZ,WAAW,EACX,gBAAgB,EAGjB,MAAM,mBAAmB,CAAC;AAiU3B;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,YAAY,EAClB,YAAY,EAAE,WAAW,GACxB,gBAAgB,CAmElB"}
|
|
@@ -20,6 +20,16 @@ function flattenLane(lane, allTemplates, baseOffset, errors, visited) {
|
|
|
20
20
|
});
|
|
21
21
|
continue;
|
|
22
22
|
}
|
|
23
|
+
// Check for zero duration
|
|
24
|
+
if (template.estimatedDuration <= 0) {
|
|
25
|
+
errors.push({
|
|
26
|
+
type: 'zero-duration',
|
|
27
|
+
message: `Template "${template.intent}" (${template.id}) has zero or negative duration`,
|
|
28
|
+
templateId: template.id,
|
|
29
|
+
templateIntent: template.intent,
|
|
30
|
+
});
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
23
33
|
// Check double-linking: child must have a reference back to this parent
|
|
24
34
|
const hasBackLink = template.references.some(ref => ref.parentId === lane.id && ref.relationshipId === segment.relationshipId);
|
|
25
35
|
if (!hasBackLink) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateLane.js","sourceRoot":"","sources":["../../src/validation/validateLane.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validateLane.js","sourceRoot":"","sources":["../../src/validation/validateLane.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tannerbroberts/about-time-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Core template operations and validation for about-time",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -24,6 +24,10 @@
|
|
|
24
24
|
"types": "./dist/templates/index.d.ts",
|
|
25
25
|
"import": "./dist/templates/index.js"
|
|
26
26
|
},
|
|
27
|
+
"./layout": {
|
|
28
|
+
"types": "./dist/templates/layout/index.d.ts",
|
|
29
|
+
"import": "./dist/templates/layout/index.js"
|
|
30
|
+
},
|
|
27
31
|
"./validation": {
|
|
28
32
|
"types": "./dist/validation/index.d.ts",
|
|
29
33
|
"import": "./dist/validation/index.js"
|