@mesh-tech/mesh-cli
Version:
CLI for Mesh platform development utilities
45 lines (44 loc) • 1.08 kB
JavaScript
import { z } from "zod";
export const RESERVED_SEGMENTS = [
"plans",
"designs",
"proposals",
"incidents",
"handoffs",
"reviews",
"runbooks",
"hran",
"superpowers",
"templates",
"archive",
"internal",
"drafts",
"node_modules",
"__tests__",
".claude",
".pi",
];
export const docsJsonSchema = z
.object({
title: z.string().min(1),
order: z.number().int().default(50),
slug: z
.string()
.regex(/^$|^[a-z0-9]+(?:-[a-z0-9]+)*$/, 'slug must be lower-kebab-case or ""')
.optional(),
include: z.array(z.string().min(1)).default([]),
})
.strict();
export function isReservedSegment(segment) {
const lowered = segment.toLowerCase();
return RESERVED_SEGMENTS.some((reserved) => reserved === lowered);
}
export function hasReservedSegment(relPath) {
return relPath.split("/").some(isReservedSegment);
}
export function slugify(value) {
return (value
.toLowerCase()
.replace(/[^a-z0-9]+/g, "-")
.replace(/^-+|-+$/g, "") || "index");
}