@qualcomm-ui/mdx-vite 3.6.1 → 3.7.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.
@@ -22,12 +22,17 @@ export declare function resolveLink(url: string, sourcePathname: string): {
22
22
  * Walks the AST and collects all internal links from a parsed MDX page.
23
23
  */
24
24
  export declare function collectLinks(tree: Root, sourceFile: string, sourcePathname: string): CollectedLink[];
25
+ /**
26
+ * Walks the MDX AST and collects explicit HTML anchor IDs that can be used as
27
+ * fragment targets but should not appear in the page ToC.
28
+ */
29
+ export declare function collectAnchorIds(tree: Root): Set<string>;
25
30
  /**
26
31
  * Validates collected links against the fully assembled page map.
27
- * The optional `docPropIds` map provides additional valid fragment targets
28
- * generated by TypeDocProps on each page.
32
+ * The optional ID maps provide additional valid fragment targets generated by
33
+ * TypeDocProps or explicit MDX anchor elements on each page.
29
34
  */
30
- export declare function validateLinks(links: CollectedLink[], pageMap: PageMap, docPropIds?: Record<string, Set<string>>): InvalidLink[];
35
+ export declare function validateLinks(links: CollectedLink[], pageMap: PageMap, docPropIds?: Record<string, Set<string>>, anchorIds?: Record<string, Set<string>>): InvalidLink[];
31
36
  /**
32
37
  * Logs invalid links to the console grouped by source page.
33
38
  */
@@ -1 +1 @@
1
- {"version":3,"file":"link-validator.d.ts","sourceRoot":"","sources":["../../src/docs-plugin/link-validator.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAO,IAAI,EAAC,MAAM,OAAO,CAAA;AAIrC,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,yBAAyB,CAAA;AAEpD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,WAAY,SAAQ,aAAa;IAChD,MAAM,EAAE,oBAAoB,GAAG,gBAAgB,CAAA;CAChD;AAQD;;;GAGG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,MAAM,EACX,cAAc,EAAE,MAAM,GACrB;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAC,GAAG,IAAI,CA0B9C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,GACrB,aAAa,EAAE,CAmBjB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,aAAa,EAAE,EACtB,OAAO,EAAE,OAAO,EAChB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,GACvC,WAAW,EAAE,CAqBf;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,WAAW,EAAE,GAAG,IAAI,CA4BpE"}
1
+ {"version":3,"file":"link-validator.d.ts","sourceRoot":"","sources":["../../src/docs-plugin/link-validator.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAO,IAAI,EAAC,MAAM,OAAO,CAAA;AASrC,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,yBAAyB,CAAA;AAEpD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,WAAY,SAAQ,aAAa;IAChD,MAAM,EAAE,oBAAoB,GAAG,gBAAgB,CAAA;CAChD;AAQD;;;GAGG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,MAAM,EACX,cAAc,EAAE,MAAM,GACrB;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAC,GAAG,IAAI,CA0B9C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,GACrB,aAAa,EAAE,CAmBjB;AAcD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAkBxD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,aAAa,EAAE,EACtB,OAAO,EAAE,OAAO,EAChB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EACxC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,GACtC,WAAW,EAAE,CAsBf;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,WAAW,EAAE,GAAG,IAAI,CA4BpE"}
@@ -1,6 +1,7 @@
1
1
  import type { PageFrontmatter } from "@qualcomm-ui/mdx-common";
2
2
  import type { QuiPropTypes } from "@qualcomm-ui/typedoc-common";
3
3
  import type { PageTimestampMetadataMode } from "../config";
4
+ import type { CollectedLink } from "../link-validator";
4
5
  import type { IndexedPage, IndexedSection } from "./markdown.types";
5
6
  export interface GitMetadata {
6
7
  updatedBy?: string;
@@ -12,6 +13,7 @@ export interface GitMetadata {
12
13
  */
13
14
  export declare function buildGitMetadataMap(srcDir: string, mode: PageTimestampMetadataMode): Map<string, GitMetadata>;
14
15
  interface PageCache {
16
+ collectedLinks: CollectedLink[];
15
17
  frontmatter: PageFrontmatter;
16
18
  md5: string;
17
19
  page: IndexedPage;
@@ -1 +1 @@
1
- {"version":3,"file":"markdown-file-reader.d.ts","sourceRoot":"","sources":["../../../src/docs-plugin/markdown/markdown-file-reader.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,yBAAyB,CAAA;AAC5D,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,6BAA6B,CAAA;AAE7D,OAAO,KAAK,EAAC,yBAAyB,EAAC,MAAM,WAAW,CAAA;AAGxD,OAAO,KAAK,EAAC,WAAW,EAAE,cAAc,EAAC,MAAM,kBAAkB,CAAA;AAEjE,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,yBAAyB,GAC9B,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAsC1B;AAED,UAAU,SAAS;IACjB,WAAW,EAAE,eAAe,CAAA;IAC5B,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,WAAW,CAAA;IACjB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IAC1C,mBAAmB,EAAE,cAAc,EAAE,CAAA;CACtC;AAED,qBAAa,aAAa;IAOf,OAAO,EAAE,OAAO;IAChB,qBAAqB,EAAE,yBAAyB;IAPzD,eAAe,SAAI;IACnB,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAY;IACpD,WAAW,UAAO;IAClB,OAAO,CAAC,QAAQ,CAAgC;gBAGvC,OAAO,EAAE,OAAO,EAChB,qBAAqB,GAAE,yBAAiC;IAGjE,OAAO,CAAC,IAAI;IAIZ,KAAK,IAAI,IAAI;IAIb,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAI7C,OAAO,CAAC,UAAU;IAyBlB,OAAO,CAAC,gBAAgB;IAsDxB,OAAO,CAAC,qBAAqB;IA6B7B;;;OAGG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG;QAC9B,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,SAAS,CAAA;QAC1C,YAAY,EAAE,MAAM,CAAA;QACpB,WAAW,EAAE,eAAe,CAAA;KAC7B;IAYD,WAAW,CACT,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,GAChC,IAAI;CAKR"}
1
+ {"version":3,"file":"markdown-file-reader.d.ts","sourceRoot":"","sources":["../../../src/docs-plugin/markdown/markdown-file-reader.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,yBAAyB,CAAA;AAC5D,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,6BAA6B,CAAA;AAE7D,OAAO,KAAK,EAAC,yBAAyB,EAAC,MAAM,WAAW,CAAA;AACxD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAA;AAGpD,OAAO,KAAK,EAAC,WAAW,EAAE,cAAc,EAAC,MAAM,kBAAkB,CAAA;AAEjE,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,yBAAyB,GAC9B,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAsC1B;AAED,UAAU,SAAS;IACjB,cAAc,EAAE,aAAa,EAAE,CAAA;IAC/B,WAAW,EAAE,eAAe,CAAA;IAC5B,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,WAAW,CAAA;IACjB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IAC1C,mBAAmB,EAAE,cAAc,EAAE,CAAA;CACtC;AAED,qBAAa,aAAa;IAOf,OAAO,EAAE,OAAO;IAChB,qBAAqB,EAAE,yBAAyB;IAPzD,eAAe,SAAI;IACnB,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAY;IACpD,WAAW,UAAO;IAClB,OAAO,CAAC,QAAQ,CAAgC;gBAGvC,OAAO,EAAE,OAAO,EAChB,qBAAqB,GAAE,yBAAiC;IAGjE,OAAO,CAAC,IAAI;IAIZ,KAAK,IAAI,IAAI;IAIb,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAI7C,OAAO,CAAC,UAAU;IA0BlB,OAAO,CAAC,gBAAgB;IAsDxB,OAAO,CAAC,qBAAqB;IA6B7B;;;OAGG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG;QAC9B,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,SAAS,CAAA;QAC1C,YAAY,EAAE,MAAM,CAAA;QACpB,WAAW,EAAE,eAAe,CAAA;KAC7B;IAYD,WAAW,CACT,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,GAChC,IAAI;CAKR"}
@@ -1 +1 @@
1
- {"version":3,"file":"mdx-plugins.d.ts","sourceRoot":"","sources":["../../src/docs-plugin/mdx-plugins.ts"],"names":[],"mappings":"AAGA,OAAoB,EAAC,KAAK,kBAAkB,EAAC,MAAM,iBAAiB,CAAA;AAWpE,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,OAAO,CAAA;AAC3C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,SAAS,CAAA;AAW1C,OAAO,EAAe,KAAK,mBAAmB,EAAC,MAAM,UAAU,CAAA;AAa/D,MAAM,WAAW,sBAAuB,SAAQ,mBAAmB;IACjE,kBAAkB,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;CACjD;AAED,wBAAgB,oBAAoB,IAAI,gBAAgB,EAAE,CAWzD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,GAAE,sBAA2B,GACnC,aAAa,CAyBf;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAahD"}
1
+ {"version":3,"file":"mdx-plugins.d.ts","sourceRoot":"","sources":["../../src/docs-plugin/mdx-plugins.ts"],"names":[],"mappings":"AAGA,OAAoB,EAAC,KAAK,kBAAkB,EAAC,MAAM,iBAAiB,CAAA;AAWpE,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,OAAO,CAAA;AAC3C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,SAAS,CAAA;AAW1C,OAAO,EAAe,KAAK,mBAAmB,EAAC,MAAM,UAAU,CAAA;AAa/D,MAAM,WAAW,sBAAuB,SAAQ,mBAAmB;IACjE,kBAAkB,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;CACjD;AAED,wBAAgB,oBAAoB,IAAI,gBAAgB,EAAE,CAWzD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,GAAE,sBAA2B,GACnC,aAAa,CA0Bf;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAahD"}
@@ -13,6 +13,7 @@ export declare class SearchIndexer {
13
13
  private readonly allowedHeadings;
14
14
  private readonly metaJson;
15
15
  private _collectedLinks;
16
+ private _anchorIds;
16
17
  private _docPropIds;
17
18
  private readonly routeMetaNav;
18
19
  readonly config: SearchIndexerOptions;
@@ -1 +1 @@
1
- {"version":3,"file":"search-indexer.d.ts","sourceRoot":"","sources":["../../src/docs-plugin/search-indexer.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,OAAO,EAEP,OAAO,EACP,WAAW,EAEZ,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,6BAA6B,CAAA;AAG7D,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,UAAU,CAAA;AAClD,OAAO,EAAC,eAAe,EAAC,MAAM,aAAa,CAAA;AAO3C,OAAO,EAEL,KAAK,eAAe,EAKpB,aAAa,EACd,MAAM,YAAY,CAAA;AACnB,OAAO,EAEL,gBAAgB,EACjB,MAAM,wCAAwC,CAAA;AAC/C,OAAO,EAML,UAAU,EAEX,MAAM,eAAe,CAAA;AAItB,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IACjD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;IACnD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAa;IAC7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAC5C,OAAO,CAAC,eAAe,CAAsB;IAC7C,OAAO,CAAC,WAAW,CAAkC;IACrD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA2C;IACxE,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAA;IACrC,WAAW,EAAE,OAAO,CAAA;IAEpB,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,IAAI,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAE/D;IACD,OAAO,CAAC,aAAa,CAAmD;IAExE,IAAI,YAAY,IAAI,MAAM,CAEzB;IACD,OAAO,CAAC,aAAa,CAAY;IAEjC,IAAI,QAAQ,IAAI,OAAO,EAAE,CAExB;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IACD,OAAO,CAAC,QAAQ,CAAc;IAE9B,IAAI,WAAW,IAAI,WAAW,EAAE,CAE/B;IACD,OAAO,CAAC,YAAY,CAAoB;IAExC,KAAK,IAAI,IAAI;gBASX,MAAM,EAAE,oBAAoB,EAC5B,WAAW,UAAO,EAElB,MAAM,GAAE;QACN,eAAe,CAAC,EAAE,eAAe,CAAA;QACjC,aAAa,CAAC,EAAE,aAAa,CAAA;QAC7B,UAAU,CAAC,EAAE,UAAU,CAAA;QACvB,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;KAC/B;IA+BR;;;OAGG;IACH,OAAO,CAAC,YAAY;IAgEpB;;;OAGG;IACH,OAAO,CAAC,cAAc;IAgKtB,OAAO,CAAC,qBAAqB;IAiB7B,OAAO,CAAC,qBAAqB;IAoB7B,OAAO,CAAC,cAAc;IAqBtB,UAAU,CACR,aAAa,EAAE,MAAM,EAAE,EACvB,WAAW,GAAE,OAAc,GAC1B,eAAe,EAAE;CAsDrB"}
1
+ {"version":3,"file":"search-indexer.d.ts","sourceRoot":"","sources":["../../src/docs-plugin/search-indexer.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,OAAO,EAEP,OAAO,EACP,WAAW,EAEZ,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,6BAA6B,CAAA;AAG7D,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,UAAU,CAAA;AAClD,OAAO,EAAC,eAAe,EAAC,MAAM,aAAa,CAAA;AAQ3C,OAAO,EAEL,KAAK,eAAe,EAKpB,aAAa,EACd,MAAM,YAAY,CAAA;AACnB,OAAO,EAEL,gBAAgB,EACjB,MAAM,wCAAwC,CAAA;AAC/C,OAAO,EAML,UAAU,EAEX,MAAM,eAAe,CAAA;AAItB,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IACjD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;IACnD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAa;IAC7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAC5C,OAAO,CAAC,eAAe,CAAsB;IAC7C,OAAO,CAAC,UAAU,CAAkC;IACpD,OAAO,CAAC,WAAW,CAAkC;IACrD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA2C;IACxE,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAA;IACrC,WAAW,EAAE,OAAO,CAAA;IAEpB,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,IAAI,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAE/D;IACD,OAAO,CAAC,aAAa,CAAmD;IAExE,IAAI,YAAY,IAAI,MAAM,CAEzB;IACD,OAAO,CAAC,aAAa,CAAY;IAEjC,IAAI,QAAQ,IAAI,OAAO,EAAE,CAExB;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IACD,OAAO,CAAC,QAAQ,CAAc;IAE9B,IAAI,WAAW,IAAI,WAAW,EAAE,CAE/B;IACD,OAAO,CAAC,YAAY,CAAoB;IAExC,KAAK,IAAI,IAAI;gBAUX,MAAM,EAAE,oBAAoB,EAC5B,WAAW,UAAO,EAElB,MAAM,GAAE;QACN,eAAe,CAAC,EAAE,eAAe,CAAA;QACjC,aAAa,CAAC,EAAE,aAAa,CAAA;QAC7B,UAAU,CAAC,EAAE,UAAU,CAAA;QACvB,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;KAC/B;IA+BR;;;OAGG;IACH,OAAO,CAAC,YAAY;IAgEpB;;;OAGG;IACH,OAAO,CAAC,cAAc;IA8KtB,OAAO,CAAC,qBAAqB;IAiB7B,OAAO,CAAC,qBAAqB;IAoB7B,OAAO,CAAC,cAAc;IAqBtB,UAAU,CACR,aAAa,EAAE,MAAM,EAAE,EACvB,WAAW,GAAE,OAAc,GAC1B,eAAe,EAAE;CAuDrB"}
package/dist/index.js CHANGED
@@ -297,6 +297,7 @@ var MdxFileReader = class {
297
297
  }
298
298
  this.cachedFileCount++;
299
299
  return {
300
+ collectedLinks: cached.collectedLinks,
300
301
  frontmatter: cached.frontmatter,
301
302
  page: cached.page,
302
303
  pageDocProps: cached.pageDocProps,
@@ -3249,7 +3250,28 @@ function collectLinks(tree, sourceFile, sourcePathname) {
3249
3250
  });
3250
3251
  return links;
3251
3252
  }
3252
- function validateLinks(links, pageMap, docPropIds) {
3253
+ function getLiteralAttributeValue(node, name) {
3254
+ const attr = node.attributes.find(
3255
+ (attribute) => attribute.type === "mdxJsxAttribute" && attribute.name === name
3256
+ );
3257
+ return typeof attr?.value === "string" ? attr.value : void 0;
3258
+ }
3259
+ function collectAnchorIds(tree) {
3260
+ const anchorIds = /* @__PURE__ */ new Set();
3261
+ const collectAnchorId = (node) => {
3262
+ if (node.name !== "a") {
3263
+ return;
3264
+ }
3265
+ const id = getLiteralAttributeValue(node, "id");
3266
+ if (id) {
3267
+ anchorIds.add(id);
3268
+ }
3269
+ };
3270
+ visit18(tree, "mdxJsxFlowElement", collectAnchorId);
3271
+ visit18(tree, "mdxJsxTextElement", collectAnchorId);
3272
+ return anchorIds;
3273
+ }
3274
+ function validateLinks(links, pageMap, docPropIds, anchorIds) {
3253
3275
  const invalid = [];
3254
3276
  for (const link of links) {
3255
3277
  const page = pageMap[link.targetPathname];
@@ -3260,7 +3282,8 @@ function validateLinks(links, pageMap, docPropIds) {
3260
3282
  if (link.fragment) {
3261
3283
  const inToc = page.toc?.some((h) => h.id === link.fragment);
3262
3284
  const inDocProps = docPropIds?.[link.targetPathname]?.has(link.fragment);
3263
- if (!inToc && !inDocProps) {
3285
+ const inAnchorIds = anchorIds?.[link.targetPathname]?.has(link.fragment);
3286
+ if (!inToc && !inDocProps && !inAnchorIds) {
3264
3287
  invalid.push({ ...link, reason: "fragment-not-found" });
3265
3288
  }
3266
3289
  }
@@ -3301,6 +3324,7 @@ var SearchIndexer = class {
3301
3324
  allowedHeadings;
3302
3325
  metaJson;
3303
3326
  _collectedLinks = [];
3327
+ _anchorIds = {};
3304
3328
  _docPropIds = {};
3305
3329
  routeMetaNav = {};
3306
3330
  config;
@@ -3330,6 +3354,7 @@ var SearchIndexer = class {
3330
3354
  reset() {
3331
3355
  this.mdxFileReader.reset();
3332
3356
  this._collectedLinks = [];
3357
+ this._anchorIds = {};
3333
3358
  this._docPropIds = {};
3334
3359
  this._pageMap = {};
3335
3360
  this._searchIndex = [];
@@ -3426,9 +3451,22 @@ var SearchIndexer = class {
3426
3451
  }
3427
3452
  this._pageMap[defaultSection.pathname] = defaultSection;
3428
3453
  let indexedPage;
3454
+ let collectedLinks = [];
3429
3455
  try {
3456
+ if (this.config.validatePageLinks) {
3457
+ const anchorTree = createRemarkProcessor({
3458
+ frontmatter: true,
3459
+ mdx: true
3460
+ }).parse(fileContents);
3461
+ const anchorIds = collectAnchorIds(anchorTree);
3462
+ if (anchorIds.size) {
3463
+ this._anchorIds[defaultSection.pathname] = anchorIds;
3464
+ }
3465
+ }
3430
3466
  if (cached?.page) {
3431
3467
  indexedPage = cached.page;
3468
+ collectedLinks = cached.collectedLinks;
3469
+ this._collectedLinks.push(...collectedLinks);
3432
3470
  } else {
3433
3471
  const processor = createRemarkProcessor({
3434
3472
  alerts: true,
@@ -3442,9 +3480,8 @@ var SearchIndexer = class {
3442
3480
  });
3443
3481
  const tree = processor.runSync(processor.parse(fileContents));
3444
3482
  if (this.config.validatePageLinks) {
3445
- this._collectedLinks.push(
3446
- ...collectLinks(tree, filePath, defaultSection.pathname)
3447
- );
3483
+ collectedLinks = collectLinks(tree, filePath, defaultSection.pathname);
3484
+ this._collectedLinks.push(...collectedLinks);
3448
3485
  }
3449
3486
  const pageInfo = {
3450
3487
  frontmatter,
@@ -3504,6 +3541,7 @@ var SearchIndexer = class {
3504
3541
  }
3505
3542
  if (!cached) {
3506
3543
  this.mdxFileReader.updateCache(filePath, fileContents, {
3544
+ collectedLinks,
3507
3545
  frontmatter,
3508
3546
  page: indexedPage,
3509
3547
  pageDocProps: docProps,
@@ -3601,7 +3639,8 @@ var SearchIndexer = class {
3601
3639
  const invalidLinks = validateLinks(
3602
3640
  this._collectedLinks,
3603
3641
  this._pageMap,
3604
- this._docPropIds
3642
+ this._docPropIds,
3643
+ this._anchorIds
3605
3644
  );
3606
3645
  reportInvalidLinks(invalidLinks);
3607
3646
  }
@@ -4356,7 +4395,8 @@ function getRehypePlugins(options = {}) {
4356
4395
  merge(
4357
4396
  {
4358
4397
  defaultColor: "light-dark()",
4359
- fallbackLanguage: "text",
4398
+ defaultLanguage: "plaintext",
4399
+ fallbackLanguage: "plaintext",
4360
4400
  themes: {
4361
4401
  dark: quiCustomDarkTheme,
4362
4402
  light: "github-light-high-contrast"