punctilio 5.4.10 → 5.5.1
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 +5 -5
- package/dist/prettier-plugin.d.ts.map +1 -1
- package/dist/prettier-plugin.js +3 -2
- package/dist/prettier-plugin.js.map +1 -1
- package/dist/prose-view.d.ts +19 -0
- package/dist/prose-view.d.ts.map +1 -1
- package/dist/prose-view.js +76 -0
- package/dist/prose-view.js.map +1 -1
- package/dist/rehype.d.ts +14 -8
- package/dist/rehype.d.ts.map +1 -1
- package/dist/rehype.js +36 -23
- package/dist/rehype.js.map +1 -1
- package/dist/remark.d.ts.map +1 -1
- package/dist/remark.js +71 -11
- package/dist/remark.js.map +1 -1
- package/package.json +1 -1
- package/src/prettier-plugin.ts +3 -2
- package/src/prose-view.ts +87 -0
- package/src/rehype.ts +64 -36
- package/src/remark.ts +85 -12
package/README.md
CHANGED
|
@@ -155,17 +155,17 @@ transform(text, {
|
|
|
155
155
|
|
|
156
156
|
Markdown sinks (`remarkPunctilio`, `transformMarkdown`, the Prettier plugin, and the CLI for Markdown files) default `nbsp` to `false` instead, because invisible U+00A0 characters in Markdown source files break `grep` and Ctrl+F. Pass `nbsp: true` (or the `--nbsp` CLI flag) to opt in.
|
|
157
157
|
|
|
158
|
-
The `rehype` plugin accepts additional options. Elements matching any `skipTags` tag name or
|
|
158
|
+
The `rehype` plugin accepts additional options. Elements matching a default skip tag (`code`, `pre`, `script`, `style`, `kbd`, `var`, `samp`, `template`, `math`, `svg`, `iframe`), any `skipTags` tag name, or any `skipClasses` class are left untransformed, as are `<textarea>` and any `<option>` without a `value` attribute (its text is the submitted value). `skipTags` extends the default skip tags rather than replacing them, and `skipClasses` defaults to `[]`; the values shown are common opt-ins (add `no-formatting` yourself to skip elements marked with it):
|
|
159
159
|
|
|
160
160
|
```typescript
|
|
161
161
|
rehypePunctilio({
|
|
162
|
-
skipTags: ["
|
|
162
|
+
skipTags: ["aside"], // default: [] — added to the default skip tags
|
|
163
163
|
skipClasses: ["no-formatting"], // default: [] — shown here as a common opt-in
|
|
164
164
|
transformAllElements: false, // see below
|
|
165
165
|
});
|
|
166
166
|
```
|
|
167
167
|
|
|
168
|
-
By default the plugin transforms text only inside a curated allowlist of prose-bearing elements (plus custom elements). Set `transformAllElements: true` to invert the model and transform text inside *every* element except those in `skipTags`/`skipClasses` and the form-value elements `<textarea>` and `<input>` (whose text is a literal control value, not prose). `<select>` is skipped as a container, but its `<option>`
|
|
168
|
+
By default the plugin transforms text only inside a curated allowlist of prose-bearing elements (plus custom elements). Set `transformAllElements: true` to invert the model and transform text inside *every* element except those in `skipTags`/`skipClasses` and the form-value elements `<textarea>` and `<input>` (whose text is a literal control value, not prose). `<select>` is skipped as a container, but the labels of its `<option>` elements that carry a `value` attribute are still transformed. `skipTags` and `skipClasses` continue to take precedence in this mode.
|
|
169
169
|
|
|
170
170
|
Text with no element ancestor—a bare-string fragment passed straight to `transformHtml`, or loose text sitting among top-level blocks—has no allowlist to consult and is always transformed in both modes. Inline prose siblings merge into that run; block-level and non-allowlisted structural elements (`<html>`/`<body>` under a full-document parse, `<form>` in the default mode) remain boundaries and keep their usual per-element treatment.
|
|
171
171
|
|
|
@@ -210,7 +210,7 @@ prettier --write 'docs/**/*.md'
|
|
|
210
210
|
# "Hello" -- world. → “Hello” – world.
|
|
211
211
|
```
|
|
212
212
|
|
|
213
|
-
Code spans, fenced code blocks,
|
|
213
|
+
Code spans, fenced code blocks, inline HTML (including the text between the open and close tags of a skipped element such as `<code>` or `<kbd>`), and link text that is its own URL are left untouched. The plugin extends Prettier’s `markdown` parser, so it transforms the files Prettier routes there (`*.md`, `*.markdown`); for HTML files, use the [CLI](#cli) or the [`rehype` plugin](#works-with-html-doms-via-boundary-aware-views) below.
|
|
214
214
|
|
|
215
215
|
### CLI
|
|
216
216
|
|
|
@@ -243,7 +243,7 @@ A `.pre-commit-hooks.yaml` ships in the package, so [pre-commit](https://pre-com
|
|
|
243
243
|
# .pre-commit-config.yaml
|
|
244
244
|
repos:
|
|
245
245
|
- repo: https://github.com/AlexanderMattTurner/punctilio
|
|
246
|
-
rev: v5.
|
|
246
|
+
rev: v5.5.0
|
|
247
247
|
hooks:
|
|
248
248
|
- id: punctilio # rewrites *.md / *.html in place
|
|
249
249
|
- id: punctilio-check # or: fail without writing (CI-friendly)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prettier-plugin.d.ts","sourceRoot":"","sources":["../src/prettier-plugin.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAU,MAAM,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"prettier-plugin.d.ts","sourceRoot":"","sources":["../src/prettier-plugin.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAU,MAAM,EAAE,MAAM,UAAU,CAAA;AAkC9C,QAAA,MAAM,MAAM,EAAE,MAab,CAAA;AAED,eAAe,MAAM,CAAA"}
|
package/dist/prettier-plugin.js
CHANGED
|
@@ -21,8 +21,9 @@ async function loadPunctilioConfig(searchFrom) {
|
|
|
21
21
|
}
|
|
22
22
|
async function runRemarkPunctilio(opts, ast) {
|
|
23
23
|
// The unified `Transformer` signature requires a VFile and a callback,
|
|
24
|
-
// but `remarkPunctilio` only
|
|
25
|
-
//
|
|
24
|
+
// but `remarkPunctilio` only needs the tree (the file just supplies the
|
|
25
|
+
// source for link positions). Narrow to the actual shape here so the cast
|
|
26
|
+
// lives in one well-commented place.
|
|
26
27
|
const transformer = remarkPunctilio(opts);
|
|
27
28
|
await transformer(ast);
|
|
28
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prettier-plugin.js","sourceRoot":"","sources":["../src/prettier-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,KAAK,gBAAgB,MAAM,2BAA2B,CAAA;AAG7D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAA;AACxF,OAAO,EAAE,eAAe,EAA+B,MAAM,aAAa,CAAA;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,OAAO,CAAC,QAAwB,CAAA;AAC1E,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,CAAC,CAAA;AAEzC,0EAA0E;AAC1E,4EAA4E;AAC5E,gEAAgE;AAChE,MAAM,wBAAwB,GAAsB;IAClD,GAAG,yBAAyB;IAC5B,GAAG,qBAAqB;CACzB,CAAA;AAED,KAAK,UAAU,mBAAmB,CAAC,UAAkB;IACnD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IAChD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,EAAE,CAAA;IACxC,OAAO,QAAQ,CAAC,MAAM,CAAC,MAAgC,EAAE,wBAAwB,CAAC,CAAA;AACpF,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,IAA4B,EAAE,GAAS;IACvE,uEAAuE;IACvE,
|
|
1
|
+
{"version":3,"file":"prettier-plugin.js","sourceRoot":"","sources":["../src/prettier-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,KAAK,gBAAgB,MAAM,2BAA2B,CAAA;AAG7D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAA;AACxF,OAAO,EAAE,eAAe,EAA+B,MAAM,aAAa,CAAA;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,OAAO,CAAC,QAAwB,CAAA;AAC1E,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,CAAC,CAAA;AAEzC,0EAA0E;AAC1E,4EAA4E;AAC5E,gEAAgE;AAChE,MAAM,wBAAwB,GAAsB;IAClD,GAAG,yBAAyB;IAC5B,GAAG,qBAAqB;CACzB,CAAA;AAED,KAAK,UAAU,mBAAmB,CAAC,UAAkB;IACnD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IAChD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,EAAE,CAAA;IACxC,OAAO,QAAQ,CAAC,MAAM,CAAC,MAAgC,EAAE,wBAAwB,CAAC,CAAA;AACpF,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,IAA4B,EAAE,GAAS;IACvE,uEAAuE;IACvE,wEAAwE;IACxE,0EAA0E;IAC1E,qCAAqC;IACrC,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,CAAyC,CAAA;IACjF,MAAM,WAAW,CAAC,GAAG,CAAC,CAAA;AACxB,CAAC;AAED,MAAM,MAAM,GAAW;IACrB,OAAO,EAAE;QACP,QAAQ,EAAE;YACR,GAAG,gBAAgB;YACnB,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO;gBACvB,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;gBACvD,MAAM,UAAU,GAAG,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;gBACnG,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,UAAU,CAAC,CAAA;gBAClD,MAAM,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;gBACnC,OAAO,GAAG,CAAA;YACZ,CAAC;SACF;KACF;CACF,CAAA;AAED,eAAe,MAAM,CAAA"}
|
package/dist/prose-view.d.ts
CHANGED
|
@@ -30,6 +30,25 @@ export declare function buildProseView(nodes: ProseNode[]): ProseView;
|
|
|
30
30
|
* segments so a pass never sees text as adjacent across removed content.
|
|
31
31
|
*/
|
|
32
32
|
export declare function splitAtIndices<T>(items: readonly T[], breakBefore: ReadonlySet<number>): T[][];
|
|
33
|
+
/**
|
|
34
|
+
* Stand-in for removed opaque inline content (a skipped element, an image,
|
|
35
|
+
* inline code) inside a spanning view. U+FFFC OBJECT REPLACEMENT CHARACTER is
|
|
36
|
+
* Unicode's placeholder for an embedded object: it is neither space, word
|
|
37
|
+
* character, nor punctuation, so a pass needing adjacent text never matches
|
|
38
|
+
* across it (`5<code>c</code>x 3` stays put), while the quote classifier still
|
|
39
|
+
* sees real content between a quote and its partner (`"<kbd>q</kbd>"` pairs).
|
|
40
|
+
*/
|
|
41
|
+
export declare const OPAQUE_PLACEHOLDER = "\uFFFC";
|
|
42
|
+
/**
|
|
43
|
+
* Runs `run` over `nodes` as one view with a placeholder node (see
|
|
44
|
+
* {@link OPAQUE_PLACEHOLDER}) at each opaque gap (`breakBefore`, as for
|
|
45
|
+
* {@link splitAtIndices}), so context-sensitive passes such as quote pairing
|
|
46
|
+
* read across the gap. The view is committed after `run`. If any edit lands in
|
|
47
|
+
* a placeholder (one that spans, replaces, or is inserted into the gap), the
|
|
48
|
+
* nodes are restored and `run` goes over each opaque-delimited segment on its
|
|
49
|
+
* own instead, so no edit ever lands in or through a gap.
|
|
50
|
+
*/
|
|
51
|
+
export declare function runAcrossOpaqueGaps(nodes: readonly ProseNode[], breakBefore: ReadonlySet<number>, run: (view: ProseView) => void): void;
|
|
33
52
|
export interface ReplaceAllOptions {
|
|
34
53
|
/** Opt-in: allow a match that contains an interior node boundary. Default: such matches are skipped. */
|
|
35
54
|
allowBoundaries?: (match: RegExpExecArray, view: ProseView) => boolean;
|
package/dist/prose-view.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prose-view.d.ts","sourceRoot":"","sources":["../src/prose-view.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"prose-view.d.ts","sourceRoot":"","sources":["../src/prose-view.ts"],"names":[],"mappings":"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"}
|
package/dist/prose-view.js
CHANGED
|
@@ -203,6 +203,82 @@ export function splitAtIndices(items, breakBefore) {
|
|
|
203
203
|
groups.push(items.slice(start));
|
|
204
204
|
return groups;
|
|
205
205
|
}
|
|
206
|
+
/**
|
|
207
|
+
* Stand-in for removed opaque inline content (a skipped element, an image,
|
|
208
|
+
* inline code) inside a spanning view. U+FFFC OBJECT REPLACEMENT CHARACTER is
|
|
209
|
+
* Unicode's placeholder for an embedded object: it is neither space, word
|
|
210
|
+
* character, nor punctuation, so a pass needing adjacent text never matches
|
|
211
|
+
* across it (`5<code>c</code>x 3` stays put), while the quote classifier still
|
|
212
|
+
* sees real content between a quote and its partner (`"<kbd>q</kbd>"` pairs).
|
|
213
|
+
*/
|
|
214
|
+
export const OPAQUE_PLACEHOLDER = "\uFFFC";
|
|
215
|
+
/**
|
|
216
|
+
* Single-quote edge stand-ins. The classifier reads end of text as an ending
|
|
217
|
+
* context after a closing single quote and as an opening context before an
|
|
218
|
+
* opening one, but reads {@link OPAQUE_PLACEHOLDER} as neither, so `'hi'` or
|
|
219
|
+
* `boys'` directly before a gap, or `'hi'` directly after one, would lose the
|
|
220
|
+
* role the segment edge gives it. A `)` after the quote and a `(` before it
|
|
221
|
+
* restore those contexts without blocking a pair across the gap
|
|
222
|
+
* (`'<code>x</code>'` still pairs). They are added only beside a single quote:
|
|
223
|
+
* double quotes read the placeholder correctly, and `)` would block a double
|
|
224
|
+
* opener.
|
|
225
|
+
*/
|
|
226
|
+
const SEGMENT_END_STAND_IN = ")";
|
|
227
|
+
const SEGMENT_START_STAND_IN = "(";
|
|
228
|
+
/** Straight, curly, modifier-letter and low-9 single-quote characters. */
|
|
229
|
+
const SINGLE_QUOTE_CHARS = new Set([
|
|
230
|
+
"'",
|
|
231
|
+
"\u2018",
|
|
232
|
+
"\u2019",
|
|
233
|
+
"\u02BC",
|
|
234
|
+
"\u201A",
|
|
235
|
+
]);
|
|
236
|
+
/** Gap stand-in for the text between `before` and `after`. */
|
|
237
|
+
function gapPlaceholder(before, after) {
|
|
238
|
+
const afterQuote = SINGLE_QUOTE_CHARS.has(before.slice(-1));
|
|
239
|
+
const beforeQuote = SINGLE_QUOTE_CHARS.has(after.slice(0, 1));
|
|
240
|
+
return ((afterQuote ? SEGMENT_END_STAND_IN : "") +
|
|
241
|
+
OPAQUE_PLACEHOLDER +
|
|
242
|
+
(beforeQuote ? SEGMENT_START_STAND_IN : ""));
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Runs `run` over `nodes` as one view with a placeholder node (see
|
|
246
|
+
* {@link OPAQUE_PLACEHOLDER}) at each opaque gap (`breakBefore`, as for
|
|
247
|
+
* {@link splitAtIndices}), so context-sensitive passes such as quote pairing
|
|
248
|
+
* read across the gap. The view is committed after `run`. If any edit lands in
|
|
249
|
+
* a placeholder (one that spans, replaces, or is inserted into the gap), the
|
|
250
|
+
* nodes are restored and `run` goes over each opaque-delimited segment on its
|
|
251
|
+
* own instead, so no edit ever lands in or through a gap.
|
|
252
|
+
*/
|
|
253
|
+
export function runAcrossOpaqueGaps(nodes, breakBefore, run) {
|
|
254
|
+
if (nodes.length === 0)
|
|
255
|
+
return;
|
|
256
|
+
const originalValues = nodes.map((node) => node.value);
|
|
257
|
+
const placeholders = [];
|
|
258
|
+
const spanning = [];
|
|
259
|
+
nodes.forEach((node, index) => {
|
|
260
|
+
if (breakBefore.has(index)) {
|
|
261
|
+
const value = gapPlaceholder(nodes[index - 1].value, node.value);
|
|
262
|
+
const placeholder = { value };
|
|
263
|
+
placeholders.push({ node: placeholder, value });
|
|
264
|
+
spanning.push(placeholder);
|
|
265
|
+
}
|
|
266
|
+
spanning.push(node);
|
|
267
|
+
});
|
|
268
|
+
const spanningView = buildProseView(spanning);
|
|
269
|
+
run(spanningView);
|
|
270
|
+
spanningView.commit();
|
|
271
|
+
if (placeholders.every(({ node, value }) => node.value === value))
|
|
272
|
+
return;
|
|
273
|
+
nodes.forEach((node, index) => {
|
|
274
|
+
node.value = originalValues[index];
|
|
275
|
+
});
|
|
276
|
+
for (const group of splitAtIndices(nodes, breakBefore)) {
|
|
277
|
+
const segmentView = buildProseView(group);
|
|
278
|
+
run(segmentView);
|
|
279
|
+
segmentView.commit();
|
|
280
|
+
}
|
|
281
|
+
}
|
|
206
282
|
/**
|
|
207
283
|
* Index of the first element in sorted `values` that is >= `target`. The
|
|
208
284
|
* boundary helpers below run per candidate offset in the pass scanners, so a
|
package/dist/prose-view.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prose-view.js","sourceRoot":"","sources":["../src/prose-view.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"prose-view.js","sourceRoot":"","sources":["../src/prose-view.ts"],"names":[],"mappings":"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"}
|
package/dist/rehype.d.ts
CHANGED
|
@@ -16,10 +16,12 @@ export interface ElementTransformOptions {
|
|
|
16
16
|
}
|
|
17
17
|
export interface RehypePunctilioOptions extends TransformOptions, ElementTransformOptions {
|
|
18
18
|
/**
|
|
19
|
-
* HTML tag names to skip when applying transformations
|
|
20
|
-
*
|
|
19
|
+
* Additional HTML tag names to skip when applying transformations, on top of
|
|
20
|
+
* the always-skipped defaults ("code", "pre", "script", "style", "kbd",
|
|
21
|
+
* "var", "samp", "template", "math", "svg", "iframe"). Content inside these
|
|
22
|
+
* elements won't have formatting improvements applied.
|
|
21
23
|
*
|
|
22
|
-
* Default: [
|
|
24
|
+
* Default: []
|
|
23
25
|
*/
|
|
24
26
|
skipTags?: string[];
|
|
25
27
|
/**
|
|
@@ -41,6 +43,9 @@ export interface RehypePunctilioOptions extends TransformOptions, ElementTransfo
|
|
|
41
43
|
*/
|
|
42
44
|
transformAllElements?: boolean;
|
|
43
45
|
}
|
|
46
|
+
/** Tag names whose content is always left untransformed; user `skipTags` extend this list. */
|
|
47
|
+
export declare const DEFAULT_SKIP_TAGS: readonly string[];
|
|
48
|
+
export declare const RAW_TEXT_FORM_TAG = "textarea";
|
|
44
49
|
/** Option keys handled by `rehypePunctilio` itself rather than `transform()`. */
|
|
45
50
|
export declare const REHYPE_ONLY_OPTION_KEYS: readonly string[];
|
|
46
51
|
/** Runtime list of valid `rehypePunctilio` option keys. */
|
|
@@ -64,9 +69,10 @@ export interface ProseViewOfOptions extends ElementTransformOptions {
|
|
|
64
69
|
/**
|
|
65
70
|
* Builds a single ProseView over the element's transformable text nodes,
|
|
66
71
|
* honoring the element-level `shouldSkip` and per-text-node `shouldSkipText`
|
|
67
|
-
* predicates. Returns null when the element holds no transformable text.
|
|
68
|
-
* view spans opaque gaps; the transform pipeline
|
|
69
|
-
*
|
|
72
|
+
* predicates. Returns null when the element holds no transformable text. The
|
|
73
|
+
* view spans opaque gaps with only a boundary at each; the transform pipeline
|
|
74
|
+
* instead runs {@link runAcrossOpaqueGaps}, which holds each gap with a
|
|
75
|
+
* placeholder, and {@link proseViewsOf} gives one view per gap-free segment.
|
|
70
76
|
*/
|
|
71
77
|
export declare function proseViewOf(element: Element, options?: ProseViewOfOptions): ProseView | null;
|
|
72
78
|
/**
|
|
@@ -113,8 +119,8 @@ export type PassEntry = ProsePass | {
|
|
|
113
119
|
export declare function applyPasses(target: Element | ProseUnit, passes: readonly PassEntry[], options?: ProseViewOfOptions): void;
|
|
114
120
|
export interface CollectProseBlocksOptions {
|
|
115
121
|
/**
|
|
116
|
-
* HTML tag names to skip
|
|
117
|
-
* ("code", "pre", "script", ...).
|
|
122
|
+
* HTML tag names to skip in addition to the plugin's default skip list
|
|
123
|
+
* ("code", "pre", "script", ...). Default: []
|
|
118
124
|
*/
|
|
119
125
|
skipTags?: string[];
|
|
120
126
|
/** CSS class names whose elements (and their subtrees) are skipped. Default: [] */
|
package/dist/rehype.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rehype.d.ts","sourceRoot":"","sources":["../src/rehype.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,cAAc,EACd,MAAM,EACN,IAAI,EACJ,WAAW,EACX,IAAI,EACL,MAAM,MAAM,CAAC;AACd,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAK3C,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,SAAS,
|
|
1
|
+
{"version":3,"file":"rehype.d.ts","sourceRoot":"","sources":["../src/rehype.ts"],"names":[],"mappings":"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"}
|
package/dist/rehype.js
CHANGED
|
@@ -3,8 +3,9 @@ import { transformView } from "./index.js";
|
|
|
3
3
|
import { TRANSFORM_OPTION_KEYS, } from "./transform-options.js";
|
|
4
4
|
import { MAX_RECURSION_DEPTH } from "./constants.js";
|
|
5
5
|
import { assertKnownOptionKeys, formatErrorString } from "./utils.js";
|
|
6
|
-
import { buildProseView, splitAtIndices, } from "./prose-view.js";
|
|
7
|
-
|
|
6
|
+
import { buildProseView, runAcrossOpaqueGaps, splitAtIndices, } from "./prose-view.js";
|
|
7
|
+
/** Tag names whose content is always left untransformed; user `skipTags` extend this list. */
|
|
8
|
+
export const DEFAULT_SKIP_TAGS = [
|
|
8
9
|
"code",
|
|
9
10
|
"pre",
|
|
10
11
|
"script",
|
|
@@ -15,6 +16,7 @@ const DEFAULT_SKIP_TAGS = [
|
|
|
15
16
|
"template",
|
|
16
17
|
"math",
|
|
17
18
|
"svg",
|
|
19
|
+
"iframe",
|
|
18
20
|
];
|
|
19
21
|
// Form elements whose text content is a literal control value, not prose.
|
|
20
22
|
// Hard-skipped (whole subtree) under `transformAllElements`, on top of the
|
|
@@ -28,7 +30,7 @@ const FORM_VALUE_TAGS = ["textarea", "input"];
|
|
|
28
30
|
// Skipped in BOTH modes — the allowlist default does not reach it as its own
|
|
29
31
|
// unit, but a transformable ancestor would otherwise pull its text into a
|
|
30
32
|
// shared view and transform it.
|
|
31
|
-
const RAW_TEXT_FORM_TAG = "textarea";
|
|
33
|
+
export const RAW_TEXT_FORM_TAG = "textarea";
|
|
32
34
|
// `<select>` is not prose itself, but its `<option>` children are (and are
|
|
33
35
|
// transformed under the default allowlist). Under `transformAllElements` we
|
|
34
36
|
// exclude `select` as a transform *unit* while still recursing into — and
|
|
@@ -176,9 +178,10 @@ export function assertSmartQuotesMatch(input) {
|
|
|
176
178
|
/**
|
|
177
179
|
* Builds a single ProseView over the element's transformable text nodes,
|
|
178
180
|
* honoring the element-level `shouldSkip` and per-text-node `shouldSkipText`
|
|
179
|
-
* predicates. Returns null when the element holds no transformable text.
|
|
180
|
-
* view spans opaque gaps; the transform pipeline
|
|
181
|
-
*
|
|
181
|
+
* predicates. Returns null when the element holds no transformable text. The
|
|
182
|
+
* view spans opaque gaps with only a boundary at each; the transform pipeline
|
|
183
|
+
* instead runs {@link runAcrossOpaqueGaps}, which holds each gap with a
|
|
184
|
+
* placeholder, and {@link proseViewsOf} gives one view per gap-free segment.
|
|
182
185
|
*/
|
|
183
186
|
export function proseViewOf(element, options = {}) {
|
|
184
187
|
/* istanbul ignore if -- defensive: elements should always have children array */
|
|
@@ -390,15 +393,24 @@ function hasTextDescendant(node, shouldSkip, depth = 0) {
|
|
|
390
393
|
}
|
|
391
394
|
return false;
|
|
392
395
|
}
|
|
396
|
+
// An `<option>` with no `value` attribute submits its text as the value, so
|
|
397
|
+
// the text is a literal control value, not prose. HAST marks an absent
|
|
398
|
+
// property as either `undefined` or `null`.
|
|
399
|
+
function isValueOption(node) {
|
|
400
|
+
return (node.tagName === "option" &&
|
|
401
|
+
(node.properties?.value === undefined || node.properties.value === null));
|
|
402
|
+
}
|
|
393
403
|
function resolveCollectOptions(options) {
|
|
394
|
-
const { skipTags =
|
|
404
|
+
const { skipTags = [], skipClasses = [], shouldSkip, transformAllElements = false, } = options;
|
|
395
405
|
// `textarea` is skipped in both modes so a transformable ancestor never
|
|
396
406
|
// flattens its literal value; inverted mode additionally hard-skips the whole
|
|
397
407
|
// form-value set (void `input`, which is opaque otherwise) on top of the user
|
|
398
408
|
// skip-list.
|
|
399
|
-
const skipTagSet = new Set(
|
|
400
|
-
|
|
401
|
-
|
|
409
|
+
const skipTagSet = new Set([
|
|
410
|
+
...DEFAULT_SKIP_TAGS,
|
|
411
|
+
...skipTags,
|
|
412
|
+
...(transformAllElements ? FORM_VALUE_TAGS : [RAW_TEXT_FORM_TAG]),
|
|
413
|
+
]);
|
|
402
414
|
const skipClassSet = new Set(skipClasses);
|
|
403
415
|
const hasSkipClass = (node) => {
|
|
404
416
|
if (skipClassSet.size === 0)
|
|
@@ -413,6 +425,7 @@ function resolveCollectOptions(options) {
|
|
|
413
425
|
};
|
|
414
426
|
return {
|
|
415
427
|
shouldSkip: (node) => skipTagSet.has(node.tagName) ||
|
|
428
|
+
isValueOption(node) ||
|
|
416
429
|
hasSkipClass(node) ||
|
|
417
430
|
(shouldSkip?.(node) ?? false),
|
|
418
431
|
// Inverted mode transforms every non-skipped element except non-prose
|
|
@@ -538,6 +551,11 @@ function runViewOf(container, children, options) {
|
|
|
538
551
|
const { nodes } = flattenRunProse(container, children, shouldSkip, options);
|
|
539
552
|
return nodes.length === 0 ? null : buildProseView(nodes);
|
|
540
553
|
}
|
|
554
|
+
// Runs the full pipeline over flattened prose as one view, with each opaque gap
|
|
555
|
+
// held by a placeholder so quotes pair across it (see `runAcrossOpaqueGaps`).
|
|
556
|
+
function transformProse({ nodes, opaqueBefore }, transformOptions) {
|
|
557
|
+
runAcrossOpaqueGaps(nodes, opaqueBefore, (view) => transformView(view, transformOptions));
|
|
558
|
+
}
|
|
541
559
|
function markDescendants(node, set, depth = 0) {
|
|
542
560
|
/* istanbul ignore if -- defensive: prevents stack overflow from malicious HTML */
|
|
543
561
|
if (depth > MAX_RECURSION_DEPTH) {
|
|
@@ -562,10 +580,7 @@ function transformRootProse(tree, shouldSkip, isTransformable, viewOptions, tran
|
|
|
562
580
|
let run = [];
|
|
563
581
|
const flushRun = () => {
|
|
564
582
|
if (runHasProse(run, shouldSkip)) {
|
|
565
|
-
|
|
566
|
-
for (const group of splitAtIndices(nodes, opaqueBefore)) {
|
|
567
|
-
transformView(buildProseView(group), transformOptions);
|
|
568
|
-
}
|
|
583
|
+
transformProse(flattenRootRunProse(run, shouldSkip, viewOptions), transformOptions);
|
|
569
584
|
for (const child of run) {
|
|
570
585
|
if (child.type === "element") {
|
|
571
586
|
transformed.add(child);
|
|
@@ -575,7 +590,8 @@ function transformRootProse(tree, shouldSkip, isTransformable, viewOptions, tran
|
|
|
575
590
|
}
|
|
576
591
|
run = [];
|
|
577
592
|
};
|
|
578
|
-
// Only bare text and inline
|
|
593
|
+
// Only bare text and inline elements merge into a run: prose elements, plus
|
|
594
|
+
// opaque ones (`<kbd>`, `<img>`) that quotes must pair across. Block elements
|
|
579
595
|
// and non-transformable structural wrappers (`<html>`/`<head>`/`<body>` under
|
|
580
596
|
// a full-document parse, or a non-allowlisted element in default mode) are
|
|
581
597
|
// boundaries left to the element visitor, so their subtrees keep the same
|
|
@@ -587,7 +603,9 @@ function transformRootProse(tree, shouldSkip, isTransformable, viewOptions, tran
|
|
|
587
603
|
child.type === "comment" ||
|
|
588
604
|
(child.type === "element" &&
|
|
589
605
|
!BLOCK_ELEMENTS.has(child.tagName) &&
|
|
590
|
-
isTransformable(child.tagName)
|
|
606
|
+
(isTransformable(child.tagName) ||
|
|
607
|
+
OPAQUE_VOID_TAGS.has(child.tagName) ||
|
|
608
|
+
shouldSkip(child)));
|
|
591
609
|
if (isRunMember) {
|
|
592
610
|
run.push(child);
|
|
593
611
|
}
|
|
@@ -628,19 +646,14 @@ export function rehypePunctilio(options = {}) {
|
|
|
628
646
|
for (const unit of units) {
|
|
629
647
|
if (unit.kind === "element") {
|
|
630
648
|
if (!transformed.has(unit.element)) {
|
|
631
|
-
|
|
632
|
-
transformView(view, transformOptions);
|
|
633
|
-
}
|
|
649
|
+
transformProse(flattenProse(unit.element, shouldSkip, viewOptions), transformOptions);
|
|
634
650
|
transformed.add(unit.element);
|
|
635
651
|
// Mark all descendants as processed since their text was included
|
|
636
652
|
markDescendants(unit.element, transformed);
|
|
637
653
|
}
|
|
638
654
|
}
|
|
639
655
|
else {
|
|
640
|
-
|
|
641
|
-
for (const group of splitAtIndices(nodes, opaqueBefore)) {
|
|
642
|
-
transformView(buildProseView(group), transformOptions);
|
|
643
|
-
}
|
|
656
|
+
transformProse(flattenRunProse(unit.container, unit.children, shouldSkip, viewOptions), transformOptions);
|
|
644
657
|
// Mark the container so a later visit doesn't re-collect its runs,
|
|
645
658
|
// and mark the run's inline-element members' subtrees.
|
|
646
659
|
transformed.add(unit.container);
|
package/dist/rehype.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rehype.js","sourceRoot":"","sources":["../src/rehype.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EACL,qBAAqB,GAEtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EACL,cAAc,EAGd,cAAc,GACf,MAAM,iBAAiB,CAAC;AAmDzB,MAAM,iBAAiB,GAAG;IACxB,MAAM;IACN,KAAK;IACL,QAAQ;IACR,OAAO;IACP,KAAK;IACL,KAAK;IACL,MAAM;IACN,UAAU;IACV,MAAM;IACN,KAAK;CACN,CAAC;AAEF,0EAA0E;AAC1E,2EAA2E;AAC3E,0EAA0E;AAC1E,2EAA2E;AAC3E,wEAAwE;AACxE,2EAA2E;AAC3E,0CAA0C;AAC1C,MAAM,eAAe,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAE9C,8EAA8E;AAC9E,6EAA6E;AAC7E,0EAA0E;AAC1E,gCAAgC;AAChC,MAAM,iBAAiB,GAAG,UAAU,CAAC;AAErC,2EAA2E;AAC3E,4EAA4E;AAC5E,0EAA0E;AAC1E,8EAA8E;AAC9E,iBAAiB;AACjB,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAErD,iFAAiF;AACjF,MAAM,CAAC,MAAM,uBAAuB,GAAsB;IACxD,UAAU;IACV,aAAa;IACb,gBAAgB;IAChB,sBAAsB;CACvB,CAAC;AAEF,2DAA2D;AAC3D,MAAM,CAAC,MAAM,kBAAkB,GAAsB;IACnD,GAAG,qBAAqB;IACxB,GAAG,uBAAuB;CAC3B,CAAC;AAEF,6EAA6E;AAC7E,gFAAgF;AAChF,uEAAuE;AACvE,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IAC/B,KAAK;IACL,IAAI;IACJ,KAAK;IACL,OAAO;IACP,IAAI;IACJ,OAAO;IACP,MAAM;IACN,QAAQ;IACR,OAAO;IACP,KAAK;IACL,OAAO;IACP,QAAQ;CACT,CAAC,CAAC;AAoBH,SAAS,YAAY,CACnB,IAA8B,EAC9B,KAAa,EACb,CAAiB;IAEjB,IAAI,KAAK,GAAG,mBAAmB,EAAE,CAAC;QAChC,OAAO;IACT,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,qEAAqE;YACrE,+DAA+D;YAC/D,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;gBAAE,CAAC,CAAC,aAAa,GAAG,IAAI,CAAC;YACrD,OAAO;QACT,CAAC;QACD,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACvC,CAAC,CAAC,aAAa,GAAG,IAAI,CAAC;YACvB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,CAAC,SAAS;YAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ;YAAE,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,CAAC,SAAS;YAAE,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;QACnC,OAAO;IACT,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACzB,uEAAuE;QACvE,sEAAsE;QACtE,8DAA8D;QAC9D,IACE,CAAC,CAAC,cAAc;YAChB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAC3C,CAAC;YACD,yEAAyE;YACzE,CAAC,CAAC,aAAa,GAAG,IAAI,CAAC;YACvB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;YACvC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC,CAAC,aAAa,GAAG,KAAK,CAAC;QACxB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CACnB,UAA4B,EAC5B,OAAiC;IAEjC,MAAM,cAAc,GAAG,OAAO,EAAE,cAAc,CAAC;IAC/C,OAAO;QACL,KAAK,EAAE,EAAE;QACT,YAAY,EAAE,IAAI,GAAG,EAAE;QACvB,UAAU;QACV,cAAc;QACd,oEAAoE;QACpE,sEAAsE;QACtE,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;QACrC,aAAa,EAAE,KAAK;KACrB,CAAC;AACJ,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,YAAY,CAC1B,IAA8B,EAC9B,UAA4B,EAC5B,OAAiC;IAEjC,MAAM,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC5C,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,IAA8B,EAC9B,UAA4B,EAC5B,OAAiC;IAEjC,OAAO,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,IAAa,EACb,aAA+B,GAAG,EAAE,CAAC,KAAK;IAE1C,OAAO,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC;SACtC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;SACnB,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,IAA0B,EAC1B,QAAgB,CAAC;IAEjB,IAAI,CAAC,IAAI,IAAI,KAAK,GAAG,mBAAmB;QAAE,OAAO,IAAI,CAAC;IAEtD,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACzB,OAAO,IAAY,CAAC;IACtB,CAAC;IAED,IAAI,UAAU,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAe,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YAC9D,IAAI,QAAQ;gBAAE,OAAO,QAAQ,CAAC;QAChC,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1C,MAAM,gBAAgB,GAA2B,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAExE,sEAAsE;AACtE,uEAAuE;AACvE,MAAM,UAAU,sBAAsB,CAAC,KAAa;IAClD,IAAI,CAAC,KAAK;QAAE,OAAO;IAEnB,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;aAAM,IAAI,IAAI,IAAI,gBAAgB,EAAE,CAAC;YACpC,IACE,KAAK,CAAC,MAAM,GAAG,CAAC;gBAChB,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,gBAAgB,CAAC,IAAI,CAAC,EAClD,CAAC;gBACD,KAAK,CAAC,GAAG,EAAE,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CACb,wBAAwB,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAC5D,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,wBAAwB,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAC5D,CAAC;IACJ,CAAC;AACH,CAAC;AAOD;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CACzB,OAAgB,EAChB,UAA8B,EAAE;IAEhC,iFAAiF;IACjF,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IACjE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,cAAc,CAAC,SAAS,CAAC,CAAC;AACnC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAC1B,OAAgB,EAChB,UAA8B,EAAE;IAEhC,iFAAiF;IACjF,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;QACvB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IACvD,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAC3E,OAAO,cAAc,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACvD,cAAc,CAAC,KAAK,CAAC,CACtB,CAAC;AACJ,CAAC;AAqBD,SAAS,gBAAgB,CAAC,KAAgB;IACxC,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AAC/D,CAAC;AAED,+EAA+E;AAC/E,SAAS,eAAe,CACtB,IAA8C,EAC9C,KAA+C;IAE/C,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACxB,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,OAAO,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;AACtD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,WAAW,CACzB,MAA2B,EAC3B,MAA4B,EAC5B,UAA8B,EAAE;IAEhC,MAAM,QAAQ,GAAG,CAAC,WAA+B,EAAoB,EAAE;QACrE,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;YACrB,OAAO,MAAM,CAAC,IAAI,KAAK,SAAS;gBAC9B,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC;gBAC1C,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAChE,CAAC;QACD,OAAO,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC1C,CAAC,CAAC;IAEF,IAAI,WAAW,GAAqB,IAAI,CAAC;IACzC,IAAI,iBAAiB,GAGV,IAAI,CAAC;IAEhB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAErE,MAAM,cAAc,GAClB,iBAAiB,KAAK,IAAI;YAC1B,iBAAiB,CAAC,UAAU,KAAK,UAAU;YAC3C,iBAAiB,CAAC,cAAc,KAAK,cAAc,CAAC;QACtD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,WAAW,GAAG,QAAQ,CAAC;gBACrB,UAAU,EAAE,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC;gBAC3D,cAAc,EAAE,eAAe,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC;aACxE,CAAC,CAAC;YACH,iBAAiB,GAAG,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;QACrD,CAAC;QAED,yEAAyE;QACzE,wDAAwD;QACxD,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,yEAAyE;AACzE,wEAAwE;AACxE,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IAC7B,SAAS;IACT,SAAS;IACT,OAAO;IACP,YAAY;IACZ,SAAS;IACT,QAAQ;IACR,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,UAAU;IACV,YAAY;IACZ,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,QAAQ;IACR,QAAQ;IACR,IAAI;IACJ,IAAI;IACJ,MAAM;IACN,KAAK;IACL,IAAI;IACJ,GAAG;IACH,KAAK;IACL,SAAS;IACT,OAAO;IACP,IAAI;CACL,CAAC,CAAC;AAEH,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC;IACrC,GAAG;IACH,IAAI;IACJ,QAAQ;IACR,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,KAAK;IACL,KAAK;IACL,OAAO;IACP,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,YAAY;IACZ,YAAY;IACZ,SAAS;IACT,QAAQ;IACR,MAAM;IACN,GAAG;IACH,GAAG;IACH,OAAO;IACP,QAAQ;IACR,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,KAAK;IACL,SAAS;IACT,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,KAAK;IACL,KAAK;IACL,MAAM;IACN,IAAI;IACJ,IAAI;IACJ,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,QAAQ;CACT,CAAC,CAAC;AAEH,4EAA4E;AAC5E,6EAA6E;AAC7E,SAAS,sBAAsB,CAAC,OAAe;IAC7C,OAAO,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,iBAAiB,CACxB,IAA8B,EAC9B,UAA4B,EAC5B,QAAgB,CAAC;IAEjB,IAAI,KAAK,GAAG,mBAAmB,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAClC,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,GAAG,CAAC,CAAC,CAChD,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAsBD,SAAS,qBAAqB,CAC5B,OAAkC;IAElC,MAAM,EACJ,QAAQ,GAAG,iBAAiB,EAC5B,WAAW,GAAG,EAAE,EAChB,UAAU,EACV,oBAAoB,GAAG,KAAK,GAC7B,GAAG,OAAO,CAAC;IAEZ,wEAAwE;IACxE,8EAA8E;IAC9E,8EAA8E;IAC9E,aAAa;IACb,MAAM,UAAU,GAAG,IAAI,GAAG,CACxB,oBAAoB;QAClB,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,GAAG,eAAe,CAAC;QACnC,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,iBAAiB,CAAC,CACrC,CAAC;IACF,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;IAE1C,MAAM,YAAY,GAAG,CAAC,IAAa,EAAW,EAAE;QAC9C,IAAI,YAAY,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC;QAC9C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;YACvC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;YAC9D,CAAC,CAAC,OAAO,UAAU,KAAK,QAAQ;gBAC9B,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;gBACzB,CAAC,CAAC,EAAE,CAAC;QACT,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC;IAEF,OAAO;QACL,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CACnB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;YAC5B,YAAY,CAAC,IAAI,CAAC;YAClB,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;QAC/B,sEAAsE;QACtE,uEAAuE;QACvE,0BAA0B;QAC1B,eAAe,EAAE,oBAAoB;YACnC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,wBAAwB,CAAC,GAAG,CAAC,OAAO,CAAC;YACrD,CAAC,CAAC,sBAAsB;KAC3B,CAAC;AACJ,CAAC;AAUD;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAa,EACb,UAAqC,EAAE;IAEvC,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACvE,OAAO,qBAAqB,CAC1B,IAAI,EACJ,UAAU,EACV,CAAC,EACD,SAAS,EACT,eAAe,CAChB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAa,EACb,UAAqC,EAAE;IAEvC,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACvE,OAAO,qBAAqB,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,WAAW,CAClB,QAAmC,EACnC,UAA4B;IAE5B,OAAO,QAAQ,CAAC,IAAI,CAClB,CAAC,KAAK,EAAE,EAAE,CACR,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;QACpD,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,iBAAiB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CACrE,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAC5B,IAAa,EACb,UAA4B,EAC5B,KAAa,EACb,kBAAoD,EACpD,eAA6C;IAE7C,kFAAkF;IAClF,IAAI,KAAK,GAAG,mBAAmB,EAAE,CAAC;QAChC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,kBAAkB,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,2EAA2E;IAC3E,4EAA4E;IAC5E,6EAA6E;IAC7E,0EAA0E;IAC1E,4EAA4E;IAC5E,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CACtC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAC9D,CAAC;IACF,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CACzC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CACzE,CAAC;IAEF,6EAA6E;IAC7E,gFAAgF;IAChF,IACE,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;QAC7B,CAAC,gBAAgB;QACjB,CAAC,aAAa,IAAI,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,EACtD,CAAC;QACD,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,KAAK,GAAgB,EAAE,CAAC;IAC9B,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,gBAAgB,EAAE,CAAC;QACtD,0EAA0E;QAC1E,wEAAwE;QACxE,IAAI,GAAG,GAAqB,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,GAAG,EAAE;YACpB,IAAI,WAAW,CAAC,GAAG,EAAE,UAAU,CAAC;gBAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;YAC9D,GAAG,GAAG,EAAE,CAAC;QACX,CAAC,CAAC;QACF,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;gBAClE,QAAQ,EAAE,CAAC;gBACX,KAAK,MAAM,CAAC,IAAI,qBAAqB,CACnC,KAAK,EACL,UAAU,EACV,KAAK,GAAG,CAAC,EACT,kBAAkB,EAClB,eAAe,CAChB,EAAE,CAAC;oBACF,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QACD,QAAQ,EAAE,CAAC;IACb,CAAC;SAAM,CAAC;QACN,2EAA2E;QAC3E,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC7B,KAAK,MAAM,CAAC,IAAI,qBAAqB,CACnC,KAAK,EACL,UAAU,EACV,KAAK,GAAG,CAAC,EACT,kBAAkB,EAClB,eAAe,CAChB,EAAE,CAAC;oBACF,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,0EAA0E;AAC1E,gFAAgF;AAChF,oEAAoE;AACpE,SAAS,eAAe,CACtB,SAAkB,EAClB,QAAmC,EACnC,UAA4B,EAC5B,OAA2B;IAE3B,MAAM,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC,CAAC,SAAS;QAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7C,KAAK,MAAM,KAAK,IAAI,QAAQ;QAAE,YAAY,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACxD,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC;AAC1D,CAAC;AAED,6EAA6E;AAC7E,4EAA4E;AAC5E,gFAAgF;AAChF,gDAAgD;AAChD,SAAS,mBAAmB,CAC1B,QAAmC,EACnC,UAA4B,EAC5B,OAA2B;IAE3B,MAAM,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC5C,KAAK,MAAM,KAAK,IAAI,QAAQ;QAAE,YAAY,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACxD,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC;AAC1D,CAAC;AAED;;;;GAIG;AACH,SAAS,SAAS,CAChB,SAAkB,EAClB,QAAmC,EACnC,OAA2B;IAE3B,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IACvD,MAAM,EAAE,KAAK,EAAE,GAAG,eAAe,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAC5E,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,eAAe,CACtB,IAAa,EACb,GAAiB,EACjB,QAAgB,CAAC;IAEjB,kFAAkF;IAClF,IAAI,KAAK,GAAG,mBAAmB,EAAE,CAAC;QAChC,OAAO;IACT,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7B,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACf,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,4EAA4E;AAC5E,4EAA4E;AAC5E,0EAA0E;AAC1E,8EAA8E;AAC9E,yEAAyE;AACzE,8EAA8E;AAC9E,wEAAwE;AACxE,SAAS,kBAAkB,CACzB,IAAU,EACV,UAA4B,EAC5B,eAA6C,EAC7C,WAA+B,EAC/B,gBAAkC,EAClC,WAAyB;IAEzB,IAAI,GAAG,GAAqB,EAAE,CAAC;IAC/B,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,IAAI,WAAW,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,CAAC;YACjC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,mBAAmB,CACjD,GAAG,EACH,UAAU,EACV,WAAW,CACZ,CAAC;YACF,KAAK,MAAM,KAAK,IAAI,cAAc,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,CAAC;gBACxD,aAAa,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC,CAAC;YACzD,CAAC;YACD,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;gBACxB,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC7B,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBACvB,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;gBACtC,CAAC;YACH,CAAC;QACH,CAAC;QACD,GAAG,GAAG,EAAE,CAAC;IACX,CAAC,CAAC;IAEF,4EAA4E;IAC5E,8EAA8E;IAC9E,2EAA2E;IAC3E,0EAA0E;IAC1E,yEAAyE;IACzE,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;YAAE,SAAS;QACvC,MAAM,WAAW,GACf,KAAK,CAAC,IAAI,KAAK,MAAM;YACrB,KAAK,CAAC,IAAI,KAAK,SAAS;YACxB,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS;gBACvB,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;gBAClC,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACpC,IAAI,WAAW,EAAE,CAAC;YAChB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,QAAQ,EAAE,CAAC;QACb,CAAC;IACH,CAAC;IACD,QAAQ,EAAE,CAAC;AACb,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,UAAkC,EAAE;IAEpC,qBAAqB,CAAC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;IAEtE,MAAM,EACJ,QAAQ,EACR,WAAW,EACX,cAAc,EACd,oBAAoB,EACpB,GAAG,gBAAgB,EACpB,GAAG,OAAO,CAAC;IAEZ,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,qBAAqB,CAAC;QAC5D,QAAQ;QACR,WAAW;QACX,oBAAoB;KACrB,CAAC,CAAC;IAEH,sEAAsE;IACtE,kEAAkE;IAClE,wCAAwC;IACxC,MAAM,WAAW,GAAuB,cAAc;QACpD,CAAC,CAAC,EAAE,UAAU,EAAE,cAAc,EAAE;QAChC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC;IAEnB,OAAO,CAAC,IAAU,EAAE,EAAE;QACpB,wDAAwD;QACxD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAW,CAAC;QAEvC,kBAAkB,CAChB,IAAI,EACJ,UAAU,EACV,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,WAAW,CACZ,CAAC;QAEF,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;YACrC,sCAAsC;YACtC,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC;YACd,CAAC;YAED,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrB,OAAO,IAAI,CAAC;YACd,CAAC;YAED,0DAA0D;YAC1D,MAAM,KAAK,GAAG,qBAAqB,CACjC,IAAI,EACJ,UAAU,EACV,CAAC,EACD,WAAW,EACX,eAAe,CAChB,CAAC;YACF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;wBACnC,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC;4BAC3D,aAAa,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;wBACxC,CAAC;wBACD,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBAC9B,kEAAkE;wBAClE,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;oBAC7C,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,eAAe,CAC7C,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,QAAQ,EACb,UAAU,EACV,WAAW,CACZ,CAAC;oBACF,KAAK,MAAM,KAAK,IAAI,cAAc,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,CAAC;wBACxD,aAAa,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC,CAAC;oBACzD,CAAC;oBACD,mEAAmE;oBACnE,uDAAuD;oBACvD,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAChC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;wBAClC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;4BAC7B,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;4BACvB,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;wBACtC,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAED,eAAe,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"rehype.js","sourceRoot":"","sources":["../src/rehype.ts"],"names":[],"mappings":"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"}
|
package/dist/remark.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remark.d.ts","sourceRoot":"","sources":["../src/remark.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"remark.d.ts","sourceRoot":"","sources":["../src/remark.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAyB,IAAI,EAAQ,MAAM,OAAO,CAAA;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAM1C,OAAO,EAAyB,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAMrF;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,CAAA;AAwHrD,wBAAgB,eAAe,CAC7B,OAAO,GAAE,sBAA2B,GACnC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAqCzB;AAED,eAAe,eAAe,CAAA"}
|
package/dist/remark.js
CHANGED
|
@@ -1,23 +1,82 @@
|
|
|
1
|
+
import { Tokenizer } from "parse5";
|
|
1
2
|
import { visitParents } from "unist-util-visit-parents";
|
|
2
3
|
import { transformView } from "./index.js";
|
|
3
4
|
import { TRANSFORM_OPTION_KEYS } from "./transform-options.js";
|
|
4
5
|
import { MAX_RECURSION_DEPTH } from "./constants.js";
|
|
5
|
-
import {
|
|
6
|
+
import { runAcrossOpaqueGaps } from "./prose-view.js";
|
|
7
|
+
import { DEFAULT_SKIP_TAGS, RAW_TEXT_FORM_TAG } from "./rehype.js";
|
|
6
8
|
import { assertKnownOptionKeys } from "./utils.js";
|
|
7
9
|
const PHRASING_CONTAINERS = new Set(["paragraph", "heading", "tableCell"]);
|
|
8
10
|
const SKIP_TYPES = new Set(["inlineCode", "html"]);
|
|
11
|
+
const SKIPPED_HTML_TAGS = new Set([...DEFAULT_SKIP_TAGS, RAW_TEXT_FORM_TAG]);
|
|
9
12
|
// Leaf phrasing nodes that render atomic content and carry no transformable
|
|
10
13
|
// text. Between two text nodes, one is a real visual separator, so the
|
|
11
14
|
// flattener records an opaque gap there (mirroring skipped `inlineCode`/`html`).
|
|
12
15
|
const OPAQUE_LEAF_TYPES = new Set([
|
|
13
16
|
"image", "imageReference", "break", "footnoteReference", "inlineMath",
|
|
14
17
|
]);
|
|
18
|
+
const URL_SCHEMES = ["mailto:", "https://", "http://"];
|
|
19
|
+
/** `url` without a leading `mailto:`, `https://` or `http://`, in any letter case. */
|
|
20
|
+
function stripUrlScheme(url) {
|
|
21
|
+
const lowerCaseUrl = url.toLowerCase();
|
|
22
|
+
const scheme = URL_SCHEMES.find((candidate) => lowerCaseUrl.startsWith(candidate));
|
|
23
|
+
return scheme === undefined ? url : url.slice(scheme.length);
|
|
24
|
+
}
|
|
25
|
+
/** The Markdown source that produced `node`, or "" when it carries no usable position. */
|
|
26
|
+
function sourceOfLink(node, source) {
|
|
27
|
+
const start = node.position?.start.offset;
|
|
28
|
+
const end = node.position?.end.offset;
|
|
29
|
+
return start === undefined || end === undefined ? "" : source.slice(start, end);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* True for an autolink or bare URL, whose visible text is the URL itself. A
|
|
33
|
+
* link not written as `[text](url)` (an `<…>` autolink or a GFM literal) is one
|
|
34
|
+
* by construction; a bracketed link is one when its text is its URL, with or
|
|
35
|
+
* without the scheme.
|
|
36
|
+
*/
|
|
37
|
+
function isUrlTextLink(node, source) {
|
|
38
|
+
const linkSource = sourceOfLink(node, source);
|
|
39
|
+
if (linkSource !== "" && !linkSource.startsWith("["))
|
|
40
|
+
return true;
|
|
41
|
+
if (node.children.length !== 1 || node.children[0].type !== "text")
|
|
42
|
+
return false;
|
|
43
|
+
return stripUrlScheme(node.children[0].value) === stripUrlScheme(node.url);
|
|
44
|
+
}
|
|
45
|
+
const ignoreToken = () => { };
|
|
46
|
+
/** Tracks raw-HTML skip-list tags so the text between an open and close tag is skipped. */
|
|
47
|
+
function trackSkippedHtmlTags(html, c) {
|
|
48
|
+
const openTag = (token) => {
|
|
49
|
+
if (!token.selfClosing && SKIPPED_HTML_TAGS.has(token.tagName))
|
|
50
|
+
c.openSkippedTags.push(token.tagName);
|
|
51
|
+
};
|
|
52
|
+
const closeTag = (token) => {
|
|
53
|
+
const openIndex = c.openSkippedTags.lastIndexOf(token.tagName);
|
|
54
|
+
if (openIndex !== -1)
|
|
55
|
+
c.openSkippedTags.length = openIndex;
|
|
56
|
+
};
|
|
57
|
+
const tokenizer = new Tokenizer({ sourceCodeLocationInfo: false }, {
|
|
58
|
+
onComment: ignoreToken,
|
|
59
|
+
onDoctype: ignoreToken,
|
|
60
|
+
onStartTag: openTag,
|
|
61
|
+
onEndTag: closeTag,
|
|
62
|
+
onEof: ignoreToken,
|
|
63
|
+
onCharacter: ignoreToken,
|
|
64
|
+
onNullCharacter: ignoreToken,
|
|
65
|
+
onWhitespaceCharacter: ignoreToken,
|
|
66
|
+
});
|
|
67
|
+
tokenizer.write(html, true);
|
|
68
|
+
}
|
|
15
69
|
function collectProse(node, depth, c) {
|
|
16
70
|
/* istanbul ignore if -- defensive: prevents stack overflow from malicious nesting */
|
|
17
71
|
if (depth > MAX_RECURSION_DEPTH) {
|
|
18
72
|
return;
|
|
19
73
|
}
|
|
20
|
-
if (
|
|
74
|
+
if (node.type === "html")
|
|
75
|
+
trackSkippedHtmlTags(node.value, c);
|
|
76
|
+
if (SKIP_TYPES.has(node.type) ||
|
|
77
|
+
OPAQUE_LEAF_TYPES.has(node.type) ||
|
|
78
|
+
c.openSkippedTags.length > 0 ||
|
|
79
|
+
(node.type === "link" && isUrlTextLink(node, c.source))) {
|
|
21
80
|
c.pendingOpaque = true;
|
|
22
81
|
return;
|
|
23
82
|
}
|
|
@@ -33,8 +92,8 @@ function collectProse(node, depth, c) {
|
|
|
33
92
|
collectProse(child, depth + 1, c);
|
|
34
93
|
}
|
|
35
94
|
}
|
|
36
|
-
function flattenProse(children) {
|
|
37
|
-
const c = { nodes: [], opaqueBefore: new Set(), pendingOpaque: false };
|
|
95
|
+
function flattenProse(children, source) {
|
|
96
|
+
const c = { nodes: [], opaqueBefore: new Set(), pendingOpaque: false, openSkippedTags: [], source };
|
|
38
97
|
for (const child of children)
|
|
39
98
|
collectProse(child, 0, c);
|
|
40
99
|
return { nodes: c.nodes, opaqueBefore: c.opaqueBefore };
|
|
@@ -48,7 +107,10 @@ export function remarkPunctilio(options = {}) {
|
|
|
48
107
|
...options,
|
|
49
108
|
nbsp: options.nbsp ?? false,
|
|
50
109
|
};
|
|
51
|
-
|
|
110
|
+
// `file` is absent when the transformer is called with a bare tree (the
|
|
111
|
+
// Prettier plugin); links are then judged by their text alone.
|
|
112
|
+
return (tree, file) => {
|
|
113
|
+
const source = file?.toString() ?? "";
|
|
52
114
|
visitParents(tree, (node, ancestors) => {
|
|
53
115
|
if (!PHRASING_CONTAINERS.has(node.type)) {
|
|
54
116
|
return;
|
|
@@ -61,12 +123,10 @@ export function remarkPunctilio(options = {}) {
|
|
|
61
123
|
if (!("children" in node)) {
|
|
62
124
|
return;
|
|
63
125
|
}
|
|
64
|
-
const { nodes, opaqueBefore } = flattenProse(node.children);
|
|
65
|
-
//
|
|
66
|
-
//
|
|
67
|
-
|
|
68
|
-
transformView(buildProseView(group), pluginOptions);
|
|
69
|
-
}
|
|
126
|
+
const { nodes, opaqueBefore } = flattenProse(node.children, source);
|
|
127
|
+
// Opaque gaps (inline code, images, breaks) become placeholders, so
|
|
128
|
+
// quotes pair across them while no pass rewrites text through them.
|
|
129
|
+
runAcrossOpaqueGaps(nodes, opaqueBefore, (view) => transformView(view, pluginOptions));
|
|
70
130
|
});
|
|
71
131
|
};
|
|
72
132
|
}
|
package/dist/remark.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remark.js","sourceRoot":"","sources":["../src/remark.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAAE,qBAAqB,EAAyB,MAAM,wBAAwB,CAAA;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"remark.js","sourceRoot":"","sources":["../src/remark.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/prettier-plugin.ts
CHANGED
|
@@ -28,8 +28,9 @@ async function loadPunctilioConfig(searchFrom: string): Promise<RemarkPunctilioO
|
|
|
28
28
|
|
|
29
29
|
async function runRemarkPunctilio(opts: RemarkPunctilioOptions, ast: Root): Promise<void> {
|
|
30
30
|
// The unified `Transformer` signature requires a VFile and a callback,
|
|
31
|
-
// but `remarkPunctilio` only
|
|
32
|
-
//
|
|
31
|
+
// but `remarkPunctilio` only needs the tree (the file just supplies the
|
|
32
|
+
// source for link positions). Narrow to the actual shape here so the cast
|
|
33
|
+
// lives in one well-commented place.
|
|
33
34
|
const transformer = remarkPunctilio(opts) as (tree: Root) => void | Promise<void>
|
|
34
35
|
await transformer(ast)
|
|
35
36
|
}
|
package/src/prose-view.ts
CHANGED
|
@@ -273,6 +273,93 @@ export function splitAtIndices<T>(
|
|
|
273
273
|
return groups;
|
|
274
274
|
}
|
|
275
275
|
|
|
276
|
+
/**
|
|
277
|
+
* Stand-in for removed opaque inline content (a skipped element, an image,
|
|
278
|
+
* inline code) inside a spanning view. U+FFFC OBJECT REPLACEMENT CHARACTER is
|
|
279
|
+
* Unicode's placeholder for an embedded object: it is neither space, word
|
|
280
|
+
* character, nor punctuation, so a pass needing adjacent text never matches
|
|
281
|
+
* across it (`5<code>c</code>x 3` stays put), while the quote classifier still
|
|
282
|
+
* sees real content between a quote and its partner (`"<kbd>q</kbd>"` pairs).
|
|
283
|
+
*/
|
|
284
|
+
export const OPAQUE_PLACEHOLDER = "\uFFFC";
|
|
285
|
+
|
|
286
|
+
/**
|
|
287
|
+
* Single-quote edge stand-ins. The classifier reads end of text as an ending
|
|
288
|
+
* context after a closing single quote and as an opening context before an
|
|
289
|
+
* opening one, but reads {@link OPAQUE_PLACEHOLDER} as neither, so `'hi'` or
|
|
290
|
+
* `boys'` directly before a gap, or `'hi'` directly after one, would lose the
|
|
291
|
+
* role the segment edge gives it. A `)` after the quote and a `(` before it
|
|
292
|
+
* restore those contexts without blocking a pair across the gap
|
|
293
|
+
* (`'<code>x</code>'` still pairs). They are added only beside a single quote:
|
|
294
|
+
* double quotes read the placeholder correctly, and `)` would block a double
|
|
295
|
+
* opener.
|
|
296
|
+
*/
|
|
297
|
+
const SEGMENT_END_STAND_IN = ")";
|
|
298
|
+
const SEGMENT_START_STAND_IN = "(";
|
|
299
|
+
|
|
300
|
+
/** Straight, curly, modifier-letter and low-9 single-quote characters. */
|
|
301
|
+
const SINGLE_QUOTE_CHARS: ReadonlySet<string> = new Set([
|
|
302
|
+
"'",
|
|
303
|
+
"\u2018",
|
|
304
|
+
"\u2019",
|
|
305
|
+
"\u02BC",
|
|
306
|
+
"\u201A",
|
|
307
|
+
]);
|
|
308
|
+
|
|
309
|
+
/** Gap stand-in for the text between `before` and `after`. */
|
|
310
|
+
function gapPlaceholder(before: string, after: string): string {
|
|
311
|
+
const afterQuote = SINGLE_QUOTE_CHARS.has(before.slice(-1));
|
|
312
|
+
const beforeQuote = SINGLE_QUOTE_CHARS.has(after.slice(0, 1));
|
|
313
|
+
return (
|
|
314
|
+
(afterQuote ? SEGMENT_END_STAND_IN : "") +
|
|
315
|
+
OPAQUE_PLACEHOLDER +
|
|
316
|
+
(beforeQuote ? SEGMENT_START_STAND_IN : "")
|
|
317
|
+
);
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
/**
|
|
321
|
+
* Runs `run` over `nodes` as one view with a placeholder node (see
|
|
322
|
+
* {@link OPAQUE_PLACEHOLDER}) at each opaque gap (`breakBefore`, as for
|
|
323
|
+
* {@link splitAtIndices}), so context-sensitive passes such as quote pairing
|
|
324
|
+
* read across the gap. The view is committed after `run`. If any edit lands in
|
|
325
|
+
* a placeholder (one that spans, replaces, or is inserted into the gap), the
|
|
326
|
+
* nodes are restored and `run` goes over each opaque-delimited segment on its
|
|
327
|
+
* own instead, so no edit ever lands in or through a gap.
|
|
328
|
+
*/
|
|
329
|
+
export function runAcrossOpaqueGaps(
|
|
330
|
+
nodes: readonly ProseNode[],
|
|
331
|
+
breakBefore: ReadonlySet<number>,
|
|
332
|
+
run: (view: ProseView) => void,
|
|
333
|
+
): void {
|
|
334
|
+
if (nodes.length === 0) return;
|
|
335
|
+
const originalValues = nodes.map((node) => node.value);
|
|
336
|
+
const placeholders: { node: ProseNode; value: string }[] = [];
|
|
337
|
+
const spanning: ProseNode[] = [];
|
|
338
|
+
nodes.forEach((node, index) => {
|
|
339
|
+
if (breakBefore.has(index)) {
|
|
340
|
+
const value = gapPlaceholder(nodes[index - 1].value, node.value);
|
|
341
|
+
const placeholder = { value };
|
|
342
|
+
placeholders.push({ node: placeholder, value });
|
|
343
|
+
spanning.push(placeholder);
|
|
344
|
+
}
|
|
345
|
+
spanning.push(node);
|
|
346
|
+
});
|
|
347
|
+
|
|
348
|
+
const spanningView = buildProseView(spanning);
|
|
349
|
+
run(spanningView);
|
|
350
|
+
spanningView.commit();
|
|
351
|
+
if (placeholders.every(({ node, value }) => node.value === value)) return;
|
|
352
|
+
|
|
353
|
+
nodes.forEach((node, index) => {
|
|
354
|
+
node.value = originalValues[index];
|
|
355
|
+
});
|
|
356
|
+
for (const group of splitAtIndices(nodes, breakBefore)) {
|
|
357
|
+
const segmentView = buildProseView(group);
|
|
358
|
+
run(segmentView);
|
|
359
|
+
segmentView.commit();
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
|
|
276
363
|
export interface ReplaceAllOptions {
|
|
277
364
|
/** Opt-in: allow a match that contains an interior node boundary. Default: such matches are skipped. */
|
|
278
365
|
allowBoundaries?: (match: RegExpExecArray, view: ProseView) => boolean;
|
package/src/rehype.ts
CHANGED
|
@@ -21,6 +21,7 @@ import {
|
|
|
21
21
|
buildProseView,
|
|
22
22
|
type ProsePass,
|
|
23
23
|
type ProseView,
|
|
24
|
+
runAcrossOpaqueGaps,
|
|
24
25
|
splitAtIndices,
|
|
25
26
|
} from "./prose-view.js";
|
|
26
27
|
|
|
@@ -45,10 +46,12 @@ export interface ElementTransformOptions {
|
|
|
45
46
|
export interface RehypePunctilioOptions
|
|
46
47
|
extends TransformOptions, ElementTransformOptions {
|
|
47
48
|
/**
|
|
48
|
-
* HTML tag names to skip when applying transformations
|
|
49
|
-
*
|
|
49
|
+
* Additional HTML tag names to skip when applying transformations, on top of
|
|
50
|
+
* the always-skipped defaults ("code", "pre", "script", "style", "kbd",
|
|
51
|
+
* "var", "samp", "template", "math", "svg", "iframe"). Content inside these
|
|
52
|
+
* elements won't have formatting improvements applied.
|
|
50
53
|
*
|
|
51
|
-
* Default: [
|
|
54
|
+
* Default: []
|
|
52
55
|
*/
|
|
53
56
|
skipTags?: string[];
|
|
54
57
|
|
|
@@ -73,7 +76,8 @@ export interface RehypePunctilioOptions
|
|
|
73
76
|
transformAllElements?: boolean;
|
|
74
77
|
}
|
|
75
78
|
|
|
76
|
-
|
|
79
|
+
/** Tag names whose content is always left untransformed; user `skipTags` extend this list. */
|
|
80
|
+
export const DEFAULT_SKIP_TAGS: readonly string[] = [
|
|
77
81
|
"code",
|
|
78
82
|
"pre",
|
|
79
83
|
"script",
|
|
@@ -84,6 +88,7 @@ const DEFAULT_SKIP_TAGS = [
|
|
|
84
88
|
"template",
|
|
85
89
|
"math",
|
|
86
90
|
"svg",
|
|
91
|
+
"iframe",
|
|
87
92
|
];
|
|
88
93
|
|
|
89
94
|
// Form elements whose text content is a literal control value, not prose.
|
|
@@ -99,7 +104,7 @@ const FORM_VALUE_TAGS = ["textarea", "input"];
|
|
|
99
104
|
// Skipped in BOTH modes — the allowlist default does not reach it as its own
|
|
100
105
|
// unit, but a transformable ancestor would otherwise pull its text into a
|
|
101
106
|
// shared view and transform it.
|
|
102
|
-
const RAW_TEXT_FORM_TAG = "textarea";
|
|
107
|
+
export const RAW_TEXT_FORM_TAG = "textarea";
|
|
103
108
|
|
|
104
109
|
// `<select>` is not prose itself, but its `<option>` children are (and are
|
|
105
110
|
// transformed under the default allowlist). Under `transformAllElements` we
|
|
@@ -311,9 +316,10 @@ export interface ProseViewOfOptions extends ElementTransformOptions {
|
|
|
311
316
|
/**
|
|
312
317
|
* Builds a single ProseView over the element's transformable text nodes,
|
|
313
318
|
* honoring the element-level `shouldSkip` and per-text-node `shouldSkipText`
|
|
314
|
-
* predicates. Returns null when the element holds no transformable text.
|
|
315
|
-
* view spans opaque gaps; the transform pipeline
|
|
316
|
-
*
|
|
319
|
+
* predicates. Returns null when the element holds no transformable text. The
|
|
320
|
+
* view spans opaque gaps with only a boundary at each; the transform pipeline
|
|
321
|
+
* instead runs {@link runAcrossOpaqueGaps}, which holds each gap with a
|
|
322
|
+
* placeholder, and {@link proseViewsOf} gives one view per gap-free segment.
|
|
317
323
|
*/
|
|
318
324
|
export function proseViewOf(
|
|
319
325
|
element: Element,
|
|
@@ -588,8 +594,8 @@ function hasTextDescendant(
|
|
|
588
594
|
|
|
589
595
|
export interface CollectProseBlocksOptions {
|
|
590
596
|
/**
|
|
591
|
-
* HTML tag names to skip
|
|
592
|
-
* ("code", "pre", "script", ...).
|
|
597
|
+
* HTML tag names to skip in addition to the plugin's default skip list
|
|
598
|
+
* ("code", "pre", "script", ...). Default: []
|
|
593
599
|
*/
|
|
594
600
|
skipTags?: string[];
|
|
595
601
|
/** CSS class names whose elements (and their subtrees) are skipped. Default: [] */
|
|
@@ -600,6 +606,16 @@ export interface CollectProseBlocksOptions {
|
|
|
600
606
|
transformAllElements?: boolean;
|
|
601
607
|
}
|
|
602
608
|
|
|
609
|
+
// An `<option>` with no `value` attribute submits its text as the value, so
|
|
610
|
+
// the text is a literal control value, not prose. HAST marks an absent
|
|
611
|
+
// property as either `undefined` or `null`.
|
|
612
|
+
function isValueOption(node: Element): boolean {
|
|
613
|
+
return (
|
|
614
|
+
node.tagName === "option" &&
|
|
615
|
+
(node.properties?.value === undefined || node.properties.value === null)
|
|
616
|
+
);
|
|
617
|
+
}
|
|
618
|
+
|
|
603
619
|
/** Skip predicate and transformable-tag test resolved from the options. */
|
|
604
620
|
interface ResolvedCollectOptions {
|
|
605
621
|
shouldSkip: ElementPredicate;
|
|
@@ -610,7 +626,7 @@ function resolveCollectOptions(
|
|
|
610
626
|
options: CollectProseBlocksOptions,
|
|
611
627
|
): ResolvedCollectOptions {
|
|
612
628
|
const {
|
|
613
|
-
skipTags =
|
|
629
|
+
skipTags = [],
|
|
614
630
|
skipClasses = [],
|
|
615
631
|
shouldSkip,
|
|
616
632
|
transformAllElements = false,
|
|
@@ -620,11 +636,11 @@ function resolveCollectOptions(
|
|
|
620
636
|
// flattens its literal value; inverted mode additionally hard-skips the whole
|
|
621
637
|
// form-value set (void `input`, which is opaque otherwise) on top of the user
|
|
622
638
|
// skip-list.
|
|
623
|
-
const skipTagSet = new Set(
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
);
|
|
639
|
+
const skipTagSet = new Set([
|
|
640
|
+
...DEFAULT_SKIP_TAGS,
|
|
641
|
+
...skipTags,
|
|
642
|
+
...(transformAllElements ? FORM_VALUE_TAGS : [RAW_TEXT_FORM_TAG]),
|
|
643
|
+
]);
|
|
628
644
|
const skipClassSet = new Set(skipClasses);
|
|
629
645
|
|
|
630
646
|
const hasSkipClass = (node: Element): boolean => {
|
|
@@ -641,6 +657,7 @@ function resolveCollectOptions(
|
|
|
641
657
|
return {
|
|
642
658
|
shouldSkip: (node) =>
|
|
643
659
|
skipTagSet.has(node.tagName) ||
|
|
660
|
+
isValueOption(node) ||
|
|
644
661
|
hasSkipClass(node) ||
|
|
645
662
|
(shouldSkip?.(node) ?? false),
|
|
646
663
|
// Inverted mode transforms every non-skipped element except non-prose
|
|
@@ -837,6 +854,17 @@ function runViewOf(
|
|
|
837
854
|
return nodes.length === 0 ? null : buildProseView(nodes);
|
|
838
855
|
}
|
|
839
856
|
|
|
857
|
+
// Runs the full pipeline over flattened prose as one view, with each opaque gap
|
|
858
|
+
// held by a placeholder so quotes pair across it (see `runAcrossOpaqueGaps`).
|
|
859
|
+
function transformProse(
|
|
860
|
+
{ nodes, opaqueBefore }: FlattenedProse,
|
|
861
|
+
transformOptions: TransformOptions,
|
|
862
|
+
): void {
|
|
863
|
+
runAcrossOpaqueGaps(nodes, opaqueBefore, (view) =>
|
|
864
|
+
transformView(view, transformOptions),
|
|
865
|
+
);
|
|
866
|
+
}
|
|
867
|
+
|
|
840
868
|
function markDescendants(
|
|
841
869
|
node: Element,
|
|
842
870
|
set: Set<Element>,
|
|
@@ -874,14 +902,10 @@ function transformRootProse(
|
|
|
874
902
|
let run: ElementContent[] = [];
|
|
875
903
|
const flushRun = () => {
|
|
876
904
|
if (runHasProse(run, shouldSkip)) {
|
|
877
|
-
|
|
878
|
-
run,
|
|
879
|
-
|
|
880
|
-
viewOptions,
|
|
905
|
+
transformProse(
|
|
906
|
+
flattenRootRunProse(run, shouldSkip, viewOptions),
|
|
907
|
+
transformOptions,
|
|
881
908
|
);
|
|
882
|
-
for (const group of splitAtIndices(nodes, opaqueBefore)) {
|
|
883
|
-
transformView(buildProseView(group), transformOptions);
|
|
884
|
-
}
|
|
885
909
|
for (const child of run) {
|
|
886
910
|
if (child.type === "element") {
|
|
887
911
|
transformed.add(child);
|
|
@@ -892,7 +916,8 @@ function transformRootProse(
|
|
|
892
916
|
run = [];
|
|
893
917
|
};
|
|
894
918
|
|
|
895
|
-
// Only bare text and inline
|
|
919
|
+
// Only bare text and inline elements merge into a run: prose elements, plus
|
|
920
|
+
// opaque ones (`<kbd>`, `<img>`) that quotes must pair across. Block elements
|
|
896
921
|
// and non-transformable structural wrappers (`<html>`/`<head>`/`<body>` under
|
|
897
922
|
// a full-document parse, or a non-allowlisted element in default mode) are
|
|
898
923
|
// boundaries left to the element visitor, so their subtrees keep the same
|
|
@@ -904,7 +929,9 @@ function transformRootProse(
|
|
|
904
929
|
child.type === "comment" ||
|
|
905
930
|
(child.type === "element" &&
|
|
906
931
|
!BLOCK_ELEMENTS.has(child.tagName) &&
|
|
907
|
-
isTransformable(child.tagName)
|
|
932
|
+
(isTransformable(child.tagName) ||
|
|
933
|
+
OPAQUE_VOID_TAGS.has(child.tagName) ||
|
|
934
|
+
shouldSkip(child)));
|
|
908
935
|
if (isRunMember) {
|
|
909
936
|
run.push(child);
|
|
910
937
|
} else {
|
|
@@ -974,23 +1001,24 @@ export function rehypePunctilio(
|
|
|
974
1001
|
for (const unit of units) {
|
|
975
1002
|
if (unit.kind === "element") {
|
|
976
1003
|
if (!transformed.has(unit.element)) {
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
1004
|
+
transformProse(
|
|
1005
|
+
flattenProse(unit.element, shouldSkip, viewOptions),
|
|
1006
|
+
transformOptions,
|
|
1007
|
+
);
|
|
980
1008
|
transformed.add(unit.element);
|
|
981
1009
|
// Mark all descendants as processed since their text was included
|
|
982
1010
|
markDescendants(unit.element, transformed);
|
|
983
1011
|
}
|
|
984
1012
|
} else {
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
1013
|
+
transformProse(
|
|
1014
|
+
flattenRunProse(
|
|
1015
|
+
unit.container,
|
|
1016
|
+
unit.children,
|
|
1017
|
+
shouldSkip,
|
|
1018
|
+
viewOptions,
|
|
1019
|
+
),
|
|
1020
|
+
transformOptions,
|
|
990
1021
|
);
|
|
991
|
-
for (const group of splitAtIndices(nodes, opaqueBefore)) {
|
|
992
|
-
transformView(buildProseView(group), transformOptions);
|
|
993
|
-
}
|
|
994
1022
|
// Mark the container so a later visit doesn't re-collect its runs,
|
|
995
1023
|
// and mark the run's inline-element members' subtrees.
|
|
996
1024
|
transformed.add(unit.container);
|
package/src/remark.ts
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import type { PhrasingContent, Root, Text } from "mdast"
|
|
1
|
+
import type { Link, PhrasingContent, Root, Text } from "mdast"
|
|
2
2
|
import type { Transformer } from "unified"
|
|
3
3
|
|
|
4
|
+
import { type Token, Tokenizer } from "parse5"
|
|
4
5
|
import { visitParents } from "unist-util-visit-parents"
|
|
5
6
|
|
|
6
7
|
import { transformView } from "./index.js"
|
|
7
8
|
import { TRANSFORM_OPTION_KEYS, type TransformOptions } from "./transform-options.js"
|
|
8
9
|
import { MAX_RECURSION_DEPTH } from "./constants.js"
|
|
9
|
-
import {
|
|
10
|
+
import { runAcrossOpaqueGaps } from "./prose-view.js"
|
|
11
|
+
import { DEFAULT_SKIP_TAGS, RAW_TEXT_FORM_TAG } from "./rehype.js"
|
|
10
12
|
import { assertKnownOptionKeys } from "./utils.js"
|
|
11
13
|
|
|
12
14
|
/**
|
|
@@ -20,6 +22,8 @@ const PHRASING_CONTAINERS = new Set(["paragraph", "heading", "tableCell"])
|
|
|
20
22
|
|
|
21
23
|
const SKIP_TYPES = new Set(["inlineCode", "html"])
|
|
22
24
|
|
|
25
|
+
const SKIPPED_HTML_TAGS: ReadonlySet<string> = new Set([...DEFAULT_SKIP_TAGS, RAW_TEXT_FORM_TAG])
|
|
26
|
+
|
|
23
27
|
// Leaf phrasing nodes that render atomic content and carry no transformable
|
|
24
28
|
// text. Between two text nodes, one is a real visual separator, so the
|
|
25
29
|
// flattener records an opaque gap there (mirroring skipped `inlineCode`/`html`).
|
|
@@ -33,6 +37,67 @@ interface ProseCollector {
|
|
|
33
37
|
// An opaque node was dropped since the last emitted text node; the next
|
|
34
38
|
// emitted node records an opaque gap before it.
|
|
35
39
|
pendingOpaque: boolean
|
|
40
|
+
// Raw-HTML skip-list tags opened and not yet closed; everything between an
|
|
41
|
+
// open tag and its close tag is skipped content.
|
|
42
|
+
openSkippedTags: string[]
|
|
43
|
+
// Markdown source the tree was parsed from; link positions index into it.
|
|
44
|
+
source: string
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const URL_SCHEMES = ["mailto:", "https://", "http://"]
|
|
48
|
+
|
|
49
|
+
/** `url` without a leading `mailto:`, `https://` or `http://`, in any letter case. */
|
|
50
|
+
function stripUrlScheme(url: string): string {
|
|
51
|
+
const lowerCaseUrl = url.toLowerCase()
|
|
52
|
+
const scheme = URL_SCHEMES.find((candidate) => lowerCaseUrl.startsWith(candidate))
|
|
53
|
+
return scheme === undefined ? url : url.slice(scheme.length)
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/** The Markdown source that produced `node`, or "" when it carries no usable position. */
|
|
57
|
+
function sourceOfLink(node: Link, source: string): string {
|
|
58
|
+
const start = node.position?.start.offset
|
|
59
|
+
const end = node.position?.end.offset
|
|
60
|
+
return start === undefined || end === undefined ? "" : source.slice(start, end)
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* True for an autolink or bare URL, whose visible text is the URL itself. A
|
|
65
|
+
* link not written as `[text](url)` (an `<…>` autolink or a GFM literal) is one
|
|
66
|
+
* by construction; a bracketed link is one when its text is its URL, with or
|
|
67
|
+
* without the scheme.
|
|
68
|
+
*/
|
|
69
|
+
function isUrlTextLink(node: Link, source: string): boolean {
|
|
70
|
+
const linkSource = sourceOfLink(node, source)
|
|
71
|
+
if (linkSource !== "" && !linkSource.startsWith("[")) return true
|
|
72
|
+
if (node.children.length !== 1 || node.children[0].type !== "text") return false
|
|
73
|
+
return stripUrlScheme(node.children[0].value) === stripUrlScheme(node.url)
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const ignoreToken = (): void => {}
|
|
77
|
+
|
|
78
|
+
/** Tracks raw-HTML skip-list tags so the text between an open and close tag is skipped. */
|
|
79
|
+
function trackSkippedHtmlTags(html: string, c: ProseCollector): void {
|
|
80
|
+
const openTag = (token: Token.TagToken): void => {
|
|
81
|
+
if (!token.selfClosing && SKIPPED_HTML_TAGS.has(token.tagName)) c.openSkippedTags.push(token.tagName)
|
|
82
|
+
}
|
|
83
|
+
const closeTag = (token: Token.TagToken): void => {
|
|
84
|
+
const openIndex = c.openSkippedTags.lastIndexOf(token.tagName)
|
|
85
|
+
if (openIndex !== -1) c.openSkippedTags.length = openIndex
|
|
86
|
+
}
|
|
87
|
+
const tokenizer = new Tokenizer(
|
|
88
|
+
{ sourceCodeLocationInfo: false },
|
|
89
|
+
{
|
|
90
|
+
onComment: ignoreToken,
|
|
91
|
+
onDoctype: ignoreToken,
|
|
92
|
+
onStartTag: openTag,
|
|
93
|
+
onEndTag: closeTag,
|
|
94
|
+
onEof: ignoreToken,
|
|
95
|
+
onCharacter: ignoreToken,
|
|
96
|
+
onNullCharacter: ignoreToken,
|
|
97
|
+
onWhitespaceCharacter: ignoreToken,
|
|
98
|
+
}
|
|
99
|
+
)
|
|
100
|
+
tokenizer.write(html, true)
|
|
36
101
|
}
|
|
37
102
|
|
|
38
103
|
function collectProse(node: PhrasingContent, depth: number, c: ProseCollector): void {
|
|
@@ -41,7 +106,14 @@ function collectProse(node: PhrasingContent, depth: number, c: ProseCollector):
|
|
|
41
106
|
return
|
|
42
107
|
}
|
|
43
108
|
|
|
44
|
-
if (
|
|
109
|
+
if (node.type === "html") trackSkippedHtmlTags(node.value, c)
|
|
110
|
+
|
|
111
|
+
if (
|
|
112
|
+
SKIP_TYPES.has(node.type) ||
|
|
113
|
+
OPAQUE_LEAF_TYPES.has(node.type) ||
|
|
114
|
+
c.openSkippedTags.length > 0 ||
|
|
115
|
+
(node.type === "link" && isUrlTextLink(node, c.source))
|
|
116
|
+
) {
|
|
45
117
|
c.pendingOpaque = true
|
|
46
118
|
return
|
|
47
119
|
}
|
|
@@ -58,8 +130,8 @@ function collectProse(node: PhrasingContent, depth: number, c: ProseCollector):
|
|
|
58
130
|
}
|
|
59
131
|
}
|
|
60
132
|
|
|
61
|
-
function flattenProse(children: readonly PhrasingContent[]): { nodes: Text[]; opaqueBefore: Set<number> } {
|
|
62
|
-
const c: ProseCollector = { nodes: [], opaqueBefore: new Set(), pendingOpaque: false }
|
|
133
|
+
function flattenProse(children: readonly PhrasingContent[], source: string): { nodes: Text[]; opaqueBefore: Set<number> } {
|
|
134
|
+
const c: ProseCollector = { nodes: [], opaqueBefore: new Set(), pendingOpaque: false, openSkippedTags: [], source }
|
|
63
135
|
for (const child of children) collectProse(child, 0, c)
|
|
64
136
|
return { nodes: c.nodes, opaqueBefore: c.opaqueBefore }
|
|
65
137
|
}
|
|
@@ -77,7 +149,10 @@ export function remarkPunctilio(
|
|
|
77
149
|
nbsp: options.nbsp ?? false,
|
|
78
150
|
}
|
|
79
151
|
|
|
80
|
-
|
|
152
|
+
// `file` is absent when the transformer is called with a bare tree (the
|
|
153
|
+
// Prettier plugin); links are then judged by their text alone.
|
|
154
|
+
return (tree: Root, file?: { toString(): string }) => {
|
|
155
|
+
const source = file?.toString() ?? ""
|
|
81
156
|
visitParents(tree, (node, ancestors) => {
|
|
82
157
|
if (!PHRASING_CONTAINERS.has(node.type)) {
|
|
83
158
|
return
|
|
@@ -93,13 +168,11 @@ export function remarkPunctilio(
|
|
|
93
168
|
return
|
|
94
169
|
}
|
|
95
170
|
|
|
96
|
-
const { nodes, opaqueBefore } = flattenProse(node.children as PhrasingContent[])
|
|
171
|
+
const { nodes, opaqueBefore } = flattenProse(node.children as PhrasingContent[], source)
|
|
97
172
|
|
|
98
|
-
//
|
|
99
|
-
//
|
|
100
|
-
|
|
101
|
-
transformView(buildProseView(group), pluginOptions)
|
|
102
|
-
}
|
|
173
|
+
// Opaque gaps (inline code, images, breaks) become placeholders, so
|
|
174
|
+
// quotes pair across them while no pass rewrites text through them.
|
|
175
|
+
runAcrossOpaqueGaps(nodes, opaqueBefore, (view) => transformView(view, pluginOptions))
|
|
103
176
|
})
|
|
104
177
|
}
|
|
105
178
|
}
|