diff --git a/plugins/angular.json b/plugins/angular.json
index 731f3ba0f0..6d1ed4a807 100644
--- a/plugins/angular.json
+++ b/plugins/angular.json
@@ -12,7 +12,10 @@
"build": {
"builder": "@angular-devkit/build-angular:application",
"options": {
- "outputPath": "dist/apps/contrast-plugin",
+ "outputPath": {
+ "base": "dist/apps/contrast-plugin",
+ "browser": ""
+ },
"index": "apps/contrast-plugin/src/index.html",
"browser": "apps/contrast-plugin/src/main.ts",
"polyfills": ["zone.js"],
@@ -20,6 +23,7 @@
"assets": [
"apps/contrast-plugin/src/_headers",
"apps/contrast-plugin/src/favicon.ico",
+ "apps/contrast-plugin/src/manifest.json",
"apps/contrast-plugin/src/assets"
],
"styles": [
diff --git a/plugins/apps/contrast-plugin/package.json b/plugins/apps/contrast-plugin/package.json
index a025f6df8f..01ea179e5d 100644
--- a/plugins/apps/contrast-plugin/package.json
+++ b/plugins/apps/contrast-plugin/package.json
@@ -7,9 +7,9 @@
"build": "ng build contrast-plugin && pnpm run build:plugin",
"build:dev": "ng build contrast-plugin --configuration development",
"build:plugin": "node ../../tools/scripts/build-plugin.mjs --plugin=contrast-plugin",
- "build:plugin:watch": "node ../../tools/scripts/build-plugin.mjs --plugin=contrast-plugin --watch",
+ "watch": "node ../../tools/scripts/build-plugin.mjs --plugin=contrast-plugin --watch",
"serve": "ng serve contrast-plugin",
- "init": "concurrently --kill-others --names plugin,serve \"pnpm run build:plugin:watch\" \"pnpm run serve\"",
+ "init": "concurrently --kill-others --names plugin,serve \"pnpm run watch\" \"pnpm run serve\"",
"lint": "eslint .",
"test": "vitest"
}
diff --git a/plugins/apps/contrast-plugin/src/app/app.config.ts b/plugins/apps/contrast-plugin/src/app/app.config.ts
index 1b3e4af314..c20fb298bb 100644
--- a/plugins/apps/contrast-plugin/src/app/app.config.ts
+++ b/plugins/apps/contrast-plugin/src/app/app.config.ts
@@ -1,6 +1,6 @@
import { ApplicationConfig } from '@angular/core';
-import { provideRouter } from '@angular/router';
+import { provideRouter, withHashLocation } from '@angular/router';
export const appConfig: ApplicationConfig = {
- providers: [provideRouter([])],
+ providers: [provideRouter([], withHashLocation())],
};
diff --git a/plugins/apps/contrast-plugin/src/index.html b/plugins/apps/contrast-plugin/src/index.html
index a51a16d0cd..f8ca73a890 100644
--- a/plugins/apps/contrast-plugin/src/index.html
+++ b/plugins/apps/contrast-plugin/src/index.html
@@ -3,7 +3,6 @@
contrast-plugin
-
diff --git a/plugins/apps/contrast-plugin/src/manifest.json b/plugins/apps/contrast-plugin/src/manifest.json
new file mode 100644
index 0000000000..e842ff9b19
--- /dev/null
+++ b/plugins/apps/contrast-plugin/src/manifest.json
@@ -0,0 +1,8 @@
+{
+ "name": "Contrast",
+ "description": "Measure contrast plugin",
+ "version": 2,
+ "code": "assets/plugin.js",
+ "icon": "assets/icon.png",
+ "permissions": ["content:read"]
+}
diff --git a/plugins/libs/plugins-runtime/src/lib/parse-manifest.ts b/plugins/libs/plugins-runtime/src/lib/parse-manifest.ts
index 95cf043d6f..5a59e970c9 100644
--- a/plugins/libs/plugins-runtime/src/lib/parse-manifest.ts
+++ b/plugins/libs/plugins-runtime/src/lib/parse-manifest.ts
@@ -5,7 +5,11 @@ export function getValidUrl(host: string, path: string): URL {
return new URL(path, host);
}
-export function prepareUrl(manifest: Manifest, url: string, params: object): string {
+export function prepareUrl(
+ manifest: Manifest,
+ url: string,
+ params: object,
+): string {
const result = getValidUrl(manifest.host, url);
for (const [k, v] of Object.entries(params)) {
if (!result.searchParams.has(k)) {
diff --git a/plugins/libs/plugins-runtime/src/lib/plugin-manager.spec.ts b/plugins/libs/plugins-runtime/src/lib/plugin-manager.spec.ts
index db33f3aa9b..206f43ba34 100644
--- a/plugins/libs/plugins-runtime/src/lib/plugin-manager.spec.ts
+++ b/plugins/libs/plugins-runtime/src/lib/plugin-manager.spec.ts
@@ -72,7 +72,9 @@ describe('createPluginManager', () => {
vi.mocked(loadManifestCode).mockResolvedValue(
'console.log("Plugin loaded");',
);
- vi.mocked(getValidUrl).mockReturnValue(new URL('https://example.com/plugin'));
+ vi.mocked(getValidUrl).mockReturnValue(
+ new URL('https://example.com/plugin'),
+ );
vi.mocked(prepareUrl).mockReturnValue('https://example.com/plugin');
});
@@ -112,7 +114,9 @@ describe('createPluginManager', () => {
height: 300,
});
- expect(prepareUrl).toHaveBeenCalledWith(manifest, '/test-url', {theme: 'light'});
+ expect(prepareUrl).toHaveBeenCalledWith(manifest, '/test-url', {
+ theme: 'light',
+ });
expect(openUIApi).toHaveBeenCalledWith(
'Test Modal',
'https://example.com/plugin',
diff --git a/plugins/libs/plugins-runtime/src/lib/plugin-manager.ts b/plugins/libs/plugins-runtime/src/lib/plugin-manager.ts
index 9022d242d9..5b0b1bddd0 100644
--- a/plugins/libs/plugins-runtime/src/lib/plugin-manager.ts
+++ b/plugins/libs/plugins-runtime/src/lib/plugin-manager.ts
@@ -81,7 +81,7 @@ export async function createPluginManager(
const openModal = (name: string, url: string, options?: OpenUIOptions) => {
const theme = context.theme as Theme;
- const modalUrl = prepareUrl(manifest, url, {theme});
+ const modalUrl = prepareUrl(manifest, url, { theme });
if (modal?.getAttribute('iframe-src') === modalUrl) {
return;