From 23f6c20074137e514130bd00a6011e20d3d533f9 Mon Sep 17 00:00:00 2001 From: Brandy Smith Date: Thu, 28 May 2026 15:00:25 -0400 Subject: [PATCH 01/13] test(many): update controller tests to use correct import path (#31178) Many of the controller tests are using the wrong path to import the overlay controllers. This results in those tests not working in Vercel. To reproduce the issue: 1. Open the [Action Sheet (main)](https://ionic-framework-git-main-ionic1.vercel.app/src/components/action-sheet/test/basic) preview 2. Attempt to open any Action Sheet 3. See the Action Sheet does not open and there is the following console error: `ReferenceError: actionSheetController is not defined` To see it working: 1. Open the [Action Sheet (branch)](https://ionic-framework-git-test-vercel-controllers-ionic1.vercel.app/src/components/action-sheet/test/basic) preview 2. Attempt to open any Action Sheet 3. See the Action Sheet opens without any errors This should be able to reproduce on any of the updated tests. Co-authored-by: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> --- core/src/components/action-sheet/test/a11y/index.html | 2 +- core/src/components/action-sheet/test/basic/index.html | 2 +- core/src/components/action-sheet/test/standalone/index.html | 2 +- core/src/components/action-sheet/test/translucent/index.html | 2 +- core/src/components/alert/test/a11y/index.html | 2 +- core/src/components/alert/test/basic/index.html | 2 +- core/src/components/alert/test/standalone/index.html | 2 +- core/src/components/alert/test/translucent/index.html | 2 +- core/src/components/loading/test/standalone/index.html | 2 +- core/src/components/menu-button/test/async/index.html | 2 +- core/src/components/menu/test/a11y/index.html | 2 +- core/src/components/menu/test/basic/index.html | 2 +- core/src/components/menu/test/multiple/index.html | 2 +- core/src/components/menu/test/safe-area/index.html | 2 +- core/src/components/modal/test/can-dismiss/index.html | 2 +- core/src/components/modal/test/card/index.html | 2 +- core/src/components/modal/test/host-elements/index.html | 2 +- core/src/components/modal/test/spec/index.html | 2 +- core/src/components/modal/test/standalone/index.html | 2 +- .../components/picker-legacy-column/test/standalone/index.html | 2 +- core/src/components/picker-legacy/test/basic/index.html | 2 +- core/src/components/popover/test/adjustment/index.html | 2 +- core/src/components/popover/test/basic/index.html | 2 +- core/src/components/popover/test/size/index.html | 2 +- core/src/components/popover/test/standalone/index.html | 2 +- core/src/components/toast/test/a11y/index.html | 2 +- core/src/components/toast/test/a11y/toast.e2e.ts | 2 +- core/src/components/toast/test/basic/index.html | 2 +- core/src/components/toast/test/buttons/index.html | 2 +- core/src/components/toast/test/layout/index.html | 2 +- core/src/components/toast/test/standalone/index.html | 2 +- 31 files changed, 31 insertions(+), 31 deletions(-) diff --git a/core/src/components/action-sheet/test/a11y/index.html b/core/src/components/action-sheet/test/a11y/index.html index 181ada7fba7..7a6190d3073 100644 --- a/core/src/components/action-sheet/test/a11y/index.html +++ b/core/src/components/action-sheet/test/a11y/index.html @@ -11,7 +11,7 @@ diff --git a/core/src/components/action-sheet/test/basic/index.html b/core/src/components/action-sheet/test/basic/index.html index b95d43b42c7..640801b2ddf 100644 --- a/core/src/components/action-sheet/test/basic/index.html +++ b/core/src/components/action-sheet/test/basic/index.html @@ -14,7 +14,7 @@ diff --git a/core/src/components/action-sheet/test/standalone/index.html b/core/src/components/action-sheet/test/standalone/index.html index b40c03c53c2..4ee6b77bf7e 100644 --- a/core/src/components/action-sheet/test/standalone/index.html +++ b/core/src/components/action-sheet/test/standalone/index.html @@ -14,7 +14,7 @@ diff --git a/core/src/components/action-sheet/test/translucent/index.html b/core/src/components/action-sheet/test/translucent/index.html index cfae303e7e6..c2fcc48dcd6 100644 --- a/core/src/components/action-sheet/test/translucent/index.html +++ b/core/src/components/action-sheet/test/translucent/index.html @@ -58,7 +58,7 @@ diff --git a/core/src/components/alert/test/a11y/index.html b/core/src/components/alert/test/a11y/index.html index cb137ba7314..e9dda8ccd32 100644 --- a/core/src/components/alert/test/a11y/index.html +++ b/core/src/components/alert/test/a11y/index.html @@ -11,7 +11,7 @@ diff --git a/core/src/components/alert/test/basic/index.html b/core/src/components/alert/test/basic/index.html index 171666ee3d8..e9ec5413a04 100644 --- a/core/src/components/alert/test/basic/index.html +++ b/core/src/components/alert/test/basic/index.html @@ -14,7 +14,7 @@ diff --git a/core/src/components/alert/test/standalone/index.html b/core/src/components/alert/test/standalone/index.html index c0413f6fc09..b69f126c7ec 100644 --- a/core/src/components/alert/test/standalone/index.html +++ b/core/src/components/alert/test/standalone/index.html @@ -23,7 +23,7 @@ diff --git a/core/src/components/alert/test/translucent/index.html b/core/src/components/alert/test/translucent/index.html index 401bd35d652..c78b7106829 100644 --- a/core/src/components/alert/test/translucent/index.html +++ b/core/src/components/alert/test/translucent/index.html @@ -70,7 +70,7 @@ diff --git a/core/src/components/loading/test/standalone/index.html b/core/src/components/loading/test/standalone/index.html index c0826d3f30f..cf3853af58f 100644 --- a/core/src/components/loading/test/standalone/index.html +++ b/core/src/components/loading/test/standalone/index.html @@ -14,7 +14,7 @@ diff --git a/core/src/components/menu-button/test/async/index.html b/core/src/components/menu-button/test/async/index.html index 105b9a3b87a..682673195ba 100644 --- a/core/src/components/menu-button/test/async/index.html +++ b/core/src/components/menu-button/test/async/index.html @@ -13,7 +13,7 @@ diff --git a/core/src/components/menu/test/a11y/index.html b/core/src/components/menu/test/a11y/index.html index cf67b2133c2..8b0aa68c702 100644 --- a/core/src/components/menu/test/a11y/index.html +++ b/core/src/components/menu/test/a11y/index.html @@ -11,7 +11,7 @@ diff --git a/core/src/components/menu/test/basic/index.html b/core/src/components/menu/test/basic/index.html index 4e79a4fbb21..5c11d02859d 100644 --- a/core/src/components/menu/test/basic/index.html +++ b/core/src/components/menu/test/basic/index.html @@ -30,7 +30,7 @@ diff --git a/core/src/components/menu/test/multiple/index.html b/core/src/components/menu/test/multiple/index.html index 9a45a237fa9..d4bcf2dec4e 100644 --- a/core/src/components/menu/test/multiple/index.html +++ b/core/src/components/menu/test/multiple/index.html @@ -13,7 +13,7 @@ diff --git a/core/src/components/menu/test/safe-area/index.html b/core/src/components/menu/test/safe-area/index.html index 477d5890aa9..64c1a89b6dc 100644 --- a/core/src/components/menu/test/safe-area/index.html +++ b/core/src/components/menu/test/safe-area/index.html @@ -13,7 +13,7 @@ diff --git a/core/src/components/modal/test/card/index.html b/core/src/components/modal/test/card/index.html index c47f5bda425..d064d0030ae 100644 --- a/core/src/components/modal/test/card/index.html +++ b/core/src/components/modal/test/card/index.html @@ -26,7 +26,7 @@ diff --git a/core/src/components/modal/test/host-elements/index.html b/core/src/components/modal/test/host-elements/index.html index d5d90f9c6ad..1ac0cb59860 100644 --- a/core/src/components/modal/test/host-elements/index.html +++ b/core/src/components/modal/test/host-elements/index.html @@ -14,7 +14,7 @@ diff --git a/core/src/components/modal/test/spec/index.html b/core/src/components/modal/test/spec/index.html index 361fdf4de1c..851eb8a9133 100644 --- a/core/src/components/modal/test/spec/index.html +++ b/core/src/components/modal/test/spec/index.html @@ -40,7 +40,7 @@ diff --git a/core/src/components/modal/test/standalone/index.html b/core/src/components/modal/test/standalone/index.html index a14ce783469..c16baba38ab 100644 --- a/core/src/components/modal/test/standalone/index.html +++ b/core/src/components/modal/test/standalone/index.html @@ -14,7 +14,7 @@ diff --git a/core/src/components/picker-legacy-column/test/standalone/index.html b/core/src/components/picker-legacy-column/test/standalone/index.html index f269eb055a5..add3401292a 100644 --- a/core/src/components/picker-legacy-column/test/standalone/index.html +++ b/core/src/components/picker-legacy-column/test/standalone/index.html @@ -14,7 +14,7 @@ diff --git a/core/src/components/picker-legacy/test/basic/index.html b/core/src/components/picker-legacy/test/basic/index.html index 23cd22a2d03..5f02db1cc61 100644 --- a/core/src/components/picker-legacy/test/basic/index.html +++ b/core/src/components/picker-legacy/test/basic/index.html @@ -29,7 +29,7 @@ diff --git a/core/src/components/popover/test/adjustment/index.html b/core/src/components/popover/test/adjustment/index.html index 78d8dc105a6..c51d44a4748 100644 --- a/core/src/components/popover/test/adjustment/index.html +++ b/core/src/components/popover/test/adjustment/index.html @@ -13,7 +13,7 @@ diff --git a/core/src/components/popover/test/basic/index.html b/core/src/components/popover/test/basic/index.html index 8d10eceb5c9..94202a01d5c 100644 --- a/core/src/components/popover/test/basic/index.html +++ b/core/src/components/popover/test/basic/index.html @@ -14,7 +14,7 @@ diff --git a/core/src/components/popover/test/size/index.html b/core/src/components/popover/test/size/index.html index 1ce48a75cb6..cdeed3b7c7a 100644 --- a/core/src/components/popover/test/size/index.html +++ b/core/src/components/popover/test/size/index.html @@ -41,7 +41,7 @@ diff --git a/core/src/components/popover/test/standalone/index.html b/core/src/components/popover/test/standalone/index.html index c149da2ea94..c804ff54b94 100644 --- a/core/src/components/popover/test/standalone/index.html +++ b/core/src/components/popover/test/standalone/index.html @@ -14,7 +14,7 @@ diff --git a/core/src/components/toast/test/a11y/index.html b/core/src/components/toast/test/a11y/index.html index 58157330fb1..9651f056386 100644 --- a/core/src/components/toast/test/a11y/index.html +++ b/core/src/components/toast/test/a11y/index.html @@ -10,7 +10,7 @@ diff --git a/core/src/components/toast/test/a11y/toast.e2e.ts b/core/src/components/toast/test/a11y/toast.e2e.ts index bf1fbfd72c7..35ff0b3e61c 100644 --- a/core/src/components/toast/test/a11y/toast.e2e.ts +++ b/core/src/components/toast/test/a11y/toast.e2e.ts @@ -34,7 +34,7 @@ configs({ directions: ['ltr'], palettes: ['dark', 'light'] }).forEach(({ title, await page.setContent( ` diff --git a/core/src/components/toast/test/basic/index.html b/core/src/components/toast/test/basic/index.html index 06e8aae5ae2..957e15c5d92 100644 --- a/core/src/components/toast/test/basic/index.html +++ b/core/src/components/toast/test/basic/index.html @@ -14,7 +14,7 @@ diff --git a/core/src/components/toast/test/buttons/index.html b/core/src/components/toast/test/buttons/index.html index 42aa9a5554a..964480689c6 100644 --- a/core/src/components/toast/test/buttons/index.html +++ b/core/src/components/toast/test/buttons/index.html @@ -14,7 +14,7 @@ diff --git a/core/src/components/toast/test/layout/index.html b/core/src/components/toast/test/layout/index.html index 227539c7369..5f435d6e1d3 100644 --- a/core/src/components/toast/test/layout/index.html +++ b/core/src/components/toast/test/layout/index.html @@ -14,7 +14,7 @@ diff --git a/core/src/components/toast/test/standalone/index.html b/core/src/components/toast/test/standalone/index.html index 82b4e108522..11f2565d674 100644 --- a/core/src/components/toast/test/standalone/index.html +++ b/core/src/components/toast/test/standalone/index.html @@ -21,7 +21,7 @@ From a982516afad1e848534db702694ef47f5e49c78d Mon Sep 17 00:00:00 2001 From: Shane Date: Thu, 28 May 2026 13:04:41 -0700 Subject: [PATCH 02/13] fix(router): support anchor fragments in href (#31172) Issue number: resolves #19566, resolves #19365 --------- ## What is the current behavior? Clicking an `ion-router-link` whose `href` contains a `#fragment` (e.g. `/catalog#pens`) fails to navigate and logs `not part of the routing set`. `parsePath` in `core/src/components/router/utils/path.ts` only splits on `?`, so the fragment gets folded into the last path segment and no registered route matches. Even when navigation succeeds, the matching anchor is never scrolled into view. ## What is the new behavior? `parsePath` extracts the fragment as a separate field, and `writeSegments` writes it back onto the URL via `pushState`. Routes match against the path segments alone, so `/catalog#pens` resolves to the `/catalog` route as expected. After `writeNavStateRoot` resolves, the router polls a few animation frames for an element matching the fragment inside the active page, then smooth-scrolls to it via `ion-content.scrollToPoint`, falling back to `Element.scrollIntoView` when the target sits outside `ion-content`. A `fragmentScrollToken` cancels any in-flight scroll the moment a newer `setSegments` runs. ## Does this introduce a breaking change? - [ ] Yes - [x] No ## Other information The fragment lookup scopes to the last `.ion-page:not(.ion-page-hidden)` in the document. Nested outlets can have multiple non-hidden pages mounted at once, and an identically-named anchor on a parent page would otherwise win over the leaf the user is viewing. Preview pages: - [router/basic](https://ionic-framework-git-fw-6958-ionic1.vercel.app/src/components/router/test/basic#/two) --- core/src/components/router/router.tsx | 74 +++++-- .../components/router/test/basic/index.html | 9 +- .../router/test/basic/router.e2e.ts | 197 ++++++++++++++++++ core/src/components/router/test/dom.spec.tsx | 99 +++++++++ core/src/components/router/test/path.spec.tsx | 66 ++++++ core/src/components/router/utils/dom.ts | 123 ++++++++++- core/src/components/router/utils/interface.ts | 2 + core/src/components/router/utils/path.ts | 24 ++- 8 files changed, 573 insertions(+), 21 deletions(-) create mode 100644 core/src/components/router/test/dom.spec.tsx diff --git a/core/src/components/router/router.tsx b/core/src/components/router/router.tsx index a5c0c67bf0e..36287043127 100644 --- a/core/src/components/router/router.tsx +++ b/core/src/components/router/router.tsx @@ -9,7 +9,7 @@ import type { NavigationHookResult } from '../route/route-interface'; import { ROUTER_INTENT_BACK, ROUTER_INTENT_FORWARD, ROUTER_INTENT_NONE } from './utils/constants'; import { printRedirects, printRoutes } from './utils/debug'; -import { readNavState, waitUntilNavNode, writeNavState } from './utils/dom'; +import { readNavState, scrollToFragment, waitUntilNavNode, writeNavState } from './utils/dom'; import type { RouteChain, RouterDirection, RouterEventDetail } from './utils/interface'; import { findChainForIDs, findChainForSegments, findRouteRedirect } from './utils/matching'; import { readRedirects, readRoutes } from './utils/parser'; @@ -24,6 +24,7 @@ export class Router implements ComponentInterface { private state = 0; private lastState = 0; private waitPromise?: Promise; + private fragmentScrollToken = 0; @Element() el!: HTMLElement; @@ -67,11 +68,18 @@ export class Router implements ComponentInterface { if (typeof canProceed === 'object') { const { redirect } = canProceed; const path = parsePath(redirect); - this.setSegments(path.segments, ROUTER_INTENT_NONE, path.queryString); - await this.writeNavStateRoot(path.segments, ROUTER_INTENT_NONE); + this.setSegments(path.segments, ROUTER_INTENT_NONE, path.queryString, path.fragment); + const result = await this.writeNavStateRoot(path.segments, ROUTER_INTENT_NONE); + if (result) { + this.maybeScrollToFragment(); + } } - } else { - await this.onRoutesChanged(); + return; + } + + const result = await this.onRoutesChanged(); + if (result) { + this.maybeScrollToFragment(); } } @@ -93,7 +101,12 @@ export class Router implements ComponentInterface { return false; } } - return this.writeNavStateRoot(segments, direction); + const result = await this.writeNavStateRoot(segments, direction); + if (result) { + this.maybeScrollToFragment(); + } + + return result; } @Listen('ionBackButton', { target: 'document' }) @@ -132,7 +145,7 @@ export class Router implements ComponentInterface { const currentPath = this.previousPath ?? '/'; // Convert currentPath to an URL by pre-pending a protocol and a host to resolve the relative path. const url = new URL(path, `https://host/${currentPath}`); - path = url.pathname + url.search; + path = url.pathname + url.search + url.hash; } let parsedPath = parsePath(path); @@ -146,8 +159,13 @@ export class Router implements ComponentInterface { } } - this.setSegments(parsedPath.segments, direction, parsedPath.queryString); - return this.writeNavStateRoot(parsedPath.segments, direction, animation); + this.setSegments(parsedPath.segments, direction, parsedPath.queryString, parsedPath.fragment); + const result = await this.writeNavStateRoot(parsedPath.segments, direction, animation); + if (result) { + this.maybeScrollToFragment(); + } + + return result; } /** Go back to previous page in the window.history. */ @@ -188,7 +206,12 @@ export class Router implements ComponentInterface { return false; } - this.setSegments(segments, direction); + // navChanged is an outlet-driven URL sync. Only keep the fragment when + // the path is unchanged; on a real navigation it refers to an anchor on + // the page being left and would be stale. + const newPath = generatePath(segments); + const fragment = newPath === this.previousPath ? this.getFragment() : undefined; + this.setSegments(segments, direction, undefined, fragment); await this.safeWriteNavState(outlet, chain, ROUTER_INTENT_NONE, segments, null, ids.length); return true; @@ -245,8 +268,8 @@ export class Router implements ComponentInterface { let redirectFrom: string[] | null = null; if (redirect) { - const { segments: toSegments, queryString } = redirect.to!; - this.setSegments(toSegments, direction, queryString); + const { segments: toSegments, queryString, fragment } = redirect.to!; + this.setSegments(toSegments, direction, queryString, fragment); redirectFrom = redirect.from; segments = toSegments; } @@ -361,15 +384,38 @@ export class Router implements ComponentInterface { return changed; } - private setSegments(segments: string[], direction: RouterDirection, queryString?: string) { + private setSegments(segments: string[], direction: RouterDirection, queryString?: string, fragment?: string) { this.state++; - writeSegments(window.history, this.root, this.useHash, segments, direction, this.state, queryString); + // Every URL write invalidates any in-flight fragment scroll: a newer nav + // (with or without a fragment, successful or not) should always supersede. + this.fragmentScrollToken++; + writeSegments(window.history, this.root, this.useHash, segments, direction, this.state, queryString, fragment); } private getSegments(): string[] | null { return readSegments(window.location, this.root, this.useHash); } + private getFragment(): string | undefined { + // In hash mode the URL fragment trails a second `#` (e.g. `#/path#anchor`); + // parse the routing portion to extract it. + const raw = this.useHash ? parsePath(window.location.hash.slice(1)).fragment : window.location.hash.slice(1); + return raw ? raw : undefined; + } + + /** + * Fires a best-effort scroll to the current URL fragment. The scroll bails + * if a newer `setSegments` advances `fragmentScrollToken` mid-flight. + */ + private maybeScrollToFragment() { + const fragment = this.getFragment(); + if (!fragment) return; + const token = this.fragmentScrollToken; + // Fire-and-forget; the returned promise resolves only after the scroll + // animation completes, which the caller does not need to await. + scrollToFragment(fragment, () => token === this.fragmentScrollToken).catch(() => {}); + } + private routeChangeEvent(toSegments: string[], redirectFromSegments: string[] | null): RouterEventDetail | null { const from = this.previousPath; const to = generatePath(toSegments); diff --git a/core/src/components/router/test/basic/index.html b/core/src/components/router/test/basic/index.html index 406adb95f49..12d459caa50 100644 --- a/core/src/components/router/test/basic/index.html +++ b/core/src/components/router/test/basic/index.html @@ -26,7 +26,10 @@

Go to page 2

Go to page 3 (hola)

Go to page 3 (something)

- +

Page 2 with fragment

+

Page 3 with query and fragment

+
page-one spacer
+

page-one anchor (must lose to the active page's anchor)

`; } } @@ -42,6 +45,9 @@

Go to page 3 (hola)

Go to page 3 (hello)

+
spacer
+

Anchor target

+
trailing spacer
`; } } @@ -60,6 +66,7 @@

Go to page 2

Go to page 1

Page 3 (relative) + Page 3 (relative with fragment) Page 3 (absolute) `; } diff --git a/core/src/components/router/test/basic/router.e2e.ts b/core/src/components/router/test/basic/router.e2e.ts index 33f4e37d33b..ed9faab3532 100644 --- a/core/src/components/router/test/basic/router.e2e.ts +++ b/core/src/components/router/test/basic/router.e2e.ts @@ -1,6 +1,21 @@ import { expect } from '@playwright/test'; +import type { E2EPage } from '@utils/test/playwright'; import { configs, test } from '@utils/test/playwright'; +/** + * Waits until `page-two`'s `ion-content` has scrolled past the fixture's 2000px + * spacer. The anchor target sits below the spacer, so a successful fragment + * scroll must move `scrollTop` well past it; a regression that scrolled by + * only a handful of pixels would fail this threshold. + */ +const waitForAnchorScrolled = (page: E2EPage) => + page.waitForFunction(async () => { + const content = document.querySelector('page-two ion-content') as HTMLIonContentElement | null; + if (!content) return false; + const scrollEl = await content.getScrollElement(); + return scrollEl.scrollTop > 1500; + }); + /** * This behavior does not vary across modes/directions. */ @@ -27,6 +42,188 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => expect(page.url()).toContain('#/two/three/absolute'); }); + + test('should route when ion-router-link href contains a fragment', async ({ page }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/19365', + }); + const errors: string[] = []; + page.on('pageerror', (e) => errors.push(e.message)); + page.on('console', (msg) => { + if (msg.type() === 'error') errors.push(msg.text()); + }); + + await page.goto(`/src/components/router/test/basic#/two`, config); + await page.click('#link-with-fragment'); + + await expect(page.locator('page-two')).toBeVisible(); + expect(page.url()).toContain('#/two/second-page#anchor'); + expect(errors.filter((m) => m.includes('not part of the routing set'))).toEqual([]); + }); + + test('should route when ion-router-link href contains both query and fragment', async ({ page }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/19365', + }); + await page.goto(`/src/components/router/test/basic#/two`, config); + await page.click('#link-with-query-and-fragment'); + + await expect(page.locator('page-three')).toBeVisible(); + expect(page.url()).toContain('#/two/three/hola?flag=true#anchor'); + }); + + test('should preserve the fragment when push() resolves a relative path', async ({ page }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/19365', + }); + await page.goto(`/src/components/router/test/basic#/two/three/hola`, config); + await page.click('#btn-rel-with-fragment'); + + expect(page.url()).toContain('#/two/three/relative#anchor'); + }); + + test('should scroll to the fragment target after navigating', async ({ page }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/19365', + }); + await page.goto(`/src/components/router/test/basic#/two`, config); + await page.click('#link-with-fragment'); + + await expect(page.locator('page-two #anchor')).toBeVisible(); + await waitForAnchorScrolled(page); + }); + + test('should scroll to the fragment target on initial deep-link load', async ({ page }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/19365', + }); + // Land on the fixture without a fragment first so the test helper can + // attach its query params (it appends them after the hash, which would + // otherwise pollute the fragment). Once loaded we replaceState to a URL + // that includes the fragment, then reload to simulate a true cold open. + await page.goto(`/src/components/router/test/basic#/two`, config); + await page.evaluate(() => { + const { origin, pathname, search } = window.location; + window.history.replaceState({}, '', `${origin}${pathname}${search}#/two/second-page#anchor`); + }); + await page.reload(); + + await expect(page.locator('page-two #anchor')).toBeVisible(); + await waitForAnchorScrolled(page); + }); + + test('should scroll on deep-link load even when an inactive tab has hydrated', async ({ page }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/19365', + }); + // Inactive `ion-tab` elements carry `.ion-page` but use `.tab-hidden` + // instead of `.ion-page-hidden`. The fixture's inline `tab-four` is one + // such sibling. Waiting for it to hydrate before reload makes the + // active-page lookup deterministic across runs. + await page.goto(`/src/components/router/test/basic#/two`, config); + await page.waitForFunction(() => !!document.querySelector('ion-tab[tab="tab-four"].hydrated')); + await page.evaluate(() => { + const { origin, pathname, search } = window.location; + window.history.replaceState({}, '', `${origin}${pathname}${search}#/two/second-page#anchor`); + }); + await page.reload(); + await page.waitForFunction(() => !!document.querySelector('ion-tab[tab="tab-four"].hydrated')); + + await expect(page.locator('page-two #anchor')).toBeVisible(); + await waitForAnchorScrolled(page); + }); + + test('should scope the fragment lookup to the active page', async ({ page }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/19365', + }); + // page-one and page-two both expose `id="anchor"`. page-one is kept in + // the DOM as `.ion-page-hidden` after the push; a document-wide + // `getElementById` would return its anchor first. The router must scope + // the lookup to the active page so page-two's anchor wins. + await page.goto(`/src/components/router/test/basic#/two`, config); + await page.click('#link-with-fragment'); + + await expect(page.locator('page-two #anchor')).toBeVisible(); + await waitForAnchorScrolled(page); + + // page-one is still in the DOM but should not have been scrolled. + const pageOneScrollTop = await page.evaluate(async () => { + const content = document.querySelector('page-one ion-content') as HTMLIonContentElement | null; + if (!content) return 0; + const scrollEl = await content.getScrollElement(); + return scrollEl.scrollTop; + }); + expect(pageOneScrollTop).toBeLessThan(100); + }); + + test('should drop a stale fragment when navChanged fires for a different path', async ({ page }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/19365', + }); + // Land on a URL with a fragment, then trigger a tab switch. The tab + // outlet emits `navChanged` for the new path; the fragment referred to + // an anchor on the previous page and must not survive the rewrite. + await page.goto(`/src/components/router/test/basic#/two/second-page#anchor`, config); + await expect(page.locator('page-two')).toBeVisible(); + + await page.click('#tab-button-tab-one'); + + await expect(page.locator('tab-one')).toBeVisible(); + await page.waitForFunction(() => !window.location.hash.includes('#anchor')); + expect(page.url()).not.toContain('#anchor'); + }); + + test('should cancel an in-flight fragment scroll when a newer navigation supersedes it', async ({ + page, + }, testInfo) => { + testInfo.annotations.push({ + type: 'issue', + description: 'https://github.com/ionic-team/ionic-framework/issues/19365', + }); + // Two rapid pushes: the first targets a fragment (begins polling + + // smooth scroll), the second arrives before the first lands and clears + // the fragment. The cancellation token must abort the first scroll so + // we end up at the top of the page, not parked at #anchor. + await page.goto(`/src/components/router/test/basic#/two`, config); + await expect(page.locator('page-one')).toBeVisible(); + + await page.evaluate(async () => { + const router = document.querySelector('ion-router') as HTMLIonRouterElement; + router.push('/two/second-page#anchor'); + await router.push('/two/second-page'); + }); + + await expect(page.locator('page-two')).toBeVisible(); + // Wait for page-two's scrollTop to stabilise across two consecutive + // frames. A scroll triggered by the un-cancelled first push would + // still be animating when the assertion runs. + await page.waitForFunction(async () => { + const content = document.querySelector('page-two ion-content') as HTMLIonContentElement | null; + if (!content) return false; + const scrollEl = await content.getScrollElement(); + const first = scrollEl.scrollTop; + await new Promise((resolve) => requestAnimationFrame(() => requestAnimationFrame(resolve))); + return scrollEl.scrollTop === first; + }); + + const pageTwoScrollTop = await page.evaluate(async () => { + const content = document.querySelector('page-two ion-content') as HTMLIonContentElement | null; + if (!content) return -1; + const scrollEl = await content.getScrollElement(); + return scrollEl.scrollTop; + }); + expect(pageTwoScrollTop).toBeLessThan(100); + expect(page.url()).not.toContain('#anchor'); + }); }); test.describe(title('router: tabs'), () => { diff --git a/core/src/components/router/test/dom.spec.tsx b/core/src/components/router/test/dom.spec.tsx new file mode 100644 index 00000000000..c8b47b485e7 --- /dev/null +++ b/core/src/components/router/test/dom.spec.tsx @@ -0,0 +1,99 @@ +import { scrollToFragment } from '../utils/dom'; + +describe('scrollToFragment', () => { + beforeEach(() => { + document.body.innerHTML = ` +
+

target

+
+ `; + }); + + afterEach(() => { + document.body.innerHTML = ''; + }); + + it('should return false for null/undefined/empty fragment', async () => { + expect(await scrollToFragment(undefined)).toBe(false); + expect(await scrollToFragment('')).toBe(false); + }); + + it('should find and scroll to an existing target', async () => { + // No ion-content here, so the function falls back to scrollIntoView. We + // assert the truthy return (target found, scroll attempted) rather than + // jsdom-specific scroll state. + expect(await scrollToFragment('target')).toBe(true); + }); + + it('should not match similarly named fragments', async () => { + // The lookup uses an exact `#id` selector, so partial/substring matches + // must not resolve. Regression guard for any future refactor that swaps + // the selector for fuzzy matching. + expect(await scrollToFragment('target2')).toBe(false); + expect(await scrollToFragment('targe')).toBe(false); + }); + + it('should return false when shouldContinue is false from the start', async () => { + // The target exists in the DOM, so the only reason this can return false + // is the cancellation predicate firing inside findFragmentTarget. + expect(await scrollToFragment('target', () => false)).toBe(false); + }); + + it('should respect shouldContinue mid-poll when the target is missing', async () => { + // Target is not in the DOM; findFragmentTarget enters its poll loop. + // shouldContinue flips false on the third call, which must abort the loop. + let calls = 0; + const result = await scrollToFragment('missing', () => ++calls <= 2); + expect(result).toBe(false); + expect(calls).toBeGreaterThan(2); + }); + + it('should not call shouldContinue after returning early on null fragment', async () => { + let calls = 0; + await scrollToFragment(undefined, () => { + calls++; + return true; + }); + expect(calls).toBe(0); + }); + + it('should reject a target whose ancestor is .ion-page-hidden', async () => { + // Back-stack pages stay in the DOM with `.ion-page-hidden`. A target + // matched only on a hidden page must not win. + document.body.innerHTML = ` +
+

stale

+
+ `; + expect(await scrollToFragment('stale')).toBe(false); + }); + + it('should reject a target whose ancestor is .tab-hidden', async () => { + // Inactive `ion-tab` elements carry `.ion-page` but use `.tab-hidden` + // (not `.ion-page-hidden`). A target inside an inactive tab must not win; + // a naive "last `.ion-page:not(.ion-page-hidden)`" pick would otherwise + // land on it. + document.body.innerHTML = ` +
+

stale

+
+ `; + expect(await scrollToFragment('in-inactive-tab')).toBe(false); + }); + + it('should accept a target inside a sibling non-hidden ion-page', async () => { + // During transitions multiple `.ion-page` elements may briefly coexist + // without `.ion-page-hidden`. A target inside any non-hidden page must + // still resolve. + document.body.innerHTML = ` +
+

in hidden page

+
+
+

other

+
+ `; + // Lookup of 'other' must succeed even though a hidden sibling page exists. + expect(await scrollToFragment('other')).toBe(true); + }); +}); diff --git a/core/src/components/router/test/path.spec.tsx b/core/src/components/router/test/path.spec.tsx index 48e366aebca..e8e398d9389 100644 --- a/core/src/components/router/test/path.spec.tsx +++ b/core/src/components/router/test/path.spec.tsx @@ -48,6 +48,47 @@ describe('parsePath', () => { expect(parsePath('path/to/file.js?').queryString).toEqual(''); expect(parsePath('path/to/file.js?a=b').queryString).toEqual('a=b'); }); + + it('should strip the fragment from segments and return it', () => { + const result = parsePath('/catalog#pens'); + expect(result.segments).toEqual(['catalog']); + expect(result.fragment).toEqual('pens'); + }); + + it('should parse fragment alongside query string (query first)', () => { + const result = parsePath('/catalog?x=1#pens'); + expect(result.segments).toEqual(['catalog']); + expect(result.queryString).toEqual('x=1'); + expect(result.fragment).toEqual('pens'); + }); + + it('should treat "?" inside fragment as part of the fragment', () => { + // Per RFC 3986 the fragment starts at the first "#" and runs to the end. + const result = parsePath('/catalog#pens?x=1'); + expect(result.segments).toEqual(['catalog']); + expect(result.queryString).toBeUndefined(); + expect(result.fragment).toEqual('pens?x=1'); + }); + + it('should parse fragment-only path', () => { + const result = parsePath('#pens'); + expect(result.segments).toEqual(['']); + expect(result.fragment).toEqual('pens'); + }); + + it('should leave fragment undefined when there is no "#"', () => { + expect(parsePath('/catalog').fragment).toBeUndefined(); + expect(parsePath('/catalog?x=1').fragment).toBeUndefined(); + expect(parsePath(null).fragment).toBeUndefined(); + expect(parsePath(undefined).fragment).toBeUndefined(); + }); + + it('should preserve percent-encoded characters in the fragment', () => { + // parsePath keeps the fragment in its URL-encoded form; decoding for id + // matching is the consumer's responsibility (see `scrollToFragment`). + expect(parsePath('/catalog#sec%20one').fragment).toEqual('sec%20one'); + expect(parsePath('/catalog#%E4%B8%AD%E6%96%87').fragment).toEqual('%E4%B8%AD%E6%96%87'); + }); }); describe('generatePath', () => { @@ -243,6 +284,31 @@ describe('writeSegments', () => { writeSegments(history, '/path/to/', true, ['second', 'page'], ROUTER_INTENT_FORWARD, 123, 'flag=true'); expect(history.pushState).toHaveBeenCalledWith(123, '', '#/path/to/second/page?flag=true'); }); + + it('should append the fragment after the query string (no hash)', () => { + const history = mockHistory(); + writeSegments(history, '/', false, ['catalog'], ROUTER_INTENT_FORWARD, 1, 'x=1', 'pens'); + expect(history.pushState).toHaveBeenCalledWith(1, '', '/catalog?x=1#pens'); + }); + + it('should append the fragment when there is no query string (no hash)', () => { + const history = mockHistory(); + writeSegments(history, '/', false, ['catalog'], ROUTER_INTENT_FORWARD, 1, undefined, 'pens'); + expect(history.pushState).toHaveBeenCalledWith(1, '', '/catalog#pens'); + }); + + it('should append the fragment in hash routing mode', () => { + // In hash routing the routing "#" wraps the path; the URL fragment is a second "#" appended at the end. + const history = mockHistory(); + writeSegments(history, '/', true, ['catalog'], ROUTER_INTENT_FORWARD, 1, undefined, 'pens'); + expect(history.pushState).toHaveBeenCalledWith(1, '', '#/catalog#pens'); + }); + + it('should omit the fragment when none is provided', () => { + const history = mockHistory(); + writeSegments(history, '/', false, ['catalog'], ROUTER_INTENT_FORWARD, 1); + expect(history.pushState).toHaveBeenCalledWith(1, '', '/catalog'); + }); }); function mockHistory(): History { diff --git a/core/src/components/router/utils/dom.ts b/core/src/components/router/utils/dom.ts index c10b34d0840..d2b23e095dc 100644 --- a/core/src/components/router/utils/dom.ts +++ b/core/src/components/router/utils/dom.ts @@ -1,4 +1,5 @@ -import { componentOnReady } from '@utils/helpers'; +import { findClosestIonContent, getScrollElement, isIonContent } from '@utils/content'; +import { componentOnReady, raf } from '@utils/helpers'; import { printIonError } from '@utils/logging'; import type { AnimationBuilder } from '../../../interface'; @@ -81,6 +82,126 @@ export const readNavState = async (root: HTMLElement | undefined) => { return { ids, outlet }; }; +/** Max animation frames `scrollToFragment` polls while waiting for the target to mount. */ +const FRAGMENT_POLL_FRAMES = 30; + +/** Duration (ms) of the smooth-scroll animation that lands on the fragment target. */ +const FRAGMENT_SCROLL_DURATION = 300; + +const nextFrame = () => new Promise((resolve) => raf(() => resolve())); + +/** + * Returns true when `el` lives inside an active `.ion-page`. `ion-page-hidden` + * marks nav back-stack entries; `tab-hidden` marks inactive `ion-tab` elements. + * Either class on the page's ancestor chain disqualifies it. When no `.ion-page` + * exists in the document at all (non-router pages), the candidate is accepted + * so plain anchors still work. + */ +const isInActivePage = (el: HTMLElement): boolean => { + const page = el.closest('.ion-page'); + if (page === null) { + return document.querySelector('.ion-page') === null; + } + return page.closest('.ion-page-hidden, .tab-hidden') === null; +}; + +/** + * Polls across animation frames for an element matching `fragment` that lives + * in the active page. Scoping by "last `.ion-page:not(.ion-page-hidden)`" is + * unreliable: inactive `ion-tab` siblings carry `.ion-page` (gated by + * `.tab-hidden`, not `.ion-page-hidden`) and can be ordered after the leaf. + * Instead, locate candidates globally and walk them from last to first, + * accepting the deepest one whose `.ion-page` ancestor is not hidden. The + * last-to-first order preserves leaf-most preference for nested outlets. + */ +const findFragmentTarget = async (fragment: string, shouldContinue: () => boolean): Promise => { + // CSS.escape is unavailable on very old WebViews; the fallback path uses + // `getElementById` and drops the legacy `` branch. + const canEscape = typeof CSS !== 'undefined' && typeof CSS.escape === 'function'; + const escaped = canEscape ? CSS.escape(fragment) : null; + + for (let i = 0; i < FRAGMENT_POLL_FRAMES; i++) { + if (!shouldContinue()) return null; + + let candidates: HTMLElement[] = []; + if (escaped !== null) { + try { + candidates = [...document.querySelectorAll(`#${escaped}, a[name="${escaped}"]`)]; + } catch { + candidates = [...document.querySelectorAll(`#${escaped}`)]; + } + } else { + const byId = document.getElementById(fragment); + if (byId !== null) candidates = [byId]; + } + + for (let j = candidates.length - 1; j >= 0; j--) { + if (isInActivePage(candidates[j])) { + return candidates[j]; + } + } + await nextFrame(); + } + + return null; +}; + +/** + * Scrolls to the element whose id matches `fragment`, falling back to a legacy + * `` target. When the target lives inside an `ion-content`, the + * scroll uses its smooth-animated scroll API; otherwise it falls back to + * `Element.scrollIntoView`. + * + * `shouldContinue` lets callers cancel in-flight scrolls when a newer + * navigation supersedes this one. It is checked between async steps. + */ +export const scrollToFragment = async ( + fragment: string | undefined, + shouldContinue: () => boolean = () => true +): Promise => { + if (fragment == null || fragment === '') { + return false; + } + + // URL fragments are percent-encoded but element ids are not; decode for + // matching per the HTML spec's indicated-element resolution. + let decoded: string; + try { + decoded = decodeURIComponent(fragment); + } catch { + decoded = fragment; + } + + const target = await findFragmentTarget(decoded, shouldContinue); + if (!target || !shouldContinue()) { + return false; + } + + // Best-effort scroll: swallow exceptions if the page tears down mid-animation. + try { + const contentHost = findClosestIonContent(target); + if (contentHost && isIonContent(contentHost)) { + const content = contentHost as HTMLIonContentElement; + const scrollEl = await getScrollElement(content); + // Yield one frame so the newly mounted target's layout is stable + // before we measure its rect. + await nextFrame(); + if (!shouldContinue()) return false; + const targetRect = target.getBoundingClientRect(); + const scrollRect = scrollEl.getBoundingClientRect(); + const top = targetRect.top - scrollRect.top + scrollEl.scrollTop; + // Preserve scrollLeft so RTL and horizontally-scrolling pages aren't reset. + await content.scrollToPoint(scrollEl.scrollLeft, top, FRAGMENT_SCROLL_DURATION); + } else { + target.scrollIntoView({ behavior: 'smooth' }); + } + return true; + } catch (e) { + printIonError('[ion-router] - Exception in scrollToFragment:', e); + return false; + } +}; + export const waitUntilNavNode = (): Promise => { if (searchNavNode(document.body)) { return Promise.resolve(); diff --git a/core/src/components/router/utils/interface.ts b/core/src/components/router/utils/interface.ts index caeb6e57c08..c0457da9680 100644 --- a/core/src/components/router/utils/interface.ts +++ b/core/src/components/router/utils/interface.ts @@ -57,6 +57,8 @@ export interface ParsedRoute { segments: string[]; /** Unparsed query string. */ queryString?: string; + /** URL fragment (the part after `#`), without the leading `#`. */ + fragment?: string; } export type RouterDirection = 'forward' | 'back' | 'root'; diff --git a/core/src/components/router/utils/path.ts b/core/src/components/router/utils/path.ts index 4305d84e986..dad058c56b0 100644 --- a/core/src/components/router/utils/path.ts +++ b/core/src/components/router/utils/path.ts @@ -8,7 +8,7 @@ export const generatePath = (segments: string[]): string => { return '/' + path; }; -const generateUrl = (segments: string[], useHash: boolean, queryString?: string) => { +const generateUrl = (segments: string[], useHash: boolean, queryString?: string, fragment?: string) => { let url = generatePath(segments); if (useHash) { url = '#' + url; @@ -16,6 +16,9 @@ const generateUrl = (segments: string[], useHash: boolean, queryString?: string) if (queryString !== undefined) { url += '?' + queryString; } + if (fragment !== undefined) { + url += '#' + fragment; + } return url; }; @@ -26,9 +29,10 @@ export const writeSegments = ( segments: string[], direction: RouterDirection, state: number, - queryString?: string + queryString?: string, + fragment?: string ) => { - const url = generateUrl([...parsePath(root).segments, ...segments], useHash, queryString); + const url = generateUrl([...parsePath(root).segments, ...segments], useHash, queryString, fragment); if (direction === ROUTER_INTENT_FORWARD) { history.pushState(state, '', url); } else { @@ -97,13 +101,23 @@ export const readSegments = (loc: Location, root: string, useHash: boolean): str /** * Parses the path to: * - segments an array of '/' separated parts, - * - queryString (undefined when no query string). + * - queryString (undefined when no query string), + * - fragment (undefined when no `#`). */ export const parsePath = (path: string | undefined | null): ParsedRoute => { let segments = ['']; let queryString; + let fragment; if (path != null) { + // The fragment ("#") starts a section that runs to the end of the URL. + // Anything inside it (including "?") is part of the fragment per RFC 3986. + const fragStart = path.indexOf('#'); + if (fragStart > -1) { + fragment = path.substring(fragStart + 1); + path = path.substring(0, fragStart); + } + const qsStart = path.indexOf('?'); if (qsStart > -1) { queryString = path.substring(qsStart + 1); @@ -120,5 +134,5 @@ export const parsePath = (path: string | undefined | null): ParsedRoute => { } } - return { segments, queryString }; + return { segments, queryString, fragment }; }; From dc168758b939978dd254c1bd392119d3cb630261 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gon=C3=A7alo=20M=2E?= Date: Mon, 1 Jun 2026 22:33:54 +0100 Subject: [PATCH 03/13] chore(deps): bump @stencil/core to 4.43.5 (#31181) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Issue number: resolves https://github.com/stenciljs/core/issues/6727 ## What is the current behavior? When a component property's default value is set to a JavaScript variable (e.g. `QUERY['lg']` on `ion-split-pane`'s `when` prop), Stencil emits the raw variable expression into the generated documentation files (`api.txt`, `components.d.ts`, and `dist/docs.json`). This causes the [component API docs](https://ionicframework.com/docs/api/split-pane#prop-when) to display `QUERY['lg']` instead of the resolved value `'(min-width: 992px)'`. ## What is the new behavior? Stencil 4.43.5 (via stenciljs/core#6728) resolves variable references at doc-generation time. After bumping and rebuilding: - `core/api.txt` — `ion-split-pane`'s `when` default is now `'(min-width: 992px)'` - `core/src/components.d.ts` — `@default` JSDoc tag reflects the resolved value - `dist/docs.json` (published as `@ionic/docs`) — will also carry the resolved value once released, enabling ionic-docs to remove the hardcoded fallbacks for the `gallery` component ## Does this introduce a breaking change? - [ ] Yes - [x] No ## Other information - Stencil changelog: https://github.com/stenciljs/core/releases/tag/v4.43.5 - Upstream fix: stenciljs/core#6728 - Once this is released as part of Ionic, a PR will be automatically created in `ionic-docs` using the updated `@ionic/docs` package — at that point the hardcoded default descriptions for `gallery`'s `columns` and `gap` props can be removed. --- core/api.txt | 2 +- core/package-lock.json | 107 +++++++++++++++++++-------------------- core/package.json | 2 +- core/src/components.d.ts | 4 +- 4 files changed, 56 insertions(+), 59 deletions(-) diff --git a/core/api.txt b/core/api.txt index d9e586ffd33..8a9af0b2918 100644 --- a/core/api.txt +++ b/core/api.txt @@ -1833,7 +1833,7 @@ ion-spinner,css-prop,--color ion-split-pane,shadow ion-split-pane,prop,contentId,string | undefined,undefined,false,true ion-split-pane,prop,disabled,boolean,false,false,false -ion-split-pane,prop,when,boolean | string,QUERY['lg'],false,false +ion-split-pane,prop,when,boolean | string,'(min-width: 992px)',false,false ion-split-pane,event,ionSplitPaneVisible,{ visible: boolean; },true ion-split-pane,css-prop,--border,ios ion-split-pane,css-prop,--border,md diff --git a/core/package-lock.json b/core/package-lock.json index 3426611303e..98aa48ca1ed 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -9,7 +9,7 @@ "version": "8.8.8", "license": "MIT", "dependencies": { - "@stencil/core": "4.43.0", + "@stencil/core": "4.43.5", "ionicons": "^8.0.13", "tslib": "^2.1.0" }, @@ -95,6 +95,7 @@ "version": "7.16.12", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.16.7", "@babel/generator": "^7.16.8", @@ -634,6 +635,7 @@ "integrity": "sha512-CqRQCkb6HXxcx/N7s+hHTN6ef2CmamFiRMITwm4qB840ph56mS42bzUgn6tKCP+RZjdDweiRHj9ytDDeN6jFag==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "tslib": "^2.1.0" } @@ -852,6 +854,7 @@ "version": "4.33.0", "dev": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "4.33.0", "@typescript-eslint/types": "4.33.0", @@ -1658,7 +1661,9 @@ } }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.34.9", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.44.0.tgz", + "integrity": "sha512-VGF3wy0Eq1gcEIkSCr8Ke03CWT+Pm2yveKLaDvq51pPpZza3JX/ClxXOCmTYYq3us5MvEuNRTaeyFThCKRQhOA==", "cpu": [ "arm64" ], @@ -1669,9 +1674,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.9.tgz", - "integrity": "sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.44.0.tgz", + "integrity": "sha512-fBkyrDhwquRvrTxSGH/qqt3/T0w5Rg0L7ZIDypvBPc1/gzjJle6acCpZ36blwuwcKD/u6oCE/sRWlUAcxLWQbQ==", "cpu": [ "x64" ], @@ -1682,9 +1687,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.9.tgz", - "integrity": "sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.44.0.tgz", + "integrity": "sha512-ZTR2mxBHb4tK4wGf9b8SYg0Y6KQPjGpR4UWwTFdnmjB4qRtoATZ5dWn3KsDwGa5Z2ZBOE7K52L36J9LueKBdOQ==", "cpu": [ "arm64" ], @@ -1695,9 +1700,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.9.tgz", - "integrity": "sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.44.0.tgz", + "integrity": "sha512-GFWfAhVhWGd4r6UxmnKRTBwP1qmModHtd5gkraeW2G490BpFOZkFtem8yuX2NyafIP/mGpRJgTJ2PwohQkUY/Q==", "cpu": [ "arm64" ], @@ -1708,9 +1713,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.9.tgz", - "integrity": "sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.44.0.tgz", + "integrity": "sha512-iUVJc3c0o8l9Sa/qlDL2Z9UP92UZZW1+EmQ4xfjTc1akr0iUFZNfxrXJ/R1T90h/ILm9iXEY6+iPrmYB3pXKjw==", "cpu": [ "x64" ], @@ -1721,9 +1726,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.9.tgz", - "integrity": "sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.44.0.tgz", + "integrity": "sha512-PQUobbhLTQT5yz/SPg116VJBgz+XOtXt8D1ck+sfJJhuEsMj2jSej5yTdp8CvWBSceu+WW+ibVL6dm0ptG5fcA==", "cpu": [ "x64" ], @@ -1734,9 +1739,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.9.tgz", - "integrity": "sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.44.0.tgz", + "integrity": "sha512-M0CpcHf8TWn+4oTxJfh7LQuTuaYeXGbk0eageVjQCKzYLsajWS/lFC94qlRqOlyC2KvRT90ZrfXULYmukeIy7w==", "cpu": [ "arm64" ], @@ -1747,9 +1752,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.9.tgz", - "integrity": "sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.44.0.tgz", + "integrity": "sha512-Q2Mgwt+D8hd5FIPUuPDsvPR7Bguza6yTkJxspDGkZj7tBRn2y4KSWYuIXpftFSjBra76TbKerCV7rgFPQrn+wQ==", "cpu": [ "x64" ], @@ -1789,10 +1794,11 @@ } }, "node_modules/@stencil/core": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.43.0.tgz", - "integrity": "sha512-6Uj2Z3lzLuufYAE7asZ6NLKgSwsB9uxl84Eh34PASnUjfj32GkrP4DtKK7fNeh1WFGGyffsTDka3gwtl+4reUg==", + "version": "4.43.5", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.43.5.tgz", + "integrity": "sha512-cgWD+GeuvJpTe1WQn40p02+BJ2j0j1YJ17GdkF2qKIQ23s2e3Zivq5yISXS3dcuV6oUJFN93jprdk+nk/sq99Q==", "license": "MIT", + "peer": true, "bin": { "stencil": "bin/stencil" }, @@ -1801,14 +1807,14 @@ "npm": ">=7.10.0" }, "optionalDependencies": { - "@rollup/rollup-darwin-arm64": "4.34.9", - "@rollup/rollup-darwin-x64": "4.34.9", - "@rollup/rollup-linux-arm64-gnu": "4.34.9", - "@rollup/rollup-linux-arm64-musl": "4.34.9", - "@rollup/rollup-linux-x64-gnu": "4.34.9", - "@rollup/rollup-linux-x64-musl": "4.34.9", - "@rollup/rollup-win32-arm64-msvc": "4.34.9", - "@rollup/rollup-win32-x64-msvc": "4.34.9" + "@rollup/rollup-darwin-arm64": "4.44.0", + "@rollup/rollup-darwin-x64": "4.44.0", + "@rollup/rollup-linux-arm64-gnu": "4.44.0", + "@rollup/rollup-linux-arm64-musl": "4.44.0", + "@rollup/rollup-linux-x64-gnu": "4.44.0", + "@rollup/rollup-linux-x64-musl": "4.44.0", + "@rollup/rollup-win32-arm64-msvc": "4.44.0", + "@rollup/rollup-win32-x64-msvc": "4.44.0" } }, "node_modules/@stencil/react-output-target": { @@ -2217,6 +2223,7 @@ "version": "6.7.2", "dev": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "6.7.2", "@typescript-eslint/types": "6.7.2", @@ -2442,7 +2449,6 @@ "integrity": "sha512-vay5/oQJdsNHmliWoZfHPoVZZRmnSWhug0BYT34njkYTPqClh3DNWLkZNJBVSjsNMrg0CCrBfoKkjZQPM/QVUw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/parser": "^7.28.5", "@vue/shared": "3.5.25", @@ -2457,7 +2463,6 @@ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "engines": { "node": ">=0.12" }, @@ -2470,8 +2475,7 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@vue/compiler-dom": { "version": "3.5.25", @@ -2479,7 +2483,6 @@ "integrity": "sha512-4We0OAcMZsKgYoGlMjzYvaoErltdFI2/25wqanuTu+S4gismOTRTBPi4IASOjxWdzIwrYSjnqONfKvuqkXzE2Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vue/compiler-core": "3.5.25", "@vue/shared": "3.5.25" @@ -2491,7 +2494,6 @@ "integrity": "sha512-PUgKp2rn8fFsI++lF2sO7gwO2d9Yj57Utr5yEsDf3GNaQcowCLKL7sf+LvVFvtJDXUp/03+dC6f2+LCv5aK1ag==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/parser": "^7.28.5", "@vue/compiler-core": "3.5.25", @@ -2509,8 +2511,7 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@vue/compiler-sfc/node_modules/postcss": { "version": "8.5.6", @@ -2532,7 +2533,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -2548,7 +2548,6 @@ "integrity": "sha512-ritPSKLBcParnsKYi+GNtbdbrIE1mtuFEJ4U1sWeuOMlIziK5GtOL85t5RhsNy4uWIXPgk+OUdpnXiTdzn8o3A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vue/compiler-dom": "3.5.25", "@vue/shared": "3.5.25" @@ -2560,7 +2559,6 @@ "integrity": "sha512-5xfAypCQepv4Jog1U4zn8cZIcbKKFka3AgWHEFQeK65OW+Ys4XybP6z2kKgws4YB43KGpqp5D/K3go2UPPunLA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vue/shared": "3.5.25" } @@ -2571,7 +2569,6 @@ "integrity": "sha512-Z751v203YWwYzy460bzsYQISDfPjHTl+6Zzwo/a3CsAf+0ccEjQ8c+0CdX1WsumRTHeywvyUFtW6KvNukT/smA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vue/reactivity": "3.5.25", "@vue/shared": "3.5.25" @@ -2583,7 +2580,6 @@ "integrity": "sha512-a4WrkYFbb19i9pjkz38zJBg8wa/rboNERq3+hRRb0dHiJh13c+6kAbgqCPfMaJ2gg4weWD3APZswASOfmKwamA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vue/reactivity": "3.5.25", "@vue/runtime-core": "3.5.25", @@ -2597,7 +2593,6 @@ "integrity": "sha512-UJaXR54vMG61i8XNIzTSf2Q7MOqZHpp8+x3XLGtE3+fL+nQd+k7O5+X3D/uWrnQXOdMw5VPih+Uremcw+u1woQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vue/compiler-ssr": "3.5.25", "@vue/shared": "3.5.25" @@ -2611,8 +2606,7 @@ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.25.tgz", "integrity": "sha512-AbOPdQQnAnzs58H2FrrDxYj/TJfmeS2jdfEEhgiKINy+bnOANmVizIEgq1r+C5zsbs6l1CCQxtcj71rwNQ4jWg==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@zeit/schemas": { "version": "2.21.0", @@ -2635,6 +2629,7 @@ "version": "7.4.0", "dev": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -3797,8 +3792,7 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/debug": { "version": "2.6.9", @@ -4092,6 +4086,7 @@ "version": "7.32.0", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "7.12.11", "@eslint/eslintrc": "^0.4.3", @@ -7287,7 +7282,6 @@ "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } @@ -7609,7 +7603,6 @@ } ], "license": "MIT", - "peer": true, "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -7966,6 +7959,7 @@ "integrity": "sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "playwright-core": "cli.js" }, @@ -7977,6 +7971,7 @@ "version": "7.0.35", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "chalk": "^2.4.2", "source-map": "^0.6.1", @@ -8082,6 +8077,7 @@ "version": "0.36.2", "dev": true, "license": "MIT", + "peer": true, "peerDependencies": { "postcss": ">=5.0.0" } @@ -8130,6 +8126,7 @@ "version": "2.6.1", "dev": true, "license": "MIT", + "peer": true, "bin": { "prettier": "bin-prettier.js" }, @@ -8487,6 +8484,7 @@ "version": "2.35.1", "dev": true, "license": "MIT", + "peer": true, "bin": { "rollup": "dist/bin/rollup" }, @@ -8708,7 +8706,6 @@ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, "license": "BSD-3-Clause", - "peer": true, "engines": { "node": ">=0.10.0" } diff --git a/core/package.json b/core/package.json index 13f69f50091..a942357bcad 100644 --- a/core/package.json +++ b/core/package.json @@ -34,7 +34,7 @@ "loader/" ], "dependencies": { - "@stencil/core": "4.43.0", + "@stencil/core": "4.43.5", "ionicons": "^8.0.13", "tslib": "^2.1.0" }, diff --git a/core/src/components.d.ts b/core/src/components.d.ts index 37223c4f77a..443c04611cf 100644 --- a/core/src/components.d.ts +++ b/core/src/components.d.ts @@ -3313,7 +3313,7 @@ export namespace Components { "isVisible": () => Promise; /** * When the split-pane should be shown. Can be a CSS media query expression, or a shortcut expression. Can also be a boolean expression. - * @default QUERY['lg'] + * @default '(min-width: 992px)' */ "when": string | boolean; } @@ -8683,7 +8683,7 @@ declare namespace LocalJSX { "onIonSplitPaneVisible"?: (event: IonSplitPaneCustomEvent<{ visible: boolean }>) => void; /** * When the split-pane should be shown. Can be a CSS media query expression, or a shortcut expression. Can also be a boolean expression. - * @default QUERY['lg'] + * @default '(min-width: 992px)' */ "when"?: string | boolean; } From 39e7f71473b44d5dc010eed1084053eb7c855122 Mon Sep 17 00:00:00 2001 From: ionitron Date: Wed, 3 Jun 2026 17:19:49 +0000 Subject: [PATCH 04/13] v8.8.9 --- CHANGELOG.md | 11 +++++++++++ core/CHANGELOG.md | 11 +++++++++++ core/package-lock.json | 6 +++--- core/package.json | 2 +- lerna.json | 2 +- packages/angular-server/CHANGELOG.md | 8 ++++++++ packages/angular-server/package-lock.json | 8 ++++---- packages/angular-server/package.json | 4 ++-- packages/angular/CHANGELOG.md | 8 ++++++++ packages/angular/package-lock.json | 8 ++++---- packages/angular/package.json | 4 ++-- packages/docs/CHANGELOG.md | 8 ++++++++ packages/docs/package-lock.json | 6 +++--- packages/docs/package.json | 2 +- packages/react-router/CHANGELOG.md | 8 ++++++++ packages/react-router/package-lock.json | 8 ++++---- packages/react-router/package.json | 4 ++-- packages/react/CHANGELOG.md | 8 ++++++++ packages/react/package-lock.json | 8 ++++---- packages/react/package.json | 4 ++-- packages/vue-router/CHANGELOG.md | 8 ++++++++ packages/vue-router/package-lock.json | 8 ++++---- packages/vue-router/package.json | 4 ++-- packages/vue/CHANGELOG.md | 8 ++++++++ packages/vue/package-lock.json | 8 ++++---- packages/vue/package.json | 4 ++-- 26 files changed, 123 insertions(+), 45 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 508426b3d07..137fcba72f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.8.9](https://github.com/ionic-team/ionic-framework/compare/v8.8.8...v8.8.9) (2026-06-03) + + +### Bug Fixes + +* **router:** support anchor fragments in href ([#31172](https://github.com/ionic-team/ionic-framework/issues/31172)) ([a982516](https://github.com/ionic-team/ionic-framework/commit/a982516afad1e848534db702694ef47f5e49c78d)), closes [#19566](https://github.com/ionic-team/ionic-framework/issues/19566) [#19365](https://github.com/ionic-team/ionic-framework/issues/19365) + + + + + ## [8.8.8](https://github.com/ionic-team/ionic-framework/compare/v8.8.7...v8.8.8) (2026-05-20) diff --git a/core/CHANGELOG.md b/core/CHANGELOG.md index e9b40761785..5459e5a8342 100644 --- a/core/CHANGELOG.md +++ b/core/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.8.9](https://github.com/ionic-team/ionic-framework/compare/v8.8.8...v8.8.9) (2026-06-03) + + +### Bug Fixes + +* **router:** support anchor fragments in href ([#31172](https://github.com/ionic-team/ionic-framework/issues/31172)) ([a982516](https://github.com/ionic-team/ionic-framework/commit/a982516afad1e848534db702694ef47f5e49c78d)), closes [#19566](https://github.com/ionic-team/ionic-framework/issues/19566) [#19365](https://github.com/ionic-team/ionic-framework/issues/19365) + + + + + ## [8.8.8](https://github.com/ionic-team/ionic-framework/compare/v8.8.7...v8.8.8) (2026-05-20) **Note:** Version bump only for package @ionic/core diff --git a/core/package-lock.json b/core/package-lock.json index 98aa48ca1ed..47befd496d1 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -1,12 +1,12 @@ { "name": "@ionic/core", - "version": "8.8.8", + "version": "8.8.9", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@ionic/core", - "version": "8.8.8", + "version": "8.8.9", "license": "MIT", "dependencies": { "@stencil/core": "4.43.5", @@ -9826,4 +9826,4 @@ } } } -} +} \ No newline at end of file diff --git a/core/package.json b/core/package.json index a942357bcad..21a468438eb 100644 --- a/core/package.json +++ b/core/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/core", - "version": "8.8.8", + "version": "8.8.9", "description": "Base components for Ionic", "engines": { "node": ">= 16" diff --git a/lerna.json b/lerna.json index 8c524128cbe..00e2a2ed71b 100644 --- a/lerna.json +++ b/lerna.json @@ -3,5 +3,5 @@ "core", "packages/*" ], - "version": "8.8.8" + "version": "8.8.9" } \ No newline at end of file diff --git a/packages/angular-server/CHANGELOG.md b/packages/angular-server/CHANGELOG.md index 25283000092..0cf7bad6e04 100644 --- a/packages/angular-server/CHANGELOG.md +++ b/packages/angular-server/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.8.9](https://github.com/ionic-team/ionic-framework/compare/v8.8.8...v8.8.9) (2026-06-03) + +**Note:** Version bump only for package @ionic/angular-server + + + + + ## [8.8.8](https://github.com/ionic-team/ionic-framework/compare/v8.8.7...v8.8.8) (2026-05-20) **Note:** Version bump only for package @ionic/angular-server diff --git a/packages/angular-server/package-lock.json b/packages/angular-server/package-lock.json index 2861b146830..ab669b4e13b 100644 --- a/packages/angular-server/package-lock.json +++ b/packages/angular-server/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/angular-server", - "version": "8.8.8", + "version": "8.8.9", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/angular-server", - "version": "8.8.8", + "version": "8.8.9", "license": "MIT", "dependencies": { - "@ionic/core": "^8.8.8" + "@ionic/core": "^8.8.9" }, "devDependencies": { "@angular-eslint/eslint-plugin": "^16.0.0", @@ -11289,4 +11289,4 @@ } } } -} +} \ No newline at end of file diff --git a/packages/angular-server/package.json b/packages/angular-server/package.json index c4242de7258..a05c54cb383 100644 --- a/packages/angular-server/package.json +++ b/packages/angular-server/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/angular-server", - "version": "8.8.8", + "version": "8.8.9", "description": "Angular SSR Module for Ionic", "keywords": [ "ionic", @@ -62,6 +62,6 @@ }, "prettier": "@ionic/prettier-config", "dependencies": { - "@ionic/core": "^8.8.8" + "@ionic/core": "^8.8.9" } } diff --git a/packages/angular/CHANGELOG.md b/packages/angular/CHANGELOG.md index ee86d4e033b..5c940fa9ed5 100644 --- a/packages/angular/CHANGELOG.md +++ b/packages/angular/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.8.9](https://github.com/ionic-team/ionic-framework/compare/v8.8.8...v8.8.9) (2026-06-03) + +**Note:** Version bump only for package @ionic/angular + + + + + ## [8.8.8](https://github.com/ionic-team/ionic-framework/compare/v8.8.7...v8.8.8) (2026-05-20) diff --git a/packages/angular/package-lock.json b/packages/angular/package-lock.json index 2f70c809dcf..d38caa2cbf6 100644 --- a/packages/angular/package-lock.json +++ b/packages/angular/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/angular", - "version": "8.8.8", + "version": "8.8.9", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@ionic/angular", - "version": "8.8.8", + "version": "8.8.9", "license": "MIT", "dependencies": { - "@ionic/core": "^8.8.8", + "@ionic/core": "^8.8.9", "ionicons": "^8.0.13", "jsonc-parser": "^3.0.0", "tslib": "^2.3.0" @@ -9095,4 +9095,4 @@ } } } -} +} \ No newline at end of file diff --git a/packages/angular/package.json b/packages/angular/package.json index 7600bae5780..c78d1dd9dfc 100644 --- a/packages/angular/package.json +++ b/packages/angular/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/angular", - "version": "8.8.8", + "version": "8.8.9", "description": "Angular specific wrappers for @ionic/core", "keywords": [ "ionic", @@ -48,7 +48,7 @@ } }, "dependencies": { - "@ionic/core": "^8.8.8", + "@ionic/core": "^8.8.9", "ionicons": "^8.0.13", "jsonc-parser": "^3.0.0", "tslib": "^2.3.0" diff --git a/packages/docs/CHANGELOG.md b/packages/docs/CHANGELOG.md index 934a24497b6..9a41e76f185 100644 --- a/packages/docs/CHANGELOG.md +++ b/packages/docs/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.8.9](https://github.com/ionic-team/ionic-framework/compare/v8.8.8...v8.8.9) (2026-06-03) + +**Note:** Version bump only for package @ionic/docs + + + + + ## [8.8.8](https://github.com/ionic-team/ionic-framework/compare/v8.8.7...v8.8.8) (2026-05-20) **Note:** Version bump only for package @ionic/docs diff --git a/packages/docs/package-lock.json b/packages/docs/package-lock.json index 7040a4e55bf..b0b1099e2ed 100644 --- a/packages/docs/package-lock.json +++ b/packages/docs/package-lock.json @@ -1,13 +1,13 @@ { "name": "@ionic/docs", - "version": "8.8.8", + "version": "8.8.9", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/docs", - "version": "8.8.8", + "version": "8.8.9", "license": "MIT" } } -} +} \ No newline at end of file diff --git a/packages/docs/package.json b/packages/docs/package.json index 7a40bf552b4..db3c4535934 100644 --- a/packages/docs/package.json +++ b/packages/docs/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/docs", - "version": "8.8.8", + "version": "8.8.9", "description": "Pre-packaged API documentation for the Ionic docs.", "main": "core.json", "types": "core.d.ts", diff --git a/packages/react-router/CHANGELOG.md b/packages/react-router/CHANGELOG.md index 8a05c2f3bad..78236007764 100644 --- a/packages/react-router/CHANGELOG.md +++ b/packages/react-router/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.8.9](https://github.com/ionic-team/ionic-framework/compare/v8.8.8...v8.8.9) (2026-06-03) + +**Note:** Version bump only for package @ionic/react-router + + + + + ## [8.8.8](https://github.com/ionic-team/ionic-framework/compare/v8.8.7...v8.8.8) (2026-05-20) **Note:** Version bump only for package @ionic/react-router diff --git a/packages/react-router/package-lock.json b/packages/react-router/package-lock.json index 16116350cf1..863a6b0a7c0 100644 --- a/packages/react-router/package-lock.json +++ b/packages/react-router/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/react-router", - "version": "8.8.8", + "version": "8.8.9", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/react-router", - "version": "8.8.8", + "version": "8.8.9", "license": "MIT", "dependencies": { - "@ionic/react": "^8.8.8", + "@ionic/react": "^8.8.9", "tslib": "*" }, "devDependencies": { @@ -6847,4 +6847,4 @@ "dev": true } } -} +} \ No newline at end of file diff --git a/packages/react-router/package.json b/packages/react-router/package.json index a74b620c4a5..0ae9daa4f13 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/react-router", - "version": "8.8.8", + "version": "8.8.9", "description": "React Router wrapper for @ionic/react", "keywords": [ "ionic", @@ -36,7 +36,7 @@ "dist/" ], "dependencies": { - "@ionic/react": "^8.8.8", + "@ionic/react": "^8.8.9", "tslib": "*" }, "peerDependencies": { diff --git a/packages/react/CHANGELOG.md b/packages/react/CHANGELOG.md index b56b2122fe0..c882f7b38c9 100644 --- a/packages/react/CHANGELOG.md +++ b/packages/react/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.8.9](https://github.com/ionic-team/ionic-framework/compare/v8.8.8...v8.8.9) (2026-06-03) + +**Note:** Version bump only for package @ionic/react + + + + + ## [8.8.8](https://github.com/ionic-team/ionic-framework/compare/v8.8.7...v8.8.8) (2026-05-20) diff --git a/packages/react/package-lock.json b/packages/react/package-lock.json index d899bdb3655..245bc063e40 100644 --- a/packages/react/package-lock.json +++ b/packages/react/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/react", - "version": "8.8.8", + "version": "8.8.9", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@ionic/react", - "version": "8.8.8", + "version": "8.8.9", "license": "MIT", "dependencies": { - "@ionic/core": "^8.8.8", + "@ionic/core": "^8.8.9", "ionicons": "^8.0.13", "tslib": "*" }, @@ -11916,4 +11916,4 @@ } } } -} +} \ No newline at end of file diff --git a/packages/react/package.json b/packages/react/package.json index b3faf4cea76..58135d548d3 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/react", - "version": "8.8.8", + "version": "8.8.9", "description": "React specific wrapper for @ionic/core", "keywords": [ "ionic", @@ -40,7 +40,7 @@ "css/" ], "dependencies": { - "@ionic/core": "^8.8.8", + "@ionic/core": "^8.8.9", "ionicons": "^8.0.13", "tslib": "*" }, diff --git a/packages/vue-router/CHANGELOG.md b/packages/vue-router/CHANGELOG.md index e023d38ffb7..3fd5394b7b8 100644 --- a/packages/vue-router/CHANGELOG.md +++ b/packages/vue-router/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.8.9](https://github.com/ionic-team/ionic-framework/compare/v8.8.8...v8.8.9) (2026-06-03) + +**Note:** Version bump only for package @ionic/vue-router + + + + + ## [8.8.8](https://github.com/ionic-team/ionic-framework/compare/v8.8.7...v8.8.8) (2026-05-20) diff --git a/packages/vue-router/package-lock.json b/packages/vue-router/package-lock.json index f939dde068c..4e30907aa88 100644 --- a/packages/vue-router/package-lock.json +++ b/packages/vue-router/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/vue-router", - "version": "8.8.8", + "version": "8.8.9", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/vue-router", - "version": "8.8.8", + "version": "8.8.9", "license": "MIT", "dependencies": { - "@ionic/vue": "^8.8.8" + "@ionic/vue": "^8.8.9" }, "devDependencies": { "@ionic/eslint-config": "^0.3.0", @@ -12994,4 +12994,4 @@ "dev": true } } -} +} \ No newline at end of file diff --git a/packages/vue-router/package.json b/packages/vue-router/package.json index cadf4e46a73..76c81118d79 100644 --- a/packages/vue-router/package.json +++ b/packages/vue-router/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/vue-router", - "version": "8.8.8", + "version": "8.8.9", "description": "Vue Router integration for @ionic/vue", "scripts": { "test.spec": "jest", @@ -44,7 +44,7 @@ }, "homepage": "https://github.com/ionic-team/ionic-framework#readme", "dependencies": { - "@ionic/vue": "^8.8.8" + "@ionic/vue": "^8.8.9" }, "devDependencies": { "@ionic/eslint-config": "^0.3.0", diff --git a/packages/vue/CHANGELOG.md b/packages/vue/CHANGELOG.md index 3e8a6ab1296..ed5abf7147d 100644 --- a/packages/vue/CHANGELOG.md +++ b/packages/vue/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.8.9](https://github.com/ionic-team/ionic-framework/compare/v8.8.8...v8.8.9) (2026-06-03) + +**Note:** Version bump only for package @ionic/vue + + + + + ## [8.8.8](https://github.com/ionic-team/ionic-framework/compare/v8.8.7...v8.8.8) (2026-05-20) diff --git a/packages/vue/package-lock.json b/packages/vue/package-lock.json index 74e16ef6d0e..3ff3cd35454 100644 --- a/packages/vue/package-lock.json +++ b/packages/vue/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/vue", - "version": "8.8.8", + "version": "8.8.9", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@ionic/vue", - "version": "8.8.8", + "version": "8.8.9", "license": "MIT", "dependencies": { - "@ionic/core": "^8.8.8", + "@ionic/core": "^8.8.9", "@stencil/vue-output-target": "0.10.7", "ionicons": "^8.0.13" }, @@ -4022,4 +4022,4 @@ "dev": true } } -} +} \ No newline at end of file diff --git a/packages/vue/package.json b/packages/vue/package.json index f7b53b3c941..245c7bbdfa9 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/vue", - "version": "8.8.8", + "version": "8.8.9", "description": "Vue specific wrapper for @ionic/core", "scripts": { "eslint": "eslint src", @@ -68,7 +68,7 @@ "vue-router": "^4.0.16" }, "dependencies": { - "@ionic/core": "^8.8.8", + "@ionic/core": "^8.8.9", "@stencil/vue-output-target": "0.10.7", "ionicons": "^8.0.13" }, From c9d40665b14b49c8572872db394ab76f39966979 Mon Sep 17 00:00:00 2001 From: ionitron Date: Wed, 3 Jun 2026 17:20:50 +0000 Subject: [PATCH 05/13] chore(): update package lock files --- core/package-lock.json | 39 ++--- packages/angular-server/package-lock.json | 158 ++++++++++---------- packages/angular/package-lock.json | 80 +++++----- packages/docs/package-lock.json | 2 +- packages/react-router/package-lock.json | 174 +++++++++++----------- packages/react/package-lock.json | 80 +++++----- packages/vue-router/package-lock.json | 174 +++++++++++----------- packages/vue/package-lock.json | 80 +++++----- 8 files changed, 396 insertions(+), 391 deletions(-) diff --git a/core/package-lock.json b/core/package-lock.json index 47befd496d1..41aa2358daa 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -95,7 +95,6 @@ "version": "7.16.12", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.16.7", "@babel/generator": "^7.16.8", @@ -635,7 +634,6 @@ "integrity": "sha512-CqRQCkb6HXxcx/N7s+hHTN6ef2CmamFiRMITwm4qB840ph56mS42bzUgn6tKCP+RZjdDweiRHj9ytDDeN6jFag==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "tslib": "^2.1.0" } @@ -854,7 +852,6 @@ "version": "4.33.0", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "4.33.0", "@typescript-eslint/types": "4.33.0", @@ -1798,7 +1795,6 @@ "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.43.5.tgz", "integrity": "sha512-cgWD+GeuvJpTe1WQn40p02+BJ2j0j1YJ17GdkF2qKIQ23s2e3Zivq5yISXS3dcuV6oUJFN93jprdk+nk/sq99Q==", "license": "MIT", - "peer": true, "bin": { "stencil": "bin/stencil" }, @@ -2223,7 +2219,6 @@ "version": "6.7.2", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "6.7.2", "@typescript-eslint/types": "6.7.2", @@ -2449,6 +2444,7 @@ "integrity": "sha512-vay5/oQJdsNHmliWoZfHPoVZZRmnSWhug0BYT34njkYTPqClh3DNWLkZNJBVSjsNMrg0CCrBfoKkjZQPM/QVUw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/parser": "^7.28.5", "@vue/shared": "3.5.25", @@ -2463,6 +2459,7 @@ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true, "license": "BSD-2-Clause", + "peer": true, "engines": { "node": ">=0.12" }, @@ -2475,7 +2472,8 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@vue/compiler-dom": { "version": "3.5.25", @@ -2483,6 +2481,7 @@ "integrity": "sha512-4We0OAcMZsKgYoGlMjzYvaoErltdFI2/25wqanuTu+S4gismOTRTBPi4IASOjxWdzIwrYSjnqONfKvuqkXzE2Q==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vue/compiler-core": "3.5.25", "@vue/shared": "3.5.25" @@ -2494,6 +2493,7 @@ "integrity": "sha512-PUgKp2rn8fFsI++lF2sO7gwO2d9Yj57Utr5yEsDf3GNaQcowCLKL7sf+LvVFvtJDXUp/03+dC6f2+LCv5aK1ag==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/parser": "^7.28.5", "@vue/compiler-core": "3.5.25", @@ -2511,7 +2511,8 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@vue/compiler-sfc/node_modules/postcss": { "version": "8.5.6", @@ -2533,6 +2534,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -2548,6 +2550,7 @@ "integrity": "sha512-ritPSKLBcParnsKYi+GNtbdbrIE1mtuFEJ4U1sWeuOMlIziK5GtOL85t5RhsNy4uWIXPgk+OUdpnXiTdzn8o3A==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vue/compiler-dom": "3.5.25", "@vue/shared": "3.5.25" @@ -2559,6 +2562,7 @@ "integrity": "sha512-5xfAypCQepv4Jog1U4zn8cZIcbKKFka3AgWHEFQeK65OW+Ys4XybP6z2kKgws4YB43KGpqp5D/K3go2UPPunLA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vue/shared": "3.5.25" } @@ -2569,6 +2573,7 @@ "integrity": "sha512-Z751v203YWwYzy460bzsYQISDfPjHTl+6Zzwo/a3CsAf+0ccEjQ8c+0CdX1WsumRTHeywvyUFtW6KvNukT/smA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vue/reactivity": "3.5.25", "@vue/shared": "3.5.25" @@ -2580,6 +2585,7 @@ "integrity": "sha512-a4WrkYFbb19i9pjkz38zJBg8wa/rboNERq3+hRRb0dHiJh13c+6kAbgqCPfMaJ2gg4weWD3APZswASOfmKwamA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vue/reactivity": "3.5.25", "@vue/runtime-core": "3.5.25", @@ -2593,6 +2599,7 @@ "integrity": "sha512-UJaXR54vMG61i8XNIzTSf2Q7MOqZHpp8+x3XLGtE3+fL+nQd+k7O5+X3D/uWrnQXOdMw5VPih+Uremcw+u1woQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vue/compiler-ssr": "3.5.25", "@vue/shared": "3.5.25" @@ -2606,7 +2613,8 @@ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.25.tgz", "integrity": "sha512-AbOPdQQnAnzs58H2FrrDxYj/TJfmeS2jdfEEhgiKINy+bnOANmVizIEgq1r+C5zsbs6l1CCQxtcj71rwNQ4jWg==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@zeit/schemas": { "version": "2.21.0", @@ -2629,7 +2637,6 @@ "version": "7.4.0", "dev": true, "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -3792,7 +3799,8 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/debug": { "version": "2.6.9", @@ -4086,7 +4094,6 @@ "version": "7.32.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "7.12.11", "@eslint/eslintrc": "^0.4.3", @@ -7282,6 +7289,7 @@ "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } @@ -7603,6 +7611,7 @@ } ], "license": "MIT", + "peer": true, "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -7959,7 +7968,6 @@ "integrity": "sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==", "dev": true, "license": "Apache-2.0", - "peer": true, "bin": { "playwright-core": "cli.js" }, @@ -7971,7 +7979,6 @@ "version": "7.0.35", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "chalk": "^2.4.2", "source-map": "^0.6.1", @@ -8077,7 +8084,6 @@ "version": "0.36.2", "dev": true, "license": "MIT", - "peer": true, "peerDependencies": { "postcss": ">=5.0.0" } @@ -8126,7 +8132,6 @@ "version": "2.6.1", "dev": true, "license": "MIT", - "peer": true, "bin": { "prettier": "bin-prettier.js" }, @@ -8484,7 +8489,6 @@ "version": "2.35.1", "dev": true, "license": "MIT", - "peer": true, "bin": { "rollup": "dist/bin/rollup" }, @@ -8706,6 +8710,7 @@ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, "license": "BSD-3-Clause", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -9826,4 +9831,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/angular-server/package-lock.json b/packages/angular-server/package-lock.json index ab669b4e13b..07543509d00 100644 --- a/packages/angular-server/package-lock.json +++ b/packages/angular-server/package-lock.json @@ -1031,12 +1031,12 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.8.8", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.8.tgz", - "integrity": "sha512-GGvYtEzLtn1gBUC1/vb4pvA3gQzYskTNVIsvdTVIgnwLtdt70rwTibrZRSqmkyHeqpjg/u3+9XsM2c0kzc/V3w==", + "version": "8.8.9", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.9.tgz", + "integrity": "sha512-eb0oztHFIxqltOEnTYmfvEzkYENnE5qcOUo+6j2ZrHbXICGwpxzNDg4no4A13FkJ1Rb6ahAjFp0UxO0sw6M76A==", "license": "MIT", "dependencies": { - "@stencil/core": "4.43.0", + "@stencil/core": "4.43.5", "ionicons": "^8.0.13", "tslib": "^2.1.0" }, @@ -1285,9 +1285,9 @@ } }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.9.tgz", - "integrity": "sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.44.0.tgz", + "integrity": "sha512-VGF3wy0Eq1gcEIkSCr8Ke03CWT+Pm2yveKLaDvq51pPpZza3JX/ClxXOCmTYYq3us5MvEuNRTaeyFThCKRQhOA==", "cpu": [ "arm64" ], @@ -1298,9 +1298,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.9.tgz", - "integrity": "sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.44.0.tgz", + "integrity": "sha512-fBkyrDhwquRvrTxSGH/qqt3/T0w5Rg0L7ZIDypvBPc1/gzjJle6acCpZ36blwuwcKD/u6oCE/sRWlUAcxLWQbQ==", "cpu": [ "x64" ], @@ -1311,9 +1311,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.9.tgz", - "integrity": "sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.44.0.tgz", + "integrity": "sha512-ZTR2mxBHb4tK4wGf9b8SYg0Y6KQPjGpR4UWwTFdnmjB4qRtoATZ5dWn3KsDwGa5Z2ZBOE7K52L36J9LueKBdOQ==", "cpu": [ "arm64" ], @@ -1324,9 +1324,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.9.tgz", - "integrity": "sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.44.0.tgz", + "integrity": "sha512-GFWfAhVhWGd4r6UxmnKRTBwP1qmModHtd5gkraeW2G490BpFOZkFtem8yuX2NyafIP/mGpRJgTJ2PwohQkUY/Q==", "cpu": [ "arm64" ], @@ -1337,9 +1337,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.9.tgz", - "integrity": "sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.44.0.tgz", + "integrity": "sha512-iUVJc3c0o8l9Sa/qlDL2Z9UP92UZZW1+EmQ4xfjTc1akr0iUFZNfxrXJ/R1T90h/ILm9iXEY6+iPrmYB3pXKjw==", "cpu": [ "x64" ], @@ -1350,9 +1350,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.9.tgz", - "integrity": "sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.44.0.tgz", + "integrity": "sha512-PQUobbhLTQT5yz/SPg116VJBgz+XOtXt8D1ck+sfJJhuEsMj2jSej5yTdp8CvWBSceu+WW+ibVL6dm0ptG5fcA==", "cpu": [ "x64" ], @@ -1363,9 +1363,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.9.tgz", - "integrity": "sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.44.0.tgz", + "integrity": "sha512-M0CpcHf8TWn+4oTxJfh7LQuTuaYeXGbk0eageVjQCKzYLsajWS/lFC94qlRqOlyC2KvRT90ZrfXULYmukeIy7w==", "cpu": [ "arm64" ], @@ -1376,9 +1376,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.9.tgz", - "integrity": "sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.44.0.tgz", + "integrity": "sha512-Q2Mgwt+D8hd5FIPUuPDsvPR7Bguza6yTkJxspDGkZj7tBRn2y4KSWYuIXpftFSjBra76TbKerCV7rgFPQrn+wQ==", "cpu": [ "x64" ], @@ -1389,9 +1389,9 @@ ] }, "node_modules/@stencil/core": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.43.0.tgz", - "integrity": "sha512-6Uj2Z3lzLuufYAE7asZ6NLKgSwsB9uxl84Eh34PASnUjfj32GkrP4DtKK7fNeh1WFGGyffsTDka3gwtl+4reUg==", + "version": "4.43.5", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.43.5.tgz", + "integrity": "sha512-cgWD+GeuvJpTe1WQn40p02+BJ2j0j1YJ17GdkF2qKIQ23s2e3Zivq5yISXS3dcuV6oUJFN93jprdk+nk/sq99Q==", "license": "MIT", "bin": { "stencil": "bin/stencil" @@ -1401,14 +1401,14 @@ "npm": ">=7.10.0" }, "optionalDependencies": { - "@rollup/rollup-darwin-arm64": "4.34.9", - "@rollup/rollup-darwin-x64": "4.34.9", - "@rollup/rollup-linux-arm64-gnu": "4.34.9", - "@rollup/rollup-linux-arm64-musl": "4.34.9", - "@rollup/rollup-linux-x64-gnu": "4.34.9", - "@rollup/rollup-linux-x64-musl": "4.34.9", - "@rollup/rollup-win32-arm64-msvc": "4.34.9", - "@rollup/rollup-win32-x64-msvc": "4.34.9" + "@rollup/rollup-darwin-arm64": "4.44.0", + "@rollup/rollup-darwin-x64": "4.44.0", + "@rollup/rollup-linux-arm64-gnu": "4.44.0", + "@rollup/rollup-linux-arm64-musl": "4.44.0", + "@rollup/rollup-linux-x64-gnu": "4.44.0", + "@rollup/rollup-linux-x64-musl": "4.44.0", + "@rollup/rollup-win32-arm64-msvc": "4.44.0", + "@rollup/rollup-win32-x64-msvc": "4.44.0" } }, "node_modules/@types/estree": { @@ -7309,11 +7309,11 @@ "dev": true }, "@ionic/core": { - "version": "8.8.8", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.8.tgz", - "integrity": "sha512-GGvYtEzLtn1gBUC1/vb4pvA3gQzYskTNVIsvdTVIgnwLtdt70rwTibrZRSqmkyHeqpjg/u3+9XsM2c0kzc/V3w==", + "version": "8.8.9", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.9.tgz", + "integrity": "sha512-eb0oztHFIxqltOEnTYmfvEzkYENnE5qcOUo+6j2ZrHbXICGwpxzNDg4no4A13FkJ1Rb6ahAjFp0UxO0sw6M76A==", "requires": { - "@stencil/core": "4.43.0", + "@stencil/core": "4.43.5", "ionicons": "^8.0.13", "tslib": "^2.1.0" } @@ -7484,66 +7484,66 @@ } }, "@rollup/rollup-darwin-arm64": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.9.tgz", - "integrity": "sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.44.0.tgz", + "integrity": "sha512-VGF3wy0Eq1gcEIkSCr8Ke03CWT+Pm2yveKLaDvq51pPpZza3JX/ClxXOCmTYYq3us5MvEuNRTaeyFThCKRQhOA==", "optional": true }, "@rollup/rollup-darwin-x64": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.9.tgz", - "integrity": "sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.44.0.tgz", + "integrity": "sha512-fBkyrDhwquRvrTxSGH/qqt3/T0w5Rg0L7ZIDypvBPc1/gzjJle6acCpZ36blwuwcKD/u6oCE/sRWlUAcxLWQbQ==", "optional": true }, "@rollup/rollup-linux-arm64-gnu": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.9.tgz", - "integrity": "sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.44.0.tgz", + "integrity": "sha512-ZTR2mxBHb4tK4wGf9b8SYg0Y6KQPjGpR4UWwTFdnmjB4qRtoATZ5dWn3KsDwGa5Z2ZBOE7K52L36J9LueKBdOQ==", "optional": true }, "@rollup/rollup-linux-arm64-musl": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.9.tgz", - "integrity": "sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.44.0.tgz", + "integrity": "sha512-GFWfAhVhWGd4r6UxmnKRTBwP1qmModHtd5gkraeW2G490BpFOZkFtem8yuX2NyafIP/mGpRJgTJ2PwohQkUY/Q==", "optional": true }, "@rollup/rollup-linux-x64-gnu": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.9.tgz", - "integrity": "sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.44.0.tgz", + "integrity": "sha512-iUVJc3c0o8l9Sa/qlDL2Z9UP92UZZW1+EmQ4xfjTc1akr0iUFZNfxrXJ/R1T90h/ILm9iXEY6+iPrmYB3pXKjw==", "optional": true }, "@rollup/rollup-linux-x64-musl": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.9.tgz", - "integrity": "sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.44.0.tgz", + "integrity": "sha512-PQUobbhLTQT5yz/SPg116VJBgz+XOtXt8D1ck+sfJJhuEsMj2jSej5yTdp8CvWBSceu+WW+ibVL6dm0ptG5fcA==", "optional": true }, "@rollup/rollup-win32-arm64-msvc": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.9.tgz", - "integrity": "sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.44.0.tgz", + "integrity": "sha512-M0CpcHf8TWn+4oTxJfh7LQuTuaYeXGbk0eageVjQCKzYLsajWS/lFC94qlRqOlyC2KvRT90ZrfXULYmukeIy7w==", "optional": true }, "@rollup/rollup-win32-x64-msvc": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.9.tgz", - "integrity": "sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.44.0.tgz", + "integrity": "sha512-Q2Mgwt+D8hd5FIPUuPDsvPR7Bguza6yTkJxspDGkZj7tBRn2y4KSWYuIXpftFSjBra76TbKerCV7rgFPQrn+wQ==", "optional": true }, "@stencil/core": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.43.0.tgz", - "integrity": "sha512-6Uj2Z3lzLuufYAE7asZ6NLKgSwsB9uxl84Eh34PASnUjfj32GkrP4DtKK7fNeh1WFGGyffsTDka3gwtl+4reUg==", + "version": "4.43.5", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.43.5.tgz", + "integrity": "sha512-cgWD+GeuvJpTe1WQn40p02+BJ2j0j1YJ17GdkF2qKIQ23s2e3Zivq5yISXS3dcuV6oUJFN93jprdk+nk/sq99Q==", "requires": { - "@rollup/rollup-darwin-arm64": "4.34.9", - "@rollup/rollup-darwin-x64": "4.34.9", - "@rollup/rollup-linux-arm64-gnu": "4.34.9", - "@rollup/rollup-linux-arm64-musl": "4.34.9", - "@rollup/rollup-linux-x64-gnu": "4.34.9", - "@rollup/rollup-linux-x64-musl": "4.34.9", - "@rollup/rollup-win32-arm64-msvc": "4.34.9", - "@rollup/rollup-win32-x64-msvc": "4.34.9" + "@rollup/rollup-darwin-arm64": "4.44.0", + "@rollup/rollup-darwin-x64": "4.44.0", + "@rollup/rollup-linux-arm64-gnu": "4.44.0", + "@rollup/rollup-linux-arm64-musl": "4.44.0", + "@rollup/rollup-linux-x64-gnu": "4.44.0", + "@rollup/rollup-linux-x64-musl": "4.44.0", + "@rollup/rollup-win32-arm64-msvc": "4.44.0", + "@rollup/rollup-win32-x64-msvc": "4.44.0" } }, "@types/estree": { @@ -11289,4 +11289,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/angular/package-lock.json b/packages/angular/package-lock.json index d38caa2cbf6..e7604bae3ec 100644 --- a/packages/angular/package-lock.json +++ b/packages/angular/package-lock.json @@ -1398,12 +1398,12 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.8.8", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.8.tgz", - "integrity": "sha512-GGvYtEzLtn1gBUC1/vb4pvA3gQzYskTNVIsvdTVIgnwLtdt70rwTibrZRSqmkyHeqpjg/u3+9XsM2c0kzc/V3w==", + "version": "8.8.9", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.9.tgz", + "integrity": "sha512-eb0oztHFIxqltOEnTYmfvEzkYENnE5qcOUo+6j2ZrHbXICGwpxzNDg4no4A13FkJ1Rb6ahAjFp0UxO0sw6M76A==", "license": "MIT", "dependencies": { - "@stencil/core": "4.43.0", + "@stencil/core": "4.43.5", "ionicons": "^8.0.13", "tslib": "^2.1.0" }, @@ -1989,9 +1989,9 @@ } }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.9.tgz", - "integrity": "sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.44.0.tgz", + "integrity": "sha512-VGF3wy0Eq1gcEIkSCr8Ke03CWT+Pm2yveKLaDvq51pPpZza3JX/ClxXOCmTYYq3us5MvEuNRTaeyFThCKRQhOA==", "cpu": [ "arm64" ], @@ -2002,9 +2002,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.9.tgz", - "integrity": "sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.44.0.tgz", + "integrity": "sha512-fBkyrDhwquRvrTxSGH/qqt3/T0w5Rg0L7ZIDypvBPc1/gzjJle6acCpZ36blwuwcKD/u6oCE/sRWlUAcxLWQbQ==", "cpu": [ "x64" ], @@ -2015,9 +2015,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.9.tgz", - "integrity": "sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.44.0.tgz", + "integrity": "sha512-ZTR2mxBHb4tK4wGf9b8SYg0Y6KQPjGpR4UWwTFdnmjB4qRtoATZ5dWn3KsDwGa5Z2ZBOE7K52L36J9LueKBdOQ==", "cpu": [ "arm64" ], @@ -2028,9 +2028,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.9.tgz", - "integrity": "sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.44.0.tgz", + "integrity": "sha512-GFWfAhVhWGd4r6UxmnKRTBwP1qmModHtd5gkraeW2G490BpFOZkFtem8yuX2NyafIP/mGpRJgTJ2PwohQkUY/Q==", "cpu": [ "arm64" ], @@ -2041,9 +2041,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.9.tgz", - "integrity": "sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.44.0.tgz", + "integrity": "sha512-iUVJc3c0o8l9Sa/qlDL2Z9UP92UZZW1+EmQ4xfjTc1akr0iUFZNfxrXJ/R1T90h/ILm9iXEY6+iPrmYB3pXKjw==", "cpu": [ "x64" ], @@ -2054,9 +2054,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.9.tgz", - "integrity": "sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.44.0.tgz", + "integrity": "sha512-PQUobbhLTQT5yz/SPg116VJBgz+XOtXt8D1ck+sfJJhuEsMj2jSej5yTdp8CvWBSceu+WW+ibVL6dm0ptG5fcA==", "cpu": [ "x64" ], @@ -2067,9 +2067,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.9.tgz", - "integrity": "sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.44.0.tgz", + "integrity": "sha512-M0CpcHf8TWn+4oTxJfh7LQuTuaYeXGbk0eageVjQCKzYLsajWS/lFC94qlRqOlyC2KvRT90ZrfXULYmukeIy7w==", "cpu": [ "arm64" ], @@ -2080,9 +2080,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.9.tgz", - "integrity": "sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.44.0.tgz", + "integrity": "sha512-Q2Mgwt+D8hd5FIPUuPDsvPR7Bguza6yTkJxspDGkZj7tBRn2y4KSWYuIXpftFSjBra76TbKerCV7rgFPQrn+wQ==", "cpu": [ "x64" ], @@ -2311,9 +2311,9 @@ } }, "node_modules/@stencil/core": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.43.0.tgz", - "integrity": "sha512-6Uj2Z3lzLuufYAE7asZ6NLKgSwsB9uxl84Eh34PASnUjfj32GkrP4DtKK7fNeh1WFGGyffsTDka3gwtl+4reUg==", + "version": "4.43.5", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.43.5.tgz", + "integrity": "sha512-cgWD+GeuvJpTe1WQn40p02+BJ2j0j1YJ17GdkF2qKIQ23s2e3Zivq5yISXS3dcuV6oUJFN93jprdk+nk/sq99Q==", "license": "MIT", "bin": { "stencil": "bin/stencil" @@ -2323,14 +2323,14 @@ "npm": ">=7.10.0" }, "optionalDependencies": { - "@rollup/rollup-darwin-arm64": "4.34.9", - "@rollup/rollup-darwin-x64": "4.34.9", - "@rollup/rollup-linux-arm64-gnu": "4.34.9", - "@rollup/rollup-linux-arm64-musl": "4.34.9", - "@rollup/rollup-linux-x64-gnu": "4.34.9", - "@rollup/rollup-linux-x64-musl": "4.34.9", - "@rollup/rollup-win32-arm64-msvc": "4.34.9", - "@rollup/rollup-win32-x64-msvc": "4.34.9" + "@rollup/rollup-darwin-arm64": "4.44.0", + "@rollup/rollup-darwin-x64": "4.44.0", + "@rollup/rollup-linux-arm64-gnu": "4.44.0", + "@rollup/rollup-linux-arm64-musl": "4.44.0", + "@rollup/rollup-linux-x64-gnu": "4.44.0", + "@rollup/rollup-linux-x64-musl": "4.44.0", + "@rollup/rollup-win32-arm64-msvc": "4.44.0", + "@rollup/rollup-win32-x64-msvc": "4.44.0" } }, "node_modules/@tootallnate/once": { @@ -9095,4 +9095,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/docs/package-lock.json b/packages/docs/package-lock.json index b0b1099e2ed..d0173e268bb 100644 --- a/packages/docs/package-lock.json +++ b/packages/docs/package-lock.json @@ -10,4 +10,4 @@ "license": "MIT" } } -} \ No newline at end of file +} diff --git a/packages/react-router/package-lock.json b/packages/react-router/package-lock.json index 863a6b0a7c0..5763c9dc1b0 100644 --- a/packages/react-router/package-lock.json +++ b/packages/react-router/package-lock.json @@ -238,12 +238,12 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.8.8", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.8.tgz", - "integrity": "sha512-GGvYtEzLtn1gBUC1/vb4pvA3gQzYskTNVIsvdTVIgnwLtdt70rwTibrZRSqmkyHeqpjg/u3+9XsM2c0kzc/V3w==", + "version": "8.8.9", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.9.tgz", + "integrity": "sha512-eb0oztHFIxqltOEnTYmfvEzkYENnE5qcOUo+6j2ZrHbXICGwpxzNDg4no4A13FkJ1Rb6ahAjFp0UxO0sw6M76A==", "license": "MIT", "dependencies": { - "@stencil/core": "4.43.0", + "@stencil/core": "4.43.5", "ionicons": "^8.0.13", "tslib": "^2.1.0" }, @@ -418,12 +418,12 @@ } }, "node_modules/@ionic/react": { - "version": "8.8.8", - "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.8.8.tgz", - "integrity": "sha512-RP/AR5HX4PZq2xKuugS5FM1p0cF1XnRqPwU94O9OyO+DgjEJJ6o/q3Eo0JiwJD9M5sue69cDc82Uc/sZ4+p4bA==", + "version": "8.8.9", + "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.8.9.tgz", + "integrity": "sha512-aHRZTQUbwhnNjzoDU+mthhkNUZnPSOwz2/wpQ1mLHZpayYxjUX1xj/D26/AVsZyh4QKQc/OqzwEJYY/DsWpNFQ==", "license": "MIT", "dependencies": { - "@ionic/core": "8.8.8", + "@ionic/core": "8.8.9", "ionicons": "^8.0.13", "tslib": "*" }, @@ -672,9 +672,9 @@ ] }, "node_modules/@stencil/core": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.43.0.tgz", - "integrity": "sha512-6Uj2Z3lzLuufYAE7asZ6NLKgSwsB9uxl84Eh34PASnUjfj32GkrP4DtKK7fNeh1WFGGyffsTDka3gwtl+4reUg==", + "version": "4.43.5", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.43.5.tgz", + "integrity": "sha512-cgWD+GeuvJpTe1WQn40p02+BJ2j0j1YJ17GdkF2qKIQ23s2e3Zivq5yISXS3dcuV6oUJFN93jprdk+nk/sq99Q==", "license": "MIT", "bin": { "stencil": "bin/stencil" @@ -684,20 +684,20 @@ "npm": ">=7.10.0" }, "optionalDependencies": { - "@rollup/rollup-darwin-arm64": "4.34.9", - "@rollup/rollup-darwin-x64": "4.34.9", - "@rollup/rollup-linux-arm64-gnu": "4.34.9", - "@rollup/rollup-linux-arm64-musl": "4.34.9", - "@rollup/rollup-linux-x64-gnu": "4.34.9", - "@rollup/rollup-linux-x64-musl": "4.34.9", - "@rollup/rollup-win32-arm64-msvc": "4.34.9", - "@rollup/rollup-win32-x64-msvc": "4.34.9" + "@rollup/rollup-darwin-arm64": "4.44.0", + "@rollup/rollup-darwin-x64": "4.44.0", + "@rollup/rollup-linux-arm64-gnu": "4.44.0", + "@rollup/rollup-linux-arm64-musl": "4.44.0", + "@rollup/rollup-linux-x64-gnu": "4.44.0", + "@rollup/rollup-linux-x64-musl": "4.44.0", + "@rollup/rollup-win32-arm64-msvc": "4.44.0", + "@rollup/rollup-win32-x64-msvc": "4.44.0" } }, "node_modules/@stencil/core/node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.9.tgz", - "integrity": "sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.44.0.tgz", + "integrity": "sha512-VGF3wy0Eq1gcEIkSCr8Ke03CWT+Pm2yveKLaDvq51pPpZza3JX/ClxXOCmTYYq3us5MvEuNRTaeyFThCKRQhOA==", "cpu": [ "arm64" ], @@ -708,9 +708,9 @@ ] }, "node_modules/@stencil/core/node_modules/@rollup/rollup-darwin-x64": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.9.tgz", - "integrity": "sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.44.0.tgz", + "integrity": "sha512-fBkyrDhwquRvrTxSGH/qqt3/T0w5Rg0L7ZIDypvBPc1/gzjJle6acCpZ36blwuwcKD/u6oCE/sRWlUAcxLWQbQ==", "cpu": [ "x64" ], @@ -721,9 +721,9 @@ ] }, "node_modules/@stencil/core/node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.9.tgz", - "integrity": "sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.44.0.tgz", + "integrity": "sha512-ZTR2mxBHb4tK4wGf9b8SYg0Y6KQPjGpR4UWwTFdnmjB4qRtoATZ5dWn3KsDwGa5Z2ZBOE7K52L36J9LueKBdOQ==", "cpu": [ "arm64" ], @@ -734,9 +734,9 @@ ] }, "node_modules/@stencil/core/node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.9.tgz", - "integrity": "sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.44.0.tgz", + "integrity": "sha512-GFWfAhVhWGd4r6UxmnKRTBwP1qmModHtd5gkraeW2G490BpFOZkFtem8yuX2NyafIP/mGpRJgTJ2PwohQkUY/Q==", "cpu": [ "arm64" ], @@ -747,9 +747,9 @@ ] }, "node_modules/@stencil/core/node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.9.tgz", - "integrity": "sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.44.0.tgz", + "integrity": "sha512-iUVJc3c0o8l9Sa/qlDL2Z9UP92UZZW1+EmQ4xfjTc1akr0iUFZNfxrXJ/R1T90h/ILm9iXEY6+iPrmYB3pXKjw==", "cpu": [ "x64" ], @@ -760,9 +760,9 @@ ] }, "node_modules/@stencil/core/node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.9.tgz", - "integrity": "sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.44.0.tgz", + "integrity": "sha512-PQUobbhLTQT5yz/SPg116VJBgz+XOtXt8D1ck+sfJJhuEsMj2jSej5yTdp8CvWBSceu+WW+ibVL6dm0ptG5fcA==", "cpu": [ "x64" ], @@ -773,9 +773,9 @@ ] }, "node_modules/@stencil/core/node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.9.tgz", - "integrity": "sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.44.0.tgz", + "integrity": "sha512-M0CpcHf8TWn+4oTxJfh7LQuTuaYeXGbk0eageVjQCKzYLsajWS/lFC94qlRqOlyC2KvRT90ZrfXULYmukeIy7w==", "cpu": [ "arm64" ], @@ -786,9 +786,9 @@ ] }, "node_modules/@stencil/core/node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.9.tgz", - "integrity": "sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.44.0.tgz", + "integrity": "sha512-Q2Mgwt+D8hd5FIPUuPDsvPR7Bguza6yTkJxspDGkZj7tBRn2y4KSWYuIXpftFSjBra76TbKerCV7rgFPQrn+wQ==", "cpu": [ "x64" ], @@ -4178,11 +4178,11 @@ "dev": true }, "@ionic/core": { - "version": "8.8.8", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.8.tgz", - "integrity": "sha512-GGvYtEzLtn1gBUC1/vb4pvA3gQzYskTNVIsvdTVIgnwLtdt70rwTibrZRSqmkyHeqpjg/u3+9XsM2c0kzc/V3w==", + "version": "8.8.9", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.9.tgz", + "integrity": "sha512-eb0oztHFIxqltOEnTYmfvEzkYENnE5qcOUo+6j2ZrHbXICGwpxzNDg4no4A13FkJ1Rb6ahAjFp0UxO0sw6M76A==", "requires": { - "@stencil/core": "4.43.0", + "@stencil/core": "4.43.5", "ionicons": "^8.0.13", "tslib": "^2.1.0" } @@ -4284,11 +4284,11 @@ "requires": {} }, "@ionic/react": { - "version": "8.8.8", - "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.8.8.tgz", - "integrity": "sha512-RP/AR5HX4PZq2xKuugS5FM1p0cF1XnRqPwU94O9OyO+DgjEJJ6o/q3Eo0JiwJD9M5sue69cDc82Uc/sZ4+p4bA==", + "version": "8.8.9", + "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.8.9.tgz", + "integrity": "sha512-aHRZTQUbwhnNjzoDU+mthhkNUZnPSOwz2/wpQ1mLHZpayYxjUX1xj/D26/AVsZyh4QKQc/OqzwEJYY/DsWpNFQ==", "requires": { - "@ionic/core": "8.8.8", + "@ionic/core": "8.8.9", "ionicons": "^8.0.13", "tslib": "*" } @@ -4425,66 +4425,66 @@ "optional": true }, "@stencil/core": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.43.0.tgz", - "integrity": "sha512-6Uj2Z3lzLuufYAE7asZ6NLKgSwsB9uxl84Eh34PASnUjfj32GkrP4DtKK7fNeh1WFGGyffsTDka3gwtl+4reUg==", + "version": "4.43.5", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.43.5.tgz", + "integrity": "sha512-cgWD+GeuvJpTe1WQn40p02+BJ2j0j1YJ17GdkF2qKIQ23s2e3Zivq5yISXS3dcuV6oUJFN93jprdk+nk/sq99Q==", "requires": { - "@rollup/rollup-darwin-arm64": "4.34.9", - "@rollup/rollup-darwin-x64": "4.34.9", - "@rollup/rollup-linux-arm64-gnu": "4.34.9", - "@rollup/rollup-linux-arm64-musl": "4.34.9", - "@rollup/rollup-linux-x64-gnu": "4.34.9", - "@rollup/rollup-linux-x64-musl": "4.34.9", - "@rollup/rollup-win32-arm64-msvc": "4.34.9", - "@rollup/rollup-win32-x64-msvc": "4.34.9" + "@rollup/rollup-darwin-arm64": "4.44.0", + "@rollup/rollup-darwin-x64": "4.44.0", + "@rollup/rollup-linux-arm64-gnu": "4.44.0", + "@rollup/rollup-linux-arm64-musl": "4.44.0", + "@rollup/rollup-linux-x64-gnu": "4.44.0", + "@rollup/rollup-linux-x64-musl": "4.44.0", + "@rollup/rollup-win32-arm64-msvc": "4.44.0", + "@rollup/rollup-win32-x64-msvc": "4.44.0" }, "dependencies": { "@rollup/rollup-darwin-arm64": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.9.tgz", - "integrity": "sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.44.0.tgz", + "integrity": "sha512-VGF3wy0Eq1gcEIkSCr8Ke03CWT+Pm2yveKLaDvq51pPpZza3JX/ClxXOCmTYYq3us5MvEuNRTaeyFThCKRQhOA==", "optional": true }, "@rollup/rollup-darwin-x64": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.9.tgz", - "integrity": "sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.44.0.tgz", + "integrity": "sha512-fBkyrDhwquRvrTxSGH/qqt3/T0w5Rg0L7ZIDypvBPc1/gzjJle6acCpZ36blwuwcKD/u6oCE/sRWlUAcxLWQbQ==", "optional": true }, "@rollup/rollup-linux-arm64-gnu": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.9.tgz", - "integrity": "sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.44.0.tgz", + "integrity": "sha512-ZTR2mxBHb4tK4wGf9b8SYg0Y6KQPjGpR4UWwTFdnmjB4qRtoATZ5dWn3KsDwGa5Z2ZBOE7K52L36J9LueKBdOQ==", "optional": true }, "@rollup/rollup-linux-arm64-musl": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.9.tgz", - "integrity": "sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.44.0.tgz", + "integrity": "sha512-GFWfAhVhWGd4r6UxmnKRTBwP1qmModHtd5gkraeW2G490BpFOZkFtem8yuX2NyafIP/mGpRJgTJ2PwohQkUY/Q==", "optional": true }, "@rollup/rollup-linux-x64-gnu": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.9.tgz", - "integrity": "sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.44.0.tgz", + "integrity": "sha512-iUVJc3c0o8l9Sa/qlDL2Z9UP92UZZW1+EmQ4xfjTc1akr0iUFZNfxrXJ/R1T90h/ILm9iXEY6+iPrmYB3pXKjw==", "optional": true }, "@rollup/rollup-linux-x64-musl": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.9.tgz", - "integrity": "sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.44.0.tgz", + "integrity": "sha512-PQUobbhLTQT5yz/SPg116VJBgz+XOtXt8D1ck+sfJJhuEsMj2jSej5yTdp8CvWBSceu+WW+ibVL6dm0ptG5fcA==", "optional": true }, "@rollup/rollup-win32-arm64-msvc": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.9.tgz", - "integrity": "sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.44.0.tgz", + "integrity": "sha512-M0CpcHf8TWn+4oTxJfh7LQuTuaYeXGbk0eageVjQCKzYLsajWS/lFC94qlRqOlyC2KvRT90ZrfXULYmukeIy7w==", "optional": true }, "@rollup/rollup-win32-x64-msvc": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.9.tgz", - "integrity": "sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.44.0.tgz", + "integrity": "sha512-Q2Mgwt+D8hd5FIPUuPDsvPR7Bguza6yTkJxspDGkZj7tBRn2y4KSWYuIXpftFSjBra76TbKerCV7rgFPQrn+wQ==", "optional": true } } @@ -6847,4 +6847,4 @@ "dev": true } } -} \ No newline at end of file +} diff --git a/packages/react/package-lock.json b/packages/react/package-lock.json index 245bc063e40..2483b314d60 100644 --- a/packages/react/package-lock.json +++ b/packages/react/package-lock.json @@ -736,12 +736,12 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.8.8", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.8.tgz", - "integrity": "sha512-GGvYtEzLtn1gBUC1/vb4pvA3gQzYskTNVIsvdTVIgnwLtdt70rwTibrZRSqmkyHeqpjg/u3+9XsM2c0kzc/V3w==", + "version": "8.8.9", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.9.tgz", + "integrity": "sha512-eb0oztHFIxqltOEnTYmfvEzkYENnE5qcOUo+6j2ZrHbXICGwpxzNDg4no4A13FkJ1Rb6ahAjFp0UxO0sw6M76A==", "license": "MIT", "dependencies": { - "@stencil/core": "4.43.0", + "@stencil/core": "4.43.5", "ionicons": "^8.0.13", "tslib": "^2.1.0" }, @@ -1729,9 +1729,9 @@ } }, "node_modules/@stencil/core": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.43.0.tgz", - "integrity": "sha512-6Uj2Z3lzLuufYAE7asZ6NLKgSwsB9uxl84Eh34PASnUjfj32GkrP4DtKK7fNeh1WFGGyffsTDka3gwtl+4reUg==", + "version": "4.43.5", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.43.5.tgz", + "integrity": "sha512-cgWD+GeuvJpTe1WQn40p02+BJ2j0j1YJ17GdkF2qKIQ23s2e3Zivq5yISXS3dcuV6oUJFN93jprdk+nk/sq99Q==", "license": "MIT", "bin": { "stencil": "bin/stencil" @@ -1741,20 +1741,20 @@ "npm": ">=7.10.0" }, "optionalDependencies": { - "@rollup/rollup-darwin-arm64": "4.34.9", - "@rollup/rollup-darwin-x64": "4.34.9", - "@rollup/rollup-linux-arm64-gnu": "4.34.9", - "@rollup/rollup-linux-arm64-musl": "4.34.9", - "@rollup/rollup-linux-x64-gnu": "4.34.9", - "@rollup/rollup-linux-x64-musl": "4.34.9", - "@rollup/rollup-win32-arm64-msvc": "4.34.9", - "@rollup/rollup-win32-x64-msvc": "4.34.9" + "@rollup/rollup-darwin-arm64": "4.44.0", + "@rollup/rollup-darwin-x64": "4.44.0", + "@rollup/rollup-linux-arm64-gnu": "4.44.0", + "@rollup/rollup-linux-arm64-musl": "4.44.0", + "@rollup/rollup-linux-x64-gnu": "4.44.0", + "@rollup/rollup-linux-x64-musl": "4.44.0", + "@rollup/rollup-win32-arm64-msvc": "4.44.0", + "@rollup/rollup-win32-x64-msvc": "4.44.0" } }, "node_modules/@stencil/core/node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.9.tgz", - "integrity": "sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.44.0.tgz", + "integrity": "sha512-VGF3wy0Eq1gcEIkSCr8Ke03CWT+Pm2yveKLaDvq51pPpZza3JX/ClxXOCmTYYq3us5MvEuNRTaeyFThCKRQhOA==", "cpu": [ "arm64" ], @@ -1765,9 +1765,9 @@ ] }, "node_modules/@stencil/core/node_modules/@rollup/rollup-darwin-x64": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.9.tgz", - "integrity": "sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.44.0.tgz", + "integrity": "sha512-fBkyrDhwquRvrTxSGH/qqt3/T0w5Rg0L7ZIDypvBPc1/gzjJle6acCpZ36blwuwcKD/u6oCE/sRWlUAcxLWQbQ==", "cpu": [ "x64" ], @@ -1778,9 +1778,9 @@ ] }, "node_modules/@stencil/core/node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.9.tgz", - "integrity": "sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.44.0.tgz", + "integrity": "sha512-ZTR2mxBHb4tK4wGf9b8SYg0Y6KQPjGpR4UWwTFdnmjB4qRtoATZ5dWn3KsDwGa5Z2ZBOE7K52L36J9LueKBdOQ==", "cpu": [ "arm64" ], @@ -1791,9 +1791,9 @@ ] }, "node_modules/@stencil/core/node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.9.tgz", - "integrity": "sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.44.0.tgz", + "integrity": "sha512-GFWfAhVhWGd4r6UxmnKRTBwP1qmModHtd5gkraeW2G490BpFOZkFtem8yuX2NyafIP/mGpRJgTJ2PwohQkUY/Q==", "cpu": [ "arm64" ], @@ -1804,9 +1804,9 @@ ] }, "node_modules/@stencil/core/node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.9.tgz", - "integrity": "sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.44.0.tgz", + "integrity": "sha512-iUVJc3c0o8l9Sa/qlDL2Z9UP92UZZW1+EmQ4xfjTc1akr0iUFZNfxrXJ/R1T90h/ILm9iXEY6+iPrmYB3pXKjw==", "cpu": [ "x64" ], @@ -1817,9 +1817,9 @@ ] }, "node_modules/@stencil/core/node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.9.tgz", - "integrity": "sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.44.0.tgz", + "integrity": "sha512-PQUobbhLTQT5yz/SPg116VJBgz+XOtXt8D1ck+sfJJhuEsMj2jSej5yTdp8CvWBSceu+WW+ibVL6dm0ptG5fcA==", "cpu": [ "x64" ], @@ -1830,9 +1830,9 @@ ] }, "node_modules/@stencil/core/node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.9.tgz", - "integrity": "sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.44.0.tgz", + "integrity": "sha512-M0CpcHf8TWn+4oTxJfh7LQuTuaYeXGbk0eageVjQCKzYLsajWS/lFC94qlRqOlyC2KvRT90ZrfXULYmukeIy7w==", "cpu": [ "arm64" ], @@ -1843,9 +1843,9 @@ ] }, "node_modules/@stencil/core/node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.9.tgz", - "integrity": "sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.44.0.tgz", + "integrity": "sha512-Q2Mgwt+D8hd5FIPUuPDsvPR7Bguza6yTkJxspDGkZj7tBRn2y4KSWYuIXpftFSjBra76TbKerCV7rgFPQrn+wQ==", "cpu": [ "x64" ], @@ -11916,4 +11916,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/vue-router/package-lock.json b/packages/vue-router/package-lock.json index 4e30907aa88..8b24780647b 100644 --- a/packages/vue-router/package-lock.json +++ b/packages/vue-router/package-lock.json @@ -673,12 +673,12 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.8.8", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.8.tgz", - "integrity": "sha512-GGvYtEzLtn1gBUC1/vb4pvA3gQzYskTNVIsvdTVIgnwLtdt70rwTibrZRSqmkyHeqpjg/u3+9XsM2c0kzc/V3w==", + "version": "8.8.9", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.9.tgz", + "integrity": "sha512-eb0oztHFIxqltOEnTYmfvEzkYENnE5qcOUo+6j2ZrHbXICGwpxzNDg4no4A13FkJ1Rb6ahAjFp0UxO0sw6M76A==", "license": "MIT", "dependencies": { - "@stencil/core": "4.43.0", + "@stencil/core": "4.43.5", "ionicons": "^8.0.13", "tslib": "^2.1.0" }, @@ -868,12 +868,12 @@ } }, "node_modules/@ionic/vue": { - "version": "8.8.8", - "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.8.8.tgz", - "integrity": "sha512-7Yfv6HUPpKXqYy9qWtx/8Cntn7DzskooUCSFoIjj35sUXRyTwEUWFnQM0AqGkxH+qtO5PeCPwq9VzBdVzqIgDA==", + "version": "8.8.9", + "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.8.9.tgz", + "integrity": "sha512-SxZE7g9c8fIhD0HjzfJz6VXbck2KkhKegn9kgS3iW5GFk0T/1ecpY5t02d7MFtAnuO5laKrdOwhto/JrZrqukg==", "license": "MIT", "dependencies": { - "@ionic/core": "8.8.8", + "@ionic/core": "8.8.9", "@stencil/vue-output-target": "0.10.7", "ionicons": "^8.0.13" } @@ -1526,9 +1526,9 @@ } }, "node_modules/@stencil/core": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.43.0.tgz", - "integrity": "sha512-6Uj2Z3lzLuufYAE7asZ6NLKgSwsB9uxl84Eh34PASnUjfj32GkrP4DtKK7fNeh1WFGGyffsTDka3gwtl+4reUg==", + "version": "4.43.5", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.43.5.tgz", + "integrity": "sha512-cgWD+GeuvJpTe1WQn40p02+BJ2j0j1YJ17GdkF2qKIQ23s2e3Zivq5yISXS3dcuV6oUJFN93jprdk+nk/sq99Q==", "license": "MIT", "bin": { "stencil": "bin/stencil" @@ -1538,20 +1538,20 @@ "npm": ">=7.10.0" }, "optionalDependencies": { - "@rollup/rollup-darwin-arm64": "4.34.9", - "@rollup/rollup-darwin-x64": "4.34.9", - "@rollup/rollup-linux-arm64-gnu": "4.34.9", - "@rollup/rollup-linux-arm64-musl": "4.34.9", - "@rollup/rollup-linux-x64-gnu": "4.34.9", - "@rollup/rollup-linux-x64-musl": "4.34.9", - "@rollup/rollup-win32-arm64-msvc": "4.34.9", - "@rollup/rollup-win32-x64-msvc": "4.34.9" + "@rollup/rollup-darwin-arm64": "4.44.0", + "@rollup/rollup-darwin-x64": "4.44.0", + "@rollup/rollup-linux-arm64-gnu": "4.44.0", + "@rollup/rollup-linux-arm64-musl": "4.44.0", + "@rollup/rollup-linux-x64-gnu": "4.44.0", + "@rollup/rollup-linux-x64-musl": "4.44.0", + "@rollup/rollup-win32-arm64-msvc": "4.44.0", + "@rollup/rollup-win32-x64-msvc": "4.44.0" } }, "node_modules/@stencil/core/node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.9.tgz", - "integrity": "sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.44.0.tgz", + "integrity": "sha512-VGF3wy0Eq1gcEIkSCr8Ke03CWT+Pm2yveKLaDvq51pPpZza3JX/ClxXOCmTYYq3us5MvEuNRTaeyFThCKRQhOA==", "cpu": [ "arm64" ], @@ -1562,9 +1562,9 @@ ] }, "node_modules/@stencil/core/node_modules/@rollup/rollup-darwin-x64": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.9.tgz", - "integrity": "sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.44.0.tgz", + "integrity": "sha512-fBkyrDhwquRvrTxSGH/qqt3/T0w5Rg0L7ZIDypvBPc1/gzjJle6acCpZ36blwuwcKD/u6oCE/sRWlUAcxLWQbQ==", "cpu": [ "x64" ], @@ -1575,9 +1575,9 @@ ] }, "node_modules/@stencil/core/node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.9.tgz", - "integrity": "sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.44.0.tgz", + "integrity": "sha512-ZTR2mxBHb4tK4wGf9b8SYg0Y6KQPjGpR4UWwTFdnmjB4qRtoATZ5dWn3KsDwGa5Z2ZBOE7K52L36J9LueKBdOQ==", "cpu": [ "arm64" ], @@ -1588,9 +1588,9 @@ ] }, "node_modules/@stencil/core/node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.9.tgz", - "integrity": "sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.44.0.tgz", + "integrity": "sha512-GFWfAhVhWGd4r6UxmnKRTBwP1qmModHtd5gkraeW2G490BpFOZkFtem8yuX2NyafIP/mGpRJgTJ2PwohQkUY/Q==", "cpu": [ "arm64" ], @@ -1601,9 +1601,9 @@ ] }, "node_modules/@stencil/core/node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.9.tgz", - "integrity": "sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.44.0.tgz", + "integrity": "sha512-iUVJc3c0o8l9Sa/qlDL2Z9UP92UZZW1+EmQ4xfjTc1akr0iUFZNfxrXJ/R1T90h/ILm9iXEY6+iPrmYB3pXKjw==", "cpu": [ "x64" ], @@ -1614,9 +1614,9 @@ ] }, "node_modules/@stencil/core/node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.9.tgz", - "integrity": "sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.44.0.tgz", + "integrity": "sha512-PQUobbhLTQT5yz/SPg116VJBgz+XOtXt8D1ck+sfJJhuEsMj2jSej5yTdp8CvWBSceu+WW+ibVL6dm0ptG5fcA==", "cpu": [ "x64" ], @@ -1627,9 +1627,9 @@ ] }, "node_modules/@stencil/core/node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.9.tgz", - "integrity": "sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.44.0.tgz", + "integrity": "sha512-M0CpcHf8TWn+4oTxJfh7LQuTuaYeXGbk0eageVjQCKzYLsajWS/lFC94qlRqOlyC2KvRT90ZrfXULYmukeIy7w==", "cpu": [ "arm64" ], @@ -1640,9 +1640,9 @@ ] }, "node_modules/@stencil/core/node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.9.tgz", - "integrity": "sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.44.0.tgz", + "integrity": "sha512-Q2Mgwt+D8hd5FIPUuPDsvPR7Bguza6yTkJxspDGkZj7tBRn2y4KSWYuIXpftFSjBra76TbKerCV7rgFPQrn+wQ==", "cpu": [ "x64" ], @@ -8044,11 +8044,11 @@ "dev": true }, "@ionic/core": { - "version": "8.8.8", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.8.tgz", - "integrity": "sha512-GGvYtEzLtn1gBUC1/vb4pvA3gQzYskTNVIsvdTVIgnwLtdt70rwTibrZRSqmkyHeqpjg/u3+9XsM2c0kzc/V3w==", + "version": "8.8.9", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.9.tgz", + "integrity": "sha512-eb0oztHFIxqltOEnTYmfvEzkYENnE5qcOUo+6j2ZrHbXICGwpxzNDg4no4A13FkJ1Rb6ahAjFp0UxO0sw6M76A==", "requires": { - "@stencil/core": "4.43.0", + "@stencil/core": "4.43.5", "ionicons": "^8.0.13", "tslib": "^2.1.0" } @@ -8159,11 +8159,11 @@ "requires": {} }, "@ionic/vue": { - "version": "8.8.8", - "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.8.8.tgz", - "integrity": "sha512-7Yfv6HUPpKXqYy9qWtx/8Cntn7DzskooUCSFoIjj35sUXRyTwEUWFnQM0AqGkxH+qtO5PeCPwq9VzBdVzqIgDA==", + "version": "8.8.9", + "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.8.9.tgz", + "integrity": "sha512-SxZE7g9c8fIhD0HjzfJz6VXbck2KkhKegn9kgS3iW5GFk0T/1ecpY5t02d7MFtAnuO5laKrdOwhto/JrZrqukg==", "requires": { - "@ionic/core": "8.8.8", + "@ionic/core": "8.8.9", "@stencil/vue-output-target": "0.10.7", "ionicons": "^8.0.13" } @@ -8627,66 +8627,66 @@ } }, "@stencil/core": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.43.0.tgz", - "integrity": "sha512-6Uj2Z3lzLuufYAE7asZ6NLKgSwsB9uxl84Eh34PASnUjfj32GkrP4DtKK7fNeh1WFGGyffsTDka3gwtl+4reUg==", + "version": "4.43.5", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.43.5.tgz", + "integrity": "sha512-cgWD+GeuvJpTe1WQn40p02+BJ2j0j1YJ17GdkF2qKIQ23s2e3Zivq5yISXS3dcuV6oUJFN93jprdk+nk/sq99Q==", "requires": { - "@rollup/rollup-darwin-arm64": "4.34.9", - "@rollup/rollup-darwin-x64": "4.34.9", - "@rollup/rollup-linux-arm64-gnu": "4.34.9", - "@rollup/rollup-linux-arm64-musl": "4.34.9", - "@rollup/rollup-linux-x64-gnu": "4.34.9", - "@rollup/rollup-linux-x64-musl": "4.34.9", - "@rollup/rollup-win32-arm64-msvc": "4.34.9", - "@rollup/rollup-win32-x64-msvc": "4.34.9" + "@rollup/rollup-darwin-arm64": "4.44.0", + "@rollup/rollup-darwin-x64": "4.44.0", + "@rollup/rollup-linux-arm64-gnu": "4.44.0", + "@rollup/rollup-linux-arm64-musl": "4.44.0", + "@rollup/rollup-linux-x64-gnu": "4.44.0", + "@rollup/rollup-linux-x64-musl": "4.44.0", + "@rollup/rollup-win32-arm64-msvc": "4.44.0", + "@rollup/rollup-win32-x64-msvc": "4.44.0" }, "dependencies": { "@rollup/rollup-darwin-arm64": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.9.tgz", - "integrity": "sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.44.0.tgz", + "integrity": "sha512-VGF3wy0Eq1gcEIkSCr8Ke03CWT+Pm2yveKLaDvq51pPpZza3JX/ClxXOCmTYYq3us5MvEuNRTaeyFThCKRQhOA==", "optional": true }, "@rollup/rollup-darwin-x64": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.9.tgz", - "integrity": "sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.44.0.tgz", + "integrity": "sha512-fBkyrDhwquRvrTxSGH/qqt3/T0w5Rg0L7ZIDypvBPc1/gzjJle6acCpZ36blwuwcKD/u6oCE/sRWlUAcxLWQbQ==", "optional": true }, "@rollup/rollup-linux-arm64-gnu": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.9.tgz", - "integrity": "sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.44.0.tgz", + "integrity": "sha512-ZTR2mxBHb4tK4wGf9b8SYg0Y6KQPjGpR4UWwTFdnmjB4qRtoATZ5dWn3KsDwGa5Z2ZBOE7K52L36J9LueKBdOQ==", "optional": true }, "@rollup/rollup-linux-arm64-musl": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.9.tgz", - "integrity": "sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.44.0.tgz", + "integrity": "sha512-GFWfAhVhWGd4r6UxmnKRTBwP1qmModHtd5gkraeW2G490BpFOZkFtem8yuX2NyafIP/mGpRJgTJ2PwohQkUY/Q==", "optional": true }, "@rollup/rollup-linux-x64-gnu": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.9.tgz", - "integrity": "sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.44.0.tgz", + "integrity": "sha512-iUVJc3c0o8l9Sa/qlDL2Z9UP92UZZW1+EmQ4xfjTc1akr0iUFZNfxrXJ/R1T90h/ILm9iXEY6+iPrmYB3pXKjw==", "optional": true }, "@rollup/rollup-linux-x64-musl": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.9.tgz", - "integrity": "sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.44.0.tgz", + "integrity": "sha512-PQUobbhLTQT5yz/SPg116VJBgz+XOtXt8D1ck+sfJJhuEsMj2jSej5yTdp8CvWBSceu+WW+ibVL6dm0ptG5fcA==", "optional": true }, "@rollup/rollup-win32-arm64-msvc": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.9.tgz", - "integrity": "sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.44.0.tgz", + "integrity": "sha512-M0CpcHf8TWn+4oTxJfh7LQuTuaYeXGbk0eageVjQCKzYLsajWS/lFC94qlRqOlyC2KvRT90ZrfXULYmukeIy7w==", "optional": true }, "@rollup/rollup-win32-x64-msvc": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.9.tgz", - "integrity": "sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.44.0.tgz", + "integrity": "sha512-Q2Mgwt+D8hd5FIPUuPDsvPR7Bguza6yTkJxspDGkZj7tBRn2y4KSWYuIXpftFSjBra76TbKerCV7rgFPQrn+wQ==", "optional": true } } @@ -12994,4 +12994,4 @@ "dev": true } } -} \ No newline at end of file +} diff --git a/packages/vue/package-lock.json b/packages/vue/package-lock.json index 3ff3cd35454..383871b1a58 100644 --- a/packages/vue/package-lock.json +++ b/packages/vue/package-lock.json @@ -222,12 +222,12 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.8.8", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.8.tgz", - "integrity": "sha512-GGvYtEzLtn1gBUC1/vb4pvA3gQzYskTNVIsvdTVIgnwLtdt70rwTibrZRSqmkyHeqpjg/u3+9XsM2c0kzc/V3w==", + "version": "8.8.9", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.9.tgz", + "integrity": "sha512-eb0oztHFIxqltOEnTYmfvEzkYENnE5qcOUo+6j2ZrHbXICGwpxzNDg4no4A13FkJ1Rb6ahAjFp0UxO0sw6M76A==", "license": "MIT", "dependencies": { - "@stencil/core": "4.43.0", + "@stencil/core": "4.43.5", "ionicons": "^8.0.13", "tslib": "^2.1.0" }, @@ -677,9 +677,9 @@ ] }, "node_modules/@stencil/core": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.43.0.tgz", - "integrity": "sha512-6Uj2Z3lzLuufYAE7asZ6NLKgSwsB9uxl84Eh34PASnUjfj32GkrP4DtKK7fNeh1WFGGyffsTDka3gwtl+4reUg==", + "version": "4.43.5", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.43.5.tgz", + "integrity": "sha512-cgWD+GeuvJpTe1WQn40p02+BJ2j0j1YJ17GdkF2qKIQ23s2e3Zivq5yISXS3dcuV6oUJFN93jprdk+nk/sq99Q==", "license": "MIT", "bin": { "stencil": "bin/stencil" @@ -689,20 +689,20 @@ "npm": ">=7.10.0" }, "optionalDependencies": { - "@rollup/rollup-darwin-arm64": "4.34.9", - "@rollup/rollup-darwin-x64": "4.34.9", - "@rollup/rollup-linux-arm64-gnu": "4.34.9", - "@rollup/rollup-linux-arm64-musl": "4.34.9", - "@rollup/rollup-linux-x64-gnu": "4.34.9", - "@rollup/rollup-linux-x64-musl": "4.34.9", - "@rollup/rollup-win32-arm64-msvc": "4.34.9", - "@rollup/rollup-win32-x64-msvc": "4.34.9" + "@rollup/rollup-darwin-arm64": "4.44.0", + "@rollup/rollup-darwin-x64": "4.44.0", + "@rollup/rollup-linux-arm64-gnu": "4.44.0", + "@rollup/rollup-linux-arm64-musl": "4.44.0", + "@rollup/rollup-linux-x64-gnu": "4.44.0", + "@rollup/rollup-linux-x64-musl": "4.44.0", + "@rollup/rollup-win32-arm64-msvc": "4.44.0", + "@rollup/rollup-win32-x64-msvc": "4.44.0" } }, "node_modules/@stencil/core/node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.9.tgz", - "integrity": "sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.44.0.tgz", + "integrity": "sha512-VGF3wy0Eq1gcEIkSCr8Ke03CWT+Pm2yveKLaDvq51pPpZza3JX/ClxXOCmTYYq3us5MvEuNRTaeyFThCKRQhOA==", "cpu": [ "arm64" ], @@ -713,9 +713,9 @@ ] }, "node_modules/@stencil/core/node_modules/@rollup/rollup-darwin-x64": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.9.tgz", - "integrity": "sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.44.0.tgz", + "integrity": "sha512-fBkyrDhwquRvrTxSGH/qqt3/T0w5Rg0L7ZIDypvBPc1/gzjJle6acCpZ36blwuwcKD/u6oCE/sRWlUAcxLWQbQ==", "cpu": [ "x64" ], @@ -726,9 +726,9 @@ ] }, "node_modules/@stencil/core/node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.9.tgz", - "integrity": "sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.44.0.tgz", + "integrity": "sha512-ZTR2mxBHb4tK4wGf9b8SYg0Y6KQPjGpR4UWwTFdnmjB4qRtoATZ5dWn3KsDwGa5Z2ZBOE7K52L36J9LueKBdOQ==", "cpu": [ "arm64" ], @@ -739,9 +739,9 @@ ] }, "node_modules/@stencil/core/node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.9.tgz", - "integrity": "sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.44.0.tgz", + "integrity": "sha512-GFWfAhVhWGd4r6UxmnKRTBwP1qmModHtd5gkraeW2G490BpFOZkFtem8yuX2NyafIP/mGpRJgTJ2PwohQkUY/Q==", "cpu": [ "arm64" ], @@ -752,9 +752,9 @@ ] }, "node_modules/@stencil/core/node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.9.tgz", - "integrity": "sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.44.0.tgz", + "integrity": "sha512-iUVJc3c0o8l9Sa/qlDL2Z9UP92UZZW1+EmQ4xfjTc1akr0iUFZNfxrXJ/R1T90h/ILm9iXEY6+iPrmYB3pXKjw==", "cpu": [ "x64" ], @@ -765,9 +765,9 @@ ] }, "node_modules/@stencil/core/node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.9.tgz", - "integrity": "sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.44.0.tgz", + "integrity": "sha512-PQUobbhLTQT5yz/SPg116VJBgz+XOtXt8D1ck+sfJJhuEsMj2jSej5yTdp8CvWBSceu+WW+ibVL6dm0ptG5fcA==", "cpu": [ "x64" ], @@ -778,9 +778,9 @@ ] }, "node_modules/@stencil/core/node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.9.tgz", - "integrity": "sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.44.0.tgz", + "integrity": "sha512-M0CpcHf8TWn+4oTxJfh7LQuTuaYeXGbk0eageVjQCKzYLsajWS/lFC94qlRqOlyC2KvRT90ZrfXULYmukeIy7w==", "cpu": [ "arm64" ], @@ -791,9 +791,9 @@ ] }, "node_modules/@stencil/core/node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.9.tgz", - "integrity": "sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.44.0.tgz", + "integrity": "sha512-Q2Mgwt+D8hd5FIPUuPDsvPR7Bguza6yTkJxspDGkZj7tBRn2y4KSWYuIXpftFSjBra76TbKerCV7rgFPQrn+wQ==", "cpu": [ "x64" ], @@ -4022,4 +4022,4 @@ "dev": true } } -} \ No newline at end of file +} From a202959b3c1ac562f3d005a4798e46710b094ca2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 3 Jun 2026 14:08:10 -0400 Subject: [PATCH 06/13] chore(deps): update capacitor to v8.4.0 (#31188) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@capacitor/core](https://capacitorjs.com) ([source](https://redirect.github.com/ionic-team/capacitor)) | [`8.3.4` → `8.4.0`](https://renovatebot.com/diffs/npm/@capacitor%2fcore/8.3.4/8.4.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@capacitor%2fcore/8.4.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@capacitor%2fcore/8.3.4/8.4.0?slim=true) | --- ### Release Notes
ionic-team/capacitor (@​capacitor/core) ### [`v8.4.0`](https://redirect.github.com/ionic-team/capacitor/blob/HEAD/CHANGELOG.md#840-2026-06-02) [Compare Source](https://redirect.github.com/ionic-team/capacitor/compare/8.3.4...8.4.0) ##### Bug Fixes - **android:** show only the requested system bar ([#​8480](https://redirect.github.com/ionic-team/capacitor/issues/8480)) ([4c6c321](https://redirect.github.com/ionic-team/capacitor/commit/4c6c3219afb5223211e857457e46283c37eb9424)) - **cli:** revert live reload config on failure ([#​8485](https://redirect.github.com/ionic-team/capacitor/issues/8485)) ([1d031a4](https://redirect.github.com/ionic-team/capacitor/commit/1d031a4abec2c793079ba8897ad2e40c4cc6c7f9)) - **SystemBars:** make `safe-area-inset-x` available on API <= 34 ([#​8424](https://redirect.github.com/ionic-team/capacitor/issues/8424)) ([e456de0](https://redirect.github.com/ionic-team/capacitor/commit/e456de083e19644f484bec5a5359cb67960ac8bc)) - **SystemBars:** respect `insetsHandling` disable ([#​8481](https://redirect.github.com/ionic-team/capacitor/issues/8481)) ([d4ad7ff](https://redirect.github.com/ionic-team/capacitor/commit/d4ad7ffe39daf66e0cfc63af9028d5c05543bde7)) ##### Features - add method getDouble to plugin config ([#​7638](https://redirect.github.com/ionic-team/capacitor/issues/7638)) ([93c72de](https://redirect.github.com/ionic-team/capacitor/commit/93c72de40a2ec4c78b33659250cb08340083088e)) - **cli:** add experimental packageOptions ([#​8471](https://redirect.github.com/ionic-team/capacitor/issues/8471)) ([258867b](https://redirect.github.com/ionic-team/capacitor/commit/258867b7bf37b1837b99b02ec9638e5a6df08d97)) - **cli:** capture ios\_package\_manager in telemetry ([#​8482](https://redirect.github.com/ionic-team/capacitor/issues/8482)) ([b4b297a](https://redirect.github.com/ionic-team/capacitor/commit/b4b297a52f8732659662d5e5aaeff81c0f7d9835)) #### [8.3.4](https://redirect.github.com/ionic-team/capacitor/compare/8.3.3...8.3.4) (2026-05-12) **Note:** Version bump only for package capacitor #### [8.3.3](https://redirect.github.com/ionic-team/capacitor/compare/8.3.2...8.3.3) (2026-05-08) ##### Bug Fixes - **cli:** copy plugin files in CocoaPods projects ([#​8467](https://redirect.github.com/ionic-team/capacitor/issues/8467)) ([b2d7719](https://redirect.github.com/ionic-team/capacitor/commit/b2d771926a180e60deea31992d7d4abcd5ca3bc7)) #### [8.3.2](https://redirect.github.com/ionic-team/capacitor/compare/8.3.1...8.3.2) (2026-05-07) ##### Bug Fixes - **cli:** add cSettings support for compiler flags in generated Package.swift ([#​8448](https://redirect.github.com/ionic-team/capacitor/issues/8448)) ([0bd0676](https://redirect.github.com/ionic-team/capacitor/commit/0bd0676315c5fd77e50312dd7b5bf4990dcbd7d0)) - **cli:** add system framework and weak framework support in SPM Package.swift ([#​8447](https://redirect.github.com/ionic-team/capacitor/issues/8447)) ([3232f0f](https://redirect.github.com/ionic-team/capacitor/commit/3232f0fe1d9811b0b5c500e3dc05cb8a250177f8)) - **cli:** correct Capacitor plugin SPM compat check ([#​8440](https://redirect.github.com/ionic-team/capacitor/issues/8440)) ([e5ccc45](https://redirect.github.com/ionic-team/capacitor/commit/e5ccc451dda27d56bca824ed644bd20fe4d988cb)) - **cli:** generate binaryTarget entries for custom xcframeworks in Package.swift ([#​8445](https://redirect.github.com/ionic-team/capacitor/issues/8445)) ([1f7e33f](https://redirect.github.com/ionic-team/capacitor/commit/1f7e33fca43d183332ec19d22b0d75ef81d8cc6d)) - **cli:** generate resource entries in Package.swift ([#​8455](https://redirect.github.com/ionic-team/capacitor/issues/8455)) ([790bd27](https://redirect.github.com/ionic-team/capacitor/commit/790bd27123497111984227010c3162cec94a108e)) - **cli:** handle Cordova plugins without iOS source files ([#​8443](https://redirect.github.com/ionic-team/capacitor/issues/8443)) ([0da130e](https://redirect.github.com/ionic-team/capacitor/commit/0da130eb7a861bee4e2c35bc0aac53ba9c983fc3)) - **cli:** link plugin dependencies in Package.swift ([#​8457](https://redirect.github.com/ionic-team/capacitor/issues/8457)) ([b3c769e](https://redirect.github.com/ionic-team/capacitor/commit/b3c769e856c826b1174518877cf86ac7ce73bf09)) - **ios:** support Cordova plugins with Package.swift ([#​8438](https://redirect.github.com/ionic-team/capacitor/issues/8438)) ([139943b](https://redirect.github.com/ionic-team/capacitor/commit/139943b0c05fddb2d1ce2d6f468800fddf17b4cf)) - **SystemBars:** avoid extra view padding on API <= 34 ([#​8439](https://redirect.github.com/ionic-team/capacitor/issues/8439)) ([5b135a7](https://redirect.github.com/ionic-team/capacitor/commit/5b135a70217be560e7176c8d5b514cc92ed3e4e4)) #### [8.3.1](https://redirect.github.com/ionic-team/capacitor/compare/8.3.0...8.3.1) (2026-04-16) ##### Bug Fixes - **android:** handle null versionName in isNewBinary() ([#​8397](https://redirect.github.com/ionic-team/capacitor/issues/8397)) ([aa1a660](https://redirect.github.com/ionic-team/capacitor/commit/aa1a660f364f9b5f5a1e350e279c8864b04dd13b)) - boundary value extraction for form-data requests ([#​7518](https://redirect.github.com/ionic-team/capacitor/issues/7518)) ([64ab854](https://redirect.github.com/ionic-team/capacitor/commit/64ab854c12330804c24275d88d3a9f7c8e52a73d)) - **cli:** check CAPACITOR\_COCOAPODS\_PATH in determinePackageManager ([#​8407](https://redirect.github.com/ionic-team/capacitor/issues/8407)) ([acb64ab](https://redirect.github.com/ionic-team/capacitor/commit/acb64ab92a37ff53701cde453558e272e2e11eb6)) - **system-bars:** use separate current styles ([#​8409](https://redirect.github.com/ionic-team/capacitor/issues/8409)) ([3d1f8d1](https://redirect.github.com/ionic-team/capacitor/commit/3d1f8d1b61480187375f5cd4de7ba999db007542))
--- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "every weekday before 11am" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Never, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/ionic-team/ionic-framework). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- core/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/package-lock.json b/core/package-lock.json index 41aa2358daa..edbd6a1a776 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -629,9 +629,9 @@ "license": "MIT" }, "node_modules/@capacitor/core": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-8.3.4.tgz", - "integrity": "sha512-CqRQCkb6HXxcx/N7s+hHTN6ef2CmamFiRMITwm4qB840ph56mS42bzUgn6tKCP+RZjdDweiRHj9ytDDeN6jFag==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-8.4.0.tgz", + "integrity": "sha512-LrS1xPIrqLtJABBIPDGXxxKmI9OyesrzWw8DiHbxhSC9JoiLUleUAJlX1a0LWIVLRbuY4Szgf9huFeRqYH2SAQ==", "dev": true, "license": "MIT", "dependencies": { From f5f9673e50020f422896138b0872282c41e4cc1f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 3 Jun 2026 18:08:58 +0000 Subject: [PATCH 07/13] chore(deps): update pozil/auto-assign-issue action to v4 (#31190) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [pozil/auto-assign-issue](https://redirect.github.com/pozil/auto-assign-issue) | action | major | `v3.0.0` → `v4.0.0` | --- ### Release Notes
pozil/auto-assign-issue (pozil/auto-assign-issue) ### [`v4.0.0`](https://redirect.github.com/pozil/auto-assign-issue/compare/v3.0.0...v4.0.0) [Compare Source](https://redirect.github.com/pozil/auto-assign-issue/compare/v3.0.0...v4.0.0)
--- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "every weekday before 11am" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Never, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/ionic-team/ionic-framework). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/assign-issues.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/assign-issues.yml b/.github/workflows/assign-issues.yml index d79a8c17c2c..2a3266eb751 100644 --- a/.github/workflows/assign-issues.yml +++ b/.github/workflows/assign-issues.yml @@ -11,7 +11,7 @@ jobs: issues: write steps: - name: 'Auto-assign issue' - uses: pozil/auto-assign-issue@70adb98ca8b3941524e9ecde48e89067c4f96736 # v3.0.0 + uses: pozil/auto-assign-issue@07fe6dc0e9771842b428f5739098d6140734e226 # v4.0.0 with: assignees: brandyscarney, thetaPC, ShaneK numOfAssignee: 1 From 3da72cd0ed6b35622ba4274340d456e8a9850b43 Mon Sep 17 00:00:00 2001 From: Maria Hutt Date: Wed, 3 Jun 2026 11:14:20 -0700 Subject: [PATCH 08/13] chore(renovate): add playwright-core to group (#31135) Issue number: N/A --------- ## What is the current behavior? The Renovate `playwright` npm rule only matched `@playwright/test` and `@axe-core/playwright`. As a result, `playwright-core` was not included in the `playwright` group and instead fell into Renovate's default `playwright-monorepo` grouping, opening a separate `renovate/playwright-monorepo` PR alongside the main `renovate/playwright` PR for every Playwright release. ## What is the new behavior? - Added `playwright-core` to the npm rule's `matchPackageNames` so it groups with the other Playwright packages. - Switched the npm rule from `matchPackagePatterns` to `matchPackageNames` since the entries are exact package names, not patterns; the explicit list is clearer for a small, stable set of dependencies. - All Playwright-related updates (`@playwright/test`, `@axe-core/playwright`, `playwright-core`, and the `mcr.microsoft.com/playwright` Docker image) will now land in a single `renovate/playwright` PR. ## Does this introduce a breaking change? - [ ] Yes - [x] No ## Other information N/A --- renovate.json5 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/renovate.json5 b/renovate.json5 index 8435d337f6c..a25638f407e 100644 --- a/renovate.json5 +++ b/renovate.json5 @@ -38,7 +38,7 @@ }, { matchDatasources: ["npm"], - matchPackagePatterns: ["@playwright/test", "@axe-core/playwright"], + matchPackageNames: ["@playwright/test", "@axe-core/playwright", "playwright-core"], groupName: "playwright", matchFileNames: [ "core/package.json" From 02588a125b24ac1c401cdf7dda9e98ab360f196c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 4 Jun 2026 08:04:27 -0700 Subject: [PATCH 09/13] chore(deps): update actions/checkout action to v6.0.3 (#31187) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [actions/checkout](https://redirect.github.com/actions/checkout) | action | patch | `v6.0.2` → `v6.0.3` | --- ### Release Notes
actions/checkout (actions/checkout) ### [`v6.0.3`](https://redirect.github.com/actions/checkout/blob/HEAD/CHANGELOG.md#v603) [Compare Source](https://redirect.github.com/actions/checkout/compare/v6.0.2...v6.0.3) - Fix checkout init for SHA-256 repositories by [@​yaananth](https://redirect.github.com/yaananth) in [#​2439](https://redirect.github.com/actions/checkout/pull/2439) - fix: expand merge commit SHA regex and add SHA-256 test cases by [@​yaananth](https://redirect.github.com/yaananth) in [#​2414](https://redirect.github.com/actions/checkout/pull/2414)
--- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "every weekday before 11am" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Never, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/ionic-team/ionic-framework). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .../build-core-stencil-prerelease/action.yml | 2 +- .../workflows/actions/build-core/action.yml | 2 +- .github/workflows/build.yml | 30 +++++++++---------- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/dev-build.yml | 2 +- .github/workflows/nightly.yml | 2 +- .github/workflows/release-ionic.yml | 16 +++++----- .github/workflows/release.yml | 4 +-- .github/workflows/stencil-nightly.yml | 30 +++++++++---------- .github/workflows/update-screenshots.yml | 6 ++-- 10 files changed, 48 insertions(+), 48 deletions(-) diff --git a/.github/workflows/actions/build-core-stencil-prerelease/action.yml b/.github/workflows/actions/build-core-stencil-prerelease/action.yml index e23d9119831..4a684d5c570 100644 --- a/.github/workflows/actions/build-core-stencil-prerelease/action.yml +++ b/.github/workflows/actions/build-core-stencil-prerelease/action.yml @@ -8,7 +8,7 @@ inputs: runs: using: 'composite' steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version: 24.x diff --git a/.github/workflows/actions/build-core/action.yml b/.github/workflows/actions/build-core/action.yml index 7524c8a97b3..376d3aedaed 100644 --- a/.github/workflows/actions/build-core/action.yml +++ b/.github/workflows/actions/build-core/action.yml @@ -8,7 +8,7 @@ inputs: runs: using: 'composite' steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version: 24.x diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7772b2c432f..97abe2fedf8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -22,7 +22,7 @@ jobs: build-core: runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: ./.github/workflows/actions/build-core with: ionicons-version: ${{ inputs.ionicons_npm_release_tag }} @@ -31,21 +31,21 @@ jobs: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: ./.github/workflows/actions/test-core-clean-build test-core-lint: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: ./.github/workflows/actions/test-core-lint test-core-spec: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: ./.github/workflows/actions/test-core-spec test-core-screenshot: @@ -62,7 +62,7 @@ jobs: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: ./.github/workflows/actions/test-core-screenshot with: shard: ${{ matrix.shard }} @@ -90,14 +90,14 @@ jobs: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: ./.github/workflows/actions/build-vue build-vue-router: needs: [build-vue] runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: ./.github/workflows/actions/build-vue-router test-vue-e2e: @@ -108,7 +108,7 @@ jobs: needs: [build-vue, build-vue-router] runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: ./.github/workflows/actions/test-vue-e2e with: app: ${{ matrix.apps }} @@ -126,14 +126,14 @@ jobs: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: ./.github/workflows/actions/build-angular build-angular-server: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: ./.github/workflows/actions/build-angular-server test-angular-e2e: @@ -144,7 +144,7 @@ jobs: needs: [build-angular, build-angular-server] runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: ./.github/workflows/actions/test-angular-e2e with: app: ${{ matrix.apps }} @@ -162,14 +162,14 @@ jobs: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: ./.github/workflows/actions/build-react build-react-router: needs: [build-react] runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: ./.github/workflows/actions/build-react-router test-react-router-e2e: @@ -180,7 +180,7 @@ jobs: needs: [build-react, build-react-router] runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: ./.github/workflows/actions/test-react-router-e2e with: app: ${{ matrix.apps }} @@ -202,7 +202,7 @@ jobs: needs: [build-react, build-react-router] runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: ./.github/workflows/actions/test-react-e2e with: app: ${{ matrix.apps }} diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 5e6715d02b1..6d0aea91073 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -14,7 +14,7 @@ jobs: permissions: security-events: write steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: github/codeql-action/init@v4 with: languages: javascript diff --git a/.github/workflows/dev-build.yml b/.github/workflows/dev-build.yml index 51806128a8e..fec61782048 100644 --- a/.github/workflows/dev-build.yml +++ b/.github/workflows/dev-build.yml @@ -13,7 +13,7 @@ jobs: outputs: dev-hash: ${{ steps.create-dev-hash.outputs.DEV_HASH }} steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 # A 1 is required before the timestamp # as lerna will fail when there is a leading 0 # See https://github.com/lerna/lerna/issues/2840 diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 2f64d9f9bd5..ac48da4ab94 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -13,7 +13,7 @@ jobs: outputs: nightly-hash: ${{ steps.create-nightly-hash.outputs.NIGHTLY_HASH }} steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 # A 1 is required before the timestamp # as lerna will fail when there is a leading 0 # See https://github.com/lerna/lerna/issues/2840 diff --git a/.github/workflows/release-ionic.yml b/.github/workflows/release-ionic.yml index 70f1fb1956b..f430d6573f8 100644 --- a/.github/workflows/release-ionic.yml +++ b/.github/workflows/release-ionic.yml @@ -23,7 +23,7 @@ jobs: release-core: runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: ./.github/actions/publish-npm with: scope: '@ionic/core' @@ -48,7 +48,7 @@ jobs: needs: [release-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Restore @ionic/docs built cache uses: ./.github/workflows/actions/download-archive with: @@ -67,7 +67,7 @@ jobs: needs: [release-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Restore @ionic/core built cache uses: ./.github/workflows/actions/download-archive with: @@ -93,7 +93,7 @@ jobs: needs: [release-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Restore @ionic/core built cache uses: ./.github/workflows/actions/download-archive with: @@ -118,7 +118,7 @@ jobs: needs: [release-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Restore @ionic/core built cache uses: ./.github/workflows/actions/download-archive with: @@ -143,7 +143,7 @@ jobs: needs: [release-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Restore @ionic/core built cache uses: ./.github/workflows/actions/download-archive with: @@ -163,7 +163,7 @@ jobs: needs: [release-react] runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Restore @ionic/core built cache uses: ./.github/workflows/actions/download-archive with: @@ -188,7 +188,7 @@ jobs: needs: [release-vue] runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Restore @ionic/core built cache uses: ./.github/workflows/actions/download-archive with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index df4429a806b..a28539f6f73 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -58,7 +58,7 @@ jobs: contents: write id-token: write steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: token: ${{ secrets.IONITRON_TOKEN }} fetch-depth: 0 @@ -89,7 +89,7 @@ jobs: contents: write id-token: write steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 # Pull the latest version of the reference # branch instead of the revision that triggered # the workflow otherwise we won't get the commit diff --git a/.github/workflows/stencil-nightly.yml b/.github/workflows/stencil-nightly.yml index 3e8d714ccc1..764a6d1c823 100644 --- a/.github/workflows/stencil-nightly.yml +++ b/.github/workflows/stencil-nightly.yml @@ -26,7 +26,7 @@ jobs: build-core-with-stencil-nightly: runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: ./.github/workflows/actions/build-core-stencil-prerelease with: stencil-version: ${{ inputs.npm_release_tag || 'nightly' }} @@ -35,21 +35,21 @@ jobs: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: ./.github/workflows/actions/test-core-clean-build test-core-lint: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: ./.github/workflows/actions/test-core-lint test-core-spec: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: ./.github/workflows/actions/test-core-spec with: stencil-version: ${{ inputs.npm_release_tag || 'nightly' }} @@ -72,7 +72,7 @@ jobs: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: ./.github/workflows/actions/test-core-screenshot with: shard: ${{ matrix.shard }} @@ -100,14 +100,14 @@ jobs: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: ./.github/workflows/actions/build-vue build-vue-router: needs: [build-vue] runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: ./.github/workflows/actions/build-vue-router test-vue-e2e: @@ -118,7 +118,7 @@ jobs: needs: [build-vue, build-vue-router] runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: ./.github/workflows/actions/test-vue-e2e with: app: ${{ matrix.apps }} @@ -136,14 +136,14 @@ jobs: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: ./.github/workflows/actions/build-angular build-angular-server: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: ./.github/workflows/actions/build-angular-server test-angular-e2e: @@ -154,7 +154,7 @@ jobs: needs: [build-angular, build-angular-server] runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: ./.github/workflows/actions/test-angular-e2e with: app: ${{ matrix.apps }} @@ -172,14 +172,14 @@ jobs: needs: [build-core-with-stencil-nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: ./.github/workflows/actions/build-react build-react-router: needs: [build-react] runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: ./.github/workflows/actions/build-react-router test-react-router-e2e: @@ -190,7 +190,7 @@ jobs: needs: [build-react, build-react-router] runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: ./.github/workflows/actions/test-react-router-e2e with: app: ${{ matrix.apps }} @@ -212,7 +212,7 @@ jobs: needs: [build-react, build-react-router] runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: ./.github/workflows/actions/test-react-e2e with: app: ${{ matrix.apps }} diff --git a/.github/workflows/update-screenshots.yml b/.github/workflows/update-screenshots.yml index 6efecbd8f95..aeab13d9fb0 100644 --- a/.github/workflows/update-screenshots.yml +++ b/.github/workflows/update-screenshots.yml @@ -26,7 +26,7 @@ jobs: build-core: runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: ./.github/workflows/actions/build-core test-core-screenshot: @@ -47,7 +47,7 @@ jobs: needs: [build-core] runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: ./.github/workflows/actions/test-core-screenshot with: shard: ${{ matrix.shard }} @@ -59,7 +59,7 @@ jobs: runs-on: ubuntu-latest needs: [test-core-screenshot] steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 # Normally, we could just push with the # default GITHUB_TOKEN, but that will # not cause the build workflow From b8e8a415403d00b2f973d05a4d956afc3fdf8f75 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 9 Jun 2026 08:59:18 -0700 Subject: [PATCH 10/13] chore(deps): update playwright (#31136) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | Type | Update | |---|---|---|---|---|---| | [@playwright/test](https://playwright.dev) ([source](https://redirect.github.com/microsoft/playwright)) | [`^1.59.1` → `^1.60.0`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.59.1/1.60.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.60.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.59.1/1.60.0?slim=true) | devDependencies | minor | | [playwright-core](https://playwright.dev) ([source](https://redirect.github.com/microsoft/playwright)) | [`1.59.1` → `1.60.0`](https://renovatebot.com/diffs/npm/playwright-core/1.59.1/1.60.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/playwright-core/1.60.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/playwright-core/1.59.1/1.60.0?slim=true) | devDependencies | minor | | mcr.microsoft.com/playwright | `v1.59.1` → `v1.60.0` | ![age](https://developer.mend.io/api/mc/badges/age/docker/mcr.microsoft.com%2fplaywright/v1.60.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/docker/mcr.microsoft.com%2fplaywright/v1.59.1/v1.60.0?slim=true) | final | minor | --- ### Release Notes
microsoft/playwright (@​playwright/test) ### [`v1.60.0`](https://redirect.github.com/microsoft/playwright/releases/tag/v1.60.0) [Compare Source](https://redirect.github.com/microsoft/playwright/compare/v1.59.1...v1.60.0) #### 🌐 HAR recording on Tracing [tracing.startHar()](https://playwright.dev/docs/api/class-tracing#tracing-start-har) / [tracing.stopHar()](https://playwright.dev/docs/api/class-tracing#tracing-stop-har) expose HAR recording as a first-class tracing API, with the same `content`, `mode` and `urlFilter` options as `recordHar`. The returned [Disposable](https://playwright.dev/docs/api/class-disposable) makes it easy to scope a recording with `await using`: ```js await using har = await context.tracing.startHar('trace.har'); const page = await context.newPage(); await page.goto('https://playwright.dev'); // HAR is finalized when `har` goes out of scope. ``` #### 🪝 Drop API New [locator.drop()](https://playwright.dev/docs/api/class-locator#locator-drop) simulates an external drag-and-drop of files or clipboard-like data onto an element. Playwright dispatches `dragenter`, `dragover`, and `drop` with a synthetic \[DataTransfer] in the page context — works cross-browser and is great for testing upload zones: ```js await page.locator('#dropzone').drop({ files: { name: 'note.txt', mimeType: 'text/plain', buffer: Buffer.from('hello') }, }); await page.locator('#dropzone').drop({ data: { 'text/plain': 'hello world', 'text/uri-list': 'https://example.com', }, }); ``` #### 🎯 Aria snapshots - [expect(page).toMatchAriaSnapshot()](https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-match-aria-snapshot) now works on a [Page](https://playwright.dev/docs/api/class-page), in addition to a [Locator](https://playwright.dev/docs/api/class-locator) — equivalent to asserting against `page.locator('body')`. - New `boxes` option on [locator.ariaSnapshot()](https://playwright.dev/docs/api/class-locator#locator-aria-snapshot) / [page.ariaSnapshot()](https://playwright.dev/docs/api/class-page#page-aria-snapshot) appends each element's bounding box as `[box=x,y,width,height]`, useful for AI consumption. #### 🛑 test.abort() New [test.abort()](https://playwright.dev/docs/api/class-test#test-abort) aborts the currently running test from a fixture, hook, or route handler with an optional message. Use it when you have detected an unrecoverable misuse and want to fail the test right away: ```js test('does not publish to the shared page', async ({ page }) => { await page.route('**/publish', route => { test.abort('Tests must not publish to the shared page. Use the `clone` option.'); return route.abort(); }); // ... }); ``` #### New APIs ##### Browser, Context and Page - Event [browser.on('context')](https://playwright.dev/docs/api/class-browser#browser-event-context) — fired when a new context is created on the browser. - [BrowserContext](https://playwright.dev/docs/api/class-browsercontext) now mirrors lifecycle events from its pages: [browserContext.on('download')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-download), [browserContext.on('frameattached')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-frame-attached), [browserContext.on('framedetached')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-frame-detached), [browserContext.on('framenavigated')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-frame-navigated), [browserContext.on('pageclose')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-page-close), [browserContext.on('pageload')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-page-load). ##### Locators and Assertions - New option `description` in [page.getByRole()](https://playwright.dev/docs/api/class-page#page-get-by-role) / [locator.getByRole()](https://playwright.dev/docs/api/class-locator#locator-get-by-role) / [frame.getByRole()](https://playwright.dev/docs/api/class-frame#frame-get-by-role) / [frameLocator.getByRole()](https://playwright.dev/docs/api/class-framelocator#frame-locator-get-by-role) for matching the [accessible description](https://www.w3.org/TR/wai-aria-1.2/#dfn-accessible-description). - New option `pseudo` in [expect(locator).toHaveCSS()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-css) reads computed styles from `::before` or `::after`. - New option `style` in [locator.highlight()](https://playwright.dev/docs/api/class-locator#locator-highlight) applies extra inline CSS to the highlight overlay, plus new [page.hideHighlight()](https://playwright.dev/docs/api/class-page#page-hide-highlight) to clear all highlights. ##### Network - [webSocketRoute.protocols()](https://playwright.dev/docs/api/class-websocketroute#web-socket-route-protocols) returns the WebSocket subprotocols requested by the page. - New option `noDefaults` in [browserType.connectOverCDP()](https://playwright.dev/docs/api/class-browsertype#browser-type-connect-over-cdp) disables Playwright's default overrides on the default context (download behavior, focus emulation, media emulation), so attaching to a user's daily-driver browser doesn't disturb its state. ##### Errors and Reporting - New [webError.location()](https://playwright.dev/docs/api/class-weberror#web-error-location) mirrors [consoleMessage.location()](https://playwright.dev/docs/api/class-consolemessage#console-message-location). - [consoleMessage.location()](https://playwright.dev/docs/api/class-consolemessage#console-message-location) now exposes `line` / `column` properties (`lineNumber` / `columnNumber` are deprecated). - New [testInfoError.errorContext](https://playwright.dev/docs/api/class-testinfoerror#test-info-error-error-context) surfaces additional diagnostic context, such as the aria snapshot of the receiver at the time of an `expect(...)` matcher failure. - [reporter.onError()](https://playwright.dev/docs/api/class-reporter#reporter-on-error) now receives a `workerInfo` argument with details about the worker for fixture teardown errors. ##### Test runner - New `{testFileBaseName}` token in [testProject.snapshotPathTemplate](https://playwright.dev/docs/api/class-testproject#test-project-snapshot-path-template) — file name without extension. - Test runner now errors when a config tries to override a non-option fixture, and rejects `workers: 0` or negative values. #### 🛠️ Other improvements - HTML reporter: - `npx playwright show-report` accepts `.zip` files directly — no need to unzip first. - Steps that contain attachments inside nested children show an indicator on the parent step. - The `repeatEachIndex` is shown in the test header when non-zero. - Trace Viewer adds a pretty-print toggle for JSON / form request and response bodies in the network details panel. #### Breaking Changes ⚠️ - Removed long-deprecated APIs: - `Locator.ariaRef()` — use the standard [locator.ariaSnapshot()](https://playwright.dev/docs/api/class-locator#locator-aria-snapshot) pipeline. - `handle` option on `BrowserContext.exposeBinding` and `Page.exposeBinding`. - `logger` option on `BrowserType.connect` and `BrowserType.connectOverCDP` — use [tracing](https://playwright.dev/docs/trace-viewer) instead. - Context options `videosPath` / `videoSize` — use `recordVideo` instead. #### Browser Versions - Chromium 148.0.7778.96 - Mozilla Firefox 150.0.2 - WebKit 26.4 This version was also tested against the following stable channels: - Google Chrome 147 - Microsoft Edge 147
microsoft/playwright (playwright-core) ### [`v1.60.0`](https://redirect.github.com/microsoft/playwright/releases/tag/v1.60.0) [Compare Source](https://redirect.github.com/microsoft/playwright/compare/v1.59.1...v1.60.0) #### 🌐 HAR recording on Tracing [tracing.startHar()](https://playwright.dev/docs/api/class-tracing#tracing-start-har) / [tracing.stopHar()](https://playwright.dev/docs/api/class-tracing#tracing-stop-har) expose HAR recording as a first-class tracing API, with the same `content`, `mode` and `urlFilter` options as `recordHar`. The returned [Disposable](https://playwright.dev/docs/api/class-disposable) makes it easy to scope a recording with `await using`: ```js await using har = await context.tracing.startHar('trace.har'); const page = await context.newPage(); await page.goto('https://playwright.dev'); // HAR is finalized when `har` goes out of scope. ``` #### 🪝 Drop API New [locator.drop()](https://playwright.dev/docs/api/class-locator#locator-drop) simulates an external drag-and-drop of files or clipboard-like data onto an element. Playwright dispatches `dragenter`, `dragover`, and `drop` with a synthetic \[DataTransfer] in the page context — works cross-browser and is great for testing upload zones: ```js await page.locator('#dropzone').drop({ files: { name: 'note.txt', mimeType: 'text/plain', buffer: Buffer.from('hello') }, }); await page.locator('#dropzone').drop({ data: { 'text/plain': 'hello world', 'text/uri-list': 'https://example.com', }, }); ``` #### 🎯 Aria snapshots - [expect(page).toMatchAriaSnapshot()](https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-match-aria-snapshot) now works on a [Page](https://playwright.dev/docs/api/class-page), in addition to a [Locator](https://playwright.dev/docs/api/class-locator) — equivalent to asserting against `page.locator('body')`. - New `boxes` option on [locator.ariaSnapshot()](https://playwright.dev/docs/api/class-locator#locator-aria-snapshot) / [page.ariaSnapshot()](https://playwright.dev/docs/api/class-page#page-aria-snapshot) appends each element's bounding box as `[box=x,y,width,height]`, useful for AI consumption. #### 🛑 test.abort() New [test.abort()](https://playwright.dev/docs/api/class-test#test-abort) aborts the currently running test from a fixture, hook, or route handler with an optional message. Use it when you have detected an unrecoverable misuse and want to fail the test right away: ```js test('does not publish to the shared page', async ({ page }) => { await page.route('**/publish', route => { test.abort('Tests must not publish to the shared page. Use the `clone` option.'); return route.abort(); }); // ... }); ``` #### New APIs ##### Browser, Context and Page - Event [browser.on('context')](https://playwright.dev/docs/api/class-browser#browser-event-context) — fired when a new context is created on the browser. - [BrowserContext](https://playwright.dev/docs/api/class-browsercontext) now mirrors lifecycle events from its pages: [browserContext.on('download')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-download), [browserContext.on('frameattached')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-frame-attached), [browserContext.on('framedetached')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-frame-detached), [browserContext.on('framenavigated')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-frame-navigated), [browserContext.on('pageclose')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-page-close), [browserContext.on('pageload')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-page-load). ##### Locators and Assertions - New option `description` in [page.getByRole()](https://playwright.dev/docs/api/class-page#page-get-by-role) / [locator.getByRole()](https://playwright.dev/docs/api/class-locator#locator-get-by-role) / [frame.getByRole()](https://playwright.dev/docs/api/class-frame#frame-get-by-role) / [frameLocator.getByRole()](https://playwright.dev/docs/api/class-framelocator#frame-locator-get-by-role) for matching the [accessible description](https://www.w3.org/TR/wai-aria-1.2/#dfn-accessible-description). - New option `pseudo` in [expect(locator).toHaveCSS()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-css) reads computed styles from `::before` or `::after`. - New option `style` in [locator.highlight()](https://playwright.dev/docs/api/class-locator#locator-highlight) applies extra inline CSS to the highlight overlay, plus new [page.hideHighlight()](https://playwright.dev/docs/api/class-page#page-hide-highlight) to clear all highlights. ##### Network - [webSocketRoute.protocols()](https://playwright.dev/docs/api/class-websocketroute#web-socket-route-protocols) returns the WebSocket subprotocols requested by the page. - New option `noDefaults` in [browserType.connectOverCDP()](https://playwright.dev/docs/api/class-browsertype#browser-type-connect-over-cdp) disables Playwright's default overrides on the default context (download behavior, focus emulation, media emulation), so attaching to a user's daily-driver browser doesn't disturb its state. ##### Errors and Reporting - New [webError.location()](https://playwright.dev/docs/api/class-weberror#web-error-location) mirrors [consoleMessage.location()](https://playwright.dev/docs/api/class-consolemessage#console-message-location). - [consoleMessage.location()](https://playwright.dev/docs/api/class-consolemessage#console-message-location) now exposes `line` / `column` properties (`lineNumber` / `columnNumber` are deprecated). - New [testInfoError.errorContext](https://playwright.dev/docs/api/class-testinfoerror#test-info-error-error-context) surfaces additional diagnostic context, such as the aria snapshot of the receiver at the time of an `expect(...)` matcher failure. - [reporter.onError()](https://playwright.dev/docs/api/class-reporter#reporter-on-error) now receives a `workerInfo` argument with details about the worker for fixture teardown errors. ##### Test runner - New `{testFileBaseName}` token in [testProject.snapshotPathTemplate](https://playwright.dev/docs/api/class-testproject#test-project-snapshot-path-template) — file name without extension. - Test runner now errors when a config tries to override a non-option fixture, and rejects `workers: 0` or negative values. #### 🛠️ Other improvements - HTML reporter: - `npx playwright show-report` accepts `.zip` files directly — no need to unzip first. - Steps that contain attachments inside nested children show an indicator on the parent step. - The `repeatEachIndex` is shown in the test header when non-zero. - Trace Viewer adds a pretty-print toggle for JSON / form request and response bodies in the network details panel. #### Breaking Changes ⚠️ - Removed long-deprecated APIs: - `Locator.ariaRef()` — use the standard [locator.ariaSnapshot()](https://playwright.dev/docs/api/class-locator#locator-aria-snapshot) pipeline. - `handle` option on `BrowserContext.exposeBinding` and `Page.exposeBinding`. - `logger` option on `BrowserType.connect` and `BrowserType.connectOverCDP` — use [tracing](https://playwright.dev/docs/trace-viewer) instead. - Context options `videosPath` / `videoSize` — use `recordVideo` instead. #### Browser Versions - Chromium 148.0.7778.96 - Mozilla Firefox 150.0.2 - WebKit 26.4 This version was also tested against the following stable channels: - Google Chrome 147 - Microsoft Edge 147
--- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "every weekday before 11am" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Never, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/ionic-team/ionic-framework). --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Maria Hutt Co-authored-by: ionitron --- core/Dockerfile | 2 +- core/package-lock.json | 26 +++++++++--------- core/package.json | 4 +-- ...kbox-scale-ios-ltr-Mobile-Safari-linux.png | Bin 39449 -> 38804 bytes ...ckbox-scale-md-ltr-Mobile-Safari-linux.png | Bin 38131 -> 37896 bytes ...-text-wrap-ios-ltr-Mobile-Safari-linux.png | Bin 19350 -> 18781 bytes ...adio-scale-ios-ltr-Mobile-Safari-linux.png | Bin 30973 -> 30325 bytes ...radio-scale-md-ltr-Mobile-Safari-linux.png | Bin 39741 -> 39501 bytes ...-text-wrap-ios-ltr-Mobile-Safari-linux.png | Bin 17268 -> 16863 bytes ...lert-scale-ios-ltr-Mobile-Safari-linux.png | Bin 20160 -> 19508 bytes ...alert-scale-md-ltr-Mobile-Safari-linux.png | Bin 23987 -> 23706 bytes ...lds-scale-ios-ltr-Mobile-Firefox-linux.png | Bin 32438 -> 32463 bytes ...elds-scale-ios-ltr-Mobile-Safari-linux.png | Bin 27955 -> 27303 bytes ...ields-scale-md-ltr-Mobile-Safari-linux.png | Bin 30521 -> 30285 bytes ...pleButtons-ios-ltr-Mobile-Safari-linux.png | Bin 13651 -> 13029 bytes ...ttons-ios-ltr-dark-Mobile-Safari-linux.png | Bin 13751 -> 13190 bytes ...pleButtons-ios-rtl-Mobile-Safari-linux.png | Bin 13867 -> 13245 bytes ...ttons-ios-rtl-dark-Mobile-Safari-linux.png | Bin 13893 -> 13340 bytes ...ipleButtons-md-ltr-Mobile-Safari-linux.png | Bin 18448 -> 18139 bytes ...uttons-md-ltr-dark-Mobile-Safari-linux.png | Bin 13479 -> 13258 bytes ...ipleButtons-md-rtl-Mobile-Safari-linux.png | Bin 18442 -> 18182 bytes ...uttons-md-rtl-dark-Mobile-Safari-linux.png | Bin 13481 -> 13256 bytes ...rt-prompt-ios-ltr-Mobile-Firefox-linux.png | Bin 38138 -> 38117 bytes ...rt-prompt-ios-rtl-Mobile-Firefox-linux.png | Bin 37945 -> 37964 bytes ...utton-icon-ios-rtl-Mobile-Safari-linux.png | Bin 39561 -> 39596 bytes ...button-icon-md-ltr-Mobile-Safari-linux.png | Bin 37214 -> 37056 bytes ...button-icon-md-rtl-Mobile-Safari-linux.png | Bin 38299 -> 38099 bytes ...t-or-header-md-ltr-Mobile-Safari-linux.png | Bin 13546 -> 13542 bytes ...kbox-focus-ios-ltr-Mobile-Safari-linux.png | Bin 2877 -> 2870 bytes ...item-focus-ios-ltr-Mobile-Safari-linux.png | Bin 2723 -> 2803 bytes .../datetime/test/basic/datetime.e2e.ts | 22 ++++++++------- ...ttons-diff-ios-ltr-Mobile-Safari-linux.png | Bin 89770 -> 89979 bytes ...ttons-diff-ios-rtl-Mobile-Safari-linux.png | Bin 89159 -> 89259 bytes ...uttons-diff-md-rtl-Mobile-Safari-linux.png | Bin 87889 -> 87890 bytes ...olors-diff-ios-ltr-Mobile-Safari-linux.png | Bin 59327 -> 59579 bytes ...rder-diff-ios-ltr-Mobile-Firefox-linux.png | Bin 42657 -> 43057 bytes ...rder-diff-ios-rtl-Mobile-Firefox-linux.png | Bin 42551 -> 42901 bytes .../modal/test/card/modal-card.e2e.ts | 12 +++++++- ...d-present-ios-ltr-Mobile-Firefox-linux.png | Bin 86024 -> 85953 bytes ...d-present-ios-ltr-Mobile-Firefox-linux.png | Bin 85157 -> 85106 bytes .../modal/test/card/modal-tablet.e2e.ts | 10 +++++++ ...nt-tablet-ios-ltr-Mobile-Firefox-linux.png | Bin 204627 -> 204597 bytes ...nt-tablet-ios-ltr-Mobile-Firefox-linux.png | Bin 202249 -> 202155 bytes .../picker-column-option.md.scss | 14 +++++++++- ...ggle-focus-ios-ltr-Mobile-Safari-linux.png | Bin 3431 -> 3423 bytes ...item-focus-ios-ltr-Mobile-Safari-linux.png | Bin 3190 -> 3266 bytes 46 files changed, 62 insertions(+), 28 deletions(-) diff --git a/core/Dockerfile b/core/Dockerfile index b5a20843d1b..46cd18822f2 100644 --- a/core/Dockerfile +++ b/core/Dockerfile @@ -1,5 +1,5 @@ # Get Playwright -FROM mcr.microsoft.com/playwright:v1.59.1 +FROM mcr.microsoft.com/playwright:v1.60.0 # Set the working directory WORKDIR /ionic diff --git a/core/package-lock.json b/core/package-lock.json index edbd6a1a776..5437a95b8ea 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -21,7 +21,7 @@ "@capacitor/status-bar": "^8.0.0", "@ionic/eslint-config": "^0.3.0", "@ionic/prettier-config": "^2.0.0", - "@playwright/test": "^1.59.1", + "@playwright/test": "^1.60.0", "@rollup/plugin-node-resolve": "^8.4.0", "@rollup/plugin-virtual": "^2.0.3", "@stencil/angular-output-target": "^0.10.0", @@ -42,7 +42,7 @@ "fs-extra": "^9.0.1", "jest": "^29.7.0", "jest-cli": "^29.7.0", - "playwright-core": "^1.59.1", + "playwright-core": "^1.60.0", "prettier": "^2.6.1", "rollup": "^2.26.4", "sass": "^1.33.0", @@ -1598,13 +1598,13 @@ } }, "node_modules/@playwright/test": { - "version": "1.59.1", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.59.1.tgz", - "integrity": "sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==", + "version": "1.60.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.60.0.tgz", + "integrity": "sha512-O71yZIbAh/PxDMNGns37GHBIfrVkEVyn+AXyIa5dOTfb4/xNvRWV+Vv/NMbNCtODB/pO7vLlF2OTmMVLhmr7Ag==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright": "1.59.1" + "playwright": "1.60.0" }, "bin": { "playwright": "cli.js" @@ -7944,13 +7944,13 @@ } }, "node_modules/playwright": { - "version": "1.59.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.59.1.tgz", - "integrity": "sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==", + "version": "1.60.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.60.0.tgz", + "integrity": "sha512-hheHdokM8cdqCb0lcE3s+zT4t4W+vvjpGxsZlDnikarzx8tSzMebh3UiFtgqwFwnTnjYQcsyMF8ei2mCO/tpeA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright-core": "1.59.1" + "playwright-core": "1.60.0" }, "bin": { "playwright": "cli.js" @@ -7963,9 +7963,9 @@ } }, "node_modules/playwright-core": { - "version": "1.59.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.59.1.tgz", - "integrity": "sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==", + "version": "1.60.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.60.0.tgz", + "integrity": "sha512-9bW6zvX/m0lEbgTKJ6YppOKx8H3VOPBMOCFh2irXFOT4BbHgrx5hPjwJYLT40Lu+4qtD36qKc/Hn56StUW57IA==", "dev": true, "license": "Apache-2.0", "bin": { diff --git a/core/package.json b/core/package.json index 21a468438eb..85aa0472fa1 100644 --- a/core/package.json +++ b/core/package.json @@ -46,7 +46,7 @@ "@capacitor/status-bar": "^8.0.0", "@ionic/eslint-config": "^0.3.0", "@ionic/prettier-config": "^2.0.0", - "@playwright/test": "^1.59.1", + "@playwright/test": "^1.60.0", "@rollup/plugin-node-resolve": "^8.4.0", "@rollup/plugin-virtual": "^2.0.3", "@stencil/angular-output-target": "^0.10.0", @@ -67,7 +67,7 @@ "fs-extra": "^9.0.1", "jest": "^29.7.0", "jest-cli": "^29.7.0", - "playwright-core": "^1.59.1", + "playwright-core": "^1.60.0", "prettier": "^2.6.1", "rollup": "^2.26.4", "sass": "^1.33.0", diff --git a/core/src/components/alert/test/a11y/alert.e2e.ts-snapshots/alert-checkbox-scale-ios-ltr-Mobile-Safari-linux.png b/core/src/components/alert/test/a11y/alert.e2e.ts-snapshots/alert-checkbox-scale-ios-ltr-Mobile-Safari-linux.png index 14b67bab55bfcdb6598cffddaf9edcd36ff6139f..3132f10c7c1d1eb0e6ab758c18b7888da0927b58 100644 GIT binary patch literal 38804 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

-R?Lo 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 literal 39449 zcmc$`c{G-78#j7;DwUM6LLo_Hh-4@kiXtLIBr=uEMTRm{nKLC*hKz+Mvm#UG5Hb@P z6G~*xynol;`&(fk|`TC*w51Fl+oHQx3`S2wEu-#T#UVRt-aoKgpmqa>3lD~LC-63}B zyS<%y=jQV4@~dTX`CZibSLrGJrAg*jTncn5=T(QE?x)|sBQxzFSt*5$#*B5QM&b~--49x@oq=@TV?oQ>^rSyn-=;?-W0mLakDv&DhOxwtO-P)qNc zb?4riVF@evD}?72a&{;-opjF$3}=j&n{;U=%oiggW{PpL;9|4n>vNFEq_&2%VMuQ%M$ z^s)enhOs&J>f5WggZN0-4~V%;o&KBKSX;r(>U@Pypf{OAWr1o zx653+R4+L?IklxI9h&;{$NEEkqHHPWgq@W+26HWQJ3Z-1_nRw|{an`@@Kp{D;chj~weP zeQvQhr0!?%l}t5ipXsC8Os`2I6VbI!^6V`J$2n@uvQsgxFrNMjxq?&?~(a5ps?prOw3KA z>vFqhsS?XICuW$VRy0N;w1l6qU9s5xsMLt%kvQKjwl7Kl```6`OShiERXxk%afv$F zwQ_#=KS$|Zs{4?cO4{(&okI%#2n{os7~{;@mi z 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