2020-06-04 07:44:35 +12:00
|
|
|
import { get } from "builderStore/api"
|
2020-06-04 07:35:30 +12:00
|
|
|
|
2020-05-03 02:29:10 +12:00
|
|
|
/**
|
|
|
|
* Fetches the definitions for component library components. This includes
|
|
|
|
* their props and other metadata from components.json.
|
|
|
|
* @param {string} appId - ID of the currently running app
|
|
|
|
*/
|
2020-05-18 17:40:29 +12:00
|
|
|
export const fetchComponentLibDefinitions = async appId => {
|
|
|
|
const LIB_DEFINITION_URL = `/${appId}/components/definitions`
|
2020-05-03 02:29:10 +12:00
|
|
|
try {
|
2020-06-04 07:35:30 +12:00
|
|
|
const libDefinitionResponse = await get(LIB_DEFINITION_URL)
|
2020-05-07 21:53:34 +12:00
|
|
|
return await libDefinitionResponse.json()
|
2020-05-03 02:29:10 +12:00
|
|
|
} catch (err) {
|
2020-05-07 21:53:34 +12:00
|
|
|
console.error(`Error fetching component definitions for ${appId}`, err)
|
2020-05-03 02:29:10 +12:00
|
|
|
}
|
2020-05-07 21:53:34 +12:00
|
|
|
}
|
2020-02-20 02:58:06 +13:00
|
|
|
|
2020-05-03 02:29:10 +12:00
|
|
|
/**
|
|
|
|
* Loads the JavaScript files for app component libraries and returns a map of their modules.
|
|
|
|
* @param {object} application - package definition
|
|
|
|
*/
|
|
|
|
export const fetchComponentLibModules = async application => {
|
2020-02-03 22:24:25 +13:00
|
|
|
const allLibraries = {}
|
2020-02-20 02:58:06 +13:00
|
|
|
|
2020-05-03 02:29:10 +12:00
|
|
|
for (let libraryName of application.componentLibraries) {
|
2020-05-07 21:53:34 +12:00
|
|
|
const LIBRARY_URL = `/${application._id}/componentlibrary?library=${libraryName}`
|
2020-05-03 02:29:10 +12:00
|
|
|
const libraryModule = await import(LIBRARY_URL)
|
|
|
|
allLibraries[libraryName] = libraryModule
|
2020-02-03 22:24:25 +13:00
|
|
|
}
|
2019-08-20 08:18:23 +12:00
|
|
|
|
2020-02-03 22:24:25 +13:00
|
|
|
return allLibraries
|
2019-08-20 08:18:23 +12:00
|
|
|
}
|