@schnick371/devsteps-shared 0.7.0-next.1 → 0.7.0-next.3
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/dist/constants/index.d.ts +78 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +70 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/core/update.d.ts.map +1 -1
- package/dist/core/update.js +6 -5
- package/dist/core/update.js.map +1 -1
- package/dist/core/validation.d.ts.map +1 -1
- package/dist/core/validation.js +29 -28
- package/dist/core/validation.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralized constants for type-safe comparisons.
|
|
3
|
+
* Use these instead of string literals to get autocomplete + compile-time safety.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* // ❌ BAD
|
|
7
|
+
* if (item.type === 'task') { ... }
|
|
8
|
+
*
|
|
9
|
+
* // ✅ GOOD
|
|
10
|
+
* if (item.type === ITEM_TYPE.TASK) { ... }
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Item type constants
|
|
14
|
+
*/
|
|
15
|
+
export declare const ITEM_TYPE: {
|
|
16
|
+
readonly EPIC: "epic";
|
|
17
|
+
readonly STORY: "story";
|
|
18
|
+
readonly TASK: "task";
|
|
19
|
+
readonly REQUIREMENT: "requirement";
|
|
20
|
+
readonly FEATURE: "feature";
|
|
21
|
+
readonly BUG: "bug";
|
|
22
|
+
readonly SPIKE: "spike";
|
|
23
|
+
readonly TEST: "test";
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Status constants
|
|
27
|
+
*/
|
|
28
|
+
export declare const STATUS: {
|
|
29
|
+
readonly DRAFT: "draft";
|
|
30
|
+
readonly PLANNED: "planned";
|
|
31
|
+
readonly IN_PROGRESS: "in-progress";
|
|
32
|
+
readonly REVIEW: "review";
|
|
33
|
+
readonly DONE: "done";
|
|
34
|
+
readonly BLOCKED: "blocked";
|
|
35
|
+
readonly CANCELLED: "cancelled";
|
|
36
|
+
readonly OBSOLETE: "obsolete";
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Relationship type constants
|
|
40
|
+
*/
|
|
41
|
+
export declare const RELATIONSHIP_TYPE: {
|
|
42
|
+
readonly IMPLEMENTS: "implements";
|
|
43
|
+
readonly IMPLEMENTED_BY: "implemented-by";
|
|
44
|
+
readonly BLOCKS: "blocks";
|
|
45
|
+
readonly BLOCKED_BY: "blocked-by";
|
|
46
|
+
readonly TESTED_BY: "tested-by";
|
|
47
|
+
readonly TESTS: "tests";
|
|
48
|
+
readonly RELATES_TO: "relates-to";
|
|
49
|
+
readonly DEPENDS_ON: "depends-on";
|
|
50
|
+
readonly REQUIRED_BY: "required-by";
|
|
51
|
+
readonly SUPERSEDES: "supersedes";
|
|
52
|
+
readonly SUPERSEDED_BY: "superseded-by";
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Methodology constants
|
|
56
|
+
*/
|
|
57
|
+
export declare const METHODOLOGY: {
|
|
58
|
+
readonly SCRUM: "scrum";
|
|
59
|
+
readonly WATERFALL: "waterfall";
|
|
60
|
+
readonly HYBRID: "hybrid";
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Hierarchy type constants (for TreeView)
|
|
64
|
+
*/
|
|
65
|
+
export declare const HIERARCHY_TYPE: {
|
|
66
|
+
readonly SCRUM: "scrum";
|
|
67
|
+
readonly WATERFALL: "waterfall";
|
|
68
|
+
readonly BOTH: "both";
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Type helpers for advanced usage
|
|
72
|
+
*/
|
|
73
|
+
export type ItemTypeValue = (typeof ITEM_TYPE)[keyof typeof ITEM_TYPE];
|
|
74
|
+
export type StatusValue = (typeof STATUS)[keyof typeof STATUS];
|
|
75
|
+
export type RelationshipTypeValue = (typeof RELATIONSHIP_TYPE)[keyof typeof RELATIONSHIP_TYPE];
|
|
76
|
+
export type MethodologyValue = (typeof METHODOLOGY)[keyof typeof METHODOLOGY];
|
|
77
|
+
export type HierarchyTypeValue = (typeof HIERARCHY_TYPE)[keyof typeof HIERARCHY_TYPE];
|
|
78
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;GAEG;AACH,eAAO,MAAM,SAAS;;;;;;;;;CASZ,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,MAAM;;;;;;;;;CAST,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;CAYpB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,WAAW;;;;CAId,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,cAAc;;;;CAIjB,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AACvE,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,OAAO,MAAM,CAAC,CAAC;AAC/D,MAAM,MAAM,qBAAqB,GAChC,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC;AAC9E,MAAM,MAAM,kBAAkB,GAC7B,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralized constants for type-safe comparisons.
|
|
3
|
+
* Use these instead of string literals to get autocomplete + compile-time safety.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* // ❌ BAD
|
|
7
|
+
* if (item.type === 'task') { ... }
|
|
8
|
+
*
|
|
9
|
+
* // ✅ GOOD
|
|
10
|
+
* if (item.type === ITEM_TYPE.TASK) { ... }
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Item type constants
|
|
14
|
+
*/
|
|
15
|
+
export const ITEM_TYPE = {
|
|
16
|
+
EPIC: 'epic',
|
|
17
|
+
STORY: 'story',
|
|
18
|
+
TASK: 'task',
|
|
19
|
+
REQUIREMENT: 'requirement',
|
|
20
|
+
FEATURE: 'feature',
|
|
21
|
+
BUG: 'bug',
|
|
22
|
+
SPIKE: 'spike',
|
|
23
|
+
TEST: 'test',
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Status constants
|
|
27
|
+
*/
|
|
28
|
+
export const STATUS = {
|
|
29
|
+
DRAFT: 'draft',
|
|
30
|
+
PLANNED: 'planned',
|
|
31
|
+
IN_PROGRESS: 'in-progress',
|
|
32
|
+
REVIEW: 'review',
|
|
33
|
+
DONE: 'done',
|
|
34
|
+
BLOCKED: 'blocked',
|
|
35
|
+
CANCELLED: 'cancelled',
|
|
36
|
+
OBSOLETE: 'obsolete',
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Relationship type constants
|
|
40
|
+
*/
|
|
41
|
+
export const RELATIONSHIP_TYPE = {
|
|
42
|
+
IMPLEMENTS: 'implements',
|
|
43
|
+
IMPLEMENTED_BY: 'implemented-by',
|
|
44
|
+
BLOCKS: 'blocks',
|
|
45
|
+
BLOCKED_BY: 'blocked-by',
|
|
46
|
+
TESTED_BY: 'tested-by',
|
|
47
|
+
TESTS: 'tests',
|
|
48
|
+
RELATES_TO: 'relates-to',
|
|
49
|
+
DEPENDS_ON: 'depends-on',
|
|
50
|
+
REQUIRED_BY: 'required-by',
|
|
51
|
+
SUPERSEDES: 'supersedes',
|
|
52
|
+
SUPERSEDED_BY: 'superseded-by',
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Methodology constants
|
|
56
|
+
*/
|
|
57
|
+
export const METHODOLOGY = {
|
|
58
|
+
SCRUM: 'scrum',
|
|
59
|
+
WATERFALL: 'waterfall',
|
|
60
|
+
HYBRID: 'hybrid',
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Hierarchy type constants (for TreeView)
|
|
64
|
+
*/
|
|
65
|
+
export const HIERARCHY_TYPE = {
|
|
66
|
+
SCRUM: 'scrum',
|
|
67
|
+
WATERFALL: 'waterfall',
|
|
68
|
+
BOTH: 'both',
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACxB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,aAAa;IAC1B,OAAO,EAAE,SAAS;IAClB,GAAG,EAAE,KAAK;IACV,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;CACH,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACrB,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,WAAW,EAAE,aAAa;IAC1B,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,UAAU;CACX,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAChC,UAAU,EAAE,YAAY;IACxB,cAAc,EAAE,gBAAgB;IAChC,MAAM,EAAE,QAAQ;IAChB,UAAU,EAAE,YAAY;IACxB,SAAS,EAAE,WAAW;IACtB,KAAK,EAAE,OAAO;IACd,UAAU,EAAE,YAAY;IACxB,UAAU,EAAE,YAAY;IACxB,WAAW,EAAE,aAAa;IAC1B,UAAU,EAAE,YAAY;IACxB,aAAa,EAAE,eAAe;CACrB,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IAC1B,KAAK,EAAE,OAAO;IACd,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;CACP,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC7B,KAAK,EAAE,OAAO;IACd,SAAS,EAAE,WAAW;IACtB,IAAI,EAAE,MAAM;CACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/core/update.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,QAAQ,EACT,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/core/update.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,QAAQ,EACT,MAAM,qBAAqB,CAAC;AAI7B,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,YAAY,CAAC;IACvB,SAAS,EAAE,UAAU,CAAC;CACvB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,gBAAgB,CAAC,CAqH3B"}
|
package/dist/core/update.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { existsSync, readFileSync, writeFileSync } from 'node:fs';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
|
+
import { STATUS, RELATIONSHIP_TYPE } from '../constants/index.js';
|
|
3
4
|
import { TYPE_TO_DIRECTORY, getCurrentTimestamp, parseItemId } from '../utils/index.js';
|
|
4
5
|
/**
|
|
5
6
|
* Core business logic for updating an item
|
|
@@ -22,7 +23,7 @@ export async function updateItem(devstepsir, args) {
|
|
|
22
23
|
const metadata = JSON.parse(readFileSync(metadataPath, 'utf-8'));
|
|
23
24
|
const oldStatus = metadata.status;
|
|
24
25
|
// Validate status transitions (parent-child rules)
|
|
25
|
-
if (args.status ===
|
|
26
|
+
if (args.status === STATUS.DONE) {
|
|
26
27
|
// Helper function to validate children are complete
|
|
27
28
|
const validateChildren = (relationshipType) => {
|
|
28
29
|
const children = metadata.linked_items[relationshipType];
|
|
@@ -35,25 +36,25 @@ export async function updateItem(devstepsir, args) {
|
|
|
35
36
|
const childPath = join(devstepsir, childFolder, `${childId}.json`);
|
|
36
37
|
if (existsSync(childPath)) {
|
|
37
38
|
const childMeta = JSON.parse(readFileSync(childPath, 'utf-8'));
|
|
38
|
-
if (childMeta.status !==
|
|
39
|
+
if (childMeta.status !== STATUS.DONE && childMeta.status !== STATUS.CANCELLED && childMeta.status !== STATUS.OBSOLETE) {
|
|
39
40
|
openChildren.push(childId);
|
|
40
41
|
}
|
|
41
42
|
}
|
|
42
43
|
}
|
|
43
44
|
}
|
|
44
45
|
if (openChildren.length > 0) {
|
|
45
|
-
const relationLabel = relationshipType ===
|
|
46
|
+
const relationLabel = relationshipType === RELATIONSHIP_TYPE.IMPLEMENTED_BY ? 'implementation' : 'test';
|
|
46
47
|
throw new Error(`Cannot close ${args.id}: ${openChildren.length} ${relationLabel} item(s) still open: ${openChildren.join(', ')}`);
|
|
47
48
|
}
|
|
48
49
|
}
|
|
49
50
|
};
|
|
50
51
|
// Validate implemented-by children (Scrum: Epic→Story/Spike, Story→Task, Bug→Task; Waterfall: Requirement→Feature/Spike, Feature→Task, Bug→Task)
|
|
51
52
|
if (['epic', 'story', 'requirement', 'feature', 'bug'].includes(metadata.type)) {
|
|
52
|
-
validateChildren(
|
|
53
|
+
validateChildren(RELATIONSHIP_TYPE.IMPLEMENTED_BY);
|
|
53
54
|
}
|
|
54
55
|
// Validate tested-by children (all parent types must have tests complete)
|
|
55
56
|
if (['epic', 'story', 'requirement', 'feature'].includes(metadata.type)) {
|
|
56
|
-
validateChildren(
|
|
57
|
+
validateChildren(RELATIONSHIP_TYPE.TESTED_BY);
|
|
57
58
|
}
|
|
58
59
|
}
|
|
59
60
|
if (args.status)
|
package/dist/core/update.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/core/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAQjC,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAqBxF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,UAAkB,EAClB,IAAoB;IAEpB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IACrE,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IAEtE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,2BAA2B;IAC3B,MAAM,QAAQ,GAAiB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/E,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC;IAElC,mDAAmD;IACnD,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/core/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/core/validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/core/validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIjE;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,QAAQ,EAChB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,WAAW,GACvB,gBAAgB,CAwDlB"}
|
package/dist/core/validation.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { isFlexibleRelation, isHierarchyRelation } from '../schemas/relationships.js';
|
|
2
|
+
import { ITEM_TYPE, RELATIONSHIP_TYPE, METHODOLOGY } from '../constants/index.js';
|
|
2
3
|
/**
|
|
3
4
|
* Validate relationship between two items based on methodology
|
|
4
5
|
* Only validates "implements" relationships - all other relations are flexible
|
|
@@ -21,24 +22,24 @@ export function validateRelationship(source, target, relationType, methodology)
|
|
|
21
22
|
// Special case: blocks relation (Jira 2025 - hybrid flexible/hierarchy)
|
|
22
23
|
// Non-Bug blocks: Flexible (Story→Story, Task→Task allowed)
|
|
23
24
|
// Bug blocks: Hierarchy validation (Bug→Epic/Story/Requirement/Feature only)
|
|
24
|
-
if (relationType ===
|
|
25
|
-
if (source.type !==
|
|
25
|
+
if (relationType === RELATIONSHIP_TYPE.BLOCKS) {
|
|
26
|
+
if (source.type !== ITEM_TYPE.BUG) {
|
|
26
27
|
return { valid: true }; // Flexible for non-Bug types
|
|
27
28
|
}
|
|
28
29
|
// Bug blocks: validate as hierarchy below
|
|
29
30
|
}
|
|
30
31
|
// Only validate "implements" direction (implemented-by, blocked-by are automatic reverse)
|
|
31
|
-
if (relationType ===
|
|
32
|
+
if (relationType === RELATIONSHIP_TYPE.IMPLEMENTED_BY || relationType === RELATIONSHIP_TYPE.BLOCKED_BY) {
|
|
32
33
|
return { valid: true }; // Reverse relationships auto-created, no validation needed
|
|
33
34
|
}
|
|
34
35
|
// Validate based on methodology
|
|
35
|
-
if (methodology ===
|
|
36
|
+
if (methodology === METHODOLOGY.SCRUM) {
|
|
36
37
|
return validateScrumHierarchy(source, target);
|
|
37
38
|
}
|
|
38
|
-
if (methodology ===
|
|
39
|
+
if (methodology === METHODOLOGY.WATERFALL) {
|
|
39
40
|
return validateWaterfallHierarchy(source, target);
|
|
40
41
|
}
|
|
41
|
-
if (methodology ===
|
|
42
|
+
if (methodology === METHODOLOGY.HYBRID) {
|
|
42
43
|
// Try Scrum rules first
|
|
43
44
|
const scrumResult = validateScrumHierarchy(source, target);
|
|
44
45
|
if (scrumResult.valid) {
|
|
@@ -66,8 +67,8 @@ function validateScrumHierarchy(source, target) {
|
|
|
66
67
|
const { type: sourceType } = source;
|
|
67
68
|
const { type: targetType } = target;
|
|
68
69
|
// Task → Story, Spike, or Bug
|
|
69
|
-
if (sourceType ===
|
|
70
|
-
if (targetType ===
|
|
70
|
+
if (sourceType === ITEM_TYPE.TASK) {
|
|
71
|
+
if (targetType === ITEM_TYPE.STORY || targetType === ITEM_TYPE.SPIKE || targetType === ITEM_TYPE.BUG) {
|
|
71
72
|
return { valid: true };
|
|
72
73
|
}
|
|
73
74
|
return {
|
|
@@ -77,8 +78,8 @@ function validateScrumHierarchy(source, target) {
|
|
|
77
78
|
};
|
|
78
79
|
}
|
|
79
80
|
// Story → Epic
|
|
80
|
-
if (sourceType ===
|
|
81
|
-
if (targetType ===
|
|
81
|
+
if (sourceType === ITEM_TYPE.STORY) {
|
|
82
|
+
if (targetType === ITEM_TYPE.EPIC) {
|
|
82
83
|
return { valid: true };
|
|
83
84
|
}
|
|
84
85
|
return {
|
|
@@ -88,8 +89,8 @@ function validateScrumHierarchy(source, target) {
|
|
|
88
89
|
};
|
|
89
90
|
}
|
|
90
91
|
// Spike → Epic
|
|
91
|
-
if (sourceType ===
|
|
92
|
-
if (targetType ===
|
|
92
|
+
if (sourceType === ITEM_TYPE.SPIKE) {
|
|
93
|
+
if (targetType === ITEM_TYPE.EPIC) {
|
|
93
94
|
return { valid: true };
|
|
94
95
|
}
|
|
95
96
|
return {
|
|
@@ -99,8 +100,8 @@ function validateScrumHierarchy(source, target) {
|
|
|
99
100
|
};
|
|
100
101
|
}
|
|
101
102
|
// Bug → Story only (Jira 2025)
|
|
102
|
-
if (sourceType ===
|
|
103
|
-
if (targetType ===
|
|
103
|
+
if (sourceType === ITEM_TYPE.BUG) {
|
|
104
|
+
if (targetType === ITEM_TYPE.STORY) {
|
|
104
105
|
return { valid: true };
|
|
105
106
|
}
|
|
106
107
|
return {
|
|
@@ -110,8 +111,8 @@ function validateScrumHierarchy(source, target) {
|
|
|
110
111
|
};
|
|
111
112
|
}
|
|
112
113
|
// Test → Epic or Story (flexible)
|
|
113
|
-
if (sourceType ===
|
|
114
|
-
if (targetType ===
|
|
114
|
+
if (sourceType === ITEM_TYPE.TEST) {
|
|
115
|
+
if (targetType === ITEM_TYPE.EPIC || targetType === ITEM_TYPE.STORY) {
|
|
115
116
|
return { valid: true };
|
|
116
117
|
}
|
|
117
118
|
return {
|
|
@@ -121,7 +122,7 @@ function validateScrumHierarchy(source, target) {
|
|
|
121
122
|
};
|
|
122
123
|
}
|
|
123
124
|
// Epic cannot implement anything (top-level)
|
|
124
|
-
if (sourceType ===
|
|
125
|
+
if (sourceType === ITEM_TYPE.EPIC) {
|
|
125
126
|
return {
|
|
126
127
|
valid: false,
|
|
127
128
|
error: 'Epics are top-level items and cannot implement other items',
|
|
@@ -143,8 +144,8 @@ function validateWaterfallHierarchy(source, target) {
|
|
|
143
144
|
const { type: sourceType } = source;
|
|
144
145
|
const { type: targetType } = target;
|
|
145
146
|
// Task → Feature, Spike, or Bug
|
|
146
|
-
if (sourceType ===
|
|
147
|
-
if (targetType ===
|
|
147
|
+
if (sourceType === ITEM_TYPE.TASK) {
|
|
148
|
+
if (targetType === ITEM_TYPE.FEATURE || targetType === ITEM_TYPE.SPIKE || targetType === ITEM_TYPE.BUG) {
|
|
148
149
|
return { valid: true };
|
|
149
150
|
}
|
|
150
151
|
return {
|
|
@@ -154,8 +155,8 @@ function validateWaterfallHierarchy(source, target) {
|
|
|
154
155
|
};
|
|
155
156
|
}
|
|
156
157
|
// Feature → Requirement
|
|
157
|
-
if (sourceType ===
|
|
158
|
-
if (targetType ===
|
|
158
|
+
if (sourceType === ITEM_TYPE.FEATURE) {
|
|
159
|
+
if (targetType === ITEM_TYPE.REQUIREMENT) {
|
|
159
160
|
return { valid: true };
|
|
160
161
|
}
|
|
161
162
|
return {
|
|
@@ -165,8 +166,8 @@ function validateWaterfallHierarchy(source, target) {
|
|
|
165
166
|
};
|
|
166
167
|
}
|
|
167
168
|
// Spike → Requirement
|
|
168
|
-
if (sourceType ===
|
|
169
|
-
if (targetType ===
|
|
169
|
+
if (sourceType === ITEM_TYPE.SPIKE) {
|
|
170
|
+
if (targetType === ITEM_TYPE.REQUIREMENT) {
|
|
170
171
|
return { valid: true };
|
|
171
172
|
}
|
|
172
173
|
return {
|
|
@@ -176,8 +177,8 @@ function validateWaterfallHierarchy(source, target) {
|
|
|
176
177
|
};
|
|
177
178
|
}
|
|
178
179
|
// Bug → Feature only (Jira 2025)
|
|
179
|
-
if (sourceType ===
|
|
180
|
-
if (targetType ===
|
|
180
|
+
if (sourceType === ITEM_TYPE.BUG) {
|
|
181
|
+
if (targetType === ITEM_TYPE.FEATURE) {
|
|
181
182
|
return { valid: true };
|
|
182
183
|
}
|
|
183
184
|
return {
|
|
@@ -187,8 +188,8 @@ function validateWaterfallHierarchy(source, target) {
|
|
|
187
188
|
};
|
|
188
189
|
}
|
|
189
190
|
// Test → Requirement or Feature (flexible)
|
|
190
|
-
if (sourceType ===
|
|
191
|
-
if (targetType ===
|
|
191
|
+
if (sourceType === ITEM_TYPE.TEST) {
|
|
192
|
+
if (targetType === ITEM_TYPE.REQUIREMENT || targetType === ITEM_TYPE.FEATURE) {
|
|
192
193
|
return { valid: true };
|
|
193
194
|
}
|
|
194
195
|
return {
|
|
@@ -198,7 +199,7 @@ function validateWaterfallHierarchy(source, target) {
|
|
|
198
199
|
};
|
|
199
200
|
}
|
|
200
201
|
// Requirement cannot implement anything (top-level)
|
|
201
|
-
if (sourceType ===
|
|
202
|
+
if (sourceType === ITEM_TYPE.REQUIREMENT) {
|
|
202
203
|
return {
|
|
203
204
|
valid: false,
|
|
204
205
|
error: 'Requirements are top-level items and cannot implement other items',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/core/validation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/core/validation.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,4 +2,6 @@ export * from './types/index.js';
|
|
|
2
2
|
export * from './schemas/index.js';
|
|
3
3
|
export * from './utils/index.js';
|
|
4
4
|
export * from './core/index.js';
|
|
5
|
+
export * from './constants/index.js';
|
|
6
|
+
export { ITEM_TYPE, STATUS, RELATIONSHIP_TYPE, METHODOLOGY, HIERARCHY_TYPE, } from './constants/index.js';
|
|
5
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,OAAO,EACN,SAAS,EACT,MAAM,EACN,iBAAiB,EACjB,WAAW,EACX,cAAc,GACd,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -2,4 +2,6 @@ export * from './types/index.js';
|
|
|
2
2
|
export * from './schemas/index.js';
|
|
3
3
|
export * from './utils/index.js';
|
|
4
4
|
export * from './core/index.js';
|
|
5
|
+
export * from './constants/index.js';
|
|
6
|
+
export { ITEM_TYPE, STATUS, RELATIONSHIP_TYPE, METHODOLOGY, HIERARCHY_TYPE, } from './constants/index.js';
|
|
5
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,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,OAAO,EACN,SAAS,EACT,MAAM,EACN,iBAAiB,EACjB,WAAW,EACX,cAAc,GACd,MAAM,sBAAsB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@schnick371/devsteps-shared",
|
|
3
|
-
"version": "0.7.0-next.
|
|
3
|
+
"version": "0.7.0-next.3",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"description": "Never Code Alone. Shared types, schemas, and utilities for DevSteps task tracking.",
|
|
6
6
|
"author": "Thomas Hertel <thomas.hertel@devsteps.dev>",
|