diff --git a/.env.example b/.env.example index 4d70a6f..2842e47 100644 --- a/.env.example +++ b/.env.example @@ -5,4 +5,8 @@ PUBLIC_API_URL=http://localhost:8080 USERSPACE_USER_DEFAULT_ADMIN_EMAIL=admin@wippy.local -USERSPACE_USER_DEFAULT_ADMIN_PASSWORD=admin123 \ No newline at end of file +USERSPACE_USER_DEFAULT_ADMIN_PASSWORD=admin123 + +# OpenAI-compatible provider (supports OpenRouter, Ollama, vLLM, etc.) +OPENAI_COMPAT_API_KEY=your-api-key-here +OPENAI_COMPAT_BASE_URL=https://openrouter.ai/api/v1 \ No newline at end of file diff --git a/.gitignore b/.gitignore index f2ff589..58633b5 100644 --- a/.gitignore +++ b/.gitignore @@ -9,7 +9,8 @@ wippy.exe CLAUDE.md .idea .claude - -.playwright-mcp/ - -.local/ + +.playwright-mcp/ +test-results/ + +.local/ diff --git a/Makefile b/Makefile index 67f56f3..c79be05 100644 --- a/Makefile +++ b/Makefile @@ -40,14 +40,15 @@ lint: cd frontend/web-components/counter-persist && npm run lint clean-build: - cd frontend/applications/main && rm -rf node_modules && npm install && npm run build -- --outDir ../../../static/app/main --emptyOutDir - cd frontend/web-components/reaction-bar && rm -rf node_modules && npm install && npm run build -- --outDir ../../../static/wc/reaction-bar --emptyOutDir - cd frontend/web-components/websocket-log && rm -rf node_modules && npm install && npm run build -- --outDir ../../../static/wc/websocket-log --emptyOutDir - cd frontend/web-components/chart-circle && rm -rf node_modules && npm install && npm run build -- --outDir ../../../static/wc/chart-circle --emptyOutDir - cd frontend/web-components/mermaid && rm -rf node_modules && npm install && npm run build -- --outDir ../../../static/wc/mermaid --emptyOutDir - cd frontend/web-components/markdown && rm -rf node_modules && npm install && npm run build -- --outDir ../../../static/wc/markdown --emptyOutDir - cd frontend/web-components/model-gallery && rm -rf node_modules && npm install && npm run build -- --outDir ../../../static/wc/model-gallery --emptyOutDir - cd frontend/web-components/counter-persist && rm -rf node_modules && npm install && npm run build -- --outDir ../../../static/wc/counter-persist --emptyOutDir + cd frontend/applications/main && rm -rf node_modules package-lock.json && npm install && npm run build -- --outDir ../../../static/app/main --emptyOutDir + cd frontend/applications/iframe-demo && rm -rf node_modules package-lock.json && npm install && npm run build -- --outDir ../../../static/app/iframe-demo --emptyOutDir + cd frontend/web-components/reaction-bar && rm -rf node_modules package-lock.json && npm install && npm run build -- --outDir ../../../static/wc/reaction-bar --emptyOutDir + cd frontend/web-components/websocket-log && rm -rf node_modules package-lock.json && npm install && npm run build -- --outDir ../../../static/wc/websocket-log --emptyOutDir + cd frontend/web-components/chart-circle && rm -rf node_modules package-lock.json && npm install && npm run build -- --outDir ../../../static/wc/chart-circle --emptyOutDir + cd frontend/web-components/mermaid && rm -rf node_modules package-lock.json && npm install && npm run build -- --outDir ../../../static/wc/mermaid --emptyOutDir + cd frontend/web-components/markdown && rm -rf node_modules package-lock.json && npm install && npm run build -- --outDir ../../../static/wc/markdown --emptyOutDir + cd frontend/web-components/model-gallery && rm -rf node_modules package-lock.json && npm install && npm run build -- --outDir ../../../static/wc/model-gallery --emptyOutDir + cd frontend/web-components/counter-persist && rm -rf node_modules package-lock.json && npm install && npm run build -- --outDir ../../../static/wc/counter-persist --emptyOutDir dev: cd frontend/applications/main && npm run dev diff --git a/e2e/theming.spec.ts b/e2e/theming.spec.ts new file mode 100644 index 0000000..cc5ec8d --- /dev/null +++ b/e2e/theming.spec.ts @@ -0,0 +1,90 @@ +/** + * End-to-end tests for the facade theming endpoints: + * GET /api/public/facade/variables.css — CSS variables as a stylesheet + * GET /api/public/facade/config — full config with resolved theming + * + * Tests verify that `fs://` references in the css_variables and custom_css + * requirements are resolved to actual file content at request time, using the + * `content_fs` filesystem entry. + * + * Config is declarative in src/app/deps/_index.yaml (the `facade` dependency): + * - name: content_fs value: app:app_fs + * - name: custom_css value: "fs://custom-css.facade.css" + * - name: css_variables value: "fs://css-variables.facade.json" + * The fixture files live in ./static alongside login.html (served at /app), so + * content_fs (app:app_fs → ./static) resolves them — and the same files could + * also be ed by a static page (login.html doesn't today, but can). + * + * `fs://`, not `file://`: the wippy loader interpolates `file://` at LOAD time + * (reads it relative to the _index.yaml dir), so a `file://` written in a YAML + * requirement param never reaches the facade. Just start wippy normally: + * ./wippy.exe run -c -o app:gateway:addr=:8086 \ + * -o wippy.facade:fe_facade_url:default=http://localhost:5173 + */ +import { expect, test } from '@playwright/test' +import { loginAsAdmin } from './helpers/login' + +const CSS_VARS_PATH = '/api/public/facade/variables.css' +const CONFIG_PATH = '/api/public/facade/config' + +test.describe('facade theming: fs:// resolution', () => { + test.beforeEach(async ({ page }) => { + await loginAsAdmin(page) + }) + + test('GET /facade/variables.css generates CSS from file-backed css-variables.facade.json', async ({ page }) => { + const res = await page.request.get(CSS_VARS_PATH) + expect(res.status()).toBe(200) + expect(res.headers()['content-type']).toContain('text/css') + + const css = await res.text() + + // Root block generated from flat string keys + expect(css).toContain(':root') + expect(css).toContain('--e2e-primary: #e2e001;') + expect(css).toContain('--e2e-secondary: #e2e002;') + + // @media dark block from nested @dark object + expect(css).toContain('prefers-color-scheme: dark') + expect(css).toContain('--e2e-primary: #e2e003;') + }) + + test('GET /facade/variables.css carries Cache-Control header', async ({ page }) => { + const res = await page.request.get(CSS_VARS_PATH) + expect(res.status()).toBe(200) + expect(res.headers()['cache-control']).toContain('public') + expect(res.headers()['cache-control']).toContain('max-age=3600') + }) + + test('GET /facade/config resolves fs:// custom_css to file content', async ({ page }) => { + const res = await page.request.get(CONFIG_PATH) + expect(res.status()).toBe(200) + + const config = await res.json() + const customCSS: string | undefined = config?.theming?.global?.customCSS + + // Must be file content, not the raw "fs://custom-css.facade.css" string + expect(customCSS).toBeTruthy() + expect(customCSS).not.toContain('fs://') + // Must contain marker text from custom-css.facade.css + expect(customCSS).toContain('E2E Test Font') + }) + + test('GET /facade/config resolves fs:// css_variables to parsed JSON object', async ({ page }) => { + const res = await page.request.get(CONFIG_PATH) + expect(res.status()).toBe(200) + + const config = await res.json() + const cssVars = config?.theming?.global?.cssVariables + + // Must be the decoded JSON object, not a raw string + expect(cssVars).toBeTruthy() + expect(typeof cssVars).toBe('object') + expect(cssVars['--e2e-primary']).toBe('#e2e001') + expect(cssVars['--e2e-secondary']).toBe('#e2e002') + + // @dark nested object must be preserved through JSON decode + expect(cssVars['@dark']).toBeTruthy() + expect(cssVars['@dark']['--e2e-primary']).toBe('#e2e003') + }) +}) diff --git a/e2e/warn-suppressor.spec.ts b/e2e/warn-suppressor.spec.ts deleted file mode 100644 index 8fe068f..0000000 --- a/e2e/warn-suppressor.spec.ts +++ /dev/null @@ -1,198 +0,0 @@ -/** - * Runtime contract for `@wippy-fe/proxy` `installVueWarnSuppressor` in a - * real Vite-built Vue app inside a wippy child iframe. - */ -import type { ConsoleMessage } from '@playwright/test' -import { expect, test } from '@playwright/test' -import { - DEMO_IFRAME_SELECTOR, - HOST_IFRAME_SELECTOR, - loginAsAdmin, - navigateHostTo, - THEMED_DEMO_IFRAME_SELECTOR, -} from './helpers/login' - -const VUE_RESOLVE_RE = /\[Vue warn\]:\s*Failed to resolve component/i -const MARKER_KEY = '@wippy-fe/proxy/vue-warn-suppressor-installed' - -// Funnel the bare specifier through a string so the e2e tsconfig doesn't -// try to resolve `@wippy-fe/proxy` against the e2e directory's -// node_modules — the real resolution happens via the iframe's importmap. -const PROXY_SPEC = '@wippy-fe/proxy' - -// Per-route DOM signals — each route mounts a unique custom element. -// Reused by tests that traverse all routes. -const ROUTES: Array<{ tab: string, signal: string }> = [ - { tab: 'Chart', signal: 'example-chart-circle' }, - { tab: 'Counter', signal: 'example-counter-persist' }, - { tab: 'Mermaid', signal: 'example-mermaid' }, - { tab: 'Bridge', signal: '[data-testid="bridge-demo"]' }, -] - -test.describe('@wippy-fe/proxy installVueWarnSuppressor — runtime contract', () => { - test.beforeEach(async ({ page }) => { - await loginAsAdmin(page) - }) - - test('no Vue resolve-component warnings during iframe-demo load + route traversal', async ({ page }) => { - const warnings: string[] = [] - page.on('console', (m: ConsoleMessage) => { - if (m.type() === 'warning' && VUE_RESOLVE_RE.test(m.text())) - warnings.push(m.text()) - }) - - await navigateHostTo(page, 'Iframe Demo') - - const hostFrame = page.frameLocator(HOST_IFRAME_SELECTOR) - const demoFrame = hostFrame.frameLocator(DEMO_IFRAME_SELECTOR).first() - - for (const { tab, signal } of ROUTES) { - await demoFrame.getByRole('link', { name: new RegExp(`^${tab}$`, 'i') }).click() - await demoFrame.locator(signal).first().waitFor({ state: 'attached', timeout: 10_000 }) - } - - // One settle tick for any microtask-queued warnings. - await page.waitForTimeout(100) - - expect(warnings, `Unexpected Vue resolve-component warnings:\n${warnings.join('\n')}`).toEqual([]) - }) - - test('warnHandler is installed and idempotency marker is set', async ({ page }) => { - await navigateHostTo(page, 'Iframe Demo') - const demoFrame = page.frameLocator(HOST_IFRAME_SELECTOR).frameLocator(DEMO_IFRAME_SELECTOR).first() - await demoFrame.locator('#app').waitFor({ state: 'attached' }) - - const probe = await demoFrame.locator('#app').evaluate((el, markerKey) => { - // Vue 3 stamps __vue_app__ on the mount-root element automatically. - const vueApp = (el as HTMLElement & { __vue_app__?: { config?: Record } }).__vue_app__ - return { - hasHandler: typeof vueApp?.config?.warnHandler === 'function', - hasMarker: vueApp?.config?.[Symbol.for(markerKey)] === true, - } - }, MARKER_KEY) - - expect(probe.hasHandler).toBe(true) - expect(probe.hasMarker).toBe(true) - }) - - test('PascalCase typo passes through to console.warn (synthetic)', async ({ page }) => { - const warnings: string[] = [] - page.on('console', (m: ConsoleMessage) => { - if (m.type() === 'warning') - warnings.push(m.text()) - }) - - await navigateHostTo(page, 'Iframe Demo') - const demoFrame = page.frameLocator(HOST_IFRAME_SELECTOR).frameLocator(DEMO_IFRAME_SELECTOR).first() - await demoFrame.locator('#app').waitFor({ state: 'attached' }) - - await demoFrame.locator('#app').evaluate((el) => { - const vueApp = (el as HTMLElement & { __vue_app__?: { config?: { warnHandler?: (m: string, i: unknown, t: string) => void } } }).__vue_app__ - const handler = vueApp?.config?.warnHandler - if (typeof handler !== 'function') - throw new Error('warnHandler not installed') - handler('Failed to resolve component: UsreCard', null, ' at ') - }) - - await expect.poll(() => warnings.some(w => /UsreCard/.test(w))).toBe(true) - }) - - test('second install is a true no-op (handler ref unchanged after re-invocation)', async ({ page }) => { - await navigateHostTo(page, 'Iframe Demo') - const demoFrame = page.frameLocator(HOST_IFRAME_SELECTOR).frameLocator(DEMO_IFRAME_SELECTOR).first() - await demoFrame.locator('#app').waitFor({ state: 'attached' }) - - const result = await demoFrame.locator('#app').evaluate(async (el, spec) => { - const root = el as HTMLElement & { __vue_app__?: { config?: { warnHandler?: unknown } } } - const vueApp = root.__vue_app__ - if (!vueApp?.config) - throw new Error('Vue app not mounted on #app') - const before = vueApp.config.warnHandler - const proxy = await import(spec) as { - installVueWarnSuppressor?: (app: { config: { warnHandler?: unknown } }) => void - } - if (typeof proxy.installVueWarnSuppressor !== 'function') - throw new Error('installVueWarnSuppressor not exported from @wippy-fe/proxy') - proxy.installVueWarnSuppressor(vueApp as { config: { warnHandler?: unknown } }) - const after = vueApp.config.warnHandler - return { - handlerStable: before === after, - beforeIsFunction: typeof before === 'function', - afterIsFunction: typeof after === 'function', - } - }, PROXY_SPEC) - - expect(result.beforeIsFunction).toBe(true) - expect(result.afterIsFunction).toBe(true) - expect(result.handlerStable).toBe(true) - }) - - test('exported marker constant equals the symbol planted on app.config', async ({ page }) => { - await navigateHostTo(page, 'Iframe Demo') - const demoFrame = page.frameLocator(HOST_IFRAME_SELECTOR).frameLocator(DEMO_IFRAME_SELECTOR).first() - await demoFrame.locator('#app').waitFor({ state: 'attached' }) - - const matches = await demoFrame.locator('#app').evaluate(async (el, spec) => { - const root = el as HTMLElement & { __vue_app__?: { config?: Record } } - const proxy = await import(spec) as { VUE_WARN_SUPPRESSOR_INSTALLED_MARKER?: symbol } - const exportedMarker = proxy.VUE_WARN_SUPPRESSOR_INSTALLED_MARKER - if (!exportedMarker) - throw new Error('VUE_WARN_SUPPRESSOR_INSTALLED_MARKER not exported') - return root.__vue_app__?.config?.[exportedMarker] === true - }, PROXY_SPEC) - expect(matches).toBe(true) - }) - - test('coexistence: both side-by-side iframe-demos have independent suppressor markers', async ({ page }) => { - // /home/iframe-demo mounts two instances (default + themed). - // Each is its own iframe → its own Vue app → its own marker. - await navigateHostTo(page, 'Iframe Demo') - const hostFrame = page.frameLocator(HOST_IFRAME_SELECTOR) - const defaultDemo = hostFrame.frameLocator(DEMO_IFRAME_SELECTOR).first() - const themedDemo = hostFrame.frameLocator(THEMED_DEMO_IFRAME_SELECTOR).first() - - await Promise.all([ - defaultDemo.locator('#app').waitFor({ state: 'attached', timeout: 15_000 }), - themedDemo.locator('#app').waitFor({ state: 'attached', timeout: 15_000 }), - ]) - - const probe = (el: HTMLElement, markerKey: string) => { - const vueApp = (el as HTMLElement & { __vue_app__?: { config?: Record } }).__vue_app__ - return { - hasMarker: vueApp?.config?.[Symbol.for(markerKey)] === true, - hasHandler: typeof vueApp?.config?.warnHandler === 'function', - } - } - const [d, t] = await Promise.all([ - defaultDemo.locator('#app').evaluate(probe, MARKER_KEY), - themedDemo.locator('#app').evaluate(probe, MARKER_KEY), - ]) - expect(d).toEqual({ hasMarker: true, hasHandler: true }) - expect(t).toEqual({ hasMarker: true, hasHandler: true }) - }) - - test('Vue app instance is stable across route changes (no re-mount, no marker loss)', async ({ page }) => { - // A routing regression that re-creates the app per route would silently - // lose the suppressor on each new mount. Compare app identity before + - // after a full traversal via evaluateHandle (preserves object identity - // across evaluate calls per Playwright JSHandle contract). - await navigateHostTo(page, 'Iframe Demo') - const demoFrame = page.frameLocator(HOST_IFRAME_SELECTOR).frameLocator(DEMO_IFRAME_SELECTOR).first() - await demoFrame.locator('#app').waitFor({ state: 'attached' }) - - const beforeHandle = await demoFrame.locator('#app').evaluateHandle((el) => { - return (el as HTMLElement & { __vue_app__?: object }).__vue_app__ - }) - - for (const { tab, signal } of ROUTES) { - await demoFrame.getByRole('link', { name: new RegExp(`^${tab}$`, 'i') }).click() - await demoFrame.locator(signal).first().waitFor({ state: 'attached', timeout: 10_000 }) - } - - const stable = await demoFrame.locator('#app').evaluate((el, beforeApp) => { - const after = (el as HTMLElement & { __vue_app__?: object }).__vue_app__ - return after === beforeApp && after !== undefined - }, beforeHandle) - expect(stable).toBe(true) - }) -}) diff --git a/frontend/applications/iframe-demo/app.html b/frontend/applications/iframe-demo/app.html index 16f5e28..66bac19 100644 --- a/frontend/applications/iframe-demo/app.html +++ b/frontend/applications/iframe-demo/app.html @@ -15,7 +15,7 @@ } diff --git a/frontend/applications/iframe-demo/package-lock.json b/frontend/applications/iframe-demo/package-lock.json index 5323940..09ac778 100644 --- a/frontend/applications/iframe-demo/package-lock.json +++ b/frontend/applications/iframe-demo/package-lock.json @@ -8,12 +8,12 @@ "name": "@wippy/iframe-demo", "version": "1.0.0", "dependencies": { - "@wippy-fe/theme": "^0.0.34" + "@wippy-fe/theme": "^0.0.36" }, "devDependencies": { "@vitejs/plugin-vue": "^5.0.0", - "@wippy-fe/types-global-proxy": "^0.0.34", - "@wippy-fe/vite-plugin": "^0.0.34", + "@wippy-fe/types-global-proxy": "^0.0.36", + "@wippy-fe/vite-plugin": "^0.0.36", "autoprefixer": "^10.4.0", "postcss": "^8.4.0", "tailwindcss": "3", @@ -25,7 +25,7 @@ }, "peerDependencies": { "@iconify/vue": "^5.0.0", - "@wippy-fe/proxy": "^0.0.34", + "@wippy-fe/proxy": "^0.0.36", "axios": "^1.0.0", "vue": "^3.5.0", "vue-router": "^4.0.0" @@ -625,9 +625,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.4.tgz", - "integrity": "sha512-F5QXMSiFebS9hKZj02XhWLLnRpJ3B3AROP0tWbFBSj+6kCbg5m9j5JoHKd4mmSVy5mS/IMQloYgYxCuJC0fxEQ==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.61.1.tgz", + "integrity": "sha512-JnBB8MdXj45cajvTuO5FmPlvFVJRQgvrz1uSEl3NwqFnReAPGwb8EanbGi4z2nRaqLzjJSv5/JmycoTKlRZxHA==", "cpu": [ "arm" ], @@ -639,9 +639,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.4.tgz", - "integrity": "sha512-GxxTKApUpzRhof7poWvCJHRF51C67u1R7D6DiluBE8wKU1u5GWE8t+v81JvJYtbawoBFX1hLv5Ei4eVjkWokaw==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.61.1.tgz", + "integrity": "sha512-Jx2g7iSjw4AOT0HDPHM9RV3GNjRXwybWtSFZiZAYUTjUwjVrYIwq3kBf+LnhqJlzXFAqTAh2F7IGI+O568exPw==", "cpu": [ "arm64" ], @@ -653,9 +653,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.4.tgz", - "integrity": "sha512-tua0TaJxMOB1R0V0RS1jFZ/RpURFDJIOR2A6jWwQeawuFyS4gBW+rntLRaQd0EQ4bd6Vp44Z2rXW+YYDBsj6IA==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.61.1.tgz", + "integrity": "sha512-0F1L/Z3Eqv8mT2n3dCpeO8GcTvHvVqkP5/t6DMsn0KzhYVcg+s7Ncl5DS8qjKYEeio6Az0Gt6nyBORay5qIlCA==", "cpu": [ "arm64" ], @@ -667,9 +667,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.4.tgz", - "integrity": "sha512-CSKq7MsP+5PFIcydhAiR1K0UhEI1A2jWXVKHPCBZ151yOutENwvnPocgVHkivu2kviURtCEB6zUQw0vs8RrhMg==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.61.1.tgz", + "integrity": "sha512-qLttcH871ujY4YcVfUSShhOw+CsoTatYz8gRbHO7Bb92QH059/P0y5do1KMs41fY0BpD2x4AJH/gID0zFiqVKQ==", "cpu": [ "x64" ], @@ -681,9 +681,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.4.tgz", - "integrity": "sha512-+O8OkVdyvXMtJEciu2wS/pzm1IxntEEQx3z5TAVy4l32G0etZn+RsA48ARRrFm6Ri8fvqPQfgrvNxSjKAbnd3g==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.61.1.tgz", + "integrity": "sha512-fUI4RapGE0Oh3mb8mgfvC1O2nU1RpDZUKnDQm3xB1Ipg7C2wTs5Kstz7G2uWK99a8S2yTMq8/P4uycwNa0nJyw==", "cpu": [ "arm64" ], @@ -695,9 +695,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.4.tgz", - "integrity": "sha512-Iw3oMskH3AfNuhU0MSN7vNbdi4me/NiYo2azqPz/Le16zHSa+3RRmliCMWWQmh4lcndccU40xcJuTYJZxNo/lw==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.61.1.tgz", + "integrity": "sha512-H5YrdvJaDtI/U9/emrD4b++xkvp3y/JvOe4rizHbxvkyMfRS/CiRYdji+Pl8D0brEaNFWUh1drQxgAGIl6Xudw==", "cpu": [ "x64" ], @@ -709,9 +709,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.4.tgz", - "integrity": "sha512-EIPRXTVQpHyF8WOo219AD2yEltPehLTcTMz2fn6JsatLYSzQf00hj3rulF+yauOlF9/FtM2WpkT/hJh/KJFGhA==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.61.1.tgz", + "integrity": "sha512-Q8CBCCQtDFrYtXoeUXSrnFXKOnyUhx6bz+SkL6A0E7V8kAiCJ5pamq1WtbfpVGhR5TSpXY6ak3avmDc5fHTyJA==", "cpu": [ "arm" ], @@ -723,9 +723,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.4.tgz", - "integrity": "sha512-J3Yh9PzzF1Ovah2At+lHiGQdsYgArxBbXv/zHfSyaiFQEqvNv7DcW98pCrmdjCZBrqBiKrKKe2V+aaSGWuBe/w==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.61.1.tgz", + "integrity": "sha512-nwnhk1581l0FBVellGcVCAT0Oi06onEA3WB53sf01VO3I0UPBkMH9sXONYME2K0ovXcNayJfNtHfm6mpJElatQ==", "cpu": [ "arm" ], @@ -737,9 +737,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.4.tgz", - "integrity": "sha512-BFDEZMYfUvLn37ONE1yMBojPxnMlTFsdyNoqncT0qFq1mAfllL+ATMMJd8TeuVMiX84s1KbcxcZbXInmcO2mRg==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.61.1.tgz", + "integrity": "sha512-x5Xr49hwt3hdW75UOZm3395YwwzPyauktslv29KpWL/T+vVAzoT3azLcTWv0eMciBNrx+DYjH4paehHoLpPvpg==", "cpu": [ "arm64" ], @@ -751,9 +751,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.4.tgz", - "integrity": "sha512-pc9EYOSlOgdQ2uPl1o9PF6/kLSgaUosia7gOuS8mB69IxJvlclko1MECXysjs5ryez1/5zjYqx3+xYU0TU6R1A==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.61.1.tgz", + "integrity": "sha512-unMS3H73DpaoPyyEVPjGKleM/s0mkmsauTENpw4INQY8y4+IuLNjkueQ5QCtC0D3N38Y38yhAU8OoZ20S2Tm6w==", "cpu": [ "arm64" ], @@ -765,9 +765,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.4.tgz", - "integrity": "sha512-NxnomyxYerDh5n4iLrNa+sH+Z+U4BMEE46V2PgQ/hoB909i8gV1M5wPojWg9fk1jWpO3IQnOs20K4wyZuFLEFQ==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.61.1.tgz", + "integrity": "sha512-zNZzGRnAhwjFEYmvphJRV5XaQGjs62cCmeYYHUT//NbvEnHauw+I85nGG+SiVg5ld4GX8D1IbKIX+ozITQnhMQ==", "cpu": [ "loong64" ], @@ -779,9 +779,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.4.tgz", - "integrity": "sha512-nbJnQ8a3z1mtmrwImCYhc6BGpThAyYVRQxw9uKSKG4wR6aAYno9sVjJ0zaZcW9BPJX1GbrDPf+SvdWjgTuDmnw==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.61.1.tgz", + "integrity": "sha512-LdpWGL8X209B2SIvWjqlc8VZgM6PKfontSerGepuldQmHYrAOtnMCXeJkxXGbC+PPZVOuu5czJo7fNV6aeW8rQ==", "cpu": [ "loong64" ], @@ -793,9 +793,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.4.tgz", - "integrity": "sha512-2EU6acNrQLd8tYvo/LXW535wupT3m6fo7HKo6lr7ktQoItxTyOL1ZCR/GfGCuXl2vR+zmfI6eRXkSemafv+iVg==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.61.1.tgz", + "integrity": "sha512-EC5kTtNaNGOmbMGqar8dvJy6y/hg99GAwjfBz++pxZhQATXGcRjd6c5en5wcbru0vkRmiMGsQKdMJOOf6sza4g==", "cpu": [ "ppc64" ], @@ -807,9 +807,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.4.tgz", - "integrity": "sha512-WeBtoMuaMxiiIrO2IYP3xs6GMWkJP2C0EoT8beTLkUPmzV1i/UcOSVw1d5r9KBODtHKilG5yFxsGRnBbK3wJ4A==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.61.1.tgz", + "integrity": "sha512-8hiwp6D4acEcNK78I4rP0/XtS1sknWIAMJBPdR4l6zUtyTm5KiTDr5bXmWt4foY7nAN7AThDHgkLIEZOWKbzWw==", "cpu": [ "ppc64" ], @@ -821,9 +821,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.4.tgz", - "integrity": "sha512-FJHFfqpKUI3A10WrWKiFbBZ7yVbGT4q4B5o1qKFFojqpaYoh9LrQgqWCmmcxQzVSXYtyB5bzkXrYzlHTs21MYA==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.61.1.tgz", + "integrity": "sha512-10dh/h/BqA7DuMPWSxkR8uks18FRwnwOEqr5zOTEl+NOwP/OMzKX8OFR/Of9xxDA7D5qef1Nzar5WDD2kCCr1g==", "cpu": [ "riscv64" ], @@ -835,9 +835,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.4.tgz", - "integrity": "sha512-mcEl6CUT5IAUmQf1m9FYSmVqCJlpQ8r8eyftFUHG8i9OhY7BkBXSUdnLH5DOf0wCOjcP9v/QO93zpmF1SptCCw==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.61.1.tgz", + "integrity": "sha512-YKJ5lg35DP17gcAOggnihe+APw9HLyj1Xn7gsmGumBJAUDa6NGXNixJzmkWLhcK9TOuuyQjdamzvJefkO7qHZQ==", "cpu": [ "riscv64" ], @@ -849,9 +849,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.4.tgz", - "integrity": "sha512-ynt3JxVd2w2buzoKDWIyiV1pJW93xlQic1THVLXilz429oijRpSHivZAgp65KBu+cMcgf1eVVjdnTLvPxgCuoQ==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.61.1.tgz", + "integrity": "sha512-Mlil5G2Jj6a7B3LWGctg+XPL9vdXYuzCtNXfxOQ0nPjc2m6ueUktocPGH9bnAM0bNRKb/bAWTujUU7IJQdQA+g==", "cpu": [ "s390x" ], @@ -863,9 +863,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.4.tgz", - "integrity": "sha512-Boiz5+MsaROEWDf+GGEwF8VMHGhlUoQMtIPjOgA5fv4osupqTVnJteQNKJwUcnUog2G55jYXH7KZFFiJe0TEzQ==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.61.1.tgz", + "integrity": "sha512-bVWIOIk6pV01p4CdUbPP7CJ/434z+OooYjDuFcR+44N35YvKUC66G8MGnvcWx5mWKW3g61J+t74l3Kj15Kwn2Q==", "cpu": [ "x64" ], @@ -877,9 +877,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.4.tgz", - "integrity": "sha512-+qfSY27qIrFfI/Hom04KYFw3GKZSGU4lXus51wsb5EuySfFlWRwjkKWoE9emgRw/ukoT4Udsj4W/+xxG8VbPKg==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.61.1.tgz", + "integrity": "sha512-qy5pBvZbqNFheBz61R1rzsezjm0J7O2oNGoWtGoY89SZYLUfxAJTBAqDChqAIdB4rCiIbi9nF7yZ83GnNiLwSw==", "cpu": [ "x64" ], @@ -891,9 +891,9 @@ ] }, "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.4.tgz", - "integrity": "sha512-VpTfOPHgVXEBeeR8hZ2O0F3aSso+JDWqTWmTmzcQKted54IAdUVbxE+j/MVxUsKa8L20HJhv3vUezVPoquqWjA==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.61.1.tgz", + "integrity": "sha512-E83TXjI4zm0+5f2qO+UOudaCYIhYwpJ5jq6YCZNIZ+6CbfhKrkAGezeiASBL9ElxAxFsRS9ZhESv8mfnj6TKeg==", "cpu": [ "x64" ], @@ -905,9 +905,9 @@ ] }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.4.tgz", - "integrity": "sha512-IPOsh5aRYuLv/nkU51X10Bf75Bsf6+gZdx1X+QP5QM6lIJFHHqbHLG0uJn/hWthzo13UAc2umiUorqZy3axoZg==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.61.1.tgz", + "integrity": "sha512-fbWnKqVkjrJN38vNe3ahkbk6iejS/3b0Nt7EEtPpE6RBacZcGXNKbzfHN3GUUlXOPghUg0j6XUGrtjX9z1sIvA==", "cpu": [ "arm64" ], @@ -919,9 +919,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.4.tgz", - "integrity": "sha512-4QzE9E81OohJ/HKzHhsqU+zcYYojVOXlFMs1DdyMT6qXl/niOH7AVElmmEdUNHHS/oRkc++d5k6Vy85zFs0DEw==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.61.1.tgz", + "integrity": "sha512-ArMl38iVAbk0New1ogihQNY6iphLi4ZaRsa037gUzv5yeKPY8TD3Dmy4x2RNC1VztU/uqm+G+/RwFrSka3Oy2g==", "cpu": [ "arm64" ], @@ -933,9 +933,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.4.tgz", - "integrity": "sha512-zTPgT1YuHHcd+Tmx7h8aml0FWFVelV5N54oHow9SLj+GfoDy/huQ+UV396N/C7KpMDMiPspRktzM1/0r1usYEA==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.61.1.tgz", + "integrity": "sha512-0mYtjHS9ucAbcATycCNK9IGBk/cCe/ma7EmSLGZdsxnOA8cjRIyU04wDpVAD9NiOfLUR9KTxdiO53uOkherqjQ==", "cpu": [ "ia32" ], @@ -947,9 +947,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.4.tgz", - "integrity": "sha512-DRS4G7mi9lJxqEDezIkKCaUIKCrLUUDCUaCsTPCi/rtqaC6D/jjwslMQyiDU50Ka0JKpeXeRBFBAXwArY52vBw==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.61.1.tgz", + "integrity": "sha512-gK1iCEPfpoSG9wfBihXxvBMi8ZfcWffYkEsC/Eih+iFENTaewvNcrEQ69lIOWYO5pePHKLHHO7nq5AILGO/HQQ==", "cpu": [ "x64" ], @@ -961,9 +961,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.4.tgz", - "integrity": "sha512-QVTUovf40zgTqlFVrKA1uXMVvU2QWEFWfAH8Wdc48IxLvrJMQVMBRjuQyUpzZCDkakImib9eVazbWlC6ksWtJw==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.61.1.tgz", + "integrity": "sha512-X+zaP2x+j4RXGfbp/seSoRHWnPxzApilDszisZxbYH5C/jTxFhCtDNdPGZb9lJyYPs24wGxruPF7Y+sIXt9Gzw==", "cpu": [ "x64" ], @@ -975,9 +975,9 @@ ] }, "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", "dev": true, "license": "MIT" }, @@ -1025,53 +1025,53 @@ } }, "node_modules/@vue/compiler-core": { - "version": "3.5.34", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.34.tgz", - "integrity": "sha512-s9cLyK5mLcvZ4Agva5QgRsQyLKvts9WbU9DB6NqiZkkGEdwmcEiylj5Jbwkp680drF/NNCV8OlAJSe+yMLxaJw==", + "version": "3.5.35", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.35.tgz", + "integrity": "sha512-BUmHaR1J+O+CKZ9uJucdVTEr1LHsdyvv7vG3eNRhK3CczEHeMd/LtsHAuD7PbrxvI2envCY2v7HI1vC1aBRzKw==", "license": "MIT", "dependencies": { "@babel/parser": "^7.29.3", - "@vue/shared": "3.5.34", + "@vue/shared": "3.5.35", "entities": "^7.0.1", "estree-walker": "^2.0.2", "source-map-js": "^1.2.1" } }, "node_modules/@vue/compiler-dom": { - "version": "3.5.34", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.34.tgz", - "integrity": "sha512-EbF/T++k0e2MMZlJsBhzK8Sgwt0HcIPOhzn1CTB/lv6sQcyk+OWf8YeiLxZp3ro7MbbLcAfAJ6sEvjFWuNgUCw==", + "version": "3.5.35", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.35.tgz", + "integrity": "sha512-k+bprkXxuqhVajgTx5mUHuir7TwQzUKOWR40ng1ncAqQRPnrLngGGgqVEEhOnTMlc8btHYVKmrP8s5Qyg0hvYA==", "license": "MIT", "dependencies": { - "@vue/compiler-core": "3.5.34", - "@vue/shared": "3.5.34" + "@vue/compiler-core": "3.5.35", + "@vue/shared": "3.5.35" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.5.34", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.34.tgz", - "integrity": "sha512-D/ihr6uZeIt6r+pVZf46RWT1fAsLFMbUP7k8G1VkiiWexriED9GrX3echHd4Abbt17zjlfiFJ8z7a3BxZOPNjg==", + "version": "3.5.35", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.35.tgz", + "integrity": "sha512-G5VPMcXTSywXBgtFOZOnHKBxKSrwXUcvY1iaF5/hRcy7t0J6CH/d8ha9F4nzi00Fax1eLV0QHM7v4mQu68jydw==", "license": "MIT", "dependencies": { "@babel/parser": "^7.29.3", - "@vue/compiler-core": "3.5.34", - "@vue/compiler-dom": "3.5.34", - "@vue/compiler-ssr": "3.5.34", - "@vue/shared": "3.5.34", + "@vue/compiler-core": "3.5.35", + "@vue/compiler-dom": "3.5.35", + "@vue/compiler-ssr": "3.5.35", + "@vue/shared": "3.5.35", "estree-walker": "^2.0.2", "magic-string": "^0.30.21", - "postcss": "^8.5.14", + "postcss": "^8.5.15", "source-map-js": "^1.2.1" } }, "node_modules/@vue/compiler-ssr": { - "version": "3.5.34", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.34.tgz", - "integrity": "sha512-cDtTHKibkThKGHH1SP+WdccquNRYQDFH6rRjQCqT9G2ltFAfoR5pUftpab/z+aM5mW9HLLVQW7hfKKQe/1GBeQ==", + "version": "3.5.35", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.35.tgz", + "integrity": "sha512-rGhAeXgdM7/ffTJGXT69rCCdTmjDewnFuUZfBQQHTdcEBeWdT5HCGY60y2ytLJr9/Dsu7IntUi5z/w0h6Rjnzw==", "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.5.34", - "@vue/shared": "3.5.34" + "@vue/compiler-dom": "3.5.35", + "@vue/shared": "3.5.35" } }, "node_modules/@vue/compiler-vue2": { @@ -1118,66 +1118,91 @@ } }, "node_modules/@vue/reactivity": { - "version": "3.5.34", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.34.tgz", - "integrity": "sha512-y9XDjCEuBp+98k+UL5dbYkh57AHU4o6cxZedOPXw3bmrZZYLQsVHguGurq7hVrPCSrQtrnz1f9dssyFr+dMXfQ==", + "version": "3.5.35", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.35.tgz", + "integrity": "sha512-tVc+SsHConvh/Lz64qq1pP3rYArBmK42xonovEcxY74SQtvctZodG/zhq54P5dr38cVuw25d27cPNRdlMidpGQ==", "license": "MIT", "dependencies": { - "@vue/shared": "3.5.34" + "@vue/shared": "3.5.35" } }, "node_modules/@vue/runtime-core": { - "version": "3.5.34", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.34.tgz", - "integrity": "sha512-mKeBYvu8tcMSLhypAHBmriUFfWXKTCF/23Z4jiCoYK3UtWepkliViNLuR90V9XOyD62mUxs9p1jsrpK3CCGIzw==", + "version": "3.5.35", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.35.tgz", + "integrity": "sha512-A/xFNX9loIcWDygeQuNCfKuh0CoYBzxhqEMNah5TSFg9Z53DrFYEN2qi5CU9necjM1OWYegYREUTHmXTmhfXtg==", "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.34", - "@vue/shared": "3.5.34" + "@vue/reactivity": "3.5.35", + "@vue/shared": "3.5.35" } }, "node_modules/@vue/runtime-dom": { - "version": "3.5.34", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.34.tgz", - "integrity": "sha512-e8kZzERmCwUnBRVsgSQlAfrfU2rGoy0FFKPBXSlfEjc/O3KfA7QP0t1/2ZylrbchjmIKB4dPTd07A6WPr0eOrg==", + "version": "3.5.35", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.35.tgz", + "integrity": "sha512-odrJ1C391dbGnyDRh8U+rnP7J2amIEzfmRk5vXy7xi3aZhEXofTvpi0T4HJb6jlNqQZTNPR5MPHSB3RHNkIORA==", "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.34", - "@vue/runtime-core": "3.5.34", - "@vue/shared": "3.5.34", + "@vue/reactivity": "3.5.35", + "@vue/runtime-core": "3.5.35", + "@vue/shared": "3.5.35", "csstype": "^3.2.3" } }, "node_modules/@vue/server-renderer": { - "version": "3.5.34", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.34.tgz", - "integrity": "sha512-nHxmJoTrKsmrkbILRhkC9gY1G3moZbJTqCzDd7DOOzG5KH9oeJ0Unqrff5f9v0pW//jES05ZkJcNtfE8JjOIew==", + "version": "3.5.35", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.35.tgz", + "integrity": "sha512-NkebSOYdB97wi8OQcO3HqzZSlymJi/aWsN/7h74OSVhRTm6qGs3Jp3e0rCXynmWwSlKeRrnlIug+ilYoHBmQDA==", "license": "MIT", "dependencies": { - "@vue/compiler-ssr": "3.5.34", - "@vue/shared": "3.5.34" + "@vue/compiler-ssr": "3.5.35", + "@vue/shared": "3.5.35" }, "peerDependencies": { - "vue": "3.5.34" + "vue": "3.5.35" } }, "node_modules/@vue/shared": { - "version": "3.5.34", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.34.tgz", - "integrity": "sha512-24uqU4OIiX29ryC3MeWid/Xf2fa2EFRUVLb77nRhk+UrTVrh/XiGtFAFmJBAtBRbjwNdsPRP+jj/OL27Eg1NDA==", + "version": "3.5.35", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.35.tgz", + "integrity": "sha512-zSbjL7gRXwks2ZQLRGCajBtBXEOXW9Ddhn/HvSdrGkE2dqGnumzW8XtusRrxrE9LvqtiqDXQ+A60Hp6mvdYxfA==", "license": "MIT" }, + "node_modules/@wippy-fe/layout": { + "version": "0.0.36", + "resolved": "https://registry.npmjs.org/@wippy-fe/layout/-/layout-0.0.36.tgz", + "integrity": "sha512-zgg3KUGqGlSotKPjm540vQC57uCvXLkAdq/wGmu6bRsHW9FKP1CiK4QTIP0Hc6+DFi7hBtRyv/TPzH4CyOqjEg==", + "license": "UNLICENSED", + "peer": true, + "dependencies": { + "@wippy-fe/shared": "^0.0.36", + "nanoevents": "^9.1.0" + }, + "peerDependencies": { + "vue": "^3.5.0" + } + }, "node_modules/@wippy-fe/proxy": { - "version": "0.0.34", - "resolved": "https://registry.npmjs.org/@wippy-fe/proxy/-/proxy-0.0.34.tgz", - "integrity": "sha512-r4WaGX0Z14g5o3u5PFpzlS7AFQEOyJCI5G+8QP23KML4UB11uAU/dKBYVAz6twa4DKukwNXW+SwuPszzfDpyzQ==", + "version": "0.0.36", + "resolved": "https://registry.npmjs.org/@wippy-fe/proxy/-/proxy-0.0.36.tgz", + "integrity": "sha512-tsDyQKPJGflrnXkExStIW/UcOWR8a6XtLosUNiwPz5sRXPQNvoDVNEWbP3A2gyPExSGBW9mzyW59xt+UohiXCQ==", + "license": "UNLICENSED", + "peer": true, + "dependencies": { + "@wippy-fe/layout": "^0.0.36", + "@wippy-fe/vue-utils": "^0.0.36" + } + }, + "node_modules/@wippy-fe/shared": { + "version": "0.0.36", + "resolved": "https://registry.npmjs.org/@wippy-fe/shared/-/shared-0.0.36.tgz", + "integrity": "sha512-HvZlIM3hCc6k3Es92YM7eHJTIBdWkHo/x6tfW9NkusvhmHjOurdpYgB3SeC4y7iYqhm/rlsoCmMxO56zPdu/ow==", "license": "UNLICENSED", "peer": true }, "node_modules/@wippy-fe/theme": { - "version": "0.0.34", - "resolved": "https://registry.npmjs.org/@wippy-fe/theme/-/theme-0.0.34.tgz", - "integrity": "sha512-I3dPYqipiqSFk/uuLihVP6AHT3QR8ggt0/n+NuT+082mcFVxnz7CHZCJMyq/KXoLbQoJT+9t25oBI6p0zdnWLQ==", + "version": "0.0.36", + "resolved": "https://registry.npmjs.org/@wippy-fe/theme/-/theme-0.0.36.tgz", + "integrity": "sha512-dvFSkXnADFTf3IFt2h2eo54LtAGp8ZSIkiCPMGcoJ//YmNMs1Zd/YjrT2rbQg+IQhHpwKHaBnVywPY9Nl0WO9Q==", "license": "UNLICENSED", "dependencies": { "tailwind-scrollbar": "^3.0.0", @@ -1193,22 +1218,29 @@ } }, "node_modules/@wippy-fe/types-global-proxy": { - "version": "0.0.34", - "resolved": "https://registry.npmjs.org/@wippy-fe/types-global-proxy/-/types-global-proxy-0.0.34.tgz", - "integrity": "sha512-pDxhdGvapv+4GFWBDxUP0oLbCS4rBLcR6uasEX9lB9NgkJI6L2cMtm78MUzjQziDh6euz1pLbBsZRkuBoHPg+g==", + "version": "0.0.36", + "resolved": "https://registry.npmjs.org/@wippy-fe/types-global-proxy/-/types-global-proxy-0.0.36.tgz", + "integrity": "sha512-9t/PPt2aO4tvJ5cpGQmY1Tzk+JqjoaSmWw4vO4jt5Q4G9d79irsDYGXW0vqfi11AUh9lkqrj/wGQKaV+ZAmcPQ==", "dev": true, "license": "UNLICENSED" }, "node_modules/@wippy-fe/vite-plugin": { - "version": "0.0.34", - "resolved": "https://registry.npmjs.org/@wippy-fe/vite-plugin/-/vite-plugin-0.0.34.tgz", - "integrity": "sha512-N5ZAZZYeUOYEeFcbxy4B/4GnwF4L90fyrYYRPLJ4gezROHHC1SXUqvyZCtIQ5HMnwfDPp3osvJxuhvye7CeZXg==", + "version": "0.0.36", + "resolved": "https://registry.npmjs.org/@wippy-fe/vite-plugin/-/vite-plugin-0.0.36.tgz", + "integrity": "sha512-PSkUqxPU6OlwSpprSe/oG73qtzR2Hq+0ufOQ/rY5NMTuvQIYm3JOI5or1bJw7CVeAnGkLhavGFP3EL5l1pmPpw==", "dev": true, "license": "UNLICENSED", "peerDependencies": { "vite": "^5 || ^6 || ^7" } }, + "node_modules/@wippy-fe/vue-utils": { + "version": "0.0.36", + "resolved": "https://registry.npmjs.org/@wippy-fe/vue-utils/-/vue-utils-0.0.36.tgz", + "integrity": "sha512-tTjpM62CXd5ZfCPbJ1NWooLRkURljdxnGEfY242Wv1TFcOoaHnvXH97zG6rvbIWVYbj3qsu0RJ5dxvOosrhfTQ==", + "license": "UNLICENSED", + "peer": true + }, "node_modules/agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -1299,9 +1331,9 @@ } }, "node_modules/axios": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.16.1.tgz", - "integrity": "sha512-caYkukvroVPO8KrzuJEb50Hm07KwfBZPEC3VeFHTsqWHvKTsy54hjJz9BS/cdaypROE2rH6xvm9mHX4fgWkr3A==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.17.0.tgz", + "integrity": "sha512-J8SwNxprqqpbfenehxWYXE7CW+wM1BB4w3+N+g+/Wx40xM4rsLrfPmHHxSWIxJLYDgSY/HqlFPIYb2/S3rxafw==", "license": "MIT", "peer": true, "dependencies": { @@ -1319,9 +1351,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.10.32", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.32.tgz", - "integrity": "sha512-wbPvpyjJPC0zdfdKXxqEL3Ea+bOMD/87X4lftiJkkaBiuG6ALQy1SLmEd7BSmVCuwCQsBrCamgBoLyfFDD1EPg==", + "version": "2.10.33", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.33.tgz", + "integrity": "sha512-bA6+tcSLpz2tIEdDXZPpPTIuxBcC4+w6SieaYyfigIa4h8GlFxbA17v22Vx3JUtuZQj9SgOsnbK+aTBzyDyEuw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -1582,9 +1614,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.361", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.361.tgz", - "integrity": "sha512-Q6Hts7N9FnJc5LeGRINFvLhCI9xZmNtTDe5ZbcVezQz7cU4a8Aua3GH1b8J2XY8Al9PF+OCwYqhgsOOheMdvkA==", + "version": "1.5.367", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.367.tgz", + "integrity": "sha512-4Mk/mrynCNQ+atY40D3UpmhLWB6AHMbYMlIrPhHcMF6x0L7O0b052FCAsxw1LlaR++UFuNg3D/A6XCuGDa0guQ==", "dev": true, "license": "ISC" }, @@ -1924,9 +1956,9 @@ } }, "node_modules/hasown": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", - "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -2148,6 +2180,16 @@ "thenify-all": "^1.0.0" } }, + "node_modules/nanoevents": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/nanoevents/-/nanoevents-9.1.0.tgz", + "integrity": "sha512-Jd0fILWG44a9luj8v5kED4WI+zfkkgwKyRQKItTtlPfEsh7Lznfi1kr8/iZ+XAIss4Qq5GqRB0qtWbaz9ceO/A==", + "license": "MIT", + "peer": true, + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, "node_modules/nanoid": { "version": "3.3.12", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz", @@ -2167,9 +2209,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.46", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.46.tgz", - "integrity": "sha512-GYVXHE2KnrzAfsAjl4uP++evGFCrAU1jta4ubEjIG7YWt/64Gqv66a30yKwWczVjA6j3bM4nBwH7Pk1JmDHaxQ==", + "version": "2.0.47", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.47.tgz", + "integrity": "sha512-Uzmd6LXpouKo8EUK68IjH4+E01w/hXyV3R3g/geCJo+rXLNfh1xucB+LOzYEOQPSiUK3h/xZf0cQGcSsmyL2Og==", "dev": true, "license": "MIT", "engines": { @@ -2491,13 +2533,13 @@ } }, "node_modules/rollup": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.4.tgz", - "integrity": "sha512-WHeFSbZYsPu3+bLoNRUuAO+wavNlocOPf3wSHTP7hcFKVnJeWsYlCDbr3mTS14FCizf9ccIxXA8sGL8zKeQN3g==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.61.1.tgz", + "integrity": "sha512-I4KW6iuRpuu2uHBLraZ1wNZe0DP7lnRha+VJ9tNaYVaVgKhW0aI3h4RYnoRPeql0flHm/Co55b7snEDcOfOJrA==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "1.0.8" + "@types/estree": "1.0.9" }, "bin": { "rollup": "dist/bin/rollup" @@ -2507,31 +2549,31 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.60.4", - "@rollup/rollup-android-arm64": "4.60.4", - "@rollup/rollup-darwin-arm64": "4.60.4", - "@rollup/rollup-darwin-x64": "4.60.4", - "@rollup/rollup-freebsd-arm64": "4.60.4", - "@rollup/rollup-freebsd-x64": "4.60.4", - "@rollup/rollup-linux-arm-gnueabihf": "4.60.4", - "@rollup/rollup-linux-arm-musleabihf": "4.60.4", - "@rollup/rollup-linux-arm64-gnu": "4.60.4", - "@rollup/rollup-linux-arm64-musl": "4.60.4", - "@rollup/rollup-linux-loong64-gnu": "4.60.4", - "@rollup/rollup-linux-loong64-musl": "4.60.4", - "@rollup/rollup-linux-ppc64-gnu": "4.60.4", - "@rollup/rollup-linux-ppc64-musl": "4.60.4", - "@rollup/rollup-linux-riscv64-gnu": "4.60.4", - "@rollup/rollup-linux-riscv64-musl": "4.60.4", - "@rollup/rollup-linux-s390x-gnu": "4.60.4", - "@rollup/rollup-linux-x64-gnu": "4.60.4", - "@rollup/rollup-linux-x64-musl": "4.60.4", - "@rollup/rollup-openbsd-x64": "4.60.4", - "@rollup/rollup-openharmony-arm64": "4.60.4", - "@rollup/rollup-win32-arm64-msvc": "4.60.4", - "@rollup/rollup-win32-ia32-msvc": "4.60.4", - "@rollup/rollup-win32-x64-gnu": "4.60.4", - "@rollup/rollup-win32-x64-msvc": "4.60.4", + "@rollup/rollup-android-arm-eabi": "4.61.1", + "@rollup/rollup-android-arm64": "4.61.1", + "@rollup/rollup-darwin-arm64": "4.61.1", + "@rollup/rollup-darwin-x64": "4.61.1", + "@rollup/rollup-freebsd-arm64": "4.61.1", + "@rollup/rollup-freebsd-x64": "4.61.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.61.1", + "@rollup/rollup-linux-arm-musleabihf": "4.61.1", + "@rollup/rollup-linux-arm64-gnu": "4.61.1", + "@rollup/rollup-linux-arm64-musl": "4.61.1", + "@rollup/rollup-linux-loong64-gnu": "4.61.1", + "@rollup/rollup-linux-loong64-musl": "4.61.1", + "@rollup/rollup-linux-ppc64-gnu": "4.61.1", + "@rollup/rollup-linux-ppc64-musl": "4.61.1", + "@rollup/rollup-linux-riscv64-gnu": "4.61.1", + "@rollup/rollup-linux-riscv64-musl": "4.61.1", + "@rollup/rollup-linux-s390x-gnu": "4.61.1", + "@rollup/rollup-linux-x64-gnu": "4.61.1", + "@rollup/rollup-linux-x64-musl": "4.61.1", + "@rollup/rollup-openbsd-x64": "4.61.1", + "@rollup/rollup-openharmony-arm64": "4.61.1", + "@rollup/rollup-win32-arm64-msvc": "4.61.1", + "@rollup/rollup-win32-ia32-msvc": "4.61.1", + "@rollup/rollup-win32-x64-gnu": "4.61.1", + "@rollup/rollup-win32-x64-msvc": "4.61.1", "fsevents": "~2.3.2" } }, @@ -2681,9 +2723,9 @@ } }, "node_modules/tinyglobby": { - "version": "0.2.16", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", - "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", "license": "MIT", "dependencies": { "fdir": "^6.5.0", @@ -2795,9 +2837,9 @@ "license": "MIT" }, "node_modules/vite": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.2.tgz", - "integrity": "sha512-2N/55r4JDJ4gdrCvGgINMy+HH3iRpNIz8K6SFwVsA+JbQScLiC+clmAxBgwiSPgcG9U15QmvqCGWzMbqda5zGQ==", + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.3.tgz", + "integrity": "sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A==", "dev": true, "license": "MIT", "dependencies": { @@ -2908,16 +2950,16 @@ "license": "MIT" }, "node_modules/vue": { - "version": "3.5.34", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.34.tgz", - "integrity": "sha512-WdLBG9gm02OgJIG9axd5Hpx0TFLdzVgfG2evFFu8Rur5O/IoGc5cMjnjh3tPL6GnRGsYvUhBSKVPYVcxRKpMCA==", + "version": "3.5.35", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.35.tgz", + "integrity": "sha512-cx89fnr+0kVGHiNFG6y6s0bdjypJRFNZn6x3WPstNdQR1bi1mbB7h4v5IBGTsPJU3nK1+0Iqj3Zf+hZWMieR4Q==", "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.5.34", - "@vue/compiler-sfc": "3.5.34", - "@vue/runtime-dom": "3.5.34", - "@vue/server-renderer": "3.5.34", - "@vue/shared": "3.5.34" + "@vue/compiler-dom": "3.5.35", + "@vue/compiler-sfc": "3.5.35", + "@vue/runtime-dom": "3.5.35", + "@vue/server-renderer": "3.5.35", + "@vue/shared": "3.5.35" }, "peerDependencies": { "typescript": "*" diff --git a/frontend/applications/iframe-demo/package.json b/frontend/applications/iframe-demo/package.json index bbb8e04..172a92a 100644 --- a/frontend/applications/iframe-demo/package.json +++ b/frontend/applications/iframe-demo/package.json @@ -44,12 +44,12 @@ "lint:fix": "eslint src --ext .ts,.vue --fix" }, "dependencies": { - "@wippy-fe/theme": "^0.0.34" + "@wippy-fe/theme": "^0.0.36" }, "devDependencies": { "@vitejs/plugin-vue": "^5.0.0", - "@wippy-fe/vite-plugin": "^0.0.34", - "@wippy-fe/types-global-proxy": "^0.0.34", + "@wippy-fe/vite-plugin": "^0.0.36", + "@wippy-fe/types-global-proxy": "^0.0.36", "autoprefixer": "^10.4.0", "postcss": "^8.4.0", "tailwindcss": "3", @@ -61,7 +61,7 @@ }, "peerDependencies": { "@iconify/vue": "^5.0.0", - "@wippy-fe/proxy": "^0.0.34", + "@wippy-fe/proxy": "^0.0.36", "axios": "^1.0.0", "vue": "^3.5.0", "vue-router": "^4.0.0" diff --git a/frontend/applications/iframe-demo/src/app.ts b/frontend/applications/iframe-demo/src/app.ts index 287d977..4e52d73 100644 --- a/frontend/applications/iframe-demo/src/app.ts +++ b/frontend/applications/iframe-demo/src/app.ts @@ -1,4 +1,4 @@ -import * as wippyProxy from '@wippy-fe/proxy' +import { installVueWarnSuppressor } from '@wippy-fe/vue-utils' import { createApp } from 'vue' import App from './app/app.vue' import { HOST_API, AXIOS_INSTANCE, WIPPY_INSTANCE } from './constants' @@ -12,18 +12,14 @@ export async function createMainApp() { const axios = await window.$W.api() const instance = await window.$W.instance() - const routePath = config.context?.route || (config as any).path + const routePath = config.context?.route const initialPath = routePath ? (routePath.startsWith('/') ? routePath : '/' + routePath) : '/' const app = createApp(App) - // Namespace-import probe — older @wippy-fe/proxy bundles (< 0.0.33) lack - // this export. Named imports throw at module-load when missing; namespace - // doesn't. Drop the cast once the published d.mts catches up. - ;(wippyProxy as unknown as { installVueWarnSuppressor?: (a: typeof app) => void }) - .installVueWarnSuppressor?.(app) + installVueWarnSuppressor(app) app.provide(HOST_API, hostApi) app.provide(AXIOS_INSTANCE, axios) diff --git a/frontend/applications/iframe-demo/tsconfig.tsbuildinfo b/frontend/applications/iframe-demo/tsconfig.tsbuildinfo new file mode 100644 index 0000000..31137fe --- /dev/null +++ b/frontend/applications/iframe-demo/tsconfig.tsbuildinfo @@ -0,0 +1 @@ +{"root":["./src/app.ts","./src/constants.ts","./src/types.ts","./src/composables/usewippy.ts","./src/router/index.ts","./src/app/app.vue","./src/pages/bridge.vue","./src/pages/chart.vue","./src/pages/counter.vue","./src/pages/mermaid.vue","./vite.config.ts"],"errors":true,"version":"5.9.3"} \ No newline at end of file diff --git a/frontend/applications/main/app.html b/frontend/applications/main/app.html index 9444082..3d5f3b0 100644 --- a/frontend/applications/main/app.html +++ b/frontend/applications/main/app.html @@ -18,7 +18,7 @@ } diff --git a/frontend/applications/main/package-lock.json b/frontend/applications/main/package-lock.json index d1c1b2f..5cd7636 100644 --- a/frontend/applications/main/package-lock.json +++ b/frontend/applications/main/package-lock.json @@ -8,7 +8,7 @@ "name": "@wippy/app-main", "version": "1.0.0", "dependencies": { - "@wippy-fe/theme": "^0.0.34" + "@wippy-fe/theme": "^0.0.36" }, "devDependencies": { "@tanstack/query-core": "^5.90.20", @@ -16,8 +16,8 @@ "@typescript-eslint/eslint-plugin": "^7.0.0", "@typescript-eslint/parser": "^7.0.0", "@vitejs/plugin-vue": "^5.0.0", - "@wippy-fe/types-global-proxy": "^0.0.34", - "@wippy-fe/vite-plugin": "^0.0.34", + "@wippy-fe/types-global-proxy": "^0.0.36", + "@wippy-fe/vite-plugin": "^0.0.36", "autoprefixer": "^10.4.0", "eslint": "^8.57.0", "eslint-plugin-vue": "^9.0.0", @@ -34,9 +34,9 @@ "peerDependencies": { "@iconify/vue": "^5.0.0", "@tanstack/vue-query": "^5.69.0", - "@wippy-fe/pinia-persist": "^0.0.34", - "@wippy-fe/proxy": "^0.0.34", - "@wippy-fe/router": "^0.0.34", + "@wippy-fe/pinia-persist": "^0.0.36", + "@wippy-fe/proxy": "^0.0.36", + "@wippy-fe/router": "^0.0.36", "axios": "^1.0.0", "luxon": "^3.5.0", "pinia": "^2.1.0", @@ -852,9 +852,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.4.tgz", - "integrity": "sha512-F5QXMSiFebS9hKZj02XhWLLnRpJ3B3AROP0tWbFBSj+6kCbg5m9j5JoHKd4mmSVy5mS/IMQloYgYxCuJC0fxEQ==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.61.1.tgz", + "integrity": "sha512-JnBB8MdXj45cajvTuO5FmPlvFVJRQgvrz1uSEl3NwqFnReAPGwb8EanbGi4z2nRaqLzjJSv5/JmycoTKlRZxHA==", "cpu": [ "arm" ], @@ -866,9 +866,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.4.tgz", - "integrity": "sha512-GxxTKApUpzRhof7poWvCJHRF51C67u1R7D6DiluBE8wKU1u5GWE8t+v81JvJYtbawoBFX1hLv5Ei4eVjkWokaw==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.61.1.tgz", + "integrity": "sha512-Jx2g7iSjw4AOT0HDPHM9RV3GNjRXwybWtSFZiZAYUTjUwjVrYIwq3kBf+LnhqJlzXFAqTAh2F7IGI+O568exPw==", "cpu": [ "arm64" ], @@ -880,9 +880,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.4.tgz", - "integrity": "sha512-tua0TaJxMOB1R0V0RS1jFZ/RpURFDJIOR2A6jWwQeawuFyS4gBW+rntLRaQd0EQ4bd6Vp44Z2rXW+YYDBsj6IA==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.61.1.tgz", + "integrity": "sha512-0F1L/Z3Eqv8mT2n3dCpeO8GcTvHvVqkP5/t6DMsn0KzhYVcg+s7Ncl5DS8qjKYEeio6Az0Gt6nyBORay5qIlCA==", "cpu": [ "arm64" ], @@ -894,9 +894,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.4.tgz", - "integrity": "sha512-CSKq7MsP+5PFIcydhAiR1K0UhEI1A2jWXVKHPCBZ151yOutENwvnPocgVHkivu2kviURtCEB6zUQw0vs8RrhMg==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.61.1.tgz", + "integrity": "sha512-qLttcH871ujY4YcVfUSShhOw+CsoTatYz8gRbHO7Bb92QH059/P0y5do1KMs41fY0BpD2x4AJH/gID0zFiqVKQ==", "cpu": [ "x64" ], @@ -908,9 +908,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.4.tgz", - "integrity": "sha512-+O8OkVdyvXMtJEciu2wS/pzm1IxntEEQx3z5TAVy4l32G0etZn+RsA48ARRrFm6Ri8fvqPQfgrvNxSjKAbnd3g==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.61.1.tgz", + "integrity": "sha512-fUI4RapGE0Oh3mb8mgfvC1O2nU1RpDZUKnDQm3xB1Ipg7C2wTs5Kstz7G2uWK99a8S2yTMq8/P4uycwNa0nJyw==", "cpu": [ "arm64" ], @@ -922,9 +922,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.4.tgz", - "integrity": "sha512-Iw3oMskH3AfNuhU0MSN7vNbdi4me/NiYo2azqPz/Le16zHSa+3RRmliCMWWQmh4lcndccU40xcJuTYJZxNo/lw==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.61.1.tgz", + "integrity": "sha512-H5YrdvJaDtI/U9/emrD4b++xkvp3y/JvOe4rizHbxvkyMfRS/CiRYdji+Pl8D0brEaNFWUh1drQxgAGIl6Xudw==", "cpu": [ "x64" ], @@ -936,9 +936,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.4.tgz", - "integrity": "sha512-EIPRXTVQpHyF8WOo219AD2yEltPehLTcTMz2fn6JsatLYSzQf00hj3rulF+yauOlF9/FtM2WpkT/hJh/KJFGhA==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.61.1.tgz", + "integrity": "sha512-Q8CBCCQtDFrYtXoeUXSrnFXKOnyUhx6bz+SkL6A0E7V8kAiCJ5pamq1WtbfpVGhR5TSpXY6ak3avmDc5fHTyJA==", "cpu": [ "arm" ], @@ -950,9 +950,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.4.tgz", - "integrity": "sha512-J3Yh9PzzF1Ovah2At+lHiGQdsYgArxBbXv/zHfSyaiFQEqvNv7DcW98pCrmdjCZBrqBiKrKKe2V+aaSGWuBe/w==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.61.1.tgz", + "integrity": "sha512-nwnhk1581l0FBVellGcVCAT0Oi06onEA3WB53sf01VO3I0UPBkMH9sXONYME2K0ovXcNayJfNtHfm6mpJElatQ==", "cpu": [ "arm" ], @@ -964,9 +964,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.4.tgz", - "integrity": "sha512-BFDEZMYfUvLn37ONE1yMBojPxnMlTFsdyNoqncT0qFq1mAfllL+ATMMJd8TeuVMiX84s1KbcxcZbXInmcO2mRg==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.61.1.tgz", + "integrity": "sha512-x5Xr49hwt3hdW75UOZm3395YwwzPyauktslv29KpWL/T+vVAzoT3azLcTWv0eMciBNrx+DYjH4paehHoLpPvpg==", "cpu": [ "arm64" ], @@ -978,9 +978,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.4.tgz", - "integrity": "sha512-pc9EYOSlOgdQ2uPl1o9PF6/kLSgaUosia7gOuS8mB69IxJvlclko1MECXysjs5ryez1/5zjYqx3+xYU0TU6R1A==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.61.1.tgz", + "integrity": "sha512-unMS3H73DpaoPyyEVPjGKleM/s0mkmsauTENpw4INQY8y4+IuLNjkueQ5QCtC0D3N38Y38yhAU8OoZ20S2Tm6w==", "cpu": [ "arm64" ], @@ -992,9 +992,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.4.tgz", - "integrity": "sha512-NxnomyxYerDh5n4iLrNa+sH+Z+U4BMEE46V2PgQ/hoB909i8gV1M5wPojWg9fk1jWpO3IQnOs20K4wyZuFLEFQ==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.61.1.tgz", + "integrity": "sha512-zNZzGRnAhwjFEYmvphJRV5XaQGjs62cCmeYYHUT//NbvEnHauw+I85nGG+SiVg5ld4GX8D1IbKIX+ozITQnhMQ==", "cpu": [ "loong64" ], @@ -1006,9 +1006,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.4.tgz", - "integrity": "sha512-nbJnQ8a3z1mtmrwImCYhc6BGpThAyYVRQxw9uKSKG4wR6aAYno9sVjJ0zaZcW9BPJX1GbrDPf+SvdWjgTuDmnw==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.61.1.tgz", + "integrity": "sha512-LdpWGL8X209B2SIvWjqlc8VZgM6PKfontSerGepuldQmHYrAOtnMCXeJkxXGbC+PPZVOuu5czJo7fNV6aeW8rQ==", "cpu": [ "loong64" ], @@ -1020,9 +1020,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.4.tgz", - "integrity": "sha512-2EU6acNrQLd8tYvo/LXW535wupT3m6fo7HKo6lr7ktQoItxTyOL1ZCR/GfGCuXl2vR+zmfI6eRXkSemafv+iVg==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.61.1.tgz", + "integrity": "sha512-EC5kTtNaNGOmbMGqar8dvJy6y/hg99GAwjfBz++pxZhQATXGcRjd6c5en5wcbru0vkRmiMGsQKdMJOOf6sza4g==", "cpu": [ "ppc64" ], @@ -1034,9 +1034,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.4.tgz", - "integrity": "sha512-WeBtoMuaMxiiIrO2IYP3xs6GMWkJP2C0EoT8beTLkUPmzV1i/UcOSVw1d5r9KBODtHKilG5yFxsGRnBbK3wJ4A==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.61.1.tgz", + "integrity": "sha512-8hiwp6D4acEcNK78I4rP0/XtS1sknWIAMJBPdR4l6zUtyTm5KiTDr5bXmWt4foY7nAN7AThDHgkLIEZOWKbzWw==", "cpu": [ "ppc64" ], @@ -1048,9 +1048,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.4.tgz", - "integrity": "sha512-FJHFfqpKUI3A10WrWKiFbBZ7yVbGT4q4B5o1qKFFojqpaYoh9LrQgqWCmmcxQzVSXYtyB5bzkXrYzlHTs21MYA==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.61.1.tgz", + "integrity": "sha512-10dh/h/BqA7DuMPWSxkR8uks18FRwnwOEqr5zOTEl+NOwP/OMzKX8OFR/Of9xxDA7D5qef1Nzar5WDD2kCCr1g==", "cpu": [ "riscv64" ], @@ -1062,9 +1062,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.4.tgz", - "integrity": "sha512-mcEl6CUT5IAUmQf1m9FYSmVqCJlpQ8r8eyftFUHG8i9OhY7BkBXSUdnLH5DOf0wCOjcP9v/QO93zpmF1SptCCw==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.61.1.tgz", + "integrity": "sha512-YKJ5lg35DP17gcAOggnihe+APw9HLyj1Xn7gsmGumBJAUDa6NGXNixJzmkWLhcK9TOuuyQjdamzvJefkO7qHZQ==", "cpu": [ "riscv64" ], @@ -1076,9 +1076,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.4.tgz", - "integrity": "sha512-ynt3JxVd2w2buzoKDWIyiV1pJW93xlQic1THVLXilz429oijRpSHivZAgp65KBu+cMcgf1eVVjdnTLvPxgCuoQ==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.61.1.tgz", + "integrity": "sha512-Mlil5G2Jj6a7B3LWGctg+XPL9vdXYuzCtNXfxOQ0nPjc2m6ueUktocPGH9bnAM0bNRKb/bAWTujUU7IJQdQA+g==", "cpu": [ "s390x" ], @@ -1090,9 +1090,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.4.tgz", - "integrity": "sha512-Boiz5+MsaROEWDf+GGEwF8VMHGhlUoQMtIPjOgA5fv4osupqTVnJteQNKJwUcnUog2G55jYXH7KZFFiJe0TEzQ==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.61.1.tgz", + "integrity": "sha512-bVWIOIk6pV01p4CdUbPP7CJ/434z+OooYjDuFcR+44N35YvKUC66G8MGnvcWx5mWKW3g61J+t74l3Kj15Kwn2Q==", "cpu": [ "x64" ], @@ -1104,9 +1104,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.4.tgz", - "integrity": "sha512-+qfSY27qIrFfI/Hom04KYFw3GKZSGU4lXus51wsb5EuySfFlWRwjkKWoE9emgRw/ukoT4Udsj4W/+xxG8VbPKg==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.61.1.tgz", + "integrity": "sha512-qy5pBvZbqNFheBz61R1rzsezjm0J7O2oNGoWtGoY89SZYLUfxAJTBAqDChqAIdB4rCiIbi9nF7yZ83GnNiLwSw==", "cpu": [ "x64" ], @@ -1118,9 +1118,9 @@ ] }, "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.4.tgz", - "integrity": "sha512-VpTfOPHgVXEBeeR8hZ2O0F3aSso+JDWqTWmTmzcQKted54IAdUVbxE+j/MVxUsKa8L20HJhv3vUezVPoquqWjA==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.61.1.tgz", + "integrity": "sha512-E83TXjI4zm0+5f2qO+UOudaCYIhYwpJ5jq6YCZNIZ+6CbfhKrkAGezeiASBL9ElxAxFsRS9ZhESv8mfnj6TKeg==", "cpu": [ "x64" ], @@ -1132,9 +1132,9 @@ ] }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.4.tgz", - "integrity": "sha512-IPOsh5aRYuLv/nkU51X10Bf75Bsf6+gZdx1X+QP5QM6lIJFHHqbHLG0uJn/hWthzo13UAc2umiUorqZy3axoZg==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.61.1.tgz", + "integrity": "sha512-fbWnKqVkjrJN38vNe3ahkbk6iejS/3b0Nt7EEtPpE6RBacZcGXNKbzfHN3GUUlXOPghUg0j6XUGrtjX9z1sIvA==", "cpu": [ "arm64" ], @@ -1146,9 +1146,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.4.tgz", - "integrity": "sha512-4QzE9E81OohJ/HKzHhsqU+zcYYojVOXlFMs1DdyMT6qXl/niOH7AVElmmEdUNHHS/oRkc++d5k6Vy85zFs0DEw==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.61.1.tgz", + "integrity": "sha512-ArMl38iVAbk0New1ogihQNY6iphLi4ZaRsa037gUzv5yeKPY8TD3Dmy4x2RNC1VztU/uqm+G+/RwFrSka3Oy2g==", "cpu": [ "arm64" ], @@ -1160,9 +1160,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.4.tgz", - "integrity": "sha512-zTPgT1YuHHcd+Tmx7h8aml0FWFVelV5N54oHow9SLj+GfoDy/huQ+UV396N/C7KpMDMiPspRktzM1/0r1usYEA==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.61.1.tgz", + "integrity": "sha512-0mYtjHS9ucAbcATycCNK9IGBk/cCe/ma7EmSLGZdsxnOA8cjRIyU04wDpVAD9NiOfLUR9KTxdiO53uOkherqjQ==", "cpu": [ "ia32" ], @@ -1174,9 +1174,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.4.tgz", - "integrity": "sha512-DRS4G7mi9lJxqEDezIkKCaUIKCrLUUDCUaCsTPCi/rtqaC6D/jjwslMQyiDU50Ka0JKpeXeRBFBAXwArY52vBw==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.61.1.tgz", + "integrity": "sha512-gK1iCEPfpoSG9wfBihXxvBMi8ZfcWffYkEsC/Eih+iFENTaewvNcrEQ69lIOWYO5pePHKLHHO7nq5AILGO/HQQ==", "cpu": [ "x64" ], @@ -1188,9 +1188,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.4.tgz", - "integrity": "sha512-QVTUovf40zgTqlFVrKA1uXMVvU2QWEFWfAH8Wdc48IxLvrJMQVMBRjuQyUpzZCDkakImib9eVazbWlC6ksWtJw==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.61.1.tgz", + "integrity": "sha512-X+zaP2x+j4RXGfbp/seSoRHWnPxzApilDszisZxbYH5C/jTxFhCtDNdPGZb9lJyYPs24wGxruPF7Y+sIXt9Gzw==", "cpu": [ "x64" ], @@ -1219,9 +1219,9 @@ } }, "node_modules/@tanstack/query-core": { - "version": "5.100.14", - "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.100.14.tgz", - "integrity": "sha512-5X41dGpxgeaHISCRW2oYwcSycZeULZzAunaudXT9ov1KOTj9xwt0CH6hbwqP1/z74ZWF7rYFnDpyYH07XFcZew==", + "version": "5.101.0", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.101.0.tgz", + "integrity": "sha512-cQetA74EB+seWySv1TTKr828TnP0u39m6LykwDXIo84SNortpDkp30TMEjkqtYCNP9c40uT/iwl6MLiufEt0Ow==", "dev": true, "license": "MIT", "funding": { @@ -1230,14 +1230,14 @@ } }, "node_modules/@tanstack/vue-query": { - "version": "5.100.14", - "resolved": "https://registry.npmjs.org/@tanstack/vue-query/-/vue-query-5.100.14.tgz", - "integrity": "sha512-gNKay40Z29mvnjJtq2emzbZhGd2HRZQTOJuJZxAWpUKnmjOf79BndNnF1Aowm0Nt4WQtXYjFCGNZkBzSEJ+JEg==", + "version": "5.101.0", + "resolved": "https://registry.npmjs.org/@tanstack/vue-query/-/vue-query-5.101.0.tgz", + "integrity": "sha512-sZeW0RvfEZ9QRiaXirE/HQZsFT5saMlPZVfeYvjPX6lqSBS9lkD7wfnCfzOBns6HD2f34Gx9cazkuU3Xj6hl/A==", "dev": true, "license": "MIT", "dependencies": { "@tanstack/match-sorter-utils": "^8.19.4", - "@tanstack/query-core": "5.100.14", + "@tanstack/query-core": "5.101.0", "@vue/devtools-api": "^6.6.3", "vue-demi": "^0.14.10" }, @@ -1256,9 +1256,9 @@ } }, "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", "dev": true, "license": "MIT" }, @@ -1506,53 +1506,53 @@ } }, "node_modules/@vue/compiler-core": { - "version": "3.5.34", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.34.tgz", - "integrity": "sha512-s9cLyK5mLcvZ4Agva5QgRsQyLKvts9WbU9DB6NqiZkkGEdwmcEiylj5Jbwkp680drF/NNCV8OlAJSe+yMLxaJw==", + "version": "3.5.35", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.35.tgz", + "integrity": "sha512-BUmHaR1J+O+CKZ9uJucdVTEr1LHsdyvv7vG3eNRhK3CczEHeMd/LtsHAuD7PbrxvI2envCY2v7HI1vC1aBRzKw==", "license": "MIT", "dependencies": { "@babel/parser": "^7.29.3", - "@vue/shared": "3.5.34", + "@vue/shared": "3.5.35", "entities": "^7.0.1", "estree-walker": "^2.0.2", "source-map-js": "^1.2.1" } }, "node_modules/@vue/compiler-dom": { - "version": "3.5.34", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.34.tgz", - "integrity": "sha512-EbF/T++k0e2MMZlJsBhzK8Sgwt0HcIPOhzn1CTB/lv6sQcyk+OWf8YeiLxZp3ro7MbbLcAfAJ6sEvjFWuNgUCw==", + "version": "3.5.35", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.35.tgz", + "integrity": "sha512-k+bprkXxuqhVajgTx5mUHuir7TwQzUKOWR40ng1ncAqQRPnrLngGGgqVEEhOnTMlc8btHYVKmrP8s5Qyg0hvYA==", "license": "MIT", "dependencies": { - "@vue/compiler-core": "3.5.34", - "@vue/shared": "3.5.34" + "@vue/compiler-core": "3.5.35", + "@vue/shared": "3.5.35" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.5.34", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.34.tgz", - "integrity": "sha512-D/ihr6uZeIt6r+pVZf46RWT1fAsLFMbUP7k8G1VkiiWexriED9GrX3echHd4Abbt17zjlfiFJ8z7a3BxZOPNjg==", + "version": "3.5.35", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.35.tgz", + "integrity": "sha512-G5VPMcXTSywXBgtFOZOnHKBxKSrwXUcvY1iaF5/hRcy7t0J6CH/d8ha9F4nzi00Fax1eLV0QHM7v4mQu68jydw==", "license": "MIT", "dependencies": { "@babel/parser": "^7.29.3", - "@vue/compiler-core": "3.5.34", - "@vue/compiler-dom": "3.5.34", - "@vue/compiler-ssr": "3.5.34", - "@vue/shared": "3.5.34", + "@vue/compiler-core": "3.5.35", + "@vue/compiler-dom": "3.5.35", + "@vue/compiler-ssr": "3.5.35", + "@vue/shared": "3.5.35", "estree-walker": "^2.0.2", "magic-string": "^0.30.21", - "postcss": "^8.5.14", + "postcss": "^8.5.15", "source-map-js": "^1.2.1" } }, "node_modules/@vue/compiler-ssr": { - "version": "3.5.34", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.34.tgz", - "integrity": "sha512-cDtTHKibkThKGHH1SP+WdccquNRYQDFH6rRjQCqT9G2ltFAfoR5pUftpab/z+aM5mW9HLLVQW7hfKKQe/1GBeQ==", + "version": "3.5.35", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.35.tgz", + "integrity": "sha512-rGhAeXgdM7/ffTJGXT69rCCdTmjDewnFuUZfBQQHTdcEBeWdT5HCGY60y2ytLJr9/Dsu7IntUi5z/w0h6Rjnzw==", "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.5.34", - "@vue/shared": "3.5.34" + "@vue/compiler-dom": "3.5.35", + "@vue/shared": "3.5.35" } }, "node_modules/@vue/compiler-vue2": { @@ -1598,89 +1598,114 @@ } }, "node_modules/@vue/reactivity": { - "version": "3.5.34", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.34.tgz", - "integrity": "sha512-y9XDjCEuBp+98k+UL5dbYkh57AHU4o6cxZedOPXw3bmrZZYLQsVHguGurq7hVrPCSrQtrnz1f9dssyFr+dMXfQ==", + "version": "3.5.35", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.35.tgz", + "integrity": "sha512-tVc+SsHConvh/Lz64qq1pP3rYArBmK42xonovEcxY74SQtvctZodG/zhq54P5dr38cVuw25d27cPNRdlMidpGQ==", "license": "MIT", "dependencies": { - "@vue/shared": "3.5.34" + "@vue/shared": "3.5.35" } }, "node_modules/@vue/runtime-core": { - "version": "3.5.34", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.34.tgz", - "integrity": "sha512-mKeBYvu8tcMSLhypAHBmriUFfWXKTCF/23Z4jiCoYK3UtWepkliViNLuR90V9XOyD62mUxs9p1jsrpK3CCGIzw==", + "version": "3.5.35", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.35.tgz", + "integrity": "sha512-A/xFNX9loIcWDygeQuNCfKuh0CoYBzxhqEMNah5TSFg9Z53DrFYEN2qi5CU9necjM1OWYegYREUTHmXTmhfXtg==", "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.34", - "@vue/shared": "3.5.34" + "@vue/reactivity": "3.5.35", + "@vue/shared": "3.5.35" } }, "node_modules/@vue/runtime-dom": { - "version": "3.5.34", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.34.tgz", - "integrity": "sha512-e8kZzERmCwUnBRVsgSQlAfrfU2rGoy0FFKPBXSlfEjc/O3KfA7QP0t1/2ZylrbchjmIKB4dPTd07A6WPr0eOrg==", + "version": "3.5.35", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.35.tgz", + "integrity": "sha512-odrJ1C391dbGnyDRh8U+rnP7J2amIEzfmRk5vXy7xi3aZhEXofTvpi0T4HJb6jlNqQZTNPR5MPHSB3RHNkIORA==", "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.34", - "@vue/runtime-core": "3.5.34", - "@vue/shared": "3.5.34", + "@vue/reactivity": "3.5.35", + "@vue/runtime-core": "3.5.35", + "@vue/shared": "3.5.35", "csstype": "^3.2.3" } }, "node_modules/@vue/server-renderer": { - "version": "3.5.34", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.34.tgz", - "integrity": "sha512-nHxmJoTrKsmrkbILRhkC9gY1G3moZbJTqCzDd7DOOzG5KH9oeJ0Unqrff5f9v0pW//jES05ZkJcNtfE8JjOIew==", + "version": "3.5.35", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.35.tgz", + "integrity": "sha512-NkebSOYdB97wi8OQcO3HqzZSlymJi/aWsN/7h74OSVhRTm6qGs3Jp3e0rCXynmWwSlKeRrnlIug+ilYoHBmQDA==", "license": "MIT", "dependencies": { - "@vue/compiler-ssr": "3.5.34", - "@vue/shared": "3.5.34" + "@vue/compiler-ssr": "3.5.35", + "@vue/shared": "3.5.35" }, "peerDependencies": { - "vue": "3.5.34" + "vue": "3.5.35" } }, "node_modules/@vue/shared": { - "version": "3.5.34", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.34.tgz", - "integrity": "sha512-24uqU4OIiX29ryC3MeWid/Xf2fa2EFRUVLb77nRhk+UrTVrh/XiGtFAFmJBAtBRbjwNdsPRP+jj/OL27Eg1NDA==", + "version": "3.5.35", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.35.tgz", + "integrity": "sha512-zSbjL7gRXwks2ZQLRGCajBtBXEOXW9Ddhn/HvSdrGkE2dqGnumzW8XtusRrxrE9LvqtiqDXQ+A60Hp6mvdYxfA==", "license": "MIT" }, + "node_modules/@wippy-fe/layout": { + "version": "0.0.36", + "resolved": "https://registry.npmjs.org/@wippy-fe/layout/-/layout-0.0.36.tgz", + "integrity": "sha512-zgg3KUGqGlSotKPjm540vQC57uCvXLkAdq/wGmu6bRsHW9FKP1CiK4QTIP0Hc6+DFi7hBtRyv/TPzH4CyOqjEg==", + "license": "UNLICENSED", + "peer": true, + "dependencies": { + "@wippy-fe/shared": "^0.0.36", + "nanoevents": "^9.1.0" + }, + "peerDependencies": { + "vue": "^3.5.0" + } + }, "node_modules/@wippy-fe/pinia-persist": { - "version": "0.0.34", - "resolved": "https://registry.npmjs.org/@wippy-fe/pinia-persist/-/pinia-persist-0.0.34.tgz", - "integrity": "sha512-+t7SdeKo4JkPOmev66oLU3YIav/rj70ocd7q0Q6r8x0VDkSEWZ0hD/gPthKCy5TNsr0xFOE7+1dFgF4cSZ3vOA==", + "version": "0.0.36", + "resolved": "https://registry.npmjs.org/@wippy-fe/pinia-persist/-/pinia-persist-0.0.36.tgz", + "integrity": "sha512-EH7KKqbiFgCdU5MMrIcik/BIWlidOEDGBw8QV4serqt/T2iWGsNet1ecqsK5+awZRRSXB6iF7HU8sJjQgtCztQ==", "license": "UNLICENSED", "peer": true, "peerDependencies": { - "@wippy-fe/proxy": "0.0.34", + "@wippy-fe/proxy": "^0.0.36", "pinia": "^2.1.0" } }, "node_modules/@wippy-fe/proxy": { - "version": "0.0.34", - "resolved": "https://registry.npmjs.org/@wippy-fe/proxy/-/proxy-0.0.34.tgz", - "integrity": "sha512-r4WaGX0Z14g5o3u5PFpzlS7AFQEOyJCI5G+8QP23KML4UB11uAU/dKBYVAz6twa4DKukwNXW+SwuPszzfDpyzQ==", + "version": "0.0.36", + "resolved": "https://registry.npmjs.org/@wippy-fe/proxy/-/proxy-0.0.36.tgz", + "integrity": "sha512-tsDyQKPJGflrnXkExStIW/UcOWR8a6XtLosUNiwPz5sRXPQNvoDVNEWbP3A2gyPExSGBW9mzyW59xt+UohiXCQ==", "license": "UNLICENSED", - "peer": true + "peer": true, + "dependencies": { + "@wippy-fe/layout": "^0.0.36", + "@wippy-fe/vue-utils": "^0.0.36" + } }, "node_modules/@wippy-fe/router": { - "version": "0.0.34", - "resolved": "https://registry.npmjs.org/@wippy-fe/router/-/router-0.0.34.tgz", - "integrity": "sha512-ZV6xjXi4tH/ap+PSKGzfUvIF3JrEwDcM6of2FGfgQZms88vxcMrlnYTkAfq86eqjkhL/JjoiMgWyOezXqfIh9Q==", + "version": "0.0.36", + "resolved": "https://registry.npmjs.org/@wippy-fe/router/-/router-0.0.36.tgz", + "integrity": "sha512-eC7J5mopspkmqnseMgr+c1u9RCrS/9zGxm0H1jgoYM05ooniPvrhvLs9HTgOni+2cvGgnVE4gDdMtikTE9/qQA==", "license": "UNLICENSED", "peer": true, "peerDependencies": { - "@wippy-fe/proxy": "0.0.34", + "@wippy-fe/proxy": "^0.0.36", "vue": "^3.5.0", "vue-router": "^4.5.0" } }, + "node_modules/@wippy-fe/shared": { + "version": "0.0.36", + "resolved": "https://registry.npmjs.org/@wippy-fe/shared/-/shared-0.0.36.tgz", + "integrity": "sha512-HvZlIM3hCc6k3Es92YM7eHJTIBdWkHo/x6tfW9NkusvhmHjOurdpYgB3SeC4y7iYqhm/rlsoCmMxO56zPdu/ow==", + "license": "UNLICENSED", + "peer": true + }, "node_modules/@wippy-fe/theme": { - "version": "0.0.34", - "resolved": "https://registry.npmjs.org/@wippy-fe/theme/-/theme-0.0.34.tgz", - "integrity": "sha512-I3dPYqipiqSFk/uuLihVP6AHT3QR8ggt0/n+NuT+082mcFVxnz7CHZCJMyq/KXoLbQoJT+9t25oBI6p0zdnWLQ==", + "version": "0.0.36", + "resolved": "https://registry.npmjs.org/@wippy-fe/theme/-/theme-0.0.36.tgz", + "integrity": "sha512-dvFSkXnADFTf3IFt2h2eo54LtAGp8ZSIkiCPMGcoJ//YmNMs1Zd/YjrT2rbQg+IQhHpwKHaBnVywPY9Nl0WO9Q==", "license": "UNLICENSED", "dependencies": { "tailwind-scrollbar": "^3.0.0", @@ -1696,22 +1721,29 @@ } }, "node_modules/@wippy-fe/types-global-proxy": { - "version": "0.0.34", - "resolved": "https://registry.npmjs.org/@wippy-fe/types-global-proxy/-/types-global-proxy-0.0.34.tgz", - "integrity": "sha512-pDxhdGvapv+4GFWBDxUP0oLbCS4rBLcR6uasEX9lB9NgkJI6L2cMtm78MUzjQziDh6euz1pLbBsZRkuBoHPg+g==", + "version": "0.0.36", + "resolved": "https://registry.npmjs.org/@wippy-fe/types-global-proxy/-/types-global-proxy-0.0.36.tgz", + "integrity": "sha512-9t/PPt2aO4tvJ5cpGQmY1Tzk+JqjoaSmWw4vO4jt5Q4G9d79irsDYGXW0vqfi11AUh9lkqrj/wGQKaV+ZAmcPQ==", "dev": true, "license": "UNLICENSED" }, "node_modules/@wippy-fe/vite-plugin": { - "version": "0.0.34", - "resolved": "https://registry.npmjs.org/@wippy-fe/vite-plugin/-/vite-plugin-0.0.34.tgz", - "integrity": "sha512-N5ZAZZYeUOYEeFcbxy4B/4GnwF4L90fyrYYRPLJ4gezROHHC1SXUqvyZCtIQ5HMnwfDPp3osvJxuhvye7CeZXg==", + "version": "0.0.36", + "resolved": "https://registry.npmjs.org/@wippy-fe/vite-plugin/-/vite-plugin-0.0.36.tgz", + "integrity": "sha512-PSkUqxPU6OlwSpprSe/oG73qtzR2Hq+0ufOQ/rY5NMTuvQIYm3JOI5or1bJw7CVeAnGkLhavGFP3EL5l1pmPpw==", "dev": true, "license": "UNLICENSED", "peerDependencies": { "vite": "^5 || ^6 || ^7" } }, + "node_modules/@wippy-fe/vue-utils": { + "version": "0.0.36", + "resolved": "https://registry.npmjs.org/@wippy-fe/vue-utils/-/vue-utils-0.0.36.tgz", + "integrity": "sha512-tTjpM62CXd5ZfCPbJ1NWooLRkURljdxnGEfY242Wv1TFcOoaHnvXH97zG6rvbIWVYbj3qsu0RJ5dxvOosrhfTQ==", + "license": "UNLICENSED", + "peer": true + }, "node_modules/acorn": { "version": "8.16.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", @@ -1885,9 +1917,9 @@ } }, "node_modules/axios": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.16.1.tgz", - "integrity": "sha512-caYkukvroVPO8KrzuJEb50Hm07KwfBZPEC3VeFHTsqWHvKTsy54hjJz9BS/cdaypROE2rH6xvm9mHX4fgWkr3A==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.17.0.tgz", + "integrity": "sha512-J8SwNxprqqpbfenehxWYXE7CW+wM1BB4w3+N+g+/Wx40xM4rsLrfPmHHxSWIxJLYDgSY/HqlFPIYb2/S3rxafw==", "license": "MIT", "peer": true, "dependencies": { @@ -1905,9 +1937,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.10.32", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.32.tgz", - "integrity": "sha512-wbPvpyjJPC0zdfdKXxqEL3Ea+bOMD/87X4lftiJkkaBiuG6ALQy1SLmEd7BSmVCuwCQsBrCamgBoLyfFDD1EPg==", + "version": "2.10.34", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.34.tgz", + "integrity": "sha512-IMDedajPifLnHNY0X9n8hKxRTQ6/eTHwr5bDo04WnuqxyKw6LYtQywCuuqPZwhl3aBXMvQpJov42GLCwRRdQzw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -2026,9 +2058,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001793", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001793.tgz", - "integrity": "sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA==", + "version": "1.0.30001797", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001797.tgz", + "integrity": "sha512-l8xKG+gwAIExZGl9FrF7KUwuOmk6wbEPC9Xoy/RtnWv1XG0Q4LFlagaLpUv3Kiza3W/wm27zy0yWJEieYKAP6w==", "dev": true, "funding": [ { @@ -2276,9 +2308,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.361", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.361.tgz", - "integrity": "sha512-Q6Hts7N9FnJc5LeGRINFvLhCI9xZmNtTDe5ZbcVezQz7cU4a8Aua3GH1b8J2XY8Al9PF+OCwYqhgsOOheMdvkA==", + "version": "1.5.368", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.368.tgz", + "integrity": "sha512-7RckJJK4uESJF9PxvfMWd3TGqIiieUTG4HxnKaKuIpGbcr+r2ZEB3g2gAhCP3Fqm42vJSzLfgab9eva/C4/XVw==", "dev": true, "license": "ISC" }, @@ -3009,9 +3041,9 @@ } }, "node_modules/hasown": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", - "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -3184,10 +3216,20 @@ } }, "node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.2.0.tgz", + "integrity": "sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -3403,6 +3445,16 @@ "thenify-all": "^1.0.0" } }, + "node_modules/nanoevents": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/nanoevents/-/nanoevents-9.1.0.tgz", + "integrity": "sha512-Jd0fILWG44a9luj8v5kED4WI+zfkkgwKyRQKItTtlPfEsh7Lznfi1kr8/iZ+XAIss4Qq5GqRB0qtWbaz9ceO/A==", + "license": "MIT", + "peer": true, + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, "node_modules/nanoid": { "version": "3.3.12", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz", @@ -3429,9 +3481,9 @@ "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.46", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.46.tgz", - "integrity": "sha512-GYVXHE2KnrzAfsAjl4uP++evGFCrAU1jta4ubEjIG7YWt/64Gqv66a30yKwWczVjA6j3bM4nBwH7Pk1JmDHaxQ==", + "version": "2.0.47", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.47.tgz", + "integrity": "sha512-Uzmd6LXpouKo8EUK68IjH4+E01w/hXyV3R3g/geCJo+rXLNfh1xucB+LOzYEOQPSiUK3h/xZf0cQGcSsmyL2Og==", "dev": true, "license": "MIT", "engines": { @@ -3973,13 +4025,13 @@ } }, "node_modules/rollup": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.4.tgz", - "integrity": "sha512-WHeFSbZYsPu3+bLoNRUuAO+wavNlocOPf3wSHTP7hcFKVnJeWsYlCDbr3mTS14FCizf9ccIxXA8sGL8zKeQN3g==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.61.1.tgz", + "integrity": "sha512-I4KW6iuRpuu2uHBLraZ1wNZe0DP7lnRha+VJ9tNaYVaVgKhW0aI3h4RYnoRPeql0flHm/Co55b7snEDcOfOJrA==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "1.0.8" + "@types/estree": "1.0.9" }, "bin": { "rollup": "dist/bin/rollup" @@ -3989,31 +4041,31 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.60.4", - "@rollup/rollup-android-arm64": "4.60.4", - "@rollup/rollup-darwin-arm64": "4.60.4", - "@rollup/rollup-darwin-x64": "4.60.4", - "@rollup/rollup-freebsd-arm64": "4.60.4", - "@rollup/rollup-freebsd-x64": "4.60.4", - "@rollup/rollup-linux-arm-gnueabihf": "4.60.4", - "@rollup/rollup-linux-arm-musleabihf": "4.60.4", - "@rollup/rollup-linux-arm64-gnu": "4.60.4", - "@rollup/rollup-linux-arm64-musl": "4.60.4", - "@rollup/rollup-linux-loong64-gnu": "4.60.4", - "@rollup/rollup-linux-loong64-musl": "4.60.4", - "@rollup/rollup-linux-ppc64-gnu": "4.60.4", - "@rollup/rollup-linux-ppc64-musl": "4.60.4", - "@rollup/rollup-linux-riscv64-gnu": "4.60.4", - "@rollup/rollup-linux-riscv64-musl": "4.60.4", - "@rollup/rollup-linux-s390x-gnu": "4.60.4", - "@rollup/rollup-linux-x64-gnu": "4.60.4", - "@rollup/rollup-linux-x64-musl": "4.60.4", - "@rollup/rollup-openbsd-x64": "4.60.4", - "@rollup/rollup-openharmony-arm64": "4.60.4", - "@rollup/rollup-win32-arm64-msvc": "4.60.4", - "@rollup/rollup-win32-ia32-msvc": "4.60.4", - "@rollup/rollup-win32-x64-gnu": "4.60.4", - "@rollup/rollup-win32-x64-msvc": "4.60.4", + "@rollup/rollup-android-arm-eabi": "4.61.1", + "@rollup/rollup-android-arm64": "4.61.1", + "@rollup/rollup-darwin-arm64": "4.61.1", + "@rollup/rollup-darwin-x64": "4.61.1", + "@rollup/rollup-freebsd-arm64": "4.61.1", + "@rollup/rollup-freebsd-x64": "4.61.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.61.1", + "@rollup/rollup-linux-arm-musleabihf": "4.61.1", + "@rollup/rollup-linux-arm64-gnu": "4.61.1", + "@rollup/rollup-linux-arm64-musl": "4.61.1", + "@rollup/rollup-linux-loong64-gnu": "4.61.1", + "@rollup/rollup-linux-loong64-musl": "4.61.1", + "@rollup/rollup-linux-ppc64-gnu": "4.61.1", + "@rollup/rollup-linux-ppc64-musl": "4.61.1", + "@rollup/rollup-linux-riscv64-gnu": "4.61.1", + "@rollup/rollup-linux-riscv64-musl": "4.61.1", + "@rollup/rollup-linux-s390x-gnu": "4.61.1", + "@rollup/rollup-linux-x64-gnu": "4.61.1", + "@rollup/rollup-linux-x64-musl": "4.61.1", + "@rollup/rollup-openbsd-x64": "4.61.1", + "@rollup/rollup-openharmony-arm64": "4.61.1", + "@rollup/rollup-win32-arm64-msvc": "4.61.1", + "@rollup/rollup-win32-ia32-msvc": "4.61.1", + "@rollup/rollup-win32-x64-gnu": "4.61.1", + "@rollup/rollup-win32-x64-msvc": "4.61.1", "fsevents": "~2.3.2" } }, @@ -4041,9 +4093,9 @@ } }, "node_modules/semver": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.1.tgz", - "integrity": "sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==", + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.2.tgz", + "integrity": "sha512-c8jsqUZm3omBOI66G90z1Dyw5z622G8oLG+omfsHBJf3CWQTlOcwOjvOG6wtiNfW6anKm/eA39LMwMtMez2TiQ==", "dev": true, "license": "ISC", "bin": { @@ -4255,9 +4307,9 @@ } }, "node_modules/tinyglobby": { - "version": "0.2.16", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", - "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", "license": "MIT", "dependencies": { "fdir": "^6.5.0", @@ -4418,9 +4470,9 @@ "license": "MIT" }, "node_modules/vite": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.2.tgz", - "integrity": "sha512-2N/55r4JDJ4gdrCvGgINMy+HH3iRpNIz8K6SFwVsA+JbQScLiC+clmAxBgwiSPgcG9U15QmvqCGWzMbqda5zGQ==", + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.3.tgz", + "integrity": "sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A==", "dev": true, "license": "MIT", "dependencies": { @@ -4531,16 +4583,16 @@ "license": "MIT" }, "node_modules/vue": { - "version": "3.5.34", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.34.tgz", - "integrity": "sha512-WdLBG9gm02OgJIG9axd5Hpx0TFLdzVgfG2evFFu8Rur5O/IoGc5cMjnjh3tPL6GnRGsYvUhBSKVPYVcxRKpMCA==", + "version": "3.5.35", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.35.tgz", + "integrity": "sha512-cx89fnr+0kVGHiNFG6y6s0bdjypJRFNZn6x3WPstNdQR1bi1mbB7h4v5IBGTsPJU3nK1+0Iqj3Zf+hZWMieR4Q==", "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.5.34", - "@vue/compiler-sfc": "3.5.34", - "@vue/runtime-dom": "3.5.34", - "@vue/server-renderer": "3.5.34", - "@vue/shared": "3.5.34" + "@vue/compiler-dom": "3.5.35", + "@vue/compiler-sfc": "3.5.35", + "@vue/runtime-dom": "3.5.35", + "@vue/server-renderer": "3.5.35", + "@vue/shared": "3.5.35" }, "peerDependencies": { "typescript": "*" diff --git a/frontend/applications/main/package.json b/frontend/applications/main/package.json index af3fe57..42090dc 100644 --- a/frontend/applications/main/package.json +++ b/frontend/applications/main/package.json @@ -48,7 +48,7 @@ "lint:fix": "eslint src --ext .ts,.vue --fix" }, "dependencies": { - "@wippy-fe/theme": "^0.0.34" + "@wippy-fe/theme": "^0.0.36" }, "devDependencies": { "@tanstack/query-core": "^5.90.20", @@ -56,8 +56,8 @@ "@typescript-eslint/eslint-plugin": "^7.0.0", "@typescript-eslint/parser": "^7.0.0", "@vitejs/plugin-vue": "^5.0.0", - "@wippy-fe/vite-plugin": "^0.0.34", - "@wippy-fe/types-global-proxy": "^0.0.34", + "@wippy-fe/vite-plugin": "^0.0.36", + "@wippy-fe/types-global-proxy": "^0.0.36", "autoprefixer": "^10.4.0", "eslint": "^8.57.0", "eslint-plugin-vue": "^9.0.0", @@ -74,9 +74,9 @@ "peerDependencies": { "@iconify/vue": "^5.0.0", "@tanstack/vue-query": "^5.69.0", - "@wippy-fe/pinia-persist": "^0.0.34", - "@wippy-fe/proxy": "^0.0.34", - "@wippy-fe/router": "^0.0.34", + "@wippy-fe/pinia-persist": "^0.0.36", + "@wippy-fe/proxy": "^0.0.36", + "@wippy-fe/router": "^0.0.36", "axios": "^1.0.0", "luxon": "^3.5.0", "pinia": "^2.1.0", diff --git a/frontend/applications/main/src/app.ts b/frontend/applications/main/src/app.ts index fe8c0e4..92b6d82 100644 --- a/frontend/applications/main/src/app.ts +++ b/frontend/applications/main/src/app.ts @@ -19,8 +19,7 @@ export async function createMainApp() { const axios = await window.$W.api() const instance = await window.$W.instance() - // config.path is deprecated (v1 AppConfig only). Host v18+ uses config.context.route. - const routePath = config.context?.route || config.path + const routePath = config.context?.route const initialPath = routePath ? (routePath.startsWith('/') ? routePath : '/' + routePath) : '/' diff --git a/frontend/applications/main/src/app/app.vue b/frontend/applications/main/src/app/app.vue index ca2f46f..079f1d4 100644 --- a/frontend/applications/main/src/app/app.vue +++ b/frontend/applications/main/src/app/app.vue @@ -24,10 +24,19 @@ instance.on('action:navigate', (data: any) => { if (path) router.push(path) }) -const navItems = [ +interface NavItem { + path: string + name: string + label: string + icon: string + hostNav?: boolean +} + +const navItems: NavItem[] = [ { path: '/', name: 'home', label: 'Home', icon: 'tabler:home' }, { path: '/users', name: 'users', label: 'Users', icon: 'tabler:users' }, { path: '/components', name: 'components', label: 'Components', icon: 'tabler:components' }, + { path: '/nested-nav', name: 'nested-nav', label: 'Nested Nav', icon: 'tabler:route-2' }, { path: '/research', name: 'research', label: 'Web Research', icon: 'tabler:world-search' }, { path: '/c/keeper:main', name: 'keeper', label: 'Keeper', icon: 'tabler:shield-code', hostNav: true }, ] diff --git a/frontend/applications/main/src/pages/components.vue b/frontend/applications/main/src/pages/components.vue index e3bd3ba..8d2b355 100644 --- a/frontend/applications/main/src/pages/components.vue +++ b/frontend/applications/main/src/pages/components.vue @@ -5,14 +5,12 @@ import { Icon } from '@iconify/vue' import Chip from 'primevue/chip' /** - * Components & Embedding showcase — a single page with three tabs: + * Components & Embedding showcase — a single page with two tabs: * - Web Components: example custom elements, each in its own Shadow DOM. * - Iframe Theming: the same view.page rendered with default vs overridden colors. - * - Nested Navigation: an embedded nav-owner page whose internal routing - * mirrors into the browser URL. * - * Tab and nested sub-path live in the query (?tab, ?np) so the page keeps a - * single clean route and browser back/forward still works. + * The active tab lives in the query (?tab) so the page keeps a single clean + * route and browser back/forward still works. */ const route = useRoute() const router = useRouter() @@ -20,7 +18,6 @@ const router = useRouter() const tabs = [ { id: 'components', label: 'Web Components', icon: 'tabler:components' }, { id: 'iframe', label: 'Iframe Theming', icon: 'tabler:frame' }, - { id: 'nested', label: 'Nested Navigation', icon: 'tabler:route-2' }, ] as const type TabId = typeof tabs[number]['id'] @@ -33,21 +30,6 @@ function selectTab(id: TabId) { router.push({ query: id === 'components' ? {} : { tab: id } }) } -// Embedded nav-owner sub-path, mirrored to/from the ?np query. -const navOwnerSubPath = computed(() => { - const p = route.query.np - return (typeof p === 'string' && p) ? p : '/' -}) - -function onNavOwnerRoute(e: Event) { - const { path } = (e as CustomEvent).detail - if (!path) - return - const np = path === '/' ? undefined : path - if ((typeof route.query.np === 'string' ? route.query.np : '/') !== (np ?? '/')) - router.push({ query: { tab: 'nested', ...(np ? { np } : {}) } }) -} - // --- Web component event logs --- import { ref } from 'vue' const reactionEvents = ref>([]) @@ -115,7 +97,7 @@ const emit = useComponentEvents() Components & Embedding

- Web components in Shadow DOM, themed iframe pages, and nested navigation — each in its own tab. + Web components in Shadow DOM and themed iframe pages — each in its own tab.

@@ -536,27 +518,6 @@ const emit = useComponentEvents() - - -
-

- The embedded page below is a nav-owner. Its internal tabs use - RouterLink, - and each click mirrors into this browser URL — try the tabs, then browser back/forward. -

-
- -
-
diff --git a/frontend/applications/main/src/pages/iframe-demo.vue b/frontend/applications/main/src/pages/iframe-demo.vue new file mode 100644 index 0000000..1030681 --- /dev/null +++ b/frontend/applications/main/src/pages/iframe-demo.vue @@ -0,0 +1,72 @@ + + + + + diff --git a/frontend/applications/main/src/pages/nested-nav.vue b/frontend/applications/main/src/pages/nested-nav.vue new file mode 100644 index 0000000..9a96b59 --- /dev/null +++ b/frontend/applications/main/src/pages/nested-nav.vue @@ -0,0 +1,59 @@ + + + diff --git a/frontend/applications/main/src/pages/research.vue b/frontend/applications/main/src/pages/research.vue index af91a7d..ad94958 100644 --- a/frontend/applications/main/src/pages/research.vue +++ b/frontend/applications/main/src/pages/research.vue @@ -172,7 +172,10 @@ function host(url: string): string { -
+ -