Chore: Remove betterer (#110469)
This commit is contained in:
@@ -1 +0,0 @@
|
||||
export default {};
|
||||
@@ -1049,7 +1049,6 @@ playwright.storybook.config.ts @grafana/grafana-frontend-platform
|
||||
/scripts/**/generate-transformations* @grafana/datapro
|
||||
/scripts/webpack/ @grafana/frontend-ops
|
||||
/scripts/generate-a11y-report.sh @grafana/grafana-frontend-platform
|
||||
.betterer.ts @grafana/grafana-frontend-platform
|
||||
eslint-suppressions.json @grafanabot
|
||||
|
||||
# Design system
|
||||
|
||||
@@ -86,7 +86,6 @@ runs:
|
||||
- '.github/actions/change-detection/**'
|
||||
- '**.cue'
|
||||
- '.prettier*'
|
||||
- '.betterer*'
|
||||
- '.yarnrc.yml'
|
||||
- 'eslint.config.js'
|
||||
- 'jest.config.js'
|
||||
|
||||
@@ -120,25 +120,6 @@ jobs:
|
||||
github-app-name: 'grafana-ci-bot'
|
||||
- run: yarn install --immutable --check-cache
|
||||
- run: yarn run typecheck
|
||||
lint-frontend-betterer:
|
||||
needs: detect-changes
|
||||
permissions:
|
||||
contents: read
|
||||
id-token: write
|
||||
if: needs.detect-changes.outputs.changed == 'true'
|
||||
name: Betterer
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
cache: 'yarn'
|
||||
cache-dependency-path: 'yarn.lock'
|
||||
- run: yarn install --immutable --check-cache
|
||||
- run: yarn run betterer:ci
|
||||
lint-frontend-api-clients:
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
@@ -222,7 +222,6 @@ public/api-spec.json
|
||||
|
||||
deployment_tools_config.json
|
||||
|
||||
.betterer.cache
|
||||
.nx
|
||||
|
||||
# Temporary file for backporting PRs
|
||||
|
||||
@@ -11,7 +11,6 @@ node_modules
|
||||
pkg
|
||||
public/lib/monaco
|
||||
public/sass/*.generated.scss
|
||||
scripts/cli/bettererIssueTemplate.md
|
||||
scripts/grafana-server/tmp
|
||||
vendor
|
||||
|
||||
|
||||
@@ -63,10 +63,6 @@
|
||||
"watch": "yarn start -d watch,start core:start --watchTheme",
|
||||
"i18n:stats": "node ./scripts/cli/reportI18nStats.mjs",
|
||||
"i18n-extract": "make i18n-extract",
|
||||
"betterer": "betterer --tsconfig ./scripts/cli/tsconfig.json",
|
||||
"betterer:stats": "ts-node --transpile-only --project ./scripts/cli/tsconfig.json ./scripts/cli/reportBettererStats.ts",
|
||||
"betterer:issues": "ts-node --transpile-only --project ./scripts/cli/tsconfig.json ./scripts/cli/generateBettererIssues.ts",
|
||||
"betterer:ci": "betterer ci --tsconfig ./scripts/cli/tsconfig.json",
|
||||
"plugin:build": "nx run-many -t build --projects='tag:scope:plugin'",
|
||||
"plugin:build:commit": "nx run-many -t build:commit --projects='tag:scope:plugin'",
|
||||
"plugin:build:dev": "nx run-many -t dev --projects='tag:scope:plugin' --maxParallel=100",
|
||||
@@ -85,8 +81,6 @@
|
||||
"@babel/core": "7.28.0",
|
||||
"@babel/preset-env": "7.28.0",
|
||||
"@babel/runtime": "7.28.2",
|
||||
"@betterer/betterer": "5.4.0",
|
||||
"@betterer/cli": "5.4.0",
|
||||
"@crowdin/crowdin-api-client": "^1.42.0",
|
||||
"@cypress/webpack-preprocessor": "6.0.4",
|
||||
"@emotion/eslint-plugin": "11.12.0",
|
||||
|
||||
+1
-1
@@ -121,7 +121,7 @@ const noUntranslatedStrings = createRule({
|
||||
if (
|
||||
isUntranslated &&
|
||||
// TODO: Remove this check in the future when we've fixed all cases of untranslated properties
|
||||
// For now, we're only reporting the issues that can be auto-fixed, rather than adding to betterer results
|
||||
// For now, we're only reporting the issues that can be auto-fixed, rather than adding to eslint suppressions
|
||||
errorCanBeFixed
|
||||
) {
|
||||
context.report({
|
||||
|
||||
@@ -25,13 +25,6 @@ echo -e "@emotion/css imports: $EMOTION_IMPORTS"
|
||||
echo -e "Total TS files: $TS_FILES"
|
||||
echo -e "Total SCSS files: $SCSS_FILES"
|
||||
|
||||
BETTERER_STATS=""
|
||||
while read -r name value
|
||||
do
|
||||
BETTERER_STATS+=$'\n '
|
||||
BETTERER_STATS+="\"grafana.ci-code.betterer.${name}\": \"${value}\","
|
||||
done <<< "$(yarn betterer:stats)"
|
||||
|
||||
ESLINT_STATS=""
|
||||
yarn lint:ts --format ./scripts/cli/eslint-stats-reporter.mjs -o eslint-stats.txt
|
||||
while read -r name value
|
||||
@@ -59,7 +52,6 @@ done <<< "$(yarn themes:usage | awk '$4 == "@grafana/theme-token-usage" {print $
|
||||
|
||||
echo "Metrics: {
|
||||
$THEME_TOKEN_USAGE
|
||||
$BETTERER_STATS
|
||||
$ESLINT_STATS
|
||||
$I18N_STATS
|
||||
\"grafana.ci-code.strictErrors\": \"${ERROR_COUNT}\",
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
Hi <%= owner %>!
|
||||
|
||||
The following files have been marked as having issues regarding `<%= issueFilter %>: <%= issueMessageFilter %>`.
|
||||
|
||||
There are <%= totalIssueCount %> <%= plural('issue', totalIssueCount) %> over <%= fileCount %> <%= plural('file', fileCount) %>:
|
||||
<% files.forEach((file) => { %>
|
||||
- [ ] <%= file.issueCount %> <%= plural('issue', file.issueCount) %> in [<%= file.fileName %>](https://github.com/grafana/grafana/blob/main/<%= file.fileName %>) <% }) %>
|
||||
@@ -1,109 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Script to create GitHub issues from text files in a directory
|
||||
# Usage: ./create_issues_from_files.sh <directory> <owner/repo>
|
||||
|
||||
# FYI: Generated almost entirely with warp.dev as a quick hack for creating issues from betterer issues output
|
||||
|
||||
set -e
|
||||
|
||||
# Function to display usage
|
||||
usage() {
|
||||
echo "Usage: $0 <directory> <owner/repo>"
|
||||
echo ""
|
||||
echo "Arguments:"
|
||||
echo " directory Directory containing text files"
|
||||
echo " owner/repo GitHub repository in format 'owner/repository'"
|
||||
echo ""
|
||||
echo "Examples:"
|
||||
echo " $0 ./issues myuser/myrepo"
|
||||
echo " $0 /path/to/issues organization/project"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Check if correct number of arguments provided
|
||||
if [ $# -ne 2 ]; then
|
||||
echo "Error: Incorrect number of arguments"
|
||||
usage
|
||||
fi
|
||||
|
||||
DIRECTORY="$1"
|
||||
REPO="$2"
|
||||
|
||||
# Validate directory exists
|
||||
if [ ! -d "$DIRECTORY" ]; then
|
||||
echo "Error: Directory '$DIRECTORY' does not exist"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Validate repository format
|
||||
if [[ ! "$REPO" =~ ^[^/]+/[^/]+$ ]]; then
|
||||
echo "Error: Repository must be in format 'owner/repository'"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Creating issues from text files in '$DIRECTORY' for repository '$REPO'"
|
||||
echo
|
||||
|
||||
# Counter for created issues
|
||||
created_count=0
|
||||
error_count=0
|
||||
|
||||
# Process each text file in the directory
|
||||
for file in "$DIRECTORY"/*.txt; do
|
||||
# Check if glob matched any files
|
||||
[ -e "$file" ] || continue
|
||||
|
||||
filename=$(basename "$file")
|
||||
|
||||
echo "Processing: $filename"
|
||||
|
||||
# Read file content
|
||||
if [ ! -r "$file" ]; then
|
||||
echo " ❌ Error: Cannot read file '$file'"
|
||||
((error_count++))
|
||||
continue
|
||||
fi
|
||||
|
||||
content=$(cat "$file")
|
||||
|
||||
# Skip empty files
|
||||
if [ -z "$content" ]; then
|
||||
echo " ⚠️ Skipping empty file"
|
||||
continue
|
||||
fi
|
||||
|
||||
# Parse codeowner from first line (assuming format like "@username" or "@team/name")
|
||||
first_line=$(echo "$content" | head -n 1)
|
||||
codeowner=""
|
||||
|
||||
# Extract codeowner if first line contains @username or @team/name pattern
|
||||
if [[ "$first_line" =~ @[a-zA-Z0-9_/-]+ ]]; then
|
||||
codeowner=$(echo "$first_line" | grep -o '@[a-zA-Z0-9_/-]*' | head -n 1)
|
||||
# Strip @grafana/ prefix if present
|
||||
codeowner=${codeowner#@grafana/}
|
||||
fi
|
||||
|
||||
title="Betterer: React Hooks ($codeowner)"
|
||||
|
||||
# Create the issue using GitHub CLI
|
||||
if gh issue create \
|
||||
--repo "$REPO" \
|
||||
--title "$title" \
|
||||
--body "$content" > /dev/null 2>&1; then
|
||||
echo " ✅ Created issue: $title"
|
||||
((created_count++))
|
||||
else
|
||||
echo " ❌ Failed to create issue: $title"
|
||||
((error_count++))
|
||||
fi
|
||||
done
|
||||
|
||||
echo
|
||||
echo "Summary:"
|
||||
echo " Issues created: $created_count"
|
||||
echo " Errors: $error_count"
|
||||
|
||||
if [ $created_count -eq 0 ] && [ $error_count -eq 0 ]; then
|
||||
echo " No .txt files found in '$DIRECTORY'"
|
||||
fi
|
||||
@@ -1,148 +0,0 @@
|
||||
import { betterer, BettererFileIssues } from '@betterer/betterer';
|
||||
import Codeowners from 'codeowners';
|
||||
import { readFile, writeFile } from 'fs/promises';
|
||||
import { template } from 'lodash';
|
||||
import path from 'path';
|
||||
import { hideBin } from 'yargs/helpers';
|
||||
import yargs from 'yargs/yargs';
|
||||
|
||||
const argv = yargs(hideBin(process.argv))
|
||||
.option('template', {
|
||||
demandOption: true,
|
||||
alias: 't',
|
||||
describe: 'Path to a template to use for each issue. See source bettererIssueTemplate.md for an example',
|
||||
type: 'string',
|
||||
default: './scripts/cli/bettererIssueTemplate.md',
|
||||
})
|
||||
.option('output', {
|
||||
demandOption: true,
|
||||
alias: 'o',
|
||||
describe: 'Path to directory to save issues to',
|
||||
type: 'string',
|
||||
})
|
||||
.option('test', {
|
||||
demandOption: true,
|
||||
alias: 'b',
|
||||
describe: 'Name of the betterer test to produce the report for',
|
||||
type: 'string',
|
||||
})
|
||||
.option('test-message', {
|
||||
alias: 'm',
|
||||
describe: 'Filter issues containing this message',
|
||||
type: 'string',
|
||||
})
|
||||
.option('single-owner', {
|
||||
type: 'boolean',
|
||||
alias: 's',
|
||||
describe: 'Only use first owner for files with multiple owners',
|
||||
default: false,
|
||||
})
|
||||
|
||||
.usage('Usage: yarn betterer:issues -t [path] -o [path] -b [string]')
|
||||
.version(false)
|
||||
.help('help').argv;
|
||||
|
||||
interface FileDetails {
|
||||
fileName: string;
|
||||
issueCount: number;
|
||||
issues: BettererFileIssues;
|
||||
}
|
||||
|
||||
// really dumb and simple pluralize function. not meant to be exhaustive
|
||||
function plural(word: string, count: number) {
|
||||
if (count === 0 || count > 1) {
|
||||
return word + 's';
|
||||
}
|
||||
|
||||
return word;
|
||||
}
|
||||
|
||||
async function main() {
|
||||
const args = await argv;
|
||||
const templatePath = path.resolve(args.template);
|
||||
const outputPath = path.resolve(args.output);
|
||||
const templateString = (await readFile(templatePath)).toString();
|
||||
|
||||
const owners = new Codeowners();
|
||||
const results = await betterer.results();
|
||||
|
||||
const filesByOwner: Record<string, FileDetails[]> = {};
|
||||
|
||||
for (const testResults of results.resultSummaries) {
|
||||
if (testResults.name !== args.test) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (typeof testResults.details === 'string') {
|
||||
continue;
|
||||
}
|
||||
|
||||
for (const _fileName in testResults.details) {
|
||||
const fileName = _fileName.replace(process.cwd() + '/', '');
|
||||
const _details = testResults.details[_fileName];
|
||||
let ownersForFile = owners.getOwner(fileName);
|
||||
|
||||
if (args.singleOwner) {
|
||||
ownersForFile = [ownersForFile[0]];
|
||||
}
|
||||
|
||||
const filterByMessage = args.testMessage?.length ? args.testMessage.toLowerCase() : undefined;
|
||||
|
||||
const filteredDetails = filterByMessage
|
||||
? _details.filter((v) => v.message.toLowerCase().includes(filterByMessage))
|
||||
: _details;
|
||||
|
||||
const numberOfIssues = filteredDetails.length;
|
||||
|
||||
if (numberOfIssues === 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
for (const owner of ownersForFile) {
|
||||
if (!filesByOwner[owner]) {
|
||||
filesByOwner[owner] = [];
|
||||
}
|
||||
|
||||
filesByOwner[owner].push({
|
||||
fileName,
|
||||
issueCount: numberOfIssues,
|
||||
issues: filteredDetails,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const contexts = Object.entries(filesByOwner).map(([owner, files]) => {
|
||||
const fileCount = files.length;
|
||||
const totalIssueCount = files.reduce((acc, v) => acc + v.issueCount, 0);
|
||||
|
||||
return {
|
||||
owner,
|
||||
files,
|
||||
fileCount,
|
||||
totalIssueCount,
|
||||
issueFilter: args.test,
|
||||
issueMessageFilter: args.testMessage,
|
||||
};
|
||||
});
|
||||
|
||||
const compiledTemplate = template(templateString, { imports: { plural } });
|
||||
|
||||
for (const context of contexts) {
|
||||
const fileSafeOwner = context.owner.replace(/[^a-z0-9-]/gi, '_');
|
||||
const fileSafeTestName = args.test.replace(/[^a-z0-9-]/gi, '_');
|
||||
const outputFilePath = path.join(outputPath, `${fileSafeTestName}_${fileSafeOwner}.txt`);
|
||||
const printed = compiledTemplate(context);
|
||||
await writeFile(outputFilePath, printed);
|
||||
|
||||
const indented = printed
|
||||
.split('\n')
|
||||
.map((v) => `\t${v}`)
|
||||
.join('\n');
|
||||
|
||||
console.log(`Printed issue for owner`, context.owner, 'to', outputFilePath);
|
||||
console.log(indented);
|
||||
}
|
||||
}
|
||||
|
||||
main().catch(console.error);
|
||||
@@ -1,51 +0,0 @@
|
||||
import { betterer } from '@betterer/betterer';
|
||||
import { camelCase } from 'lodash';
|
||||
|
||||
function logStat(name: string, value: number) {
|
||||
// Note that this output format must match the parsing in ci-frontend-metrics.sh
|
||||
// which expects the two values to be separated by a space
|
||||
console.log(`${name} ${value}`);
|
||||
}
|
||||
/**
|
||||
* Array of regexes + name overrides for legacy checks that have been moved to ESLint
|
||||
*
|
||||
* This is so we can still report things like "gfFormUsage..." as "noGfFormUsage_gfFormUsage..."
|
||||
* rather than "betterEslint_gfFormUsage..." for continuity on our dashboards
|
||||
*/
|
||||
const legacyChecksToTransform = [
|
||||
{ messageRegex: /gfFormUsage/i, prefix: 'noGfFormUsage' },
|
||||
{ messageRegex: /noUndocumentedStories/i, prefix: 'noUndocumentedStories' },
|
||||
{ messageRegex: /noSkippingOfA11YTests/i, prefix: 'noSkippingA11YTestsInStories' },
|
||||
];
|
||||
|
||||
async function main() {
|
||||
const results = await betterer.results();
|
||||
|
||||
for (const testResults of results.resultSummaries) {
|
||||
const countByMessage = {};
|
||||
const name = camelCase(testResults.name);
|
||||
Object.values(testResults.details)
|
||||
.flatMap((v) => v)
|
||||
.forEach((detail) => {
|
||||
const message = camelCase(detail.message);
|
||||
const nameToUse =
|
||||
legacyChecksToTransform.find((v) => {
|
||||
return v.messageRegex.test(message);
|
||||
})?.prefix || name;
|
||||
|
||||
const metricName = `${nameToUse}_${message}`;
|
||||
|
||||
if (metricName in countByMessage) {
|
||||
countByMessage[metricName]++;
|
||||
} else {
|
||||
countByMessage[metricName] = 1;
|
||||
}
|
||||
});
|
||||
|
||||
for (const [metricName, count] of Object.entries<number>(countByMessage)) {
|
||||
logStat(metricName, count);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
main().catch(console.error);
|
||||
@@ -122,7 +122,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.3, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.27.1":
|
||||
"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.27.1":
|
||||
version: 7.27.1
|
||||
resolution: "@babel/code-frame@npm:7.27.1"
|
||||
dependencies:
|
||||
@@ -1516,118 +1516,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@betterer/betterer@npm:5.4.0, @betterer/betterer@npm:^5.4.0":
|
||||
version: 5.4.0
|
||||
resolution: "@betterer/betterer@npm:5.4.0"
|
||||
dependencies:
|
||||
"@betterer/constraints": "npm:^5.3.0"
|
||||
"@betterer/errors": "npm:^5.3.0"
|
||||
"@betterer/logger": "npm:^5.3.4"
|
||||
"@betterer/reporter": "npm:^5.4.0"
|
||||
"@phenomnomnominal/debug": "npm:^0.2.5"
|
||||
"@phenomnomnominal/worker-require": "npm:^0.0.34"
|
||||
chokidar: "npm:^3.3.1"
|
||||
djb2a: "npm:^1.2.0"
|
||||
fast-memoize: "npm:^2.5.2"
|
||||
lines-and-columns: "npm:^2.0.3"
|
||||
minimatch: "npm:^5.0.1"
|
||||
prettier: "npm:^2.3.2"
|
||||
simple-git: "npm:^3.6.0"
|
||||
ts-node: "npm:^10.2.1"
|
||||
tslib: "npm:^2.3.1"
|
||||
typescript: "npm:>=2.7"
|
||||
dependenciesMeta:
|
||||
typescript:
|
||||
optional: true
|
||||
checksum: 10/4d866d2acfc5e46375a29701122571544d60a4c38985a154b7a4a31ffffad8434d584496e8baaa724a7a929b87ff8a65ce5d5a86b0b6f4aedae894e53e4d7d80
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@betterer/cli@npm:5.4.0":
|
||||
version: 5.4.0
|
||||
resolution: "@betterer/cli@npm:5.4.0"
|
||||
dependencies:
|
||||
"@betterer/betterer": "npm:^5.4.0"
|
||||
"@betterer/errors": "npm:^5.3.0"
|
||||
"@betterer/render": "npm:^5.3.4"
|
||||
"@betterer/tasks": "npm:^5.3.6"
|
||||
"@phenomnomnominal/tsquery": "npm:^4.1.1"
|
||||
"@phenomnomnominal/tstemplate": "npm:^0.1.0"
|
||||
"@phenomnomnominal/worker-require": "npm:^0.0.34"
|
||||
chalk: "npm:^4.1.2"
|
||||
commander: "npm:^8.3.0"
|
||||
find-up: "npm:^5.0.0"
|
||||
jest-diff: "npm:^27.1.0"
|
||||
prettier: "npm:^2.3.2"
|
||||
tslib: "npm:^2.3.1"
|
||||
bin:
|
||||
betterer: bin/betterer
|
||||
checksum: 10/4f07c6a6cad8c143b655e3bd6a2f35856437fbbc18569a8c3a30c8d80cc1aa04c07e19b11075155b66d6afeec5fef94ef740d53a439ba2b35ed871c84e2cdd15
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@betterer/constraints@npm:^5.3.0":
|
||||
version: 5.3.0
|
||||
resolution: "@betterer/constraints@npm:5.3.0"
|
||||
dependencies:
|
||||
tslib: "npm:^2.3.1"
|
||||
checksum: 10/1945efcf47a25803788f43cb5ab111dcac2ea4308b12345ac415b470d67a079d1e9d4f965e30958022c67a76632761b56c012307b67f642175c394b79a29ca83
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@betterer/errors@npm:^5.3.0":
|
||||
version: 5.3.0
|
||||
resolution: "@betterer/errors@npm:5.3.0"
|
||||
checksum: 10/189d5ca5f0d5dfa2251fd633780875a35801d7c3b738ebc1320e19f7503e143c16eb65c0155121b46abd7565babde41735ec8f7f19603b8efba250f1a74dd772
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@betterer/logger@npm:^5.3.4":
|
||||
version: 5.3.4
|
||||
resolution: "@betterer/logger@npm:5.3.4"
|
||||
dependencies:
|
||||
"@babel/code-frame": "npm:^7.10.3"
|
||||
jest-diff: "npm:^27.0.6"
|
||||
lines-and-columns: "npm:^2.0.3"
|
||||
tslib: "npm:^2.3.1"
|
||||
checksum: 10/377422dc52dd85002dd32967fb3f59f07d584e18386039831ad4bab6bee0f767ae1a31d33aa1039e76e1167cb308d0706a6d76b6c915a0bc1439ea6cbfdb5d09
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@betterer/render@npm:^5.3.4":
|
||||
version: 5.3.4
|
||||
resolution: "@betterer/render@npm:5.3.4"
|
||||
checksum: 10/b979b78490cc2cc2032d40e6a46390c5efac9cad1e1262d8a7647dd37c9aec73098298fc721711e71e4b7e15b5501f431f45ed835104c0bd9e7e414b389e6639
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@betterer/reporter@npm:^5.4.0":
|
||||
version: 5.4.0
|
||||
resolution: "@betterer/reporter@npm:5.4.0"
|
||||
dependencies:
|
||||
"@betterer/betterer": "npm:^5.4.0"
|
||||
"@betterer/errors": "npm:^5.3.0"
|
||||
"@betterer/logger": "npm:^5.3.4"
|
||||
"@betterer/render": "npm:^5.3.4"
|
||||
"@betterer/tasks": "npm:^5.3.6"
|
||||
tslib: "npm:^2.3.1"
|
||||
checksum: 10/09169f068fbb9de82088d54368ccf1b3eb143e18eba1e7963e9a94b49f0bf3e122e26c7b536ddb2d20da79ce12270747b9507d9271a73047e3640fa6acde1977
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@betterer/tasks@npm:^5.3.6":
|
||||
version: 5.3.6
|
||||
resolution: "@betterer/tasks@npm:5.3.6"
|
||||
dependencies:
|
||||
"@betterer/errors": "npm:^5.3.0"
|
||||
"@betterer/logger": "npm:^5.3.4"
|
||||
"@betterer/render": "npm:^5.3.4"
|
||||
chalk: "npm:^4.1.2"
|
||||
tslib: "npm:^2.3.1"
|
||||
checksum: 10/b85cfb54198ac94b476839aac9a8f717b28c7f5bf07d576cb4821d6828bcce0c5c4ec9a54eb29f94e42187bbef2e6266482484718a1417b456b73816f0740cdf
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@braidai/lang@npm:^1.0.0":
|
||||
version: 1.1.1
|
||||
resolution: "@braidai/lang@npm:1.1.1"
|
||||
@@ -4848,22 +4736,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@kwsites/file-exists@npm:^1.1.1":
|
||||
version: 1.1.1
|
||||
resolution: "@kwsites/file-exists@npm:1.1.1"
|
||||
dependencies:
|
||||
debug: "npm:^4.1.1"
|
||||
checksum: 10/4ff945de7293285133aeae759caddc71e73c4a44a12fac710fdd4f574cce2671a3f89d8165fdb03d383cfc97f3f96f677d8de3c95133da3d0e12a123a23109fe
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@kwsites/promise-deferred@npm:^1.1.1":
|
||||
version: 1.1.1
|
||||
resolution: "@kwsites/promise-deferred@npm:1.1.1"
|
||||
checksum: 10/07455477a0123d9a38afb503739eeff2c5424afa8d3dbdcc7f9502f13604488a4b1d9742fc7288832a52a6422cf1e1c0a1d51f69a39052f14d27c9a0420b6629
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@leeoniya/ufuzzy@npm:1.0.18, @leeoniya/ufuzzy@npm:^1.0.16":
|
||||
version: 1.0.18
|
||||
resolution: "@leeoniya/ufuzzy@npm:1.0.18"
|
||||
@@ -6239,47 +6111,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@phenomnomnominal/debug@npm:^0.2.5":
|
||||
version: 0.2.5
|
||||
resolution: "@phenomnomnominal/debug@npm:0.2.5"
|
||||
dependencies:
|
||||
callsite: "npm:^1.0.0"
|
||||
esprima: "npm:^4.0.1"
|
||||
esquery: "npm:^1.3.1"
|
||||
tslib: "npm:^2.0.3"
|
||||
checksum: 10/eedc309988bc679f573c89bb75f7065d59a0b01b0bd4abb8b4c0e077541e4319c66c9550f7f0fea4bcd613bf08cb27f11f7a69ffc08e5938761b433b0f784d51
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@phenomnomnominal/tsquery@npm:^4.1.1":
|
||||
version: 4.2.0
|
||||
resolution: "@phenomnomnominal/tsquery@npm:4.2.0"
|
||||
dependencies:
|
||||
esquery: "npm:^1.0.1"
|
||||
peerDependencies:
|
||||
typescript: ^3 || ^4
|
||||
checksum: 10/5ad8bdf28fd09614023f629aadc1a166f59fca8e7274cafa6afd795eabe9af8bb756c8dd7e49aff20c8467989600f9888840de648d1902887cda81ce48d4ce3c
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@phenomnomnominal/tstemplate@npm:^0.1.0":
|
||||
version: 0.1.0
|
||||
resolution: "@phenomnomnominal/tstemplate@npm:0.1.0"
|
||||
checksum: 10/19bc55fc2b61d57194a792f2edd5ef10d2965e4f7fea127f39426adf1128d5a99e4dcbb3d9503a4f3291dc2bf25ba4fe6f5b59121ec52726dbb2308c8fca95e1
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@phenomnomnominal/worker-require@npm:^0.0.34":
|
||||
version: 0.0.34
|
||||
resolution: "@phenomnomnominal/worker-require@npm:0.0.34"
|
||||
dependencies:
|
||||
callsite: "npm:^1.0.0"
|
||||
comlink: "npm:^4.3.0"
|
||||
tslib: "npm:^1.10.0"
|
||||
checksum: 10/86453c1c7d1f866cf7c021795011353698cd64865e91cf334d0df793a8984f7e2563a275c22c840ea07b0de64f538573bf56e98118f7cb7ac4ec15d0be1d0c06
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@pkgjs/parseargs@npm:^0.11.0":
|
||||
version: 0.11.0
|
||||
resolution: "@pkgjs/parseargs@npm:0.11.0"
|
||||
@@ -12635,13 +12466,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"callsite@npm:^1.0.0":
|
||||
version: 1.0.0
|
||||
resolution: "callsite@npm:1.0.0"
|
||||
checksum: 10/39fc89ef9dbee7d5491bc69034fc16fbb8876a73456f831cc27060b5828e94357bb6705e0127a6d0182d79b03dbdb0ef88223d0b599c26667c871c89b30eb681
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"callsites@npm:^3.0.0":
|
||||
version: 3.1.0
|
||||
resolution: "callsites@npm:3.1.0"
|
||||
@@ -12936,7 +12760,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"chokidar@npm:^3.3.1, chokidar@npm:^3.5.3":
|
||||
"chokidar@npm:^3.5.3":
|
||||
version: 3.6.0
|
||||
resolution: "chokidar@npm:3.6.0"
|
||||
dependencies:
|
||||
@@ -13381,7 +13205,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"comlink@npm:4.4.2, comlink@npm:^4.3.0":
|
||||
"comlink@npm:4.4.2":
|
||||
version: 4.4.2
|
||||
resolution: "comlink@npm:4.4.2"
|
||||
checksum: 10/ecee53b5b4536b3aa3f7636c383f831e68fbc013def77665cc7fad873d72cfa23b994e1ec4b49e83e4e909c1089a03acae03a523e33a5e5ed938cdb613456434
|
||||
@@ -13444,7 +13268,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"commander@npm:^8.1.0, commander@npm:^8.3.0":
|
||||
"commander@npm:^8.1.0":
|
||||
version: 8.3.0
|
||||
resolution: "commander@npm:8.3.0"
|
||||
checksum: 10/6b7b5d334483ce24bd73c5dac2eab901a7dbb25fd983ea24a1eeac6e7166bb1967f641546e8abf1920afbde86a45fbfe5812fbc69d0dc451bb45ca416a12a3a3
|
||||
@@ -15137,13 +14961,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"diff-sequences@npm:^27.5.1":
|
||||
version: 27.5.1
|
||||
resolution: "diff-sequences@npm:27.5.1"
|
||||
checksum: 10/34d852a13eb82735c39944a050613f952038614ce324256e1c3544948fa090f1ca7f329a4f1f57c31fe7ac982c17068d8915b633e300f040b97708c81ceb26cd
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"diff-sequences@npm:^29.6.3":
|
||||
version: 29.6.3
|
||||
resolution: "diff-sequences@npm:29.6.3"
|
||||
@@ -15199,13 +15016,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"djb2a@npm:^1.2.0":
|
||||
version: 1.2.0
|
||||
resolution: "djb2a@npm:1.2.0"
|
||||
checksum: 10/75fe594fad164634b08dc3878551aadf29fc206ba2767244ab9be323de8ffbd9c01b4dcfc1168ffb7dea0bd98a6f211966943a67aa815639fcaffbab7960ade0
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"doctrine@npm:^2.1.0":
|
||||
version: 2.1.0
|
||||
resolution: "doctrine@npm:2.1.0"
|
||||
@@ -16552,7 +16362,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"esquery@npm:^1.0.1, esquery@npm:^1.3.1, esquery@npm:^1.5.0, esquery@npm:^1.6.0":
|
||||
"esquery@npm:^1.5.0, esquery@npm:^1.6.0":
|
||||
version: 1.6.0
|
||||
resolution: "esquery@npm:1.6.0"
|
||||
dependencies:
|
||||
@@ -16964,13 +16774,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fast-memoize@npm:^2.5.2":
|
||||
version: 2.5.2
|
||||
resolution: "fast-memoize@npm:2.5.2"
|
||||
checksum: 10/b7e2839d70607c791ffda617bb3cf7d9944bd5483be05cedbc060be1381c79093efc470215f1bc5aa666b8ecc2c9ae49e6f56ab6f45f0c1474f6628651c9959b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fast-safe-stringify@npm:^2.0.7":
|
||||
version: 2.1.1
|
||||
resolution: "fast-safe-stringify@npm:2.1.1"
|
||||
@@ -18287,8 +18090,6 @@ __metadata:
|
||||
"@babel/core": "npm:7.28.0"
|
||||
"@babel/preset-env": "npm:7.28.0"
|
||||
"@babel/runtime": "npm:7.28.2"
|
||||
"@betterer/betterer": "npm:5.4.0"
|
||||
"@betterer/cli": "npm:5.4.0"
|
||||
"@bsull/augurs": "npm:^0.10.0"
|
||||
"@crowdin/crowdin-api-client": "npm:^1.42.0"
|
||||
"@cypress/webpack-preprocessor": "npm:6.0.4"
|
||||
@@ -20802,18 +20603,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"jest-diff@npm:^27.0.6, jest-diff@npm:^27.1.0":
|
||||
version: 27.5.1
|
||||
resolution: "jest-diff@npm:27.5.1"
|
||||
dependencies:
|
||||
chalk: "npm:^4.0.0"
|
||||
diff-sequences: "npm:^27.5.1"
|
||||
jest-get-type: "npm:^27.5.1"
|
||||
pretty-format: "npm:^27.5.1"
|
||||
checksum: 10/af454f30f33af625832bdb02614e188a41e33ce79086b43f95dbcc515274dd36bf8443b8d0299e22c2416e7591da4321e6bc7f2b0aef56471d1133c6b6833221
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"jest-diff@npm:^30.0.2":
|
||||
version: 30.0.5
|
||||
resolution: "jest-diff@npm:30.0.5"
|
||||
@@ -20890,13 +20679,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"jest-get-type@npm:^27.5.1":
|
||||
version: 27.5.1
|
||||
resolution: "jest-get-type@npm:27.5.1"
|
||||
checksum: 10/63064ab70195c21007d897c1157bf88ff94a790824a10f8c890392e7d17eda9c3900513cb291ca1c8d5722cad79169764e9a1279f7c8a9c4cd6e9109ff04bbc0
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"jest-get-type@npm:^29.6.3":
|
||||
version: 29.6.3
|
||||
resolution: "jest-get-type@npm:29.6.3"
|
||||
@@ -22086,7 +21868,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"lines-and-columns@npm:2.0.4, lines-and-columns@npm:^2.0.3":
|
||||
"lines-and-columns@npm:2.0.4":
|
||||
version: 2.0.4
|
||||
resolution: "lines-and-columns@npm:2.0.4"
|
||||
checksum: 10/81ac2f943f5428a46bd4ea2561c74ba674a107d8e6cc70cd317d16892a36ff3ba0dc6e599aca8b6f8668d26c85288394c6edf7a40e985ca843acab3701b80d4c
|
||||
@@ -26175,15 +25957,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"prettier@npm:^2.3.2":
|
||||
version: 2.8.8
|
||||
resolution: "prettier@npm:2.8.8"
|
||||
bin:
|
||||
prettier: bin-prettier.js
|
||||
checksum: 10/00cdb6ab0281f98306cd1847425c24cbaaa48a5ff03633945ab4c701901b8e96ad558eb0777364ffc312f437af9b5a07d0f45346266e8245beaf6247b9c62b24
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"pretty-bytes@npm:^5.6.0":
|
||||
version: 5.6.0
|
||||
resolution: "pretty-bytes@npm:5.6.0"
|
||||
@@ -26212,7 +25985,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"pretty-format@npm:^27.0.2, pretty-format@npm:^27.5.1":
|
||||
"pretty-format@npm:^27.0.2":
|
||||
version: 27.5.1
|
||||
resolution: "pretty-format@npm:27.5.1"
|
||||
dependencies:
|
||||
@@ -29301,17 +29074,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"simple-git@npm:^3.6.0":
|
||||
version: 3.16.0
|
||||
resolution: "simple-git@npm:3.16.0"
|
||||
dependencies:
|
||||
"@kwsites/file-exists": "npm:^1.1.1"
|
||||
"@kwsites/promise-deferred": "npm:^1.1.1"
|
||||
debug: "npm:^4.3.4"
|
||||
checksum: 10/b1c4b187bff2964bab47fd1b683ece275a599e9a466f7e2689ee1fea0360f7d13228e934d66095c911e7e8b57ab5f2526e3deeeb6e4d0c03e4d5f12f7ef03cd9
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"simple-xml-to-json@npm:^1.2.2":
|
||||
version: 1.2.3
|
||||
resolution: "simple-xml-to-json@npm:1.2.3"
|
||||
@@ -31333,7 +31095,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ts-node@npm:10.9.2, ts-node@npm:^10.2.1":
|
||||
"ts-node@npm:10.9.2":
|
||||
version: 10.9.2
|
||||
resolution: "ts-node@npm:10.9.2"
|
||||
dependencies:
|
||||
@@ -31415,14 +31177,14 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"tslib@npm:2.8.1, tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.3.0, tslib@npm:^2.3.1, tslib@npm:^2.4.0, tslib@npm:^2.4.1, tslib@npm:^2.6.2, tslib@npm:^2.7.0, tslib@npm:^2.8.0":
|
||||
"tslib@npm:2.8.1, tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.3.0, tslib@npm:^2.4.0, tslib@npm:^2.4.1, tslib@npm:^2.6.2, tslib@npm:^2.7.0, tslib@npm:^2.8.0":
|
||||
version: 2.8.1
|
||||
resolution: "tslib@npm:2.8.1"
|
||||
checksum: 10/3e2e043d5c2316461cb54e5c7fe02c30ef6dccb3384717ca22ae5c6b5bc95232a6241df19c622d9c73b809bea33b187f6dbc73030963e29950c2141bc32a79f7
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"tslib@npm:^1.10.0, tslib@npm:^1.8.1":
|
||||
"tslib@npm:^1.8.1":
|
||||
version: 1.14.1
|
||||
resolution: "tslib@npm:1.14.1"
|
||||
checksum: 10/7dbf34e6f55c6492637adb81b555af5e3b4f9cc6b998fb440dac82d3b42bdc91560a35a5fb75e20e24a076c651438234da6743d139e4feabf0783f3cdfe1dddb
|
||||
@@ -31702,7 +31464,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"typescript@npm:5.9.2, typescript@npm:>=2.7, typescript@npm:>=3 < 6, typescript@npm:^5.0.4, typescript@npm:^5.4.5, typescript@npm:^5.5.4":
|
||||
"typescript@npm:5.9.2, typescript@npm:>=3 < 6, typescript@npm:^5.0.4, typescript@npm:^5.4.5, typescript@npm:^5.5.4":
|
||||
version: 5.9.2
|
||||
resolution: "typescript@npm:5.9.2"
|
||||
bin:
|
||||
@@ -31732,7 +31494,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"typescript@patch:typescript@npm%3A5.9.2#optional!builtin<compat/typescript>, typescript@patch:typescript@npm%3A>=2.7#optional!builtin<compat/typescript>, typescript@patch:typescript@npm%3A>=3 < 6#optional!builtin<compat/typescript>, typescript@patch:typescript@npm%3A^5.0.4#optional!builtin<compat/typescript>, typescript@patch:typescript@npm%3A^5.4.5#optional!builtin<compat/typescript>, typescript@patch:typescript@npm%3A^5.5.4#optional!builtin<compat/typescript>":
|
||||
"typescript@patch:typescript@npm%3A5.9.2#optional!builtin<compat/typescript>, typescript@patch:typescript@npm%3A>=3 < 6#optional!builtin<compat/typescript>, typescript@patch:typescript@npm%3A^5.0.4#optional!builtin<compat/typescript>, typescript@patch:typescript@npm%3A^5.4.5#optional!builtin<compat/typescript>, typescript@patch:typescript@npm%3A^5.5.4#optional!builtin<compat/typescript>":
|
||||
version: 5.9.2
|
||||
resolution: "typescript@patch:typescript@npm%3A5.9.2#optional!builtin<compat/typescript>::version=5.9.2&hash=5786d5"
|
||||
bin:
|
||||
|
||||
Reference in New Issue
Block a user