@nowline/export-msproj 0.8.6 → 0.9.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/dist/index.js CHANGED
@@ -3,16 +3,27 @@
3
3
  //
4
4
  // Spec: specs/handoffs/m2c.md § 8.
5
5
  // Decisions:
6
- // - Resolution 6: Standard calendar block (Mon–Fri, 8h, fixed UIDs 1/2).
6
+ // - Resolution 6: Standard calendar block (8h days, fixed UIDs 1/2). Its
7
+ // working weekdays and every task Duration come from engine C
8
+ // (`scheduleRoadmap`) under the file's calendar, so they match the chart
9
+ // (specs/working-calendar.md §8).
7
10
  // - Resolution 9: single stderr summary line on lossy drops; never an error.
8
11
  // - Lossy export policy: `--strict` does not escalate.
12
+ // - Waves (specs/waves.md §10): one wave-end milestone task per wave,
13
+ // appended after every other task so existing UIDs never renumber.
14
+ // - Lane sequencing: each node links finish-to-start to the node before
15
+ // it in its lane or group, so MS Project's forward pass starts every
16
+ // task on engine C's day (specs/rendering.md § MS Project XML Export).
9
17
  //
10
18
  // Determinism: no `new Date()`. Anchoring date comes from `options.startDate`
11
- // or `inputs.today`; calendar UIDs are fixed; Tasks numbered sequentially.
19
+ // or the schedule's start (the roadmap's `start:`, else `inputs.today`);
20
+ // calendar UIDs are fixed; Tasks numbered sequentially.
21
+ import { ISO_DATE_RE } from '@nowline/core/internal';
12
22
  import { displayLabel, getProp, getProps, hasProp, roadmapTitle } from '@nowline/export-core';
23
+ import { calendarExceptions, scheduleRoadmap } from '@nowline/layout';
13
24
  import { buildCalendarsBlock, STANDARD_RESOURCE_CALENDAR_UID } from './calendar.js';
14
- import { durationToMsProjMinutes, minutesToMsProjDuration } from './duration.js';
15
- import { escapeXml, tag } from './xml.js';
25
+ import { minutesToMsProjDuration, workingDaysToMinutes } from './duration.js';
26
+ import { escapeXml, singleLine, tag } from './xml.js';
16
27
  const PROJECT_XMLNS = 'http://schemas.microsoft.com/project';
17
28
  export function exportMsProjXml(inputs, options = {}) {
18
29
  const ast = inputs.ast;
@@ -24,19 +35,27 @@ export function exportMsProjXml(inputs, options = {}) {
24
35
  progress: 0,
25
36
  before: 0,
26
37
  description: 0,
38
+ waveNoId: 0,
39
+ waveFloor: 0,
27
40
  };
28
41
  const projectName = escapeXml(options.projectName ?? roadmapTitle(ast.roadmapDecl ?? undefined));
29
- const startDate = resolveStartDate(options.startDate, inputs.today);
42
+ const schedule = inputs.schedule ?? scheduleRoadmap(ast, inputs.resolved, { today: inputs.today });
43
+ const startDate = resolveStartDate(options.startDate, schedule.startDate);
30
44
  // Resources
31
45
  const resources = collectResources(ast);
32
46
  // Tasks (walk roadmap entries in source order)
33
- const tasks = collectTasks(ast, drops, startDate);
47
+ const { tasks, parallelEnds } = collectTasks(ast, drops, schedule);
34
48
  // Predecessor lookup uses Nowline ids → task UIDs.
35
49
  const idToUid = new Map();
36
50
  for (const t of tasks) {
37
51
  if (t.nowlineId)
38
52
  idToUid.set(t.nowlineId, t.uid);
39
53
  }
54
+ // Undefined when the roadmap declares no waves: nothing below changes.
55
+ const wavePlan = schedule.plan;
56
+ if (wavePlan) {
57
+ addWaveTasks(ast, wavePlan, tasks, idToUid, drops);
58
+ }
40
59
  const idToUidResource = new Map();
41
60
  for (const r of resources) {
42
61
  if (r.nowlineId)
@@ -51,11 +70,13 @@ export function exportMsProjXml(inputs, options = {}) {
51
70
  lines.push(` <StartDate>${startDate}T08:00:00</StartDate>`);
52
71
  lines.push(' <ScheduleFromStart>1</ScheduleFromStart>');
53
72
  lines.push(' <CalendarUID>1</CalendarUID>');
54
- lines.push(buildCalendarsBlock());
73
+ const { working } = schedule.calendar;
74
+ const { startDate: windowStart, endDate: windowEnd } = inputs.model.timeline;
75
+ lines.push(buildCalendarsBlock(working.workingWeekdays, calendarExceptions(working, windowStart, windowEnd)));
55
76
  // Tasks block
56
77
  lines.push(' <Tasks>');
57
78
  for (const t of tasks) {
58
- emitTask(t, idToUid, lines);
79
+ emitTask(t, idToUid, parallelEnds, lines);
59
80
  }
60
81
  lines.push(' </Tasks>');
61
82
  // Resources block
@@ -85,9 +106,9 @@ export function exportMsProjXml(inputs, options = {}) {
85
106
  return lines.join('\n');
86
107
  }
87
108
  // ---------- Tasks ----------
88
- function collectTasks(ast, drops, startDate) {
109
+ function collectTasks(ast, drops, schedule) {
89
110
  const tasks = [];
90
- const ctx = { uid: 1, id: 1 };
111
+ const ctx = { uid: 1, id: 1, parallelEnds: new Map() };
91
112
  for (const entry of ast.roadmapEntries) {
92
113
  if (entry.$type === 'SwimlaneDeclaration') {
93
114
  const lane = entry;
@@ -101,12 +122,12 @@ function collectTasks(ast, drops, startDate) {
101
122
  isMilestone: false,
102
123
  durationMinutes: 0,
103
124
  predecessors: [],
125
+ chainUids: [],
104
126
  nowlineId: lane.name,
105
127
  ownerRefs: getProps(lane, 'owner'),
106
128
  });
107
- for (const child of lane.content) {
108
- walkSwimlaneChild(child, 2, ctx, drops, tasks, startDate);
109
- }
129
+ // A lane's first node links to nothing: it starts on the project start.
130
+ walkSequence(lane.content, [], 2, ctx, drops, tasks, schedule);
110
131
  // Summary spans all child rows — implicit in MSProject by id ranges,
111
132
  // but we don't bother computing FinishDate / actuals.
112
133
  void summaryUid;
@@ -122,6 +143,7 @@ function collectTasks(ast, drops, startDate) {
122
143
  isMilestone: true,
123
144
  durationMinutes: 0,
124
145
  predecessors: getProps(m, 'after'),
146
+ chainUids: [],
125
147
  nowlineId: m.name,
126
148
  ownerRefs: [],
127
149
  startsAt: getProp(m, 'date'),
@@ -140,99 +162,110 @@ function collectTasks(ast, drops, startDate) {
140
162
  isMilestone: true, // Anchors → milestones in MS Project
141
163
  durationMinutes: 0,
142
164
  predecessors: [],
165
+ chainUids: [],
143
166
  nowlineId: a.name,
144
167
  ownerRefs: [],
145
168
  startsAt: getProp(a, 'date'),
146
169
  });
147
170
  }
148
171
  }
149
- return tasks;
172
+ return { tasks, parallelEnds: ctx.parallelEnds };
173
+ }
174
+ /**
175
+ * Engine C's sequential rule (`walkLane` in schedule.ts): each node starts
176
+ * after the one before it. `entry` is what the first node links to; each
177
+ * node's ends become the next node's entry. Returns the last node's ends.
178
+ */
179
+ function walkSequence(children, entry, outline, ctx, drops, tasks, schedule) {
180
+ let prev = entry;
181
+ for (const child of children) {
182
+ prev = walkNode(child, prev, [], outline, ctx, drops, tasks, schedule);
183
+ }
184
+ return prev;
150
185
  }
151
- function walkSwimlaneChild(child, outline, ctx, drops, tasks, startDate) {
186
+ /**
187
+ * Writes one lane or group child and returns the UIDs that end it. `entry`
188
+ * links to the previous node; `inheritedAfter` is a parallel's own `after:`,
189
+ * which each of its tracks carries since the parallel has no task.
190
+ */
191
+ function walkNode(child, entry, inheritedAfter, outline, ctx, drops, tasks, schedule) {
152
192
  if (child.$type === 'ItemDeclaration') {
153
- emitTaskRow(child, outline, ctx, drops, tasks);
193
+ return [emitTaskRow(child, entry, inheritedAfter, outline, ctx, drops, tasks, schedule)];
154
194
  }
155
- else if (child.$type === 'GroupBlock') {
156
- const group = child;
157
- tasks.push({
158
- uid: ctx.uid++,
159
- id: ctx.id++,
160
- name: displayLabel(group),
161
- outlineLevel: outline,
162
- isSummary: true,
163
- isMilestone: false,
164
- durationMinutes: 0,
165
- predecessors: [],
166
- nowlineId: group.name,
167
- ownerRefs: [],
168
- });
169
- for (const grandchild of group.content) {
170
- walkGroupChild(grandchild, outline + 1, ctx, drops, tasks, startDate);
171
- }
195
+ if (child.$type === 'GroupBlock') {
196
+ return [emitGroup(child, entry, inheritedAfter, outline, ctx, drops, tasks, schedule)];
172
197
  }
173
- else if (child.$type === 'ParallelBlock') {
174
- const parallel = child;
175
- for (const grandchild of parallel.content) {
176
- if (grandchild.$type === 'ItemDeclaration') {
177
- emitTaskRow(grandchild, outline, ctx, drops, tasks);
178
- }
179
- else if (grandchild.$type === 'GroupBlock') {
180
- walkSwimlaneChild(grandchild, outline, ctx, drops, tasks, startDate);
181
- }
182
- }
198
+ if (child.$type === 'ParallelBlock') {
199
+ return walkParallel(child, entry, outline, ctx, drops, tasks, schedule);
183
200
  }
184
- else if (child.$type === 'DescriptionDirective') {
201
+ if (child.$type === 'DescriptionDirective') {
185
202
  drops.description += 1;
186
203
  }
204
+ return entry;
187
205
  }
188
- function walkGroupChild(child, outline, ctx, drops, tasks, startDate) {
189
- if (child.$type === 'ItemDeclaration') {
190
- emitTaskRow(child, outline, ctx, drops, tasks);
191
- }
192
- else if (child.$type === 'GroupBlock') {
193
- const group = child;
194
- tasks.push({
195
- uid: ctx.uid++,
196
- id: ctx.id++,
197
- name: displayLabel(group),
198
- outlineLevel: outline,
199
- isSummary: true,
200
- isMilestone: false,
201
- durationMinutes: 0,
202
- predecessors: [],
203
- nowlineId: group.name,
204
- ownerRefs: [],
205
- });
206
- for (const grandchild of group.content) {
207
- walkGroupChild(grandchild, outline + 1, ctx, drops, tasks, startDate);
208
- }
209
- }
210
- else if (child.$type === 'ParallelBlock') {
211
- const parallel = child;
212
- for (const grandchild of parallel.content) {
213
- if (grandchild.$type === 'ItemDeclaration') {
214
- emitTaskRow(grandchild, outline, ctx, drops, tasks);
215
- }
206
+ /**
207
+ * A group is a summary task over its children, one outline level down. Its
208
+ * entry link and its `after:` go on the summary task: MS Project starts no
209
+ * subtask before its summary task's predecessors finish, so the first child
210
+ * needs no link of its own. Returns the summary task's UID, which MS Project
211
+ * finishes with the group's last child.
212
+ */
213
+ function emitGroup(group, entry, inheritedAfter, outline, ctx, drops, tasks, schedule) {
214
+ const uid = ctx.uid++;
215
+ tasks.push({
216
+ uid,
217
+ id: ctx.id++,
218
+ name: displayLabel(group),
219
+ outlineLevel: outline,
220
+ isSummary: true,
221
+ isMilestone: false,
222
+ durationMinutes: 0,
223
+ predecessors: [...getProps(group, 'after'), ...inheritedAfter],
224
+ chainUids: entry,
225
+ nowlineId: group.name,
226
+ ownerRefs: [],
227
+ });
228
+ walkSequence(group.content, [], outline + 1, ctx, drops, tasks, schedule);
229
+ return uid;
230
+ }
231
+ /**
232
+ * A parallel has no task: its tracks sit at its own outline level, and each
233
+ * track's task (an item, or a group's summary task) takes the links the
234
+ * parallel would have had, its entry and its `after:`. Engine C ends a
235
+ * parallel at its latest track end, so the next node in the lane and
236
+ * `after:<parallel>` link to every track's task and MS Project starts the
237
+ * successor at the latest of them. Returns those track ends.
238
+ */
239
+ function walkParallel(parallel, entry, outline, ctx, drops, tasks, schedule) {
240
+ const after = getProps(parallel, 'after');
241
+ const ends = [];
242
+ for (const track of parallel.content) {
243
+ if (track.$type === 'ItemDeclaration' || track.$type === 'GroupBlock') {
244
+ ends.push(...walkNode(track, entry, after, outline, ctx, drops, tasks, schedule));
216
245
  }
217
246
  }
218
- else if (child.$type === 'DescriptionDirective') {
219
- drops.description += 1;
220
- }
247
+ if (parallel.name)
248
+ ctx.parallelEnds.set(parallel.name, ends);
249
+ return ends.length > 0 ? ends : entry;
221
250
  }
222
- function emitTaskRow(item, outline, ctx, drops, tasks) {
251
+ function emitTaskRow(item, entry, inheritedAfter, outline, ctx, drops, tasks, schedule) {
223
252
  countDrops(item, drops);
253
+ const uid = ctx.uid++;
224
254
  tasks.push({
225
- uid: ctx.uid++,
255
+ uid,
226
256
  id: ctx.id++,
227
257
  name: displayLabel(item),
228
258
  outlineLevel: outline,
229
259
  isSummary: false,
230
260
  isMilestone: false,
231
- durationMinutes: durationToMsProjMinutes(getProp(item, 'duration') ?? getProp(item, 'size')),
232
- predecessors: getProps(item, 'after'),
261
+ durationMinutes: workingDaysToMinutes(schedule.byNode.get(item)?.days),
262
+ predecessors: [...getProps(item, 'after'), ...inheritedAfter],
263
+ chainUids: entry,
233
264
  nowlineId: item.name,
234
265
  ownerRefs: getProps(item, 'owner'),
266
+ node: item,
235
267
  });
268
+ return uid;
236
269
  }
237
270
  function countDrops(item, drops) {
238
271
  if (getProps(item, 'labels').length > 0)
@@ -246,11 +279,11 @@ function countDrops(item, drops) {
246
279
  if (item.description)
247
280
  drops.description += 1;
248
281
  }
249
- function emitTask(t, idToUid, lines) {
282
+ function emitTask(t, idToUid, parallelEnds, lines) {
250
283
  lines.push(' <Task>');
251
284
  lines.push(` ${tag('UID', t.uid)}`);
252
285
  lines.push(` ${tag('ID', t.id)}`);
253
- lines.push(` ${tag('Name', t.name)}`);
286
+ lines.push(` ${tag('Name', singleLine(t.name))}`);
254
287
  if (t.isSummary)
255
288
  lines.push(` <Summary>1</Summary>`);
256
289
  if (t.isMilestone) {
@@ -264,17 +297,111 @@ function emitTask(t, idToUid, lines) {
264
297
  if (t.startsAt) {
265
298
  lines.push(` <Start>${t.startsAt}T08:00:00</Start>`);
266
299
  }
300
+ const linked = new Set();
267
301
  for (const pred of t.predecessors) {
268
302
  const uid = idToUid.get(pred);
269
- if (uid !== undefined) {
270
- lines.push(' <PredecessorLink>');
271
- lines.push(` ${tag('PredecessorUID', uid)}`);
272
- lines.push(' <Type>1</Type>'); // FS
273
- lines.push(' </PredecessorLink>');
303
+ // A parallel has no task of its own: link to each track's end.
304
+ for (const end of uid !== undefined ? [uid] : (parallelEnds.get(pred) ?? [])) {
305
+ if (linked.has(end))
306
+ continue;
307
+ emitPredecessorLink(end, lines);
308
+ linked.add(end);
274
309
  }
275
310
  }
311
+ for (const uid of [...t.chainUids, ...(t.extraPredecessorUids ?? [])]) {
312
+ if (linked.has(uid))
313
+ continue;
314
+ emitPredecessorLink(uid, lines);
315
+ linked.add(uid);
316
+ }
276
317
  lines.push(' </Task>');
277
318
  }
319
+ function emitPredecessorLink(uid, lines) {
320
+ lines.push(' <PredecessorLink>');
321
+ lines.push(` ${tag('PredecessorUID', uid)}`);
322
+ lines.push(' <Type>1</Type>'); // FS
323
+ lines.push(' </PredecessorLink>');
324
+ }
325
+ // ---------- Waves ----------
326
+ /**
327
+ * Waves (specs/waves.md §10). Appends one zero-duration milestone task per
328
+ * wave, `{title} (wave end)`, after every other task (so existing UIDs and
329
+ * IDs never renumber), and wires the barrier as FS links:
330
+ * - wave-end task k <- every member of wave k with an id, and wave k-1's end;
331
+ * - every member of wave k >= 2 <- wave k-1's end task;
332
+ * - a floor (`after:` on the wave naming an anchor or a dated milestone)
333
+ * <- every member of wave k and wave k's end task (the end task covers an
334
+ * empty wave); an inline-date floor is dropped and counted.
335
+ * Wave ids join `idToUid`, so `after:<wave>` links to the wave-end task.
336
+ * Background work gets nothing.
337
+ */
338
+ function addWaveTasks(ast, plan, tasks, idToUid, drops) {
339
+ const datedTargets = new Set();
340
+ for (const entry of ast.roadmapEntries) {
341
+ if (entry.$type === 'AnchorDeclaration') {
342
+ const a = entry;
343
+ if (a.name)
344
+ datedTargets.add(a.name);
345
+ }
346
+ else if (entry.$type === 'MilestoneDeclaration') {
347
+ const m = entry;
348
+ if (m.name && getProp(m, 'date') !== undefined)
349
+ datedTargets.add(m.name);
350
+ }
351
+ }
352
+ const last = tasks[tasks.length - 1];
353
+ let uid = (last?.uid ?? 0) + 1;
354
+ let id = (last?.id ?? 0) + 1;
355
+ const endUids = plan.waves.map(() => uid++);
356
+ const floorUids = plan.waves.map((wave) => {
357
+ const out = [];
358
+ for (const ref of getProps(wave, 'after')) {
359
+ if (ISO_DATE_RE.test(ref)) {
360
+ drops.waveFloor += 1;
361
+ continue;
362
+ }
363
+ const target = datedTargets.has(ref) ? idToUid.get(ref) : undefined;
364
+ if (target !== undefined)
365
+ out.push(target);
366
+ }
367
+ return out;
368
+ });
369
+ const memberUids = plan.waves.map(() => []);
370
+ for (const t of tasks) {
371
+ const k = t.node ? plan.memberWave(t.node) : undefined;
372
+ if (k === undefined)
373
+ continue;
374
+ const extra = [...floorUids[k - 1]];
375
+ if (k >= 2)
376
+ extra.unshift(endUids[k - 2]);
377
+ if (extra.length > 0)
378
+ t.extraPredecessorUids = extra;
379
+ if (t.nowlineId)
380
+ memberUids[k - 1].push(t.uid);
381
+ else
382
+ drops.waveNoId += 1;
383
+ }
384
+ plan.waves.forEach((wave, i) => {
385
+ const preds = [...memberUids[i], ...floorUids[i]];
386
+ if (i > 0)
387
+ preds.push(endUids[i - 1]);
388
+ tasks.push({
389
+ uid: endUids[i],
390
+ id: id++,
391
+ name: `${displayLabel(wave)} (wave end)`,
392
+ outlineLevel: 1,
393
+ isSummary: false,
394
+ isMilestone: true,
395
+ durationMinutes: 0,
396
+ predecessors: [],
397
+ chainUids: [],
398
+ ownerRefs: [],
399
+ extraPredecessorUids: preds,
400
+ });
401
+ if (wave.name && !idToUid.has(wave.name))
402
+ idToUid.set(wave.name, endUids[i]);
403
+ });
404
+ }
278
405
  // ---------- Resources ----------
279
406
  function collectResources(ast) {
280
407
  const out = [];
@@ -312,7 +439,7 @@ function emitResource(r, lines) {
312
439
  lines.push(' <Resource>');
313
440
  lines.push(` ${tag('UID', r.uid)}`);
314
441
  lines.push(` ${tag('ID', r.id)}`);
315
- lines.push(` ${tag('Name', r.name)}`);
442
+ lines.push(` ${tag('Name', singleLine(r.name))}`);
316
443
  lines.push(` <CalendarUID>${STANDARD_RESOURCE_CALENDAR_UID}</CalendarUID>`);
317
444
  lines.push(' </Resource>');
318
445
  }
@@ -347,23 +474,29 @@ function formatDrops(drops) {
347
474
  'progress',
348
475
  'before',
349
476
  'description',
477
+ 'waveNoId',
478
+ 'waveFloor',
350
479
  ];
351
- const parts = order.filter((k) => drops[k] > 0).map((k) => `${k} (${drops[k]})`);
480
+ const parts = order.filter((k) => drops[k] > 0).map((k) => `${formatDropKey(k)} (${drops[k]})`);
352
481
  if (parts.length === 0)
353
482
  return null;
354
483
  return `nowline: msproj export dropped ${parts.length} feature kinds: ${parts.join(', ')}`;
355
484
  }
485
+ function formatDropKey(key) {
486
+ if (key === 'waveNoId')
487
+ return 'wave-member-no-id';
488
+ if (key === 'waveFloor')
489
+ return 'wave-floor';
490
+ return key;
491
+ }
356
492
  // ---------- helpers ----------
357
- function resolveStartDate(option, today) {
493
+ function resolveStartDate(option, scheduleStart) {
358
494
  if (option) {
359
- if (!/^\d{4}-\d{2}-\d{2}$/.test(option)) {
495
+ if (!ISO_DATE_RE.test(option)) {
360
496
  throw new Error(`invalid msproj startDate "${option}": expected YYYY-MM-DD`);
361
497
  }
362
498
  return option;
363
499
  }
364
- if (today) {
365
- return today.toISOString().slice(0, 10);
366
- }
367
- return '2026-01-05'; // a deterministic Monday for tests
500
+ return scheduleStart.toISOString().slice(0, 10);
368
501
  }
369
502
  //# 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":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/xml.d.ts CHANGED
@@ -1,4 +1,11 @@
1
1
  export declare function escapeXml(value: string): string;
2
+ /**
3
+ * Collapse explicit line breaks (a `\n` in an item title) to a single
4
+ * space. MS Project task and resource names are single-line fields, so a
5
+ * raw line feed in `<Name>` would import as a stray control character
6
+ * instead of a break; a space keeps the words apart.
7
+ */
8
+ export declare function singleLine(value: string): string;
2
9
  export declare function tag(name: string, value: string | number | boolean): string;
3
10
  export declare function selfTag(name: string): string;
4
11
  //# sourceMappingURL=xml.d.ts.map
package/dist/xml.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"xml.d.ts","sourceRoot":"","sources":["../src/xml.ts"],"names":[],"mappings":"AAIA,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAO/C;AAED,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAE1E;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5C"}
1
+ {"version":3,"file":"xml.d.ts","sourceRoot":"","sources":["../src/xml.ts"],"names":[],"mappings":"AAIA,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAO/C;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAE1E;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5C"}
package/dist/xml.js CHANGED
@@ -9,6 +9,15 @@ export function escapeXml(value) {
9
9
  .replace(/"/g, '&quot;')
10
10
  .replace(/'/g, '&apos;');
11
11
  }
12
+ /**
13
+ * Collapse explicit line breaks (a `\n` in an item title) to a single
14
+ * space. MS Project task and resource names are single-line fields, so a
15
+ * raw line feed in `<Name>` would import as a stray control character
16
+ * instead of a break; a space keeps the words apart.
17
+ */
18
+ export function singleLine(value) {
19
+ return /[\r\n]/.test(value) ? value.replace(/\s*[\r\n]+\s*/g, ' ').trim() : value;
20
+ }
12
21
  export function tag(name, value) {
13
22
  return `<${name}>${escapeXml(String(value))}</${name}>`;
14
23
  }
package/dist/xml.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"xml.js","sourceRoot":"","sources":["../src/xml.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,yEAAyE;AACzE,oCAAoC;AAEpC,MAAM,UAAU,SAAS,CAAC,KAAa;IACnC,OAAO,KAAK;SACP,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,KAAgC;IAC9D,OAAO,IAAI,IAAI,IAAI,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAY;IAChC,OAAO,IAAI,IAAI,IAAI,CAAC;AACxB,CAAC"}
1
+ {"version":3,"file":"xml.js","sourceRoot":"","sources":["../src/xml.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,yEAAyE;AACzE,oCAAoC;AAEpC,MAAM,UAAU,SAAS,CAAC,KAAa;IACnC,OAAO,KAAK;SACP,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,KAAa;IACpC,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,KAAgC;IAC9D,OAAO,IAAI,IAAI,IAAI,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAY;IAChC,OAAO,IAAI,IAAI,IAAI,CAAC;AACxB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nowline/export-msproj",
3
- "version": "0.8.6",
3
+ "version": "0.9.0",
4
4
  "description": "Exports a Nowline roadmap to Microsoft Project XML for import into other PM tools.",
5
5
  "license": "Apache-2.0",
6
6
  "engines": {
@@ -21,15 +21,15 @@
21
21
  "src/"
22
22
  ],
23
23
  "dependencies": {
24
- "@nowline/core": "0.8.6",
25
- "@nowline/export-core": "0.8.6",
26
- "@nowline/layout": "0.8.6"
24
+ "@nowline/core": "0.9.0",
25
+ "@nowline/export-core": "0.9.0",
26
+ "@nowline/layout": "0.9.0"
27
27
  },
28
28
  "devDependencies": {
29
- "@types/node": "^26.6.3",
29
+ "@types/node": "^26.6.5",
30
30
  "langium": "~4.4.0",
31
31
  "typescript": "^7.0.2",
32
- "vitest": "^5.0.2"
32
+ "vitest": "^5.0.5"
33
33
  },
34
34
  "scripts": {
35
35
  "build": "tsc -b tsconfig.json",