From e215656ce9b965360e540da93ebf5c381cbe4e41 Mon Sep 17 00:00:00 2001 From: toasted-nutbread Date: Wed, 29 Nov 2023 20:13:15 -0500 Subject: Update types --- dev/bin/build.js | 64 ++++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 53 insertions(+), 11 deletions(-) (limited to 'dev/bin/build.js') diff --git a/dev/bin/build.js b/dev/bin/build.js index 282f0414..c5814dd3 100644 --- a/dev/bin/build.js +++ b/dev/bin/build.js @@ -21,13 +21,22 @@ import childProcess from 'child_process'; import fs from 'fs'; import path from 'path'; import readline from 'readline'; -import {fileURLToPath} from 'url'; +import JSZip from 'jszip'; +import {fileURLToPath} from 'node:url'; import {buildLibs} from '../build-libs.js'; import {ManifestUtil} from '../manifest-util.js'; import {getAllFiles, getArgs, testMain} from '../util.js'; const dirname = path.dirname(fileURLToPath(import.meta.url)); +/** + * @param {string} directory + * @param {string[]} excludeFiles + * @param {string} outputFileName + * @param {string[]} sevenZipExes + * @param {?import('jszip').OnUpdateCallback} onUpdate + * @param {boolean} dryRun + */ async function createZip(directory, excludeFiles, outputFileName, sevenZipExes, onUpdate, dryRun) { try { fs.unlinkSync(outputFileName); @@ -57,11 +66,17 @@ async function createZip(directory, excludeFiles, outputFileName, sevenZipExes, } } } - return await createJSZip(directory, excludeFiles, outputFileName, onUpdate, dryRun); + await createJSZip(directory, excludeFiles, outputFileName, onUpdate, dryRun); } +/** + * @param {string} directory + * @param {string[]} excludeFiles + * @param {string} outputFileName + * @param {?import('jszip').OnUpdateCallback} onUpdate + * @param {boolean} dryRun + */ async function createJSZip(directory, excludeFiles, outputFileName, onUpdate, dryRun) { - const JSZip = null; const files = getAllFiles(directory); removeItemsFromArray(files, excludeFiles); const zip = new JSZip(); @@ -89,6 +104,10 @@ async function createJSZip(directory, excludeFiles, outputFileName, onUpdate, dr } } +/** + * @param {string[]} array + * @param {string[]} removeItems + */ function removeItemsFromArray(array, removeItems) { for (const item of removeItems) { const index = getIndexOfFilePath(array, item); @@ -98,6 +117,11 @@ function removeItemsFromArray(array, removeItems) { } } +/** + * @param {string[]} array + * @param {string} item + * @returns {number} + */ function getIndexOfFilePath(array, item) { const pattern = /\\/g; const separator = '/'; @@ -110,6 +134,16 @@ function getIndexOfFilePath(array, item) { return -1; } +/** + * @param {string} buildDir + * @param {string} extDir + * @param {ManifestUtil} manifestUtil + * @param {string[]} variantNames + * @param {string} manifestPath + * @param {boolean} dryRun + * @param {boolean} dryRunBuildZip + * @param {string} yomitanVersion + */ async function build(buildDir, extDir, manifestUtil, variantNames, manifestPath, dryRun, dryRunBuildZip, yomitanVersion) { const sevenZipExes = ['7za', '7z']; @@ -119,6 +153,7 @@ async function build(buildDir, extDir, manifestUtil, variantNames, manifestPath, } const dontLogOnUpdate = !process.stdout.isTTY; + /** @type {import('jszip').OnUpdateCallback} */ const onUpdate = (metadata) => { if (dontLogOnUpdate) { return; } @@ -127,7 +162,7 @@ async function build(buildDir, extDir, manifestUtil, variantNames, manifestPath, message += ` (${metadata.currentFile})`; } - readline.clearLine(process.stdout); + readline.clearLine(process.stdout, 0); readline.cursorTo(process.stdout, 0); process.stdout.write(message); }; @@ -173,6 +208,10 @@ async function build(buildDir, extDir, manifestUtil, variantNames, manifestPath, } } +/** + * @param {string} directory + * @param {string[]} files + */ function ensureFilesExist(directory, files) { for (const file of files) { assert.ok(fs.existsSync(path.join(directory, file))); @@ -180,8 +219,11 @@ function ensureFilesExist(directory, files) { } +/** + * @param {string[]} argv + */ export async function main(argv) { - const args = getArgs(argv, new Map([ + const args = getArgs(argv, new Map(/** @type {[key: string, value: (boolean|null|number|string|string[])][]} */ ([ ['all', false], ['default', false], ['manifest', null], @@ -189,11 +231,11 @@ export async function main(argv) { ['dry-run-build-zip', false], ['yomitan-version', '0.0.0.0'], [null, []] - ])); + ]))); - const dryRun = args.get('dry-run'); - const dryRunBuildZip = args.get('dry-run-build-zip'); - const yomitanVersion = args.get('yomitan-version'); + const dryRun = /** @type {boolean} */ (args.get('dry-run')); + const dryRunBuildZip = /** @type {boolean} */ (args.get('dry-run-build-zip')); + const yomitanVersion = /** @type {string} */ (args.get('yomitan-version')); const manifestUtil = new ManifestUtil(); @@ -204,11 +246,11 @@ export async function main(argv) { try { await buildLibs(); - const variantNames = ( + const variantNames = /** @type {string[]} */ (( argv.length === 0 || args.get('all') ? manifestUtil.getVariants().filter(({buildable}) => buildable !== false).map(({name}) => name) : args.get(null) - ); + )); await build(buildDir, extDir, manifestUtil, variantNames, manifestPath, dryRun, dryRunBuildZip, yomitanVersion); } finally { // Restore manifest -- cgit v1.2.3 From fd8be74abfd8ed46f984a5d0b70adcc8c641b617 Mon Sep 17 00:00:00 2001 From: toasted-nutbread Date: Wed, 29 Nov 2023 20:31:02 -0500 Subject: Update types --- .eslintrc.json | 8 ++++++++ dev/bin/build.js | 2 +- dev/bin/dictionary-validate.js | 1 + dev/bin/schema-validate.js | 1 + dev/build-libs.js | 1 + test/jsconfig.json | 2 +- 6 files changed, 13 insertions(+), 2 deletions(-) (limited to 'dev/bin/build.js') diff --git a/.eslintrc.json b/.eslintrc.json index 58262714..b16032fc 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -771,6 +771,14 @@ "jsdoc/require-jsdoc": "off", "jsdoc/no-undefined-types": "off" } + }, + { + "files": [ + "dev/lib/**/*.js" + ], + "extends": [ + "plugin:@typescript-eslint/disable-type-checked" + ] } ] } diff --git a/dev/bin/build.js b/dev/bin/build.js index c5814dd3..47c08f3c 100644 --- a/dev/bin/build.js +++ b/dev/bin/build.js @@ -254,7 +254,7 @@ export async function main(argv) { await build(buildDir, extDir, manifestUtil, variantNames, manifestPath, dryRun, dryRunBuildZip, yomitanVersion); } finally { // Restore manifest - const manifestName = (!args.get('default') && args.get('manifest') !== null) ? args.get('manifest') : null; + const manifestName = /** @type {?string} */ ((!args.get('default') && args.get('manifest') !== null) ? args.get('manifest') : null); const restoreManifest = manifestUtil.getManifest(manifestName); process.stdout.write('Restoring manifest...\n'); if (!dryRun) { diff --git a/dev/bin/dictionary-validate.js b/dev/bin/dictionary-validate.js index 0affb919..dc01815e 100644 --- a/dev/bin/dictionary-validate.js +++ b/dev/bin/dictionary-validate.js @@ -18,6 +18,7 @@ import {testDictionaryFiles} from '../dictionary-validate.js'; +/** */ async function main() { const dictionaryFileNames = process.argv.slice(2); if (dictionaryFileNames.length === 0) { diff --git a/dev/bin/schema-validate.js b/dev/bin/schema-validate.js index 319c0d2c..206f26ca 100644 --- a/dev/bin/schema-validate.js +++ b/dev/bin/schema-validate.js @@ -20,6 +20,7 @@ import fs from 'fs'; import {performance} from 'perf_hooks'; import {createJsonSchema} from '../schema-validate.js'; +/** */ function main() { const args = process.argv.slice(2); if (args.length < 2) { diff --git a/dev/build-libs.js b/dev/build-libs.js index eee007f6..5caabec7 100644 --- a/dev/build-libs.js +++ b/dev/build-libs.js @@ -45,6 +45,7 @@ async function buildLib(scriptPath) { }); } +/** */ export async function buildLibs() { const devLibPath = path.join(dirname, 'lib'); const files = await fs.promises.readdir(devLibPath, { diff --git a/test/jsconfig.json b/test/jsconfig.json index 2461fda9..1881fbce 100644 --- a/test/jsconfig.json +++ b/test/jsconfig.json @@ -34,6 +34,6 @@ ], "exclude": [ "../node_modules", - "../ext/lib" + "../dev/lib" ] } \ No newline at end of file -- cgit v1.2.3 From 083b4749139213c6fefe80166d73f54604a85267 Mon Sep 17 00:00:00 2001 From: toasted-nutbread Date: Sun, 3 Dec 2023 10:45:08 -0500 Subject: Fix some import orderings --- dev/bin/build.js | 4 ++-- ext/js/background/offscreen-proxy.js | 2 +- ext/js/language/dictionary-importer.js | 2 +- test/database.test.js | 2 +- test/deinflector.test.js | 2 +- test/dom-text-scanner.test.js | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) (limited to 'dev/bin/build.js') diff --git a/dev/bin/build.js b/dev/bin/build.js index 47c08f3c..deb82618 100644 --- a/dev/bin/build.js +++ b/dev/bin/build.js @@ -19,10 +19,10 @@ import assert from 'assert'; import childProcess from 'child_process'; import fs from 'fs'; -import path from 'path'; -import readline from 'readline'; import JSZip from 'jszip'; import {fileURLToPath} from 'node:url'; +import path from 'path'; +import readline from 'readline'; import {buildLibs} from '../build-libs.js'; import {ManifestUtil} from '../manifest-util.js'; import {getAllFiles, getArgs, testMain} from '../util.js'; diff --git a/ext/js/background/offscreen-proxy.js b/ext/js/background/offscreen-proxy.js index 757d78d5..7b504855 100644 --- a/ext/js/background/offscreen-proxy.js +++ b/ext/js/background/offscreen-proxy.js @@ -17,8 +17,8 @@ */ import {isObject} from '../core.js'; -import {ArrayBufferUtil} from '../data/sandbox/array-buffer-util.js'; import {ExtensionError} from '../core/extension-error.js'; +import {ArrayBufferUtil} from '../data/sandbox/array-buffer-util.js'; export class OffscreenProxy { constructor() { diff --git a/ext/js/language/dictionary-importer.js b/ext/js/language/dictionary-importer.js index 115e0726..08fcf86b 100644 --- a/ext/js/language/dictionary-importer.js +++ b/ext/js/language/dictionary-importer.js @@ -25,8 +25,8 @@ import { configure } from '../../lib/zip.js'; import {stringReverse} from '../core.js'; -import {MediaUtil} from '../media/media-util.js'; import {ExtensionError} from '../core/extension-error.js'; +import {MediaUtil} from '../media/media-util.js'; const ajvSchemas = /** @type {import('dictionary-importer').CompiledSchemaValidators} */ (/** @type {unknown} */ (ajvSchemas0)); const BlobWriter = /** @type {typeof import('@zip.js/zip.js').BlobWriter} */ (/** @type {unknown} */ (BlobWriter0)); diff --git a/test/database.test.js b/test/database.test.js index 30854d55..80871f95 100644 --- a/test/database.test.js +++ b/test/database.test.js @@ -17,8 +17,8 @@ */ import {IDBFactory, IDBKeyRange} from 'fake-indexeddb'; -import path from 'path'; import {fileURLToPath} from 'node:url'; +import path from 'path'; import {beforeEach, describe, expect, test, vi} from 'vitest'; import {createDictionaryArchive} from '../dev/util.js'; import {DictionaryDatabase} from '../ext/js/language/dictionary-database.js'; diff --git a/test/deinflector.test.js b/test/deinflector.test.js index a69f8e56..bd538428 100644 --- a/test/deinflector.test.js +++ b/test/deinflector.test.js @@ -17,10 +17,10 @@ */ import fs from 'fs'; +import {fileURLToPath} from 'node:url'; import path from 'path'; import {describe, expect, test} from 'vitest'; import {Deinflector} from '../ext/js/language/deinflector.js'; -import {fileURLToPath} from 'node:url'; const dirname = path.dirname(fileURLToPath(import.meta.url)); diff --git a/test/dom-text-scanner.test.js b/test/dom-text-scanner.test.js index 30aec33e..f6a7410a 100644 --- a/test/dom-text-scanner.test.js +++ b/test/dom-text-scanner.test.js @@ -18,8 +18,8 @@ import fs from 'fs'; import {JSDOM} from 'jsdom'; -import path from 'path'; import {fileURLToPath} from 'node:url'; +import path from 'path'; import {expect, test} from 'vitest'; import {DOMTextScanner} from '../ext/js/dom/dom-text-scanner.js'; -- cgit v1.2.3