living-documentation 3.4.0 → 3.5.0

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.
@@ -146,6 +146,14 @@
146
146
  </select>
147
147
  <p class="text-xs text-gray-400 dark:text-gray-500">Users can always override with the toggle button.</p>
148
148
  </div>
149
+ <div class="px-5 py-4">
150
+ <label class="flex items-center gap-3 cursor-pointer">
151
+ <input id="field-debug" name="showDiagramDebug" type="checkbox"
152
+ class="w-4 h-4 rounded border-gray-300 dark:border-gray-600 text-blue-600 focus:ring-blue-500" />
153
+ <span class="text-sm font-medium text-gray-700 dark:text-gray-300">Show debug button in diagram editor</span>
154
+ </label>
155
+ <p class="mt-1 text-xs text-gray-400 dark:text-gray-500 ml-7">Displays a Debug button that overlays raw position and size info on each node — useful for diagnosing snap-to-grid issues.</p>
156
+ </div>
149
157
  <div class="px-5 py-4 space-y-1.5">
150
158
  <label class="block text-sm font-medium text-gray-700 dark:text-gray-300" for="field-pattern">Filename Pattern</label>
151
159
  <input id="field-pattern" name="filenamePattern" type="text"
@@ -211,6 +219,7 @@
211
219
  document.getElementById("field-theme").value = cfg.theme || "system";
212
220
  document.getElementById("field-pattern").value =
213
221
  cfg.filenamePattern || "";
222
+ document.getElementById("field-debug").checked = !!cfg.showDiagramDebug;
214
223
  updatePreview(cfg.filenamePattern);
215
224
  initExtraFiles(cfg);
216
225
  } catch {
@@ -236,6 +245,7 @@
236
245
  title: document.getElementById("field-title").value.trim(),
237
246
  theme: document.getElementById("field-theme").value,
238
247
  filenamePattern,
248
+ showDiagramDebug: document.getElementById("field-debug").checked,
239
249
  };
240
250
 
241
251
  try {
@@ -52,6 +52,21 @@
52
52
  .dark #labelInput { background: rgba(17,24,39,.95); color: #f3f4f6; }
53
53
  #labelInput.hidden { display: none; }
54
54
 
55
+ /* Debug overlay layer */
56
+ #debugLayer {
57
+ position: absolute; inset: 0;
58
+ pointer-events: none; z-index: 12; overflow: hidden;
59
+ }
60
+ .debug-box {
61
+ position: absolute; pointer-events: auto;
62
+ font: 10px/1.4 monospace; white-space: pre;
63
+ user-select: text; cursor: text;
64
+ padding: 3px 6px;
65
+ border: 1px solid #f97316; border-radius: 3px;
66
+ color: #c2410c; background: rgba(255,255,255,0.9);
67
+ }
68
+ .dark .debug-box { color: #fbbf24; background: rgba(0,0,0,0.78); }
69
+
55
70
  /* Resize / selection overlay */
56
71
  #selectionOverlay {
57
72
  position: absolute; display: none;
@@ -150,6 +165,9 @@
150
165
  <button onclick="toggleDark()" class="tool-btn"><span id="darkIcon">☽</span></button>
151
166
  <div class="w-px h-6 bg-gray-200 dark:bg-gray-700 mx-0.5"></div>
152
167
 
168
+ <button id="btnDebug" onclick="toggleDebug()" class="hidden tool-btn text-xs font-mono" title="Debug overlay">dbg</button>
169
+ <div id="sepDebug" class="hidden w-px h-6 bg-gray-200 dark:bg-gray-700 mx-0.5"></div>
170
+
153
171
  <button id="btnSave" onclick="saveDiagram()" disabled
154
172
  class="px-3 py-1.5 text-xs font-semibold rounded-lg bg-blue-600 hover:bg-blue-700 text-white disabled:opacity-40 disabled:cursor-not-allowed shrink-0 transition-colors">
155
173
  Enregistrer
@@ -175,6 +193,9 @@
175
193
 
176
194
  <div id="vis-canvas" class="w-full h-full"></div>
177
195
 
196
+ <!-- Debug overlay layer -->
197
+ <div id="debugLayer"></div>
198
+
178
199
  <!-- Selection / resize overlay -->
179
200
  <div id="selectionOverlay">
180
201
  <div id="rh-tl" class="resize-handle" style="top:-5px;left:-5px; cursor:nw-resize;"></div>
@@ -302,6 +323,7 @@
302
323
  let selectedEdgeIds = [];
303
324
  let physicsEnabled = true;
304
325
  let gridEnabled = false;
326
+ let debugMode = false;
305
327
  const GRID_SIZE = 40;
306
328
  let isDirty = false;
307
329
  let sidebarOpen = true;
@@ -498,6 +520,7 @@
498
520
  network.on('dragEnd', onDragEnd);
499
521
  network.on('beforeDrawing', drawGrid);
500
522
  network.on('afterDrawing', updateSelectionOverlay);
523
+ network.on('afterDrawing', () => drawDebugOverlay());
501
524
 
502
525
  document.getElementById('emptyState').classList.add('hidden');
503
526
  updateZoomDisplay();
@@ -886,6 +909,58 @@
886
909
  btn.title = physicsEnabled ? 'Auto-espacement actif' : 'Auto-espacement inactif';
887
910
  }
888
911
 
912
+ // ── Debug overlay ─────────────────────────────────────────────────────────
913
+ function toggleDebug() {
914
+ debugMode = !debugMode;
915
+ document.getElementById('btnDebug').classList.toggle('tool-active', debugMode);
916
+ if (network) network.redraw();
917
+ }
918
+
919
+ function drawDebugOverlay() {
920
+ const layer = document.getElementById('debugLayer');
921
+ if (!debugMode || !network) { layer.innerHTML = ''; return; }
922
+
923
+ // Recycle existing boxes keyed by node id
924
+ const existing = new Map([...layer.querySelectorAll('.debug-box')].map(el => [el.dataset.nid, el]));
925
+ const seen = new Set();
926
+
927
+ for (const id of _canonicalOrder) {
928
+ const bodyNode = network.body.nodes[id];
929
+ if (!bodyNode) continue;
930
+ const w = bodyNode.shape.width || 0;
931
+ const h = bodyNode.shape.height || 0;
932
+ const cx = bodyNode.x;
933
+ const cy = bodyNode.y;
934
+ const L = cx - w / 2;
935
+ const T = cy - h / 2;
936
+
937
+ // DOM position: right edge of the node + offset
938
+ const dom = network.canvasToDOM({ x: cx + w / 2 + 8, y: cy - h / 2 });
939
+
940
+ const text = [
941
+ `id : ${id}`,
942
+ `cx=${Math.round(cx)} cy=${Math.round(cy)}`,
943
+ `w =${Math.round(w)} h =${Math.round(h)}`,
944
+ `L =${Math.round(L)} T =${Math.round(T)}`,
945
+ ].join('\n');
946
+
947
+ let box = existing.get(String(id));
948
+ if (!box) {
949
+ box = document.createElement('div');
950
+ box.className = 'debug-box';
951
+ box.dataset.nid = String(id);
952
+ layer.appendChild(box);
953
+ }
954
+ box.textContent = text;
955
+ box.style.left = Math.round(dom.x) + 'px';
956
+ box.style.top = Math.round(dom.y) + 'px';
957
+ seen.add(String(id));
958
+ }
959
+
960
+ // Remove boxes for deleted nodes
961
+ existing.forEach((el, nid) => { if (!seen.has(nid)) el.remove(); });
962
+ }
963
+
889
964
  // ── Grid ─────────────────────────────────────────────────────────────────
890
965
  function toggleGrid() {
891
966
  gridEnabled = !gridEnabled;
@@ -904,17 +979,16 @@
904
979
  const canvas = ctx.canvas;
905
980
  const W = canvas.width, H = canvas.height;
906
981
 
907
- // Canvas-space grid step
908
- const step = GRID_SIZE * scale;
982
+ // DPR: beforeDrawing ctx is in physical pixels (after setTransform(1,0,0,1,0,0))
983
+ // but center.x/y and scale are in vis.js CSS-pixel space → must multiply by DPR
984
+ const dpr = window.devicePixelRatio || 1;
985
+ const step = GRID_SIZE * scale * dpr;
909
986
 
910
- // Offset so grid aligns to canvas-space multiples of GRID_SIZE
911
- // Use positive modulo to avoid negative offsets when panning left/up
912
- const offsetX = ((W / 2 - center.x * scale) % step + step) % step;
913
- const offsetY = ((H / 2 - center.y * scale) % step + step) % step;
987
+ const offsetX = ((W / 2 - center.x * scale * dpr) % step + step) % step;
988
+ const offsetY = ((H / 2 - center.y * scale * dpr) % step + step) % step;
914
989
 
915
990
  ctx.save();
916
- // Reset transform we work in screen (canvas pixel) space
917
- ctx.setTransform(1, 0, 0, 1, 0, 0);
991
+ ctx.setTransform(1, 0, 0, 1, 0, 0); // physical pixel space
918
992
  ctx.strokeStyle = color;
919
993
  ctx.lineWidth = 1;
920
994
  ctx.beginPath();
@@ -924,16 +998,20 @@
924
998
  ctx.restore();
925
999
  }
926
1000
 
927
- function snapToGrid(v) {
928
- return Math.round(v / GRID_SIZE) * GRID_SIZE;
929
- }
930
-
931
1001
  function onDragEnd(params) {
932
1002
  if (gridEnabled && params.nodes && params.nodes.length > 0) {
933
- const positions = network.getPositions(params.nodes);
934
1003
  params.nodes.forEach(id => {
935
- const p = positions[id];
936
- if (p) network.moveNode(id, snapToGrid(p.x), snapToGrid(p.y));
1004
+ const bodyNode = network.body.nodes[id];
1005
+ if (!bodyNode) return;
1006
+ // shape.width/height are set by resize() during each draw — exact visual size
1007
+ const w = bodyNode.shape.width || 0;
1008
+ const h = bodyNode.shape.height || 0;
1009
+ const cx = bodyNode.x;
1010
+ const cy = bodyNode.y;
1011
+ // Snap the visual top-left corner (x - w/2, y - h/2) to grid lines
1012
+ const snappedLeft = Math.round((cx - w / 2) / GRID_SIZE) * GRID_SIZE;
1013
+ const snappedTop = Math.round((cy - h / 2) / GRID_SIZE) * GRID_SIZE;
1014
+ network.moveNode(id, snappedLeft + w / 2, snappedTop + h / 2);
937
1015
  });
938
1016
  }
939
1017
  markDirty();
@@ -1177,6 +1255,15 @@
1177
1255
  });
1178
1256
 
1179
1257
  // ── Init ──────────────────────────────────────────────────────────────────
1258
+ (async () => {
1259
+ try {
1260
+ const cfg = await fetch('/api/config').then(r => r.json());
1261
+ if (cfg.showDiagramDebug) {
1262
+ document.getElementById('btnDebug').classList.remove('hidden');
1263
+ document.getElementById('sepDebug').classList.remove('hidden');
1264
+ }
1265
+ } catch { /* config non disponible — debug button reste caché */ }
1266
+ })();
1180
1267
  loadDiagramList();
1181
1268
  </script>
1182
1269
  </body>
@@ -5,6 +5,7 @@ export interface LivingDocConfig {
5
5
  theme: 'light' | 'dark' | 'system';
6
6
  port: number;
7
7
  extraFiles: string[];
8
+ showDiagramDebug: boolean;
8
9
  }
9
10
  export declare function getConfigPath(docsPath: string): string;
10
11
  export declare function readConfig(docsPath: string): LivingDocConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/lib/config.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAaD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAY5D;AAED,wBAAgB,WAAW,CACzB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,GAC9B,eAAe,CAMjB"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/lib/config.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAcD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAY5D;AAED,wBAAgB,WAAW,CACzB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,GAC9B,eAAe,CAMjB"}
@@ -16,6 +16,7 @@ const DEFAULTS = {
16
16
  theme: 'system',
17
17
  port: 4321,
18
18
  extraFiles: [],
19
+ showDiagramDebug: false,
19
20
  };
20
21
  function getConfigPath(docsPath) {
21
22
  return path_1.default.join(docsPath, CONFIG_FILENAME);
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/lib/config.ts"],"names":[],"mappings":";;;;;AAuBA,sCAEC;AAED,gCAYC;AAED,kCASC;AAlDD,4CAAoB;AACpB,gDAAwB;AAWxB,MAAM,eAAe,GAAG,kBAAkB,CAAC;AAE3C,MAAM,QAAQ,GAAoB;IAChC,UAAU,EAAE,GAAG;IACf,eAAe,EAAE,6BAA6B;IAC9C,KAAK,EAAE,sBAAsB;IAC7B,KAAK,EAAE,QAAQ;IACf,IAAI,EAAE,IAAI;IACV,UAAU,EAAE,EAAE;CACf,CAAC;AAEF,SAAgB,aAAa,CAAC,QAAgB;IAC5C,OAAO,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;AAC9C,CAAC;AAED,SAAgB,UAAU,CAAC,QAAgB;IACzC,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,CAAC;QACH,IAAI,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,YAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACjD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA6B,CAAC;YAC3D,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAC;QACpC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,mCAAmC;IACrC,CAAC;IACD,OAAO,EAAE,GAAG,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;AAC/C,CAAC;AAED,SAAgB,WAAW,CACzB,QAAgB,EAChB,KAA+B;IAE/B,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,OAAO,GAAoB,EAAE,GAAG,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC;IAC1D,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC3C,YAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACxE,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/lib/config.ts"],"names":[],"mappings":";;;;;AAyBA,sCAEC;AAED,gCAYC;AAED,kCASC;AApDD,4CAAoB;AACpB,gDAAwB;AAYxB,MAAM,eAAe,GAAG,kBAAkB,CAAC;AAE3C,MAAM,QAAQ,GAAoB;IAChC,UAAU,EAAE,GAAG;IACf,eAAe,EAAE,6BAA6B;IAC9C,KAAK,EAAE,sBAAsB;IAC7B,KAAK,EAAE,QAAQ;IACf,IAAI,EAAE,IAAI;IACV,UAAU,EAAE,EAAE;IACd,gBAAgB,EAAE,KAAK;CACxB,CAAC;AAEF,SAAgB,aAAa,CAAC,QAAgB;IAC5C,OAAO,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;AAC9C,CAAC;AAED,SAAgB,UAAU,CAAC,QAAgB;IACzC,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,CAAC;QACH,IAAI,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,YAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACjD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA6B,CAAC;YAC3D,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAC;QACpC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,mCAAmC;IACrC,CAAC;IACD,OAAO,EAAE,GAAG,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;AAC/C,CAAC;AAED,SAAgB,WAAW,CACzB,QAAgB,EAChB,KAA+B;IAE/B,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,OAAO,GAAoB,EAAE,GAAG,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC;IAC1D,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC3C,YAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACxE,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/routes/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAqB,MAAM,SAAS,CAAC;AAIpD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAuDrD"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/routes/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAqB,MAAM,SAAS,CAAC;AAIpD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAwDrD"}
@@ -27,6 +27,7 @@ function configRouter(docsPath) {
27
27
  'title',
28
28
  'filenamePattern',
29
29
  'theme',
30
+ 'showDiagramDebug',
30
31
  ];
31
32
  const safe = {};
32
33
  for (const key of allowed) {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/routes/config.ts"],"names":[],"mappings":";;;;;AAIA,oCAuDC;AA3DD,qCAAoD;AACpD,gDAAwB;AACxB,0CAAyE;AAEzE,SAAgB,YAAY,CAAC,QAAgB;IAC3C,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;IAExB,kBAAkB;IAClB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAa,EAAE,GAAa,EAAE,EAAE;QAC/C,IAAI,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,CAAC;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,kBAAkB;IAClB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;QAC9C,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,GAAG,CAAC,IAAgC,CAAC;YACnD,6DAA6D;YAC7D,MAAM,OAAO,GAA8B;gBACzC,OAAO;gBACP,iBAAiB;gBACjB,OAAO;aACR,CAAC;YACF,MAAM,IAAI,GAA6B,EAAE,CAAC;YAC1C,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC1B,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;oBAChB,IAAgC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;gBACtD,CAAC;YACH,CAAC;YACD,uDAAuD;YACvD,IAAI,iBAAiB,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,eAAe,KAAK,QAAQ,EAAE,CAAC;gBAC1E,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;gBAC7D,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACrC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,yCAAyC,EAAE,CAAC,CAAC;gBACpF,CAAC;gBACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACvB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sDAAsD,EAAE,CAAC,CAAC;gBACjG,CAAC;YACH,CAAC;YACD,sCAAsC;YACtC,IAAI,YAAY,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC7D,IAAI,CAAC,UAAU,GAAI,KAAK,CAAC,UAAwB,CAAC,MAAM,CACtD,CAAC,CAAC,EAAe,EAAE,CACjB,OAAO,CAAC,KAAK,QAAQ;oBACrB,cAAI,CAAC,UAAU,CAAC,CAAC,CAAC;oBAClB,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAClC,CAAC;YACJ,CAAC;YACD,MAAM,OAAO,GAAG,IAAA,oBAAW,EAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC5C,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,CAAC;QAAC,MAAM,CAAC;YACP,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/routes/config.ts"],"names":[],"mappings":";;;;;AAIA,oCAwDC;AA5DD,qCAAoD;AACpD,gDAAwB;AACxB,0CAAyE;AAEzE,SAAgB,YAAY,CAAC,QAAgB;IAC3C,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;IAExB,kBAAkB;IAClB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAa,EAAE,GAAa,EAAE,EAAE;QAC/C,IAAI,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,CAAC;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,kBAAkB;IAClB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;QAC9C,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,GAAG,CAAC,IAAgC,CAAC;YACnD,6DAA6D;YAC7D,MAAM,OAAO,GAA8B;gBACzC,OAAO;gBACP,iBAAiB;gBACjB,OAAO;gBACP,kBAAkB;aACnB,CAAC;YACF,MAAM,IAAI,GAA6B,EAAE,CAAC;YAC1C,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC1B,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;oBAChB,IAAgC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;gBACtD,CAAC;YACH,CAAC;YACD,uDAAuD;YACvD,IAAI,iBAAiB,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,eAAe,KAAK,QAAQ,EAAE,CAAC;gBAC1E,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;gBAC7D,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACrC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,yCAAyC,EAAE,CAAC,CAAC;gBACpF,CAAC;gBACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACvB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sDAAsD,EAAE,CAAC,CAAC;gBACjG,CAAC;YACH,CAAC;YACD,sCAAsC;YACtC,IAAI,YAAY,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC7D,IAAI,CAAC,UAAU,GAAI,KAAK,CAAC,UAAwB,CAAC,MAAM,CACtD,CAAC,CAAC,EAAe,EAAE,CACjB,OAAO,CAAC,KAAK,QAAQ;oBACrB,cAAI,CAAC,UAAU,CAAC,CAAC,CAAC;oBAClB,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAClC,CAAC;YACJ,CAAC;YACD,MAAM,OAAO,GAAG,IAAA,oBAAW,EAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC5C,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,CAAC;QAAC,MAAM,CAAC;YACP,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "living-documentation",
3
- "version": "3.4.0",
3
+ "version": "3.5.0",
4
4
  "description": "A CLI tool that serves a local Markdown documentation viewer",
5
5
  "main": "dist/src/server.js",
6
6
  "bin": {