(root: string, abs: string)
| 2850 | } |
| 2851 | |
| 2852 | async function assetMetaForPath(root: string, abs: string): Promise<AssetMeta> { |
| 2853 | const stat = await fs.stat(abs) |
| 2854 | const rel = toPosix(path.relative(root, abs)) |
| 2855 | return { |
| 2856 | path: rel, |
| 2857 | name: path.basename(abs), |
| 2858 | kind: classifyImportedAsset(abs), |
| 2859 | siblingOrder: 0, |
| 2860 | size: stat.size, |
| 2861 | updatedAt: stat.mtimeMs |
| 2862 | } |
| 2863 | } |
| 2864 | |
| 2865 | async function assertAssetFile(root: string, rel: string): Promise<{ rel: string; abs: string }> { |
| 2866 | const normalized = normalizeVaultRelativePath(rel) |
no test coverage detected