diff options
| -rw-r--r-- | .github/dependabot.yml | 14 | ||||
| -rw-r--r-- | .github/workflows/ci.yml | 9 | ||||
| -rw-r--r-- | .github/workflows/create-prerelease-on-tag.yml | 2 | ||||
| -rw-r--r-- | .github/workflows/playwright.yml | 9 | ||||
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | CONTRIBUTING.md | 10 | ||||
| -rw-r--r-- | README.md | 2 | ||||
| -rw-r--r-- | dev/build.js | 12 | ||||
| -rw-r--r-- | dev/data/manifest-variants.json | 2 | ||||
| -rw-r--r-- | ext/manifest.json | 131 | ||||
| -rw-r--r-- | package-lock.json | 28 | ||||
| -rw-r--r-- | package.json | 4 | 
12 files changed, 54 insertions, 170 deletions
| diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 0bbc7cb8..0d2b9bb0 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -6,6 +6,13 @@ updates:        interval: "weekly"      labels:        - "area/dependencies" +    groups: # group minor/patch updates together +      minor: +        patterns: +          - "*" +        update-types: +          - "minor" +          - "patch"    - package-ecosystem: "npm"      directory: "/" @@ -13,3 +20,10 @@ updates:        interval: "weekly"      labels:        - "area/dependencies" +    groups: # group minor/patch updates together +      minor: +        patterns: +          - "*" +        update-types: +          - "minor" +          - "patch" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c62c9893..1b81df2f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -41,16 +41,11 @@ jobs:          env:            CI: true -      - name: Manifest -        run: npm run test-manifest -        env: -          CI: true +      - name: Build +        run: npm run build        - name: Validate manifest.json of the extension          uses: cardinalby/schema-validator-action@c2da05377e89dd0c9b7be9420da0b3534b1efcce # pin@v1          with:            file: ext/manifest.json            schema: "https://json.schemastore.org/chrome-manifest.json" - -      - name: Build -        run: npm run test-build diff --git a/.github/workflows/create-prerelease-on-tag.yml b/.github/workflows/create-prerelease-on-tag.yml index 06cb8c7e..0999c5ec 100644 --- a/.github/workflows/create-prerelease-on-tag.yml +++ b/.github/workflows/create-prerelease-on-tag.yml @@ -21,7 +21,7 @@ jobs:            node-version-file: ".node-version"        - name: Lint -        run: npm run-script build +        run: npm run-script build -- --yomitan-version ${{ github.ref_name }}          shell: bash        - name: Release diff --git a/.github/workflows/playwright.yml b/.github/workflows/playwright.yml index a1135157..8efc184a 100644 --- a/.github/workflows/playwright.yml +++ b/.github/workflows/playwright.yml @@ -14,13 +14,13 @@ jobs:          run: rm -rf /usr/share/fonts        - uses: actions/checkout@v3 -       +        - name: Install CJK fonts          uses: awalsh128/cache-apt-pkgs-action@1850ee53f6e706525805321a3f2f863dcf73c962 # v1.3.0          with:            packages: fonts-ipafont-mincho            execute_install_scripts: true -         +        - uses: actions/setup-node@v3          with:            cache: "npm" @@ -29,6 +29,9 @@ jobs:        - name: Install dependencies          run: npm ci +      - name: Build +        run: npm run build +        - name: Cache playwright browsers          id: cache-playwright          uses: actions/cache@v3 @@ -40,7 +43,7 @@ jobs:        - if: ${{ steps.cache-playwright.outputs.cache-hit != 'true' }}          name: Install Playwright Browsers          run: npx playwright install chromium -         +        - name: Grab latest dictionaries from dictionaries branch          uses: actions/checkout@v3          with: @@ -6,3 +6,4 @@ dictionaries/  /playwright-report/  /playwright/.cache/  /test/playwright/__screenshots__/ +ext/manifest.json diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ffc76b74..b67f6092 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -50,9 +50,10 @@ Several command line arguments are available for these scripts:  * `[target]` - Builds a specific target.  * `--all` - Builds all targets specified in [manifest-variants.json](dev/data/manifest-variants.json).  * `--default` - Restores the default manifest file. -* `--manifest <target>` - Overwrites [ext/manifest.json](ext/manifest.json) with the manifest variant for the specified build target. +* `--manifest <target>` - Overwrites `ext/manifest.json` with the manifest variant for the specified build target.  * `--dry-run` - Runs the full build process (excluding zip building), checking that the configuration is valid.  * `--dry-run-build-zip` - If `--dry-run` is also specified, zip building will also be performed in memory; no files are created. +* `--yomitan-version <version>` - Sets the version number in the extension manifest. Defaults to 0.0.0.0 if not set.  If no arguments are specified, the command is equivalent to `build.bat --all`. @@ -66,11 +67,8 @@ Otherwise, the [JSZip](https://stuk.github.io/jszip/) API is used to generate th  ## Manifest  Manifest variants for different build targets are specified in [manifest-variants.json](dev/data/manifest-variants.json). -This file is used to overwrite the [manfiest.json](ext/manifest.json) file included in the extension. -By default, this manifest should be the default `chrome` manifest, and changes to [manfiest.json](ext/manifest.json) should not be committed -unless there is a corresponding change in [manifest-variants.json](dev/data/manifest-variants.json). -There is a continuous integration test which validates this, and the default manifest can be restored by running -`build.bat --default`. +This file is used to generate the `ext/manifest.json` file included in the extension. +The generated `ext/manfiest.json` should not be committed.  ## Style @@ -1,6 +1,6 @@  # Yomitan -[)](https://chrome.google.com/webstore/detail/yomitan-development-build/glnaenfapkkecknnmginabpmgkenenml) +[)](https://chrome.google.com/webstore/detail/yomitan-development-build/glnaenfapkkecknnmginabpmgkenenml)  [)](https://github.com/themoeway/yomitan/releases)  [](https://securityscorecards.dev/viewer/?uri=github.com/themoeway/yomitan)  [](https://discord.gg/4ysT8qjE)\ diff --git a/dev/build.js b/dev/build.js index 5222c4c8..24b1e2d0 100644 --- a/dev/build.js +++ b/dev/build.js @@ -108,7 +108,7 @@ function getIndexOfFilePath(array, item) {      return -1;  } -async function build(buildDir, extDir, manifestUtil, variantNames, manifestPath, dryRun, dryRunBuildZip) { +async function build(buildDir, extDir, manifestUtil, variantNames, manifestPath, dryRun, dryRunBuildZip, yomitanVersion) {      const sevenZipExes = ['7za', '7z'];      // Create build directory @@ -130,6 +130,8 @@ async function build(buildDir, extDir, manifestUtil, variantNames, manifestPath,          process.stdout.write(message);      }; +    process.stdout.write(`Version: ${yomitanVersion}...\n`); +      for (const variantName of variantNames) {          const variant = manifestUtil.getVariant(variantName);          if (typeof variant === 'undefined' || variant.buildable === false) { continue; } @@ -148,7 +150,7 @@ async function build(buildDir, extDir, manifestUtil, variantNames, manifestPath,              const fileNameSafe = path.basename(fileName);              const fullFileName = path.join(buildDir, fileNameSafe);              if (!dryRun) { -                fs.writeFileSync(manifestPath, ManifestUtil.createManifestString(modifiedManifest)); +                fs.writeFileSync(manifestPath, ManifestUtil.createManifestString(modifiedManifest).replace('$YOMITAN_VERSION', yomitanVersion));              }              if (!dryRun || dryRunBuildZip) { @@ -183,11 +185,13 @@ async function main(argv) {          ['manifest', null],          ['dry-run', false],          ['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 manifestUtil = new ManifestUtil(); @@ -202,14 +206,14 @@ async function main(argv) {              manifestUtil.getVariants().filter(({buildable}) => buildable !== false).map(({name}) => name) :              args.get(null)          ); -        await build(buildDir, extDir, manifestUtil, variantNames, manifestPath, dryRun, dryRunBuildZip); +        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 restoreManifest = manifestUtil.getManifest(manifestName);          process.stdout.write('Restoring manifest...\n');          if (!dryRun) { -            fs.writeFileSync(manifestPath, ManifestUtil.createManifestString(restoreManifest)); +            fs.writeFileSync(manifestPath, ManifestUtil.createManifestString(restoreManifest).replace('$YOMITAN_VERSION', yomitanVersion));          }      }  } diff --git a/dev/data/manifest-variants.json b/dev/data/manifest-variants.json index 304a3a0e..26d91d26 100644 --- a/dev/data/manifest-variants.json +++ b/dev/data/manifest-variants.json @@ -2,7 +2,7 @@      "manifest": {          "manifest_version": 3,          "name": "Yomitan", -        "version": "23.4.7.0", +        "version": "$YOMITAN_VERSION",          "description": "Japanese dictionary with Anki integration",          "author": "TheMoeWay",          "icons": { diff --git a/ext/manifest.json b/ext/manifest.json deleted file mode 100644 index 018a4a0b..00000000 --- a/ext/manifest.json +++ /dev/null @@ -1,131 +0,0 @@ -{ -    "manifest_version": 3, -    "name": "Yomitan", -    "version": "23.4.7.0", -    "description": "Japanese dictionary with Anki integration", -    "author": "TheMoeWay", -    "icons": { -        "16": "images/icon16.png", -        "19": "images/icon19.png", -        "32": "images/icon32.png", -        "38": "images/icon38.png", -        "48": "images/icon48.png", -        "64": "images/icon64.png", -        "128": "images/icon128.png" -    }, -    "action": { -        "default_icon": { -            "16": "images/icon16.png", -            "19": "images/icon19.png", -            "32": "images/icon32.png", -            "38": "images/icon38.png", -            "48": "images/icon48.png", -            "64": "images/icon64.png", -            "128": "images/icon128.png" -        }, -        "default_title": "Yomitan", -        "default_popup": "action-popup.html" -    }, -    "background": { -        "service_worker": "sw.js" -    }, -    "content_scripts": [ -        { -            "run_at": "document_idle", -            "matches": [ -                "http://*/*", -                "https://*/*", -                "file://*/*" -            ], -            "match_about_blank": true, -            "all_frames": true, -            "js": [ -                "js/core.js", -                "js/yomichan.js", -                "js/app/frontend.js", -                "js/app/popup.js", -                "js/app/popup-factory.js", -                "js/app/popup-proxy.js", -                "js/app/popup-window.js", -                "js/app/theme-controller.js", -                "js/comm/api.js", -                "js/comm/cross-frame-api.js", -                "js/comm/frame-ancestry-handler.js", -                "js/comm/frame-client.js", -                "js/comm/frame-offset-forwarder.js", -                "js/data/sandbox/string-util.js", -                "js/dom/dom-text-scanner.js", -                "js/dom/document-util.js", -                "js/dom/text-source-element.js", -                "js/dom/text-source-range.js", -                "js/input/hotkey-handler.js", -                "js/language/text-scanner.js", -                "js/script/dynamic-loader.js", -                "js/app/content-script-main.js" -            ] -        } -    ], -    "minimum_chrome_version": "96.0.0.0", -    "options_ui": { -        "page": "settings.html", -        "open_in_tab": true -    }, -    "sandbox": { -        "pages": [ -            "template-renderer.html" -        ] -    }, -    "permissions": [ -        "storage", -        "clipboardWrite", -        "unlimitedStorage", -        "webRequest", -        "declarativeNetRequest", -        "scripting" -    ], -    "optional_permissions": [ -        "clipboardRead", -        "nativeMessaging" -    ], -    "host_permissions": [ -        "<all_urls>" -    ], -    "commands": { -        "toggleTextScanning": { -            "suggested_key": { -                "default": "Alt+Delete" -            }, -            "description": "Toggle text scanning on/off" -        }, -        "openInfoPage": { -            "description": "Open the info page" -        }, -        "openSettingsPage": { -            "description": "Open the settings page" -        }, -        "openSearchPage": { -            "suggested_key": { -                "default": "Alt+Insert" -            }, -            "description": "Open the search page" -        }, -        "openPopupWindow": { -            "description": "Open the popup window" -        } -    }, -    "web_accessible_resources": [ -        { -            "resources": [ -                "popup.html", -                "template-renderer.html" -            ], -            "matches": [ -                "<all_urls>" -            ] -        } -    ], -    "content_security_policy": { -        "extension_pages": "default-src 'self'; img-src blob: 'self'; style-src 'self' 'unsafe-inline'; media-src *; connect-src *", -        "sandbox": "sandbox allow-scripts; default-src 'self'; script-src 'self' 'unsafe-eval'; style-src 'unsafe-inline'" -    } -} diff --git a/package-lock.json b/package-lock.json index 232e2de5..f0ec91b6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,9 +17,9 @@                  "eslint": "^8.48.0",                  "eslint-plugin-header": "^3.1.1",                  "eslint-plugin-jsdoc": "^39.3.6", -                "eslint-plugin-jsonc": "^2.8.0", +                "eslint-plugin-jsonc": "^2.9.0",                  "eslint-plugin-no-unsanitized": "^4.0.1", -                "fake-indexeddb": "^4.0.0", +                "fake-indexeddb": "^4.0.2",                  "html-validate": "^7.6.0",                  "jsdom": "^22.1.0",                  "parse5": "^7.1.2", @@ -3040,9 +3040,9 @@              }          },          "node_modules/eslint-plugin-jsonc": { -            "version": "2.8.0", -            "resolved": "https://registry.npmjs.org/eslint-plugin-jsonc/-/eslint-plugin-jsonc-2.8.0.tgz", -            "integrity": "sha512-K4VsnztnNwpm+V49CcCu5laq8VjclJpuhfI9LFkOrOyK+BKdQHMzkWo43B4X4rYaVrChm4U9kw/tTU5RHh5Wtg==", +            "version": "2.9.0", +            "resolved": "https://registry.npmjs.org/eslint-plugin-jsonc/-/eslint-plugin-jsonc-2.9.0.tgz", +            "integrity": "sha512-RK+LeONVukbLwT2+t7/OY54NJRccTXh/QbnXzPuTLpFMVZhPuq1C9E07+qWenGx7rrQl0kAalAWl7EmB+RjpGA==",              "dev": true,              "dependencies": {                  "@eslint-community/eslint-utils": "^4.2.0", @@ -3283,9 +3283,9 @@              ]          },          "node_modules/fake-indexeddb": { -            "version": "4.0.0", -            "resolved": "https://registry.npmjs.org/fake-indexeddb/-/fake-indexeddb-4.0.0.tgz", -            "integrity": "sha512-oCfWSJ/qvQn1XPZ8SHX6kY3zr1t+bN7faZ/lltGY0SBGhFOPXnWf0+pbO/MOAgfMx6khC2gK3S/bvAgQpuQHDQ==", +            "version": "4.0.2", +            "resolved": "https://registry.npmjs.org/fake-indexeddb/-/fake-indexeddb-4.0.2.tgz", +            "integrity": "sha512-SdTwEhnakbgazc7W3WUXOJfGmhH0YfG4d+dRPOFoYDRTL6U5t8tvrmkf2W/C3W1jk2ylV7Wrnj44RASqpX/lEw==",              "dev": true,              "dependencies": {                  "realistic-structured-clone": "^3.0.0" @@ -11629,9 +11629,9 @@              }          },          "eslint-plugin-jsonc": { -            "version": "2.8.0", -            "resolved": "https://registry.npmjs.org/eslint-plugin-jsonc/-/eslint-plugin-jsonc-2.8.0.tgz", -            "integrity": "sha512-K4VsnztnNwpm+V49CcCu5laq8VjclJpuhfI9LFkOrOyK+BKdQHMzkWo43B4X4rYaVrChm4U9kw/tTU5RHh5Wtg==", +            "version": "2.9.0", +            "resolved": "https://registry.npmjs.org/eslint-plugin-jsonc/-/eslint-plugin-jsonc-2.9.0.tgz", +            "integrity": "sha512-RK+LeONVukbLwT2+t7/OY54NJRccTXh/QbnXzPuTLpFMVZhPuq1C9E07+qWenGx7rrQl0kAalAWl7EmB+RjpGA==",              "dev": true,              "requires": {                  "@eslint-community/eslint-utils": "^4.2.0", @@ -11761,9 +11761,9 @@              "dev": true          },          "fake-indexeddb": { -            "version": "4.0.0", -            "resolved": "https://registry.npmjs.org/fake-indexeddb/-/fake-indexeddb-4.0.0.tgz", -            "integrity": "sha512-oCfWSJ/qvQn1XPZ8SHX6kY3zr1t+bN7faZ/lltGY0SBGhFOPXnWf0+pbO/MOAgfMx6khC2gK3S/bvAgQpuQHDQ==", +            "version": "4.0.2", +            "resolved": "https://registry.npmjs.org/fake-indexeddb/-/fake-indexeddb-4.0.2.tgz", +            "integrity": "sha512-SdTwEhnakbgazc7W3WUXOJfGmhH0YfG4d+dRPOFoYDRTL6U5t8tvrmkf2W/C3W1jk2ylV7Wrnj44RASqpX/lEw==",              "dev": true,              "requires": {                  "realistic-structured-clone": "^3.0.0" diff --git a/package.json b/package.json index b4028da7..12ac8305 100644 --- a/package.json +++ b/package.json @@ -43,9 +43,9 @@          "eslint": "^8.48.0",          "eslint-plugin-header": "^3.1.1",          "eslint-plugin-jsdoc": "^39.3.6", -        "eslint-plugin-jsonc": "^2.8.0", +        "eslint-plugin-jsonc": "^2.9.0",          "eslint-plugin-no-unsanitized": "^4.0.1", -        "fake-indexeddb": "^4.0.0", +        "fake-indexeddb": "^4.0.2",          "html-validate": "^7.6.0",          "jsdom": "^22.1.0",          "parse5": "^7.1.2", |