MCPcopy Create free account
hub / github.com/UsefulSoftwareCo/executor / generateOrgSlug

Function generateOrgSlug

packages/core/api/src/account/org-slug.ts:178–193  ·  view source on GitHub ↗
(
  name: string,
  isTaken: (slug: string) => Promise<boolean>,
)

Source from the content-addressed store, hash-verified

176 * back to `team-<discriminator>` handles.
177 */
178export const generateOrgSlug = async (
179 name: string,
180 isTaken: (slug: string) => Promise<boolean>,
181): Promise<string> => {
182 const base = slugifyOrgName(name) ?? "team";
183 // Leave room for the "-xxxx" discriminator within the 48-char budget.
184 const trimmed = base.slice(0, 48 - DISCRIMINATOR_LENGTH - 1).replace(/-+$/g, "");
185 if (isValidOrgSlug(trimmed) && !(await isTaken(trimmed))) return trimmed;
186 for (let attempt = 0; attempt < 32; attempt++) {
187 const candidate = `${trimmed}-${discriminator()}`;
188 if (isValidOrgSlug(candidate) && !(await isTaken(candidate))) return candidate;
189 }
190 // Practically unreachable (32 misses on a ~1M space means isTaken is
191 // broken); a longer random handle beats looping forever.
192 return `team-${discriminator()}${discriminator()}`;
193};

Callers 3

org-slug.test.tsFile · 0.90
upsertOrganizationFunction · 0.90

Calls 5

slugifyOrgNameFunction · 0.85
isValidOrgSlugFunction · 0.85
isTakenFunction · 0.85
discriminatorFunction · 0.85
replaceMethod · 0.65

Tested by

no test coverage detected