@dogsbay/format-obsidian 0.2.0-beta.1 → 0.2.0-beta.101

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/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAuB,MAAM,gBAAgB,CAAC;AAKxE,eAAO,MAAM,MAAM,EAAE,YAiDpB,CAAC"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAuB,MAAM,gBAAgB,CAAC;AAKxE,eAAO,MAAM,MAAM,EAAE,YAyEpB,CAAC"}
package/dist/cli.js CHANGED
@@ -1,4 +1,4 @@
1
- import { existsSync, mkdirSync, writeFileSync, cpSync, readdirSync, statSync } from "node:fs";
1
+ import { existsSync, mkdirSync, writeFileSync, readFileSync, cpSync, readdirSync, statSync } from "node:fs";
2
2
  import { join, dirname, resolve, relative } from "node:path";
3
3
  import { fileURLToPath } from "node:url";
4
4
  import { exportObsidianVault } from "./project.js";
@@ -12,6 +12,7 @@ export const plugin = {
12
12
  exportOptions: [
13
13
  { flags: "--tabs <mode>", description: "Tab handling: dogsbay-tabs (default) or flatten", default: "dogsbay-tabs" },
14
14
  { flags: "--plugin <mode>", description: "Plugin setup: bundled (copy into vault), registry (list only), none", default: "bundled" },
15
+ { flags: "--graph-groups <path>", description: "JSON file of graph-view colour groups: [{ \"query\": \"path:guides\", \"color\": \"#F2B36F\" }]. Replaces the default hub group. Ignored if the vault already has a graph.json" },
15
16
  ],
16
17
  async export(pages, nav, output, opts) {
17
18
  const pluginMode = opts.plugin ?? "bundled";
@@ -26,7 +27,28 @@ export const plugin = {
26
27
  writeFileSync(fullPath, content);
27
28
  }
28
29
  console.log(`Generated ${result.files.size} vault files`);
29
- // Copy images from source docs directory into vault
30
+ // Mounted asset dirs (a Starlight `src/assets`, a Docusaurus `static/`),
31
+ // copied to `_assets/` to match the `/_assets/…` refs importers rewrite
32
+ // image paths to. Without this the vault carried the reference and not the
33
+ // file — the note renders with a broken image and nothing reports it.
34
+ const mounts = opts.assetMounts;
35
+ for (const mount of mounts ?? []) {
36
+ if (!existsSync(mount.dir))
37
+ continue;
38
+ const dest = mount.into ? join(output, "_assets", mount.into) : join(output, "_assets");
39
+ mkdirSync(dest, { recursive: true });
40
+ // `mediaOnly` mounts are whole docs trees (the Docusaurus and VitePress
41
+ // importers mount their entire docs dir this way) — copying them wholesale
42
+ // buries hundreds of duplicate .md/.mdx notes under _assets/. Take only
43
+ // the media, matching format-dogsbay-md's copyMediaTree.
44
+ if (mount.mediaOnly) {
45
+ copyMediaTree(mount.dir, dest);
46
+ continue;
47
+ }
48
+ cpSync(mount.dir, dest, { recursive: true });
49
+ }
50
+ // Co-located images from the source docs directory (the mkdocs shape,
51
+ // where media sits next to the markdown rather than in its own tree).
30
52
  const sourceDir = opts.sourceDir;
31
53
  if (sourceDir) {
32
54
  copyImages(sourceDir, output);
@@ -38,8 +60,8 @@ export const plugin = {
38
60
  else if (pluginMode === "registry") {
39
61
  installRegistryRef(output);
40
62
  }
41
- // Pre-configure Front Matter Title plugin (graph view shows title, not filename)
42
- installFrontMatterTitleConfig(output);
63
+ // Pre-configure graph view: colour groups + forces tuned for a docs vault
64
+ installGraphConfig(output, opts.graphGroups);
43
65
  },
44
66
  };
45
67
  /**
@@ -72,12 +94,17 @@ function installBundledPlugin(vaultDir) {
72
94
  * Write .obsidian/community-plugins.json listing the plugin.
73
95
  * Obsidian will prompt the user to install it from the registry.
74
96
  */
75
- /** Recommended community plugins — listed so Obsidian prompts to install them */
76
- const FRONT_MATTER_TITLE_ID = "obsidian-front-matter-title-plugin";
77
- const RECOMMENDED_PLUGINS = [
78
- PLUGIN_ID,
79
- FRONT_MATTER_TITLE_ID, // Shows frontmatter title in graph view instead of filename
80
- ];
97
+ /**
98
+ * Plugins listed in community-plugins.json.
99
+ *
100
+ * Only plugins the vault actually SHIPS belong here. Listing one we don't
101
+ * bundle made Obsidian report it as enabled while nothing loaded — the vault
102
+ * carried a data.json for Front Matter Title and no plugin, so graph labels
103
+ * silently fell back to filenames. Section notes are named `_<folder>.md` for
104
+ * exactly that reason, and readers who want frontmatter titles everywhere can
105
+ * install Front Matter Title themselves (see docs/obsidian-vaults.md).
106
+ */
107
+ const RECOMMENDED_PLUGINS = [PLUGIN_ID];
81
108
  function installRegistryRef(vaultDir) {
82
109
  const obsidianDir = join(vaultDir, ".obsidian");
83
110
  mkdirSync(obsidianDir, { recursive: true });
@@ -85,29 +112,85 @@ function installRegistryRef(vaultDir) {
85
112
  console.log(`Listed plugins in community-plugins.json: ${RECOMMENDED_PLUGINS.join(", ")}`);
86
113
  }
87
114
  /**
88
- * Pre-configure Front Matter Title plugin so graph view shows titles.
89
- * User still needs to install the plugin from community browser,
90
- * but the settings will be ready when they do.
115
+ * Read `--graph-groups <path>`: `[{ "query": "path:guides", "color": "#F2B36F" }]`.
116
+ *
117
+ * Colours are accepted as `#RRGGBB`, `RRGGBB`, or a raw number, and converted
118
+ * to the decimal int Obsidian stores — asking an author to write `15905647`
119
+ * would be a needless papercut.
120
+ *
121
+ * Throws on a malformed file rather than silently shipping the default: a
122
+ * caller who passed the flag wants THEIR groups, and a quiet fallback would
123
+ * look like the flag being ignored.
91
124
  */
92
- function installFrontMatterTitleConfig(vaultDir) {
93
- const configDir = join(vaultDir, ".obsidian", "plugins", FRONT_MATTER_TITLE_ID);
94
- mkdirSync(configDir, { recursive: true });
95
- const settings = {
96
- templates: {
97
- common: { main: "title", fallback: "fallback_title" },
98
- },
99
- features: {
100
- graph: { enabled: true, templates: { main: "", fallback: "" } },
101
- explorer: { enabled: true, templates: { main: "", fallback: "" } },
102
- tab: { enabled: true, templates: { main: "", fallback: "" } },
103
- },
104
- };
105
- writeFileSync(join(configDir, "data.json"), JSON.stringify(settings, null, 2) + "\n");
125
+ function readGraphGroups(path) {
126
+ let raw;
127
+ try {
128
+ raw = JSON.parse(readFileSync(path, "utf8"));
129
+ }
130
+ catch (err) {
131
+ throw new Error(`--graph-groups: could not parse ${path} as JSON: ${err.message}`);
132
+ }
133
+ if (!Array.isArray(raw)) {
134
+ throw new Error(`--graph-groups: ${path} must contain a JSON array of { query, color }`);
135
+ }
136
+ return raw.map((entry, i) => {
137
+ const g = entry;
138
+ if (!g || typeof g.query !== "string" || !g.query) {
139
+ throw new Error(`--graph-groups: entry ${i} needs a non-empty "query" string`);
140
+ }
141
+ let rgb;
142
+ if (typeof g.color === "number") {
143
+ rgb = g.color;
144
+ }
145
+ else if (typeof g.color === "string") {
146
+ const hex = g.color.replace(/^#/, "");
147
+ if (!/^[0-9a-fA-F]{6}$/.test(hex)) {
148
+ throw new Error(`--graph-groups: entry ${i} colour "${g.color}" is not #RRGGBB`);
149
+ }
150
+ rgb = parseInt(hex, 16);
151
+ }
152
+ else {
153
+ throw new Error(`--graph-groups: entry ${i} needs a "color" (#RRGGBB or a number)`);
154
+ }
155
+ return { query: g.query, color: { a: 1, rgb } };
156
+ });
157
+ }
158
+ function installGraphConfig(vaultDir, groupsPath) {
159
+ const obsidianDir = join(vaultDir, ".obsidian");
160
+ const graphPath = join(obsidianDir, "graph.json");
161
+ if (existsSync(graphPath))
162
+ return; // the reader's own view state — leave it
163
+ const colorGroups = groupsPath
164
+ ? readGraphGroups(groupsPath)
165
+ : // Default: only the group that is true of EVERY Dogsbay vault. Anything
166
+ // corpus-specific (a genre axis, a per-book split) belongs to whoever
167
+ // knows the corpus — pass --graph-groups for those.
168
+ [{ query: "file:/^_/", color: { a: 1, rgb: 0xf2b3_6f } }];
169
+ mkdirSync(obsidianDir, { recursive: true });
170
+ writeFileSync(graphPath, JSON.stringify({
171
+ "collapse-filter": false,
172
+ search: "",
173
+ showTags: false,
174
+ showAttachments: false,
175
+ hideUnresolved: true, // unresolved links are noise, not nodes
176
+ showOrphans: true,
177
+ "collapse-color-groups": false,
178
+ colorGroups,
179
+ "collapse-display": true,
180
+ showArrow: true, // direction matters when hubs point outward
181
+ textFadeMultiplier: -1.5, // labels only when zoomed in; a docs vault is dense
182
+ nodeSizeMultiplier: 0.9,
183
+ lineSizeMultiplier: 0.7,
184
+ "collapse-forces": true,
185
+ centerStrength: 0.5,
186
+ repelStrength: 7, // below the default 10 — let clusters tighten
187
+ linkStrength: 1,
188
+ linkDistance: 180,
189
+ scale: 1,
190
+ close: false,
191
+ }, null, 2) + "\n");
192
+ console.log("Pre-configured graph view (.obsidian/graph.json)");
106
193
  }
107
- /**
108
- * Copy images from source docs directory into the vault root.
109
- * Image paths in markdown (e.g. /img/foo.png) become relative vault paths.
110
- */
111
194
  function copyImages(sourceDir, vaultDir) {
112
195
  const imageExts = new Set([".png", ".jpg", ".jpeg", ".gif", ".svg", ".webp"]);
113
196
  let count = 0;
@@ -158,4 +241,30 @@ function resolvePluginDist() {
158
241
  }
159
242
  return null;
160
243
  }
244
+ /** Media extensions carried across for a `mediaOnly` mount — mirrors format-dogsbay-md. */
245
+ const MEDIA_EXTS = new Set([
246
+ ".png", ".jpg", ".jpeg", ".gif", ".webp", ".avif",
247
+ ".svg", ".ico", ".pdf", ".mp4", ".webm",
248
+ ]);
249
+ /**
250
+ * Copy only media files out of a mount, preserving its subtree shape.
251
+ *
252
+ * A `mediaOnly` mount is a whole docs directory (Docusaurus and VitePress both
253
+ * mount theirs that way), so a recursive copy would bury every `.md`/`.mdx` in
254
+ * the source under `_assets/` as duplicate notes.
255
+ */
256
+ function copyMediaTree(srcDir, destDir) {
257
+ for (const entry of readdirSync(srcDir, { withFileTypes: true })) {
258
+ const full = join(srcDir, entry.name);
259
+ if (entry.isDirectory()) {
260
+ copyMediaTree(full, join(destDir, entry.name));
261
+ continue;
262
+ }
263
+ const dot = entry.name.lastIndexOf(".");
264
+ if (dot === -1 || !MEDIA_EXTS.has(entry.name.slice(dot).toLowerCase()))
265
+ continue;
266
+ mkdirSync(destDir, { recursive: true });
267
+ cpSync(full, join(destDir, entry.name));
268
+ }
269
+ }
161
270
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/project.d.ts CHANGED
@@ -2,19 +2,66 @@
2
2
  * Obsidian vault exporter.
3
3
  *
4
4
  * Takes ExportPage[] + NavItem[] and generates a complete Obsidian vault
5
- * with folder structure from nav, sidebar_position frontmatter, _index.md
5
+ * with folder structure from nav, sidebar_position frontmatter, folder notes
6
6
  * per section, and _nav.yml for lossless round-trip.
7
7
  */
8
8
  import type { ExportPage, NavItem } from "@dogsbay/types";
9
9
  export interface ObsidianVaultOptions {
10
10
  vaultName?: string;
11
- assetsDir?: string;
12
11
  /** Section name — pages go under this subfolder, nav gets a top-level entry */
13
12
  section?: string;
13
+ /**
14
+ * Emit a `_<folder>.md` folder note per nav section (default `true`).
15
+ *
16
+ * These are **invented by this exporter** — no source format supplies them,
17
+ * and they do not appear in `_nav.yml` (a section is a label-only nav entry
18
+ * with no path), so the folder note is the only thing that makes a section
19
+ * addressable at all.
20
+ *
21
+ * Measured on the OpenShift 4.22 vault (2,105 notes), they are load-bearing
22
+ * once populated — they carry the nav as real links, and are the sole
23
+ * inbound link for ~470 content pages that no prose links to:
24
+ *
25
+ * | | notes | edges | no inbound | isolated |
26
+ * |---|---|---|---|---|
27
+ * | with, populated | 2,105 | 6,954 | 44 | 0 |
28
+ * | without | 1,796 | 4,893 | 523 | 278 |
29
+ *
30
+ * Set `false` for a vault that mirrors the source exactly — at the cost of
31
+ * the folder-click affordance and the nav-as-links layer.
32
+ */
33
+ sectionIndexes?: boolean;
34
+ /**
35
+ * Give every folder note a body listing its children (default `true`).
36
+ * Ignored when `sectionIndexes` is `false`.
37
+ *
38
+ * Without it a section index is frontmatter and nothing else: clicking a
39
+ * folder in Obsidian yields a title and white space, and the note has no
40
+ * outbound links, so it sits outside the graph. On the OpenShift 4.22 export
41
+ * that was 309 of 309 section indexes with zero links — the entire outer
42
+ * ring of orphans in the graph view.
43
+ *
44
+ * The listing is ordinary markdown links, so it also feeds backlinks, the
45
+ * local graph, and any consumer that reads links rather than a nav file.
46
+ *
47
+ * Set `false` to keep the frontmatter-only stubs (previous behaviour).
48
+ */
49
+ sectionIndexLinks?: boolean;
14
50
  }
15
51
  export interface ObsidianVaultExport {
16
52
  files: Map<string, string>;
17
53
  }
54
+ /**
55
+ * Path of a section's folder note.
56
+ *
57
+ * Named `_<folder>.md`, not `_index.md`: Obsidian labels graph nodes and tabs
58
+ * by FILENAME, so a vault of 309 sections showed 309 identical `_index` nodes.
59
+ * The leading underscore keeps the note sorted to the top of its folder and
60
+ * distinguishes it from a content page that shares the folder's name — 20
61
+ * sections in the OpenShift corpus contain `<folder>/<folder>.md`, so the bare
62
+ * folder name would collide. No page in that corpus starts with `_`.
63
+ */
64
+ export declare function sectionNotePath(folderPath: string): string;
18
65
  /**
19
66
  * Export pages + nav to an Obsidian vault file map.
20
67
  */
@@ -1 +1 @@
1
- {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAG1D,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,UAAU,EAAE,EACnB,GAAG,EAAE,OAAO,EAAE,EACd,OAAO,GAAE,oBAAyB,GACjC,mBAAmB,CAwGrB"}
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAG1D,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;;;;;;;;;;;OAcG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5B;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,UAAU,EAAE,EACnB,GAAG,EAAE,OAAO,EAAE,EACd,OAAO,GAAE,oBAAyB,GACjC,mBAAmB,CA6YrB"}