@growth-labs/cms 0.5.27 → 0.5.30

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.
Files changed (130) hide show
  1. package/README.md +20 -0
  2. package/dist/engine/index.d.ts +5 -0
  3. package/dist/engine/index.d.ts.map +1 -1
  4. package/dist/engine/index.js +5 -0
  5. package/dist/engine/index.js.map +1 -1
  6. package/dist/engine/publication-continuity.d.ts +77 -0
  7. package/dist/engine/publication-continuity.d.ts.map +1 -0
  8. package/dist/engine/publication-continuity.js +94 -0
  9. package/dist/engine/publication-continuity.js.map +1 -0
  10. package/dist/engine/publication-receipt/canonical-json.d.ts +34 -0
  11. package/dist/engine/publication-receipt/canonical-json.d.ts.map +1 -0
  12. package/dist/engine/publication-receipt/canonical-json.js +100 -0
  13. package/dist/engine/publication-receipt/canonical-json.js.map +1 -0
  14. package/dist/engine/publication-receipt/receipt.d.ts +316 -0
  15. package/dist/engine/publication-receipt/receipt.d.ts.map +1 -0
  16. package/dist/engine/publication-receipt/receipt.js +131 -0
  17. package/dist/engine/publication-receipt/receipt.js.map +1 -0
  18. package/dist/engine/publication-receipt/signature.d.ts +36 -0
  19. package/dist/engine/publication-receipt/signature.d.ts.map +1 -0
  20. package/dist/engine/publication-receipt/signature.js +79 -0
  21. package/dist/engine/publication-receipt/signature.js.map +1 -0
  22. package/dist/engine/publication.d.ts.map +1 -1
  23. package/dist/engine/publication.js +2 -0
  24. package/dist/engine/publication.js.map +1 -1
  25. package/dist/engine/publisher.d.ts.map +1 -1
  26. package/dist/engine/publisher.js +2 -0
  27. package/dist/engine/publisher.js.map +1 -1
  28. package/dist/engine/slug.d.ts.map +1 -1
  29. package/dist/engine/slug.js +11 -1
  30. package/dist/engine/slug.js.map +1 -1
  31. package/dist/engine/source-sections.d.ts +20 -0
  32. package/dist/engine/source-sections.d.ts.map +1 -0
  33. package/dist/engine/source-sections.js +130 -0
  34. package/dist/engine/source-sections.js.map +1 -0
  35. package/dist/engine/validator/checks/source-section-diagnostics.d.ts +7 -0
  36. package/dist/engine/validator/checks/source-section-diagnostics.d.ts.map +1 -0
  37. package/dist/engine/validator/checks/source-section-diagnostics.js +120 -0
  38. package/dist/engine/validator/checks/source-section-diagnostics.js.map +1 -0
  39. package/dist/engine/validator/index.d.ts +10 -0
  40. package/dist/engine/validator/index.d.ts.map +1 -1
  41. package/dist/engine/validator/index.js +4 -0
  42. package/dist/engine/validator/index.js.map +1 -1
  43. package/dist/engine/validator/types.d.ts +1 -1
  44. package/dist/engine/validator/types.d.ts.map +1 -1
  45. package/dist/engine/validator/types.js +10 -0
  46. package/dist/engine/validator/types.js.map +1 -1
  47. package/dist/integration/options.d.ts +196 -0
  48. package/dist/integration/options.d.ts.map +1 -1
  49. package/dist/integration/options.js +62 -0
  50. package/dist/integration/options.js.map +1 -1
  51. package/dist/providers/types.d.ts +1 -0
  52. package/dist/providers/types.d.ts.map +1 -1
  53. package/dist/routes/content.d.ts.map +1 -1
  54. package/dist/routes/content.js +52 -2
  55. package/dist/routes/content.js.map +1 -1
  56. package/dist/routes/surveys.d.ts.map +1 -1
  57. package/dist/routes/surveys.js +13 -1
  58. package/dist/routes/surveys.js.map +1 -1
  59. package/dist/schema/insights-ingest.d.ts +28 -28
  60. package/dist/surveys/access.d.ts +2 -0
  61. package/dist/surveys/access.d.ts.map +1 -1
  62. package/dist/surveys/access.js +7 -0
  63. package/dist/surveys/access.js.map +1 -1
  64. package/dist/surveys/errors.d.ts +8 -0
  65. package/dist/surveys/errors.d.ts.map +1 -1
  66. package/dist/surveys/errors.js +12 -0
  67. package/dist/surveys/errors.js.map +1 -1
  68. package/dist/surveys/schema.d.ts +75 -0
  69. package/dist/surveys/schema.d.ts.map +1 -1
  70. package/dist/surveys/schema.js +45 -0
  71. package/dist/surveys/schema.js.map +1 -1
  72. package/dist/ui/client/mount.d.ts.map +1 -1
  73. package/dist/ui/client/mount.js +1 -0
  74. package/dist/ui/client/mount.js.map +1 -1
  75. package/dist/ui/editor/ContentForm.d.ts +3 -1
  76. package/dist/ui/editor/ContentForm.d.ts.map +1 -1
  77. package/dist/ui/editor/ContentForm.js +87 -9
  78. package/dist/ui/editor/ContentForm.js.map +1 -1
  79. package/dist/ui/editor/body-warnings.d.ts +27 -0
  80. package/dist/ui/editor/body-warnings.d.ts.map +1 -0
  81. package/dist/ui/editor/body-warnings.js +58 -0
  82. package/dist/ui/editor/body-warnings.js.map +1 -0
  83. package/dist/ui/editor/content-payload.d.ts +12 -0
  84. package/dist/ui/editor/content-payload.d.ts.map +1 -1
  85. package/dist/ui/editor/content-payload.js +24 -0
  86. package/dist/ui/editor/content-payload.js.map +1 -1
  87. package/dist/ui/screens/ContentRoute.d.ts +3 -1
  88. package/dist/ui/screens/ContentRoute.d.ts.map +1 -1
  89. package/dist/ui/screens/ContentRoute.js +2 -2
  90. package/dist/ui/screens/ContentRoute.js.map +1 -1
  91. package/dist/ui/screens/EditorScreen.d.ts +3 -1
  92. package/dist/ui/screens/EditorScreen.d.ts.map +1 -1
  93. package/dist/ui/screens/EditorScreen.js +2 -2
  94. package/dist/ui/screens/EditorScreen.js.map +1 -1
  95. package/dist/ui/screens/SurveyResponsesScreen.d.ts +7 -1
  96. package/dist/ui/screens/SurveyResponsesScreen.d.ts.map +1 -1
  97. package/dist/ui/screens/SurveyResponsesScreen.js +141 -32
  98. package/dist/ui/screens/SurveyResponsesScreen.js.map +1 -1
  99. package/dist/ui/screens/registry.d.ts +3 -1
  100. package/dist/ui/screens/registry.d.ts.map +1 -1
  101. package/dist/ui/screens/registry.js +2 -2
  102. package/dist/ui/screens/registry.js.map +1 -1
  103. package/package.json +1 -1
  104. package/src/engine/index.ts +33 -0
  105. package/src/engine/publication-continuity.ts +140 -0
  106. package/src/engine/publication-receipt/canonical-json.ts +123 -0
  107. package/src/engine/publication-receipt/receipt.ts +160 -0
  108. package/src/engine/publication-receipt/signature.ts +112 -0
  109. package/src/engine/publication.ts +2 -0
  110. package/src/engine/publisher.ts +2 -0
  111. package/src/engine/slug.ts +12 -1
  112. package/src/engine/source-sections.ts +153 -0
  113. package/src/engine/validator/checks/source-section-diagnostics.ts +187 -0
  114. package/src/engine/validator/index.ts +12 -0
  115. package/src/engine/validator/types.ts +19 -0
  116. package/src/integration/options.ts +69 -0
  117. package/src/providers/types.ts +1 -1
  118. package/src/routes/content.ts +60 -2
  119. package/src/routes/surveys.ts +12 -1
  120. package/src/surveys/access.ts +9 -0
  121. package/src/surveys/errors.ts +12 -0
  122. package/src/surveys/schema.ts +47 -0
  123. package/src/ui/client/mount.tsx +1 -0
  124. package/src/ui/editor/ContentForm.tsx +167 -5
  125. package/src/ui/editor/body-warnings.ts +78 -0
  126. package/src/ui/editor/content-payload.ts +39 -0
  127. package/src/ui/screens/ContentRoute.tsx +4 -0
  128. package/src/ui/screens/EditorScreen.tsx +4 -0
  129. package/src/ui/screens/SurveyResponsesScreen.tsx +369 -121
  130. package/src/ui/screens/registry.tsx +4 -0
@@ -0,0 +1,130 @@
1
+ // Canonical normalization for article "Sources" / "References" sections
2
+ // (packages#329).
3
+ //
4
+ // Editors paste these sections out of Word and Google Docs, which produces
5
+ // Markdown that renders wrongly rather than not at all: manual `●` bullets
6
+ // become separate paragraphs, a bold line used as a heading becomes an empty
7
+ // `h2`, and `[**title**](url)` keeps its `**` inside the anchor text because
8
+ // renderers protect generated links before evaluating inline emphasis.
9
+ //
10
+ // This lives in the package, not in a site, so the CMS save path, preview
11
+ // path, import path and every site integration share one behaviour.
12
+ const NBSP = ' ';
13
+ const SECTION_WORDS = ['sources', 'references'];
14
+ /** `## Sources`, `### References:` — returns its level and canonical word. */
15
+ function matchHeadingBoundary(line) {
16
+ const match = /^(#{1,6})\s+(.*)$/.exec(line);
17
+ if (!match)
18
+ return null;
19
+ const level = match[1]?.length ?? 0;
20
+ const word = canonicalWord(stripTrailingColon(match[2] ?? ''));
21
+ return word ? { level, word } : null;
22
+ }
23
+ /** A standalone bold line used as a heading: `**Sources:**`, `__References__`. */
24
+ function matchBoldBoundary(line) {
25
+ const match = /^\s*(\*\*|__)(.+?)\1\s*$/.exec(line);
26
+ if (!match)
27
+ return null;
28
+ const word = canonicalWord(stripTrailingColon(match[2] ?? ''));
29
+ return word ? { word } : null;
30
+ }
31
+ function stripTrailingColon(value) {
32
+ return value.replace(/\s*:\s*$/, '');
33
+ }
34
+ /** Returns the canonical capitalisation, or null when this is not a boundary. */
35
+ function canonicalWord(rawText) {
36
+ const visible = rawText.replaceAll(NBSP, ' ').replace(/[*_]/g, '').trim().toLowerCase();
37
+ const found = SECTION_WORDS.find((candidate) => candidate === visible);
38
+ return found ? `${found[0]?.toUpperCase()}${found.slice(1)}` : null;
39
+ }
40
+ /** A line whose visible content is empty once emphasis and spacing are removed. */
41
+ function isFormattingOnly(line) {
42
+ if (line.trim() === '')
43
+ return false; // a real blank line is structural
44
+ return (line
45
+ .replaceAll(NBSP, ' ')
46
+ .replace(/[*_~`]/g, '')
47
+ .trim() === '');
48
+ }
49
+ function headingLevel(line) {
50
+ const match = /^(#{1,6})\s+\S/.exec(line);
51
+ return match ? (match[1]?.length ?? null) : null;
52
+ }
53
+ /**
54
+ * Unwrap emphasis that covers an ENTIRE link label: `[**t**](u)` -> `[t](u)`.
55
+ *
56
+ * Partial emphasis (`[a **b** c](u)`) is intentional and preserved, and an
57
+ * unbalanced marker (`[**a](u)`) is ambiguous — repairing it would be guessing
58
+ * at intent. The URL is never touched.
59
+ */
60
+ function unwrapWholeLabelEmphasis(line) {
61
+ return line.replace(/\[([^\]]*)\]\(/g, (whole, label) => {
62
+ const match = /^(\*\*|__|\*|_)([\s\S]+)\1$/.exec(label.trim());
63
+ if (!match)
64
+ return whole;
65
+ const inner = match[2] ?? '';
66
+ // Only unwrap when the delimiter genuinely wraps the whole label rather
67
+ // than being two adjacent runs, e.g. `**a** and **b**`.
68
+ if (inner.includes(match[1]))
69
+ return whole;
70
+ return `[${inner}](`;
71
+ });
72
+ }
73
+ function normalizeSectionLine(line) {
74
+ let next = line;
75
+ // Manual Unicode bullets become real list markers.
76
+ next = next.replace(/^(\s*)[●•▪]\s*/u, '$1- ');
77
+ // Non-breaking-space indentation after a list marker collapses to one space.
78
+ next = next.replace(new RegExp(`^(\\s*[-*+])[ ${NBSP}]+`, 'u'), (_m, marker) => `${marker} `);
79
+ next = unwrapWholeLabelEmphasis(next);
80
+ return next;
81
+ }
82
+ /**
83
+ * Rewrite `Sources` / `References` sections to the canonical shape.
84
+ *
85
+ * Only lines inside a bounded section are touched. A section starts at an ATX
86
+ * heading or a standalone bold line whose visible text is `Sources` or
87
+ * `References` (with an optional trailing colon), and ends at the next heading
88
+ * of the same or higher level, or at end of document.
89
+ *
90
+ * Deliberately does NOT rewrite URLs, invent titles for bare URLs, repair
91
+ * unbalanced emphasis, or alter anything outside a section — each of those
92
+ * requires guessing at editorial intent.
93
+ */
94
+ export function normalizeSourceSections(markdown) {
95
+ const usesCrlf = markdown.includes('\r\n');
96
+ const lines = markdown.replace(/\r\n/g, '\n').split('\n');
97
+ const out = [];
98
+ let sectionLevel = null;
99
+ for (const line of lines) {
100
+ if (sectionLevel !== null) {
101
+ const level = headingLevel(line);
102
+ if (level !== null && level <= sectionLevel) {
103
+ sectionLevel = null; // section closed; fall through to boundary checks
104
+ }
105
+ else {
106
+ if (isFormattingOnly(line))
107
+ continue;
108
+ out.push(normalizeSectionLine(line));
109
+ continue;
110
+ }
111
+ }
112
+ const heading = matchHeadingBoundary(line);
113
+ if (heading) {
114
+ sectionLevel = heading.level;
115
+ out.push(`${'#'.repeat(heading.level)} ${heading.word}`);
116
+ continue;
117
+ }
118
+ const bold = matchBoldBoundary(line);
119
+ if (bold) {
120
+ sectionLevel = 2;
121
+ out.push(`## ${bold.word}`);
122
+ continue;
123
+ }
124
+ out.push(line);
125
+ }
126
+ const joined = out.join('\n');
127
+ const result = usesCrlf ? joined.replace(/\n/g, '\r\n') : joined;
128
+ return { markdown: result, changed: result !== markdown };
129
+ }
130
+ //# sourceMappingURL=source-sections.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-sections.js","sourceRoot":"","sources":["../../src/engine/source-sections.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,kBAAkB;AAClB,EAAE;AACF,2EAA2E;AAC3E,2EAA2E;AAC3E,6EAA6E;AAC7E,6EAA6E;AAC7E,uEAAuE;AACvE,EAAE;AACF,0EAA0E;AAC1E,oEAAoE;AAEpE,MAAM,IAAI,GAAG,GAAG,CAAA;AAChB,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,YAAY,CAAU,CAAA;AASxD,8EAA8E;AAC9E,SAAS,oBAAoB,CAAC,IAAY;IACzC,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC5C,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAA;IACvB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAA;IACnC,MAAM,IAAI,GAAG,aAAa,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IAC9D,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;AACrC,CAAC;AAED,kFAAkF;AAClF,SAAS,iBAAiB,CAAC,IAAY;IACtC,MAAM,KAAK,GAAG,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACnD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAA;IACvB,MAAM,IAAI,GAAG,aAAa,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IAC9D,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;AAC9B,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa;IACxC,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;AACrC,CAAC;AAED,iFAAiF;AACjF,SAAS,aAAa,CAAC,OAAe;IACrC,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IACvF,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,KAAK,OAAO,CAAC,CAAA;IACtE,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;AACpE,CAAC;AAED,mFAAmF;AACnF,SAAS,gBAAgB,CAAC,IAAY;IACrC,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,KAAK,CAAA,CAAC,kCAAkC;IACvE,OAAO,CACN,IAAI;SACF,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC;SACrB,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;SACtB,IAAI,EAAE,KAAK,EAAE,CACf,CAAA;AACF,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IACjC,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AACjD,CAAC;AAED;;;;;;GAMG;AACH,SAAS,wBAAwB,CAAC,IAAY;IAC7C,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE,KAAa,EAAE,EAAE;QAC/D,MAAM,KAAK,GAAG,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;QAC9D,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAA;QACxB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QAC5B,wEAAwE;QACxE,wDAAwD;QACxD,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAW,CAAC;YAAE,OAAO,KAAK,CAAA;QACpD,OAAO,IAAI,KAAK,IAAI,CAAA;IACrB,CAAC,CAAC,CAAA;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY;IACzC,IAAI,IAAI,GAAG,IAAI,CAAA;IAEf,mDAAmD;IACnD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAA;IAE9C,6EAA6E;IAC7E,IAAI,GAAG,IAAI,CAAC,OAAO,CAClB,IAAI,MAAM,CAAC,iBAAiB,IAAI,IAAI,EAAE,GAAG,CAAC,EAC1C,CAAC,EAAE,EAAE,MAAc,EAAE,EAAE,CAAC,GAAG,MAAM,GAAG,CACpC,CAAA;IAED,IAAI,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAA;IACrC,OAAO,IAAI,CAAA;AACZ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAAgB;IACvD,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACzD,MAAM,GAAG,GAAa,EAAE,CAAA;IAExB,IAAI,YAAY,GAAkB,IAAI,CAAA;IAEtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;YAChC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI,YAAY,EAAE,CAAC;gBAC7C,YAAY,GAAG,IAAI,CAAA,CAAC,kDAAkD;YACvE,CAAC;iBAAM,CAAC;gBACP,IAAI,gBAAgB,CAAC,IAAI,CAAC;oBAAE,SAAQ;gBACpC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAA;gBACpC,SAAQ;YACT,CAAC;QACF,CAAC;QAED,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAA;QAC1C,IAAI,OAAO,EAAE,CAAC;YACb,YAAY,GAAG,OAAO,CAAC,KAAK,CAAA;YAC5B,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;YACxD,SAAQ;QACT,CAAC;QAED,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAA;QACpC,IAAI,IAAI,EAAE,CAAC;YACV,YAAY,GAAG,CAAC,CAAA;YAChB,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;YAC3B,SAAQ;QACT,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACf,CAAC;IAED,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC7B,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;IAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,QAAQ,EAAE,CAAA;AAC1D,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { ArticleBodyInput, ValidationError } from '../types.js';
2
+ export interface SourceSectionOptions {
3
+ /** Escalate these diagnostics from warn to block. Publish sets this. */
4
+ blockSourceSectionDefects?: boolean;
5
+ }
6
+ export declare function check(input: ArticleBodyInput, options?: SourceSectionOptions): ValidationError[];
7
+ //# sourceMappingURL=source-section-diagnostics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-section-diagnostics.d.ts","sourceRoot":"","sources":["../../../../src/engine/validator/checks/source-section-diagnostics.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACX,gBAAgB,EAChB,eAAe,EAGf,MAAM,aAAa,CAAA;AAGpB,MAAM,WAAW,oBAAoB;IACpC,wEAAwE;IACxE,yBAAyB,CAAC,EAAE,OAAO,CAAA;CACnC;AAsED,wBAAgB,KAAK,CACpB,KAAK,EAAE,gBAAgB,EACvB,OAAO,GAAE,oBAAyB,GAChC,eAAe,EAAE,CAyFnB"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Source-section diagnostics (#329).
3
+ *
4
+ * These run against markdown that has ALREADY been through
5
+ * `normalizeSourceSections()`. That ordering is the whole point: the
6
+ * normalizer fixes everything mechanically fixable, so anything still present
7
+ * here needs an editor's judgement rather than another rewrite — and each of
8
+ * these is a proven render breaker, which is why they block publish.
9
+ *
10
+ * Draft autosave stays allowed regardless; an editor must never lose work to a
11
+ * formatting complaint.
12
+ */
13
+ import { normalizeSourceSections } from '../../source-sections.js';
14
+ import { makeError } from '../types.js';
15
+ const NBSP = ' ';
16
+ const MANUAL_BULLET = /^\s*[●•▪]/u;
17
+ const LINK = /\[([^\]]*)\]\(([^)]*)\)/g;
18
+ /** Lines inside every Sources/References section, with document offsets. */
19
+ function collectSectionLines(source) {
20
+ const lines = source.split('\n');
21
+ const collected = [];
22
+ let offset = 0;
23
+ let sectionLevel = null;
24
+ for (const text of lines) {
25
+ const heading = /^(#{1,6})\s+(.*)$/.exec(text);
26
+ const level = heading ? (heading[1]?.length ?? 0) : null;
27
+ if (sectionLevel !== null && level !== null && level <= sectionLevel) {
28
+ sectionLevel = null;
29
+ }
30
+ if (sectionLevel !== null) {
31
+ collected.push({ text, start: offset });
32
+ }
33
+ else if (level !== null) {
34
+ const word = (heading?.[2] ?? '')
35
+ .replace(/[*_]/g, '')
36
+ .replace(/\s*:\s*$/, '')
37
+ .trim();
38
+ if (/^(sources|references)$/i.test(word))
39
+ sectionLevel = level;
40
+ }
41
+ offset += text.length + 1;
42
+ }
43
+ return collected;
44
+ }
45
+ function isFormattingOnly(text) {
46
+ if (text.trim() === '')
47
+ return false;
48
+ return (text
49
+ .replaceAll(NBSP, ' ')
50
+ .replace(/[*_~`#]/g, '')
51
+ .trim() === '');
52
+ }
53
+ /** Emphasis delimiters wrapping the entire label, e.g. `[**t**](u)`. */
54
+ function hasWholeLabelEmphasis(label) {
55
+ const match = /^(\*\*|__|\*|_)([\s\S]+)\1$/.exec(label.trim());
56
+ if (!match)
57
+ return false;
58
+ return !(match[2] ?? '').includes(match[1]);
59
+ }
60
+ /** An odd number of `**` or `*` runs — ambiguous, so the normalizer left it. */
61
+ function hasUnbalancedEmphasis(label) {
62
+ const strong = (label.match(/\*\*/g) ?? []).length;
63
+ if (strong % 2 !== 0)
64
+ return true;
65
+ const em = (label.replace(/\*\*/g, '').match(/\*/g) ?? []).length;
66
+ if (em % 2 !== 0)
67
+ return true;
68
+ const under = (label.match(/__/g) ?? []).length;
69
+ return under % 2 !== 0;
70
+ }
71
+ export function check(input, options = {}) {
72
+ // Warn on save, block on publish. The design keeps draft autosave working
73
+ // so an editor cannot lose work to a formatting complaint, while still
74
+ // refusing to publish a section that is a proven render breaker.
75
+ const escalate = options.blockSourceSectionDefects === true;
76
+ const report = (code, message, span) => {
77
+ const error = makeError(code, message, span);
78
+ return escalate ? { ...error, severity: 'block' } : error;
79
+ };
80
+ if (!input.body_markdown)
81
+ return [];
82
+ // Report against normalized text so a defect the normalizer would have
83
+ // fixed is never surfaced to the editor as their problem.
84
+ const source = normalizeSourceSections(input.body_markdown).markdown;
85
+ const errors = [];
86
+ const lines = collectSectionLines(source);
87
+ let linkLike = 0;
88
+ let listItems = 0;
89
+ for (const { text, start } of lines) {
90
+ const span = { start, end: start + text.length };
91
+ if (MANUAL_BULLET.test(text)) {
92
+ errors.push(report('source-section-manual-bullet', `This source line still starts with a manual bullet character. Replace it with "- " so it renders as one list, not separate paragraphs.`, span));
93
+ }
94
+ if (isFormattingOnly(text)) {
95
+ errors.push(report('source-section-formatting-only-line', `This line contains only formatting characters and renders as an empty heading. Delete it.`, span));
96
+ }
97
+ if (/^\s*[-*+]\s+/.test(text))
98
+ listItems++;
99
+ for (const link of text.matchAll(LINK)) {
100
+ const label = link[1] ?? '';
101
+ if (label.trim() !== '')
102
+ linkLike++;
103
+ if (hasWholeLabelEmphasis(label)) {
104
+ errors.push(report('source-section-wrapped-link-label', `The link title "${label.trim()}" is wrapped in emphasis markers, which stay visible inside the link. Remove the surrounding * or _ characters.`, span));
105
+ }
106
+ else if (hasUnbalancedEmphasis(label)) {
107
+ errors.push(report('source-section-unbalanced-emphasis', `The link title "${label.trim()}" has an unmatched emphasis marker. Close it or remove it — it cannot be corrected automatically without changing the title.`, span));
108
+ }
109
+ }
110
+ }
111
+ // A section that reads as a list of sources but has no list items at all
112
+ // renders as a run of paragraphs. Only claim this when there is something
113
+ // list-shaped to talk about.
114
+ if (listItems === 0 && linkLike > 1) {
115
+ const first = lines[0];
116
+ errors.push(report('source-section-unlistable', `This source section has ${linkLike} links but no list items, so it renders as separate paragraphs. Start each source line with "- ".`, first ? { start: first.start, end: first.start + first.text.length } : undefined));
117
+ }
118
+ return errors;
119
+ }
120
+ //# sourceMappingURL=source-section-diagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-section-diagnostics.js","sourceRoot":"","sources":["../../../../src/engine/validator/checks/source-section-diagnostics.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,7 @@ import * as iframeMissingDims from './checks/iframe-missing-dims-and-wrapper.js'
21
21
  import * as invisibleControl from './checks/invisible-control-chars.js';
22
22
  import * as paywallMarker from './checks/paywall-marker-leak.js';
23
23
  import * as rawBlockHtml from './checks/raw-block-html.js';
24
+ import * as sourceSectionDiagnostics from './checks/source-section-diagnostics.js';
24
25
  import * as unresolvedAnchor from './checks/unresolved-footnote-anchor.js';
25
26
  import * as wordGdocs from './checks/word-gdocs-paste-artifacts.js';
26
27
  import type { ArticleBodyInput, Severity, ValidationError, ValidationErrorCode, ValidationResult, ValidatorOptions } from './types.js';
@@ -51,9 +52,18 @@ export declare const checkBareUrlNotAutolinked: typeof bareUrl.check;
51
52
  export declare const checkEmptyAltText: typeof emptyAlt.check;
52
53
  export declare const checkIframeMissingDimsAndWrapper: typeof iframeMissingDims.check;
53
54
  export declare const checkHeadingHierarchySkip: typeof headingHierarchy.check;
55
+ export declare const checkSourceSectionDiagnostics: typeof sourceSectionDiagnostics.check;
54
56
  export declare const checkPaywallMarkerLeak: typeof paywallMarker.check;
55
57
  export interface RunOptions extends ValidatorOptions {
56
58
  requireBody: boolean;
59
+ /**
60
+ * Escalate source-section diagnostics (#329) from warn to block.
61
+ *
62
+ * Defaults to false so a draft save is never rejected for formatting — the
63
+ * PATCH route returns 422 on any block-severity error. Publish call sites
64
+ * set it to true, which is where the design wants these enforced.
65
+ */
66
+ blockSourceSectionDefects: boolean;
57
67
  }
58
68
  export declare const DEFAULT_RUN_OPTIONS: RunOptions;
59
69
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engine/validator/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engine/validator/index.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,7 @@ import * as iframeMissingDims from './checks/iframe-missing-dims-and-wrapper.js'
21
21
  import * as invisibleControl from './checks/invisible-control-chars.js';
22
22
  import * as paywallMarker from './checks/paywall-marker-leak.js';
23
23
  import * as rawBlockHtml from './checks/raw-block-html.js';
24
+ import * as sourceSectionDiagnostics from './checks/source-section-diagnostics.js';
24
25
  import * as unresolvedAnchor from './checks/unresolved-footnote-anchor.js';
25
26
  import * as wordGdocs from './checks/word-gdocs-paste-artifacts.js';
26
27
  import { DEFAULT_OPTIONS, makeError, SEVERITY } from './types.js';
@@ -254,10 +255,12 @@ export const checkBareUrlNotAutolinked = bareUrl.check;
254
255
  export const checkEmptyAltText = emptyAlt.check;
255
256
  export const checkIframeMissingDimsAndWrapper = iframeMissingDims.check;
256
257
  export const checkHeadingHierarchySkip = headingHierarchy.check;
258
+ export const checkSourceSectionDiagnostics = sourceSectionDiagnostics.check;
257
259
  export const checkPaywallMarkerLeak = paywallMarker.check;
258
260
  export const DEFAULT_RUN_OPTIONS = {
259
261
  ...DEFAULT_OPTIONS,
260
262
  requireBody: true,
263
+ blockSourceSectionDefects: false,
261
264
  };
262
265
  /**
263
266
  * Run every check in a deterministic order and aggregate the errors.
@@ -288,6 +291,7 @@ export function validateArticleBody(input, options = {}) {
288
291
  errors.push(...checkEmptyAltText(input));
289
292
  errors.push(...checkIframeMissingDimsAndWrapper(input));
290
293
  errors.push(...checkHeadingHierarchySkip(input));
294
+ errors.push(...checkSourceSectionDiagnostics(input, opts));
291
295
  errors.push(...checkPaywallMarkerLeak(input));
292
296
  // Heuristic.
293
297
  errors.push(...checkUnbalancedMarkdownEmphasis(input));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine/validator/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine/validator/index.ts"],"names":[],"mappings":"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"}
@@ -24,7 +24,7 @@ export interface ValidationError {
24
24
  severity?: Severity;
25
25
  span?: ValidationSpan;
26
26
  }
27
- export type ValidationErrorCode = 'data-uri-artifact' | 'baked-astro-error-template' | 'escaped-raw-html' | 'unbalanced-markdown-emphasis' | 'malformed-data-image-markdown' | 'single-sentence-paragraphs-pattern' | 'backslash-over-escape' | 'html-entity-in-heading' | 'empty-body' | 'broken-footnote-label' | 'unresolved-footnote-anchor' | 'word-gdocs-paste-artifacts' | 'html-comment-leak' | 'raw-block-html' | 'double-encoded-entities' | 'invisible-control-chars' | 'bare-url-not-autolinked' | 'empty-alt-text' | 'iframe-missing-dims-and-wrapper' | 'heading-hierarchy-skip' | 'paywall-marker-leak' | 'stale-body-html';
27
+ export type ValidationErrorCode = 'data-uri-artifact' | 'baked-astro-error-template' | 'escaped-raw-html' | 'unbalanced-markdown-emphasis' | 'malformed-data-image-markdown' | 'single-sentence-paragraphs-pattern' | 'backslash-over-escape' | 'html-entity-in-heading' | 'empty-body' | 'broken-footnote-label' | 'unresolved-footnote-anchor' | 'word-gdocs-paste-artifacts' | 'html-comment-leak' | 'raw-block-html' | 'double-encoded-entities' | 'invisible-control-chars' | 'bare-url-not-autolinked' | 'empty-alt-text' | 'iframe-missing-dims-and-wrapper' | 'heading-hierarchy-skip' | 'paywall-marker-leak' | 'stale-body-html' | 'source-section-manual-bullet' | 'source-section-formatting-only-line' | 'source-section-wrapped-link-label' | 'source-section-unbalanced-emphasis' | 'source-section-unlistable';
28
28
  export type ValidationResult = {
29
29
  ok: true;
30
30
  } | {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/engine/validator/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,gBAAgB;IAChC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAED,MAAM,WAAW,cAAc;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;CACX;AAED,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAA;AAEvC,MAAM,WAAW,eAAe;IAC/B,IAAI,EAAE,mBAAmB,CAAA;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,IAAI,CAAC,EAAE,cAAc,CAAA;CACrB;AAED,MAAM,MAAM,mBAAmB,GAG5B,mBAAmB,GACnB,4BAA4B,GAC5B,kBAAkB,GAClB,8BAA8B,GAC9B,+BAA+B,GAC/B,oCAAoC,GACpC,uBAAuB,GACvB,wBAAwB,GACxB,YAAY,GAEZ,uBAAuB,GACvB,4BAA4B,GAC5B,4BAA4B,GAC5B,mBAAmB,GACnB,gBAAgB,GAChB,yBAAyB,GACzB,yBAAyB,GACzB,yBAAyB,GACzB,gBAAgB,GAChB,iCAAiC,GACjC,wBAAwB,GACxB,qBAAqB,GACrB,iBAAiB,CAAA;AAEpB,MAAM,MAAM,gBAAgB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,eAAe,EAAE,CAAA;CAAE,CAAA;AAEtF;;;;GAIG;AACH,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAyBpE,CAAA;AAED,MAAM,WAAW,gBAAgB;IAChC;;;;OAIG;IACH,0BAA0B,EAAE,MAAM,CAAA;CAClC;AAED,eAAO,MAAM,eAAe,EAAE,gBAE7B,CAAA;AAED,wBAAgB,SAAS,CACxB,IAAI,EAAE,mBAAmB,EACzB,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,cAAc,GACnB,eAAe,CAIjB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/engine/validator/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,gBAAgB;IAChC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAED,MAAM,WAAW,cAAc;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;CACX;AAED,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAA;AAEvC,MAAM,WAAW,eAAe;IAC/B,IAAI,EAAE,mBAAmB,CAAA;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,IAAI,CAAC,EAAE,cAAc,CAAA;CACrB;AAED,MAAM,MAAM,mBAAmB,GAG5B,mBAAmB,GACnB,4BAA4B,GAC5B,kBAAkB,GAClB,8BAA8B,GAC9B,+BAA+B,GAC/B,oCAAoC,GACpC,uBAAuB,GACvB,wBAAwB,GACxB,YAAY,GAEZ,uBAAuB,GACvB,4BAA4B,GAC5B,4BAA4B,GAC5B,mBAAmB,GACnB,gBAAgB,GAChB,yBAAyB,GACzB,yBAAyB,GACzB,yBAAyB,GACzB,gBAAgB,GAChB,iCAAiC,GACjC,wBAAwB,GACxB,qBAAqB,GACrB,iBAAiB,GAKjB,8BAA8B,GAC9B,qCAAqC,GACrC,mCAAmC,GACnC,oCAAoC,GACpC,2BAA2B,CAAA;AAE9B,MAAM,MAAM,gBAAgB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,eAAe,EAAE,CAAA;CAAE,CAAA;AAEtF;;;;GAIG;AACH,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAmCpE,CAAA;AAED,MAAM,WAAW,gBAAgB;IAChC;;;;OAIG;IACH,0BAA0B,EAAE,MAAM,CAAA;CAClC;AAED,eAAO,MAAM,eAAe,EAAE,gBAE7B,CAAA;AAED,wBAAgB,SAAS,CACxB,IAAI,EAAE,mBAAmB,EACzB,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,cAAc,GACnB,eAAe,CAIjB"}
@@ -39,6 +39,16 @@ export const SEVERITY = {
39
39
  'heading-hierarchy-skip': 'warn',
40
40
  'paywall-marker-leak': 'block',
41
41
  'stale-body-html': 'block',
42
+ // #329. WARN by default so a draft save is never rejected — the design is
43
+ // explicit that an editor must not lose work to a formatting complaint, and
44
+ // the PATCH route returns 422 on any block-severity error. Publish call
45
+ // sites pass `blockSourceSectionDefects` to escalate these to block, which
46
+ // is where the design wants them enforced.
47
+ 'source-section-manual-bullet': 'warn',
48
+ 'source-section-formatting-only-line': 'warn',
49
+ 'source-section-wrapped-link-label': 'warn',
50
+ 'source-section-unbalanced-emphasis': 'warn',
51
+ 'source-section-unlistable': 'warn',
42
52
  };
43
53
  export const DEFAULT_OPTIONS = {
44
54
  singleSentenceParagraphRun: 10,
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/engine/validator/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAkDH;;;;GAIG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAoD;IACxE,0EAA0E;IAC1E,mBAAmB,EAAE,OAAO;IAC5B,4BAA4B,EAAE,OAAO;IACrC,kBAAkB,EAAE,OAAO;IAC3B,8BAA8B,EAAE,MAAM;IACtC,+BAA+B,EAAE,OAAO;IACxC,oCAAoC,EAAE,MAAM;IAC5C,uBAAuB,EAAE,OAAO;IAChC,wBAAwB,EAAE,OAAO;IACjC,YAAY,EAAE,OAAO;IACrB,WAAW;IACX,uBAAuB,EAAE,OAAO;IAChC,4BAA4B,EAAE,MAAM;IACpC,4BAA4B,EAAE,OAAO;IACrC,mBAAmB,EAAE,OAAO;IAC5B,gBAAgB,EAAE,MAAM;IACxB,yBAAyB,EAAE,OAAO;IAClC,yBAAyB,EAAE,OAAO;IAClC,yBAAyB,EAAE,MAAM;IACjC,gBAAgB,EAAE,MAAM;IACxB,iCAAiC,EAAE,MAAM;IACzC,wBAAwB,EAAE,MAAM;IAChC,qBAAqB,EAAE,OAAO;IAC9B,iBAAiB,EAAE,OAAO;CAC1B,CAAA;AAWD,MAAM,CAAC,MAAM,eAAe,GAAqB;IAChD,0BAA0B,EAAE,EAAE;CAC9B,CAAA;AAED,MAAM,UAAU,SAAS,CACxB,IAAyB,EACzB,OAAe,EACf,IAAqB;IAErB,OAAO,IAAI;QACV,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE;QACnD,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAA;AAC/C,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/engine/validator/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA2DH;;;;GAIG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAoD;IACxE,0EAA0E;IAC1E,mBAAmB,EAAE,OAAO;IAC5B,4BAA4B,EAAE,OAAO;IACrC,kBAAkB,EAAE,OAAO;IAC3B,8BAA8B,EAAE,MAAM;IACtC,+BAA+B,EAAE,OAAO;IACxC,oCAAoC,EAAE,MAAM;IAC5C,uBAAuB,EAAE,OAAO;IAChC,wBAAwB,EAAE,OAAO;IACjC,YAAY,EAAE,OAAO;IACrB,WAAW;IACX,uBAAuB,EAAE,OAAO;IAChC,4BAA4B,EAAE,MAAM;IACpC,4BAA4B,EAAE,OAAO;IACrC,mBAAmB,EAAE,OAAO;IAC5B,gBAAgB,EAAE,MAAM;IACxB,yBAAyB,EAAE,OAAO;IAClC,yBAAyB,EAAE,OAAO;IAClC,yBAAyB,EAAE,MAAM;IACjC,gBAAgB,EAAE,MAAM;IACxB,iCAAiC,EAAE,MAAM;IACzC,wBAAwB,EAAE,MAAM;IAChC,qBAAqB,EAAE,OAAO;IAC9B,iBAAiB,EAAE,OAAO;IAC1B,0EAA0E;IAC1E,4EAA4E;IAC5E,wEAAwE;IACxE,2EAA2E;IAC3E,2CAA2C;IAC3C,8BAA8B,EAAE,MAAM;IACtC,qCAAqC,EAAE,MAAM;IAC7C,mCAAmC,EAAE,MAAM;IAC3C,oCAAoC,EAAE,MAAM;IAC5C,2BAA2B,EAAE,MAAM;CACnC,CAAA;AAWD,MAAM,CAAC,MAAM,eAAe,GAAqB;IAChD,0BAA0B,EAAE,EAAE;CAC9B,CAAA;AAED,MAAM,UAAU,SAAS,CACxB,IAAyB,EACzB,OAAe,EACf,IAAqB;IAErB,OAAO,IAAI;QACV,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE;QACnD,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAA;AAC/C,CAAC"}