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;