{"_id":"yamlover","_rev":"28-60350a8050663d4432672bfe15abb9fe","name":"yamlover","dist-tags":{"latest":"0.3.58"},"versions":{"0.3.0":{"name":"yamlover","version":"0.3.0","keywords":["yamlover","yaml","json5","viewer","browser","spa","knowledge-graph","pointers"],"author":{"name":"dims"},"license":"MIT","_id":"yamlover@0.3.0","maintainers":[{"name":"dimskraft","email":"dimskraft@gmail.com"}],"bin":{"yamlover":"bin/yamlover.js"},"dist":{"shasum":"89e0bd24dccfcb375b977ac5680cdabc09b9dd20","tarball":"https://registry.npmjs.org/yamlover/-/yamlover-0.3.0.tgz","fileCount":60,"integrity":"sha512-DkD5U7o1yhmJv5DihFDQSLc1tx0oHuPswgTSkCm3yWtpSSeaYS5pP69zg53gNQ91ZkU2vAMDQoX4KfARq960Tw==","signatures":[{"sig":"MEUCIQDXF8l2tfAhKHLZSY7TpwfIDnx+3AYBtmODsvQiaMkKswIgbHJth6yEBBZPT1Vdee7IUDRqoGyaR7qzI8crpKavBJo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1184862},"type":"module","engines":{"node":">=22"},"gitHead":"0bb64d0df1dd5ff33808a1045ad11d6e634bdf92","scripts":{"test":"vitest run","build":"node scripts/build.mjs","start":"node bin/yamlover.js","prepack":"node scripts/build.mjs","test:watch":"vitest"},"_npmUser":{"name":"dimskraft","email":"dimskraft@gmail.com"},"_npmVersion":"11.6.2","description":"Browse a yamlover tree in the web: npx yamlover <root> serves a React SPA over a directory.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"utif":"^3.1.0","vite":"^5.4.11","xlsx":"^0.18.5","katex":"^0.16.47","react":"^18.3.1","ag-psd":"^28.5.1","fflate":"^0.8.3","ignore":"^6.0.2","marked":"^18.0.4","js-yaml":"^4.1.0","leaflet":"^1.9.4","mammoth":"^1.12.0","heic2any":"^0.0.4","react-dom":"^18.3.1","react-pdf":"^10.4.1","@tmcw/togeojson":"^7.1.2","@asciidoctor/core":"^3.0.4","@vitejs/plugin-react":"^4.3.4"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","vitest":"^2.1.8","esbuild":"^0.21.5","typescript":"^5.6.3","@types/node":"^22.10.1","xxhash-wasm":"^1.1.0","@types/katex":"^0.16.8","@types/react":"^18.3.12","@types/js-yaml":"^4.0.9","@types/leaflet":"^1.9.21","@types/react-dom":"^18.3.1","@testing-library/dom":"^10.4.0","@testing-library/react":"^16.1.0"},"_npmOperationalInternal":{"tmp":"tmp/yamlover_0.3.0_1781348700478_0.8900103148351519","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"yamlover","version":"0.3.1","keywords":["yamlover","yaml","json5","viewer","browser","spa","knowledge-graph","pointers"],"author":{"name":"dims"},"license":"MIT","_id":"yamlover@0.3.1","maintainers":[{"name":"dimskraft","email":"dimskraft@gmail.com"}],"homepage":"https://github.com/dims12/yamlover#readme","bugs":{"url":"https://github.com/dims12/yamlover/issues"},"bin":{"yamlover":"bin/yamlover.js"},"dist":{"shasum":"aa6bff770fb976c914934a5f4e5d44cf3a65d90d","tarball":"https://registry.npmjs.org/yamlover/-/yamlover-0.3.1.tgz","fileCount":60,"integrity":"sha512-g49tw9kZO+cIAZrugvOR6R+e0AgE5C13lFPOYiPDLjMqCtBwWBbYIMOv1dZ2CNScIAUdbFzzQJvDvMl4YUrLKQ==","signatures":[{"sig":"MEYCIQCLBS9mPyrr2xRKBU93DSDUxmjfFR7lhSJ9APuRk99GrwIhAPzWjY8DTEOd+EvhL+Al8bNYpyrLnJLBB/6H+TJNgZkP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/yamlover@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1184993},"type":"module","engines":{"node":">=22"},"gitHead":"c786e76b4ab92e190467bda1f70089ca60c7da4a","scripts":{"test":"vitest run","build":"node scripts/build.mjs","start":"node bin/yamlover.js","prepack":"node scripts/build.mjs","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:14afcabd-0536-4d0b-aeda-ef7dc5925ffd"}},"repository":{"url":"git+https://github.com/dims12/yamlover.git","type":"git","directory":"tools/server"},"_npmVersion":"11.17.0","description":"Browse a yamlover tree in the web: npx yamlover <root> serves a React SPA over a directory.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"utif":"^3.1.0","vite":"^5.4.11","xlsx":"^0.18.5","katex":"^0.16.47","react":"^18.3.1","ag-psd":"^28.5.1","fflate":"^0.8.3","ignore":"^6.0.2","marked":"^18.0.4","js-yaml":"^4.1.0","leaflet":"^1.9.4","mammoth":"^1.12.0","heic2any":"^0.0.4","react-dom":"^18.3.1","react-pdf":"^10.4.1","@tmcw/togeojson":"^7.1.2","@asciidoctor/core":"^3.0.4","@vitejs/plugin-react":"^4.3.4"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","vitest":"^2.1.8","esbuild":"^0.21.5","typescript":"^5.6.3","@types/node":"^22.10.1","xxhash-wasm":"^1.1.0","@types/katex":"^0.16.8","@types/react":"^18.3.12","@types/js-yaml":"^4.0.9","@types/leaflet":"^1.9.21","@types/react-dom":"^18.3.1","@testing-library/dom":"^10.4.0","@testing-library/react":"^16.1.0"},"_npmOperationalInternal":{"tmp":"tmp/yamlover_0.3.1_1781350409829_0.4523204984870093","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"yamlover","version":"0.3.2","keywords":["yamlover","yaml","json5","viewer","browser","spa","knowledge-graph","pointers"],"author":{"name":"dims"},"license":"MIT","_id":"yamlover@0.3.2","maintainers":[{"name":"dimskraft","email":"dimskraft@gmail.com"}],"homepage":"https://github.com/dims12/yamlover#readme","bugs":{"url":"https://github.com/dims12/yamlover/issues"},"bin":{"yamlover":"bin/yamlover.js"},"dist":{"shasum":"38ecb2287b7fb813c521921bb56c5eb20c805749","tarball":"https://registry.npmjs.org/yamlover/-/yamlover-0.3.2.tgz","fileCount":62,"integrity":"sha512-zkKpEi9Zh2uN/yqjYv1jt/cccHxwADrIoHr37geSQKyJcWdFEvIFk6Ws3L766aOA81h03pkwiPiYqU8fJfOxrQ==","signatures":[{"sig":"MEUCIQDgn6FkvRYE1pePftFOz6z77ltzvtbS73hGnqVnW6hUOgIgTWr1WeJgXcMHt11j62hfXU0BHDj3HwQgQfpGCGoN6TQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/yamlover@0.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1219070},"type":"module","engines":{"node":">=22"},"gitHead":"f9d01d2a0cb059d91f142dd66d99f98c63daeee5","scripts":{"test":"vitest run","build":"node scripts/build.mjs","start":"node bin/yamlover.js","prepack":"node scripts/build.mjs","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:14afcabd-0536-4d0b-aeda-ef7dc5925ffd"}},"repository":{"url":"git+https://github.com/dims12/yamlover.git","type":"git","directory":"tools/server"},"_npmVersion":"11.17.0","description":"Browse a yamlover tree in the web: npx yamlover <root> serves a React SPA over a directory.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"utif":"^3.1.0","vite":"^5.4.11","xlsx":"^0.18.5","katex":"^0.16.47","react":"^18.3.1","ag-psd":"^28.5.1","fflate":"^0.8.3","ignore":"^6.0.2","marked":"^18.0.4","js-yaml":"^4.1.0","leaflet":"^1.9.4","mammoth":"^1.12.0","heic2any":"^0.0.4","react-dom":"^18.3.1","react-pdf":"^10.4.1","@tmcw/togeojson":"^7.1.2","@asciidoctor/core":"^3.0.4","@vitejs/plugin-react":"^4.3.4"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","vitest":"^2.1.8","esbuild":"^0.21.5","typescript":"^5.6.3","@types/node":"^22.10.1","xxhash-wasm":"^1.1.0","@types/katex":"^0.16.8","@types/react":"^18.3.12","@types/js-yaml":"^4.0.9","@types/leaflet":"^1.9.21","@types/react-dom":"^18.3.1","@testing-library/dom":"^10.4.0","@testing-library/react":"^16.1.0"},"_npmOperationalInternal":{"tmp":"tmp/yamlover_0.3.2_1781388865493_0.0381097231562606","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"yamlover","version":"0.3.3","keywords":["yamlover","yaml","json5","viewer","browser","spa","knowledge-graph","pointers"],"author":{"name":"dims"},"license":"MIT","_id":"yamlover@0.3.3","maintainers":[{"name":"dimskraft","email":"dimskraft@gmail.com"}],"homepage":"https://github.com/dims12/yamlover#readme","bugs":{"url":"https://github.com/dims12/yamlover/issues"},"bin":{"yamlover":"bin/yamlover.js"},"dist":{"shasum":"f62fa3269cddbb26264ce934aed0b18d3061c6e8","tarball":"https://registry.npmjs.org/yamlover/-/yamlover-0.3.3.tgz","fileCount":62,"integrity":"sha512-FFktDYPYkX6gbMHLaiIo+UTNpQwHqad2YB66YWzCXraTr228Oq7FikK3vEAUSr8y5uAUeG2XNM2aMdVPjhYtcA==","signatures":[{"sig":"MEQCIB+RUZPR1phrDzQx+27wxa5lHS8YKxDt9adPJGifPDsEAiBQZFyZEHvnnrv93AjxRly/iAWtg5wflqqWmvBwrl4u2w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/yamlover@0.3.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1226747},"type":"module","engines":{"node":">=22"},"gitHead":"e703829268a70326eb7efddb05fc059c62850318","scripts":{"test":"vitest run","build":"node scripts/build.mjs","start":"node bin/yamlover.js","prepack":"node scripts/build.mjs","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:14afcabd-0536-4d0b-aeda-ef7dc5925ffd"}},"repository":{"url":"git+https://github.com/dims12/yamlover.git","type":"git","directory":"tools/server"},"_npmVersion":"11.17.0","description":"Browse a yamlover tree in the web: npx yamlover <root> serves a React SPA over a directory.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"utif":"^3.1.0","vite":"^5.4.11","xlsx":"^0.18.5","katex":"^0.16.47","react":"^18.3.1","ag-psd":"^28.5.1","fflate":"^0.8.3","ignore":"^6.0.2","marked":"^18.0.4","js-yaml":"^4.1.0","leaflet":"^1.9.4","mammoth":"^1.12.0","heic2any":"^0.0.4","react-dom":"^18.3.1","react-pdf":"^10.4.1","@tmcw/togeojson":"^7.1.2","@asciidoctor/core":"^3.0.4","@vitejs/plugin-react":"^4.3.4"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","vitest":"^2.1.8","esbuild":"^0.21.5","typescript":"^5.6.3","@types/node":"^22.10.1","xxhash-wasm":"^1.1.0","@types/katex":"^0.16.8","@types/react":"^18.3.12","@types/js-yaml":"^4.0.9","@types/leaflet":"^1.9.21","@types/react-dom":"^18.3.1","@testing-library/dom":"^10.4.0","@testing-library/react":"^16.1.0"},"_npmOperationalInternal":{"tmp":"tmp/yamlover_0.3.3_1781392877309_0.914281408968677","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"yamlover","version":"0.3.4","keywords":["yamlover","yaml","json5","viewer","browser","spa","knowledge-graph","pointers"],"author":{"name":"dims"},"license":"MIT","_id":"yamlover@0.3.4","maintainers":[{"name":"dimskraft","email":"dimskraft@gmail.com"}],"homepage":"https://github.com/dims12/yamlover#readme","bugs":{"url":"https://github.com/dims12/yamlover/issues"},"bin":{"yamlover":"bin/yamlover.js"},"dist":{"shasum":"e28aa745c405f326e9f2de52274c90b12a3e108f","tarball":"https://registry.npmjs.org/yamlover/-/yamlover-0.3.4.tgz","fileCount":63,"integrity":"sha512-1NHn1M+CgVijo6uErfIcV0IRNsw41HcGK3u0T5IQ0I3a75xKDiLEQ+FCfak6iEyiz7BNZ6d7mBjvDQ8ZH8AN1A==","signatures":[{"sig":"MEUCIQDSmYs6Onl75YfZT3IdI3cLrdDNrJEJRgCLGXDCAUupzAIgda/ONz7PBYO0vEicqHXNZCaGufRmsumiN7agG+qBYLE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/yamlover@0.3.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1266082},"type":"module","engines":{"node":">=22"},"gitHead":"070df3a6915c8711d3982c9aac760433b26e4000","scripts":{"test":"vitest run","build":"node scripts/build.mjs","start":"node bin/yamlover.js","prepack":"node scripts/build.mjs","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:14afcabd-0536-4d0b-aeda-ef7dc5925ffd"}},"repository":{"url":"git+https://github.com/dims12/yamlover.git","type":"git","directory":"tools/server"},"_npmVersion":"11.17.0","description":"Browse a yamlover tree in the web: npx yamlover <root> serves a React SPA over a directory.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"utif":"^3.1.0","vite":"^5.4.11","xlsx":"^0.18.5","katex":"^0.16.47","react":"^18.3.1","ag-psd":"^28.5.1","fflate":"^0.8.3","ignore":"^6.0.2","marked":"^18.0.4","js-yaml":"^4.1.0","leaflet":"^1.9.4","mammoth":"^1.12.0","heic2any":"^0.0.4","react-dom":"^18.3.1","react-pdf":"^10.4.1","@tmcw/togeojson":"^7.1.2","@asciidoctor/core":"^3.0.4","@vitejs/plugin-react":"^4.3.4"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.1","vitest":"^2.1.8","esbuild":"^0.21.5","typescript":"^5.6.3","@types/node":"^22.10.1","xxhash-wasm":"^1.1.0","@types/katex":"^0.16.8","@types/react":"^18.3.12","@types/js-yaml":"^4.0.9","@types/leaflet":"^1.9.21","@types/react-dom":"^18.3.1","@testing-library/dom":"^10.4.0","@testing-library/react":"^16.1.0"},"_npmOperationalInternal":{"tmp":"tmp/yamlover_0.3.4_1781478340025_0.27724903226325126","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"yamlover","version":"0.3.5","keywords":["yamlover","yaml","json5","viewer","browser","spa","knowledge-graph","pointers"],"author":{"name":"dims"},"license":"MIT","_id":"yamlover@0.3.5","maintainers":[{"name":"dimskraft","email":"dimskraft@gmail.com"}],"homepage":"https://github.com/dims12/yamlover#readme","bugs":{"url":"https://github.com/dims12/yamlover/issues"},"bin":{"yamlover":"bin/yamlover.js"},"dist":{"shasum":"c58f93093d98e17757a51641b5e90c56a0d2994a","tarball":"https://registry.npmjs.org/yamlover/-/yamlover-0.3.5.tgz","fileCount":84,"integrity":"sha512-sRfEtTZ0V+12pOAzXRKSEJc2cqPCVNKCxN9IPkF0fGwQ/tW5V0TcxieZgQsRbfH6Mv+CDc5BWAegBoPW4XbkJw==","signatures":[{"sig":"MEQCIDFTjvVGEo4F/Yz2/nl2KimVIDOWpKqLrrkc2NZfl1IAAiBA1gvwdeeBLoQGTafNhHb0umpvzyZpbaJ4CkGTdz4wAQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/yamlover@0.3.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7347664},"type":"module","engines":{"node":">=22"},"gitHead":"dfe4b849de179689776ffe2eb4136af461de436b","scripts":{"test":"vitest run","build":"node scripts/build.mjs","start":"node bin/yamlover.js","prepack":"node scripts/build.mjs","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:14afcabd-0536-4d0b-aeda-ef7dc5925ffd"}},"repository":{"url":"git+https://github.com/dims12/yamlover.git","type":"git","directory":"tools/server"},"_npmVersion":"11.17.0","description":"Browse a yamlover tree in the web: npx yamlover <root> serves a React SPA over a directory.","directories":{},"_nodeVersion":"22.22.3","comment:deps":"No runtime dependencies: the client deps are bundled into dist/client by `vite build` and the server deps (ignore/js-yaml/xxhash-wasm) into dist/server.js by esbuild. Everything below is build-/test-time only.","_hasShrinkwrap":false,"devDependencies":{"utif":"^3.1.0","vite":"^5.4.11","xlsx":"^0.18.5","jsdom":"^25.0.1","katex":"^0.16.47","react":"^18.3.1","ag-psd":"^28.5.1","fflate":"^0.8.3","ignore":"^6.0.2","marked":"^18.0.4","vitest":"^2.1.8","esbuild":"^0.21.5","js-yaml":"^4.1.0","leaflet":"^1.9.4","mammoth":"^1.12.0","heic2any":"^0.0.4","react-dom":"^18.3.1","react-pdf":"^10.4.1","typescript":"^5.6.3","@types/node":"^22.10.1","xxhash-wasm":"^1.1.0","@types/katex":"^0.16.8","@types/react":"^18.3.12","@types/js-yaml":"^4.0.9","@types/leaflet":"^1.9.21","@tmcw/togeojson":"^7.1.2","@types/react-dom":"^18.3.1","@asciidoctor/core":"^3.0.4","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.1.0"},"_npmOperationalInternal":{"tmp":"tmp/yamlover_0.3.5_1781517669684_0.4807168740126344","host":"s3://npm-registry-packages-npm-production"}},"0.3.6":{"name":"yamlover","version":"0.3.6","keywords":["yamlover","yaml","json5","viewer","browser","spa","knowledge-graph","pointers"],"author":{"name":"dims"},"license":"MIT","_id":"yamlover@0.3.6","maintainers":[{"name":"dimskraft","email":"dimskraft@gmail.com"}],"homepage":"https://github.com/dims12/yamlover#readme","bugs":{"url":"https://github.com/dims12/yamlover/issues"},"bin":{"yamlover":"bin/yamlover.js"},"dist":{"shasum":"380b497a12da489b6f13e25e6e12db304232394a","tarball":"https://registry.npmjs.org/yamlover/-/yamlover-0.3.6.tgz","fileCount":84,"integrity":"sha512-ajAYFi4q8ErL+k4xEXSLXpvNT8aTrJ0OQusexVTj0XUoP8etTDee/cqjN4YsuoZdyTQVuk9/OMlExzKmv/8Gpg==","signatures":[{"sig":"MEUCIGvf1EdKZSUX2XCAoTPIt87ZxbxjU+/M/nxZ8bw8qtTPAiEAl1Pg9+f6MiFoVndhNzBf0YPM1Wk/JSrYzRjb/2W10r8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/yamlover@0.3.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7347863},"type":"module","engines":{"node":">=22"},"gitHead":"03addcbf37e52183386dc6926d9852ee08a6db64","scripts":{"test":"vitest run","build":"node scripts/build.mjs","start":"node bin/yamlover.js","prepack":"node scripts/build.mjs","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:14afcabd-0536-4d0b-aeda-ef7dc5925ffd"}},"repository":{"url":"git+https://github.com/dims12/yamlover.git","type":"git","directory":"tools/server"},"_npmVersion":"11.17.0","description":"Browse a yamlover tree in the web: npx yamlover <root> serves a React SPA over a directory.","directories":{},"_nodeVersion":"22.22.3","comment:deps":"No runtime dependencies: the client deps are bundled into dist/client by `vite build` and the server deps (ignore/js-yaml/xxhash-wasm) into dist/server.js by esbuild. Everything below is build-/test-time only.","_hasShrinkwrap":false,"devDependencies":{"utif":"^3.1.0","vite":"^5.4.11","xlsx":"^0.18.5","jsdom":"^25.0.1","katex":"^0.16.47","react":"^18.3.1","ag-psd":"^28.5.1","fflate":"^0.8.3","ignore":"^6.0.2","marked":"^18.0.4","vitest":"^2.1.8","esbuild":"^0.21.5","js-yaml":"^4.1.0","leaflet":"^1.9.4","mammoth":"^1.12.0","heic2any":"^0.0.4","react-dom":"^18.3.1","react-pdf":"^10.4.1","typescript":"^5.6.3","@types/node":"^22.10.1","xxhash-wasm":"^1.1.0","@types/katex":"^0.16.8","@types/react":"^18.3.12","@types/js-yaml":"^4.0.9","@types/leaflet":"^1.9.21","@tmcw/togeojson":"^7.1.2","@types/react-dom":"^18.3.1","@asciidoctor/core":"^3.0.4","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.1.0"},"_npmOperationalInternal":{"tmp":"tmp/yamlover_0.3.6_1781519142129_0.9615718623383809","host":"s3://npm-registry-packages-npm-production"}},"0.3.7":{"name":"yamlover","version":"0.3.7","keywords":["yamlover","yaml","json5","viewer","browser","spa","knowledge-graph","pointers"],"author":{"name":"dims"},"license":"MIT","_id":"yamlover@0.3.7","maintainers":[{"name":"dimskraft","email":"dimskraft@gmail.com"}],"homepage":"https://github.com/dims12/yamlover#readme","bugs":{"url":"https://github.com/dims12/yamlover/issues"},"bin":{"yamlover":"bin/yamlover.js"},"dist":{"shasum":"09c0235420e3a9e39a680f9c7da47ba54e656b0d","tarball":"https://registry.npmjs.org/yamlover/-/yamlover-0.3.7.tgz","fileCount":86,"integrity":"sha512-SuhI/mK8OExqI8eOUx/wnL0VdktrCtl4zmD1dLY94JSzdB1lPKKE8IZirrpQA3lEXHv1UMIqaLSu5xrz0MIO1g==","signatures":[{"sig":"MEUCIDQwFxyR/w083UdDb/+o6Vu5IkWlC6cB8Nu1RszM5o6IAiEA90/7C/LOkytbdZhWCHPharbl1qA5xOUOPN7reN3vLMc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/yamlover@0.3.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":10934778},"type":"module","engines":{"node":">=22"},"gitHead":"3ddbfca75e84f912e9cfcbf8055b7cf5073a380d","scripts":{"test":"vitest run","build":"node scripts/build.mjs","start":"node bin/yamlover.js","prepack":"node scripts/build.mjs","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:14afcabd-0536-4d0b-aeda-ef7dc5925ffd"}},"repository":{"url":"git+https://github.com/dims12/yamlover.git","type":"git","directory":"tools/server"},"_npmVersion":"11.17.0","description":"Browse a yamlover tree in the web: npx yamlover <root> serves a React SPA over a directory.","directories":{},"_nodeVersion":"22.22.3","comment:deps":"No runtime dependencies: the client deps are bundled into dist/client by `vite build` and the server deps (ignore/js-yaml/xxhash-wasm, plus the thumbnail extractors jimp + ag-psd + @jsquash/webp + @jsquash/avif — dynamically imported so they stay out of the cold-start path) into dist/server.js by esbuild. The @jsquash codecs' .wasm is copied to dist/wasm by build.mjs (esbuild bundles only their JS glue). Everything below is build-/test-time only.","_hasShrinkwrap":false,"devDependencies":{"jimp":"^1.6.1","utif":"^3.1.0","vite":"^5.4.11","xlsx":"^0.18.5","jsdom":"^25.0.1","katex":"^0.16.47","react":"^18.3.1","ag-psd":"^28.5.1","fflate":"^0.8.3","ignore":"^6.0.2","marked":"^18.0.4","vitest":"^2.1.8","esbuild":"^0.21.5","js-yaml":"^4.1.0","leaflet":"^1.9.4","mammoth":"^1.12.0","heic2any":"^0.0.4","react-dom":"^18.3.1","react-pdf":"^10.4.1","typescript":"^5.6.3","@types/node":"^22.10.1","xxhash-wasm":"^1.1.0","@types/katex":"^0.16.8","@types/react":"^18.3.12","@jsquash/avif":"^2.1.1","@jsquash/webp":"^1.5.0","@types/js-yaml":"^4.0.9","@types/leaflet":"^1.9.21","@tmcw/togeojson":"^7.1.2","@types/react-dom":"^18.3.1","@asciidoctor/core":"^3.0.4","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.1.0"},"_npmOperationalInternal":{"tmp":"tmp/yamlover_0.3.7_1781546684445_0.4319239766391225","host":"s3://npm-registry-packages-npm-production"}},"0.3.10":{"name":"yamlover","version":"0.3.10","keywords":["yamlover","yaml","json5","viewer","browser","spa","knowledge-graph","pointers"],"author":{"name":"dims"},"license":"MIT","_id":"yamlover@0.3.10","maintainers":[{"name":"dimskraft","email":"dimskraft@gmail.com"}],"homepage":"https://github.com/dims12/yamlover#readme","bugs":{"url":"https://github.com/dims12/yamlover/issues"},"bin":{"yamlover":"bin/yamlover.js"},"dist":{"shasum":"42891e1c55f3c64fdeb70298706ce8d22391d740","tarball":"https://registry.npmjs.org/yamlover/-/yamlover-0.3.10.tgz","fileCount":86,"integrity":"sha512-SN12jTgG8CaemUnZ0Rm1Wu1AeenC+i60izTxW0bClk75Uqd9WENCSeUM4JLqBSscU3cUSgh2S6L6RSxgPa0KKw==","signatures":[{"sig":"MEUCIQCkWgI0qfBnozwUKey69KWn9R/Li4gIFjdPwxnyTr+DVwIgLm3ue/QSo7/hE2crJrq8vsy3orAVhyWy39rZf4EYx5k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/yamlover@0.3.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":10970685},"type":"module","engines":{"node":">=22"},"gitHead":"fd36f2abf7879b1dc9c623165eff520ed63a1045","scripts":{"test":"vitest run","build":"node scripts/build.mjs","start":"node bin/yamlover.js","prepack":"node scripts/build.mjs","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:14afcabd-0536-4d0b-aeda-ef7dc5925ffd"}},"repository":{"url":"git+https://github.com/dims12/yamlover.git","type":"git","directory":"tools/server"},"_npmVersion":"11.17.0","description":"Browse a yamlover tree in the web: npx yamlover <root> serves a React SPA over a directory.","directories":{},"_nodeVersion":"22.22.3","comment:deps":"No runtime dependencies: the client deps are bundled into dist/client by `vite build` and the server deps (ignore/js-yaml/xxhash-wasm, plus the thumbnail extractors jimp + ag-psd + @jsquash/webp + @jsquash/avif — dynamically imported so they stay out of the cold-start path) into dist/server.js by esbuild. The @jsquash codecs' .wasm is copied to dist/wasm by build.mjs (esbuild bundles only their JS glue). Everything below is build-/test-time only.","_hasShrinkwrap":false,"devDependencies":{"jimp":"^1.6.1","utif":"^3.1.0","vite":"^5.4.11","xlsx":"^0.18.5","jsdom":"^25.0.1","katex":"^0.16.47","react":"^18.3.1","ag-psd":"^28.5.1","fflate":"^0.8.3","ignore":"^6.0.2","marked":"^18.0.4","vitest":"^2.1.8","esbuild":"^0.21.5","js-yaml":"^4.1.0","leaflet":"^1.9.4","mammoth":"^1.12.0","heic2any":"^0.0.4","react-dom":"^18.3.1","react-pdf":"^10.4.1","typescript":"^5.6.3","@types/node":"^22.10.1","xxhash-wasm":"^1.1.0","@types/katex":"^0.16.8","@types/react":"^18.3.12","@jsquash/avif":"^2.1.1","@jsquash/webp":"^1.5.0","@types/js-yaml":"^4.0.9","@types/leaflet":"^1.9.21","@tmcw/togeojson":"^7.1.2","@types/react-dom":"^18.3.1","@asciidoctor/core":"^3.0.4","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.1.0"},"_npmOperationalInternal":{"tmp":"tmp/yamlover_0.3.10_1781779839238_0.2631671226662886","host":"s3://npm-registry-packages-npm-production"}},"0.3.11":{"name":"yamlover","version":"0.3.11","keywords":["yamlover","yaml","json5","viewer","browser","spa","knowledge-graph","pointers"],"author":{"name":"dims"},"license":"MIT","_id":"yamlover@0.3.11","maintainers":[{"name":"dimskraft","email":"dimskraft@gmail.com"}],"homepage":"https://github.com/dims12/yamlover#readme","bugs":{"url":"https://github.com/dims12/yamlover/issues"},"bin":{"yamlover":"bin/yamlover.js"},"dist":{"shasum":"e54f3a9b0d55cb493c3e1e18537eede9b6a3300c","tarball":"https://registry.npmjs.org/yamlover/-/yamlover-0.3.11.tgz","fileCount":88,"integrity":"sha512-hvaeiPH6liaREYYN6aHmpv3Ga0NUsOp+4Huzajd3YIuTcsAizsk7oOOfRz5KpUCXho7rdFoo7shXhvTH87y+YA==","signatures":[{"sig":"MEQCIDsfpdq1Vt3yUhnzYv1MhuwCyCjKSHEat28tTLCDobOkAiBITnjRy5Pw6sZkUVcwplHTixHw7tbyklqFgPCHlWutmQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/yamlover@0.3.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":10985641},"type":"module","engines":{"node":">=22"},"gitHead":"28b586d97308b147d0c049ee6d27c85e2dec3507","scripts":{"test":"vitest run","build":"node scripts/build.mjs","start":"node bin/yamlover.js","prepack":"node scripts/build.mjs","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:14afcabd-0536-4d0b-aeda-ef7dc5925ffd"}},"repository":{"url":"git+https://github.com/dims12/yamlover.git","type":"git","directory":"tools/server"},"_npmVersion":"11.17.0","description":"Browse a yamlover tree in the web: npx yamlover <root> serves a React SPA over a directory.","directories":{},"_nodeVersion":"22.22.3","comment:deps":"No runtime dependencies: the client deps are bundled into dist/client by `vite build` and the server deps (ignore/js-yaml/xxhash-wasm, plus the thumbnail extractors jimp + ag-psd + @jsquash/webp + @jsquash/avif — dynamically imported so they stay out of the cold-start path) into dist/server.js by esbuild. The @jsquash codecs' .wasm is copied to dist/wasm by build.mjs (esbuild bundles only their JS glue). Everything below is build-/test-time only.","_hasShrinkwrap":false,"devDependencies":{"jimp":"^1.6.1","utif":"^3.1.0","vite":"^5.4.11","xlsx":"^0.18.5","jsdom":"^25.0.1","katex":"^0.16.47","react":"^18.3.1","ag-psd":"^28.5.1","fflate":"^0.8.3","ignore":"^6.0.2","marked":"^18.0.4","vitest":"^2.1.8","esbuild":"^0.21.5","js-yaml":"^4.1.0","leaflet":"^1.9.4","mammoth":"^1.12.0","heic2any":"^0.0.4","react-dom":"^18.3.1","react-pdf":"^10.4.1","typescript":"^5.6.3","@types/node":"^22.10.1","xxhash-wasm":"^1.1.0","@types/katex":"^0.16.8","@types/react":"^18.3.12","@jsquash/avif":"^2.1.1","@jsquash/webp":"^1.5.0","@types/js-yaml":"^4.0.9","@types/leaflet":"^1.9.21","@tmcw/togeojson":"^7.1.2","@types/react-dom":"^18.3.1","@asciidoctor/core":"^3.0.4","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.1.0"},"_npmOperationalInternal":{"tmp":"tmp/yamlover_0.3.11_1781782006783_0.8100807664981076","host":"s3://npm-registry-packages-npm-production"}},"0.3.12":{"name":"yamlover","version":"0.3.12","keywords":["yamlover","yaml","json5","viewer","browser","spa","knowledge-graph","pointers"],"author":{"name":"dims"},"license":"MIT","_id":"yamlover@0.3.12","maintainers":[{"name":"dimskraft","email":"dimskraft@gmail.com"}],"homepage":"https://github.com/dims12/yamlover#readme","bugs":{"url":"https://github.com/dims12/yamlover/issues"},"bin":{"yamlover":"bin/yamlover.js"},"dist":{"shasum":"0d83be33e762ec35b7310705b92208835487610e","tarball":"https://registry.npmjs.org/yamlover/-/yamlover-0.3.12.tgz","fileCount":99,"integrity":"sha512-8nsZpiM2g+ZFiafGbGFgYyd22qKn7DZox35IdB7uLEvB097x1rTQI9JaDvPQ87zoSTxX5Z+EH3YiZ7bSQbvaVQ==","signatures":[{"sig":"MEUCIE+CLuNZjnZT2t1WirY3NN9efTIhCwv0tnYbZ2iZ9cGSAiEA+NlZQ1rkrw4ppBt1cZjHQGMDLgbev2YSE4ByzSHU+9c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/yamlover@0.3.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11014408},"type":"module","engines":{"node":">=22"},"gitHead":"ec869d595f712d8f27ef4db9fa04baa399769581","scripts":{"test":"vitest run","build":"node scripts/build.mjs","start":"node bin/yamlover.js","prepack":"node scripts/build.mjs","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:14afcabd-0536-4d0b-aeda-ef7dc5925ffd"}},"repository":{"url":"git+https://github.com/dims12/yamlover.git","type":"git","directory":"tools/server"},"_npmVersion":"11.17.0","description":"Browse a yamlover tree in the web: npx yamlover <root> serves a React SPA over a directory.","directories":{},"_nodeVersion":"22.22.3","comment:deps":"No runtime dependencies: the client deps are bundled into dist/client by `vite build` and the server deps (ignore/js-yaml/xxhash-wasm, plus the thumbnail extractors jimp + ag-psd + @jsquash/webp + @jsquash/avif — dynamically imported so they stay out of the cold-start path) into dist/server.js by esbuild. The @jsquash codecs' .wasm is copied to dist/wasm by build.mjs (esbuild bundles only their JS glue). Everything below is build-/test-time only.","_hasShrinkwrap":false,"devDependencies":{"jimp":"^1.6.1","utif":"^3.1.0","vite":"^5.4.11","xlsx":"^0.18.5","jsdom":"^25.0.1","katex":"^0.16.47","react":"^18.3.1","ag-psd":"^28.5.1","fflate":"^0.8.3","ignore":"^6.0.2","marked":"^18.0.4","vitest":"^2.1.8","esbuild":"^0.21.5","js-yaml":"^4.1.0","leaflet":"^1.9.4","mammoth":"^1.12.0","heic2any":"^0.0.4","react-dom":"^18.3.1","react-pdf":"^10.4.1","typescript":"^5.6.3","@types/node":"^22.10.1","xxhash-wasm":"^1.1.0","@types/katex":"^0.16.8","@types/react":"^18.3.12","@jsquash/avif":"^2.1.1","@jsquash/webp":"^1.5.0","@types/js-yaml":"^4.0.9","@types/leaflet":"^1.9.21","@tmcw/togeojson":"^7.1.2","@types/react-dom":"^18.3.1","@asciidoctor/core":"^3.0.4","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.1.0"},"_npmOperationalInternal":{"tmp":"tmp/yamlover_0.3.12_1782031768374_0.3352017426701812","host":"s3://npm-registry-packages-npm-production"}},"0.3.13":{"name":"yamlover","version":"0.3.13","keywords":["yamlover","yaml","json5","viewer","browser","spa","knowledge-graph","pointers"],"author":{"name":"dims"},"license":"MIT","_id":"yamlover@0.3.13","maintainers":[{"name":"dimskraft","email":"dimskraft@gmail.com"}],"homepage":"https://github.com/dims12/yamlover#readme","bugs":{"url":"https://github.com/dims12/yamlover/issues"},"bin":{"yamlover":"bin/yamlover.js"},"dist":{"shasum":"9d28c1cb3db409e582d79b03259425f8fa344ab0","tarball":"https://registry.npmjs.org/yamlover/-/yamlover-0.3.13.tgz","fileCount":99,"integrity":"sha512-m0IvsA1fZ743otDCT2kFQ1WOrPCuhRzRJc6BwkOQOFtI7vllc3Ea5fSpLV7BVKK63LEzeNbzgKjAKJmsZKtnOg==","signatures":[{"sig":"MEYCIQCmj+DtnNehmKsWk/UgNsBQMiMTuTubUk5tydaolljhtgIhAIM3A4aTTMSWpp4FAyGZPoSKC3EtrKddo5X2Gfi/fCRj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/yamlover@0.3.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11014611},"type":"module","engines":{"node":">=22"},"gitHead":"54c842debf3b57ee76af0def0810ab714430f76b","scripts":{"test":"vitest run","build":"node scripts/build.mjs","start":"node bin/yamlover.js","prepack":"node scripts/build.mjs","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:14afcabd-0536-4d0b-aeda-ef7dc5925ffd"}},"repository":{"url":"git+https://github.com/dims12/yamlover.git","type":"git","directory":"tools/server"},"_npmVersion":"11.17.0","description":"Browse a yamlover tree in the web: npx yamlover <root> serves a React SPA over a directory.","directories":{},"_nodeVersion":"22.22.3","comment:deps":"No runtime dependencies: the client deps are bundled into dist/client by `vite build` and the server deps (ignore/js-yaml/xxhash-wasm, plus the thumbnail extractors jimp + ag-psd + @jsquash/webp + @jsquash/avif — dynamically imported so they stay out of the cold-start path) into dist/server.js by esbuild. The @jsquash codecs' .wasm is copied to dist/wasm by build.mjs (esbuild bundles only their JS glue). Everything below is build-/test-time only.","_hasShrinkwrap":false,"devDependencies":{"jimp":"^1.6.1","utif":"^3.1.0","vite":"^5.4.11","xlsx":"^0.18.5","jsdom":"^25.0.1","katex":"^0.16.47","react":"^18.3.1","ag-psd":"^28.5.1","fflate":"^0.8.3","ignore":"^6.0.2","marked":"^18.0.4","vitest":"^2.1.8","esbuild":"^0.21.5","js-yaml":"^4.1.0","leaflet":"^1.9.4","mammoth":"^1.12.0","heic2any":"^0.0.4","react-dom":"^18.3.1","react-pdf":"^10.4.1","typescript":"^5.6.3","@types/node":"^22.10.1","xxhash-wasm":"^1.1.0","@types/katex":"^0.16.8","@types/react":"^18.3.12","@jsquash/avif":"^2.1.1","@jsquash/webp":"^1.5.0","@types/js-yaml":"^4.0.9","@types/leaflet":"^1.9.21","@tmcw/togeojson":"^7.1.2","@types/react-dom":"^18.3.1","@asciidoctor/core":"^3.0.4","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.1.0"},"_npmOperationalInternal":{"tmp":"tmp/yamlover_0.3.13_1782031969751_0.9876892346091315","host":"s3://npm-registry-packages-npm-production"}},"0.3.14":{"name":"yamlover","version":"0.3.14","keywords":["yamlover","yaml","json5","viewer","browser","spa","knowledge-graph","pointers"],"author":{"name":"dims"},"license":"MIT","_id":"yamlover@0.3.14","maintainers":[{"name":"dimskraft","email":"dimskraft@gmail.com"}],"homepage":"https://github.com/dims12/yamlover#readme","bugs":{"url":"https://github.com/dims12/yamlover/issues"},"bin":{"yamlover":"bin/yamlover.js"},"dist":{"shasum":"5f840b0845771800ec0ff316cd6ef7d34ad2c31b","tarball":"https://registry.npmjs.org/yamlover/-/yamlover-0.3.14.tgz","fileCount":99,"integrity":"sha512-kFTLc0vv0MMCG4fhCgLQqkfCQabyc2DNtzv/ueV83d6EJZhEEQN2qYuF/Hl3K/0SMXCw7XYmrOfyP6mwnUN+ug==","signatures":[{"sig":"MEYCIQCQQyS4I2i8GFQ4rJexGlMkHCeDx8ZvPr1Q/dK2jaGZRwIhAP/J6Tuq9YSPFAPqsykb++CxMhSC2xOOaGymIEvKQ6E8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/yamlover@0.3.14","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11032468},"type":"module","engines":{"node":">=22"},"gitHead":"dff011ed888dc4a55e87c5beeecabce1d093d517","scripts":{"test":"vitest run","build":"node scripts/build.mjs","start":"node bin/yamlover.js","prepack":"node scripts/build.mjs","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:14afcabd-0536-4d0b-aeda-ef7dc5925ffd"}},"repository":{"url":"git+https://github.com/dims12/yamlover.git","type":"git","directory":"tools/server"},"_npmVersion":"11.17.0","description":"Browse a yamlover tree in the web: npx yamlover <root> serves a React SPA over a directory.","directories":{},"_nodeVersion":"22.22.3","comment:deps":"No runtime dependencies: the client deps are bundled into dist/client by `vite build` and the server deps (ignore/js-yaml/xxhash-wasm, plus the thumbnail extractors jimp + ag-psd + @jsquash/webp + @jsquash/avif — dynamically imported so they stay out of the cold-start path) into dist/server.js by esbuild. The @jsquash codecs' .wasm is copied to dist/wasm by build.mjs (esbuild bundles only their JS glue). Everything below is build-/test-time only.","_hasShrinkwrap":false,"devDependencies":{"jimp":"^1.6.1","utif":"^3.1.0","vite":"^5.4.11","xlsx":"^0.18.5","jsdom":"^25.0.1","katex":"^0.16.47","react":"^18.3.1","ag-psd":"^28.5.1","fflate":"^0.8.3","ignore":"^6.0.2","marked":"^18.0.4","vitest":"^2.1.8","esbuild":"^0.21.5","js-yaml":"^4.1.0","leaflet":"^1.9.4","mammoth":"^1.12.0","heic2any":"^0.0.4","react-dom":"^18.3.1","react-pdf":"^10.4.1","typescript":"^5.6.3","@types/node":"^22.10.1","xxhash-wasm":"^1.1.0","@types/katex":"^0.16.8","@types/react":"^18.3.12","@jsquash/avif":"^2.1.1","@jsquash/webp":"^1.5.0","@types/js-yaml":"^4.0.9","@types/leaflet":"^1.9.21","@tmcw/togeojson":"^7.1.2","@types/react-dom":"^18.3.1","@asciidoctor/core":"^3.0.4","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.1.0"},"_npmOperationalInternal":{"tmp":"tmp/yamlover_0.3.14_1782249806127_0.17872566650585453","host":"s3://npm-registry-packages-npm-production"}},"0.3.21":{"name":"yamlover","version":"0.3.21","keywords":["yamlover","yaml","json5","viewer","browser","spa","knowledge-graph","pointers"],"author":{"name":"dims"},"license":"MIT","_id":"yamlover@0.3.21","maintainers":[{"name":"dimskraft","email":"dimskraft@gmail.com"}],"homepage":"https://github.com/dims12/yamlover#readme","bugs":{"url":"https://github.com/dims12/yamlover/issues"},"bin":{"yamlover":"bin/yamlover.js"},"dist":{"shasum":"d5530c958908635a9b736243c818ef298d0723c9","tarball":"https://registry.npmjs.org/yamlover/-/yamlover-0.3.21.tgz","fileCount":99,"integrity":"sha512-4pADn4zs8qp7aoujempiiQgof8w5wTV1KUVXSniZdVvs+nz4uz10D81/RLdoWHKm7BxxsDbg+nl2mK1qUJ/Siw==","signatures":[{"sig":"MEYCIQD4H0R7zxFXpxbRt1fc4UbR9MlQjFlM19SD6Ek/MOXBQgIhAPnGfKjH+yEFj4UVt75eVcik32glJBlYLmhrcNOivaHD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/yamlover@0.3.21","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11093522},"type":"module","engines":{"node":">=22"},"gitHead":"66a91fa9e805a1a999ab918df88f059511d50db3","scripts":{"test":"vitest run","build":"node scripts/build.mjs","start":"node bin/yamlover.js","prepack":"node scripts/build.mjs","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:14afcabd-0536-4d0b-aeda-ef7dc5925ffd"}},"repository":{"url":"git+https://github.com/dims12/yamlover.git","type":"git","directory":"tools/server"},"_npmVersion":"11.16.0","description":"Browse a yamlover tree in the web: npx yamlover <root> serves a React SPA over a directory.","directories":{},"_nodeVersion":"24.18.0","comment:deps":"No runtime dependencies: the client deps are bundled into dist/client by `vite build` and the server deps (ignore/js-yaml/xxhash-wasm, plus the thumbnail extractors jimp + ag-psd + @jsquash/webp + @jsquash/avif — dynamically imported so they stay out of the cold-start path) into dist/server.js by esbuild. The @jsquash codecs' .wasm is copied to dist/wasm by build.mjs (esbuild bundles only their JS glue). Everything below is build-/test-time only.","_hasShrinkwrap":false,"devDependencies":{"jimp":"^1.6.1","utif":"^3.1.0","vite":"^5.4.11","xlsx":"^0.18.5","jsdom":"^25.0.1","katex":"^0.16.47","react":"^18.3.1","ag-psd":"^28.5.1","fflate":"^0.8.3","ignore":"^6.0.2","marked":"^18.0.4","vitest":"^2.1.8","esbuild":"^0.21.5","js-yaml":"^4.1.0","leaflet":"^1.9.4","mammoth":"^1.12.0","heic2any":"^0.0.4","react-dom":"^18.3.1","react-pdf":"^10.4.1","typescript":"^5.6.3","@types/node":"^22.10.1","xxhash-wasm":"^1.1.0","@types/katex":"^0.16.8","@types/react":"^18.3.12","@jsquash/avif":"^2.1.1","@jsquash/webp":"^1.5.0","@types/js-yaml":"^4.0.9","@types/leaflet":"^1.9.21","@tmcw/togeojson":"^7.1.2","@types/react-dom":"^18.3.1","@asciidoctor/core":"^3.0.4","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.1.0"},"_npmOperationalInternal":{"tmp":"tmp/yamlover_0.3.21_1783597798633_0.6332412689254889","host":"s3://npm-registry-packages-npm-production"}},"0.3.22":{"name":"yamlover","version":"0.3.22","keywords":["yamlover","yaml","json5","viewer","browser","spa","knowledge-graph","pointers"],"author":{"name":"dims"},"license":"MIT","_id":"yamlover@0.3.22","maintainers":[{"name":"dimskraft","email":"dimskraft@gmail.com"}],"homepage":"https://github.com/dims12/yamlover#readme","bugs":{"url":"https://github.com/dims12/yamlover/issues"},"bin":{"yamlover":"bin/yamlover.js"},"dist":{"shasum":"b30232737570e44424583bc31458266459920d49","tarball":"https://registry.npmjs.org/yamlover/-/yamlover-0.3.22.tgz","fileCount":99,"integrity":"sha512-gFWaNjwhR7zA/jj6hu3Km+oTf9E+TK/7gQe9d02rm4+YqqInzPBvzJh3sTa/eL1XHYnouE7fonT8HU3+2ytiJw==","signatures":[{"sig":"MEQCIHHR5+JZ6Vf+2hl1u/yr1+vNS16NrzuO3CftX8mxBcOrAiB7VheikE7JeEC70BdVi5ABV7fIRtlzQ4YBPPqkhU6dlA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/yamlover@0.3.22","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11097631},"type":"module","engines":{"node":">=22.13"},"gitHead":"4fe7f0da3e6c554b58c13e1c9e95be35ed5376c9","scripts":{"test":"vitest run","build":"node scripts/build.mjs","start":"node bin/yamlover.js","prepack":"node scripts/build.mjs","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:14afcabd-0536-4d0b-aeda-ef7dc5925ffd"}},"repository":{"url":"git+https://github.com/dims12/yamlover.git","type":"git","directory":"tools/server"},"_npmVersion":"11.16.0","description":"Browse a yamlover tree in the web: npx yamlover <root> serves a React SPA over a directory.","directories":{},"_nodeVersion":"24.18.0","comment:deps":"No runtime dependencies: the client deps are bundled into dist/client by `vite build` and the server deps (ignore/js-yaml/xxhash-wasm, plus the thumbnail extractors jimp + ag-psd + @jsquash/webp + @jsquash/avif — dynamically imported so they stay out of the cold-start path) into dist/server.js by esbuild. The @jsquash codecs' .wasm is copied to dist/wasm by build.mjs (esbuild bundles only their JS glue). Everything below is build-/test-time only.","_hasShrinkwrap":false,"comment:engines":"22.13, not 22: the engine's store imports the built-in node:sqlite, which is only available unflagged from Node 22.13 (bin/yamlover.js checks at startup and says so, since npm merely WARNS on an engines mismatch).","devDependencies":{"jimp":"^1.6.1","utif":"^3.1.0","vite":"^5.4.11","xlsx":"^0.18.5","jsdom":"^25.0.1","katex":"^0.16.47","react":"^18.3.1","ag-psd":"^28.5.1","fflate":"^0.8.3","ignore":"^6.0.2","marked":"^18.0.4","vitest":"^2.1.8","esbuild":"^0.21.5","js-yaml":"^4.1.0","leaflet":"^1.9.4","mammoth":"^1.12.0","heic2any":"^0.0.4","react-dom":"^18.3.1","react-pdf":"^10.4.1","typescript":"^5.6.3","@types/node":"^22.10.1","xxhash-wasm":"^1.1.0","@types/katex":"^0.16.8","@types/react":"^18.3.12","@jsquash/avif":"^2.1.1","@jsquash/webp":"^1.5.0","@types/js-yaml":"^4.0.9","@types/leaflet":"^1.9.21","@tmcw/togeojson":"^7.1.2","@types/react-dom":"^18.3.1","@asciidoctor/core":"^3.0.4","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.1.0"},"_npmOperationalInternal":{"tmp":"tmp/yamlover_0.3.22_1783601240457_0.8602484901325762","host":"s3://npm-registry-packages-npm-production"}},"0.3.23":{"name":"yamlover","version":"0.3.23","keywords":["yamlover","yaml","json5","viewer","browser","spa","knowledge-graph","pointers"],"author":{"name":"dims"},"license":"MIT","_id":"yamlover@0.3.23","maintainers":[{"name":"dimskraft","email":"dimskraft@gmail.com"}],"homepage":"https://github.com/dims12/yamlover#readme","bugs":{"url":"https://github.com/dims12/yamlover/issues"},"bin":{"yamlover":"bin/yamlover.js"},"dist":{"shasum":"4185e826faad47514b437c9e2f2af0f3401fa3aa","tarball":"https://registry.npmjs.org/yamlover/-/yamlover-0.3.23.tgz","fileCount":99,"integrity":"sha512-JgNu4wWaEqUtw+6dB1LHOdbFmL6CGneeWyLNA0S9QcBQvA3Ix1DLTXR1C/paFfkdahKeDKQeOVek/KHhI0CABw==","signatures":[{"sig":"MEYCIQDibf42/O+ehmCWvvxII9H5ve5OlhYljyDndXEo9QLzYAIhAKfD2sLYzog27pkxFX7yBz6lnkBzEVY3MTb/D9/bvs+/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/yamlover@0.3.23","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11110764},"type":"module","engines":{"node":">=22.13"},"gitHead":"8e1186e4d57718535f722ed5f3b1509449102679","scripts":{"test":"vitest run","build":"node scripts/build.mjs","start":"node bin/yamlover.js","prepack":"node scripts/build.mjs","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:14afcabd-0536-4d0b-aeda-ef7dc5925ffd"}},"repository":{"url":"git+https://github.com/dims12/yamlover.git","type":"git","directory":"tools/server"},"_npmVersion":"11.16.0","description":"Browse a yamlover tree in the web: npx yamlover <root> serves a React SPA over a directory.","directories":{},"_nodeVersion":"24.18.0","comment:deps":"No runtime dependencies: the client deps are bundled into dist/client by `vite build` and the server deps (ignore/js-yaml/xxhash-wasm, plus the thumbnail extractors jimp + ag-psd + @jsquash/webp + @jsquash/avif — dynamically imported so they stay out of the cold-start path) into dist/server.js by esbuild. The @jsquash codecs' .wasm is copied to dist/wasm by build.mjs (esbuild bundles only their JS glue). Everything below is build-/test-time only.","_hasShrinkwrap":false,"comment:engines":"22.13, not 22: the engine's store imports the built-in node:sqlite, which is only available unflagged from Node 22.13 (bin/yamlover.js checks at startup and says so, since npm merely WARNS on an engines mismatch).","devDependencies":{"jimp":"^1.6.1","utif":"^3.1.0","vite":"^5.4.11","xlsx":"^0.18.5","jsdom":"^25.0.1","katex":"^0.16.47","react":"^18.3.1","ag-psd":"^28.5.1","fflate":"^0.8.3","ignore":"^6.0.2","marked":"^18.0.4","vitest":"^2.1.8","esbuild":"^0.21.5","js-yaml":"^4.1.0","leaflet":"^1.9.4","mammoth":"^1.12.0","heic2any":"^0.0.4","react-dom":"^18.3.1","react-pdf":"^10.4.1","typescript":"^5.6.3","@types/node":"^22.10.1","xxhash-wasm":"^1.1.0","@types/katex":"^0.16.8","@types/react":"^18.3.12","@jsquash/avif":"^2.1.1","@jsquash/webp":"^1.5.0","@types/js-yaml":"^4.0.9","@types/leaflet":"^1.9.21","@tmcw/togeojson":"^7.1.2","@types/react-dom":"^18.3.1","@asciidoctor/core":"^3.0.4","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.1.0"},"_npmOperationalInternal":{"tmp":"tmp/yamlover_0.3.23_1783636378993_0.7258287454617693","host":"s3://npm-registry-packages-npm-production"}},"0.3.24":{"name":"yamlover","version":"0.3.24","keywords":["yamlover","yaml","json5","viewer","browser","spa","knowledge-graph","pointers"],"author":{"name":"dims"},"license":"MIT","_id":"yamlover@0.3.24","maintainers":[{"name":"dimskraft","email":"dimskraft@gmail.com"}],"homepage":"https://github.com/dims12/yamlover#readme","bugs":{"url":"https://github.com/dims12/yamlover/issues"},"bin":{"yamlover":"bin/yamlover.js"},"dist":{"shasum":"057badb88d10e3d40ffe2e80f29ab88de5bb04cb","tarball":"https://registry.npmjs.org/yamlover/-/yamlover-0.3.24.tgz","fileCount":99,"integrity":"sha512-MkLvVDJTqdMC1uj4pHqskrc1GdI74nFwuKPzviRuUk5xnc7Zd6kMvMziQULdQVHIcI5QQX/+ec2pn5BakdB2Zg==","signatures":[{"sig":"MEYCIQCf15IL+yI67czuKBqE8Y/Jcpg0vq4qsjVJp4JFmH+NhgIhAL05+4Txh3x5l5XuWfHZX0PF6dd918D1DgJ25jwPO7xe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/yamlover@0.3.24","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11151781},"type":"module","engines":{"node":">=22.13"},"gitHead":"46b919c074241175f600723f0a5df9cc608c0b9e","scripts":{"test":"vitest run","build":"node scripts/build.mjs","start":"node bin/yamlover.js","prepack":"node scripts/build.mjs","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:14afcabd-0536-4d0b-aeda-ef7dc5925ffd"}},"repository":{"url":"git+https://github.com/dims12/yamlover.git","type":"git","directory":"tools/server"},"_npmVersion":"11.16.0","description":"Browse a yamlover tree in the web: npx yamlover <root> serves a React SPA over a directory.","directories":{},"_nodeVersion":"24.18.0","comment:deps":"No runtime dependencies: the client deps are bundled into dist/client by `vite build` and the server deps (ignore/js-yaml/xxhash-wasm, plus the thumbnail extractors jimp + ag-psd + @jsquash/webp + @jsquash/avif — dynamically imported so they stay out of the cold-start path) into dist/server.js by esbuild. The @jsquash codecs' .wasm is copied to dist/wasm by build.mjs (esbuild bundles only their JS glue). Everything below is build-/test-time only.","_hasShrinkwrap":false,"comment:engines":"22.13, not 22: the engine's store imports the built-in node:sqlite, which is only available unflagged from Node 22.13 (bin/yamlover.js checks at startup and says so, since npm merely WARNS on an engines mismatch).","devDependencies":{"jimp":"^1.6.1","utif":"^3.1.0","vite":"^5.4.11","xlsx":"^0.18.5","jsdom":"^25.0.1","katex":"^0.16.47","react":"^18.3.1","ag-psd":"^28.5.1","fflate":"^0.8.3","ignore":"^6.0.2","marked":"^18.0.4","vitest":"^2.1.8","esbuild":"^0.21.5","js-yaml":"^4.1.0","leaflet":"^1.9.4","mammoth":"^1.12.0","heic2any":"^0.0.4","react-dom":"^18.3.1","react-pdf":"^10.4.1","typescript":"^5.6.3","@types/node":"^22.10.1","xxhash-wasm":"^1.1.0","@types/katex":"^0.16.8","@types/react":"^18.3.12","@jsquash/avif":"^2.1.1","@jsquash/webp":"^1.5.0","@types/js-yaml":"^4.0.9","@types/leaflet":"^1.9.21","@tmcw/togeojson":"^7.1.2","@types/react-dom":"^18.3.1","@asciidoctor/core":"^3.0.4","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.1.0"},"_npmOperationalInternal":{"tmp":"tmp/yamlover_0.3.24_1784063872128_0.765302832050482","host":"s3://npm-registry-packages-npm-production"}},"0.3.25":{"name":"yamlover","version":"0.3.25","keywords":["yamlover","yaml","json5","viewer","browser","spa","knowledge-graph","pointers"],"author":{"name":"dims"},"license":"MIT","_id":"yamlover@0.3.25","maintainers":[{"name":"dimskraft","email":"dimskraft@gmail.com"}],"homepage":"https://github.com/dims12/yamlover#readme","bugs":{"url":"https://github.com/dims12/yamlover/issues"},"bin":{"yamlover":"bin/yamlover.js"},"dist":{"shasum":"5a947ef2dc08f2b4796fb9e84f2e9cf75053e839","tarball":"https://registry.npmjs.org/yamlover/-/yamlover-0.3.25.tgz","fileCount":100,"integrity":"sha512-bMfzgeo/2JmfHW6422DXfHEmP4wPAHCisbc3f9uuesyQGpvnOI0pPiskTq1gLOtvTpLjezsEc+W59ST25wNeqQ==","signatures":[{"sig":"MEUCIQCJB9HSXjLkEmIExUTWj0GePyf8NCNY61qCJtRsdiWmFQIgSz+vGfsP/72lHdr5hTHq/KWqtcaI7mXzsS+NLmYc4Lc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/yamlover@0.3.25","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11167838},"type":"module","engines":{"node":">=22.13"},"gitHead":"69f928d2a12355be38a85e991bf13d4819569e17","scripts":{"test":"vitest run","build":"node scripts/build.mjs","start":"node bin/yamlover.js","prepack":"node scripts/build.mjs","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:14afcabd-0536-4d0b-aeda-ef7dc5925ffd"}},"repository":{"url":"git+https://github.com/dims12/yamlover.git","type":"git","directory":"tools/server"},"_npmVersion":"11.16.0","description":"Browse a yamlover tree in the web: npx yamlover <root> serves a React SPA over a directory.","directories":{},"_nodeVersion":"24.18.0","comment:deps":"No runtime dependencies: the client deps are bundled into dist/client by `vite build` and the server deps (ignore/js-yaml/xxhash-wasm, plus the thumbnail extractors jimp + ag-psd + @jsquash/webp + @jsquash/avif — dynamically imported so they stay out of the cold-start path) into dist/server.js by esbuild. The @jsquash codecs' .wasm is copied to dist/wasm by build.mjs (esbuild bundles only their JS glue). Everything below is build-/test-time only.","_hasShrinkwrap":false,"comment:engines":"22.13, not 22: the engine's store imports the built-in node:sqlite, which is only available unflagged from Node 22.13 (bin/yamlover.js checks at startup and says so, since npm merely WARNS on an engines mismatch).","devDependencies":{"jimp":"^1.6.1","utif":"^3.1.0","vite":"^5.4.11","xlsx":"^0.18.5","jsdom":"^25.0.1","katex":"^0.16.47","react":"^18.3.1","ag-psd":"^28.5.1","fflate":"^0.8.3","ignore":"^6.0.2","marked":"^18.0.4","vitest":"^2.1.8","esbuild":"^0.21.5","js-yaml":"^4.1.0","leaflet":"^1.9.4","mammoth":"^1.12.0","heic2any":"^0.0.4","react-dom":"^18.3.1","react-pdf":"^10.4.1","typescript":"^5.6.3","@types/node":"^22.10.1","xxhash-wasm":"^1.1.0","@types/katex":"^0.16.8","@types/react":"^18.3.12","@jsquash/avif":"^2.1.1","@jsquash/webp":"^1.5.0","@types/js-yaml":"^4.0.9","@types/leaflet":"^1.9.21","@tmcw/togeojson":"^7.1.2","@types/react-dom":"^18.3.1","@asciidoctor/core":"^3.0.4","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.1.0"},"_npmOperationalInternal":{"tmp":"tmp/yamlover_0.3.25_1784239731714_0.6853145799344116","host":"s3://npm-registry-packages-npm-production"}},"0.3.48":{"name":"yamlover","version":"0.3.48","keywords":["yamlover","yaml","json5","viewer","browser","spa","knowledge-graph","pointers"],"author":{"name":"dims"},"license":"MIT","_id":"yamlover@0.3.48","maintainers":[{"name":"dimskraft","email":"dimskraft@gmail.com"}],"homepage":"https://github.com/dims12/yamlover#readme","bugs":{"url":"https://github.com/dims12/yamlover/issues"},"bin":{"yamlover":"bin/yamlover.js"},"dist":{"shasum":"5200650c5cbb6392a80818951abd7d75f386d653","tarball":"https://registry.npmjs.org/yamlover/-/yamlover-0.3.48.tgz","fileCount":102,"integrity":"sha512-mJScTk88IkUO64QeHlWBVZi2xID/MzcfF6glVOjB82n/3eEdvX3mj1yVzsoPgxRmBP1fHyr+5BaJI3I+HphUiQ==","signatures":[{"sig":"MEQCIFKoIHkrOHQvXJLygS96DjEyV0JXfWuQNO5WTSSVa0cgAiAaNaw0mrX5jfjEAOjVqOxPm6U1YBZe24CyJlHvi3Ecow==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/yamlover@0.3.48","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11477896},"type":"module","engines":{"node":">=22.13"},"gitHead":"139f4f8ed61511cc55d4fb63d3e0ded091c69db2","scripts":{"test":"vitest run","build":"node scripts/build.mjs","start":"node bin/yamlover.js","prepack":"node scripts/build.mjs","test:watch":"vitest","gen:edit-fixtures":"node scripts/gen-edit-fixtures.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:14afcabd-0536-4d0b-aeda-ef7dc5925ffd"}},"repository":{"url":"git+https://github.com/dims12/yamlover.git","type":"git","directory":"tools/server"},"_npmVersion":"11.16.0","description":"Browse a yamlover tree in the web: npx yamlover <root> serves a React SPA over a directory.","directories":{},"_nodeVersion":"24.18.0","comment:deps":"No runtime dependencies: the client deps are bundled into dist/client by `vite build` and the server deps (ignore/js-yaml/xxhash-wasm, plus the thumbnail extractors jimp + ag-psd + @jsquash/webp + @jsquash/avif — dynamically imported so they stay out of the cold-start path) into dist/server.js by esbuild. The @jsquash codecs' .wasm is copied to dist/wasm by build.mjs (esbuild bundles only their JS glue). Everything below is build-/test-time only.","_hasShrinkwrap":false,"comment:engines":"22.13, not 22: the engine's store imports the built-in node:sqlite, which is only available unflagged from Node 22.13 (bin/yamlover.js checks at startup and says so, since npm merely WARNS on an engines mismatch).","devDependencies":{"jimp":"^1.6.1","utif":"^3.1.0","vite":"^5.4.11","xlsx":"^0.18.5","jsdom":"^25.0.1","katex":"^0.16.47","react":"^18.3.1","ag-psd":"^28.5.1","fflate":"^0.8.3","ignore":"^6.0.2","marked":"^18.0.4","vitest":"^2.1.8","esbuild":"^0.21.5","js-yaml":"^4.1.0","leaflet":"^1.9.4","mammoth":"^1.12.0","heic2any":"^0.0.4","react-dom":"^18.3.1","react-pdf":"^10.4.1","typescript":"^5.6.3","@types/node":"^22.10.1","xxhash-wasm":"^1.1.0","@types/katex":"^0.16.8","@types/react":"^18.3.12","@jsquash/avif":"^2.1.1","@jsquash/webp":"^1.5.0","@types/js-yaml":"^4.0.9","@types/leaflet":"^1.9.21","@tmcw/togeojson":"^7.1.2","@types/react-dom":"^18.3.1","@asciidoctor/core":"^3.0.4","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.1.0"},"_npmOperationalInternal":{"tmp":"tmp/yamlover_0.3.48_1785396072797_0.8704503447446326","host":"s3://npm-registry-packages-npm-production"}},"0.3.49":{"name":"yamlover","version":"0.3.49","keywords":["yamlover","yaml","json5","editor","browser","spa","knowledge-graph","knowledge-base","pointers","llm","agent-memory","markdown-alternative"],"author":{"name":"dims"},"license":"MIT","_id":"yamlover@0.3.49","maintainers":[{"name":"dimskraft","email":"dimskraft@gmail.com"}],"homepage":"https://yamlover.inthemoon.net/docs","bugs":{"url":"https://github.com/dims12/yamlover/issues"},"bin":{"yamlover":"bin/yamlover.js"},"dist":{"shasum":"a7b8d7d97d0fe8dba6fa482e810dcd56be33f0e0","tarball":"https://registry.npmjs.org/yamlover/-/yamlover-0.3.49.tgz","fileCount":106,"integrity":"sha512-XabE8G5U7zHa6GJ8lUnDJyouCBeHO1AH+iR0UZif1PrMITbf0d0JZAEg+PxEpv6XYujZask4IeWtQR0aGWbG8Q==","signatures":[{"sig":"MEUCIQDfJ7ssgkg7+erpNB3nNUtWc0aWJ+EDHtyevA6qR93M0wIgBMojFUX43/EcarKxLrjJjG/7+1conR03MowiLZhQqWE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/yamlover@0.3.49","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11801916},"type":"module","engines":{"node":">=22.13"},"gitHead":"12039f6fadd3f084de0fdd2a98c15d08e8010e81","scripts":{"test":"vitest run","build":"node scripts/build.mjs","start":"node bin/yamlover.js","prepack":"node scripts/build.mjs","test:watch":"vitest","gen:edit-fixtures":"node scripts/gen-edit-fixtures.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:14afcabd-0536-4d0b-aeda-ef7dc5925ffd"}},"repository":{"url":"git+https://github.com/dims12/yamlover.git","type":"git","directory":"tools/server"},"_npmVersion":"11.16.0","description":"A local-first, editable knowledge graph for humans and LLMs: npx yamlover <root> serves a browser UI over a plain-text directory, with an editor, live queries, pointers, and an LLM-agent API.","directories":{},"_nodeVersion":"24.18.0","comment:deps":"No runtime dependencies: the client deps are bundled into dist/client by `vite build` and the server deps (ignore/js-yaml/xxhash-wasm, plus the thumbnail extractors jimp + ag-psd + @jsquash/webp + @jsquash/avif — dynamically imported so they stay out of the cold-start path) into dist/server.js by esbuild. The @jsquash codecs' .wasm is copied to dist/wasm by build.mjs (esbuild bundles only their JS glue). Everything below is build-/test-time only.","_hasShrinkwrap":false,"comment:engines":"22.13, not 22: the engine's store imports the built-in node:sqlite, which is only available unflagged from Node 22.13 (bin/yamlover.js checks at startup and says so, since npm merely WARNS on an engines mismatch).","devDependencies":{"jimp":"^1.6.1","utif":"^3.1.0","vite":"^5.4.11","xlsx":"^0.18.5","jsdom":"^25.0.1","katex":"^0.16.47","react":"^18.3.1","ag-psd":"^28.5.1","fflate":"^0.8.3","ignore":"^6.0.2","marked":"^18.0.4","vitest":"^2.1.8","esbuild":"^0.21.5","js-yaml":"^4.1.0","leaflet":"^1.9.4","mammoth":"^1.12.0","heic2any":"^0.0.4","react-dom":"^18.3.1","react-pdf":"^10.4.1","typescript":"^5.6.3","@types/node":"^22.10.1","xxhash-wasm":"^1.1.0","@types/katex":"^0.16.8","@types/react":"^18.3.12","@jsquash/avif":"^2.1.1","@jsquash/webp":"^1.5.0","@xyflow/react":"^12.11.2","@dagrejs/dagre":"^3.1.0","@types/js-yaml":"^4.0.9","@types/leaflet":"^1.9.21","@tmcw/togeojson":"^7.1.2","@types/react-dom":"^18.3.1","@asciidoctor/core":"^3.0.4","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.1.0"},"_npmOperationalInternal":{"tmp":"tmp/yamlover_0.3.49_1786355732681_0.13475717655623431","host":"s3://npm-registry-packages-npm-production"}},"0.3.50":{"name":"yamlover","version":"0.3.50","keywords":["yamlover","yaml","json5","editor","browser","spa","knowledge-graph","knowledge-base","pointers","llm","agent-memory","markdown-alternative"],"author":{"name":"dims"},"license":"MIT","_id":"yamlover@0.3.50","maintainers":[{"name":"dimskraft","email":"dimskraft@gmail.com"}],"homepage":"https://yamlover.inthemoon.net/docs","bugs":{"url":"https://github.com/dims12/yamlover/issues"},"bin":{"yamlover":"bin/yamlover.js"},"dist":{"shasum":"b1af6cbe4260525a7fe66080ada6eb0f2174f553","tarball":"https://registry.npmjs.org/yamlover/-/yamlover-0.3.50.tgz","fileCount":106,"integrity":"sha512-0b6+R13LU9TznqIGVFXQk+gXhWzLlD2XYhCCMoqhpoLvBM06UMQEz/xko7EudmJ8FF3BDIkc7UEmyDlT4GGLpQ==","signatures":[{"sig":"MEYCIQC60vCWdocPlYMvyImoaJobZVCHn/UZfiqNenoK6EGB4QIhAOgwRD9P+96Se+dA64JoE8kxsSX7L/H+R2RBsHZBqfl2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/yamlover@0.3.50","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11879714},"type":"module","engines":{"node":">=22.13"},"gitHead":"d85455500931fb8469c3a8680bc9d8acef5d2714","scripts":{"test":"vitest run","build":"node scripts/build.mjs","start":"node bin/yamlover.js","prepack":"node scripts/build.mjs","test:watch":"vitest","gen:edit-fixtures":"node scripts/gen-edit-fixtures.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:14afcabd-0536-4d0b-aeda-ef7dc5925ffd"}},"repository":{"url":"git+https://github.com/dims12/yamlover.git","type":"git","directory":"tools/server"},"_npmVersion":"11.17.0","description":"A local-first, editable knowledge graph for humans and LLMs: npx yamlover <root> serves a browser UI over a plain-text directory, with an editor, live queries, pointers, and an LLM-agent API.","directories":{},"_nodeVersion":"24.19.0","comment:deps":"No runtime dependencies: the client deps are bundled into dist/client by `vite build` and the server deps (ignore/js-yaml/xxhash-wasm, plus the thumbnail extractors jimp + ag-psd + @jsquash/webp + @jsquash/avif — dynamically imported so they stay out of the cold-start path) into dist/server.js by esbuild. The @jsquash codecs' .wasm is copied to dist/wasm by build.mjs (esbuild bundles only their JS glue). Everything below is build-/test-time only.","_hasShrinkwrap":false,"comment:engines":"22.13, not 22: the engine's store imports the built-in node:sqlite, which is only available unflagged from Node 22.13 (bin/yamlover.js checks at startup and says so, since npm merely WARNS on an engines mismatch).","devDependencies":{"jimp":"^1.6.1","utif":"^3.1.0","vite":"^5.4.11","xlsx":"^0.18.5","jsdom":"^25.0.1","katex":"^0.16.47","react":"^18.3.1","ag-psd":"^28.5.1","fflate":"^0.8.3","ignore":"^6.0.2","marked":"^18.0.4","vitest":"^2.1.8","esbuild":"^0.21.5","js-yaml":"^4.1.0","leaflet":"^1.9.4","mammoth":"^1.12.0","heic2any":"^0.0.4","react-dom":"^18.3.1","react-pdf":"^10.4.1","typescript":"^5.6.3","@types/node":"^22.10.1","xxhash-wasm":"^1.1.0","@types/katex":"^0.16.8","@types/react":"^18.3.12","@jsquash/avif":"^2.1.1","@jsquash/webp":"^1.5.0","@xyflow/react":"^12.11.2","@dagrejs/dagre":"^3.1.0","@types/js-yaml":"^4.0.9","@types/leaflet":"^1.9.21","@tmcw/togeojson":"^7.1.2","@types/react-dom":"^18.3.1","@asciidoctor/core":"^3.0.4","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.1.0"},"_npmOperationalInternal":{"tmp":"tmp/yamlover_0.3.50_1786836244460_0.0205702549382083","host":"s3://npm-registry-packages-npm-production"}},"0.3.51":{"name":"yamlover","version":"0.3.51","keywords":["yamlover","yaml","json5","editor","browser","spa","knowledge-graph","knowledge-base","pointers","llm","agent-memory","markdown-alternative"],"author":{"name":"dims"},"license":"MIT","_id":"yamlover@0.3.51","maintainers":[{"name":"dimskraft","email":"dimskraft@gmail.com"}],"homepage":"https://yamlover.inthemoon.net/docs","bugs":{"url":"https://github.com/dims12/yamlover/issues"},"bin":{"yamlover":"bin/yamlover.js"},"dist":{"shasum":"b77b26d3d71e6be2e86a20e6382bd778501c470b","tarball":"https://registry.npmjs.org/yamlover/-/yamlover-0.3.51.tgz","fileCount":106,"integrity":"sha512-7KaujcaZMZUKfJSAR8S+bTGtOgSO5nif69xZjAiBlF2FTp0gKJLwQe7PCa5nhb0nP2N0zYf96bwz045IZDIDfw==","signatures":[{"sig":"MEUCIQDKofMfpkw5qmTpmJdnrKgSKkoJZUjuJpMFShAmduR4tgIgRngz5PTbPByUM00lOBhsvXPj4wE9NEGpFdc7Bjbes5Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/yamlover@0.3.51","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11879859},"type":"module","engines":{"node":">=22.13"},"gitHead":"0a9e4d21c883816fa6b9e7a82c416e1135670a94","scripts":{"test":"vitest run","build":"node scripts/build.mjs","start":"node bin/yamlover.js","prepack":"node scripts/build.mjs","test:watch":"vitest","gen:edit-fixtures":"node scripts/gen-edit-fixtures.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:14afcabd-0536-4d0b-aeda-ef7dc5925ffd"}},"repository":{"url":"git+https://github.com/dims12/yamlover.git","type":"git","directory":"tools/server"},"_npmVersion":"11.17.0","description":"A local-first, editable knowledge graph for humans and LLMs: npx yamlover <root> serves a browser UI over a plain-text directory, with an editor, live queries, pointers, and an LLM-agent API.","directories":{},"_nodeVersion":"24.19.0","comment:deps":"No runtime dependencies: the client deps are bundled into dist/client by `vite build` and the server deps (ignore/js-yaml/xxhash-wasm, plus the thumbnail extractors jimp + ag-psd + @jsquash/webp + @jsquash/avif — dynamically imported so they stay out of the cold-start path) into dist/server.js by esbuild. The @jsquash codecs' .wasm is copied to dist/wasm by build.mjs (esbuild bundles only their JS glue). Everything below is build-/test-time only.","_hasShrinkwrap":false,"comment:engines":"22.13, not 22: the engine's store imports the built-in node:sqlite, which is only available unflagged from Node 22.13 (bin/yamlover.js checks at startup and says so, since npm merely WARNS on an engines mismatch).","devDependencies":{"jimp":"^1.6.1","utif":"^3.1.0","vite":"^5.4.11","xlsx":"^0.18.5","jsdom":"^25.0.1","katex":"^0.16.47","react":"^18.3.1","ag-psd":"^28.5.1","fflate":"^0.8.3","ignore":"^6.0.2","marked":"^18.0.4","vitest":"^2.1.8","esbuild":"^0.21.5","js-yaml":"^4.1.0","leaflet":"^1.9.4","mammoth":"^1.12.0","heic2any":"^0.0.4","react-dom":"^18.3.1","react-pdf":"^10.4.1","typescript":"^5.6.3","@types/node":"^22.10.1","xxhash-wasm":"^1.1.0","@types/katex":"^0.16.8","@types/react":"^18.3.12","@jsquash/avif":"^2.1.1","@jsquash/webp":"^1.5.0","@xyflow/react":"^12.11.2","@dagrejs/dagre":"^3.1.0","@types/js-yaml":"^4.0.9","@types/leaflet":"^1.9.21","@tmcw/togeojson":"^7.1.2","@types/react-dom":"^18.3.1","@asciidoctor/core":"^3.0.4","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.1.0"},"_npmOperationalInternal":{"tmp":"tmp/yamlover_0.3.51_1786867652454_0.9344545035667704","host":"s3://npm-registry-packages-npm-production"}},"0.3.52":{"name":"yamlover","version":"0.3.52","keywords":["yamlover","yaml","json5","editor","browser","spa","knowledge-graph","knowledge-base","pointers","llm","agent-memory","markdown-alternative"],"author":{"name":"dims"},"license":"MIT","_id":"yamlover@0.3.52","maintainers":[{"name":"dimskraft","email":"dimskraft@gmail.com"}],"homepage":"https://yamlover.inthemoon.net/docs","bugs":{"url":"https://github.com/dims12/yamlover/issues"},"bin":{"yamlover":"bin/yamlover.js"},"dist":{"shasum":"c6d4bf237a5a454ce49a9abde3b207b44ab2cd7c","tarball":"https://registry.npmjs.org/yamlover/-/yamlover-0.3.52.tgz","fileCount":106,"integrity":"sha512-ktaZF6sluDRlOe2606uQRvf8T6X8v7/ZK3szNR3tMCTf4KTguTkaDlgFRlXlT0NT6IDjnTog3R879uPtLrfW8w==","signatures":[{"sig":"MEUCIQDyoga28gC3a2HzHH6neUwAY6+ktSwbfXezWuZlgcEz8gIgOchQ7JjQN5eByOiEJFt35jhsynbMAx4u/9/lXMb3UJg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/yamlover@0.3.52","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11917347},"type":"module","engines":{"node":">=22.13"},"gitHead":"406f07e246ac3a30b9c0d0728eee9e88cbfeea52","scripts":{"test":"vitest run","build":"node scripts/build.mjs","start":"node bin/yamlover.js","prepack":"node scripts/build.mjs","test:watch":"vitest","gen:edit-fixtures":"node scripts/gen-edit-fixtures.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:14afcabd-0536-4d0b-aeda-ef7dc5925ffd"}},"repository":{"url":"git+https://github.com/dims12/yamlover.git","type":"git","directory":"tools/server"},"_npmVersion":"11.17.0","description":"A local-first, editable knowledge graph for humans and LLMs: npx yamlover <root> serves a browser UI over a plain-text directory, with an editor, live queries, pointers, and an LLM-agent API.","directories":{},"_nodeVersion":"24.19.0","comment:deps":"No runtime dependencies: the client deps are bundled into dist/client by `vite build` and the server deps (ignore/js-yaml/xxhash-wasm, plus the thumbnail extractors jimp + ag-psd + @jsquash/webp + @jsquash/avif — dynamically imported so they stay out of the cold-start path) into dist/server.js by esbuild. The @jsquash codecs' .wasm is copied to dist/wasm by build.mjs (esbuild bundles only their JS glue). Everything below is build-/test-time only.","_hasShrinkwrap":false,"comment:engines":"22.13, not 22: the engine's store imports the built-in node:sqlite, which is only available unflagged from Node 22.13 (bin/yamlover.js checks at startup and says so, since npm merely WARNS on an engines mismatch).","devDependencies":{"jimp":"^1.6.1","utif":"^3.1.0","vite":"^5.4.11","xlsx":"^0.18.5","jsdom":"^25.0.1","katex":"^0.16.47","react":"^18.3.1","ag-psd":"^28.5.1","fflate":"^0.8.3","ignore":"^6.0.2","marked":"^18.0.4","vitest":"^2.1.8","esbuild":"^0.21.5","js-yaml":"^4.1.0","leaflet":"^1.9.4","mammoth":"^1.12.0","heic2any":"^0.0.4","react-dom":"^18.3.1","react-pdf":"^10.4.1","typescript":"^5.6.3","@types/node":"^22.10.1","xxhash-wasm":"^1.1.0","@types/katex":"^0.16.8","@types/react":"^18.3.12","@jsquash/avif":"^2.1.1","@jsquash/webp":"^1.5.0","@xyflow/react":"^12.11.2","@dagrejs/dagre":"^3.1.0","@types/js-yaml":"^4.0.9","@types/leaflet":"^1.9.21","@tmcw/togeojson":"^7.1.2","@types/react-dom":"^18.3.1","@asciidoctor/core":"^3.0.4","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.1.0"},"_npmOperationalInternal":{"tmp":"tmp/yamlover_0.3.52_1786908263187_0.4164644950797671","host":"s3://npm-registry-packages-npm-production"}},"0.3.53":{"name":"yamlover","version":"0.3.53","keywords":["yamlover","yaml","json5","editor","browser","spa","knowledge-graph","knowledge-base","pointers","llm","agent-memory","markdown-alternative"],"author":{"name":"dims"},"license":"MIT","_id":"yamlover@0.3.53","maintainers":[{"name":"dimskraft","email":"dimskraft@gmail.com"}],"homepage":"https://yamlover.inthemoon.net/docs","bugs":{"url":"https://github.com/dims12/yamlover/issues"},"bin":{"yamlover":"bin/yamlover.js"},"dist":{"shasum":"e1e2c8a10a53fa0de8875ab58746c12249644cca","tarball":"https://registry.npmjs.org/yamlover/-/yamlover-0.3.53.tgz","fileCount":107,"integrity":"sha512-lvVTbGpPpr3Nw3Mea/b1/z8zH0wH1PkMmaw8RbTlL0BWSqIfRA8W4t9baNpstH0bKw3ly5BirxPjxmyclKilwg==","signatures":[{"sig":"MEQCIEgeKobdens1uN/3F1RjSV/iUOhJIHV/MJCdvY44EFWfAiAQyvT7iDLYF/lwJA/nlamqdHoJ7rZmfteWDToMtzxzng==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/yamlover@0.3.53","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11919667},"type":"module","engines":{"node":">=22.13"},"gitHead":"24939878c330d237b11509bf90e5b3fc29fb4cf7","scripts":{"test":"vitest run","build":"node scripts/build.mjs","start":"node bin/yamlover.js","prepack":"node scripts/build.mjs","test:watch":"vitest","gen:edit-fixtures":"node scripts/gen-edit-fixtures.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:14afcabd-0536-4d0b-aeda-ef7dc5925ffd"}},"repository":{"url":"git+https://github.com/dims12/yamlover.git","type":"git","directory":"tools/server"},"_npmVersion":"11.17.0","description":"A local-first, editable knowledge graph for humans and LLMs: npx yamlover <root> serves a browser UI over a plain-text directory, with an editor, live queries, pointers, and an LLM-agent API.","directories":{},"_nodeVersion":"24.19.0","comment:deps":"No runtime dependencies: the client deps are bundled into dist/client by `vite build` and the server deps (ignore/js-yaml/xxhash-wasm, plus the thumbnail extractors jimp + ag-psd + @jsquash/webp + @jsquash/avif — dynamically imported so they stay out of the cold-start path) into dist/server.js by esbuild. The @jsquash codecs' .wasm is copied to dist/wasm by build.mjs (esbuild bundles only their JS glue). Everything below is build-/test-time only.","_hasShrinkwrap":false,"comment:engines":"22.13, not 22: the engine's store imports the built-in node:sqlite, which is only available unflagged from Node 22.13 (bin/yamlover.js checks at startup and says so, since npm merely WARNS on an engines mismatch).","devDependencies":{"jimp":"^1.6.1","utif":"^3.1.0","vite":"^5.4.11","xlsx":"^0.18.5","jsdom":"^25.0.1","katex":"^0.16.47","react":"^18.3.1","ag-psd":"^28.5.1","fflate":"^0.8.3","ignore":"^6.0.2","marked":"^18.0.4","vitest":"^2.1.8","esbuild":"^0.21.5","js-yaml":"^4.1.0","leaflet":"^1.9.4","mammoth":"^1.12.0","heic2any":"^0.0.4","react-dom":"^18.3.1","react-pdf":"^10.4.1","typescript":"^5.6.3","@types/node":"^22.10.1","xxhash-wasm":"^1.1.0","@types/katex":"^0.16.8","@types/react":"^18.3.12","@jsquash/avif":"^2.1.1","@jsquash/webp":"^1.5.0","@xyflow/react":"^12.11.2","@dagrejs/dagre":"^3.1.0","@types/js-yaml":"^4.0.9","@types/leaflet":"^1.9.21","@tmcw/togeojson":"^7.1.2","@types/react-dom":"^18.3.1","@asciidoctor/core":"^3.0.4","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.1.0"},"_npmOperationalInternal":{"tmp":"tmp/yamlover_0.3.53_1786953674739_0.770384520252452","host":"s3://npm-registry-packages-npm-production"}},"0.3.54":{"name":"yamlover","version":"0.3.54","keywords":["yamlover","yaml","json5","editor","browser","spa","knowledge-graph","knowledge-base","pointers","llm","agent-memory","markdown-alternative"],"author":{"name":"dims"},"license":"MIT","_id":"yamlover@0.3.54","maintainers":[{"name":"dimskraft","email":"dimskraft@gmail.com"}],"homepage":"https://yamlover.inthemoon.net/docs","bugs":{"url":"https://github.com/dims12/yamlover/issues"},"bin":{"yamlover":"bin/yamlover.js"},"dist":{"shasum":"55b5a292510b6d439631a2380edd37a82fa99ae2","tarball":"https://registry.npmjs.org/yamlover/-/yamlover-0.3.54.tgz","fileCount":107,"integrity":"sha512-3O75RfkBvLQ47x4lPMHpVYZhctSIRuYdDyyRfiw/IMWlADa2v5U+DuyjTek1Jv7Krb2FrT78kF1OTFSFqjkE8Q==","signatures":[{"sig":"MEUCIQDwwxwp13H0lARQepefIXOAR0x0qiF1lafBWbERyOzaKgIgC3+dOxCZb40MU9t1PJK4QYtMuBUYL98pv4ikOKkbzwc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/yamlover@0.3.54","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11928247},"type":"module","engines":{"node":">=22.13"},"gitHead":"e6d6ec0ec479b3d938ffd9b1892f1f24ca7cfb85","scripts":{"test":"vitest run","build":"node scripts/build.mjs","start":"node bin/yamlover.js","prepack":"node scripts/build.mjs","test:watch":"vitest","gen:edit-fixtures":"node scripts/gen-edit-fixtures.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:14afcabd-0536-4d0b-aeda-ef7dc5925ffd"}},"repository":{"url":"git+https://github.com/dims12/yamlover.git","type":"git","directory":"tools/server"},"_npmVersion":"11.17.0","description":"A local-first, editable knowledge graph for humans and LLMs: npx yamlover <root> serves a browser UI over a plain-text directory, with an editor, live queries, pointers, and an LLM-agent API.","directories":{},"_nodeVersion":"24.19.0","comment:deps":"No runtime dependencies: the client deps are bundled into dist/client by `vite build` and the server deps (ignore/js-yaml/xxhash-wasm, plus the thumbnail extractors jimp + ag-psd + @jsquash/webp + @jsquash/avif — dynamically imported so they stay out of the cold-start path) into dist/server.js by esbuild. The @jsquash codecs' .wasm is copied to dist/wasm by build.mjs (esbuild bundles only their JS glue). Everything below is build-/test-time only.","_hasShrinkwrap":false,"comment:engines":"22.13, not 22: the engine's store imports the built-in node:sqlite, which is only available unflagged from Node 22.13 (bin/yamlover.js checks at startup and says so, since npm merely WARNS on an engines mismatch).","devDependencies":{"jimp":"^1.6.1","utif":"^3.1.0","vite":"^5.4.11","xlsx":"^0.18.5","jsdom":"^25.0.1","katex":"^0.16.47","react":"^18.3.1","ag-psd":"^28.5.1","fflate":"^0.8.3","ignore":"^6.0.2","marked":"^18.0.4","vitest":"^2.1.8","esbuild":"^0.21.5","js-yaml":"^4.1.0","leaflet":"^1.9.4","mammoth":"^1.12.0","heic2any":"^0.0.4","react-dom":"^18.3.1","react-pdf":"^10.4.1","typescript":"^5.6.3","@types/node":"^22.10.1","xxhash-wasm":"^1.1.0","@types/katex":"^0.16.8","@types/react":"^18.3.12","@jsquash/avif":"^2.1.1","@jsquash/webp":"^1.5.0","@xyflow/react":"^12.11.2","@dagrejs/dagre":"^3.1.0","@types/js-yaml":"^4.0.9","@types/leaflet":"^1.9.21","@tmcw/togeojson":"^7.1.2","@types/react-dom":"^18.3.1","@asciidoctor/core":"^3.0.4","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.1.0"},"_npmOperationalInternal":{"tmp":"tmp/yamlover_0.3.54_1786956706495_0.3676304459442892","host":"s3://npm-registry-packages-npm-production"}},"0.3.55":{"name":"yamlover","version":"0.3.55","keywords":["yamlover","yaml","json5","editor","browser","spa","knowledge-graph","knowledge-base","pointers","llm","agent-memory","markdown-alternative"],"author":{"name":"dims"},"license":"MIT","_id":"yamlover@0.3.55","maintainers":[{"name":"dimskraft","email":"dimskraft@gmail.com"}],"homepage":"https://yamlover.inthemoon.net/docs","bugs":{"url":"https://github.com/dims12/yamlover/issues"},"bin":{"yamlover":"bin/yamlover.js"},"dist":{"shasum":"6dd0541c3e5e39eda53618d49815b5b6760f1720","tarball":"https://registry.npmjs.org/yamlover/-/yamlover-0.3.55.tgz","fileCount":107,"integrity":"sha512-pHBqPPP1DUCJMoZAKAN780cRmnshGnJiS/pnwNj+xvf/KJyp2U7GghFEWYXpfujTUY7ClM29DyXAvCg6ZnLmWQ==","signatures":[{"sig":"MEUCIC5zvGcCFzNqdWdk1l7W9SSGT+Vhmc3eRwNUP+ov1RMtAiEAwtxWDJGZmCh7xi5rX4kVCKkkL5iCjtPJyjSnt/IYIbs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/yamlover@0.3.55","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11931181},"type":"module","engines":{"node":">=22.13"},"gitHead":"41f843005b716e36bba763cecea1238cfb262679","scripts":{"test":"vitest run","build":"node scripts/build.mjs","start":"node bin/yamlover.js","prepack":"node scripts/build.mjs","test:watch":"vitest","gen:edit-fixtures":"node scripts/gen-edit-fixtures.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:14afcabd-0536-4d0b-aeda-ef7dc5925ffd"}},"repository":{"url":"git+https://github.com/dims12/yamlover.git","type":"git","directory":"tools/server"},"_npmVersion":"11.17.0","description":"A local-first, editable knowledge graph for humans and LLMs: npx yamlover <root> serves a browser UI over a plain-text directory, with an editor, live queries, pointers, and an LLM-agent API.","directories":{},"_nodeVersion":"24.19.0","comment:deps":"No runtime dependencies: the client deps are bundled into dist/client by `vite build` and the server deps (ignore/js-yaml/xxhash-wasm, plus the thumbnail extractors jimp + ag-psd + @jsquash/webp + @jsquash/avif — dynamically imported so they stay out of the cold-start path) into dist/server.js by esbuild. The @jsquash codecs' .wasm is copied to dist/wasm by build.mjs (esbuild bundles only their JS glue). Everything below is build-/test-time only.","_hasShrinkwrap":false,"comment:engines":"22.13, not 22: the engine's store imports the built-in node:sqlite, which is only available unflagged from Node 22.13 (bin/yamlover.js checks at startup and says so, since npm merely WARNS on an engines mismatch).","devDependencies":{"jimp":"^1.6.1","utif":"^3.1.0","vite":"^5.4.11","xlsx":"^0.18.5","jsdom":"^25.0.1","katex":"^0.16.47","react":"^18.3.1","ag-psd":"^28.5.1","fflate":"^0.8.3","ignore":"^6.0.2","marked":"^18.0.4","vitest":"^2.1.8","esbuild":"^0.21.5","js-yaml":"^4.1.0","leaflet":"^1.9.4","mammoth":"^1.12.0","heic2any":"^0.0.4","react-dom":"^18.3.1","react-pdf":"^10.4.1","typescript":"^5.6.3","@types/node":"^22.10.1","xxhash-wasm":"^1.1.0","@types/katex":"^0.16.8","@types/react":"^18.3.12","@jsquash/avif":"^2.1.1","@jsquash/webp":"^1.5.0","@xyflow/react":"^12.11.2","@dagrejs/dagre":"^3.1.0","@types/js-yaml":"^4.0.9","@types/leaflet":"^1.9.21","@tmcw/togeojson":"^7.1.2","@types/react-dom":"^18.3.1","@asciidoctor/core":"^3.0.4","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.1.0"},"_npmOperationalInternal":{"tmp":"tmp/yamlover_0.3.55_1786967350749_0.7247071694505183","host":"s3://npm-registry-packages-npm-production"}},"0.3.56":{"name":"yamlover","version":"0.3.56","keywords":["yamlover","yaml","json5","editor","browser","spa","knowledge-graph","knowledge-base","pointers","llm","agent-memory","markdown-alternative"],"author":{"name":"dims"},"license":"MIT","_id":"yamlover@0.3.56","maintainers":[{"name":"dimskraft","email":"dimskraft@gmail.com"}],"homepage":"https://yamlover.inthemoon.net/docs","bugs":{"url":"https://github.com/dims12/yamlover/issues"},"bin":{"yamlover":"bin/yamlover.js"},"dist":{"shasum":"546d9c0062da5043df8fe833b9db348d73be96e4","tarball":"https://registry.npmjs.org/yamlover/-/yamlover-0.3.56.tgz","fileCount":107,"integrity":"sha512-S62/ik2FzyHRExfSE5Xf/OSGUzqj9Fx7t0HixM6hTe2/Sibkmu1mWvwibSY8EjmES6gFf/dIVziSjF/AttPywQ==","signatures":[{"sig":"MEYCIQCnS+5Gm0ev0EBK8tpIHQ3x2QVH+CF7IYaZLJiRCNUiLwIhAJ2qK38l2AVoFt0OCv6oI0T3hrcOiW9lLjlXkbaR2fOz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/yamlover@0.3.56","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11951266},"type":"module","engines":{"node":">=22.13"},"gitHead":"a569a64104164ea2db6a35603bc8f563febca8d9","scripts":{"test":"vitest run","build":"node scripts/build.mjs","start":"node bin/yamlover.js","prepack":"node scripts/build.mjs","test:watch":"vitest","gen:edit-fixtures":"node scripts/gen-edit-fixtures.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:14afcabd-0536-4d0b-aeda-ef7dc5925ffd"}},"repository":{"url":"git+https://github.com/dims12/yamlover.git","type":"git","directory":"tools/server"},"_npmVersion":"11.17.0","description":"A local-first, editable knowledge graph for humans and LLMs: npx yamlover <root> serves a browser UI over a plain-text directory, with an editor, live queries, pointers, and an LLM-agent API.","directories":{},"_nodeVersion":"24.19.0","comment:deps":"No runtime dependencies: the client deps are bundled into dist/client by `vite build` and the server deps (ignore/js-yaml/xxhash-wasm, plus the thumbnail extractors jimp + ag-psd + @jsquash/webp + @jsquash/avif — dynamically imported so they stay out of the cold-start path) into dist/server.js by esbuild. The @jsquash codecs' .wasm is copied to dist/wasm by build.mjs (esbuild bundles only their JS glue). Everything below is build-/test-time only.","_hasShrinkwrap":false,"comment:engines":"22.13, not 22: the engine's store imports the built-in node:sqlite, which is only available unflagged from Node 22.13 (bin/yamlover.js checks at startup and says so, since npm merely WARNS on an engines mismatch).","devDependencies":{"jimp":"^1.6.1","utif":"^3.1.0","vite":"^5.4.11","xlsx":"^0.18.5","jsdom":"^25.0.1","katex":"^0.16.47","react":"^18.3.1","ag-psd":"^28.5.1","fflate":"^0.8.3","ignore":"^6.0.2","marked":"^18.0.4","vitest":"^2.1.8","esbuild":"^0.21.5","js-yaml":"^4.1.0","leaflet":"^1.9.4","mammoth":"^1.12.0","heic2any":"^0.0.4","react-dom":"^18.3.1","react-pdf":"^10.4.1","typescript":"^5.6.3","@types/node":"^22.10.1","xxhash-wasm":"^1.1.0","@types/katex":"^0.16.8","@types/react":"^18.3.12","@jsquash/avif":"^2.1.1","@jsquash/webp":"^1.5.0","@xyflow/react":"^12.11.2","@dagrejs/dagre":"^3.1.0","@types/js-yaml":"^4.0.9","@types/leaflet":"^1.9.21","@tmcw/togeojson":"^7.1.2","@types/react-dom":"^18.3.1","@asciidoctor/core":"^3.0.4","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.1.0"},"_npmOperationalInternal":{"tmp":"tmp/yamlover_0.3.56_1787032013846_0.09651306842358287","host":"s3://npm-registry-packages-npm-production"}},"0.3.58":{"_id":"yamlover@0.3.58","bin":{"yamlover":"bin/yamlover.js"},"bugs":{"url":"https://github.com/dims12/yamlover/issues"},"dist":{"shasum":"eb6f1d4d7dea580efa8c7f5bc7f5a0a8ceb665d7","tarball":"https://registry.npmjs.org/yamlover/-/yamlover-0.3.58.tgz","fileCount":115,"integrity":"sha512-Uobp+nsA2QnOLKJ1Qv74RLG7SN8A0NJ3Zwgcrbw8XLuCRb+zVEBC1zrtztDM5qKqcpiISMol+jB0rTRjOzAwoQ==","signatures":[{"sig":"MEUCICjmn5agy0pQvfN9OpQDiccJd/BrGwQ015Sy+JwZLKMXAiEA6TOQdfma6BDWaZT5SBnDih1/N5pVWgCXc4xfJWN5QuA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCNVeW8V/77dJYiWtp6qMzXSdRuFZfyM43klqz6ZKI6RwIgDSzxHHLXrm+dDnD+WCoHnK3BoZaqZwxaSkK2v99+ym4="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/yamlover@0.3.58","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12421664},"name":"yamlover","type":"module","author":{"name":"dims"},"engines":{"node":">=22.13"},"gitHead":"0596850634808238dcfb02c13b0ac36596f0957b","license":"MIT","scripts":{"test":"vitest run","build":"node scripts/build.mjs","start":"node bin/yamlover.js","prepack":"node scripts/build.mjs","test:watch":"vitest","dev-run-docs":"node bin/yamlover.js ../../docs","dev-run-empty":"node scripts/dev-run-empty.mjs","dev-run-examples":"node scripts/dev-run-examples.mjs","gen:edit-fixtures":"node scripts/gen-edit-fixtures.ts","gen:wire-fixtures":"node scripts/gen-wire-fixtures.mjs"},"version":"0.3.58","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:14afcabd-0536-4d0b-aeda-ef7dc5925ffd"}},"homepage":"https://yamlover.inthemoon.net/docs","keywords":["yamlover","yaml","json5","editor","browser","spa","knowledge-graph","knowledge-base","pointers","llm","agent-memory","markdown-alternative"],"repository":{"url":"git+https://github.com/dims12/yamlover.git","type":"git","directory":"tools/server"},"_npmVersion":"11.19.0","description":"A local-first, editable knowledge graph for humans and LLMs: npx yamlover <root> serves a browser UI over a plain-text directory, with an editor, live queries, pointers, and an LLM-agent API.","directories":{},"maintainers":[{"name":"dimskraft","email":"dimskraft@gmail.com"}],"_nodeVersion":"24.20.0","comment:deps":"No runtime dependencies: the client deps are bundled into dist/client by `vite build` and the server deps (ignore/js-yaml/xxhash-wasm, plus the thumbnail extractors jimp + ag-psd + @jsquash/webp + @jsquash/avif — dynamically imported so they stay out of the cold-start path) into dist/server.js by esbuild. The @jsquash codecs' .wasm is copied to dist/wasm by build.mjs (esbuild bundles only their JS glue). Everything below is build-/test-time only.","_hasShrinkwrap":false,"comment:engines":"22.13, not 22: the engine's store imports the built-in node:sqlite, which is only available unflagged from Node 22.13 (bin/yamlover.js checks at startup and says so, since npm merely WARNS on an engines mismatch).","devDependencies":{"jimp":"^1.6.1","utif":"^3.1.0","vite":"^5.4.11","xlsx":"^0.18.5","jsdom":"^25.0.1","katex":"^0.16.47","react":"^18.3.1","ag-psd":"^28.5.1","fflate":"^0.8.3","ignore":"^6.0.2","marked":"^18.0.4","vitest":"^2.1.8","esbuild":"^0.21.5","js-yaml":"^4.1.0","leaflet":"^1.9.4","mammoth":"^1.12.0","heic2any":"^0.0.4","react-dom":"^18.3.1","react-pdf":"^10.4.1","typescript":"^5.6.3","@types/node":"^22.10.1","xxhash-wasm":"^1.1.0","@types/katex":"^0.16.8","@types/react":"^18.3.12","@jsquash/avif":"^2.1.1","@jsquash/webp":"^1.5.0","@webgpu/types":"^0.1.71","@xyflow/react":"^12.11.2","@dagrejs/dagre":"^3.1.0","@types/js-yaml":"^4.0.9","@types/leaflet":"^1.9.21","@tmcw/togeojson":"^7.1.2","@types/react-dom":"^18.3.1","@asciidoctor/core":"^3.0.4","@testing-library/dom":"^10.4.0","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.1.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/yamlover_0.3.58_1788908578677_0.18032718787116564"}}},"time":{"created":"2026-06-13T11:05:00.418Z","modified":"2026-09-08T23:02:59.233Z","0.3.0":"2026-06-13T11:05:00.664Z","0.3.1":"2026-06-13T11:33:29.998Z","0.3.2":"2026-06-13T22:14:25.657Z","0.3.3":"2026-06-13T23:21:17.492Z","0.3.4":"2026-06-14T23:05:40.220Z","0.3.5":"2026-06-15T10:01:09.918Z","0.3.6":"2026-06-15T10:25:42.380Z","0.3.7":"2026-06-15T18:04:44.737Z","0.3.10":"2026-06-18T10:50:39.527Z","0.3.11":"2026-06-18T11:26:47.001Z","0.3.12":"2026-06-21T08:49:28.626Z","0.3.13":"2026-06-21T08:52:49.949Z","0.3.14":"2026-06-23T21:23:26.354Z","0.3.21":"2026-07-09T11:49:58.822Z","0.3.22":"2026-07-09T12:47:20.744Z","0.3.23":"2026-07-09T22:32:59.261Z","0.3.24":"2026-07-14T21:17:52.382Z","0.3.25":"2026-07-16T22:08:51.967Z","0.3.48":"2026-07-30T07:21:13.089Z","0.3.49":"2026-08-10T09:55:32.902Z","0.3.50":"2026-08-15T23:24:04.703Z","0.3.51":"2026-08-16T08:07:32.699Z","0.3.52":"2026-08-16T19:24:23.419Z","0.3.53":"2026-08-17T08:01:14.959Z","0.3.54":"2026-08-17T08:51:46.849Z","0.3.55":"2026-08-17T11:49:10.980Z","0.3.56":"2026-08-18T05:46:54.090Z","0.3.58":"2026-09-08T23:02:58.913Z"},"bugs":{"url":"https://github.com/dims12/yamlover/issues"},"author":{"name":"dims"},"license":"MIT","homepage":"https://yamlover.inthemoon.net/docs","keywords":["yamlover","yaml","json5","editor","browser","spa","knowledge-graph","knowledge-base","pointers","llm","agent-memory","markdown-alternative"],"repository":{"url":"git+https://github.com/dims12/yamlover.git","type":"git","directory":"tools/server"},"description":"A local-first, editable knowledge graph for humans and LLMs: npx yamlover <root> serves a browser UI over a plain-text directory, with an editor, live queries, pointers, and an LLM-agent API.","maintainers":[{"name":"dimskraft","email":"dimskraft@gmail.com"}],"readme":"# yamlover\n\nA local-first, editable knowledge graph for humans and LLMs — one plain-text\ndirectory that a person edits like notes, an agent reads and writes like a\ndatabase, and `git` versions like code. This package is the web server: it\nserves a browser UI (tree, editor, renderers, live queries) over a yamlover\ndirectory, and an HTTP API an agent can drive directly.\n\n- **Repo:** https://github.com/dims12/yamlover\n- **Live demo** (no install): [yamlover.inthemoon.net](https://yamlover.inthemoon.net/?utm_source=npm&utm_medium=readme&utm_content=demo)\n- **Docs** (written in yamlover, click-through): [yamlover.inthemoon.net/docs](https://yamlover.inthemoon.net/docs?utm_source=npm&utm_medium=readme&utm_content=docs)\n\n```console\n$ npx yamlover [ROOT] [--port N] [--headless] [--host ADDR] [--base-path PREFIX] [--no-gitignore] [--prod] [--read-only]\n```\n\n`ROOT` is any yamlover entity — a project directory (one with a `.yo/`),\na plain directory, or a single file. It defaults to the current directory. The\ncommand starts a local web server — **bound to `127.0.0.1` (local only) by\ndefault**, the safe default for a personal viewer and for the desktop wrapper\n(`tools/desktop`) — and serves a React single-page app that browses the entity\nstarting from `ROOT`. Pass `--headless` to bind `0.0.0.0` (all interfaces, e.g.\nfor remote access with no GUI), or `--host ADDR` for an explicit override.\n`--prod` forces the prebuilt static client + bundled server (the default when\nthe dev sources aren't present, e.g. an installed package); without it, a\ncheckout runs the client from source via Vite with HMR.\n\nThe port defaults to **5173**; if it is taken, the launcher walks up (`+1`, up\nto 50 tries) and prints the URL it actually bound. `--base-path PREFIX` serves\nthe **whole app** (assets, every `/api/*` route, the SSE stream) under a URL\nprefix instead of `/` — for hosting several instances behind one reverse proxy\n(see `tools/demo`); the server strips the prefix itself and injects it into the\nSPA shell as `window.__BASE__`. The `BASE_PATH` env var seeds the same setting\n(an explicit flag wins), so a shell-less container image can inject it.\n\n`--read-only` serves the tree **content read-only** — e.g. publishing `docs/`:\nevery user-data-mutating request (edits, tagging, moves, renames, uploads,\nboard edits, agent-docs install) answers **403** `server is read-only`,\nenforced by a route allowlist on the backend, and the UI hides every\nmodification affordance (the flag rides into the SPA shell as\n`window.__READONLY__`; `GET /api/info` reports `readOnly` too). The server\nstill maintains its own index (`.yo/index.db`), so browsing stays fast and\nlive; but it never generates thumbnails (pre-existing ones still serve — a\nmiss falls back to the type glyph), never materializes `settings.yo`, and\nnever rewrites source files over an externally inferred move. The\n`YAMLOVER_READ_ONLY` env var (`1`/`true`/`yes`) seeds the same setting.\n\nThe page is split into two independently scrolling panes:\n\n- **Left — a table of contents.** A collapsible tree of **every** node — object\n  keys and array elements alike, scalars included (so a leaf like\n  `05-scalar-as-file` is listed and clickable). A node is *expandable* when it is\n  a container with children and has no *active* renderer (see *Renderers*); the\n  first three levels load expanded, and deeper branches load lazily via the\n  chevron. Each entry is labeled by its `title` when present, otherwise by its\n  key (objects) or `[index]` (arrays).\n\n  Each row carries a **type/format icon** (chosen by the node's `format`, falling\n  back to its type — `{}`/`[]` for object/array, `\"`/`#`/`◧` for\n  string/number/boolean, 📅/✉️/🔗/🖼️… for formats). The tree is agnostic to a\n  node's *concrete* (how it is stored) — that shows in the node view's tags.\n- **Right — the selected node.** A node with a registered renderer shows that\n  renderer's view; every node also offers a set of **data-representation tabs**,\n  always including:\n  - **yamlover** *(default)* — the node's value in yamlover (YAML-family) syntax.\n  - **yamlover/schema** — the node's instance schema.\n\n  plus **json5p** for a JSON-family file. All representations behave\n  **identically**: syntax-highlighted, **one level deep**, with every nested node\n  shown as a **hyperlink** you click to descend (never inlined) —\n  `{ object with N properties }`, `[ array with M items ]`, or\n  `< binary of N bytes >`. The selected representation is part of the URL\n  (`?format=`), so it is preserved as you navigate and is shareable.\n\n  A binary leaf's bytes are read only when you select it and view its value.\n\nThe page updates **live**: an FS watcher re-indexes on external edits and pushes\nwhat changed over an SSE stream (`/api/events`), so every surface (tree, node\nview, tag pages) refreshes without a reload.\n\nSurfaced *stray* files (those not described by the tree) honor `.gitignore` by\ndefault — `node_modules/`, build output, etc. are hidden. Pass `--no-gitignore`\nto show everything.\n\nThe browser URL is the node's path in **JSON space** — `/examples/0/markup` —\nplus `?format=` for the representation. Each key is percent-encoded, so a key\nthat itself contains a `/` (e.g. `@vitejs/plugin-react`) stays a single segment.\nIt updates as you navigate and is shareable / back-button friendly — opening a\ndeep link expands the TOC along the path and selects (and scrolls to) the target.\n\n**In-page scroll (the `#` rule).** A node deeper than the served page is reached by\nsplitting its path at the page boundary and replacing that `/` with `#`: for a full\npath `a/b/c/d` whose served page is `a/b`, the *scrollable* URL is `a/b#c/d` — the\npage loads `a/b` and scrolls to the `c/d` node within it. A **fragment** (a tagged\nregion — see `docs/annotations`) is one instance: a region of `…/IMG.jpg` lives at\n`…/IMG.jpg/yo/fragments/<slug>`, so its scrollable URL is\n`…/IMG.jpg#yo/fragments/<slug>` — opening it (or clicking the region in the\nfragments panel) scrolls/pans to **and briefly flashes** the region.\n\n## How it works\n\nThe server is backed by the yamlover **engine** (`tools/engine`): `walkDir`\nturns the directory concrete into the parser's IR, and a `Store` (a SQLite\nproperty-graph index) holds nodes and pointer edges. The HTTP layer\n(`src/server/engine-api.ts`) reads from the `Store` and emits the response\nshapes the React client consumes (the `$yamloverLink` / `$yamloverBinary` /\n`$yamloverMixed` markers, the schema view).\n\nThe on-disk index lives at `<root>/.yo/index.db`. It is a derived cache\nwith a persistent **file manifest** (path + hash + size + mtime): startup\nre-indexes against it (an offline reconcile — unchanged blobs are never re-read,\nso it is cheap), and the FS watcher re-indexes on edits and broadcasts the diff\nover `/api/events`.\n\n**Long-running work runs as background tasks** (`src/server/tasks.ts`): the HTTP\nserver listens immediately and serves the previous index (or an empty one on a\ncold start) while the initial walk and the background hasher (which fills in\ncontent hashes for large blobs the walk no longer reads) run. Store-mutating\njobs (index, mv, paste, annotate) serialize through one writer queue; reads\nnever wait. Progress lands both on the console and in the web UI (SSE `task`\nframes + `GET /api/tasks`).\n\nLeaf bytes are read **lazily**: materialization builds structure but does not\nread a leaf's content until that node is serialized.\n\n### Build\n\nThere are two run modes:\n\n- **Dev** (a checkout): the launcher runs [Vite](https://vitejs.dev) in\n  middleware mode, serving the client from source with HMR and loading the\n  server handler through Vite's `ssrLoadModule`.\n- **Prod** (`--prod`, or an installed package): the client is a prebuilt static\n  SPA under `dist/client` and the server handler is a single bundle at\n  `dist/server.js`. `scripts/build.mjs` produces both — `vite build` for the\n  client and `esbuild` for the server (bundling the engine, parser, and the\n  `ignore` / `js-yaml` / `xxhash-wasm` deps, plus the dynamically-imported\n  thumbnail codecs). It runs on `prepack`, so the published npm package ships\n  `dist/` and has **no runtime dependencies**.\n\n### API\n\nAll endpoints take a JSON-space `path` (default `/`); the value/schema endpoints\ntake an optional `depth` (container-nesting limit).\n\n| endpoint | returns |\n|----------|---------|\n| `GET /api/info` | the breadcrumb head (the root label) |\n| `GET /api/tree?path&depth` | the TOC subtree at `path`, `depth` levels deep (default 3) — fetched again per branch for lazy expansion |\n| `GET /api/content/{slash-path}?depth` | **THE ONE WIRE** (`text/yamlover`): the node as a yamlover envelope — header facets, the serialized `source` subtree (cut members respelled as pointers), the fragment-keyed `side` sidecar, `relations`. Clients parse it with the shared `tools/parser` and derive the legacy NodeJson locally |\n| `GET /api/schema?path&depth` | the node's instance schema, with the same link markers |\n| `GET /api/blob?path` | a file-backed node's **raw bytes**, with its (inferred) format as the `Content-Type` |\n| `GET /api/thumb?path&w&h` | a lazily-generated thumbnail of a file-backed blob |\n| `GET /api/tagged?path` | the materials filed under a tag (annotations → targets) |\n| `GET /api/annotations?path` | the annotations on a node |\n| `GET /api/query?q&path` | the query evaluator (colon match templates) |\n| `GET /api/dangling` | pointers that did not resolve at index time |\n| `GET /api/config` | the effective `settings.yo` — raw source + parsed settings (read-only; written via `/api/edit`, hot-reloaded on change) |\n| `GET /api/events` | SSE: `{type:\"diff\",…}` reindex diffs + `{type:\"task\",…}` progress |\n| `GET /api/tasks` | long-running tasks in flight (a snapshot for a fresh page) |\n| `POST /api/reindex` | manual reconcile (the watcher's fallback) |\n| `POST /api/edit` | the yamlover **editor** — surgical source edits (see below) |\n| `POST /api/preview` | **stateless**: render a standalone yamlover source as a content envelope, like `/api/content` (nothing touches the store) |\n| `POST /api/edit-text` | **stateless**: apply `/api/edit` ops to a standalone source, returning the new source |\n| `POST /api/paste` | clipboard paste / upload (text or files) |\n| `POST /api/mv` | mediated move (surgical inbound-ref rewrite + auto-relink) |\n| `POST /api/tag` | create-on-miss a tag in the taxonomy |\n| `POST / DELETE /api/annotate` | add / remove an annotation on a target |\n| `POST /api/fragment` | upsert a fragment (region of a target) |\n| `POST /api/board` | board mutations |\n| `POST /api/agent-docs` | install the LLM-agent guide (`AGENTS.yo` — a yamlover chapter covering the language, marklower, chapters, tables, annotations, tasks and boards, the API, with links to the online docs — plus a `AGENTS.md` — the stub every agent reads, pointing at it; an existing `CLAUDE.md` is kept in step) into the root — a marker-fenced block, updated in place on reinstall, appended after the human's own rules in a Markdown file, a human's own unfenced `AGENTS.yo` kept untouched; idempotent |\n\n#### `POST /api/edit` — the editor\n\nOne edit `{ path, op, yamlover?, meta?, concrete?, name? }`, or a batch `{ edits: [ … ] }` applied in\norder and grouped by backing file. It **splices source lines** rather than reserializing, so\ncomments, quoting, and block scalars elsewhere in the document survive an edit untouched.\n\n`path` is a plain yamlover path naming the node being edited; each segment is a key\n(`:doc:description`) or an **absolute entry index** (`:doc:3`, the bare-integer segment —\nkeyed entries consume indices too; the retired `:doc[3]` reads as an alias). A node has four **facets**: its scalar value, its keyed entries, its ordinal entries, and\nits `!!<…>` meta tag.\n\n| op | facets | `meta` |\n|----|--------|--------|\n| `emplace` | replaces only the facets `yamlover` carries; the rest of the node stands | omitted → **preserved** |\n| `replace` | drops all four, assigns `yamlover` | omitted → **dropped** |\n| `insert` | the new entry takes the position `path` names; an index past the end **appends** | sets the tag |\n| `remove` | deletes the node at `path` | — |\n\nThat is why editing a chunk's prose is an `emplace`: an annotated chunk is an omni node whose tag\napplications are keyed entries laid over its scalar, and only the scalar facet is being replaced.\nA chapter's **title** works the same way — it is the chapter node's own scalar self-value\n(docs/documents/chapter), so a title edit is an `emplace` on the chapter path itself (an empty payload drops\nthe title line).\n\n`yamlover` is valid inline yamlover **source**, not prose — the caller escapes its own text (the web\nclient through `escapeYamloverScalar`), and the server parses the fragment to validate it before\nanything is written. `meta` is a schema pointer (`*::yamlover:$defs:chapter`) written as the tag;\n`null` removes it. `concrete` (`yamlover` | `file/yamlover` | `dir/.yo`) is accepted only where\ncontent is **born**, and rejected on an existing node — converting one is a move, not an edit.\n\nCreating an object is therefore just an `insert` carrying a `meta` and a body: a document's body\ngains a child (inline, or a linked file/dir plus a `*` pointer), while a plain directory — which\nbacks no document, so it has no source to splice — gains a member. The response carries the new\nnode's `path`.\n\nA **link marker** — `{ \"$yamloverLink\": { kind, path, count|size } }` — stands in\nfor a node shown only as a link (a nested container past the one-level view, or\nany binary leaf); the client renders it as a `{ object with N properties }`,\n`[ array with M items ]`, or `< binary of N bytes >` hyperlink. The same marker\nappears in both the value and the schema, so every representation renders\nidentically. A selected binary leaf's bytes arrive as\n`{ \"$yamloverBinary\": {format,size,base64} }`.\n\n### Renderers\n\nA renderer declares an **`accepts` predicate** over a node's **type facets**\n(value-type, `format`, and the keyed/ordinal capability flags) — most are\n`byFormat(\"…\")`, which matches on the node's format and tolerates the other\nfacets (so tagging a markdown node doesn't break its markdown rendering). The\nmost specific matching renderer wins; a node with no match falls through to the\ndefault data-representation tabs and expands normally in the TOC.\n\nThe registry lives in `src/client/renderers/`. A renderer participates several\nways:\n\n- **`render`** — the full RHS page (its tab is the node's default representation).\n- **`renderChunk`** — its *inline* form, when embedded in another renderer's page\n  (e.g. the `chapter` renderer draws each chunk by delegating to that chunk's\n  own renderer).\n- **`tocView`** — how the node appears in the TOC: which children are navigable,\n  whether it expands and is loaded. A renderer can unwrap or filter (e.g.\n  `chapter` surfaces its subchapters and keeps its chunks off the tree).\n- **`depth`** — the value depth `NodeView` fetches for it (default 1).\n\nRegistered today (a representative slice — the registry is the source of truth):\n\n| renderer | matches (format) | draws with |\n|----------|------------------|------------|\n| `chapter` | `x-yamlover-chapter` | a positional body: numbered chunks + subchapter links |\n| `tag` | `x-yamlover-onto` | tag-hierarchy diagram (handled outside the specificity loop; `tag-board` is a fixed tab on every container) |\n| `task` | `x-yamlover-task` | the planning strip, then the body: prose as a chapter's, the SUBTASKS — own members and linked blockers — as lanes (a board is a task with subtasks) |\n| `table` | `x-yamlover-table` | a grid (`docs/documents/marklower`): rows/header/caption from the omni entries, merged cells (`colSpan`/`rowSpan`) from resolved relative-index `*` pointers, nested tables inline, marklower cells; prose cells edit in place under the lock |\n| `marklower` | `text/marklower` (a chapter's prose chunks, by schema propagation) | its own inline grammar (`docs/documents/marklower`): emphasis, `` `code` ``, `$$math$$` via KaTeX, links, and `*[…](…)` media embeds |\n| `markdown` | `text/markdown` | [marked](https://marked.js.org) |\n| `asciidoc` | `text/asciidoc` | [@asciidoctor/core](https://asciidoctor.org) |\n| `csv` | `text/csv`, `text/tab-separated-values` | a table |\n| `plaintext` | `text/plain` | preformatted text |\n| `latex` | `text/x-latex` | [KaTeX](https://katex.org) |\n| `plantuml` | `text/x-plantuml` | rendered diagram |\n| `map` | KML / KMZ | [Leaflet](https://leafletjs.com) |\n| `image` | `image/png`, `jpeg`, `gif`, `webp`, `avif`, `svg+xml`, … | native `<img>` |\n| `html` | `text/html` | sandboxed `<iframe>` |\n| `pdf` | `application/pdf` | [pdf.js](https://mozilla.github.io/pdf.js/) via react-pdf |\n| `djvu` | `image/vnd.djvu` | [DjVu.js](https://djvu.js.org) (vendored) |\n| `epub` / `fb2` | `application/epub+zip` / FictionBook | paged e-book view |\n| `docx` / `doc` / `rtf` | Word / RTF | [mammoth](https://github.com/mwilliamson/mammoth.js) etc. |\n| `spreadsheet` | xlsx / xls | [SheetJS](https://sheetjs.com) |\n| `psd` / `tiff` / `heic` | Photoshop / TIFF / HEIC | decoded to a canvas/image |\n\nAdding a shape is still a single registry entry.\n\nTwo implementation notes:\n\n- **DjVu has no native browser support**, so it is decoded client-side by\n  **DjVu.js**, vendored as a prebuilt bundle at `src/client/vendor/djvu.js`.\n  The library is **GPL-v2** (see `src/client/vendor/README.md` for provenance);\n  the rest of this package is not.\n- **pdf.js and DjVu.js (and several heavier codecs) reach for browser globals at\n  import time**, which would break the (Node/jsdom) test run, so their renderers\n  are **lazy-loaded** — importing the registry never pulls them in until such a\n  node is actually shown.\n\n### File rendering and format inference\n\nThe file renderers turn the browser into a viewer for the common file types a\ntree carries. They hang off one rule, applied to any file-backed node that\ncarries **no explicit `format`**: the server **infers a format from the file\nextension**. So a stray `.pdf`, `.png`, or `.md` renders without a `format:`\nline. An explicit `format` always wins.\n\nInference splits two ways by how the renderer consumes the file:\n\n- **Served as bytes** — images, `application/pdf`, `text/html`, `image/vnd.djvu`,\n  etc. Their renderer points an `<img>`/`<iframe>`/loader at **`/api/blob`** (or\n  fetches the `ArrayBuffer`), so the bytes stream straight from disk with no\n  base64 round-trip.\n- **Read as text** — `.md`/`.adoc` keep a **string** value (the file's text),\n  which the renderer parses to HTML.\n\n## Requirements\n\n- Node.js **22.13+** (the engine's store uses the built-in `node:sqlite`, unflagged only from 22.13).\n\nMP4 frame playback and thumbnails require **FFmpeg** (`ffmpeg` and `ffprobe`) on\nthe server PATH. HEVC and other non-H.264 MP4 files cache H.264 previews and frame metadata\nunder `.yo/videos` for reuse across server restarts; originals stay unchanged. Select the video tab, drag to pan, use modifier-wheel to\nzoom, and use the collapsible time ruler for live scrubbing. Frame steps, five-second\njumps and playback controls stay in the toolbar; the speaker icon toggles mute.\n\nThere are **no npm runtime dependencies**: the client deps are bundled into\n`dist/client` by `vite build` and the server deps into `dist/server.js` by\nesbuild at `prepack`. The `devDependencies` (React, Vite, the engine/parser, and\nthe renderer libraries) are build- and test-time only. DjVu.js is **vendored**\n(`src/client/vendor/djvu.js`), not an npm dependency.\n\n## Tests\n\nThis package is covered by [Vitest](https://vitest.dev) (it runs the TypeScript\ndirectly, no build):\n\n```console\n$ npm test          # run once\n$ npm run test:watch\n```\n\nThis server suite is **separate** from the repository root's `npm test` (which\nruns only the parser and engine suites) and from the editor package's own suite\n(`npm --prefix tools/yed test` — the grammar/corpus conformance gate,\n`docs/server/editor/yed`). CI gates on all of them, so run them before pushing. (Run\neverything from the project root — see the root `package.json`.)\n\n**Node versions — two numbers for two reasons.** Running the server needs Node\n**≥ 22.13**: the engine's store is `node:sqlite`, and `bin/yamlover.js` checks that\nfloor at startup. Running the source-level suites (`node --test …*.test.ts` at the\nroot and in the parser, engine and docs2yamlover packages) needs TypeScript\nstripping, which Node does natively only from **22.18** on — every such script passes\n`--experimental-strip-types` (available since 22.6, a no-op once stripping is the\ndefault), so the declared 22.13 floor runs the tests too. Without the flag, a\nconforming machine below 22.18 fails every file with `ERR_UNKNOWN_FILE_EXTENSION\n\".ts\"` before an assertion runs.\n\n## Layout\n\n```\nbin/yamlover.js        CLI entry — arg parsing + dev (Vite) / prod (dist) wiring\nscripts/build.mjs      prod build: vite build → dist/client, esbuild → dist/server.js\nsrc/concrete.ts        the concrete taxonomy + predicates (shared by server and client)\nsrc/server/            the engine-backed JSON API\n  engine-api.ts          createHandlers: all /api/* routes, backed by the engine Store\n  embed.ts               annotation / fragment / thumbnail embedding (overlay writes)\n  node-kind.ts           node-kind classification (object|array|scalar|binary|omni|mix)\n  tasks.ts               background task registry + SSE task frames\n  gitignore.ts           .gitignore predicate for surfaced stray files\n  extract/               the thumbnail pipeline: decoder registry (raster/psd/webp/avif) + scaling\n  agent-docs/            the AGENTS.yo guide (+ AGENTS.md stub) installed by POST /api/agent-docs\nsrc/client/            the React SPA (tree, node view, render, icons, paths, live SSE)\n  renderers/             facet-predicate renderer registry + per-format renderers; the\n                         unlocked editors are yed mounts over ../yed (@yamlover/yed) — docs/server/editor\n  vendor/djvu.js         prebuilt DjVu.js bundle (GPL-v2; see vendor/README.md)\ntest/                  Vitest suite (server logic + client components)\nindex.html             SPA shell\n```\n\n### Gather/decompose in the source editor\n\nIn the yamlover data view, unlock **Edit**, then choose **Gathered marklower**.\nThe panel holds a local text draft and a yamlover preview. **Apply as yamlover**\ndecomposes it into the existing tree, using the normal revision-protected save and\nUndo/Redo path. Invalid or cancelled drafts never write. Ctrl+Z inside the textarea\nuses native text undo. An external editor-history change invalidates the draft's base.\n\nGathering refuses bookmarks/comments, gaps, blobs and separately stored members;\nopen an inline subtree when a directory is too broad.\n\nGathered marklower can be authored in an ordinary `.yo` scalar, usually a `|` block,\nwithout a format tag. The engine projects structural continuations into queryable\nchapter nodes while respecting explicit plain/code formats and data islands. Save\n`examples/79-gathered-marklower.yo` using an external editor; normal reconciliation\npicks up the change. Invalid structure displays its source and recovers when repaired.\nThe optional `.marklower` exchange concrete remains supported.\n\nProjected documents and their interior nodes are browser-read-only until gathered\nsource writing is ready. `GET /api/source` returns exact file text at the root or\ndecomposed yamlover for an interior node. File renames maintain references inside\nquoted and block scalar carriers. Moves that would remove gathered ordering refuse\nbefore changing files. Ordinary chapter editing stays WYSIWYG: typed structural\nmarkers are escaped when saved, including text containing only markers.\nThe syntax, migration filter and current limits are documented in\n`docs/documents/marklower/gathered/index.yo`.\n","readmeFilename":"README.md"}