diff --git a/.github/workflows/pr-review.yml b/.github/workflows/pr-review.yml index c1555df4902..257314f82ca 100644 --- a/.github/workflows/pr-review.yml +++ b/.github/workflows/pr-review.yml @@ -59,8 +59,7 @@ jobs: - name: Run Codex PR Review uses: ./external/ag-shared/github/actions/codex-pr-review with: - openai-api-key: ${{ secrets.OPENAI_API_KEY }} - codex-auth-json-b64: ${{ secrets.CODEX_AUTH_JSON_B64 }} + codex-api-key: ${{ secrets.CODEX_API_KEY }} pr-number: ${{ github.event.pull_request.number || github.event.issue.number || inputs.pr_number }} base-ref: ${{ github.event.pull_request.base.ref || 'latest' }} head-ref: ${{ github.event.pull_request.head.ref || '' }} diff --git a/.rulesync/commands/docs-review.md b/.rulesync/commands/docs-review.md index f9313398a04..de9eed4f550 100644 --- a/.rulesync/commands/docs-review.md +++ b/.rulesync/commands/docs-review.md @@ -41,32 +41,32 @@ Map documentation references to TypeScript definition files: Map features to source implementation files: -| Feature Category | Implementation Path Pattern | -| ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| Row models (CSRM, SSRM, infinite, viewport) | `packages/ag-grid-community/src/clientSideRowModel/**/*.ts`, `packages/ag-grid-community/src/infiniteRowModel/**/*.ts`, `packages/ag-grid-enterprise/src/serverSideRowModel/**/*.ts`, `packages/ag-grid-enterprise/src/viewportRowModel/**/*.ts` | -| Column features (sizing, moving, pinning) | `packages/ag-grid-community/src/columns/**/*.ts`, `packages/ag-grid-community/src/columnMove/**/*.ts`, `packages/ag-grid-community/src/columnResize/**/*.ts`, `packages/ag-grid-community/src/columnAutosize/**/*.ts`, `packages/ag-grid-community/src/pinnedColumns/**/*.ts` | -| Cell editing | `packages/ag-grid-community/src/edit/**/*.ts` | -| Filtering | `packages/ag-grid-community/src/filter/**/*.ts`, `packages/ag-grid-enterprise/src/advancedFilter/**/*.ts` | -| Row grouping / pivoting | `packages/ag-grid-enterprise/src/rowGrouping/**/*.ts`, `packages/ag-grid-enterprise/src/pivot/**/*.ts` | -| Selection | `packages/ag-grid-community/src/selection/**/*.ts`, `packages/ag-grid-enterprise/src/rangeSelection/**/*.ts` | -| Export (CSV/Excel) | `packages/ag-grid-community/src/csvExport/**/*.ts`, `packages/ag-grid-enterprise/src/excelExport/**/*.ts` | -| Master detail | `packages/ag-grid-enterprise/src/masterDetail/**/*.ts` | -| Menu / context menu | `packages/ag-grid-enterprise/src/menu/**/*.ts` | -| Charts integration | `packages/ag-grid-enterprise/src/charts/**/*.ts` | -| Rich select / editors | `packages/ag-grid-enterprise/src/richSelect/**/*.ts` | -| Sorting | `packages/ag-grid-community/src/sort/**/*.ts` | -| Pagination | `packages/ag-grid-community/src/pagination/**/*.ts` | -| Tooltips | `packages/ag-grid-community/src/tooltip/**/*.ts` | -| Drag and drop / row drag | `packages/ag-grid-community/src/dragAndDrop/**/*.ts` | -| Keyboard navigation | `packages/ag-grid-community/src/navigation/**/*.ts` | -| Pinned rows | `packages/ag-grid-community/src/pinnedRowModel/**/*.ts` | -| Clipboard | `packages/ag-grid-enterprise/src/clipboard/**/*.ts` | -| Status bar | `packages/ag-grid-enterprise/src/statusBar/**/*.ts` | -| Side bar / tool panels | `packages/ag-grid-enterprise/src/sideBar/**/*.ts`, `packages/ag-grid-enterprise/src/columnToolPanel/**/*.ts`, `packages/ag-grid-enterprise/src/filterToolPanel/**/*.ts` | -| Set filter | `packages/ag-grid-enterprise/src/setFilter/**/*.ts` | -| Tree data | `packages/ag-grid-enterprise/src/treeData/**/*.ts` | -| Aggregation | `packages/ag-grid-enterprise/src/aggregation/**/*.ts` | -| Sparklines | `packages/ag-grid-enterprise/src/sparkline/**/*.ts` | +| Feature Category | Implementation Path Pattern | +| ------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Row models (CSRM, SSRM, infinite, viewport) | `packages/ag-grid-community/src/clientSideRowModel/**/*.ts`, `packages/ag-grid-community/src/infiniteRowModel/**/*.ts`, `packages/ag-grid-enterprise/src/serverSideRowModel/**/*.ts`, `packages/ag-grid-enterprise/src/viewportRowModel/**/*.ts` | +| Column features (sizing, moving, pinning) | `packages/ag-grid-community/src/columns/**/*.ts`, `packages/ag-grid-community/src/columnMove/**/*.ts`, `packages/ag-grid-community/src/columnResize/**/*.ts`, `packages/ag-grid-community/src/columnAutosize/**/*.ts`, `packages/ag-grid-community/src/pinnedColumns/**/*.ts` | +| Cell editing | `packages/ag-grid-community/src/edit/**/*.ts` | +| Filtering | `packages/ag-grid-community/src/filter/**/*.ts`, `packages/ag-grid-enterprise/src/advancedFilter/**/*.ts` | +| Row grouping / pivoting | `packages/ag-grid-enterprise/src/rowGrouping/**/*.ts`, `packages/ag-grid-enterprise/src/pivot/**/*.ts` | +| Selection | `packages/ag-grid-community/src/selection/**/*.ts`, `packages/ag-grid-enterprise/src/rangeSelection/**/*.ts` | +| Export (CSV/Excel) | `packages/ag-grid-community/src/csvExport/**/*.ts`, `packages/ag-grid-enterprise/src/excelExport/**/*.ts` | +| Master detail | `packages/ag-grid-enterprise/src/masterDetail/**/*.ts` | +| Menu / context menu | `packages/ag-grid-enterprise/src/menu/**/*.ts` | +| Charts integration | `packages/ag-grid-enterprise/src/charts/**/*.ts` | +| Rich select / editors | `packages/ag-grid-enterprise/src/richSelect/**/*.ts` | +| Sorting | `packages/ag-grid-community/src/sort/**/*.ts` | +| Pagination | `packages/ag-grid-community/src/pagination/**/*.ts` | +| Tooltips | `packages/ag-grid-community/src/tooltip/**/*.ts` | +| Drag and drop / row drag | `packages/ag-grid-community/src/dragAndDrop/**/*.ts` | +| Keyboard navigation | `packages/ag-grid-community/src/navigation/**/*.ts` | +| Pinned rows | `packages/ag-grid-community/src/pinnedRowModel/**/*.ts` | +| Clipboard | `packages/ag-grid-enterprise/src/clipboard/**/*.ts` | +| Status bar | `packages/ag-grid-enterprise/src/statusBar/**/*.ts` | +| Side bar / tool panels | `packages/ag-grid-enterprise/src/sideBar/**/*.ts`, `packages/ag-grid-enterprise/src/columnToolPanel/**/*.ts`, `packages/ag-grid-enterprise/src/filterToolPanel/**/*.ts` | +| Set filter | `packages/ag-grid-enterprise/src/setFilter/**/*.ts` | +| Tree data | `packages/ag-grid-enterprise/src/treeData/**/*.ts` | +| Aggregation | `packages/ag-grid-enterprise/src/aggregation/**/*.ts` | +| Sparklines | `packages/ag-grid-enterprise/src/sparkline/**/*.ts` | ### Example Path Pattern diff --git a/documentation/ag-grid-docs/package.json b/documentation/ag-grid-docs/package.json index e24d5d787ad..1286a9f4f8a 100644 --- a/documentation/ag-grid-docs/package.json +++ b/documentation/ag-grid-docs/package.json @@ -95,7 +95,7 @@ "vue": "^3.5.13" }, "devDependencies": { - "@trivago/prettier-plugin-sort-imports": "^4.3.0", + "@trivago/prettier-plugin-sort-imports": "^5.2.2", "@types/he": "^1.2.3", "playwright": "^1.56.0", "playwright-ctrf-json-reporter": "0.0.24", diff --git a/documentation/ag-grid-docs/scripts/validate-example-specs.ts b/documentation/ag-grid-docs/scripts/validate-example-specs.ts index 1257a76f460..04046e5c6ab 100644 --- a/documentation/ag-grid-docs/scripts/validate-example-specs.ts +++ b/documentation/ag-grid-docs/scripts/validate-example-specs.ts @@ -1,5 +1,4 @@ #!/usr/bin/env tsx - /* eslint-disable no-console */ import { readdir, stat } from 'fs/promises'; import { dirname, join, relative } from 'path'; diff --git a/external/ag-shared/.gitrepo b/external/ag-shared/.gitrepo index 4a57bb94e2f..67a2682b476 100644 --- a/external/ag-shared/.gitrepo +++ b/external/ag-shared/.gitrepo @@ -6,7 +6,7 @@ [subrepo] remote = https://github.com/ag-grid/ag-shared.git branch = latest - commit = cde57a75f6011deff9c625d6d017061913e81cd6 - parent = 08db58bfb47079d97c285e1736efa289a81e0b9a + commit = f999ddabe0d121bf65607f7c2bdab710335fab06 + parent = 7aceeb9566b3b77349ffc42d782830af8f155b08 method = rebase cmdver = 0.4.9 diff --git a/external/ag-shared/github/actions/codex-pr-review/action.yml b/external/ag-shared/github/actions/codex-pr-review/action.yml index a7e2e6018f9..82eca0a9781 100644 --- a/external/ag-shared/github/actions/codex-pr-review/action.yml +++ b/external/ag-shared/github/actions/codex-pr-review/action.yml @@ -11,7 +11,7 @@ description: Run a Codex PR review with complete log suppression - no LLM output # 5. POST RESULTS: Create/update summary comment ( marker) # and post new inline comments on specific file/line locations # 6. REACT COMPLETE: Remove 👀 from PR description, add 👍 (no findings) or 👎 (has findings) -# 7. CLEANUP FILES: Remove sensitive review output and auth files +# 7. CLEANUP FILES: Remove sensitive review output files # # Re-review behaviour: # - Summary comment is updated in-place (found via marker) @@ -30,12 +30,8 @@ description: Run a Codex PR review with complete log suppression - no LLM output # | Codex exits 0, 1+ findings (JSON) | Yes then removed | 👎 | Yes (created/updated) | Yes | # inputs: - openai-api-key: - description: 'OpenAI API key for Codex CLI (alternative to codex-auth-json-b64)' - required: false - default: '' - codex-auth-json-b64: - description: 'Base64-encoded ~/.codex/auth.json for ChatGPT OAuth auth (alternative to openai-api-key)' + codex-api-key: + description: 'Codex API key for Codex CLI authentication' required: false default: '' pr-number: @@ -90,11 +86,10 @@ runs: id: check-auth shell: bash env: - CODEX_AUTH_JSON_B64: ${{ inputs.codex-auth-json-b64 }} - OPENAI_API_KEY: ${{ inputs.openai-api-key }} + CODEX_API_KEY: ${{ inputs.codex-api-key }} run: | - if [ -z "${CODEX_AUTH_JSON_B64:-}" ] && [ -z "${OPENAI_API_KEY:-}" ]; then - echo "::warning::Skipping PR review - no authentication configured (set OPENAI_API_KEY or CODEX_AUTH_JSON_B64 secret)" + if [ -z "${CODEX_API_KEY:-}" ]; then + echo "::warning::Skipping PR review - no authentication configured (set CODEX_API_KEY secret)" echo "skipped=true" >> $GITHUB_OUTPUT else echo "skipped=false" >> $GITHUB_OUTPUT @@ -278,24 +273,6 @@ runs: ./external/ag-shared/scripts/setup-prompts/setup-prompts.sh --targets=codexcli --verbose || true fi - - name: Setup Authentication - if: steps.check-auth.outputs.skipped != 'true' - shell: bash - env: - CODEX_AUTH_JSON_B64: ${{ inputs.codex-auth-json-b64 }} - OPENAI_API_KEY: ${{ inputs.openai-api-key }} - run: | - # Prefer auth.json if provided, fall back to API key - if [ -n "${CODEX_AUTH_JSON_B64:-}" ]; then - echo "Using base64-encoded auth.json for authentication" - mkdir -p "$HOME/.codex" - echo "$CODEX_AUTH_JSON_B64" | base64 -d > "$HOME/.codex/auth.json" - chmod 600 "$HOME/.codex/auth.json" - elif [ -n "${OPENAI_API_KEY:-}" ]; then - echo "Using OpenAI API key for authentication" - # API key already set via env var - Codex will use it - fi - - name: Determine Prompt File if: steps.check-auth.outputs.skipped != 'true' id: prompt @@ -317,7 +294,8 @@ runs: id: codex shell: bash env: - OPENAI_API_KEY: ${{ inputs.openai-api-key }} + OPENAI_API_KEY: ${{ inputs.codex-api-key }} + CODEX_API_KEY: ${{ inputs.codex-api-key }} ARGUMENTS: ${{ inputs.pr-number }} BASE_REF: ${{ inputs.base-ref }} HEAD_REF: ${{ inputs.head-ref }} @@ -349,6 +327,12 @@ runs: if [ $exit_code -ne 0 ]; then echo "::error::Codex review failed with exit code ${exit_code}" + + # Check if error is authentication-related + if [ -f "${error_file}" ] && grep -qE "(invalid_api_key|token_expired|refresh_token_reused|401 Unauthorized|Incorrect API key|Your access token could not be refreshed|exceeded retry limit.*401)" "${error_file}"; then + echo "::error::Authentication failure detected — the CODEX_API_KEY secret is likely invalid, expired, or has insufficient permissions. Verify the secret in repo/org settings." + fi + # Show stderr for debugging - contains CLI errors, not review content if [ -f "${error_file}" ] && [ -s "${error_file}" ]; then echo "::group::Codex CLI Error Output" @@ -690,5 +674,3 @@ runs: shell: bash run: | rm -f ".codex-review-${{ inputs.pr-number }}.md" ".codex-review-${{ inputs.pr-number }}.json" ".codex-error-${{ inputs.pr-number }}.log" - # Also clean up auth.json if we created it - rm -f "$HOME/.codex/auth.json" diff --git a/external/ag-shared/prompts/guides/docs-review-integration.md b/external/ag-shared/prompts/guides/_docs-review-integration.md similarity index 100% rename from external/ag-shared/prompts/guides/docs-review-integration.md rename to external/ag-shared/prompts/guides/_docs-review-integration.md diff --git a/external/ag-shared/prompts/patches/rulesync+7.0.0.patch b/external/ag-shared/prompts/patches/rulesync+7.0.0.patch index 11bb41fa1bf..6ae68722c44 100644 --- a/external/ag-shared/prompts/patches/rulesync+7.0.0.patch +++ b/external/ag-shared/prompts/patches/rulesync+7.0.0.patch @@ -1,5 +1,5 @@ diff --git a/node_modules/rulesync/dist/index.cjs b/node_modules/rulesync/dist/index.cjs -index b80488f..1031beb 100644 +index b80488f..decff9f 100644 --- a/node_modules/rulesync/dist/index.cjs +++ b/node_modules/rulesync/dist/index.cjs @@ -1732,9 +1732,10 @@ var GeminiCliCommand = class _GeminiCliCommand extends ToolCommand { @@ -14,8 +14,38 @@ index b80488f..1031beb 100644 """`; const paths = this.getSettablePaths({ global }); return new _GeminiCliCommand({ +@@ -13636,15 +13637,23 @@ var RulesProcessor = class extends FeatureProcessor { + const rulesyncBaseDir = (0, import_node_path107.join)(this.baseDir, RULESYNC_RULES_RELATIVE_DIR_PATH); + const files = await findFilesByGlobs((0, import_node_path107.join)(rulesyncBaseDir, "**", "*.md")); + logger.debug(`Found ${files.length} rulesync files`); +- const rulesyncRules = await Promise.all( +- files.map((file) => { ++ const rulesyncRules = (await Promise.all( ++ files.map(async (file) => { + const relativeFilePath = (0, import_node_path107.relative)(rulesyncBaseDir, file); + checkPathTraversal({ relativePath: relativeFilePath, intendedRootDir: rulesyncBaseDir }); +- return RulesyncRule.fromFile({ +- relativeFilePath +- }); ++ try { ++ return await RulesyncRule.fromFile({ ++ relativeFilePath ++ }); ++ } catch (e) { ++ if (e.code === "ENOENT") { ++ logger.warn(`Skipping missing or broken symlink: ${relativeFilePath}`); ++ return null; ++ } ++ throw e; ++ } + }) +- ); ++ )).filter(Boolean); + const rootRules = rulesyncRules.filter((rule) => rule.getFrontmatter().root); + if (rootRules.length > 1) { + throw new Error("Multiple root rulesync rules found"); diff --git a/node_modules/rulesync/dist/index.js b/node_modules/rulesync/dist/index.js -index 7b7cdc2..fc4b33c 100755 +index 7b7cdc2..8dfcc14 100755 --- a/node_modules/rulesync/dist/index.js +++ b/node_modules/rulesync/dist/index.js @@ -1709,9 +1709,10 @@ var GeminiCliCommand = class _GeminiCliCommand extends ToolCommand { @@ -30,3 +60,33 @@ index 7b7cdc2..fc4b33c 100755 """`; const paths = this.getSettablePaths({ global }); return new _GeminiCliCommand({ +@@ -13613,15 +13614,23 @@ var RulesProcessor = class extends FeatureProcessor { + const rulesyncBaseDir = join106(this.baseDir, RULESYNC_RULES_RELATIVE_DIR_PATH); + const files = await findFilesByGlobs(join106(rulesyncBaseDir, "**", "*.md")); + logger.debug(`Found ${files.length} rulesync files`); +- const rulesyncRules = await Promise.all( +- files.map((file) => { ++ const rulesyncRules = (await Promise.all( ++ files.map(async (file) => { + const relativeFilePath = relative4(rulesyncBaseDir, file); + checkPathTraversal({ relativePath: relativeFilePath, intendedRootDir: rulesyncBaseDir }); +- return RulesyncRule.fromFile({ +- relativeFilePath +- }); ++ try { ++ return await RulesyncRule.fromFile({ ++ relativeFilePath ++ }); ++ } catch (e) { ++ if (e.code === "ENOENT") { ++ logger.warn(`Skipping missing or broken symlink: ${relativeFilePath}`); ++ return null; ++ } ++ throw e; ++ } + }) +- ); ++ )).filter(Boolean); + const rootRules = rulesyncRules.filter((rule) => rule.getFrontmatter().root); + if (rootRules.length > 1) { + throw new Error("Multiple root rulesync rules found"); diff --git a/external/ag-shared/scripts/subrepo/src/cli.ts b/external/ag-shared/scripts/subrepo/src/cli.ts index 73d5174d196..04acab5a1da 100755 --- a/external/ag-shared/scripts/subrepo/src/cli.ts +++ b/external/ag-shared/scripts/subrepo/src/cli.ts @@ -52,21 +52,27 @@ const getPromptSubrepo = async ({ command }: { command: string }) => { yargs(hideBin(process.argv)) .usage('Usage: [options]') .command( - '$0 ', + '$0 [repo]', 'Wrapper for `git subrepo` commands', (yargs) => { - return yargs.positional('command', { - describe: - 'Git subrepo command\n\n' + - 'push: git subrepo push\n' + - 'pull: git subrepo pull\n' + - 'check: Check whether .gitrepo is in a valid state\n', - choices: ['push', 'pull', 'check'], - }); + return yargs + .positional('command', { + describe: + 'Git subrepo command\n\n' + + 'push: git subrepo push\n' + + 'pull: git subrepo pull\n' + + 'check: Check whether .gitrepo is in a valid state\n', + choices: ['push', 'pull', 'check'], + }) + .positional('repo', { + describe: 'Subrepo name (e.g. ag-shared). If omitted, prompts interactively.', + choices: subRepos, + type: 'string', + }); }, async (argv) => { - const { subrepo: subrepoArg, command, verbose } = argv; - let subrepo = subrepoArg; + const { repo, subrepo: subrepoArg, command, verbose } = argv; + let subrepo = repo ?? subrepoArg; if (!subrepo) { const promptSubrepo = await getPromptSubrepo({ command: command! }); @@ -92,7 +98,7 @@ yargs(hideBin(process.argv)) .option('subrepo', { alias: 's', choices: subRepos, - description: 'Subrepo to run the command on', + description: '[deprecated: use positional arg] Subrepo to run the command on', }) .help() .parse(); diff --git a/external/ag-website-shared/.gitrepo b/external/ag-website-shared/.gitrepo index 5545480bbb5..3ae4b3fad94 100644 --- a/external/ag-website-shared/.gitrepo +++ b/external/ag-website-shared/.gitrepo @@ -6,7 +6,7 @@ [subrepo] remote = git@github.com:ag-grid/ag-website-shared.git branch = latest - commit = 3b77ba79f691d66a5dab7a24c09a1d23f6f03848 - parent = d33178fce8ad5274f21037425f0a9652ca5af53d + commit = c320af4df40a96cafb14ead9c1d155915d69db47 + parent = 2ae8c88c040f289e799ddc9042636a093b21a008 method = rebase cmdver = 0.4.9 diff --git a/external/ag-website-shared/package.json b/external/ag-website-shared/package.json index 3bebb3c93e0..21b85a5694d 100644 --- a/external/ag-website-shared/package.json +++ b/external/ag-website-shared/package.json @@ -20,7 +20,7 @@ }, "homepage": "https://github.com/ag-grid/ag-website-shared#readme", "devDependencies": { - "@trivago/prettier-plugin-sort-imports": "^4.3.0", + "@trivago/prettier-plugin-sort-imports": "^5.2.2", "prettier": "^3.2.5", "prettier-plugin-astro": "^0.13.0", "vitest": "2.1.9" diff --git a/external/ag-website-shared/scripts/buildWithSitemapCache.ts b/external/ag-website-shared/scripts/buildWithSitemapCache.ts index bb217c5eb45..338d3b99661 100644 --- a/external/ag-website-shared/scripts/buildWithSitemapCache.ts +++ b/external/ag-website-shared/scripts/buildWithSitemapCache.ts @@ -1,5 +1,4 @@ #!/usr/bin/env tsx - /** * Build helper for AG Charts website. * diff --git a/external/ag-website-shared/src/components/changelog/useSearchQuery.ts b/external/ag-website-shared/src/components/changelog/useSearchQuery.ts index 55a4f9b4767..7d428f1185a 100644 --- a/external/ag-website-shared/src/components/changelog/useSearchQuery.ts +++ b/external/ag-website-shared/src/components/changelog/useSearchQuery.ts @@ -1,7 +1,9 @@ -import { type ChangeEvent, useCallback, useEffect, useState } from 'react'; +import { type ChangeEvent, useCallback, useEffect, useRef, useState } from 'react'; export function useSearchQuery() { const [searchQuery, setSearchQuery] = useState(''); + const hasInitialisedUrl = useRef(false); + const handleSearchQueryChange = useCallback((event: ChangeEvent<{ value: string }>) => { const value = event.target?.value; setSearchQuery(value); @@ -12,8 +14,27 @@ export function useSearchQuery() { const urlSearchQuery = new URLSearchParams(searchParams).get('searchQuery'); const value = searchParams && urlSearchQuery ? urlSearchQuery : ''; setSearchQuery(value); + hasInitialisedUrl.current = true; }, []); + // Sync to URL with debounce + useEffect(() => { + if (!hasInitialisedUrl.current) { + return; + } + const timeoutId = setTimeout(() => { + const url = new URL(window.location.href); + if (searchQuery) { + url.searchParams.set('searchQuery', searchQuery); + } else { + url.searchParams.delete('searchQuery'); + } + window.history.replaceState(null, '', url.toString()); + }, 250); + + return () => clearTimeout(timeoutId); + }, [searchQuery]); + return { searchQuery, handleSearchQueryChange, diff --git a/packages/ag-grid-community/src/agStack/theming/inject.ts b/packages/ag-grid-community/src/agStack/theming/inject.ts index 256a4751dd6..700193d4d58 100644 --- a/packages/ag-grid-community/src/agStack/theming/inject.ts +++ b/packages/ag-grid-community/src/agStack/theming/inject.ts @@ -155,6 +155,8 @@ type InjectionState = { map: WeakMap; // Map of environments to their grid state grids: Map; + // Counter for generating unique params class names + paramsId: number; }; // IMPORTANT: this global API on the window object must remain constant across @@ -177,15 +179,18 @@ type WindowState = { // cause issues. If they do, both versions' styles will be injected and the // result will be obvious in development tools because of the // data-ag-css-version attribute on each style element. -const injectionState: InjectionState = (() => { +export const getInjectionState = (): InjectionState => { const versionMap = ((globalThis as WindowState).agStyleInjectionVersions ??= new Map()); let state = versionMap.get(VERSION); if (!state) { state = { map: new WeakMap(), grids: new Map(), + paramsId: 0, }; versionMap.set(VERSION, state); } return state; -})(); +}; + +const injectionState = getInjectionState(); diff --git a/packages/ag-grid-community/src/agStack/theming/themeImpl.ts b/packages/ag-grid-community/src/agStack/theming/themeImpl.ts index 9183c98b0e3..1d7c7ef716c 100644 --- a/packages/ag-grid-community/src/agStack/theming/themeImpl.ts +++ b/packages/ag-grid-community/src/agStack/theming/themeImpl.ts @@ -1,4 +1,4 @@ -import { FORCE_LEGACY_THEMES, IS_SSR, _injectCoreAndModuleCSS, _injectGlobalCSS } from './inject'; +import { FORCE_LEGACY_THEMES, IS_SSR, _injectCoreAndModuleCSS, _injectGlobalCSS, getInjectionState } from './inject'; import type { Part } from './part'; import { PartImpl, createPart, defaultModeName } from './partImpl'; import { sharedDefaults } from './shared/shared-css'; @@ -9,8 +9,6 @@ import { paramValueToCss } from './themeTypeUtils'; import type { WithParamTypes } from './themeTypes'; import { paramToVariableName } from './themeUtils'; -let paramsId = 0; - export const _asThemeImpl = (theme: Theme): ThemeImpl => { if (!(theme instanceof ThemeImpl)) { throw new Error('theme is not an object created by createTheme'); @@ -112,7 +110,7 @@ export class ThemeImpl { private _paramsClassName?: string; _getParamsClassName(): string { - return (this._paramsClassName ??= `ag-theme-params-${++paramsId}`); + return (this._paramsClassName ??= `ag-theme-params-${++getInjectionState().paramsId}`); } private _paramsCache?: ModalParamValues; diff --git a/packages/ag-grid-community/src/entities/colDef.test.ts b/packages/ag-grid-community/src/entities/colDef.test.ts index e92e5a644ba..4e482985283 100644 --- a/packages/ag-grid-community/src/entities/colDef.test.ts +++ b/packages/ag-grid-community/src/entities/colDef.test.ts @@ -1,5 +1,4 @@ /* eslint-disable sonarjs/no-dead-store */ - /* eslint-disable @typescript-eslint/no-unused-vars */ import { describe, test } from '@jest/globals'; diff --git a/yarn.lock b/yarn.lock index 913463cb702..9becc90b9c3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -796,7 +796,7 @@ dependencies: axe-core "~4.11.0" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.27.1": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.27.1": version "7.27.1" resolved "http://52.50.158.57:4873/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== @@ -805,6 +805,15 @@ js-tokens "^4.0.0" picocolors "^1.1.1" +"@babel/code-frame@^7.28.6", "@babel/code-frame@^7.29.0": + version "7.29.0" + resolved "https://registry.ag-grid.com/@babel/code-frame/-/code-frame-7.29.0.tgz#7cd7a59f15b3cc0dcd803038f7792712a7d0b15c" + integrity sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw== + dependencies: + "@babel/helper-validator-identifier" "^7.28.5" + js-tokens "^4.0.0" + picocolors "^1.1.1" + "@babel/compat-data@^7.26.8", "@babel/compat-data@^7.27.2", "@babel/compat-data@^7.27.7", "@babel/compat-data@^7.28.5": version "7.28.5" resolved "http://52.50.158.57:4873/@babel/compat-data/-/compat-data-7.28.5.tgz#a8a4962e1567121ac0b3b487f52107443b455c7f" @@ -831,15 +840,6 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@7.17.7": - version "7.17.7" - resolved "http://52.50.158.57:4873/@babel/generator/-/generator-7.17.7.tgz#8da2599beb4a86194a3b24df6c085931d9ee45ad" - integrity sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w== - dependencies: - "@babel/types" "^7.17.0" - jsesc "^2.5.1" - source-map "^0.5.0" - "@babel/generator@7.26.10": version "7.26.10" resolved "http://52.50.158.57:4873/@babel/generator/-/generator-7.26.10.tgz#a60d9de49caca16744e6340c3658dfef6138c3f7" @@ -851,7 +851,18 @@ "@jridgewell/trace-mapping" "^0.3.25" jsesc "^3.0.2" -"@babel/generator@^7.23.0", "@babel/generator@^7.27.1", "@babel/generator@^7.28.5", "@babel/generator@^7.7.2": +"@babel/generator@^7.26.5", "@babel/generator@^7.29.0": + version "7.29.1" + resolved "https://registry.ag-grid.com/@babel/generator/-/generator-7.29.1.tgz#d09876290111abbb00ef962a7b83a5307fba0d50" + integrity sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw== + dependencies: + "@babel/parser" "^7.29.0" + "@babel/types" "^7.29.0" + "@jridgewell/gen-mapping" "^0.3.12" + "@jridgewell/trace-mapping" "^0.3.28" + jsesc "^3.0.2" + +"@babel/generator@^7.27.1", "@babel/generator@^7.28.5", "@babel/generator@^7.7.2": version "7.28.5" resolved "http://52.50.158.57:4873/@babel/generator/-/generator-7.28.5.tgz#712722d5e50f44d07bc7ac9fe84438742dd61298" integrity sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ== @@ -927,33 +938,11 @@ lodash.debounce "^4.0.8" resolve "^1.22.10" -"@babel/helper-environment-visitor@^7.22.20": - version "7.24.7" - resolved "http://52.50.158.57:4873/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz#4b31ba9551d1f90781ba83491dd59cf9b269f7d9" - integrity sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ== - dependencies: - "@babel/types" "^7.24.7" - -"@babel/helper-function-name@^7.23.0": - version "7.24.7" - resolved "http://52.50.158.57:4873/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz#75f1e1725742f39ac6584ee0b16d94513da38dd2" - integrity sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA== - dependencies: - "@babel/template" "^7.24.7" - "@babel/types" "^7.24.7" - "@babel/helper-globals@^7.28.0": version "7.28.0" resolved "http://52.50.158.57:4873/@babel/helper-globals/-/helper-globals-7.28.0.tgz#b9430df2aa4e17bc28665eadeae8aa1d985e6674" integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw== -"@babel/helper-hoist-variables@^7.22.5": - version "7.24.7" - resolved "http://52.50.158.57:4873/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz#b4ede1cde2fd89436397f30dc9376ee06b0f25ee" - integrity sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ== - dependencies: - "@babel/types" "^7.24.7" - "@babel/helper-member-expression-to-functions@^7.27.1", "@babel/helper-member-expression-to-functions@^7.28.5": version "7.28.5" resolved "http://52.50.158.57:4873/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz#f3e07a10be37ed7a63461c63e6929575945a6150" @@ -1017,7 +1006,7 @@ "@babel/traverse" "^7.27.1" "@babel/types" "^7.27.1" -"@babel/helper-split-export-declaration@7.24.7", "@babel/helper-split-export-declaration@^7.22.6": +"@babel/helper-split-export-declaration@7.24.7": version "7.24.7" resolved "http://52.50.158.57:4873/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz#83949436890e07fa3d6873c61a96e3bbf692d856" integrity sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA== @@ -1029,7 +1018,7 @@ resolved "http://52.50.158.57:4873/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== -"@babel/helper-validator-identifier@^7.16.7", "@babel/helper-validator-identifier@^7.27.1", "@babel/helper-validator-identifier@^7.28.5": +"@babel/helper-validator-identifier@^7.27.1", "@babel/helper-validator-identifier@^7.28.5": version "7.28.5" resolved "http://52.50.158.57:4873/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz#010b6938fab7cb7df74aa2bbc06aa503b8fe5fb4" integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q== @@ -1056,13 +1045,20 @@ "@babel/template" "^7.27.2" "@babel/types" "^7.28.4" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.5", "@babel/parser@^7.20.7", "@babel/parser@^7.23.0", "@babel/parser@^7.23.9", "@babel/parser@^7.25.3", "@babel/parser@^7.26.10", "@babel/parser@^7.27.1", "@babel/parser@^7.27.2", "@babel/parser@^7.28.0", "@babel/parser@^7.28.4", "@babel/parser@^7.28.5": +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.25.3", "@babel/parser@^7.26.10", "@babel/parser@^7.27.1", "@babel/parser@^7.27.2", "@babel/parser@^7.28.0", "@babel/parser@^7.28.4", "@babel/parser@^7.28.5": version "7.28.5" resolved "http://52.50.158.57:4873/@babel/parser/-/parser-7.28.5.tgz#0b0225ee90362f030efd644e8034c99468893b08" integrity sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ== dependencies: "@babel/types" "^7.28.5" +"@babel/parser@^7.26.7", "@babel/parser@^7.28.6", "@babel/parser@^7.29.0": + version "7.29.0" + resolved "https://registry.ag-grid.com/@babel/parser/-/parser-7.29.0.tgz#669ef345add7d057e92b7ed15f0bac07611831b6" + integrity sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww== + dependencies: + "@babel/types" "^7.29.0" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.9", "@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.28.5": version "7.28.5" resolved "http://52.50.158.57:4873/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz#fbde57974707bbfa0376d34d425ff4fa6c732421" @@ -2043,7 +2039,7 @@ resolved "http://52.50.158.57:4873/@babel/runtime/-/runtime-7.28.4.tgz#a70226016fabe25c5783b2f22d3e1c9bc5ca3326" integrity sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ== -"@babel/template@^7.24.7", "@babel/template@^7.27.1", "@babel/template@^7.27.2", "@babel/template@^7.3.3": +"@babel/template@^7.27.1", "@babel/template@^7.27.2", "@babel/template@^7.3.3": version "7.27.2" resolved "http://52.50.158.57:4873/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d" integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== @@ -2052,21 +2048,14 @@ "@babel/parser" "^7.27.2" "@babel/types" "^7.27.1" -"@babel/traverse@7.23.2": - version "7.23.2" - resolved "http://52.50.158.57:4873/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8" - integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw== - dependencies: - "@babel/code-frame" "^7.22.13" - "@babel/generator" "^7.23.0" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.23.0" - "@babel/types" "^7.23.0" - debug "^4.1.0" - globals "^11.1.0" +"@babel/template@^7.28.6": + version "7.28.6" + resolved "https://registry.ag-grid.com/@babel/template/-/template-7.28.6.tgz#0e7e56ecedb78aeef66ce7972b082fce76a23e57" + integrity sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ== + dependencies: + "@babel/code-frame" "^7.28.6" + "@babel/parser" "^7.28.6" + "@babel/types" "^7.28.6" "@babel/traverse@^7.16.0", "@babel/traverse@^7.26.8", "@babel/traverse@^7.27.1", "@babel/traverse@^7.28.0", "@babel/traverse@^7.28.3", "@babel/traverse@^7.28.4", "@babel/traverse@^7.28.5": version "7.28.5" @@ -2081,15 +2070,20 @@ "@babel/types" "^7.28.5" debug "^4.3.1" -"@babel/types@7.17.0": - version "7.17.0" - resolved "http://52.50.158.57:4873/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" - integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== +"@babel/traverse@^7.26.7": + version "7.29.0" + resolved "https://registry.ag-grid.com/@babel/traverse/-/traverse-7.29.0.tgz#f323d05001440253eead3c9c858adbe00b90310a" + integrity sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA== dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - to-fast-properties "^2.0.0" + "@babel/code-frame" "^7.29.0" + "@babel/generator" "^7.29.0" + "@babel/helper-globals" "^7.28.0" + "@babel/parser" "^7.29.0" + "@babel/template" "^7.28.6" + "@babel/types" "^7.29.0" + debug "^4.3.1" -"@babel/types@^7.0.0", "@babel/types@^7.17.0", "@babel/types@^7.20.7", "@babel/types@^7.21.3", "@babel/types@^7.23.0", "@babel/types@^7.24.7", "@babel/types@^7.25.9", "@babel/types@^7.26.10", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.2", "@babel/types@^7.28.4", "@babel/types@^7.28.5", "@babel/types@^7.3.3", "@babel/types@^7.4.4": +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.21.3", "@babel/types@^7.24.7", "@babel/types@^7.25.9", "@babel/types@^7.26.10", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.2", "@babel/types@^7.28.4", "@babel/types@^7.28.5", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.28.5" resolved "http://52.50.158.57:4873/@babel/types/-/types-7.28.5.tgz#10fc405f60897c35f07e85493c932c7b5ca0592b" integrity sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA== @@ -2097,6 +2091,14 @@ "@babel/helper-string-parser" "^7.27.1" "@babel/helper-validator-identifier" "^7.28.5" +"@babel/types@^7.26.7", "@babel/types@^7.28.6", "@babel/types@^7.29.0": + version "7.29.0" + resolved "https://registry.ag-grid.com/@babel/types/-/types-7.29.0.tgz#9f5b1e838c446e72cf3cd4b918152b8c605e37c7" + integrity sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A== + dependencies: + "@babel/helper-string-parser" "^7.27.1" + "@babel/helper-validator-identifier" "^7.28.5" + "@bazel/runfiles@^6.3.1": version "6.5.0" resolved "http://52.50.158.57:4873/@bazel/runfiles/-/runfiles-6.5.0.tgz#63cf7b77b91b54873e75f7a08fabec215c6888be" @@ -7392,16 +7394,16 @@ resolved "http://52.50.158.57:4873/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz#db4ecfd499a9765ab24002c3b696d02e6d32a12c" integrity sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA== -"@trivago/prettier-plugin-sort-imports@^4.3.0": - version "4.3.0" - resolved "http://52.50.158.57:4873/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-4.3.0.tgz#725f411646b3942193a37041c84e0b2116339789" - integrity sha512-r3n0onD3BTOVUNPhR4lhVK4/pABGpbA7bW3eumZnYdKaHkf1qEC+Mag6DPbGNuuh0eG8AaYj+YqmVHSiGslaTQ== - dependencies: - "@babel/generator" "7.17.7" - "@babel/parser" "^7.20.5" - "@babel/traverse" "7.23.2" - "@babel/types" "7.17.0" - javascript-natural-sort "0.7.1" +"@trivago/prettier-plugin-sort-imports@^5.2.2": + version "5.2.2" + resolved "https://registry.ag-grid.com/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-5.2.2.tgz#38983f0b83490a0a7d974a6f1e409fb4bf678d02" + integrity sha512-fYDQA9e6yTNmA13TLVSA+WMQRc5Bn/c0EUBditUHNfMMxN7M82c38b1kEggVE3pLpZ0FwkwJkUEKMiOi52JXFA== + dependencies: + "@babel/generator" "^7.26.5" + "@babel/parser" "^7.26.7" + "@babel/traverse" "^7.26.7" + "@babel/types" "^7.26.7" + javascript-natural-sort "^0.7.1" lodash "^4.17.21" "@trysound/sax@0.2.0": @@ -14264,11 +14266,6 @@ global-prefix@^3.0.0: kind-of "^6.0.2" which "^1.3.1" -globals@^11.1.0: - version "11.12.0" - resolved "http://52.50.158.57:4873/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - globals@^14.0.0: version "14.0.0" resolved "http://52.50.158.57:4873/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" @@ -15894,9 +15891,9 @@ jasmine-core@^4.1.0, jasmine-core@~4.6.1: resolved "http://52.50.158.57:4873/jasmine-core/-/jasmine-core-4.6.1.tgz#5ebb8afa07282078f8d7b15871737a83b74e58f2" integrity sha512-VYz/BjjmC3klLJlLwA4Kw8ytk0zDSmbbDLNs794VnWmkcCB7I9aAL/D48VNQtmITyPvea2C3jdUMfc3kAoy0PQ== -javascript-natural-sort@0.7.1: +javascript-natural-sort@^0.7.1: version "0.7.1" - resolved "http://52.50.158.57:4873/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz#f9e2303d4507f6d74355a73664d1440fb5a0ef59" + resolved "https://registry.ag-grid.com/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz#f9e2303d4507f6d74355a73664d1440fb5a0ef59" integrity sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw== jest-canvas-mock@2.5.2: @@ -16442,11 +16439,6 @@ jsdom@^24.0.0, jsdom@^24.1.0: ws "^8.18.0" xml-name-validator "^5.0.0" -jsesc@^2.5.1: - version "2.5.2" - resolved "http://52.50.158.57:4873/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - jsesc@^3.0.2, jsesc@^3.1.0, jsesc@~3.1.0: version "3.1.0" resolved "http://52.50.158.57:4873/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" @@ -22901,7 +22893,7 @@ source-map@0.7.4: resolved "http://52.50.158.57:4873/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== -source-map@^0.5.0, source-map@^0.5.7: +source-map@^0.5.7: version "0.5.7" resolved "http://52.50.158.57:4873/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== @@ -23110,16 +23102,7 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "http://52.50.158.57:4873/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "http://52.50.158.57:4873/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -23224,7 +23207,7 @@ stringify-entities@^4.0.0: character-entities-html4 "^2.0.0" character-entities-legacy "^3.0.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "http://52.50.158.57:4873/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -23238,13 +23221,6 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "http://52.50.158.57:4873/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - strip-ansi@^7.0.1, strip-ansi@^7.1.0: version "7.1.2" resolved "http://52.50.158.57:4873/strip-ansi/-/strip-ansi-7.1.2.tgz#132875abde678c7ea8d691533f2e7e22bb744dba" @@ -23895,11 +23871,6 @@ tmpl@1.0.5: resolved "http://52.50.158.57:4873/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "http://52.50.158.57:4873/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - to-regex-range@^5.0.1: version "5.0.1" resolved "http://52.50.158.57:4873/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -25693,7 +25664,7 @@ wordwrap@^1.0.0: resolved "http://52.50.158.57:4873/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" resolved "http://52.50.158.57:4873/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -25729,15 +25700,6 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "http://52.50.158.57:4873/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrap-ansi@^9.0.0: version "9.0.2" resolved "http://52.50.158.57:4873/wrap-ansi/-/wrap-ansi-9.0.2.tgz#956832dea9494306e6d209eb871643bb873d7c98"