mirror of
https://github.com/maputnik/editor.git
synced 2026-10-23 19:33:49 +00:00
Bumps [i18next](https://github.com/i18next/i18next) from 26.4.4 to 26.4.7. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/i18next/i18next/releases">i18next's releases</a>.</em></p> <blockquote> <h2>v26.4.7</h2> <ul> <li>perf: <code>cloneInstance()</code> no longer inherits <code>preload</code>. <code>loadResources()</code> adds every <code>preload</code> language to each load, and clones copied <code>preload</code> from the parent, so a clone's <code>init()</code> and every <code>changeLanguage()</code> walked all preloaded languages × all namespaces through <code>queueLoad()</code> / <code>hasResourceBundle()</code>, although the parent had already loaded them into the shared store. With i18next-http-middleware (one clone + <code>changeLanguage()</code> per request), 25 preloaded languages and 20 namespaces, that was most of the per-request CPU: the reproduction from the issue went from ~90 µs to ~10 µs per request, the same as with a single language. A clone now only loads what it uses itself: its <code>changeLanguage()</code> no longer waits for parent preload languages that are still loading (the parent's own <code>init()</code> still does), and <code>clone.loadNamespaces()</code> loads the new namespace for the clone's language and fallbacks instead of every preloaded language. <code>clone.loadLanguages()</code> works as before, the parent instance is unchanged, and passing <code>preload</code> to <code>cloneInstance()</code> keeps the old behavior. Thanks <a href="https://github.com/theMostCuriousHomunculus"><code>@theMostCuriousHomunculus</code></a> for the detailed report (<a href="https://redirect.github.com/i18next/i18next/issues/2451">#2451</a>).</li> </ul> <h2>v26.4.6</h2> <ul> <li>fix: a fallback language whose formatted code is already in the hierarchy is no longer added a second time. <code>toResolveHierarchy()</code> checked the raw <code>fallbackLng</code> value against the list, but the list holds formatted codes, so any fallback written differently from its formatted form slipped through: <code>lng: 'de-CH'</code> with <code>fallbackLng: 'de-ch'</code> gave <code>languages</code> <code>['de-CH', 'de', 'de-CH']</code>, and the same happened with <code>fallbackLng: 'EN'</code> + <code>cleanCode</code>, <code>lowerCaseLng</code>, and Intl aliases (<code>iw-IL</code> → <code>he-IL</code>). Missing keys were looked up in the same language twice. Only exact duplicates are removed; the order is unchanged. Thanks <a href="https://github.com/lprnmns"><code>@lprnmns</code></a> (<a href="https://redirect.github.com/i18next/i18next/pull/2450">#2450</a>).</li> </ul> <h2>v26.4.5</h2> <ul> <li>fix: <code>hasLoadedNamespace(ns, { lng })</code> no longer stays <code>false</code> forever when the passed in <code>lng</code> is loaded under another code, or not at all. It checked the load state of the raw <code>lng</code>, but <code>loadLanguages()</code> stores a language under its resolved code (<code>de-ch</code> → <code>de-CH</code>, <code>de-CH</code> → <code>de</code> with <code>load: 'languageOnly'</code>) and skips a <code>lng</code> outside <code>supportedLngs</code> entirely (only the fallback gets loaded), so that state never got set. react-i18next's <code>useTranslation(ns, { lng })</code> then never became ready: with <code>useSuspense</code> it kept throwing an already resolved promise and React retried forever (100% CPU, SSR never finished), without it the load effect re-rendered in a loop. It now checks the code the language is actually loaded under, and for a <code>lng</code> outside <code>supportedLngs</code> only waits for the fallback, which is also what <code>t()</code> resolves to. Calls without <code>lng</code> and the <code>precheck</code> (react-i18next's <code>bindI18n: 'languageChanging'</code>) are unchanged (<a href="https://redirect.github.com/i18next/react-i18next/issues/1934">react-i18next#1934</a>).</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/i18next/i18next/blob/master/CHANGELOG.md">i18next's changelog</a>.</em></p> <blockquote> <h2>26.4.7</h2> <ul> <li>perf: <code>cloneInstance()</code> no longer inherits <code>preload</code>. <code>loadResources()</code> adds every <code>preload</code> language to each load, and clones copied <code>preload</code> from the parent, so a clone's <code>init()</code> and every <code>changeLanguage()</code> walked all preloaded languages × all namespaces through <code>queueLoad()</code> / <code>hasResourceBundle()</code>, although the parent had already loaded them into the shared store. With i18next-http-middleware (one clone + <code>changeLanguage()</code> per request), 25 preloaded languages and 20 namespaces, that was most of the per-request CPU: the reproduction from the issue went from ~90 µs to ~10 µs per request, the same as with a single language. A clone now only loads what it uses itself: its <code>changeLanguage()</code> no longer waits for parent preload languages that are still loading (the parent's own <code>init()</code> still does), and <code>clone.loadNamespaces()</code> loads the new namespace for the clone's language and fallbacks instead of every preloaded language. <code>clone.loadLanguages()</code> works as before, the parent instance is unchanged, and passing <code>preload</code> to <code>cloneInstance()</code> keeps the old behavior. Thanks <a href="https://github.com/theMostCuriousHomunculus"><code>@theMostCuriousHomunculus</code></a> for the detailed report (<a href="https://redirect.github.com/i18next/i18next/issues/2451">#2451</a>).</li> </ul> <h2>26.4.6</h2> <ul> <li>fix: a fallback language whose formatted code is already in the hierarchy is no longer added a second time. <code>toResolveHierarchy()</code> checked the raw <code>fallbackLng</code> value against the list, but the list holds formatted codes, so any fallback written differently from its formatted form slipped through: <code>lng: 'de-CH'</code> with <code>fallbackLng: 'de-ch'</code> gave <code>languages</code> <code>['de-CH', 'de', 'de-CH']</code>, and the same happened with <code>fallbackLng: 'EN'</code> + <code>cleanCode</code>, <code>lowerCaseLng</code>, and Intl aliases (<code>iw-IL</code> → <code>he-IL</code>). Missing keys were looked up in the same language twice. Only exact duplicates are removed; the order is unchanged. Thanks <a href="https://github.com/lprnmns"><code>@lprnmns</code></a> (<a href="https://redirect.github.com/i18next/i18next/pull/2450">#2450</a>).</li> </ul> <h2>26.4.5</h2> <ul> <li>fix: <code>hasLoadedNamespace(ns, { lng })</code> no longer stays <code>false</code> forever when the passed in <code>lng</code> is loaded under another code, or not at all. It checked the load state of the raw <code>lng</code>, but <code>loadLanguages()</code> stores a language under its resolved code (<code>de-ch</code> → <code>de-CH</code>, <code>de-CH</code> → <code>de</code> with <code>load: 'languageOnly'</code>) and skips a <code>lng</code> outside <code>supportedLngs</code> entirely (only the fallback gets loaded), so that state never got set. react-i18next's <code>useTranslation(ns, { lng })</code> then never became ready: with <code>useSuspense</code> it kept throwing an already resolved promise and React retried forever (100% CPU, SSR never finished), without it the load effect re-rendered in a loop. It now checks the code the language is actually loaded under, and for a <code>lng</code> outside <code>supportedLngs</code> only waits for the fallback, which is also what <code>t()</code> resolves to. Calls without <code>lng</code> and the <code>precheck</code> (react-i18next's <code>bindI18n: 'languageChanging'</code>) are unchanged (<a href="https://redirect.github.com/i18next/react-i18next/issues/1934">react-i18next#1934</a>).</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/i18next/i18next/commit/5546d211a32e73642d22b57e58cc762338270afa"><code>5546d21</code></a> 26.4.7</li> <li><a href="https://github.com/i18next/i18next/commit/f27c937e5866f33700db40d0bf055694ee890cca"><code>f27c937</code></a> build</li> <li><a href="https://github.com/i18next/i18next/commit/50ecc221940e99dcb36670c93b342a896165fca4"><code>50ecc22</code></a> perf: clones no longer inherit preload, so changeLanguage on a clone doesn't ...</li> <li><a href="https://github.com/i18next/i18next/commit/bc951ab36e601d459e4afe7040c72cc7632d3b9e"><code>bc951ab</code></a> 26.4.6</li> <li><a href="https://github.com/i18next/i18next/commit/45d0aba52fba755039a8f6f6be76825f5aebaa81"><code>45d0aba</code></a> changelog + build for 26.4.6</li> <li><a href="https://github.com/i18next/i18next/commit/0458efc507c88e78b2daa4b0cab9c254cfdc77d2"><code>0458efc</code></a> fix: don't repeat a fallback language that differs only in casing (<a href="https://redirect.github.com/i18next/i18next/issues/2450">#2450</a>)</li> <li><a href="https://github.com/i18next/i18next/commit/ce7b9cf970b2e6dcbecc6eb997d460ea1ea811ad"><code>ce7b9cf</code></a> 26.4.5</li> <li><a href="https://github.com/i18next/i18next/commit/4d4c60720e05da72e53af33fa0a8e0d69a56487a"><code>4d4c607</code></a> build</li> <li><a href="https://github.com/i18next/i18next/commit/8f8651e938e122b5e40eacf616c9fb823a189087"><code>8f8651e</code></a> fix: hasLoadedNamespace with a passed in lng checks the code it is actually l...</li> <li><a href="https://github.com/i18next/i18next/commit/15d0b9d90e0564947861b926352b06deff0a8a05"><code>15d0b9d</code></a> changelog: link GHSA-5jr9-983r-c8x4 in v26.4.4</li> <li>Additional commits viewable in <a href="https://github.com/i18next/i18next/compare/v26.4.4...v26.4.7">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
153 lines
5.0 KiB
JSON
153 lines
5.0 KiB
JSON
{
|
|
"name": "maputnik",
|
|
"version": "3.1.0",
|
|
"description": "A MapLibre GL visual style editor",
|
|
"type": "module",
|
|
"main": "''",
|
|
"scripts": {
|
|
"copy-rtl-text-plugin": "mkdir -p public && cp -p node_modules/@mapbox/mapbox-gl-rtl-text/dist/mapbox-gl-rtl-text.js public/",
|
|
"start": "npm run copy-rtl-text-plugin && vite",
|
|
"build": "npm run copy-rtl-text-plugin && tsc && vite build --mode=production",
|
|
"build-desktop": "npm run copy-rtl-text-plugin && tsc && vite build --mode=desktop && cd desktop && make",
|
|
"build-linux": "npm run copy-rtl-text-plugin && tsc && vite build --mode=desktop && cd desktop && make bin/linux/maputnik",
|
|
"i18n:extract": "npx i18next-cli extract",
|
|
"lint": "eslint",
|
|
"test": "playwright test",
|
|
"test-e2e": "playwright test",
|
|
"test-unit": "vitest",
|
|
"test-unit-ci": "vitest run --coverage --reporter=json",
|
|
"lint-css": "stylelint \"src/styles/*.scss\"",
|
|
"sort-styles": "jq 'sort_by(.id)' src/config/styles.json > tmp.json && mv tmp.json src/config/styles.json"
|
|
},
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "https://github.com/maplibre/maputnik"
|
|
},
|
|
"author": "Lukas Martinelli",
|
|
"license": "MIT",
|
|
"homepage": "https://github.com/maplibre/maputnik#readme",
|
|
"dependencies": {
|
|
"@codemirror/lang-json": "^6.0.2",
|
|
"@codemirror/lint": "^6.9.7",
|
|
"@codemirror/state": "^6.7.6",
|
|
"@codemirror/theme-one-dark": "^6.1.3",
|
|
"@codemirror/view": "^6.43.14",
|
|
"@dnd-kit/core": "^6.3.1",
|
|
"@dnd-kit/sortable": "^10.0.0",
|
|
"@dnd-kit/utilities": "^3.2.2",
|
|
"@mapbox/mapbox-gl-rtl-text": "^0.4.0",
|
|
"@maplibre/maplibre-gl-geocoder": "^1.9.4",
|
|
"@maplibre/maplibre-gl-inspect": "^1.9.0",
|
|
"@maplibre/maplibre-gl-style-spec": "^26.4.4",
|
|
"array-move": "^4.0.0",
|
|
"buffer": "^6.0.3",
|
|
"classnames": "^2.5.1",
|
|
"codemirror": "^6.0.2",
|
|
"color": "^5.0.3",
|
|
"detect-browser": "^5.3.0",
|
|
"downshift": "^9.4.0",
|
|
"events": "^3.3.0",
|
|
"file-saver": "^2.0.5",
|
|
"i18next": "^26.4.7",
|
|
"i18next-browser-languagedetector": "^8.2.1",
|
|
"i18next-resources-to-backend": "^1.2.3",
|
|
"json-stringify-pretty-compact": "^4.0.0",
|
|
"json-to-ast": "^2.1.0",
|
|
"lodash": "^4.18.1",
|
|
"lodash.capitalize": "^4.2.1",
|
|
"lodash.clamp": "^4.0.3",
|
|
"lodash.clonedeep": "^4.5.0",
|
|
"lodash.get": "^4.4.2",
|
|
"lodash.isequal": "^4.5.0",
|
|
"lodash.throttle": "^4.1.1",
|
|
"maplibre-gl": "^6.14.0",
|
|
"maputnik-design": "github:maputnik/design#172b06c",
|
|
"ol": "^10.11.0",
|
|
"ol-mapbox-style": "^13.8.0",
|
|
"pmtiles": "^4.5.0",
|
|
"prop-types": "^15.8.1",
|
|
"react": "^19.3.0",
|
|
"react-accessible-accordion": "^5.0.1",
|
|
"react-aria-menubutton": "^8.0.0",
|
|
"react-aria-modal": "^5.0.2",
|
|
"react-collapse": "^5.1.1",
|
|
"react-color": "^2.19.3",
|
|
"react-dom": "^19.3.0",
|
|
"react-i18next": "^17.0.16",
|
|
"react-icons": "^5.7.0",
|
|
"react-markdown": "^10.1.0",
|
|
"react-resizable-panels": "^4.14.5",
|
|
"reconnecting-websocket": "^4.4.0",
|
|
"slugify": "^1.6.9",
|
|
"string-hash": "^1.1.3",
|
|
"url": "^0.11.4"
|
|
},
|
|
"jshintConfig": {
|
|
"esversion": 6
|
|
},
|
|
"stylelint": {
|
|
"extends": "stylelint-config-recommended-scss",
|
|
"rules": {
|
|
"no-descending-specificity": null,
|
|
"media-feature-name-no-unknown": [
|
|
true,
|
|
{
|
|
"ignoreMediaFeatureNames": [
|
|
"prefers-reduced-motion"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"devDependencies": {
|
|
"@eslint/js": "^10.0.1",
|
|
"@istanbuljs/nyc-config-typescript": "^1.0.2",
|
|
"@playwright/test": "^1.64.1",
|
|
"@stylistic/eslint-plugin": "^5.10.0",
|
|
"@types/codemirror": "^5.60.18",
|
|
"@types/color": "^4.2.1",
|
|
"@types/cors": "^2.8.19",
|
|
"@types/file-saver": "^2.0.7",
|
|
"@types/geojson": "^7946.0.16",
|
|
"@types/json-to-ast": "^2.1.4",
|
|
"@types/lodash.capitalize": "^4.2.9",
|
|
"@types/lodash.clamp": "^4.0.9",
|
|
"@types/lodash.clonedeep": "^4.5.9",
|
|
"@types/lodash.get": "^4.4.9",
|
|
"@types/lodash.isequal": "^4.5.8",
|
|
"@types/lodash.throttle": "^4.1.9",
|
|
"@types/randomcolor": "^0.5.9",
|
|
"@types/react": "^19.3.0",
|
|
"@types/react-aria-menubutton": "^6.2.14",
|
|
"@types/react-aria-modal": "^5.0.0",
|
|
"@types/react-collapse": "^5.0.4",
|
|
"@types/react-color": "^3.0.13",
|
|
"@types/react-dom": "^19.3.0",
|
|
"@types/string-hash": "^1.1.3",
|
|
"@types/wicg-file-system-access": "^2023.10.7",
|
|
"@vitejs/plugin-react": "^6.1.2",
|
|
"@vitest/coverage-v8": "^5.0.5",
|
|
"cors": "^2.8.6",
|
|
"eslint": "^10.12.0",
|
|
"eslint-plugin-react": "^7.37.5",
|
|
"eslint-plugin-react-hooks": "^7.1.1",
|
|
"eslint-plugin-react-refresh": "^0.5.7",
|
|
"i18next-cli": "^1.75.3",
|
|
"istanbul": "^0.4.5",
|
|
"istanbul-lib-coverage": "^3.2.2",
|
|
"nyc": "^18.0.0",
|
|
"postcss": "^8.5.30",
|
|
"react-hot-loader": "^4.13.1",
|
|
"sass": "^1.105.2",
|
|
"stylelint": "^17.16.0",
|
|
"stylelint-config-recommended-scss": "^17.0.1",
|
|
"stylelint-scss": "^7.3.0",
|
|
"typescript": "^6.0.3",
|
|
"typescript-eslint": "^8.71.2",
|
|
"uuid": "^14.0.3",
|
|
"vite": "^8.3.4",
|
|
"vite-plugin-istanbul": "^9.0.1",
|
|
"vitest": "^5.0.5"
|
|
}
|
|
}
|