( registryUrl?: string, )
| 54 | } |
| 55 | |
| 56 | export async function getRawRegistry( |
| 57 | registryUrl?: string, |
| 58 | ): Promise<Registry | undefined> { |
| 59 | const regUrl = registryUrl || process.env.CTA_REGISTRY |
| 60 | if (regUrl) { |
| 61 | const url = handleSpecialURL(regUrl) |
| 62 | const registry = (await fetch(url).then((res) => res.json())) as Registry |
| 63 | const parsedRegistry = registrySchema.parse(registry) |
| 64 | |
| 65 | if (!parsedRegistry.starters && parsedRegistry.templates) { |
| 66 | parsedRegistry.starters = parsedRegistry.templates |
| 67 | } |
| 68 | |
| 69 | if (!parsedRegistry.templates && parsedRegistry.starters) { |
| 70 | parsedRegistry.templates = parsedRegistry.starters |
| 71 | } |
| 72 | |
| 73 | for (const addOn of parsedRegistry['add-ons'] || []) { |
| 74 | addOn.url = absolutizeUrl(url, addOn.url) |
| 75 | } |
| 76 | for (const template of parsedRegistry.templates || []) { |
| 77 | template.url = absolutizeUrl(url, template.url) |
| 78 | if (template.banner) { |
| 79 | template.banner = absolutizeUrl(url, template.banner) |
| 80 | } |
| 81 | } |
| 82 | |
| 83 | parsedRegistry.starters = parsedRegistry.templates |
| 84 | |
| 85 | return parsedRegistry |
| 86 | } |
| 87 | } |
| 88 | |
| 89 | async function getAddOns(registry: Registry): Promise<Array<AddOn>> { |
| 90 | const addOns: Array<AddOn> = [] |
no test coverage detected