Replace `prettier` with `oxfmt` (#37893)

pull/37924/head
Renaud Chaput 4 days ago committed by GitHub
parent 8e7c3973dc
commit e24737c612
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -18,5 +18,5 @@ jobs:
- name: Set up Javascript environment
uses: ./.github/actions/setup-javascript
- name: Check formatting with Prettier
- name: Check formatting
run: yarn format:check

@ -0,0 +1,92 @@
{
"$schema": "./node_modules/oxfmt/configuration_schema.json",
"singleQuote": true,
"jsxSingleQuote": true,
"printWidth": 80,
"ignorePatterns": [
"/tmp",
"/coverage",
"/public/assets",
"/public/emoji",
"/public/packs",
"/public/packs-test",
"/public/system",
"/public/vite*",
"*.html",
"docker-compose.override.yml",
// Ignore config YAML files that include ERB/ruby code
"config/email.yml",
// Vendored CSS
"app/javascript/styles/mastodon/reset.scss",
// Automatically generated
"/app/javascript/mastodon/features/emoji/emoji_map.json",
"/app/javascript/mastodon/features/emoji/emoji_data.json",
"AUTHORS.md",
"/app/javascript/mastodon/locales/*.json",
"/config/locales",
".storybook/static/mockServiceWorker.js",
// do not reformat JS files as this will change too many files and cause merge conflicts with open PRs and forks
"app/javascript/**/*.js",
"app/javascript/**/*.jsx",
"streaming/**/*.js"
],
"experimentalSortPackageJson": false,
"experimentalSortImports": {
"groups": [
["builtin"],
["react"],
["react-intl"],
["react-utils"],
["redux"],
["external", "type-external"],
["internal", "type-internal"],
["mastodon-internals"],
["parent", "type-parent"],
["sibling", "type-sibling", "index", "type-index"],
["side_effect"]
],
"customGroups": [
{
"groupName": "react",
"elementNamePattern": [
"react",
"react-dom",
"react-dom/client",
"prop-types"
]
},
{
"groupName": "react-intl",
"elementNamePattern": ["react-intl", "intl-messageformat"]
},
{
"groupName": "react-utils",
"elementNamePattern": [
"classnames",
"react-helmet",
"react-router",
"react-router-dom"
]
},
{
"groupName": "redux",
"elementNamePattern": [
"immutable",
"@reduxjs/toolkit",
"react-redux",
"react-immutable-proptypes",
"react-immutable-pure-component"
]
},
{
"groupName": "mastodon-internals",
"elementNamePattern": ["mastodon/**", "@/**"]
}
]
}
}

@ -1,86 +0,0 @@
# See https://help.github.com/articles/ignoring-files for more about ignoring files.
#
# If you find yourself ignoring temporary files generated by your text editor
# or operating system, you probably want to add a global ignore instead:
# git config --global core.excludesfile '~/.gitignore_global'
# Ignore bundler config and downloaded libraries.
/.bundle
/vendor/bundle
# Ignore the default SQLite database.
/db/*.sqlite3
/db/*.sqlite3-journal
# Ignore all logfiles and tempfiles.
.eslintcache
/log/*
!/log/.keep
/tmp
/coverage
.env
.env.production
.env.development
/node_modules/
/build/
# Ignore Vagrant files
.vagrant/
# Ignore IDE files
.vscode/
.idea/
# Ignore postgres + redis + elasticsearch volume optionally created by docker-compose
/postgres
/postgres14
/redis
/elasticsearch
# Ignore Apple files
.DS_Store
# Ignore vim files
*~
*.swp
# Ignore log files
*.log
# Ignore Docker option files
docker-compose.override.yml
# Ignore public
/public/assets
/public/emoji
/public/packs
/public/packs-test
/public/system
/public/vite*
# Ignore emoji map file
/app/javascript/mastodon/features/emoji/emoji_map.json
/app/javascript/mastodon/features/emoji/emoji_data.json
# Ignore locale files
/app/javascript/mastodon/locales/*.json
/config/locales
# Ignore vendored CSS reset
app/javascript/styles/mastodon/reset.scss
# Ignore Javascript pending https://github.com/mastodon/mastodon/pull/23631
*.js
*.jsx
# Ignore HTML till cleaned and included in CI
*.html
# Ignore the generated AUTHORS.md
AUTHORS.md
# Process a few selected JS files
!lint-staged.config.js
# Ignore config YAML files that include ERB/ruby code prettier does not understand
/config/email.yml

@ -1,4 +0,0 @@
module.exports = {
singleQuote: true,
jsxSingleQuote: true
};

@ -21,9 +21,10 @@ import { reducerWithInitialState } from '@/mastodon/reducers';
import { defaultMiddleware } from '@/mastodon/store/store';
import { mockHandlers, unhandledRequestHandler } from '@/testing/api';
import { modes } from './modes';
import '../app/javascript/styles/application.scss';
import './styles.css';
import { modes } from './modes';
const localeFiles = import.meta.glob('@/mastodon/locales/*.json', {
query: { as: 'json' },

@ -366,9 +366,9 @@ on('change', '#account_statuses_cleanup_policy_enabled', ({ target }) => {
if (!(target instanceof HTMLInputElement) || !target.form) return;
target.form
.querySelectorAll<
HTMLInputElement | HTMLSelectElement
>('input:not([type=hidden], #account_statuses_cleanup_policy_enabled), select')
.querySelectorAll<HTMLInputElement | HTMLSelectElement>(
'input:not([type=hidden], #account_statuses_cleanup_policy_enabled), select',
)
.forEach((input) => {
setInputDisabled(input, !target.checked);
});

@ -2,11 +2,11 @@ import { useState, useCallback, useRef, useId } from 'react';
import { FormattedMessage } from 'react-intl';
import Overlay from 'react-overlays/Overlay';
import type {
OffsetValue,
UsePopperOptions,
} from 'react-overlays/esm/usePopper';
import Overlay from 'react-overlays/Overlay';
import { useSelectableClick } from 'mastodon/hooks/useSelectableClick';

@ -13,12 +13,12 @@ import { Link } from 'react-router-dom';
import type { Map as ImmutableMap } from 'immutable';
import Overlay from 'react-overlays/Overlay';
import type {
OffsetValue,
UsePopperOptions,
Placement,
} from 'react-overlays/esm/usePopper';
import Overlay from 'react-overlays/Overlay';
import { fetchRelationships } from 'mastodon/actions/accounts';
import {
@ -90,7 +90,7 @@ export const DropdownMenuItemContent: React.FC<{ item: MenuItem }> = ({
);
};
export const DropdownMenu = <Item = MenuItem,>({
export const DropdownMenu = <Item = MenuItem>({
items,
loading,
scrollable,

@ -2,11 +2,11 @@ import { useEffect, useRef, useState, useCallback } from 'react';
import { useLocation } from 'react-router-dom';
import Overlay from 'react-overlays/Overlay';
import type {
OffsetValue,
UsePopperOptions,
} from 'react-overlays/esm/usePopper';
import Overlay from 'react-overlays/Overlay';
import { HoverCardAccount } from 'mastodon/components/hover_card_account';
import { useTimeout } from 'mastodon/hooks/useTimeout';

@ -4,11 +4,11 @@ import { useIntl, defineMessages } from 'react-intl';
import { useLocation } from 'react-router-dom';
import Overlay from 'react-overlays/Overlay';
import type {
OffsetValue,
UsePopperOptions,
} from 'react-overlays/esm/usePopper';
import Overlay from 'react-overlays/Overlay';
import { DropdownMenu } from 'mastodon/components/dropdown_menu';
import { useIdentity } from 'mastodon/identity_context';

@ -1,6 +1,8 @@
const path = require('path');
const currentTranslations = require(path.join(__dirname, "../app/javascript/mastodon/locales/en.json"));
const currentTranslations = require(
path.join(__dirname, '../app/javascript/mastodon/locales/en.json'),
);
exports.format = (msgs) => {
const results = {};

@ -3,7 +3,6 @@
import path from 'node:path';
import js from '@eslint/js';
import { globalIgnores } from 'eslint/config';
import formatjs from 'eslint-plugin-formatjs';
import importPlugin from 'eslint-plugin-import';
import jsdoc from 'eslint-plugin-jsdoc';
@ -12,6 +11,7 @@ import promisePlugin from 'eslint-plugin-promise';
import react from 'eslint-plugin-react';
import reactHooks from 'eslint-plugin-react-hooks';
import storybook from 'eslint-plugin-storybook';
import { globalIgnores } from 'eslint/config';
import globals from 'globals';
import tseslint from 'typescript-eslint';
@ -90,57 +90,6 @@ export const baseConfig = [
'import/no-relative-packages': 'error',
'import/no-self-import': 'error',
'import/no-useless-path-segments': 'error',
'import/order': [
'error',
{
alphabetize: {
order: 'asc',
},
'newlines-between': 'always',
groups: [
'builtin',
'external',
'internal',
'parent',
['index', 'sibling'],
'object',
],
pathGroups: [
{
pattern: '{react,react-dom,react-dom/client,prop-types}',
group: 'builtin',
position: 'after',
},
{
pattern: '{react-intl,intl-messageformat}',
group: 'builtin',
position: 'after',
},
{
pattern:
'{classnames,react-helmet,react-router,react-router-dom}',
group: 'external',
position: 'before',
},
{
pattern:
'{immutable,@reduxjs/toolkit,react-redux,react-immutable-proptypes,react-immutable-pure-component}',
group: 'external',
position: 'before',
},
{
pattern: '{mastodon/**}',
group: 'internal',
position: 'after',
},
],
pathGroupsExcludedImportTypes: [],
},
],
'jsdoc/check-types': 'off',
'jsdoc/no-undefined-types': 'off',

@ -1,5 +1,5 @@
const config = {
'*': 'prettier --ignore-unknown --write',
'*': 'oxfmt --no-error-on-unmatched-pattern',
'Gemfile|*.{rb,ruby,ru,rake}': 'bin/rubocop --force-exclusion -a',
'*.{js,jsx,ts,tsx}': 'eslint --fix',
'*.{css,scss}': 'stylelint --fix',

@ -16,8 +16,8 @@
"fix:js": "eslint . --cache --fix",
"fix:css": "stylelint --fix \"**/*.{css,scss}\"",
"fix": "yarn fix:js && yarn fix:css",
"format": "prettier --write --log-level warn .",
"format:check": "prettier --check --ignore-unknown .",
"format": "oxfmt",
"format:check": "oxfmt --check",
"i18n:extract": "formatjs extract 'app/javascript/**/*.{js,jsx,ts,tsx}' config/vite/plugin-sw-locales.ts --ignore '**/*.d.ts' --out-file app/javascript/mastodon/locales/en.json --format config/formatjs-formatter.js",
"lint:js": "cd $INIT_CWD && eslint --cache --report-unused-disable-directives",
"lint:css": "stylelint \"**/*.{css,scss}\"",
@ -180,8 +180,8 @@
"lint-staged": "^16.2.6",
"msw": "^2.12.1",
"msw-storybook-addon": "^2.0.6",
"oxfmt": "^0.33.0",
"playwright": "^1.57.0",
"prettier": "^3.3.3",
"react-test-renderer": "^18.2.0",
"storybook": "^10.0.5",
"stylelint": "^17.0.0",

@ -21,7 +21,9 @@
* @param {Map} map
*/
var generateId = function (map) {
var id = 0, failCount = 0, idBuffer = new Uint32Array(1);
var id = 0,
failCount = 0,
idBuffer = new Uint32Array(1);
while (id === 0 || map.has(id)) {
id = crypto.getRandomValues(idBuffer)[0];
@ -44,7 +46,11 @@
window.addEventListener('message', function (e) {
var data = e.data || {};
if (typeof data !== 'object' || data.type !== 'setHeight' || !embeds.has(data.id)) {
if (
typeof data !== 'object' ||
data.type !== 'setHeight' ||
!embeds.has(data.id)
) {
return;
}
@ -72,7 +78,7 @@
});
// Legacy embeds
document.querySelectorAll('iframe.mastodon-embed').forEach(iframe => {
document.querySelectorAll('iframe.mastodon-embed').forEach((iframe) => {
var id = generateId(embeds);
embeds.set(id, iframe);
@ -84,44 +90,64 @@
iframe.style.display = 'block';
iframe.onload = function () {
iframe.contentWindow.postMessage({
type: 'setHeight',
id: id,
}, '*');
iframe.contentWindow.postMessage(
{
type: 'setHeight',
id: id,
},
'*',
);
};
iframe.onload(); // In case the script is executing after the iframe has already loaded
});
// New generation of embeds
document.querySelectorAll('blockquote.mastodon-embed').forEach(container => {
var id = generateId(embeds);
embeds.set(id, container);
document
.querySelectorAll('blockquote.mastodon-embed')
.forEach((container) => {
var id = generateId(embeds);
var iframe = document.createElement('iframe');
var embedUrl = new URL(container.getAttribute('data-embed-url'));
embeds.set(id, container);
if (embedUrl.protocol !== 'https:' && embedUrl.protocol !== 'http:') return;
if (allowedPrefixes.every((allowedPrefix) => !embedUrl.toString().startsWith(allowedPrefix))) return;
iframe.src = embedUrl.toString();
iframe.width = container.clientWidth;
iframe.height = 0;
iframe.allow = 'fullscreen';
iframe.sandbox = 'allow-scripts allow-same-origin allow-popups';
iframe.style.border = 0;
iframe.style.overflow = 'hidden';
iframe.style.display = 'block';
var iframe = document.createElement('iframe');
var embedUrl = new URL(container.getAttribute('data-embed-url'));
iframe.onload = function () {
iframe.contentWindow.postMessage({
type: 'setHeight',
id: id,
}, '*');
};
if (embedUrl.protocol !== 'https:' && embedUrl.protocol !== 'http:')
return;
if (
allowedPrefixes.every(
(allowedPrefix) => !embedUrl.toString().startsWith(allowedPrefix),
)
)
return;
container.appendChild(iframe);
});
iframe.src = embedUrl.toString();
iframe.width = container.clientWidth;
iframe.height = 0;
iframe.allow = 'fullscreen';
iframe.sandbox = 'allow-scripts allow-same-origin allow-popups';
iframe.style.border = 0;
iframe.style.overflow = 'hidden';
iframe.style.display = 'block';
iframe.onload = function () {
iframe.contentWindow.postMessage(
{
type: 'setHeight',
id: id,
},
'*',
);
};
container.appendChild(iframe);
});
});
})((document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT' && document.currentScript.dataset.allowedPrefixes) ? document.currentScript.dataset.allowedPrefixes.split(' ') : []);
})(
document.currentScript &&
document.currentScript.tagName.toUpperCase() === 'SCRIPT' &&
document.currentScript.dataset.allowedPrefixes
? document.currentScript.dataset.allowedPrefixes.split(' ')
: [],
);

@ -36,20 +36,22 @@ module.exports = {
'property-no-unknown': [
true,
{
ignoreProperties: [
'/^mso-/',
] },
ignoreProperties: ['/^mso-/'],
},
],
},
},
{
files: ['app/javascript/**/*.module.scss', 'app/javascript/**/*.module.css'],
files: [
'app/javascript/**/*.module.scss',
'app/javascript/**/*.module.css',
],
rules: {
'selector-pseudo-class-no-unknown': [
true,
{ ignorePseudoClasses: ['global'] },
]
}
],
},
},
],
};

@ -1,5 +1,5 @@
import path from 'node:path';
import { readdir } from 'node:fs/promises';
import path from 'node:path';
import { optimizeLodashImports } from '@optimize-lodash/rollup-plugin';
import legacy from '@vitejs/plugin-legacy';
@ -18,11 +18,11 @@ import { VitePWA } from 'vite-plugin-pwa';
import svgr from 'vite-plugin-svgr';
import tsconfigPaths from 'vite-tsconfig-paths';
import { MastodonServiceWorkerLocales } from './config/vite/plugin-sw-locales';
import { MastodonAssetsManifest } from './config/vite/plugin-assets-manifest';
import { MastodonEmojiCompressed } from './config/vite/plugin-emoji-compressed';
import { MastodonThemes } from './config/vite/plugin-mastodon-themes';
import { MastodonNameLookup } from './config/vite/plugin-name-lookup';
import { MastodonAssetsManifest } from './config/vite/plugin-assets-manifest';
import { MastodonServiceWorkerLocales } from './config/vite/plugin-sw-locales';
const jsRoot = path.resolve(__dirname, 'app/javascript');

@ -2886,10 +2886,10 @@ __metadata:
marky: "npm:^1.2.5"
msw: "npm:^2.12.1"
msw-storybook-addon: "npm:^2.0.6"
oxfmt: "npm:^0.33.0"
path-complete-extname: "npm:^1.0.0"
playwright: "npm:^1.57.0"
postcss-preset-env: "npm:^11.0.0"
prettier: "npm:^3.3.3"
prop-types: "npm:^15.8.1"
punycode: "npm:^2.3.0"
react: "npm:^18.2.0"
@ -3124,6 +3124,139 @@ __metadata:
languageName: node
linkType: hard
"@oxfmt/binding-android-arm-eabi@npm:0.33.0":
version: 0.33.0
resolution: "@oxfmt/binding-android-arm-eabi@npm:0.33.0"
conditions: os=android & cpu=arm
languageName: node
linkType: hard
"@oxfmt/binding-android-arm64@npm:0.33.0":
version: 0.33.0
resolution: "@oxfmt/binding-android-arm64@npm:0.33.0"
conditions: os=android & cpu=arm64
languageName: node
linkType: hard
"@oxfmt/binding-darwin-arm64@npm:0.33.0":
version: 0.33.0
resolution: "@oxfmt/binding-darwin-arm64@npm:0.33.0"
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
"@oxfmt/binding-darwin-x64@npm:0.33.0":
version: 0.33.0
resolution: "@oxfmt/binding-darwin-x64@npm:0.33.0"
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
"@oxfmt/binding-freebsd-x64@npm:0.33.0":
version: 0.33.0
resolution: "@oxfmt/binding-freebsd-x64@npm:0.33.0"
conditions: os=freebsd & cpu=x64
languageName: node
linkType: hard
"@oxfmt/binding-linux-arm-gnueabihf@npm:0.33.0":
version: 0.33.0
resolution: "@oxfmt/binding-linux-arm-gnueabihf@npm:0.33.0"
conditions: os=linux & cpu=arm
languageName: node
linkType: hard
"@oxfmt/binding-linux-arm-musleabihf@npm:0.33.0":
version: 0.33.0
resolution: "@oxfmt/binding-linux-arm-musleabihf@npm:0.33.0"
conditions: os=linux & cpu=arm
languageName: node
linkType: hard
"@oxfmt/binding-linux-arm64-gnu@npm:0.33.0":
version: 0.33.0
resolution: "@oxfmt/binding-linux-arm64-gnu@npm:0.33.0"
conditions: os=linux & cpu=arm64 & libc=glibc
languageName: node
linkType: hard
"@oxfmt/binding-linux-arm64-musl@npm:0.33.0":
version: 0.33.0
resolution: "@oxfmt/binding-linux-arm64-musl@npm:0.33.0"
conditions: os=linux & cpu=arm64 & libc=musl
languageName: node
linkType: hard
"@oxfmt/binding-linux-ppc64-gnu@npm:0.33.0":
version: 0.33.0
resolution: "@oxfmt/binding-linux-ppc64-gnu@npm:0.33.0"
conditions: os=linux & cpu=ppc64 & libc=glibc
languageName: node
linkType: hard
"@oxfmt/binding-linux-riscv64-gnu@npm:0.33.0":
version: 0.33.0
resolution: "@oxfmt/binding-linux-riscv64-gnu@npm:0.33.0"
conditions: os=linux & cpu=riscv64 & libc=glibc
languageName: node
linkType: hard
"@oxfmt/binding-linux-riscv64-musl@npm:0.33.0":
version: 0.33.0
resolution: "@oxfmt/binding-linux-riscv64-musl@npm:0.33.0"
conditions: os=linux & cpu=riscv64 & libc=musl
languageName: node
linkType: hard
"@oxfmt/binding-linux-s390x-gnu@npm:0.33.0":
version: 0.33.0
resolution: "@oxfmt/binding-linux-s390x-gnu@npm:0.33.0"
conditions: os=linux & cpu=s390x & libc=glibc
languageName: node
linkType: hard
"@oxfmt/binding-linux-x64-gnu@npm:0.33.0":
version: 0.33.0
resolution: "@oxfmt/binding-linux-x64-gnu@npm:0.33.0"
conditions: os=linux & cpu=x64 & libc=glibc
languageName: node
linkType: hard
"@oxfmt/binding-linux-x64-musl@npm:0.33.0":
version: 0.33.0
resolution: "@oxfmt/binding-linux-x64-musl@npm:0.33.0"
conditions: os=linux & cpu=x64 & libc=musl
languageName: node
linkType: hard
"@oxfmt/binding-openharmony-arm64@npm:0.33.0":
version: 0.33.0
resolution: "@oxfmt/binding-openharmony-arm64@npm:0.33.0"
conditions: os=openharmony & cpu=arm64
languageName: node
linkType: hard
"@oxfmt/binding-win32-arm64-msvc@npm:0.33.0":
version: 0.33.0
resolution: "@oxfmt/binding-win32-arm64-msvc@npm:0.33.0"
conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
"@oxfmt/binding-win32-ia32-msvc@npm:0.33.0":
version: 0.33.0
resolution: "@oxfmt/binding-win32-ia32-msvc@npm:0.33.0"
conditions: os=win32 & cpu=ia32
languageName: node
linkType: hard
"@oxfmt/binding-win32-x64-msvc@npm:0.33.0":
version: 0.33.0
resolution: "@oxfmt/binding-win32-x64-msvc@npm:0.33.0"
conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
"@parcel/watcher-android-arm64@npm:2.5.0":
version: 2.5.0
resolution: "@parcel/watcher-android-arm64@npm:2.5.0"
@ -10274,6 +10407,75 @@ __metadata:
languageName: node
linkType: hard
"oxfmt@npm:^0.33.0":
version: 0.33.0
resolution: "oxfmt@npm:0.33.0"
dependencies:
"@oxfmt/binding-android-arm-eabi": "npm:0.33.0"
"@oxfmt/binding-android-arm64": "npm:0.33.0"
"@oxfmt/binding-darwin-arm64": "npm:0.33.0"
"@oxfmt/binding-darwin-x64": "npm:0.33.0"
"@oxfmt/binding-freebsd-x64": "npm:0.33.0"
"@oxfmt/binding-linux-arm-gnueabihf": "npm:0.33.0"
"@oxfmt/binding-linux-arm-musleabihf": "npm:0.33.0"
"@oxfmt/binding-linux-arm64-gnu": "npm:0.33.0"
"@oxfmt/binding-linux-arm64-musl": "npm:0.33.0"
"@oxfmt/binding-linux-ppc64-gnu": "npm:0.33.0"
"@oxfmt/binding-linux-riscv64-gnu": "npm:0.33.0"
"@oxfmt/binding-linux-riscv64-musl": "npm:0.33.0"
"@oxfmt/binding-linux-s390x-gnu": "npm:0.33.0"
"@oxfmt/binding-linux-x64-gnu": "npm:0.33.0"
"@oxfmt/binding-linux-x64-musl": "npm:0.33.0"
"@oxfmt/binding-openharmony-arm64": "npm:0.33.0"
"@oxfmt/binding-win32-arm64-msvc": "npm:0.33.0"
"@oxfmt/binding-win32-ia32-msvc": "npm:0.33.0"
"@oxfmt/binding-win32-x64-msvc": "npm:0.33.0"
tinypool: "npm:2.1.0"
dependenciesMeta:
"@oxfmt/binding-android-arm-eabi":
optional: true
"@oxfmt/binding-android-arm64":
optional: true
"@oxfmt/binding-darwin-arm64":
optional: true
"@oxfmt/binding-darwin-x64":
optional: true
"@oxfmt/binding-freebsd-x64":
optional: true
"@oxfmt/binding-linux-arm-gnueabihf":
optional: true
"@oxfmt/binding-linux-arm-musleabihf":
optional: true
"@oxfmt/binding-linux-arm64-gnu":
optional: true
"@oxfmt/binding-linux-arm64-musl":
optional: true
"@oxfmt/binding-linux-ppc64-gnu":
optional: true
"@oxfmt/binding-linux-riscv64-gnu":
optional: true
"@oxfmt/binding-linux-riscv64-musl":
optional: true
"@oxfmt/binding-linux-s390x-gnu":
optional: true
"@oxfmt/binding-linux-x64-gnu":
optional: true
"@oxfmt/binding-linux-x64-musl":
optional: true
"@oxfmt/binding-openharmony-arm64":
optional: true
"@oxfmt/binding-win32-arm64-msvc":
optional: true
"@oxfmt/binding-win32-ia32-msvc":
optional: true
"@oxfmt/binding-win32-x64-msvc":
optional: true
bin:
oxfmt: bin/oxfmt
checksum: 10c0/77f670459a26a14844bdc9b34e7e06eae0b787138e265e28fa011eb9181f232cf784cd1c40adca1416d2af3f5c1af1ed08d3815860bb4596edcb0c4e3773d1f3
languageName: node
linkType: hard
"p-limit@npm:^3.0.2":
version: 3.1.0
resolution: "p-limit@npm:3.1.0"
@ -11231,15 +11433,6 @@ __metadata:
languageName: node
linkType: hard
"prettier@npm:^3.3.3":
version: 3.7.4
resolution: "prettier@npm:3.7.4"
bin:
prettier: bin/prettier.cjs
checksum: 10c0/9675d2cd08eacb1faf1d1a2dbfe24bfab6a912b059fc9defdb380a408893d88213e794a40a2700bd29b140eb3172e0b07c852853f6e22f16f3374659a1a13389
languageName: node
linkType: hard
"pretty-bytes@npm:^5.3.0":
version: 5.6.0
resolution: "pretty-bytes@npm:5.6.0"
@ -13495,6 +13688,13 @@ __metadata:
languageName: node
linkType: hard
"tinypool@npm:2.1.0":
version: 2.1.0
resolution: "tinypool@npm:2.1.0"
checksum: 10c0/9fb1c760558c6264e0f4cfde96a63b12450b43f1730fbe6274aa24ddbdf488745c08924d0dea7a1303b47d555416a6415f2113898c69b6ecf731e75ac95238a5
languageName: node
linkType: hard
"tinyrainbow@npm:^2.0.0":
version: 2.0.0
resolution: "tinyrainbow@npm:2.0.0"

Loading…
Cancel
Save