Feature/server packages v2 (#574)

* new api models

* use new PackageResource

* do not error out on missing default exports (esmodules auto-execute)

* do not check for js extensions (they might have been registered on the client without a js file)

* prepend the api baseurl to any relataive server JS dependencies

* ignore tsbuildinfo

* create base file for tsconfig

* extend from base config and optimise include/exclude paths

* install rollup plugin to handle json files

* use plugin to bundle json files

* call script for cms builds that builds libs

* add rollup config to utils lib

* add a context token to the extension registry instance itself and provide it through BackofficeElement

* add rollup node resolve

* add node resolve

* only include element mixin in element library

* add error description to module load error

* add types to UmbExtensionRegistry token

* set UmbNotificationService as string in its token to avoid minification

* correct comment

* reverse order of checks

* add host to server extensions and support life-cycle check

* add imports

* use lit rather than lit-html

* correct comment

* add PackageManifestModel

* add import

* run libs build for cms

* revert reorder

* use string name for NotificationContext token

* make alias public readonly of UmbContextToken

* remove TODO

* use UmbContextToken::toString() for all stores

* use string alias for contexts

* move default data so we avoid importing a big lit library just to get default data interface

* add rollup to two extra libraries

* make sure we build uui and lit into our libraries for the few cases we import something

* add lockfile

* add separate options for .js files

* add function to install types of module

* add types output

* remove unused tsconfig-base file for now
This commit is contained in:
Jacob Overgaard
2023-03-02 20:29:20 +01:00
committed by GitHub
parent 0fe3f8886c
commit 62f3c2d6fa
62 changed files with 372 additions and 132 deletions

View File

@@ -2,7 +2,6 @@
import {
UmbNotificationOptions,
UmbNotificationContext,
UmbNotificationDefaultData,
UMB_NOTIFICATION_CONTEXT_TOKEN,
} from '@umbraco-cms/notification';
import { ApiError, CancelablePromise, ProblemDetailsModel } from '@umbraco-cms/backend-api';
@@ -57,9 +56,9 @@ export class UmbResourceController extends UmbController {
*/
static async tryExecute<T>(promise: Promise<T>): Promise<DataSourceResponse<T>> {
try {
return { data: await promise };
return {data: await promise};
} catch (e) {
return { error: UmbResourceController.toProblemDetailsModel(e) };
return {error: UmbResourceController.toProblemDetailsModel(e)};
}
}
@@ -67,17 +66,17 @@ export class UmbResourceController extends UmbController {
* Wrap the {execute} function in a try/catch block and return the result.
* If the executor function throws an error, then show the details in a notification.
*/
async tryExecuteAndNotify<T>(options?: UmbNotificationOptions<any>): Promise<DataSourceResponse<T>> {
const { data, error } = await UmbResourceController.tryExecute<T>(this.#promise);
async tryExecuteAndNotify<T>(options?: UmbNotificationOptions): Promise<DataSourceResponse<T>> {
const {data, error} = await UmbResourceController.tryExecute<T>(this.#promise);
if (error) {
const data: UmbNotificationDefaultData = {
headline: error.title ?? 'Server Error',
message: error.detail ?? 'Something went wrong',
};
if (this.#notificationContext) {
this.#notificationContext?.peek('danger', { data, ...options });
this.#notificationContext?.peek('danger', {
data: {
headline: error.title ?? 'Server Error',
message: error.detail ?? 'Something went wrong'
}, ...options
});
} else {
console.group('UmbResourceController');
console.error(error);
@@ -85,7 +84,7 @@ export class UmbResourceController extends UmbController {
}
}
return { data, error };
return {data, error};
}
/**