Skip to content

Commit 60a3cb9

Browse files
dmealingclaude
andcommitted
fix(docs-site): use .js extensions on relative imports (Node ESM compat)
The package was ported with extensionless relative imports (from "./site"), which Bun tolerates but Node's ESM resolver rejects (ERR_MODULE_NOT_FOUND) — so `meta docs --site`/`--scaffold-site` crashed from a real Node install even though every in-workspace bun test passed. Add the .js extension to all 46 relative imports, matching the convention every sibling package already uses. Verified: bun tests 40/0, typecheck clean, and `node import()` of the built dist now resolves. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 6d60744 commit 60a3cb9

10 files changed

Lines changed: 46 additions & 46 deletions

File tree

server/typescript/packages/docs-site/src/builders/extras.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { existsSync } from "node:fs";
22
import { join } from "node:path";
3-
import { LinkGraph, fqnOf } from "../link-graph";
3+
import { LinkGraph, fqnOf } from "../link-graph.js";
44

55
export interface EnumRow { owner: string; ownerHref: string; field: string; values: string[]; deflt: string; }
66
export function buildEnumsPage(g: LinkGraph): EnumRow[] {

server/typescript/packages/docs-site/src/builders/index-data.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { LinkGraph, fqnOf } from "../link-graph";
2-
import type { CoverageTracker } from "../coverage";
3-
import { flowchartDomain, packageFlowchart } from "../mermaid";
4-
import { harvestPackageDocs } from "../package-docs";
5-
import { esc } from "../badges";
1+
import { LinkGraph, fqnOf } from "../link-graph.js";
2+
import type { CoverageTracker } from "../coverage.js";
3+
import { flowchartDomain, packageFlowchart } from "../mermaid.js";
4+
import { harvestPackageDocs } from "../package-docs.js";
5+
import { esc } from "../badges.js";
66

77
export interface PkgCard { pkg: string; href: string; objectCount: number; promptCount: number; contractCount: number; purpose: string; }
88
export interface CoreConfig { pin?: string[]; exclude?: string[]; n?: number; }

server/typescript/packages/docs-site/src/builders/object-data.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import type { MetaData } from "@metaobjectsdev/metadata";
2-
import { LinkGraph, fqnOf, type Ref } from "../link-graph";
3-
import type { CoverageTracker } from "../coverage";
4-
import { esc, badge } from "../badges";
5-
import { inheritanceTree, erDiagramRich, flowchartDomain, RICH_MAX, type ErEdge, type ErNode, type ErAttr } from "../mermaid";
2+
import { LinkGraph, fqnOf, type Ref } from "../link-graph.js";
3+
import type { CoverageTracker } from "../coverage.js";
4+
import { esc, badge } from "../badges.js";
5+
import { inheritanceTree, erDiagramRich, flowchartDomain, RICH_MAX, type ErEdge, type ErNode, type ErAttr } from "../mermaid.js";
66

77
// capped box attributes for the rich neighborhood ERD: PK → FKs(target) → enums → required, ≤6 + overflow count
88
function neighborAttrs(o: MetaData): { attrs: ErAttr[]; more: number } {

server/typescript/packages/docs-site/src/builders/output-data.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { existsSync } from "node:fs";
22
import { join } from "node:path";
3-
import { LinkGraph } from "../link-graph";
4-
import type { CoverageTracker } from "../coverage";
5-
import type { CommentDocs } from "../yaml-comments";
6-
import { esc } from "../badges";
3+
import { LinkGraph } from "../link-graph.js";
4+
import type { CoverageTracker } from "../coverage.js";
5+
import type { CommentDocs } from "../yaml-comments.js";
6+
import { esc } from "../badges.js";
77

88
export interface OutputPageData { name: string; pkg: string; href: string; breadcrumbHtml: string; format: string; kind: string; textRef: string; textRefResolves: boolean; payloadName: string; payloadHref: string; desc: string; fields: { name: string; type: string; isArray: boolean; wire: string; note: string; refHtml: string }[]; }
99

server/typescript/packages/docs-site/src/builders/package-data.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import type { MetaData } from "@metaobjectsdev/metadata";
2-
import { LinkGraph, fqnOf } from "../link-graph";
3-
import type { CoverageTracker } from "../coverage";
4-
import { esc } from "../badges";
5-
import { erDiagramRich, flowchartDomain, domainColor, RICH_MAX, type ErEdge, type ErAttr, type ErNode } from "../mermaid";
6-
import { harvestPackageDocs, keyEntities } from "../package-docs";
2+
import { LinkGraph, fqnOf } from "../link-graph.js";
3+
import type { CoverageTracker } from "../coverage.js";
4+
import { esc } from "../badges.js";
5+
import { erDiagramRich, flowchartDomain, domainColor, RICH_MAX, type ErEdge, type ErAttr, type ErNode } from "../mermaid.js";
6+
import { harvestPackageDocs, keyEntities } from "../package-docs.js";
77

88
// capped box attributes for the rich package ERD: PK → FKs(target) → enums → required, ≤6 + overflow count
99
// (mirrors neighborAttrs in object-data.ts — kept local to avoid cross-builder coupling)

server/typescript/packages/docs-site/src/builders/prompt-data.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { existsSync, readFileSync, readdirSync } from "node:fs";
22
import { join, dirname } from "node:path";
3-
import { LinkGraph } from "../link-graph";
4-
import type { CoverageTracker } from "../coverage";
5-
import { highlightMustache } from "../mustache-highlight";
6-
import { esc } from "../badges";
3+
import { LinkGraph } from "../link-graph.js";
4+
import type { CoverageTracker } from "../coverage.js";
5+
import { highlightMustache } from "../mustache-highlight.js";
6+
import { esc } from "../badges.js";
77

88
export interface PayloadTreeRow { indent: number; name: string; type: string; isArray: boolean; anchor: string; desc: string; refHtml: string; }
99
export interface PromptPageData { name: string; pkg: string; href: string; breadcrumbHtml: string; attrsHtml: string; desc: string; payloadName: string; payloadHref: string; payloadTree: PayloadTreeRow[]; sourceHtml?: string | undefined; sourceMissingNote?: string | undefined; tocHtml?: string | undefined; packageFiles: { file: string; html: string }[]; }
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
export { generateSite } from "./site";
2-
export type { SiteOptions, SiteResult } from "./site";
3-
export { SITE_TEMPLATE_NAMES, SITE_ASSET_NAMES, readSiteFile } from "./scaffold";
1+
export { generateSite } from "./site.js";
2+
export type { SiteOptions, SiteResult } from "./site.js";
3+
export { SITE_TEMPLATE_NAMES, SITE_ASSET_NAMES, readSiteFile } from "./scaffold.js";

server/typescript/packages/docs-site/src/link-graph.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type { MetaData, MetaObject, MetaRelationship } from "@metaobjectsdev/metadata";
22
import { deriveM2MFields, stripPackage } from "@metaobjectsdev/metadata";
3-
import { type LoadedModel, treeOf } from "./load";
3+
import { type LoadedModel, treeOf } from "./load.js";
44

55
export interface DocNode { kind: "object" | "prompt" | "output"; name: string; pkg: string; pkgPath: string; href: string; node: MetaData; tree: string; }
66
export interface Ref {

server/typescript/packages/docs-site/src/package-docs.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { readdirSync, readFileSync, statSync } from "node:fs";
22
import { join } from "node:path";
33
import { parse } from "yaml";
4-
import { LinkGraph, fqnOf } from "./link-graph";
4+
import { LinkGraph, fqnOf } from "./link-graph.js";
55

66
export interface PackageDoc { title: string; description: string; }
77

server/typescript/packages/docs-site/src/site.ts

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,24 @@ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
22
import { dirname, join, resolve } from "node:path";
33
import { fileURLToPath } from "node:url";
44
import { render, InMemoryProvider } from "@metaobjectsdev/render";
5-
import { loadModel } from "./load";
6-
import { LinkGraph, fqnOf } from "./link-graph";
7-
import { CoverageTracker } from "./coverage";
8-
import type { CoverageReport } from "./coverage";
9-
import { harvestComments } from "./yaml-comments";
10-
import { buildIndexPage } from "./builders/index-data";
11-
import type { CoreConfig } from "./builders/index-data";
12-
import { buildPackagePage } from "./builders/package-data";
13-
import { buildObjectPage } from "./builders/object-data";
14-
import { buildPromptPage } from "./builders/prompt-data";
15-
import { buildOutputPage } from "./builders/output-data";
16-
import { buildEnumsPage, findAnomalies, buildSearchIndex } from "./builders/extras";
17-
import type { Anomaly } from "./builders/extras";
18-
import { checkLinks } from "./link-check";
19-
import { legendHtml, esc as escBadge } from "./badges";
20-
import type { ObjectPageData } from "./builders/object-data";
21-
import type { PromptPageData } from "./builders/prompt-data";
22-
import type { OutputPageData } from "./builders/output-data";
5+
import { loadModel } from "./load.js";
6+
import { LinkGraph, fqnOf } from "./link-graph.js";
7+
import { CoverageTracker } from "./coverage.js";
8+
import type { CoverageReport } from "./coverage.js";
9+
import { harvestComments } from "./yaml-comments.js";
10+
import { buildIndexPage } from "./builders/index-data.js";
11+
import type { CoreConfig } from "./builders/index-data.js";
12+
import { buildPackagePage } from "./builders/package-data.js";
13+
import { buildObjectPage } from "./builders/object-data.js";
14+
import { buildPromptPage } from "./builders/prompt-data.js";
15+
import { buildOutputPage } from "./builders/output-data.js";
16+
import { buildEnumsPage, findAnomalies, buildSearchIndex } from "./builders/extras.js";
17+
import type { Anomaly } from "./builders/extras.js";
18+
import { checkLinks } from "./link-check.js";
19+
import { legendHtml, esc as escBadge } from "./badges.js";
20+
import type { ObjectPageData } from "./builders/object-data.js";
21+
import type { PromptPageData } from "./builders/prompt-data.js";
22+
import type { OutputPageData } from "./builders/output-data.js";
2323

2424
// ─── Public API ────────────────────────────────────────────────────────────────
2525

0 commit comments

Comments
 (0)