@nowline/core 0.5.1 → 0.6.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.
@@ -202,15 +202,15 @@ function applyRoadmapMode(target, child, childConfig, mode, childPath, childRelP
202
202
  message: `${category} "${name}" from ${basename(childPath)} is shadowed by the parent's definition.`,
203
203
  sourcePath: childPath,
204
204
  });
205
- mergeMap(target.persons, child.persons, (name) => warn(name, 'Person'));
206
- mergeMap(target.teams, child.teams, (name) => warn(name, 'Team'));
207
- mergeMap(target.anchors, child.anchors, (name) => warn(name, 'Anchor'));
208
- mergeMap(target.labels, child.labels, (name) => warn(name, 'Label'));
209
- mergeMap(target.sizes, child.sizes, (name) => warn(name, 'Size'));
210
- mergeMap(target.statuses, child.statuses, (name) => warn(name, 'Status'));
211
- mergeMap(target.swimlanes, child.swimlanes, (name) => warn(name, 'Swimlane'));
212
- mergeMap(target.milestones, child.milestones, (name) => warn(name, 'Milestone'));
213
- mergeMap(target.footnotes, child.footnotes, (name) => warn(name, 'Footnote'));
205
+ mergeContentMap(target.persons, child.persons, (name) => warn(name, 'Person'));
206
+ mergeContentMap(target.teams, child.teams, (name) => warn(name, 'Team'));
207
+ mergeContentMap(target.anchors, child.anchors, (name) => warn(name, 'Anchor'));
208
+ mergeContentMap(target.labels, child.labels, (name) => warn(name, 'Label'));
209
+ mergeContentMap(target.sizes, child.sizes, (name) => warn(name, 'Size'));
210
+ mergeContentMap(target.statuses, child.statuses, (name) => warn(name, 'Status'));
211
+ mergeContentMap(target.swimlanes, child.swimlanes, (name) => warn(name, 'Swimlane'));
212
+ mergeContentMap(target.milestones, child.milestones, (name) => warn(name, 'Milestone'));
213
+ mergeContentMap(target.footnotes, child.footnotes, (name) => warn(name, 'Footnote'));
214
214
  if (child.roadmap && !target.roadmap) {
215
215
  target.roadmap = child.roadmap;
216
216
  }
@@ -224,6 +224,25 @@ function mergeMap(target, source, onConflict) {
224
224
  target.set(name, value);
225
225
  }
226
226
  }
227
+ /**
228
+ * Merge a child content map into the parent. Explicit-id entries keep the
229
+ * parent-wins-on-collision behavior (and warn). Title-only (auto-slugged)
230
+ * entries are internal and non-referenceable, so they never shadow and never
231
+ * warn — each is re-keyed around the parent's entries and kept.
232
+ */
233
+ function mergeContentMap(target, source, onConflict) {
234
+ for (const [name, value] of source) {
235
+ if (!value.name && value.title) {
236
+ target.set(uniqueMapKey(target, slugifyTitle(value.title)), value);
237
+ continue;
238
+ }
239
+ if (target.has(name)) {
240
+ onConflict(name);
241
+ continue;
242
+ }
243
+ target.set(name, value);
244
+ }
245
+ }
227
246
  function mergeLocalConfig(config, file) {
228
247
  for (const entry of file.configEntries) {
229
248
  addConfigEntry(config, entry);
@@ -254,59 +273,119 @@ function addConfigEntry(config, entry) {
254
273
  }
255
274
  }
256
275
  }
276
+ function collectExplicitRoadmapIds(entries) {
277
+ const reserved = {
278
+ swimlanes: new Set(),
279
+ persons: new Set(),
280
+ teams: new Set(),
281
+ anchors: new Set(),
282
+ labels: new Set(),
283
+ sizes: new Set(),
284
+ statuses: new Set(),
285
+ milestones: new Set(),
286
+ footnotes: new Set(),
287
+ };
288
+ for (const entry of entries) {
289
+ const name = entry.name;
290
+ if (!name)
291
+ continue;
292
+ if (isSwimlaneDeclaration(entry))
293
+ reserved.swimlanes.add(name);
294
+ else if (isPersonDeclaration(entry))
295
+ reserved.persons.add(name);
296
+ else if (isTeamDeclaration(entry))
297
+ reserved.teams.add(name);
298
+ else if (isAnchorDeclaration(entry))
299
+ reserved.anchors.add(name);
300
+ else if (isLabelDeclaration(entry))
301
+ reserved.labels.add(name);
302
+ else if (isSizeDeclaration(entry))
303
+ reserved.sizes.add(name);
304
+ else if (isStatusDeclaration(entry))
305
+ reserved.statuses.add(name);
306
+ else if (isMilestoneDeclaration(entry))
307
+ reserved.milestones.add(name);
308
+ else if (isFootnoteDeclaration(entry))
309
+ reserved.footnotes.add(name);
310
+ }
311
+ return reserved;
312
+ }
257
313
  function mergeLocalContent(content, file) {
258
314
  if (file.roadmapDecl && !content.roadmap) {
259
315
  content.roadmap = file.roadmapDecl;
260
316
  }
317
+ // Pre-scan explicit ids so a title-only slug can never displace one an
318
+ // author spelled out, even when the title-only entry comes first in source.
319
+ const reserved = collectExplicitRoadmapIds(file.roadmapEntries);
261
320
  for (const entry of file.roadmapEntries) {
262
- addRoadmapEntry(content, entry);
321
+ addRoadmapEntry(content, entry, reserved);
263
322
  }
264
323
  }
265
- function addRoadmapEntry(content, entry) {
266
- if (isSwimlaneDeclaration(entry)) {
267
- if (entry.name && !content.swimlanes.has(entry.name)) {
268
- content.swimlanes.set(entry.name, entry);
324
+ /** Kebab-case slug for title-only entities (specs/dsl.md § Identifiers). */
325
+ function slugifyTitle(title) {
326
+ return (title
327
+ .toLowerCase()
328
+ .replace(/[^a-z0-9]+/g, '-')
329
+ .replace(/^-+|-+$/g, '') || 'entity');
330
+ }
331
+ /**
332
+ * Pick a map key that does not collide with an existing entry, nor with any
333
+ * key in `reserved` (explicit ids that will be inserted later in the same
334
+ * pass). Reserving keeps a title-only slug from claiming a key an author
335
+ * spelled out explicitly, regardless of source order.
336
+ */
337
+ function uniqueMapKey(map, base, reserved) {
338
+ const taken = (key) => map.has(key) || (reserved?.has(key) ?? false);
339
+ if (!taken(base))
340
+ return base;
341
+ let n = 2;
342
+ while (taken(`${base}-${n}`))
343
+ n++;
344
+ return `${base}-${n}`;
345
+ }
346
+ /**
347
+ * Insert a roadmap entity into a resolved-content map. Explicit ids always
348
+ * win their key (and keep today's parent-wins-on-collision behavior); title-only
349
+ * entries land under a slug derived from the title (internal key — not written
350
+ * to AST) that avoids both occupied and `reserved` explicit-id keys.
351
+ */
352
+ function addByKey(map, entry, reserved) {
353
+ if (entry.name) {
354
+ if (!map.has(entry.name)) {
355
+ map.set(entry.name, entry);
269
356
  }
270
357
  }
358
+ else if (entry.title) {
359
+ map.set(uniqueMapKey(map, slugifyTitle(entry.title), reserved), entry);
360
+ }
361
+ }
362
+ function addRoadmapEntry(content, entry, reserved) {
363
+ if (isSwimlaneDeclaration(entry)) {
364
+ addByKey(content.swimlanes, entry, reserved.swimlanes);
365
+ }
271
366
  else if (isPersonDeclaration(entry)) {
272
- if (entry.name && !content.persons.has(entry.name)) {
273
- content.persons.set(entry.name, entry);
274
- }
367
+ addByKey(content.persons, entry, reserved.persons);
275
368
  }
276
369
  else if (isTeamDeclaration(entry)) {
277
- if (entry.name && !content.teams.has(entry.name)) {
278
- content.teams.set(entry.name, entry);
279
- }
370
+ addByKey(content.teams, entry, reserved.teams);
280
371
  }
281
372
  else if (isAnchorDeclaration(entry)) {
282
- if (entry.name && !content.anchors.has(entry.name)) {
283
- content.anchors.set(entry.name, entry);
284
- }
373
+ addByKey(content.anchors, entry, reserved.anchors);
285
374
  }
286
375
  else if (isLabelDeclaration(entry)) {
287
- if (entry.name && !content.labels.has(entry.name)) {
288
- content.labels.set(entry.name, entry);
289
- }
376
+ addByKey(content.labels, entry, reserved.labels);
290
377
  }
291
378
  else if (isSizeDeclaration(entry)) {
292
- if (entry.name && !content.sizes.has(entry.name)) {
293
- content.sizes.set(entry.name, entry);
294
- }
379
+ addByKey(content.sizes, entry, reserved.sizes);
295
380
  }
296
381
  else if (isStatusDeclaration(entry)) {
297
- if (entry.name && !content.statuses.has(entry.name)) {
298
- content.statuses.set(entry.name, entry);
299
- }
382
+ addByKey(content.statuses, entry, reserved.statuses);
300
383
  }
301
384
  else if (isMilestoneDeclaration(entry)) {
302
- if (entry.name && !content.milestones.has(entry.name)) {
303
- content.milestones.set(entry.name, entry);
304
- }
385
+ addByKey(content.milestones, entry, reserved.milestones);
305
386
  }
306
387
  else if (isFootnoteDeclaration(entry)) {
307
- if (entry.name && !content.footnotes.has(entry.name)) {
308
- content.footnotes.set(entry.name, entry);
309
- }
388
+ addByKey(content.footnotes, entry, reserved.footnotes);
310
389
  }
311
390
  }
312
391
  //# sourceMappingURL=include-resolver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"include-resolver.js","sourceRoot":"","sources":["../../src/language/include-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAsB9B,OAAO,EACH,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAKlF,MAAM,OAAO,GAAG,qBAAqB,CAAC;AAEtC,SAAS,aAAa,CAAC,IAAoC;IACvD,MAAM,IAAI,GAAG,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC;IAC7D,IAAI,CAAC,IAAI,EAAE,KAAK;QAAE,OAAO,SAAS,CAAC;IACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAChD,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;QAAE,OAAO,SAAS,CAAC;IACnE,OAAO,IAAI,CAAC,KAAK,CAAC;AACtB,CAAC;AAED,SAAS,mBAAmB,CACxB,YAAoB,EACpB,WAA+B,EAC/B,UAA8B;IAE9B,IAAI,WAAW,IAAI,UAAU,EAAE,CAAC;QAC5B,OAAO,aAAa,YAAY,oBAAoB,UAAU,2CAA2C,WAAW,mEAAmE,CAAC;IAC5L,CAAC;IACD,IAAI,WAAW,EAAE,CAAC;QACd,OAAO,aAAa,YAAY,iDAAiD,WAAW,mEAAmE,CAAC;IACpK,CAAC;IACD,OAAO,aAAa,YAAY,oBAAoB,UAAU,gGAAgG,CAAC;AACnK,CAAC;AA4DD,SAAS,WAAW;IAChB,OAAO;QACH,MAAM,EAAE,IAAI,GAAG,EAAE;QACjB,QAAQ,EAAE,IAAI,GAAG,EAAE;QACnB,OAAO,EAAE,IAAI,GAAG,EAAE;KACrB,CAAC;AACN,CAAC;AAED,SAAS,YAAY;IACjB,OAAO;QACH,OAAO,EAAE,IAAI,GAAG,EAAE;QAClB,KAAK,EAAE,IAAI,GAAG,EAAE;QAChB,OAAO,EAAE,IAAI,GAAG,EAAE;QAClB,MAAM,EAAE,IAAI,GAAG,EAAE;QACjB,KAAK,EAAE,IAAI,GAAG,EAAE;QAChB,QAAQ,EAAE,IAAI,GAAG,EAAE;QACnB,SAAS,EAAE,IAAI,GAAG,EAAE;QACpB,UAAU,EAAE,IAAI,GAAG,EAAE;QACrB,SAAS,EAAE,IAAI,GAAG,EAAE;QACpB,eAAe,EAAE,EAAE;KACtB,CAAC;AACN,CAAC;AAOD,MAAM,CAAC,KAAK,UAAU,eAAe,CACjC,IAAiB,EACjB,QAAgB,EAChB,OAA+B;IAE/B,gEAAgE;IAChE,oEAAoE;IACpE,oCAAoC;IACpC,MAAM,QAAQ,GACV,OAAO,CAAC,QAAQ;QAChB,CAAC,KAAK,EAAE,CAAS,EAAE,EAAE;YACjB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;YACnE,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACP,MAAM,GAAG,GAAmB;QACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,WAAW,EAAE,EAAE;QACf,SAAS,EAAE,EAAE;QACb,SAAS,EAAE,IAAI,GAAG,EAAE;QACpB,QAAQ;KACX,CAAC;IACF,MAAM,OAAO,GAAG,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC1C,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAClE,OAAO;QACH,MAAM;QACN,OAAO;QACP,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,cAAc,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;KAChD,CAAC;AACN,CAAC;AAED,KAAK,UAAU,WAAW,CACtB,IAAiB,EACjB,OAAe,EACf,GAAmB;IAEnB,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7B,OAAO,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC;IACvC,CAAC;IACD,IAAI,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC;YACjB,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,8BAA8B,CAAC,GAAG,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAChF,UAAU,EAAE,OAAO;SACtB,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,CAAC;QACjE,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAClC,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAE5B,MAAM,MAAM,GAAG,WAAW,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;IAE/B,iFAAiF;IACjF,wFAAwF;IACxF,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC/B,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAEjC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC;QAC9B,MAAM,YAAY,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC;QAEjE,IAAI,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC;gBACjB,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,sBAAsB,YAAY,QAAQ,QAAQ,CAAC,OAAO,CAAC,GAAG;gBACvE,UAAU,EAAE,OAAO;gBACnB,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI;aACvC,CAAC,CAAC;YACH,SAAS;QACb,CAAC;QACD,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAE/B,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,OAAO,CAAC;QAC5D,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,OAAO,CAAC;QAE9D,IAAI,SAAkC,CAAC;QACvC,IAAI,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YAC9C,SAAS,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;QACpE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC;gBACjB,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,2BAA2B,YAAY,MAAO,GAAa,CAAC,OAAO,EAAE;gBAC9E,UAAU,EAAE,OAAO;gBACnB,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI;aACvC,CAAC,CAAC;YACH,SAAS;QACb,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,WAAW,CACpE,SAAS,EACT,YAAY,EACZ,GAAG,CACN,CAAC;QAEF,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;QAChF,gBAAgB,CACZ,OAAO,EACP,YAAY,EACZ,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,GAAG,CAAC,WAAW,CAClB,CAAC;QAEF,IAAI,WAAW,KAAK,SAAS,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YACrD,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC;gBACjB,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,mBAAmB,YAAY,mCAAmC;gBAC3E,UAAU,EAAE,OAAO;gBACnB,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI;aACvC,CAAC,CAAC;QACP,CAAC;QAED,kFAAkF;QAClF,kFAAkF;QAClF,uDAAuD;QACvD,IAAI,WAAW,KAAK,QAAQ,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;YACpD,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACpD,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YACxD,IAAI,WAAW,KAAK,UAAU,EAAE,CAAC;gBAC7B,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC;oBACjB,QAAQ,EAAE,OAAO;oBACjB,OAAO,EAAE,mBAAmB,CAAC,YAAY,EAAE,WAAW,EAAE,UAAU,CAAC;oBACnE,UAAU,EAAE,OAAO;oBACnB,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI;iBACvC,CAAC,CAAC;YACP,CAAC;QACL,CAAC;IACL,CAAC;IAED,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;IACpB,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IACnC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACnC,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAS,cAAc,CACnB,GAAuB,EACvB,GAAyB;IAEzB,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;IACnD,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,IAAI,GAAG,CAAC,KAAK,KAAK,OAAO,IAAI,GAAG,CAAC,KAAK,KAAK,QAAQ,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7E,OAAO,GAAG,CAAC,KAAK,CAAC;IACrB,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,KAAK,UAAU,WAAW,CACtB,QAAyB,EACzB,IAAY,EACZ,OAAe;IAEf,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,sBAAsB,CAAC;IACpE,MAAM,GAAG,GAAG,UAAU,CAAC,UAAU,CAAc,IAAI,EAAE,GAAG,CAAC,CAAC;IAC1D,MAAM,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;IACpF,OAAO,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC;AACjC,CAAC;AAED,SAAS,eAAe,CACpB,MAAsB,EACtB,KAAqB,EACrB,IAAiB,EACjB,SAAiB,EACjB,WAAgC;IAEhC,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO;IAEpD,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,QAAgB,EAAE,EAAE,CAC5C,WAAW,CAAC,IAAI,CAAC;QACb,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,GAAG,QAAQ,KAAK,IAAI,UAAU,QAAQ,CAAC,SAAS,CAAC,0CAA0C;QACpG,UAAU,EAAE,SAAS;KACxB,CAAC,CAAC;IAEP,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACrE,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IAC3E,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IACxE,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC/B,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IACrC,CAAC;AACL,CAAC;AAED,SAAS,gBAAgB,CACrB,MAAuB,EACvB,KAAsB,EACtB,WAA2B,EAC3B,IAAiB,EACjB,SAAiB,EACjB,YAAoB,EACpB,WAAgC;IAEhC,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO;IAE9B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACrB,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAChB,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC;gBACxB,UAAU,EAAE,YAAY;gBACxB,MAAM,EAAE,WAAW;gBACnB,OAAO,EAAE,KAAK;aACjB,CAAC,CAAC;QACP,CAAC;QACD,OAAO;IACX,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,QAAgB,EAAE,EAAE,CAC5C,WAAW,CAAC,IAAI,CAAC;QACb,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,GAAG,QAAQ,KAAK,IAAI,UAAU,QAAQ,CAAC,SAAS,CAAC,0CAA0C;QACpG,UAAU,EAAE,SAAS;KACxB,CAAC,CAAC;IAEP,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IACxE,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAClE,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IACxE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACrE,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAClE,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC1E,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;IAC9E,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;IACjF,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;IAC9E,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACnC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IACnC,CAAC;AACL,CAAC;AAED,SAAS,QAAQ,CACb,MAAsB,EACtB,MAAsB,EACtB,UAAkC;IAElC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;QACjC,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACnB,UAAU,CAAC,IAAI,CAAC,CAAC;YACjB,SAAS;QACb,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5B,CAAC;AACL,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAsB,EAAE,IAAiB;IAC/D,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QACrC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CAAC,MAAsB,EAAE,KAAkB;IAC9D,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,KAAK;YAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;IAC5C,CAAC;SAAM,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,QAAQ;YAAE,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;IAClD,CAAC;SAAM,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC;IACL,CAAC;SAAM,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAChD,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC1C,CAAC;IACL,CAAC;SAAM,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YACzC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACjD,CAAC;IACL,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAwB,EAAE,IAAiB;IAClE,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACvC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;IACvC,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QACtC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;AACL,CAAC;AAED,SAAS,eAAe,CAAC,OAAwB,EAAE,KAAmB;IAClE,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACnD,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7C,CAAC;IACL,CAAC;SAAM,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3C,CAAC;IACL,CAAC;SAAM,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/C,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC;IACL,CAAC;SAAM,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3C,CAAC;IACL,CAAC;SAAM,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAChD,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC1C,CAAC;IACL,CAAC;SAAM,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/C,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC;IACL,CAAC;SAAM,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAClD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC5C,CAAC;IACL,CAAC;SAAM,IAAI,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACpD,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC;IACL,CAAC;SAAM,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACnD,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7C,CAAC;IACL,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"include-resolver.js","sourceRoot":"","sources":["../../src/language/include-resolver.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nowline/core",
3
- "version": "0.5.1",
3
+ "version": "0.6.0",
4
4
  "description": "Nowline DSL parser, AST, and validation",
5
5
  "license": "Apache-2.0",
6
6
  "engines": {
@@ -373,15 +373,15 @@ function applyRoadmapMode(
373
373
  sourcePath: childPath,
374
374
  });
375
375
 
376
- mergeMap(target.persons, child.persons, (name) => warn(name, 'Person'));
377
- mergeMap(target.teams, child.teams, (name) => warn(name, 'Team'));
378
- mergeMap(target.anchors, child.anchors, (name) => warn(name, 'Anchor'));
379
- mergeMap(target.labels, child.labels, (name) => warn(name, 'Label'));
380
- mergeMap(target.sizes, child.sizes, (name) => warn(name, 'Size'));
381
- mergeMap(target.statuses, child.statuses, (name) => warn(name, 'Status'));
382
- mergeMap(target.swimlanes, child.swimlanes, (name) => warn(name, 'Swimlane'));
383
- mergeMap(target.milestones, child.milestones, (name) => warn(name, 'Milestone'));
384
- mergeMap(target.footnotes, child.footnotes, (name) => warn(name, 'Footnote'));
376
+ mergeContentMap(target.persons, child.persons, (name) => warn(name, 'Person'));
377
+ mergeContentMap(target.teams, child.teams, (name) => warn(name, 'Team'));
378
+ mergeContentMap(target.anchors, child.anchors, (name) => warn(name, 'Anchor'));
379
+ mergeContentMap(target.labels, child.labels, (name) => warn(name, 'Label'));
380
+ mergeContentMap(target.sizes, child.sizes, (name) => warn(name, 'Size'));
381
+ mergeContentMap(target.statuses, child.statuses, (name) => warn(name, 'Status'));
382
+ mergeContentMap(target.swimlanes, child.swimlanes, (name) => warn(name, 'Swimlane'));
383
+ mergeContentMap(target.milestones, child.milestones, (name) => warn(name, 'Milestone'));
384
+ mergeContentMap(target.footnotes, child.footnotes, (name) => warn(name, 'Footnote'));
385
385
  if (child.roadmap && !target.roadmap) {
386
386
  target.roadmap = child.roadmap;
387
387
  }
@@ -401,6 +401,33 @@ function mergeMap<V>(
401
401
  }
402
402
  }
403
403
 
404
+ /**
405
+ * Merge a child content map into the parent. Explicit-id entries keep the
406
+ * parent-wins-on-collision behavior (and warn). Title-only (auto-slugged)
407
+ * entries are internal and non-referenceable, so they never shadow and never
408
+ * warn — each is re-keyed around the parent's entries and kept.
409
+ */
410
+ function mergeContentMap<V extends { name?: string; title?: string }>(
411
+ target: Map<string, V>,
412
+ source: Map<string, V>,
413
+ onConflict: (name: string) => void,
414
+ ): void {
415
+ for (const [name, value] of source) {
416
+ if (!value.name && value.title) {
417
+ target.set(
418
+ uniqueMapKey(target as Map<string, unknown>, slugifyTitle(value.title)),
419
+ value,
420
+ );
421
+ continue;
422
+ }
423
+ if (target.has(name)) {
424
+ onConflict(name);
425
+ continue;
426
+ }
427
+ target.set(name, value);
428
+ }
429
+ }
430
+
404
431
  function mergeLocalConfig(config: ResolvedConfig, file: NowlineFile): void {
405
432
  for (const entry of file.configEntries) {
406
433
  addConfigEntry(config, entry);
@@ -427,51 +454,128 @@ function addConfigEntry(config: ResolvedConfig, entry: ConfigEntry): void {
427
454
  }
428
455
  }
429
456
 
457
+ /** Explicit ids declared in a file, grouped by the content map they target. */
458
+ interface ReservedRoadmapIds {
459
+ swimlanes: Set<string>;
460
+ persons: Set<string>;
461
+ teams: Set<string>;
462
+ anchors: Set<string>;
463
+ labels: Set<string>;
464
+ sizes: Set<string>;
465
+ statuses: Set<string>;
466
+ milestones: Set<string>;
467
+ footnotes: Set<string>;
468
+ }
469
+
470
+ function collectExplicitRoadmapIds(entries: RoadmapEntry[]): ReservedRoadmapIds {
471
+ const reserved: ReservedRoadmapIds = {
472
+ swimlanes: new Set(),
473
+ persons: new Set(),
474
+ teams: new Set(),
475
+ anchors: new Set(),
476
+ labels: new Set(),
477
+ sizes: new Set(),
478
+ statuses: new Set(),
479
+ milestones: new Set(),
480
+ footnotes: new Set(),
481
+ };
482
+ for (const entry of entries) {
483
+ const name = (entry as { name?: string }).name;
484
+ if (!name) continue;
485
+ if (isSwimlaneDeclaration(entry)) reserved.swimlanes.add(name);
486
+ else if (isPersonDeclaration(entry)) reserved.persons.add(name);
487
+ else if (isTeamDeclaration(entry)) reserved.teams.add(name);
488
+ else if (isAnchorDeclaration(entry)) reserved.anchors.add(name);
489
+ else if (isLabelDeclaration(entry)) reserved.labels.add(name);
490
+ else if (isSizeDeclaration(entry)) reserved.sizes.add(name);
491
+ else if (isStatusDeclaration(entry)) reserved.statuses.add(name);
492
+ else if (isMilestoneDeclaration(entry)) reserved.milestones.add(name);
493
+ else if (isFootnoteDeclaration(entry)) reserved.footnotes.add(name);
494
+ }
495
+ return reserved;
496
+ }
497
+
430
498
  function mergeLocalContent(content: ResolvedContent, file: NowlineFile): void {
431
499
  if (file.roadmapDecl && !content.roadmap) {
432
500
  content.roadmap = file.roadmapDecl;
433
501
  }
502
+ // Pre-scan explicit ids so a title-only slug can never displace one an
503
+ // author spelled out, even when the title-only entry comes first in source.
504
+ const reserved = collectExplicitRoadmapIds(file.roadmapEntries);
434
505
  for (const entry of file.roadmapEntries) {
435
- addRoadmapEntry(content, entry);
506
+ addRoadmapEntry(content, entry, reserved);
436
507
  }
437
508
  }
438
509
 
439
- function addRoadmapEntry(content: ResolvedContent, entry: RoadmapEntry): void {
440
- if (isSwimlaneDeclaration(entry)) {
441
- if (entry.name && !content.swimlanes.has(entry.name)) {
442
- content.swimlanes.set(entry.name, entry);
510
+ /** Kebab-case slug for title-only entities (specs/dsl.md § Identifiers). */
511
+ function slugifyTitle(title: string): string {
512
+ return (
513
+ title
514
+ .toLowerCase()
515
+ .replace(/[^a-z0-9]+/g, '-')
516
+ .replace(/^-+|-+$/g, '') || 'entity'
517
+ );
518
+ }
519
+
520
+ /**
521
+ * Pick a map key that does not collide with an existing entry, nor with any
522
+ * key in `reserved` (explicit ids that will be inserted later in the same
523
+ * pass). Reserving keeps a title-only slug from claiming a key an author
524
+ * spelled out explicitly, regardless of source order.
525
+ */
526
+ function uniqueMapKey(map: Map<string, unknown>, base: string, reserved?: Set<string>): string {
527
+ const taken = (key: string): boolean => map.has(key) || (reserved?.has(key) ?? false);
528
+ if (!taken(base)) return base;
529
+ let n = 2;
530
+ while (taken(`${base}-${n}`)) n++;
531
+ return `${base}-${n}`;
532
+ }
533
+
534
+ /**
535
+ * Insert a roadmap entity into a resolved-content map. Explicit ids always
536
+ * win their key (and keep today's parent-wins-on-collision behavior); title-only
537
+ * entries land under a slug derived from the title (internal key — not written
538
+ * to AST) that avoids both occupied and `reserved` explicit-id keys.
539
+ */
540
+ function addByKey<V extends { name?: string; title?: string }>(
541
+ map: Map<string, V>,
542
+ entry: V,
543
+ reserved?: Set<string>,
544
+ ): void {
545
+ if (entry.name) {
546
+ if (!map.has(entry.name)) {
547
+ map.set(entry.name, entry);
443
548
  }
549
+ } else if (entry.title) {
550
+ map.set(
551
+ uniqueMapKey(map as Map<string, unknown>, slugifyTitle(entry.title), reserved),
552
+ entry,
553
+ );
554
+ }
555
+ }
556
+
557
+ function addRoadmapEntry(
558
+ content: ResolvedContent,
559
+ entry: RoadmapEntry,
560
+ reserved: ReservedRoadmapIds,
561
+ ): void {
562
+ if (isSwimlaneDeclaration(entry)) {
563
+ addByKey(content.swimlanes, entry, reserved.swimlanes);
444
564
  } else if (isPersonDeclaration(entry)) {
445
- if (entry.name && !content.persons.has(entry.name)) {
446
- content.persons.set(entry.name, entry);
447
- }
565
+ addByKey(content.persons, entry, reserved.persons);
448
566
  } else if (isTeamDeclaration(entry)) {
449
- if (entry.name && !content.teams.has(entry.name)) {
450
- content.teams.set(entry.name, entry);
451
- }
567
+ addByKey(content.teams, entry, reserved.teams);
452
568
  } else if (isAnchorDeclaration(entry)) {
453
- if (entry.name && !content.anchors.has(entry.name)) {
454
- content.anchors.set(entry.name, entry);
455
- }
569
+ addByKey(content.anchors, entry, reserved.anchors);
456
570
  } else if (isLabelDeclaration(entry)) {
457
- if (entry.name && !content.labels.has(entry.name)) {
458
- content.labels.set(entry.name, entry);
459
- }
571
+ addByKey(content.labels, entry, reserved.labels);
460
572
  } else if (isSizeDeclaration(entry)) {
461
- if (entry.name && !content.sizes.has(entry.name)) {
462
- content.sizes.set(entry.name, entry);
463
- }
573
+ addByKey(content.sizes, entry, reserved.sizes);
464
574
  } else if (isStatusDeclaration(entry)) {
465
- if (entry.name && !content.statuses.has(entry.name)) {
466
- content.statuses.set(entry.name, entry);
467
- }
575
+ addByKey(content.statuses, entry, reserved.statuses);
468
576
  } else if (isMilestoneDeclaration(entry)) {
469
- if (entry.name && !content.milestones.has(entry.name)) {
470
- content.milestones.set(entry.name, entry);
471
- }
577
+ addByKey(content.milestones, entry, reserved.milestones);
472
578
  } else if (isFootnoteDeclaration(entry)) {
473
- if (entry.name && !content.footnotes.has(entry.name)) {
474
- content.footnotes.set(entry.name, entry);
475
- }
579
+ addByKey(content.footnotes, entry, reserved.footnotes);
476
580
  }
477
581
  }