@nowline/export-msproj 0.8.6 → 0.10.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 +21 -9
- package/dist/calendar.d.ts +6 -1
- package/dist/calendar.d.ts.map +1 -1
- package/dist/calendar.js +54 -10
- package/dist/calendar.js.map +1 -1
- package/dist/duration.d.ts +5 -1
- package/dist/duration.d.ts.map +1 -1
- package/dist/duration.js +12 -43
- package/dist/duration.js.map +1 -1
- package/dist/index.d.ts +3 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +227 -94
- package/dist/index.js.map +1 -1
- package/dist/xml.d.ts +7 -0
- package/dist/xml.d.ts.map +1 -1
- package/dist/xml.js +9 -0
- package/dist/xml.js.map +1 -1
- package/package.json +6 -6
- package/src/calendar.ts +72 -10
- package/src/duration.ts +12 -39
- package/src/index.ts +302 -112
- package/src/xml.ts +10 -0
package/README.md
CHANGED
|
@@ -22,7 +22,7 @@ import { exportMsProjXml } from '@nowline/export-msproj';
|
|
|
22
22
|
|
|
23
23
|
const xml = exportMsProjXml(inputs, {
|
|
24
24
|
projectName: 'Q1 2026 Plan',
|
|
25
|
-
startDate: '2026-01-06', // YYYY-MM-DD;
|
|
25
|
+
startDate: '2026-01-06', // YYYY-MM-DD; default: the roadmap's start:, else today
|
|
26
26
|
});
|
|
27
27
|
|
|
28
28
|
// `xml` is a UTF-8 XML string. Save as roadmap.xml.
|
|
@@ -47,7 +47,7 @@ because XML is ambiguous (could be SVG-XML, generic XML, etc.).
|
|
|
47
47
|
<Name>Q1 2026 Plan</Name>
|
|
48
48
|
<StartDate>2026-01-06T00:00:00</StartDate>
|
|
49
49
|
<Calendars>
|
|
50
|
-
<!-- Standard base calendar (
|
|
50
|
+
<!-- Standard base calendar (the file's working weekdays, 8h) + Standard resource calendar -->
|
|
51
51
|
</Calendars>
|
|
52
52
|
<Tasks>
|
|
53
53
|
<Task><UID>1</UID><Name>Auth refactor</Name>...</Task>
|
|
@@ -66,16 +66,28 @@ because XML is ambiguous (could be SVG-XML, generic XML, etc.).
|
|
|
66
66
|
## Calendar fidelity
|
|
67
67
|
|
|
68
68
|
Per spec Resolution 6, this exporter emits a **single Standard base
|
|
69
|
-
calendar** (`UID="1"`,
|
|
69
|
+
calendar** (`UID="1"`, 08:00–12:00 / 13:00–17:00 on each working day)
|
|
70
70
|
plus a Standard resource calendar (`UID="2"`) that every `<Resource>`
|
|
71
71
|
references. This matches Microsoft's own default template and reliably
|
|
72
72
|
imports across MS Project versions.
|
|
73
73
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
74
|
+
The base calendar's working weekdays come from the file's calendar:
|
|
75
|
+
Mon–Fri under `calendar:business` (the default, weekends off), and all
|
|
76
|
+
seven days under `calendar:full` and `calendar:custom`. Each task's
|
|
77
|
+
duration is the chart's own day count for the item (sizes, `q` and
|
|
78
|
+
`capacity:` included) times 480 minutes, so a `duration: 2w` item lasts
|
|
79
|
+
`PT4800M0S` on `business` (10 working days) and `PT6720M0S` on `full`
|
|
80
|
+
(14). An item with no duration stays a one-day task.
|
|
81
|
+
|
|
82
|
+
Declared days off and working exceptions are written as `<Exceptions>` in
|
|
83
|
+
the base calendar, right after `<WeekDays>`: one `<Exception>` per run of
|
|
84
|
+
days the file's calendar differs from its open week, with a `<Name>` from
|
|
85
|
+
the titles of the dated declarations behind it. A holiday is
|
|
86
|
+
`<DayWorking>0</DayWorking>`; a working Saturday is `<DayWorking>1</DayWorking>`
|
|
87
|
+
with the usual two `<WorkingTime>` blocks. There is no `<WorkWeeks>`: a
|
|
88
|
+
bounded recurrence becomes one exception per run of days it changes. Half-days
|
|
89
|
+
are not projected. The export still starts at the export date or `--start`,
|
|
90
|
+
not the roadmap's `start:`.
|
|
79
91
|
|
|
80
92
|
## Lossy export policy
|
|
81
93
|
|
|
@@ -85,7 +97,7 @@ The following Nowline features are dropped from the export:
|
|
|
85
97
|
- `footnote` annotations
|
|
86
98
|
- `description` directives (the bridge to `<Notes>` is reserved for a
|
|
87
99
|
future milestone)
|
|
88
|
-
-
|
|
100
|
+
- Half-days (a `non-working` declaration covers whole days only)
|
|
89
101
|
|
|
90
102
|
When any drops occur, the exporter emits a single stderr summary line
|
|
91
103
|
(via the CLI; the library function returns the XML and lets the caller
|
package/dist/calendar.d.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
|
+
import type { CalendarException } from '@nowline/layout';
|
|
1
2
|
declare const DAY_NAMES: string[];
|
|
2
|
-
|
|
3
|
+
/**
|
|
4
|
+
* `workingWeekdays`: 0 = Sunday … 6 = Saturday. `exceptions`: the days the
|
|
5
|
+
* file's calendar differs from that week (`calendarExceptions`), ascending.
|
|
6
|
+
*/
|
|
7
|
+
export declare function buildCalendarsBlock(workingWeekdays: ReadonlySet<number>, exceptions: readonly CalendarException[]): string;
|
|
3
8
|
/** Resource and base calendar UIDs surfaced for cross-references. */
|
|
4
9
|
export declare const STANDARD_BASE_CALENDAR_UID = 1;
|
|
5
10
|
export declare const STANDARD_RESOURCE_CALENDAR_UID = 2;
|
package/dist/calendar.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../src/calendar.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../src/calendar.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGzD,QAAA,MAAM,SAAS,UAAiF,CAAC;AAoEjG;;;GAGG;AACH,wBAAgB,mBAAmB,CAC/B,eAAe,EAAE,WAAW,CAAC,MAAM,CAAC,EACpC,UAAU,EAAE,SAAS,iBAAiB,EAAE,GACzC,MAAM,CAqBR;AAED,qEAAqE;AACrE,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAC5C,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,CAAC"}
|
package/dist/calendar.js
CHANGED
|
@@ -1,17 +1,25 @@
|
|
|
1
1
|
// Minimal Standard base calendar emitted on every MS Project XML export.
|
|
2
2
|
//
|
|
3
|
-
// Spec: specs/handoffs/m2c.md § 8 + Resolution 6.
|
|
4
|
-
// - One base calendar (UID=1, Name=Standard)
|
|
5
|
-
//
|
|
6
|
-
//
|
|
3
|
+
// Spec: specs/handoffs/m2c.md § 8 + Resolution 6, specs/working-calendar.md §8.
|
|
4
|
+
// - One base calendar (UID=1, Name=Standard). Its working weekdays are the
|
|
5
|
+
// file calendar's open week (`WorkingCalendar.workingWeekdays`), each
|
|
6
|
+
// 08:00–12:00 / 13:00–17:00: Mon–Fri for business, which matches
|
|
7
|
+
// Microsoft's default project template, and all seven days for
|
|
8
|
+
// `calendar:full` and `calendar:custom`.
|
|
7
9
|
// - One resource calendar (UID=2, Name=Standard, BaseCalendarUID=1).
|
|
8
10
|
//
|
|
11
|
+
// - `<Exceptions>` in the base calendar (UID=1), right after `</WeekDays>`,
|
|
12
|
+
// one per `CalendarException`: a named closure, a bounded recurrence's
|
|
13
|
+
// closed days, or a working day the open week closes (m2p phase 5b).
|
|
14
|
+
// There is no `<WorkWeeks>`: a bounded recurrence becomes one exception
|
|
15
|
+
// per run of days it changes, and the exceptions never overlap.
|
|
16
|
+
//
|
|
9
17
|
// Calendar UIDs are fixed (1 / 2). No timestamps in the calendar block →
|
|
10
18
|
// deterministic across runs.
|
|
19
|
+
import { escapeXml } from './xml.js';
|
|
11
20
|
const DAY_NAMES = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
|
|
12
|
-
function dayBlock(dayIndex) {
|
|
13
|
-
|
|
14
|
-
if (isWeekend) {
|
|
21
|
+
function dayBlock(dayIndex, isWorking) {
|
|
22
|
+
if (!isWorking) {
|
|
15
23
|
return ` <WeekDay>
|
|
16
24
|
<DayType>${dayIndex + 1}</DayType>
|
|
17
25
|
<DayWorking>0</DayWorking>
|
|
@@ -32,8 +40,44 @@ function dayBlock(dayIndex) {
|
|
|
32
40
|
</WorkingTimes>
|
|
33
41
|
</WeekDay>`;
|
|
34
42
|
}
|
|
35
|
-
|
|
36
|
-
|
|
43
|
+
function isoDate(date) {
|
|
44
|
+
return date.toISOString().slice(0, 10);
|
|
45
|
+
}
|
|
46
|
+
/** One `<Exception>`: element order follows the MSPDI schema. */
|
|
47
|
+
function exceptionBlock(exception) {
|
|
48
|
+
const lines = [
|
|
49
|
+
' <Exception>',
|
|
50
|
+
' <EnteredByOccurrences>0</EnteredByOccurrences>',
|
|
51
|
+
' <TimePeriod>',
|
|
52
|
+
` <FromDate>${isoDate(exception.from)}T00:00:00</FromDate>`,
|
|
53
|
+
` <ToDate>${isoDate(exception.through)}T23:59:00</ToDate>`,
|
|
54
|
+
' </TimePeriod>',
|
|
55
|
+
' <Occurrences>1</Occurrences>',
|
|
56
|
+
];
|
|
57
|
+
if (exception.titles && exception.titles.length > 0) {
|
|
58
|
+
lines.push(` <Name>${escapeXml(exception.titles.join(', '))}</Name>`);
|
|
59
|
+
}
|
|
60
|
+
lines.push(' <Type>1</Type>');
|
|
61
|
+
lines.push(` <DayWorking>${exception.working ? 1 : 0}</DayWorking>`);
|
|
62
|
+
if (exception.working) {
|
|
63
|
+
lines.push(' <WorkingTimes>', ' <WorkingTime>', ' <FromTime>08:00:00</FromTime>', ' <ToTime>12:00:00</ToTime>', ' </WorkingTime>', ' <WorkingTime>', ' <FromTime>13:00:00</FromTime>', ' <ToTime>17:00:00</ToTime>', ' </WorkingTime>', ' </WorkingTimes>');
|
|
64
|
+
}
|
|
65
|
+
lines.push(' </Exception>');
|
|
66
|
+
return lines.join('\n');
|
|
67
|
+
}
|
|
68
|
+
function exceptionsBlock(exceptions) {
|
|
69
|
+
if (exceptions.length === 0)
|
|
70
|
+
return '';
|
|
71
|
+
return `\n <Exceptions>\n${exceptions.map(exceptionBlock).join('\n')}\n </Exceptions>`;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* `workingWeekdays`: 0 = Sunday … 6 = Saturday. `exceptions`: the days the
|
|
75
|
+
* file's calendar differs from that week (`calendarExceptions`), ascending.
|
|
76
|
+
*/
|
|
77
|
+
export function buildCalendarsBlock(workingWeekdays, exceptions) {
|
|
78
|
+
const weekDays = [0, 1, 2, 3, 4, 5, 6]
|
|
79
|
+
.map((dayIndex) => dayBlock(dayIndex, workingWeekdays.has(dayIndex)))
|
|
80
|
+
.join('\n');
|
|
37
81
|
return ` <Calendars>
|
|
38
82
|
<Calendar>
|
|
39
83
|
<UID>1</UID>
|
|
@@ -42,7 +86,7 @@ export function buildCalendarsBlock() {
|
|
|
42
86
|
<BaseCalendarUID>-1</BaseCalendarUID>
|
|
43
87
|
<WeekDays>
|
|
44
88
|
${weekDays}
|
|
45
|
-
</WeekDays
|
|
89
|
+
</WeekDays>${exceptionsBlock(exceptions)}
|
|
46
90
|
</Calendar>
|
|
47
91
|
<Calendar>
|
|
48
92
|
<UID>2</UID>
|
package/dist/calendar.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar.js","sourceRoot":"","sources":["../src/calendar.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,EAAE;AACF,
|
|
1
|
+
{"version":3,"file":"calendar.js","sourceRoot":"","sources":["../src/calendar.ts"],"names":[],"mappings":"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"}
|
package/dist/duration.d.ts
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Working minutes for a task of `days` working days. An item with no
|
|
3
|
+
* duration gets one day: a zero-length task is a milestone in MS Project.
|
|
4
|
+
*/
|
|
5
|
+
export declare function workingDaysToMinutes(days: number | undefined): number;
|
|
2
6
|
export declare function minutesToMsProjDuration(minutes: number): string;
|
|
3
7
|
//# sourceMappingURL=duration.d.ts.map
|
package/dist/duration.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duration.d.ts","sourceRoot":"","sources":["../src/duration.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"duration.d.ts","sourceRoot":"","sources":["../src/duration.ts"],"names":[],"mappings":"AASA;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAGrE;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE/D"}
|
package/dist/duration.js
CHANGED
|
@@ -1,48 +1,17 @@
|
|
|
1
|
-
//
|
|
1
|
+
// Task durations in MS Project's `PT<minutes>M0S` form.
|
|
2
2
|
//
|
|
3
|
-
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
lg: 10,
|
|
15
|
-
l: 10,
|
|
16
|
-
xl: 15,
|
|
17
|
-
};
|
|
18
|
-
const NUMERIC_RE = /^(\d+(?:\.\d+)?)\s*(d|w|m|y)?$/i;
|
|
19
|
-
const MINUTES_PER_WORKING_DAY = 8 * 60; // Standard calendar
|
|
20
|
-
const WORKING_DAYS_PER_WEEK = 5;
|
|
21
|
-
const WORKING_DAYS_PER_MONTH = 22;
|
|
22
|
-
const WORKING_DAYS_PER_YEAR = 252;
|
|
23
|
-
export function durationToMsProjMinutes(literal) {
|
|
24
|
-
if (!literal)
|
|
25
|
-
return MINUTES_PER_WORKING_DAY; // 1d default
|
|
26
|
-
const trimmed = literal.trim().toLowerCase();
|
|
27
|
-
if (!trimmed)
|
|
28
|
-
return MINUTES_PER_WORKING_DAY;
|
|
29
|
-
if (trimmed in SIZE_BUCKET_DAYS) {
|
|
30
|
-
return SIZE_BUCKET_DAYS[trimmed] * MINUTES_PER_WORKING_DAY;
|
|
31
|
-
}
|
|
32
|
-
const match = NUMERIC_RE.exec(trimmed);
|
|
33
|
-
if (!match)
|
|
34
|
-
return MINUTES_PER_WORKING_DAY;
|
|
35
|
-
const value = Number(match[1]);
|
|
36
|
-
const unit = (match[2] ?? 'd').toLowerCase();
|
|
37
|
-
if (!Number.isFinite(value) || value <= 0)
|
|
3
|
+
// The day count is engine C's `ScheduledItem.days` under the file's calendar
|
|
4
|
+
// (specs/working-calendar.md §8), so sizes, `capacity:` and `q` match the
|
|
5
|
+
// chart. Each working day is 8 hours of the Standard calendar `calendar.ts`
|
|
6
|
+
// emits.
|
|
7
|
+
const MINUTES_PER_WORKING_DAY = 8 * 60;
|
|
8
|
+
/**
|
|
9
|
+
* Working minutes for a task of `days` working days. An item with no
|
|
10
|
+
* duration gets one day: a zero-length task is a milestone in MS Project.
|
|
11
|
+
*/
|
|
12
|
+
export function workingDaysToMinutes(days) {
|
|
13
|
+
if (days === undefined || !(days > 0))
|
|
38
14
|
return MINUTES_PER_WORKING_DAY;
|
|
39
|
-
let days = value;
|
|
40
|
-
if (unit === 'w')
|
|
41
|
-
days = value * WORKING_DAYS_PER_WEEK;
|
|
42
|
-
else if (unit === 'm')
|
|
43
|
-
days = value * WORKING_DAYS_PER_MONTH;
|
|
44
|
-
else if (unit === 'y')
|
|
45
|
-
days = value * WORKING_DAYS_PER_YEAR;
|
|
46
15
|
return Math.round(days * MINUTES_PER_WORKING_DAY);
|
|
47
16
|
}
|
|
48
17
|
export function minutesToMsProjDuration(minutes) {
|
package/dist/duration.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duration.js","sourceRoot":"","sources":["../src/duration.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"duration.js","sourceRoot":"","sources":["../src/duration.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,EAAE;AACF,6EAA6E;AAC7E,0EAA0E;AAC1E,4EAA4E;AAC5E,SAAS;AAET,MAAM,uBAAuB,GAAG,CAAC,GAAG,EAAE,CAAC;AAEvC;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAwB;IACzD,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;QAAE,OAAO,uBAAuB,CAAC;IACtE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,uBAAuB,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAe;IACnD,OAAO,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC;AACtD,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,10 +3,9 @@ export interface MsProjOptions {
|
|
|
3
3
|
/** Project name attribute. Defaults to roadmap title. */
|
|
4
4
|
projectName?: string;
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* `inputs.today` (UTC midnight)
|
|
9
|
-
* to `2026-01-05` (a deterministic Monday) so tests are stable.
|
|
6
|
+
* Project start date (YYYY-MM-DD) written to `<StartDate>`. Defaults to
|
|
7
|
+
* the schedule's start, the same anchor every task date uses: the
|
|
8
|
+
* roadmap's `start:`, else `inputs.today` (UTC midnight).
|
|
10
9
|
*
|
|
11
10
|
* Documented as not round-trippable.
|
|
12
11
|
*/
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAQzD,MAAM,WAAW,aAAa;IAC1B,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAwDD,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,GAAE,aAAkB,GAAG,MAAM,CAgGzF"}
|