Files
editor/package.json
T
dependabot[bot] f5c9d9f323 chore(deps-dev): Bump i18next-cli from 1.77.0 to 1.80.0 (#2266)
Bumps [i18next-cli](https://github.com/i18next/i18next-cli) from 1.77.0
to 1.80.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/i18next/i18next-cli/blob/main/CHANGELOG.md">i18next-cli's
changelog</a>.</em></p>
<blockquote>
<h2>1.80.0</h2>
<ul>
<li>feat(lint): in the i18next format, the translation files of every
locale are compared with the primary language:
interpolations by name (<code>{{name}}</code>, <code>{{- name}}</code>,
<code>{{val, number}}</code>), nested <code>$t(key)</code> references
and tags (<code>&lt;0&gt;</code>,
<code>&lt;1/&gt;</code>, <code>&lt;bold&gt;</code>), except the basic
HTML react-i18next keeps (<code>transKeepBasicHtmlNodesFor</code>). A
translation that
renamed or dropped a placeholder is reported with file, key and line,
e.g.
<code>greeting: missing {{name}}, unexpected {{nom}} (compared with
&quot;en&quot;)</code>. Plural forms are compared as a group, so
<code>{{count}}</code> may be left out of <code>_one</code> or
<code>_zero</code>. A warning by default, so existing CI runs keep
passing;
<code>lint.checkTranslationPlaceholders: 'error'</code> fails the run,
<code>'off'</code> disables it. Until now only ICU and MF2 projects
had this check.</li>
<li>feat(status): values identical to the primary language (English
copied into <code>de</code>) are marked
<code>≈ (identical to en)</code> and counted in the summary.
<code>status.checkIdentical</code>: <code>'warn'</code> (default) still
counts them as
translated and keeps the exit code, <code>'error'</code> counts them as
untranslated, <code>'off'</code> disables it. Locales of the
primary's language (<code>en-GB</code> with <code>en</code>), values
without letters, URLs, e-mail addresses and short all-caps words
(<code>OK</code>, <code>FAQ</code>) are skipped; other values that stay
the same go into <code>status.ignoreKeys</code>.</li>
<li>feat(lint): <code>lint --update-baseline</code> writes the current
issues to <code>i18next-lint-baseline.json</code>
(<code>lint.baseline</code> for
another path). While the file exists, <code>lint</code> reports and
fails only on new issues, so a codebase with existing
hardcoded strings can run <code>lint</code> in CI. Issues are matched by
file, type and text, not by line.</li>
<li>fix(lint): interpolations are read like i18next does. The unescaped
<code>{{-name}}</code> was read as a parameter <code>-name</code>, so
<code>t('Hi {{-name}}', { name })</code> reported two false
interpolation issues; <code>{{- name}}</code> and names outside
<code>[A-Za-z0-9_.-]</code>
(<code>{{größe}}</code>) were not read at all.</li>
<li>docs(types): <code>transKeepBasicHtmlNodesFor</code> defaults to
react-i18next's <code>['br', 'strong', 'i', 'p']</code>.</li>
<li>docs(skill, localize): after translating by hand, run
<code>lint</code> to check the placeholders.</li>
</ul>
<h2>1.79.1</h2>
<ul>
<li>fix(init, migrate-config): the default source glob includes
<code>.mjs</code> (<code>src/**/*.{js,jsx,mjs,ts,tsx}</code>), in
<code>init</code>, in the
config detected for a project without one, and in
<code>migrate-config</code> when the old config has no
<code>input</code>. Existing
configs do not change. <a
href="https://redirect.github.com/i18next/i18next-cli/pull/309#issuecomment-6310275918">#309</a></li>
</ul>
<h2>1.79.0</h2>
<ul>
<li>feat(extract, instrument, lint): a <code>.mjs</code> file with JSX
is parsed with the same JSX fallback as a <code>.js</code> file,
including the constants pre-scan of <code>extract</code>. Before, it
failed with a syntax error and <code>extract</code> exited with 1.
<a
href="https://redirect.github.com/i18next/i18next-cli/pull/309">#309</a></li>
</ul>
<h2>1.78.0</h2>
<ul>
<li>feat(lint): with <code>messageFormat: 'mf2'</code>,
<code>lint</code> warns when whitespace at the start or end of a pattern
differs from
the primary language. MF2 keeps a space inside <code>{{ }}</code> as
text, so <code>{{ {$count} files}}</code> shows it in the app. A
warning does not fail the run.</li>
<li>fix(lint): a language code with <code>_</code> (<code>ru_RU</code>,
<code>pt_BR</code>) is read as <code>ru-RU</code>, <code>pt-BR</code>
for the plural categories. Before,
<code>Intl</code> rejected it and only <code>other</code> was required,
so a <code>ru_RU</code> plural with only <code>one</code> and
<code>other</code> passed.</li>
<li>fix(lint): the required plural categories are <code>other</code>
plus every category a whole number below one million selects
(was 0 to 1000), the same rule as Locize; exact selectors count for a
category only when it selects a few small
numbers. No locale's result changes with today's CLDR data.</li>
<li>docs(skill): the ICU and MF2 reference names the common MF2 plural
mistakes: <code>other</code> instead of <code>*</code>, <code>{{
{$count}</code>
instead of <code>{{{$count}</code>, and spaces inside <code>{{
}}</code>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/i18next/i18next-cli/commit/6a339b2ab661cc4465b46f5276c448e2e44287b2"><code>6a339b2</code></a>
1.80.0</li>
<li><a
href="https://github.com/i18next/i18next-cli/commit/3f5ffd91fdc458fb0c0be086a5f6cf9e75c6a084"><code>3f5ffd9</code></a>
feat(lint, status): placeholders across locales, identical values, lint
baseline</li>
<li><a
href="https://github.com/i18next/i18next-cli/commit/73b085de457bcf6ffd9b868f2c5d71cc55c5dfb6"><code>73b085d</code></a>
1.79.1</li>
<li><a
href="https://github.com/i18next/i18next-cli/commit/f479d53ac90ade3d7e7dc71313fd9f79b0e198c4"><code>f479d53</code></a>
fix(init, migrate-config): include .mjs in the default source glob</li>
<li><a
href="https://github.com/i18next/i18next-cli/commit/ee7b1aa652ec89fab53f8d2b3f74e23910b91099"><code>ee7b1aa</code></a>
1.79.0</li>
<li><a
href="https://github.com/i18next/i18next-cli/commit/7c95544e98d6732f816a0c724d5e9816e25a31b5"><code>7c95544</code></a>
fix(extract): JSX fallback for .mjs in the constants pre-scan too</li>
<li><a
href="https://github.com/i18next/i18next-cli/commit/d320c6aad9d3d5f21907281406963a1852ece7a4"><code>d320c6a</code></a>
feat(extract, instrument, lint): support .mjs files with JSX (<a
href="https://redirect.github.com/i18next/i18next-cli/issues/309">#309</a>)</li>
<li><a
href="https://github.com/i18next/i18next-cli/commit/20524b8fe98937c79859cad42658f40709304bde"><code>20524b8</code></a>
1.78.0</li>
<li><a
href="https://github.com/i18next/i18next-cli/commit/462ed40b05e2b9637d56efcce9c850a287312a3d"><code>462ed40</code></a>
feat(lint): MF2 pattern-edge whitespace warning, <code>_</code> language
codes, plural r...</li>
<li>See full diff in <a
href="https://github.com/i18next/i18next-cli/compare/v1.77.0...v1.80.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=i18next-cli&package-manager=npm_and_yarn&previous-version=1.77.0&new-version=1.80.0)](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>
2026-10-26 14:04:15 +00:00

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.15",
"@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.5.3",
"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.15.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.1",
"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.1",
"react-i18next": "^17.1.4",
"react-icons": "^5.7.0",
"react-markdown": "^10.1.0",
"react-resizable-panels": "^4.14.8",
"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.13.0",
"eslint-plugin-react": "^7.37.5",
"eslint-plugin-react-hooks": "^7.1.1",
"eslint-plugin-react-refresh": "^0.5.7",
"i18next-cli": "^1.80.0",
"istanbul": "^0.4.5",
"istanbul-lib-coverage": "^3.2.2",
"nyc": "^18.0.0",
"postcss": "^8.5.31",
"react-hot-loader": "^4.13.1",
"sass": "^1.106.1",
"stylelint": "^17.16.0",
"stylelint-config-recommended-scss": "^17.0.1",
"stylelint-scss": "^7.3.0",
"typescript": "^6.0.3",
"typescript-eslint": "^8.72.0",
"uuid": "^14.0.3",
"vite": "^8.3.5",
"vite-plugin-istanbul": "^9.0.1",
"vitest": "^5.0.5"
}
}