* merge libs rollup configs to one rollup * move css from libs to src/core * run rollup on cms build * move test-utils to /utils folder * move css to src/core * mark @umbraco-cms/backoffice as external when building for CMS * rename all models to include @umbraco-cms/backoffice in their path to allow us to publish as a single module * rename all imports to @umbraco-cms/backoffice/* * rename events to umb-events to avoid rollup error of protected module name(?) * test that libs can build * move css to src/core * move umb-lit-element and modal elements to src/core * move some modal interfaces back to libs/modal * move the icon store into src/core since it is very localized to the backoffice * comment out build:libs for now since Github runs out of memory * rename to match tsconfig alias * add package.json to libs * only make libs for lib folders * turn off emit for typescript since we are handling types for libs separately * build libs locally * add script to move libs to final destination with some transform * move libs after build * move package.json to dist folder first (so we can publish from there) * remove inline comments * ensure the outputDir exists * Remove re-export of extensions-registry library from models library * move to individual files to avoid circular imports * check if outputDir exists before trying to create it * write transforms first in dist file and then copy the file to outputDir * ensure all umbraco types are external * copy information from main package.json file
24 lines
846 B
TypeScript
24 lines
846 B
TypeScript
import { isManifestJSType } from './is-manifest-js-type.function';
|
|
import { isManifestLoaderType } from './is-manifest-loader-type.function';
|
|
import type { ManifestElement } from '@umbraco-cms/backoffice/extensions-registry';
|
|
|
|
export type ManifestLoaderType = ManifestElement & { loader: () => Promise<object | HTMLElement> };
|
|
export type ManifestJSType = ManifestElement & { js: string };
|
|
|
|
export async function loadExtension(manifest: ManifestElement): Promise<object | HTMLElement | null> {
|
|
try {
|
|
if (isManifestLoaderType(manifest)) {
|
|
return manifest.loader();
|
|
}
|
|
|
|
if (isManifestJSType(manifest) && manifest.js) {
|
|
return await import(/* @vite-ignore */ manifest.js);
|
|
}
|
|
} catch (err: any) {
|
|
console.warn('-- Extension failed to load script', manifest, err);
|
|
return Promise.resolve(null);
|
|
}
|
|
|
|
return Promise.resolve(null);
|
|
}
|