(title, description, sectionsAffected)
| 690 | } |
| 691 | |
| 692 | function markMilestone(title, description, sectionsAffected) { |
| 693 | const milestone = { |
| 694 | id: uid("milestone"), |
| 695 | title: safeString(title), |
| 696 | description: safeString(description), |
| 697 | sectionsAffected: Array.isArray(sectionsAffected) ? sectionsAffected.filter((value) => typeof value === "string") : [], |
| 698 | timestamp: nowIso(), |
| 699 | }; |
| 700 | stateCache.milestones.unshift(milestone); |
| 701 | addChange({ |
| 702 | type: "milestone", |
| 703 | summary: `${milestone.title}: ${milestone.description}`, |
| 704 | timestamp: milestone.timestamp, |
| 705 | }); |
| 706 | return milestone; |
| 707 | } |
| 708 | |
| 709 | const UNSAFE_FIELD_NAMES = new Set(["__proto__", "prototype", "constructor"]); |
| 710 | function isUnsafeFieldName(name) { |
no test coverage detected