diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..a98fd85 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,19 @@ +version: 2 +updates: + - package-ecosystem: "npm" + directory: "/" + schedule: + # Available options: daily, weekly or monthly + interval: "daily" + # Has to be formatted as hh:mm + time: "06:06" + # List of time zones: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones + timezone: "Europe/Paris" + # Allow updates for Open Terms Archive engine + allow: + - dependency-name: "@opentermsarchive/engine" + # Open Terms Archive recommends to always add the collection maintainer team as a reviewer so they are notified of the update + reviewers: + - "OpenTermsArchive/france" + # Avoid having too many open pull requests + open-pull-requests-limit: 1 diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index eecab83..508b3fe 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Get target server hostname id: get_hostname uses: mikefarah/yq@master diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5bfe9f4..a037dd6 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,32 +12,32 @@ jobs: validate_schema: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v2 + - uses: actions/checkout@v4 + - uses: actions/setup-node@v3 with: - node-version: 16 + node-version: 20 - run: npm install - run: npm run test:schema lint: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v2 + - uses: actions/checkout@v4 + - uses: actions/setup-node@v3 with: - node-version: 16 + node-version: 20 - run: npm install - run: npm run lint validate_modified_declarations: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 with: fetch-depth: 0 # fetch all history for all branches and tags - - uses: actions/setup-node@v2 + - uses: actions/setup-node@v3 with: - node-version: 16 + node-version: 20 - run: npm install - run: npm run test:modified - name: Generate artifacts diff --git a/README.md b/README.md index 898b5b0..179e6a5 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,6 @@ -# Open Terms Archive - French services +# Declarations of terms tracked in the *France* collection -These services declarations are maintained by [UFC-Que Choisir](https://www.quechoisir.org) with support from the [Office of the French Ambassador for Digital Affairs](https://www.diplomatie.gouv.fr/fr/politique-etrangere-de-la-france/diplomatie-numerique/) and tracked on [Open Terms Archive](https://opentermsarchive.org). - -The terms listed in this collection are tracked by the [Open Terms Archive engine](https://github.com/OpenTermsArchive/engine). +The terms in this collection were initially declared by [UFC-Que Choisir](https://www.quechoisir.org) with support from the [Office of the French Ambassador for Digital Affairs](https://www.diplomatie.gouv.fr/fr/politique-etrangere-de-la-france/diplomatie-numerique/), and are now maintained by volunteer contributors. They are tracked using [Open Terms Archive](https://opentermsarchive.org). You can [explore the tracked versions](https://github.com/OpenTermsArchive/france-versions) interactively or [download them as a dataset](https://github.com/OpenTermsArchive/france-versions/releases) in the `OpenTermsArchive/france-versions` repository. @@ -10,17 +8,17 @@ You can [explore the tracked versions](https://github.com/OpenTermsArchive/franc ## Scope -The terms tracked by this repository are those of services that operate: - -- In the French jurisdiction. -- In French, unless no French version exists, in which case English will be used; if there is no English version either, then the primary official language of the jurisdiction of incorporation of the service operator will be used. +The terms you will find in this collection match the following scope: +- **Topic:** largest French online B2C services. +- **Jurisdictions:** France +- **Languages:** French, unless no French version exists, in which case English will be used; if there is no English version either, then the primary official language of the jurisdiction of incorporation of the service operator will be used. - - - ## Contribute -In order to contribute additional terms to this collection or correct existing ones, please read the guidelines on [targeting](https://docs.opentermsarchive.org/guidelines/targeting/) and [declaring](https://docs.opentermsarchive.org/guidelines/declaring/) terms. +In order to contribute additional terms to this collection or correct existing ones, please read the [documentation](https://docs.opentermsarchive.org/contributing-terms/). - - - @@ -30,6 +28,14 @@ Interacting with this collection can also be done over the command line. Read th - - - +## Suggested engine updates + +In order to keep the Open Terms Archive engine up-to-date, updates will be automatically suggested by [Dependabot](https://github.blog/2020-06-01-keep-all-your-packages-up-to-date-with-dependabot/) in a pull request when a new version is available. + +While engine updates follow the [semantic versioning](https://semver.org) standard and automated collection tests should provide a safety net, it is ultimately the responsibility of the maintainers of the collection to check version compatibility and potentially adjust the declarations before applying these updates. + +- - - + ## License The code in this repository is distributed under the GNU Affero General Public Licence (AGPL) v3.0. diff --git a/deployment/requirements.yml b/deployment/requirements.yml index 24819ed..680f710 100644 --- a/deployment/requirements.yml +++ b/deployment/requirements.yml @@ -1,4 +1,4 @@ --- collections: - name: opentermsarchive.deployment - version: 0.0.11 + version: 0.0.14 diff --git a/package-lock.json b/package-lock.json index ccb7ff4..cd5ddd7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,7 +6,7 @@ "": { "license": "AGPL-3.0", "dependencies": { - "@opentermsarchive/engine": "~0.30.1" + "@opentermsarchive/engine": "~0.33.1" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -974,9 +974,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", - "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", + "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -1012,9 +1012,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.48.0.tgz", - "integrity": "sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==", + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.54.0.tgz", + "integrity": "sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } @@ -1068,11 +1068,11 @@ "integrity": "sha512-59SgoZ3EXbkfSX7b63tsou/SDGzwUEK6MuB5sKqgVK1/XE0fxmpsOb9DQI8LXW3KfGnAjImCGhhEb7uPPAUVNA==" }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", - "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", + "@humanwhocodes/object-schema": "^2.0.1", "debug": "^4.1.1", "minimatch": "^3.0.5" }, @@ -1093,9 +1093,9 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==" }, "node_modules/@jsdevtools/ono": { "version": "7.1.3", @@ -1828,14 +1828,15 @@ "integrity": "sha512-8adktjIb76A7viIdayQSFuBEwOzwhDC+9yxZpKNHjfzrlostHCw0/N7JWpWMObfElwvJMk2fY2l1noENCk9wmw==" }, "node_modules/@opentermsarchive/engine": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/@opentermsarchive/engine/-/engine-0.30.1.tgz", - "integrity": "sha512-7jRdjbPmpIpa+/g0VFHWtkACkJWSianBBmga6qMhhjFJOUNS81o7G54Z/84IF68EwqtkAsq/QANs11iniOTdAA==", + "version": "0.33.1", + "resolved": "https://registry.npmjs.org/@opentermsarchive/engine/-/engine-0.33.1.tgz", + "integrity": "sha512-DyjIBAvV/YjDEkoaxJZBq8HLqS/Y4Ens7oWpT29NwamuDcI28CHYZLDmjMhfaqymDuRSK/rhhuK/EF+Nz1EiwA==", "dependencies": { "@accordproject/markdown-cicero": "^0.15.2", "@accordproject/markdown-pdf": "^0.15.2", "@opentermsarchive/fetch-charset-detection": "^1.0.1", "@opentermsarchive/turndown": "^7.1.3", + "@stylistic/eslint-plugin-js": "^1.4.1", "abort-controller": "^3.0.0", "ajv": "^6.12.6", "archiver": "^5.3.0", @@ -1850,10 +1851,10 @@ "datauri": "^4.1.0", "deep-diff": "^1.0.2", "dotenv": "^10.0.0", - "eslint": "^8.2.0", + "eslint": "^8.53.0", "eslint-config-airbnb-base": "^15.0.0", "eslint-plugin-chai-friendly": "^0.7.2", - "eslint-plugin-import": "^2.25.3", + "eslint-plugin-import": "^2.29.0", "eslint-plugin-json-format": "^2.0.1", "express": "^4.18.2", "fs-extra": "^10.0.0", @@ -1890,7 +1891,7 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@opentermsarchive/terms-types": "~0.1.1" + "@opentermsarchive/terms-types": "^1.0.0" } }, "node_modules/@opentermsarchive/fetch-charset-detection": { @@ -1908,9 +1909,9 @@ } }, "node_modules/@opentermsarchive/terms-types": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@opentermsarchive/terms-types/-/terms-types-0.1.1.tgz", - "integrity": "sha512-7csk5XK8uHm7Oxv0WrHOHWClnM/67nQBczT8i+j/sDzF9jxUBlCRJhhC9UgtzWbLhJedmKdt7ZPeX/kWdgKc9g==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@opentermsarchive/terms-types/-/terms-types-1.1.0.tgz", + "integrity": "sha512-bjJnBmV9t5WFlao0sdPHep1lFqHKlMSQhDN6ObD5/IAGCPZjpTmA50ZYCOX616C87akrXjjgfJpVp+tEfYoKPg==", "peer": true }, "node_modules/@opentermsarchive/turndown": { @@ -2435,6 +2436,24 @@ "node": ">=14.0.0" } }, + "node_modules/@stylistic/eslint-plugin-js": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-js/-/eslint-plugin-js-1.4.1.tgz", + "integrity": "sha512-WXHPEVw5PB7OML7cLwHJDEcCyLiP7vzKeBbSwmpHLK0oh0JYkoJfTg2hEdFuQT5rQxFy3KzCy9R1mZ0wgLjKrA==", + "dependencies": { + "acorn": "^8.11.2", + "escape-string-regexp": "^4.0.0", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "graphemer": "^1.4.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "peerDependencies": { + "eslint": ">=8.40.0" + } + }, "node_modules/@supercharge/promise-pool": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/@supercharge/promise-pool/-/promise-pool-1.7.0.tgz", @@ -2549,6 +2568,11 @@ "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==" }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" + }, "node_modules/@xmldom/xmldom": { "version": "0.8.10", "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", @@ -2586,9 +2610,9 @@ } }, "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", "bin": { "acorn": "bin/acorn" }, @@ -2908,13 +2932,13 @@ } }, "node_modules/array.prototype.flatmap": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", "es-shim-unscopables": "^1.0.0" }, "engines": { @@ -4716,17 +4740,18 @@ } }, "node_modules/eslint": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.48.0.tgz", - "integrity": "sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==", + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.54.0.tgz", + "integrity": "sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.48.0", - "@humanwhocodes/config-array": "^0.11.10", + "@eslint/eslintrc": "^2.1.3", + "@eslint/js": "8.54.0", + "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -4848,25 +4873,25 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.28.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz", - "integrity": "sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==", - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.findlastindex": "^1.2.2", - "array.prototype.flat": "^1.3.1", - "array.prototype.flatmap": "^1.3.1", + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz", + "integrity": "sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==", + "dependencies": { + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", "debug": "^3.2.7", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.7", + "eslint-import-resolver-node": "^0.3.9", "eslint-module-utils": "^2.8.0", - "has": "^1.0.3", - "is-core-module": "^2.13.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.fromentries": "^2.0.6", - "object.groupby": "^1.0.0", - "object.values": "^1.1.6", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", "semver": "^6.3.1", "tsconfig-paths": "^3.14.2" }, @@ -5523,9 +5548,12 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/function.prototype.name": { "version": "1.1.6", @@ -5661,9 +5689,9 @@ "optional": true }, "node_modules/globals": { - "version": "13.21.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", - "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dependencies": { "type-fest": "^0.20.2" }, @@ -5820,6 +5848,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -6120,11 +6159,11 @@ } }, "node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" diff --git a/package.json b/package.json index 32a9997..c10d2c4 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "license": "AGPL-3.0", "scripts": { "lint": "ota lint", - "lint:fix": "ota lint -- --fix", + "lint:fix": "ota lint --fix", "test": "ota lint && ota validate", "test:schema": "ota validate --schema-only", "test:modified": "ota validate --modified", @@ -15,6 +15,6 @@ "dataset:schedule": "npm run dataset -- --publish --remove-local-copy --schedule" }, "dependencies": { - "@opentermsarchive/engine": "~0.30.1" + "@opentermsarchive/engine": "~0.33.1" } }