MCPcopy Create free account
hub / github.com/TanStack/cli / finalizeAddOns

Function finalizeAddOns

packages/create/src/edge-add-ons.ts:16–56  ·  view source on GitHub ↗
(
  framework: Framework,
  mode: string,
  chosenAddOnIDs: Array<string>,
)

Source from the content-addressed store, hash-verified

14}
15
16export async function finalizeAddOns(
17 framework: Framework,
18 mode: string,
19 chosenAddOnIDs: Array<string>,
20): Promise<Array<AddOn>> {
21 const finalAddOnIDs = new Set(chosenAddOnIDs)
22 const addOns = getAllAddOns(framework, mode)
23
24 for (const addOnID of finalAddOnIDs) {
25 let addOn: AddOn | undefined
26 const localAddOn =
27 addOns.find((a) => a.id === addOnID) ??
28 addOns.find((a) => a.id.toLowerCase() === addOnID.toLowerCase())
29
30 if (localAddOn) {
31 addOn = localAddOn
32 if (localAddOn.id !== addOnID) {
33 finalAddOnIDs.delete(addOnID)
34 finalAddOnIDs.add(localAddOn.id)
35 }
36 } else if (addOnID.startsWith('http')) {
37 addOn = await loadRemoteAddOn(addOnID)
38 addOns.push(addOn)
39 } else {
40 const suggestion = findClosestAddOn(addOnID, addOns)
41 throw new Error(
42 `Add-on ${addOnID} not found${suggestion ? `. Did you mean "${suggestion}"?` : ''}`,
43 )
44 }
45
46 for (const dependsOn of addOn.dependsOn || []) {
47 const dep = addOns.find((a) => a.id === dependsOn)
48 if (!dep) {
49 throw new Error(`Dependency ${dependsOn} not found`)
50 }
51 finalAddOnIDs.add(dep.id)
52 }
53 }
54
55 return [...finalAddOnIDs].map((id) => addOns.find((a) => a.id === id)!)
56}
57
58export function populateAddOnOptionsDefaults(
59 chosenAddOns: Array<AddOn>,

Callers

nothing calls this directly

Calls 5

addMethod · 0.80
getAllAddOnsFunction · 0.70
loadRemoteAddOnFunction · 0.70
findClosestAddOnFunction · 0.70
deleteMethod · 0.65

Tested by

no test coverage detected