mirror of
https://github.com/google/blockly.git
synced 2026-01-07 00:50:27 +01:00
* chore(deps): Bump @hyperjump/json-schema from 0.23.3 to 1.5.0 Bumps [@hyperjump/json-schema](https://github.com/hyperjump-io/json-schema) from 0.23.3 to 1.5.0. - [Commits](https://github.com/hyperjump-io/json-schema/compare/v0.23.3...v1.5.0) --- updated-dependencies: - dependency-name: "@hyperjump/json-schema" dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> * chore(tests): Compatibility updates to validate-renamings.js A minimal set of updates to validate-renamings.js to make it compatible with @hyperjump/json-schema v1.5. The main difference is that that package now ships ESM rather than CJS modules, forcing the script to use import rather than require, with various knock-on effects (no __dirname variable, must be named *.mjs, etc.) * chore(tests) Remove unneeded IIFE * chore(tests): Additional tidy-up of ESM version Now that validate-renamings is an ES module, we can do some other cleanup to it. --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Christopher Allen <cpcallen+git@google.com>
61 lines
1.7 KiB
JavaScript
Executable File
61 lines
1.7 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
/**
|
|
* @license
|
|
* Copyright 2022 Google LLC
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
/**
|
|
* @fileoverview A script to validate the renamings file
|
|
* (scripts/migration/renamings.json5) agaist the schema
|
|
* (renamings-schema.json).
|
|
*/
|
|
|
|
import JSON5 from 'json5';
|
|
import {readFile} from 'fs/promises';
|
|
import {posixPath} from '../../scripts/helpers.js';
|
|
import {validate} from '@hyperjump/json-schema/draft-2020-12';
|
|
import {DETAILED} from '@hyperjump/json-schema/experimental';
|
|
|
|
/** @type {URL} Renaming schema filename. */
|
|
const SCHEMA_URL = new URL('renamings.schema.json', import.meta.url);
|
|
|
|
/** @type {URL} Renamings filename. */
|
|
const RENAMINGS_URL = new URL(
|
|
'../../scripts/migration/renamings.json5',
|
|
import.meta.url
|
|
);
|
|
|
|
const renamingsJson5 = await readFile(RENAMINGS_URL);
|
|
const renamings = JSON5.parse(renamingsJson5);
|
|
|
|
const output = await validate(SCHEMA_URL, renamings, DETAILED);
|
|
|
|
if (!output.valid) {
|
|
console.log('Renamings file is invalid.');
|
|
console.log('Maybe this validator output will help you find the problem:');
|
|
console.log(JSON5.stringify(output, undefined, ' '));
|
|
process.exit(1);
|
|
}
|
|
|
|
// File passed schema validation. Do some additional checks.
|
|
let ok = true;
|
|
Object.entries(renamings).forEach(([version, modules]) => {
|
|
// Scan through modules and check for duplicates.
|
|
const seen = new Set();
|
|
for (const {oldName} of modules) {
|
|
if (seen.has(oldName)) {
|
|
console.log(
|
|
`Duplicate entry for module ${oldName} ` + `in version ${version}.`
|
|
);
|
|
ok = false;
|
|
}
|
|
seen.add(oldName);
|
|
}
|
|
});
|
|
if (!ok) {
|
|
console.log('Renamings file is invalid.');
|
|
process.exit(1);
|
|
}
|
|
// Default is a successful exit 0.
|