diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e0edebc0f..15d9b97fe 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -81,7 +81,7 @@ jobs: - name: Fetch Dart packages run: dart pub get - uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 - - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 + - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b with: node-version: ${{ env.NODE_VERSION }} cache: 'pnpm' @@ -150,7 +150,7 @@ jobs: - name: Fetch Dart packages run: dart pub get - uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 - - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 + - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b with: node-version: ${{ env.NODE_VERSION }} cache: 'pnpm' diff --git a/examples/type_system/lib/common_fixes_analysis.dart b/examples/type_system/lib/common_fixes_analysis.dart index b04b730b7..68d168a0d 100644 --- a/examples/type_system/lib/common_fixes_analysis.dart +++ b/examples/type_system/lib/common_fixes_analysis.dart @@ -149,3 +149,15 @@ void infFix() { ints.fold(null, (a, b) => a == null || a < b ? b : a); // #enddocregion type-inf-fix } + +//----------------------------------------------- + +// #docregion compatible-generics +abstract class C implements List {} +// #enddocregion compatible-generics + +// #docregion conflicting-generics +// ignore: inconsistent_inheritance, conflicting_generic_interfaces, +// ignore: duplicate_definition +abstract class C implements List, Iterable {} +// #enddocregion conflicting-generics diff --git a/package.json b/package.json index 146fee9f4..b0e0d3215 100644 --- a/package.json +++ b/package.json @@ -17,14 +17,14 @@ "node": ">=20.12.0", "pnpm": ">=9.1.0" }, - "packageManager": "pnpm@9.1.4", + "packageManager": "pnpm@9.6.0", "dependencies": { "bootstrap-scss": "^4.6.2" }, "devDependencies": { - "@11ty/eleventy": "3.0.0-alpha.14", - "@11ty/eleventy-img": "5.0.0-beta.4", - "firebase-tools": "^13.12.0", + "@11ty/eleventy": "3.0.0-beta.1", + "@11ty/eleventy-img": "5.0.0-beta.10", + "firebase-tools": "^13.14.2", "hast-util-from-html": "^2.0.1", "hast-util-select": "^6.0.2", "hast-util-to-text": "^4.0.2", @@ -36,7 +36,7 @@ "markdown-it-container": "^4.0.0", "markdown-it-deflist": "^3.0.0", "markdown-it-table": "^4.1.1", - "sass": "^1.77.6", - "shiki": "^1.10.0" + "sass": "^1.77.8", + "shiki": "^1.12.0" } -} +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 99e6fa698..bd36e12bf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,14 +13,14 @@ importers: version: 4.6.2 devDependencies: '@11ty/eleventy': - specifier: 3.0.0-alpha.14 - version: 3.0.0-alpha.14 + specifier: 3.0.0-beta.1 + version: 3.0.0-beta.1 '@11ty/eleventy-img': - specifier: 5.0.0-beta.4 - version: 5.0.0-beta.4(encoding@0.1.13) + specifier: 5.0.0-beta.10 + version: 5.0.0-beta.10(encoding@0.1.13) firebase-tools: - specifier: ^13.12.0 - version: 13.12.0(encoding@0.1.13) + specifier: ^13.14.2 + version: 13.14.2(encoding@0.1.13) hast-util-from-html: specifier: ^2.0.1 version: 2.0.1 @@ -55,22 +55,22 @@ importers: specifier: ^4.1.1 version: 4.1.1 sass: - specifier: ^1.77.6 - version: 1.77.6 + specifier: ^1.77.8 + version: 1.77.8 shiki: - specifier: ^1.10.0 - version: 1.10.0 + specifier: ^1.12.0 + version: 1.12.0 packages: '@11ty/dependency-tree-esm@1.0.0': resolution: {integrity: sha512-Z3KN1Fkv50UM/ZzTR3VBbyOY52HnmhIVCsAV1hn2UzFsGAjyF1Cw8uohhVtheDOSuBR7ZSeo1unwkz1HxFlUtQ==} - '@11ty/dependency-tree@3.0.0': - resolution: {integrity: sha512-+M+/KdAptDTK4USkI124CKoScvt2y0v1EoLBjS2rUi9zydjWgEC7+EJJ7Eu1DXuObe0JmY09LORjdBGKNPxgtg==} + '@11ty/dependency-tree@3.0.1': + resolution: {integrity: sha512-aZizxcL4Z/clm3KPRx8i9ohW9R2gLssXfUSy7qQmQRXb4CUOyvmqk2gKeJqRmXIfMi2bB9w03SgtN5v1YwqpiA==} - '@11ty/eleventy-dev-server@2.0.1': - resolution: {integrity: sha512-G92KbOx5vg2G3mlQQ1B0+L+Ni7pcn1yeMgQdnT8b2G20ZnbGNtuGYEPehbQV4Xqr2iAtoBfbihNskbLDoVtNOg==} + '@11ty/eleventy-dev-server@2.0.2': + resolution: {integrity: sha512-OupvJ36G+iY+AKmO3veUR7MEZUL2p9tQmodSPf05en0p8LnJltHqK11S+XQ0iGUA96qcyeTLcKQpD+/ctekgmw==} engines: {node: '>=18'} hasBin: true @@ -78,24 +78,20 @@ packages: resolution: {integrity: sha512-yIiLM5ziBmg86i4TlXpBdcIygJHvh/GgPJyAiFOckO9H4y9cQDM8eIcJCUQ4Mum0NEVui/OjhEut2R08xw0vlQ==} engines: {node: '>=14'} - '@11ty/eleventy-img@5.0.0-beta.4': - resolution: {integrity: sha512-vuizGnW8mgW+O4iP6CbOB4CCKq3W2GiY+Ev9112qTCra+qau+xxhn9yrnyI3621sC/hEzKQI9MUFRZ2x+F8XnQ==} + '@11ty/eleventy-img@5.0.0-beta.10': + resolution: {integrity: sha512-4KwR/jKHu7GRsY7Ug4OFUusa49ITMM2a+TT5K9i67mnNUDk9PdmUv3p0u7sWz4zCPGYHjAplaBlyEo/CtqNt8g==} engines: {node: '>=18'} '@11ty/eleventy-plugin-bundle@2.0.2': resolution: {integrity: sha512-zGyPp1g6bi+VC2I5ylwj4w29nivDmx4Uki5gWY6v3MT/1muK0JTtnc1KOMC7yUurv6YwtwdiLYyFK2eFyKv2wg==} engines: {node: '>=18'} - '@11ty/eleventy-utils@1.0.2': - resolution: {integrity: sha512-Zy2leMK1DQR6Q6ZPSagv7QpJaAz9uVbb+RmVetYFp3foMeQtOSZx7w2u5daRFmP+PeNq9vO9H4xtBToYFWZwHA==} - engines: {node: '>=12'} - '@11ty/eleventy-utils@1.0.3': resolution: {integrity: sha512-nULO91om7vQw4Y/UBjM8i7nJ1xl+/nyK4rImZ41lFxiY2d+XUz7ChAj1CDYFjrLZeu0utAYJTZ45LlcHTkUG4g==} engines: {node: '>=12'} - '@11ty/eleventy@3.0.0-alpha.14': - resolution: {integrity: sha512-SQGvi/0cSrgyjhTocO8nGpivQbZBXnFlVLp1M3H8xcdvpXYgCVHiEYvrY79TnDd9Nxvj5QtsQuCiselJb3X16g==} + '@11ty/eleventy@3.0.0-beta.1': + resolution: {integrity: sha512-iJT7vekH11l8PAUPBfUAcb5oWbYK0w4ijgwDTutUsk6tX9rp4ZRL1jdhVWvZq04/rkc55mczNFPPhHB/XO1/qw==} engines: {node: '>=18'} hasBin: true @@ -107,6 +103,9 @@ packages: resolution: {integrity: sha512-CcsRdI933x613u7CjM+QGs7iD/m8SaDup3Apohg1+7dybigrEUHc2jGS3mcMgQKvF2+IphqmepD/FrKLlPkPEg==} engines: {node: '>= 6'} + '@11ty/recursive-copy@3.0.0': + resolution: {integrity: sha512-v1Mr7dWx5nk69/HRRtDHUYDV9N8+cE12IGiKSFOwML7HjOzUXwTP88e3cGuhqoVstkBil1ZEIaOB0KPP1zwqXA==} + '@apidevtools/json-schema-ref-parser@9.1.2': resolution: {integrity: sha512-r1w81DpR+KyRWd3f+rk6TNqMgedmAxZP5v5KWlXQWlgMUUtyEJch0DKEci1SorPMiSeM8XPl7MZ3miJ60JIpQg==} @@ -124,8 +123,8 @@ packages: '@emnapi/runtime@1.2.0': resolution: {integrity: sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==} - '@google-cloud/cloud-sql-connector@1.3.0': - resolution: {integrity: sha512-PPJgqTliwkpdC3iMWgG/rjh17VGL/UEYLyvcMtfWCUtFQ+DQFr7UV8gxrDKM7H0d0yEjai32uBkd4fMuijPKjQ==} + '@google-cloud/cloud-sql-connector@1.3.3': + resolution: {integrity: sha512-Z/6haHca3bnaf1I2t/lmRgU5pCzGQTK6u9hMnD6a6sCL46QB4JRiBvRI5QMSPjnG8VYr1R7Wp1ZawvQJodEY6g==} engines: {node: '>=14'} '@google-cloud/paginator@5.0.2': @@ -144,16 +143,16 @@ packages: resolution: {integrity: sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==} engines: {node: '>=14'} - '@google-cloud/pubsub@4.4.0': - resolution: {integrity: sha512-1eiiAZUFhxcOqKPVwZarc3ghXuhoc3S7z5BgNrxqdirJ/MYr3IjQVTA7Lq2dAAsDuWms1LBN897rbnEGW9PpfA==} + '@google-cloud/pubsub@4.5.0': + resolution: {integrity: sha512-ptRLLDrAp1rStD1n3ZrG8FdAfpccqI6M5rCaceF6PL7DU3hqJbvQ2Y91G8MKG7c7zK+jiWv655Qf5r2IvjTzwA==} engines: {node: '>=14.0.0'} - '@googleapis/sqladmin@16.1.0': - resolution: {integrity: sha512-88Y0pvkuLfiEAPu5NwTi4tkbdWwzmKR9bdlM4p9MTRIQ+tYt6H39qDoXTRlnBp1eO2xnQ5NRXofZFNycK7D08w==} + '@googleapis/sqladmin@19.0.0': + resolution: {integrity: sha512-65zgEpQLhpTZqUic+pm4BbdDByN9NsHkphfCIwzpx3fccHPc6OuKsW0XexYCq9oTUtTC4QRjFisBDLV9fChRtg==} engines: {node: '>=12.0.0'} - '@grpc/grpc-js@1.10.8': - resolution: {integrity: sha512-vYVqYzHicDqyKB+NQhAc54I1QWCBLCrYG6unqOIcBTHx+7x8C9lcoLj3KVJXs2VB4lUbpWY+Kk9NipcbXYWmvg==} + '@grpc/grpc-js@1.11.1': + resolution: {integrity: sha512-gyt/WayZrVPH2w/UTLansS7F9Nwld472JxxaETamrM8HNlsa+jSLNyKAZmhxI2Me4c3mQHFiS1wWHDY1g1Kthw==} engines: {node: '>=12.10.0'} '@grpc/proto-loader@0.7.13': @@ -293,8 +292,8 @@ packages: '@jridgewell/source-map@0.3.6': resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} - '@jridgewell/sourcemap-codec@1.4.15': - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} @@ -379,8 +378,8 @@ packages: '@protobufjs/utf8@1.1.0': resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - '@shikijs/core@1.10.0': - resolution: {integrity: sha512-BZcr6FCmPfP6TXaekvujZcnkFmJHZ/Yglu97r/9VjzVndQA56/F4WjUKtJRQUnK59Wi7p/UTAOekMfCJv7jnYg==} + '@shikijs/core@1.12.0': + resolution: {integrity: sha512-mc1cLbm6UQ8RxLc0dZES7v5rkH+99LxQp/ZvTqV3NLyYsO/fD6JhEflP1H5b2SDq9gI0+0G36AVZWxvounfR9w==} '@sindresorhus/slugify@2.2.1': resolution: {integrity: sha512-MkngSCRZ8JdSOCHRaYd+D01XhvU3Hjy6MGl06zhOk614hp9EOAp5gIkBeQg7wtmxpitU6eAL4kdiRMcJa2dlrw==} @@ -418,8 +417,8 @@ packages: '@types/mdurl@2.0.0': resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} - '@types/node@20.12.13': - resolution: {integrity: sha512-gBGeanV41c1L171rR7wjbMiEpEI/l5XFQdLLfhr/REwpgDy/4U8y89+i8kRiLzDyZdOkXh+cRaTetUnCYutoXA==} + '@types/node@20.14.12': + resolution: {integrity: sha512-r7wNXakLeSsGT0H1AU863vS2wa5wBOK4bWMjZz2wj+8nBx+m5PeIn0k8AloSLpRuiwdRQZwarZqHE4FNArPuJQ==} '@types/request@2.48.12': resolution: {integrity: sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==} @@ -448,12 +447,12 @@ packages: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} - acorn-walk@8.3.2: - resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} + acorn-walk@8.3.3: + resolution: {integrity: sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==} engines: {node: '>=0.4.0'} - acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} engines: {node: '>=0.4.0'} hasBin: true @@ -480,8 +479,8 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - ajv@8.14.0: - resolution: {integrity: sha512-oYs1UUtO97ZO2lJ4bwnWeQW8/zvOIQLGKcvPTsWmvc2SYgBb+upuNS5NxoLaMU4h8Ju3Nbj6Cq8mD2LQoqVKFA==} + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} ansi-align@3.0.1: resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} @@ -535,10 +534,6 @@ packages: resolution: {integrity: sha512-LeZY+DZDRnvP7eMuQ6LHfCzUGxAAIViUBliK24P3hWXL6y4SortgR6Nim6xrkfSLlmH0+k+9NYNwVC2s53ZrYQ==} engines: {node: '>=0.10.0'} - array-differ@4.0.0: - resolution: {integrity: sha512-Q6VPTLMsmXZ47ENG3V+wQyZS1ZxXMxFyYzA+Z/GMrJ6yIutAIEf9wTyroTzmGjNfox9/h3GdGBCVh43GVFx4Uw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} @@ -549,10 +544,6 @@ packages: resolution: {integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==} engines: {node: '>=0.10.0'} - array-union@3.0.1: - resolution: {integrity: sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==} - engines: {node: '>=12'} - array-uniq@1.0.3: resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} engines: {node: '>=0.10.0'} @@ -575,8 +566,8 @@ packages: resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} engines: {node: '>=4'} - async-lock@1.3.2: - resolution: {integrity: sha512-phnXdS3RP7PPcmP6NWWzWMU0sLTeyvtZCxBPpZdkYE3seGLKSQZs9FrmVO/qwypq98FUtWWUEYxziLkdGk5nnA==} + async-lock@1.4.1: + resolution: {integrity: sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ==} async@2.6.4: resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} @@ -681,8 +672,8 @@ packages: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} - cacache@18.0.3: - resolution: {integrity: sha512-qXCd4rh6I07cnDqh8V48/94Tc/WSfj+o3Gn6NZ0aZovS255bUx8O13uKxRFd2eWG0xgsco7+YItQNPaa5E85hg==} + cacache@18.0.4: + resolution: {integrity: sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==} engines: {node: ^16.14.0 || >=18.0.0} call-bind@1.0.7: @@ -936,17 +927,8 @@ packages: supports-color: optional: true - debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.3.5: - resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} + debug@4.3.6: + resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -1090,6 +1072,10 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + entities@5.0.0: + resolution: {integrity: sha512-BeJFvFRJddxobhvEdm5GqHzRV/X+ACeuw0/BuuxsCh1EUZcAIz8+kYmBp/LrQuloy6K1f3a0M7+IhmZ7QnkISA==} + engines: {node: '>=0.12'} + env-paths@2.2.1: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} @@ -1179,8 +1165,8 @@ packages: resolution: {integrity: sha512-V2hqwTtYRj0bj43K4MCtm0caD97YWkqOUHFMRCBW5L1x9IjyqOEc7Xa4oQjjiFbeFOSQzzwPV+BzXsQjSz08fw==} engines: {node: '>=6.0.0', npm: '>5.0.0'} - exegesis@4.1.2: - resolution: {integrity: sha512-D9ZFTFQ8O5ZRBLZ0HAHqo0Gc3+ts330WimHf0cF7OQZLQ3YqRVfjig5qGvEjheS68m+fMjJSR/wN/Qousg17Dw==} + exegesis@4.2.0: + resolution: {integrity: sha512-MOzRyqhvl+hTA4+W4p0saWRIPlu0grIx4ykjMEYgGLiqr/z9NCIlwSq2jF0gyxNjPZD3xyHgmkW6BSaLVUdctg==} engines: {node: '>=6.0.0', npm: '>5.0.0'} exponential-backoff@3.1.1: @@ -1214,6 +1200,9 @@ packages: fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + fast-uri@3.0.1: + resolution: {integrity: sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==} + fast-url-parser@1.1.3: resolution: {integrity: sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==} @@ -1227,6 +1216,10 @@ packages: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} + filesize@10.1.4: + resolution: {integrity: sha512-ryBwPIIeErmxgPnm6cbESAzXjuEFubs+yKYLBZvg3CaiNcmkJChoOGcBSrZ6IwkMwPABwPpVXE6IlNdGJJrvEg==} + engines: {node: '>= 10.4.0'} + filesize@6.4.0: resolution: {integrity: sha512-mjFIpOHC4jbfcTfoh4rkWpI31mF7viw9ikj/JyLoKzqlwG/YsefKfvYlYhdYdg/9mtK2z1AzgN/0LvVQ3zdlSQ==} engines: {node: '>= 0.4.0'} @@ -1243,8 +1236,8 @@ packages: resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} engines: {node: '>= 0.8'} - firebase-tools@13.12.0: - resolution: {integrity: sha512-hr3rqrWeeiNshVzmVSeQkCOSGUSKMxZs+ztairg4r6wteGUOVz56DrYsDMTUxjqH5zPxz5pxK9cvJi4M4ER13g==} + firebase-tools@13.14.2: + resolution: {integrity: sha512-JK8oJdVnBQDFh2UfA1qA3ULDKD6vwIFvVDXvkQXpxLG1wqnBU55Y+KgKpRwWNcE7lYEYohsXFIney3wMgOkszw==} engines: {node: '>=18.0.0 || >=20.0.0'} hasBin: true @@ -1258,8 +1251,8 @@ packages: fn.name@1.1.0: resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} - foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + foreground-child@3.2.1: + resolution: {integrity: sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==} engines: {node: '>=14'} form-data@2.5.1: @@ -1309,8 +1302,8 @@ packages: resolution: {integrity: sha512-/gZffu4ykarLrCiP3Ygsa86UAo1E5vEVlvTrpkKywXSbP9Xhln3oSp9QSV57gEq3JFFpGJ4GZ+5zdEp3FcUh4w==} engines: {node: '>= 0.6.0'} - gaxios@6.6.0: - resolution: {integrity: sha512-bpOZVQV5gthH/jVCSuYuokRo2bTKOcuBiVWpjmTn6C5Agl5zclGfTljuGsQZxwwDBkli+YhZhP4TdlqTnhOezQ==} + gaxios@6.7.0: + resolution: {integrity: sha512-DSrkyMTfAnAm4ks9Go20QGOcXEyW/NmZhvTYBU2rb4afBB393WIMQPWPEDMl/k8xqiNN9HYq2zao3oWXsdl2Tg==} engines: {node: '>=14'} gcp-metadata@6.1.0: @@ -1343,9 +1336,8 @@ packages: glob-slasher@1.0.1: resolution: {integrity: sha512-5MUzqFiycIKLMD1B0dYOE4hGgLLUZUNGGYO4BExdwT32wUwW3DBOE7lMQars7vB1q43Fb3Tyt+HmgLKsJhDYdg==} - glob@10.4.1: - resolution: {integrity: sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==} - engines: {node: '>=16 || 14 >=14.18'} + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true glob@7.2.3: @@ -1356,12 +1348,12 @@ packages: resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} engines: {node: '>=10'} - google-auth-library@9.10.0: - resolution: {integrity: sha512-ol+oSa5NbcGdDqA+gZ3G3mev59OHBZksBTxY/tYwjtcp1H/scAFwJfSQU9/1RALoyZ7FslNbke8j4i3ipwlyuQ==} + google-auth-library@9.11.0: + resolution: {integrity: sha512-epX3ww/mNnhl6tL45EQ/oixsY8JLEgUFoT4A5E/5iAR4esld9Kqv6IJGk7EmGuOgDvaarwF95hU2+v7Irql9lw==} engines: {node: '>=14'} - google-gax@4.3.5: - resolution: {integrity: sha512-zXRSGgHp33ottCQMdYlKEFX/MhWkzKVX5P3Vpmx+DW6rtseLILzp3V0YV5Rh4oQzzkM0BH9+nJIyX01EUgmd3g==} + google-gax@4.3.8: + resolution: {integrity: sha512-SKAQKtvdjtNW3PMOhmKEqpQP+2C5ZqNKfwWxy70efpSwxvRYuAcgMJs6aRHTBPJjz3SO6ZbiXwM6WIuGYFZ7LQ==} engines: {node: '>=14'} googleapis-common@7.2.0: @@ -1473,8 +1465,8 @@ packages: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} - https-proxy-agent@7.0.4: - resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==} + https-proxy-agent@7.0.5: + resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==} engines: {node: '>= 14'} iconv-lite@0.4.24: @@ -1493,8 +1485,8 @@ packages: engines: {node: '>=16.x'} hasBin: true - immutable@4.3.6: - resolution: {integrity: sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==} + immutable@4.3.7: + resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==} import-lazy@2.1.0: resolution: {integrity: sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==} @@ -1662,9 +1654,8 @@ packages: isomorphic-fetch@3.0.0: resolution: {integrity: sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==} - jackspeak@3.1.2: - resolution: {integrity: sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ==} - engines: {node: '>=14'} + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} jju@1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} @@ -1746,17 +1737,17 @@ packages: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} - libsodium-wrappers@0.7.13: - resolution: {integrity: sha512-kasvDsEi/r1fMzKouIDv7B8I6vNmknXwGiYodErGuESoFTohGSKZplFtVxZqHaoQ217AynyIFgnOVRitpHs0Qw==} + libsodium-wrappers@0.7.14: + resolution: {integrity: sha512-300TtsePizhJZ7HjLmWr6hLHAgJUxIGhapSw+EwfCtDuWaEmEdGXSQv6j6qFw0bs9l4vS2NH9BtOHfXAq6h5kQ==} - libsodium@0.7.13: - resolution: {integrity: sha512-mK8ju0fnrKXXfleL53vtp9xiPq5hKM0zbDQtcxQIsSmxNgSxqCj6R7Hl9PkrNe2j29T4yoDaF7DJLK9/i5iWUw==} + libsodium@0.7.14: + resolution: {integrity: sha512-/pOd7eO6oZrfORquRTC4284OUJFcMi8F3Vnc9xtRBT0teLfOUxWIItaBFF3odYjZ7nlJNwnLdUVEUFHxVyX/Sw==} linkify-it@5.0.0: resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} - liquidjs@10.14.0: - resolution: {integrity: sha512-Zjg35Yo3L/2aNy7QkICha/ulbXRtZS7oRenWyDDfw+J34Xy3fOKWWHxASC9r0gbxN661nrwmG/kOIKHfYcVk4Q==} + liquidjs@10.16.1: + resolution: {integrity: sha512-1JFL/Y7ONoajrfwav37yuz5yQHU3+Pgz1XWsg9E/2T8Fp65KalNfMF8QZ3+tNETqGUIB66waOSLOi64niYZE9A==} engines: {node: '>=14'} hasBin: true @@ -1806,8 +1797,8 @@ packages: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} - logform@2.6.0: - resolution: {integrity: sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ==} + logform@2.6.1: + resolution: {integrity: sha512-CdaO738xRapbKIMVn2m4F6KTj4j7ooJ8POVnebSgKo3KBz5axNXRAL7ZdRjIV6NOr2Uf4vjtRkxrFETOioCqSA==} engines: {node: '>= 12.0.0'} long@5.2.3: @@ -1816,9 +1807,8 @@ packages: lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} - lru-cache@10.2.2: - resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==} - engines: {node: 14 || >=16.14} + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} lru-cache@7.18.3: resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} @@ -1903,6 +1893,10 @@ packages: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} + mime-db@1.53.0: + resolution: {integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==} + engines: {node: '>= 0.6'} + mime-types@2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} @@ -1937,8 +1931,8 @@ packages: resolution: {integrity: sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==} engines: {node: '>=10'} - minimatch@9.0.4: - resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} minimist@1.2.8: @@ -1989,6 +1983,11 @@ packages: engines: {node: '>=10'} hasBin: true + mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} + hasBin: true + moo@0.5.2: resolution: {integrity: sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==} @@ -1996,8 +1995,8 @@ packages: resolution: {integrity: sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==} engines: {node: '>= 0.8.0'} - morphdom@2.7.2: - resolution: {integrity: sha512-Dqb/lHFyTi7SZpY0a5R4I/0Edo+iPMbaUexsHHsLAByyixCDiLHPHyVoKVmrpL0THcT7V9Cgev9y21TQYq6wQg==} + morphdom@2.7.4: + resolution: {integrity: sha512-ATTbWMgGa+FaMU3FhnFYB6WgulCqwf6opOll4CBzmVDTLvPMmUPrEv8CudmLPK0MESa64+6B89fWOxP3+YIlxQ==} ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} @@ -2008,15 +2007,11 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - multimatch@7.0.0: - resolution: {integrity: sha512-SYU3HBAdF4psHEL/+jXDKHO95/m5P2RvboHT2Y0WtTttvJLP4H/2WS9WlQPFvF6C8d6SpLw8vjCnQOnVIVOSJQ==} - engines: {node: '>=18'} - mute-stream@0.0.8: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} - nan@2.19.0: - resolution: {integrity: sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw==} + nan@2.20.0: + resolution: {integrity: sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==} nearley@2.20.1: resolution: {integrity: sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==} @@ -2048,8 +2043,8 @@ packages: encoding: optional: true - node-gyp@10.1.0: - resolution: {integrity: sha512-B4J5M1cABxPc5PwfjhbV5hoy2DP9p8lFXASnEN6hugXOa61416tnTZ29x9sSwAd0o99XNIcpvDDy1swAExsVKA==} + node-gyp@10.2.0: + resolution: {integrity: sha512-sp3FonBAaFe4aYTcFdZUn2NYkbP7xroPGYvQmP4Nl5PxamznItBnNCgjrVTKrEfQynInMsJvZrdmqUnysCJ8rw==} engines: {node: ^16.14.0 || >=18.0.0} hasBin: true @@ -2089,8 +2084,9 @@ packages: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} - object-inspect@1.13.1: - resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} @@ -2165,14 +2161,17 @@ packages: resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} engines: {node: '>=8'} - pac-proxy-agent@7.0.1: - resolution: {integrity: sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==} + pac-proxy-agent@7.0.2: + resolution: {integrity: sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==} engines: {node: '>= 14'} pac-resolver@7.0.1: resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==} engines: {node: '>= 14'} + package-json-from-dist@1.0.0: + resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + param-case@3.0.4: resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} @@ -2233,8 +2232,8 @@ packages: resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} engines: {node: '>=4'} - pg@8.11.5: - resolution: {integrity: sha512-jqgNHSKL5cbDjFlHyYsCXmQDrfIX/3RsNwYqpd4N0Kt8niLuNoRNH+aazv6cOd43gPh9Y4DjQCtb+X0MH0Hvnw==} + pg@8.12.0: + resolution: {integrity: sha512-A+LHUSnwnxrnL/tZ+OLfqR1SxLN3c/pgDztZ47Rpbsd4jUytsTtwQo/TLPRzPJMp/1pbhYVhH9cuSZLAajNfjQ==} engines: {node: '>= 8.0.0'} peerDependencies: pg-native: '>=3.0.1' @@ -2279,6 +2278,12 @@ packages: resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} engines: {node: '>=0.10.0'} + posthtml-match-helper@2.0.2: + resolution: {integrity: sha512-ehnazjlSwcGa3P2LlFYmTmcnaembTSt9dLWIRRDVHDPidf6InWAr9leKeeLvUXgnU32g6BrFS64Je+c2Ld+l9g==} + engines: {node: '>=18'} + peerDependencies: + posthtml: ^0.16.6 + posthtml-parser@0.11.0: resolution: {integrity: sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==} engines: {node: '>=12'} @@ -2291,10 +2296,6 @@ packages: resolution: {integrity: sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==} engines: {node: '>=12.0.0'} - proc-log@3.0.0: - resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - proc-log@4.2.0: resolution: {integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -2330,8 +2331,8 @@ packages: resolution: {integrity: sha512-SAzp/O4Yh02jGdRc+uIrGoe87dkN/XtwxfZ4ZyafJHymd79ozp5VG5nyZ7ygqPM5+cpLDjjGnYFUkngonyDPOQ==} engines: {node: '>=14.0.0'} - protobufjs@7.3.0: - resolution: {integrity: sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g==} + protobufjs@7.3.2: + resolution: {integrity: sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg==} engines: {node: '>=12.0.0'} proxy-addr@2.0.7: @@ -2370,8 +2371,8 @@ packages: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} engines: {node: '>=0.6'} - qs@6.12.1: - resolution: {integrity: sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==} + qs@6.12.3: + resolution: {integrity: sha512-AWJm14H1vVaO/iNZ4/hO+HyaTehuy9nRqVdkTqlJt0HWvBiBIEXFmb4C0DGeYo3Xes9rrEW+TxHsaigCbN5ICQ==} engines: {node: '>=0.6'} queue-microtask@1.2.3: @@ -2402,8 +2403,8 @@ packages: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true - re2@1.20.12: - resolution: {integrity: sha512-pfCHx+j0agxahWorhQZ2hyaZh/LH2e/vpoAilggksI3fFt+62oF0AY7UP7uvmpWleYLy6UoBTz4r/Kif0LfB/g==} + re2@1.21.3: + resolution: {integrity: sha512-GI+KoGkHT4kxTaX+9p0FgNB1XUnCndO9slG5qqeEoZ7kbf6Dk6ohQVpmwKVeSp7LPLn+g6Q3BaCopz4oHuBDuQ==} readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} @@ -2423,9 +2424,6 @@ packages: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} - recursive-copy@2.0.14: - resolution: {integrity: sha512-K8WNY8f8naTpfbA+RaXmkaQuD1IeW9EgNEfyGxSqqTQukpVtoOKros9jUqbpEsSw59YOmpd8nCBgtqJZy5nvog==} - redeyed@2.1.1: resolution: {integrity: sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==} @@ -2473,19 +2471,14 @@ packages: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rimraf@2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rimraf@5.0.7: - resolution: {integrity: sha512-nV6YcJo5wbLW77m+8KjH8aB/7/rxQy9SZ0HY5shnwULfS+9nmTtVXAJET5NdZmCzA4fPI/Hm1wo/Po/4mopOdg==} - engines: {node: '>=14.18'} + rimraf@5.0.9: + resolution: {integrity: sha512-3i7b8OcswU6CpU8Ej89quJD4O98id7TtVM5U4Mybh84zQXdrFmDLouWBEEaD/QfO3gDDfH+AGFCGsR7kngzQnA==} + engines: {node: 14 >=14.20 || 16 >=16.20 || >=18} hasBin: true router@1.3.8: @@ -2515,8 +2508,8 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sass@1.77.6: - resolution: {integrity: sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q==} + sass@1.77.8: + resolution: {integrity: sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==} engines: {node: '>=14.0.0'} hasBin: true @@ -2539,8 +2532,8 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.6.2: - resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} hasBin: true @@ -2579,8 +2572,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shiki@1.10.0: - resolution: {integrity: sha512-YD2sXQ+TMD/F9BimV9Jn0wj35pqOvywvOG/3PB6hGHyGKlM7TJ9tyJ02jOb2kF8F0HfJwKNYrh3sW7jEcuRlXA==} + shiki@1.12.0: + resolution: {integrity: sha512-BuAxWOm5JhRcbSOl7XCei8wGjgJJonnV0oipUupPY58iULxUGyHhW5CF+9FRMuM1pcJ5cGEJGll1LusX6FwpPA==} side-channel@1.0.6: resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} @@ -2608,8 +2601,8 @@ packages: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - socks-proxy-agent@8.0.3: - resolution: {integrity: sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==} + socks-proxy-agent@8.0.4: + resolution: {integrity: sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==} engines: {node: '>= 14'} socks@2.8.3: @@ -2643,8 +2636,8 @@ packages: sprintf-js@1.1.3: resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} - sql-formatter@15.3.1: - resolution: {integrity: sha512-L/dqan+Hrt0PpPdCbHcI9bdfOvqaQZR7v5c5SWMJ3bUGQSezK09Mm9q2I3B4iObjaq7FyoldIM+fDSmfzGRXCA==} + sql-formatter@15.3.2: + resolution: {integrity: sha512-pNxSMf5DtwhpZ8gUcOGCGZIWtCcyAUx9oLgAtlO4ag7DvlfnETL0BGqXaISc84pNrXvTWmt8Wal1FWKxdTsL3Q==} hasBin: true ssri@10.0.6: @@ -2737,13 +2730,13 @@ packages: resolution: {integrity: sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==} engines: {node: '>=14'} - terser@5.31.0: - resolution: {integrity: sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==} + terser@5.31.3: + resolution: {integrity: sha512-pAfYn3NIZLyZpa83ZKigvj6Rn9c/vd5KfYGX7cN1mnzqgDcxWvrU5ZtAfIKhEXz9nRecw4z3LXkjaq96/qZqAA==} engines: {node: '>=10'} hasBin: true - text-decoder@1.1.0: - resolution: {integrity: sha512-TmLJNj6UgX8xcUZo4UDStGQtDiTzF7BzWlzn9g7UWrjkpHr5uJTK1ld16wZ3LXb2vb6jH8qU89dW5whuMdXYdw==} + text-decoder@1.1.1: + resolution: {integrity: sha512-8zll7REEv4GDD3x4/0pW+ppIxSNs7H1J10IKFZsuOMscumCdM2a+toDGLPA3T+1+fLBql4zbt5z83GEQGGV5VA==} text-hex@1.0.0: resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} @@ -2777,8 +2770,8 @@ packages: resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==} engines: {node: '>= 14.0.0'} - tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + tslib@2.6.3: + resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} @@ -2863,6 +2856,10 @@ packages: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} + uuid@10.0.0: + resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} + hasBin: true + uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true @@ -2878,14 +2875,14 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - vfile-location@5.0.2: - resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==} + vfile-location@5.0.3: + resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} vfile-message@4.0.2: resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} - vfile@6.0.1: - resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} + vfile@6.0.2: + resolution: {integrity: sha512-zND7NlS8rJYb/sPqkb13ZvbbUoExdbi4w3SfRrMq6R3FvnLQmmfpajJNITuuYm6AZ5uao9vy4BAos3EXBPf2rg==} wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} @@ -2920,12 +2917,12 @@ packages: resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} engines: {node: '>=8'} - winston-transport@4.7.0: - resolution: {integrity: sha512-ajBj65K5I7denzer2IYW6+2bNIVqLGDHqDw3Ow8Ohh+vdW+rv4MZ6eiDvHoKhfJFZ2auyN8byXieDDJ96ViONg==} + winston-transport@4.7.1: + resolution: {integrity: sha512-wQCXXVgfv/wUPOfb2x0ruxzwkcZfxcktz6JIMUaPLmcNhO4bZTwA/WtDWK74xV3F2dKu8YadrFv0qhwYjVEwhA==} engines: {node: '>= 12.0.0'} - winston@3.13.0: - resolution: {integrity: sha512-rwidmA1w3SE4j0E5MuIufFhyJPBDG7Nu71RkZor1p2+qHvJSZ9GYDA81AyleQcZbh/+V6HjeBdfnTZJm9rSeQQ==} + winston@3.13.1: + resolution: {integrity: sha512-SvZit7VFNvXRzbqGHsv5KSmgbEYR5EiQfDAL9gxYkRqa934Hnk++zze0wANKtMHcy/gI4W/3xmSDwlhf865WGw==} engines: {node: '>= 12.0.0'} wrap-ansi@6.2.0: @@ -2946,8 +2943,8 @@ packages: write-file-atomic@3.0.3: resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} - ws@7.5.9: - resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} + ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} engines: {node: '>=8.3.0'} peerDependencies: bufferutil: ^4.0.1 @@ -2958,8 +2955,8 @@ packages: utf-8-validate: optional: true - ws@8.17.0: - resolution: {integrity: sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==} + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -2985,8 +2982,8 @@ packages: yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - yaml@2.4.2: - resolution: {integrity: sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==} + yaml@2.5.0: + resolution: {integrity: sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==} engines: {node: '>= 14'} hasBin: true @@ -3014,29 +3011,29 @@ snapshots: '@11ty/dependency-tree-esm@1.0.0': dependencies: '@11ty/eleventy-utils': 1.0.3 - acorn: 8.11.3 + acorn: 8.12.1 dependency-graph: 0.11.0 normalize-path: 3.0.0 - '@11ty/dependency-tree@3.0.0': + '@11ty/dependency-tree@3.0.1': dependencies: '@11ty/eleventy-utils': 1.0.3 - '@11ty/eleventy-dev-server@2.0.1': + '@11ty/eleventy-dev-server@2.0.2': dependencies: '@11ty/eleventy-utils': 1.0.3 chokidar: 3.6.0 - debug: 4.3.5 + debug: 4.3.6 dev-ip: 1.0.1 finalhandler: 1.2.0 mime: 3.0.0 minimist: 1.2.8 - morphdom: 2.7.2 + morphdom: 2.7.4 please-upgrade-node: 3.2.0 send: 0.18.0 ssri: 10.0.6 urlpattern-polyfill: 10.0.0 - ws: 8.17.0 + ws: 8.18.0 transitivePeerDependencies: - bufferutil - supports-color @@ -3044,7 +3041,7 @@ snapshots: '@11ty/eleventy-fetch@4.0.1(encoding@0.1.13)': dependencies: - debug: 4.3.4 + debug: 4.3.6 flat-cache: 3.2.0 node-fetch: 2.7.0(encoding@0.1.13) p-queue: 6.6.2 @@ -3052,13 +3049,13 @@ snapshots: - encoding - supports-color - '@11ty/eleventy-img@5.0.0-beta.4(encoding@0.1.13)': + '@11ty/eleventy-img@5.0.0-beta.10(encoding@0.1.13)': dependencies: '@11ty/eleventy-fetch': 4.0.1(encoding@0.1.13) - '@11ty/eleventy-utils': 1.0.2 + '@11ty/eleventy-utils': 1.0.3 brotli-size: 4.0.0 - debug: 4.3.4 - entities: 4.5.0 + debug: 4.3.6 + entities: 5.0.0 image-size: 1.1.1 p-queue: 6.6.2 sharp: 0.33.4 @@ -3068,54 +3065,52 @@ snapshots: '@11ty/eleventy-plugin-bundle@2.0.2': dependencies: - debug: 4.3.5 + debug: 4.3.6 transitivePeerDependencies: - supports-color - '@11ty/eleventy-utils@1.0.2': - dependencies: - normalize-path: 3.0.0 - '@11ty/eleventy-utils@1.0.3': dependencies: normalize-path: 3.0.0 - '@11ty/eleventy@3.0.0-alpha.14': + '@11ty/eleventy@3.0.0-beta.1': dependencies: - '@11ty/dependency-tree': 3.0.0 + '@11ty/dependency-tree': 3.0.1 '@11ty/dependency-tree-esm': 1.0.0 - '@11ty/eleventy-dev-server': 2.0.1 + '@11ty/eleventy-dev-server': 2.0.2 '@11ty/eleventy-plugin-bundle': 2.0.2 '@11ty/eleventy-utils': 1.0.3 '@11ty/lodash-custom': 4.17.21 '@11ty/posthtml-urls': 1.0.0 + '@11ty/recursive-copy': 3.0.0 '@sindresorhus/slugify': 2.2.1 bcp-47-normalize: 2.3.0 chardet: 2.0.0 chokidar: 3.6.0 cross-spawn: 7.0.3 - debug: 4.3.5 + debug: 4.3.6 dependency-graph: 1.0.0 fast-glob: 3.3.2 + filesize: 10.1.4 graceful-fs: 4.2.11 gray-matter: 4.0.3 is-glob: 4.0.3 iso-639-1: 3.1.2 + js-yaml: 4.1.0 kleur: 4.1.5 - liquidjs: 10.14.0 + liquidjs: 10.16.1 luxon: 3.4.4 markdown-it: 14.1.0 micromatch: 4.0.7 minimist: 1.2.8 moo: 0.5.2 - multimatch: 7.0.0 node-retrieve-globals: 6.0.0 normalize-path: 3.0.0 nunjucks: 3.2.4(chokidar@3.6.0) please-upgrade-node: 3.2.0 posthtml: 0.16.6 - recursive-copy: 2.0.14 - semver: 7.6.2 + posthtml-match-helper: 2.0.2(posthtml@0.16.6) + semver: 7.6.3 slugify: 1.6.6 transitivePeerDependencies: - bufferutil @@ -3132,6 +3127,18 @@ snapshots: object.entries: 1.1.8 parse-srcset: 1.0.2 + '@11ty/recursive-copy@3.0.0': + dependencies: + errno: 0.1.8 + graceful-fs: 4.2.11 + junk: 1.0.3 + maximatch: 0.1.0 + mkdirp: 3.0.1 + pify: 2.3.0 + promise: 7.3.1 + rimraf: 5.0.9 + slash: 1.0.0 + '@apidevtools/json-schema-ref-parser@9.1.2': dependencies: '@jsdevtools/ono': 7.1.3 @@ -3152,14 +3159,14 @@ snapshots: '@emnapi/runtime@1.2.0': dependencies: - tslib: 2.6.2 + tslib: 2.6.3 optional: true - '@google-cloud/cloud-sql-connector@1.3.0(encoding@0.1.13)': + '@google-cloud/cloud-sql-connector@1.3.3(encoding@0.1.13)': dependencies: - '@googleapis/sqladmin': 16.1.0(encoding@0.1.13) - gaxios: 6.6.0(encoding@0.1.13) - google-auth-library: 9.10.0(encoding@0.1.13) + '@googleapis/sqladmin': 19.0.0(encoding@0.1.13) + gaxios: 6.7.0(encoding@0.1.13) + google-auth-library: 9.11.0(encoding@0.1.13) p-throttle: 5.1.0 transitivePeerDependencies: - encoding @@ -3176,7 +3183,7 @@ snapshots: '@google-cloud/promisify@4.0.0': {} - '@google-cloud/pubsub@4.4.0(encoding@0.1.13)': + '@google-cloud/pubsub@4.5.0(encoding@0.1.13)': dependencies: '@google-cloud/paginator': 5.0.2 '@google-cloud/precise-date': 4.0.0 @@ -3186,8 +3193,8 @@ snapshots: '@opentelemetry/semantic-conventions': 1.21.0 arrify: 2.0.1 extend: 3.0.2 - google-auth-library: 9.10.0(encoding@0.1.13) - google-gax: 4.3.5(encoding@0.1.13) + google-auth-library: 9.11.0(encoding@0.1.13) + google-gax: 4.3.8(encoding@0.1.13) heap-js: 2.5.0 is-stream-ended: 0.1.4 lodash.snakecase: 4.1.1 @@ -3196,14 +3203,14 @@ snapshots: - encoding - supports-color - '@googleapis/sqladmin@16.1.0(encoding@0.1.13)': + '@googleapis/sqladmin@19.0.0(encoding@0.1.13)': dependencies: googleapis-common: 7.2.0(encoding@0.1.13) transitivePeerDependencies: - encoding - supports-color - '@grpc/grpc-js@1.10.8': + '@grpc/grpc-js@1.11.1': dependencies: '@grpc/proto-loader': 0.7.13 '@js-sdsl/ordered-map': 4.4.2 @@ -3212,7 +3219,7 @@ snapshots: dependencies: lodash.camelcase: 4.3.0 long: 5.2.3 - protobufjs: 7.3.0 + protobufjs: 7.3.2 yargs: 17.7.2 '@img/sharp-darwin-arm64@0.33.4': @@ -3302,7 +3309,7 @@ snapshots: '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping': 0.3.25 '@jridgewell/resolve-uri@3.1.2': {} @@ -3314,12 +3321,12 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@jridgewell/sourcemap-codec@1.4.15': {} + '@jridgewell/sourcemap-codec@1.5.0': {} '@jridgewell/trace-mapping@0.3.25': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/sourcemap-codec': 1.5.0 '@js-sdsl/ordered-map@4.4.2': {} @@ -3341,16 +3348,16 @@ snapshots: dependencies: agent-base: 7.1.1 http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.4 - lru-cache: 10.2.2 - socks-proxy-agent: 8.0.3 + https-proxy-agent: 7.0.5 + lru-cache: 10.4.3 + socks-proxy-agent: 8.0.4 transitivePeerDependencies: - supports-color optional: true '@npmcli/fs@3.1.1': dependencies: - semver: 7.6.2 + semver: 7.6.3 optional: true '@opentelemetry/api@1.8.0': {} @@ -3395,7 +3402,9 @@ snapshots: '@protobufjs/utf8@1.1.0': {} - '@shikijs/core@1.10.0': {} + '@shikijs/core@1.12.0': + dependencies: + '@types/hast': 3.0.4 '@sindresorhus/slugify@2.2.1': dependencies: @@ -3429,14 +3438,14 @@ snapshots: '@types/mdurl@2.0.0': {} - '@types/node@20.12.13': + '@types/node@20.14.12': dependencies: undici-types: 5.26.5 '@types/request@2.48.12': dependencies: '@types/caseless': 0.12.5 - '@types/node': 20.12.13 + '@types/node': 20.14.12 '@types/tough-cookie': 4.0.5 form-data: 2.5.1 @@ -3460,19 +3469,21 @@ snapshots: mime-types: 2.1.35 negotiator: 0.6.3 - acorn-walk@8.3.2: {} + acorn-walk@8.3.3: + dependencies: + acorn: 8.12.1 - acorn@8.11.3: {} + acorn@8.12.1: {} agent-base@6.0.2: dependencies: - debug: 4.3.5 + debug: 4.3.6 transitivePeerDependencies: - supports-color agent-base@7.1.1: dependencies: - debug: 4.3.5 + debug: 4.3.6 transitivePeerDependencies: - supports-color @@ -3482,9 +3493,9 @@ snapshots: indent-string: 4.0.0 optional: true - ajv-formats@2.1.1(ajv@8.14.0): + ajv-formats@2.1.1(ajv@8.17.1): optionalDependencies: - ajv: 8.14.0 + ajv: 8.17.1 ajv@6.12.6: dependencies: @@ -3493,12 +3504,12 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ajv@8.14.0: + ajv@8.17.1: dependencies: fast-deep-equal: 3.1.3 + fast-uri: 3.0.1 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - uri-js: 4.4.1 ansi-align@3.0.1: dependencies: @@ -3529,7 +3540,7 @@ snapshots: archiver-utils@5.0.2: dependencies: - glob: 10.4.1 + glob: 10.4.5 graceful-fs: 4.2.11 is-stream: 2.0.1 lazystream: 1.0.1 @@ -3555,8 +3566,6 @@ snapshots: array-differ@1.0.0: {} - array-differ@4.0.0: {} - array-flatten@1.1.1: {} array-flatten@3.0.0: {} @@ -3565,8 +3574,6 @@ snapshots: dependencies: array-uniq: 1.0.3 - array-union@3.0.1: {} - array-uniq@1.0.3: {} arrify@1.0.1: {} @@ -3579,9 +3586,9 @@ snapshots: ast-types@0.13.4: dependencies: - tslib: 2.6.2 + tslib: 2.6.3 - async-lock@1.3.2: {} + async-lock@1.4.1: {} async@2.6.4: dependencies: @@ -3700,12 +3707,12 @@ snapshots: bytes@3.1.2: {} - cacache@18.0.3: + cacache@18.0.4: dependencies: '@npmcli/fs': 3.1.1 fs-minipass: 3.0.3 - glob: 10.4.1 - lru-cache: 10.2.2 + glob: 10.4.5 + lru-cache: 10.4.3 minipass: 7.1.2 minipass-collect: 2.0.1 minipass-flush: 1.0.5 @@ -3729,7 +3736,7 @@ snapshots: camel-case@4.1.2: dependencies: pascal-case: 3.1.2 - tslib: 2.6.2 + tslib: 2.6.3 camelcase@6.3.0: {} @@ -3864,7 +3871,7 @@ snapshots: compressible@2.0.18: dependencies: - mime-db: 1.52.0 + mime-db: 1.53.0 compression@1.7.4: dependencies: @@ -3965,11 +3972,7 @@ snapshots: dependencies: ms: 2.1.2 - debug@4.3.4: - dependencies: - ms: 2.1.2 - - debug@4.3.5: + debug@4.3.6: dependencies: ms: 2.1.2 @@ -4051,7 +4054,7 @@ snapshots: dot-case@3.0.4: dependencies: no-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.6.3 dot-prop@5.3.0: dependencies: @@ -4097,6 +4100,8 @@ snapshots: entities@4.5.0: {} + entities@5.0.0: {} + env-paths@2.2.1: optional: true @@ -4137,7 +4142,7 @@ snapshots: esm-import-transformer@3.0.2: dependencies: - acorn: 8.11.3 + acorn: 8.12.1 esprima@4.0.1: {} @@ -4159,29 +4164,29 @@ snapshots: exegesis-express@4.0.0: dependencies: - exegesis: 4.1.2 + exegesis: 4.2.0 transitivePeerDependencies: - supports-color - exegesis@4.1.2: + exegesis@4.2.0: dependencies: '@apidevtools/json-schema-ref-parser': 9.1.2 - ajv: 8.14.0 - ajv-formats: 2.1.1(ajv@8.14.0) + ajv: 8.17.1 + ajv-formats: 2.1.1(ajv@8.17.1) body-parser: 1.20.2 content-type: 1.0.5 deep-freeze: 0.0.1 events-listener: 1.1.0 - glob: 10.4.1 + glob: 10.4.5 json-ptr: 3.1.1 json-schema-traverse: 1.0.0 lodash: 4.17.21 openapi3-ts: 3.2.0 promise-breaker: 6.0.0 pump: 3.0.0 - qs: 6.12.1 + qs: 6.12.3 raw-body: 2.5.2 - semver: 7.6.2 + semver: 7.6.3 transitivePeerDependencies: - supports-color @@ -4250,6 +4255,8 @@ snapshots: fast-json-stable-stringify@2.1.0: {} + fast-uri@3.0.1: {} + fast-url-parser@1.1.3: dependencies: punycode: 1.4.1 @@ -4264,6 +4271,8 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 + filesize@10.1.4: {} + filesize@6.4.0: {} fill-range@7.1.1: @@ -4294,14 +4303,14 @@ snapshots: transitivePeerDependencies: - supports-color - firebase-tools@13.12.0(encoding@0.1.13): + firebase-tools@13.14.2(encoding@0.1.13): dependencies: - '@google-cloud/cloud-sql-connector': 1.3.0(encoding@0.1.13) - '@google-cloud/pubsub': 4.4.0(encoding@0.1.13) + '@google-cloud/cloud-sql-connector': 1.3.3(encoding@0.1.13) + '@google-cloud/pubsub': 4.5.0(encoding@0.1.13) abort-controller: 3.0.0 ajv: 6.12.6 archiver: 7.0.1 - async-lock: 1.3.2 + async-lock: 1.4.1 body-parser: 1.20.2 chokidar: 3.6.0 cjson: 0.3.3 @@ -4314,21 +4323,21 @@ snapshots: cross-spawn: 7.0.3 csv-parse: 5.5.6 deep-equal-in-any-order: 2.0.6 - exegesis: 4.1.2 + exegesis: 4.2.0 exegesis-express: 4.0.0 express: 4.19.2 filesize: 6.4.0 form-data: 4.0.0 fs-extra: 10.1.0 fuzzy: 0.1.3 - gaxios: 6.6.0(encoding@0.1.13) - glob: 10.4.1 - google-auth-library: 9.10.0(encoding@0.1.13) + gaxios: 6.7.0(encoding@0.1.13) + glob: 10.4.5 + google-auth-library: 9.11.0(encoding@0.1.13) inquirer: 8.2.6 inquirer-autocomplete-prompt: 2.0.1(inquirer@8.2.6) jsonwebtoken: 9.0.2 leven: 3.1.0 - libsodium-wrappers: 0.7.13 + libsodium-wrappers: 0.7.14 lodash: 4.17.21 marked: 4.3.0 marked-terminal: 5.2.0(marked@4.3.0) @@ -4339,14 +4348,14 @@ snapshots: open: 6.4.0 ora: 5.4.1 p-limit: 3.1.0 - pg: 8.11.5 + pg: 8.12.0 portfinder: 1.0.32 progress: 2.0.3 proxy-agent: 6.4.0 retry: 0.13.1 - rimraf: 5.0.7 - semver: 7.6.2 - sql-formatter: 15.3.1 + rimraf: 5.0.9 + semver: 7.6.3 + sql-formatter: 15.3.2 stream-chain: 2.2.5 stream-json: 1.8.0 strip-ansi: 6.0.1 @@ -4358,10 +4367,10 @@ snapshots: universal-analytics: 0.5.3 update-notifier-cjs: 5.1.6(encoding@0.1.13) uuid: 8.3.2 - winston: 3.13.0 - winston-transport: 4.7.0 - ws: 7.5.9 - yaml: 2.4.2 + winston: 3.13.1 + winston-transport: 4.7.1 + ws: 7.5.10 + yaml: 2.5.0 transitivePeerDependencies: - bufferutil - encoding @@ -4379,7 +4388,7 @@ snapshots: fn.name@1.1.0: {} - foreground-child@3.1.1: + foreground-child@3.2.1: dependencies: cross-spawn: 7.0.3 signal-exit: 4.1.0 @@ -4430,20 +4439,20 @@ snapshots: fuzzy@0.1.3: {} - gaxios@6.6.0(encoding@0.1.13): + gaxios@6.7.0(encoding@0.1.13): dependencies: extend: 3.0.2 - https-proxy-agent: 7.0.4 + https-proxy-agent: 7.0.5 is-stream: 2.0.1 node-fetch: 2.7.0(encoding@0.1.13) - uuid: 9.0.1 + uuid: 10.0.0 transitivePeerDependencies: - encoding - supports-color gcp-metadata@6.1.0(encoding@0.1.13): dependencies: - gaxios: 6.6.0(encoding@0.1.13) + gaxios: 6.7.0(encoding@0.1.13) json-bigint: 1.0.0 transitivePeerDependencies: - encoding @@ -4465,7 +4474,7 @@ snapshots: dependencies: basic-ftp: 5.0.5 data-uri-to-buffer: 6.0.2 - debug: 4.3.5 + debug: 4.3.6 fs-extra: 11.2.0 transitivePeerDependencies: - supports-color @@ -4482,12 +4491,13 @@ snapshots: lodash.isobject: 2.4.1 toxic: 1.0.1 - glob@10.4.1: + glob@10.4.5: dependencies: - foreground-child: 3.1.1 - jackspeak: 3.1.2 - minimatch: 9.0.4 + foreground-child: 3.2.1 + jackspeak: 3.4.3 + minimatch: 9.0.5 minipass: 7.1.2 + package-json-from-dist: 1.0.0 path-scurry: 1.11.1 glob@7.2.3: @@ -4503,11 +4513,11 @@ snapshots: dependencies: ini: 2.0.0 - google-auth-library@9.10.0(encoding@0.1.13): + google-auth-library@9.11.0(encoding@0.1.13): dependencies: base64-js: 1.5.1 ecdsa-sig-formatter: 1.0.11 - gaxios: 6.6.0(encoding@0.1.13) + gaxios: 6.7.0(encoding@0.1.13) gcp-metadata: 6.1.0(encoding@0.1.13) gtoken: 7.1.0(encoding@0.1.13) jws: 4.0.0 @@ -4515,18 +4525,18 @@ snapshots: - encoding - supports-color - google-gax@4.3.5(encoding@0.1.13): + google-gax@4.3.8(encoding@0.1.13): dependencies: - '@grpc/grpc-js': 1.10.8 + '@grpc/grpc-js': 1.11.1 '@grpc/proto-loader': 0.7.13 '@types/long': 4.0.2 abort-controller: 3.0.0 duplexify: 4.1.3 - google-auth-library: 9.10.0(encoding@0.1.13) + google-auth-library: 9.11.0(encoding@0.1.13) node-fetch: 2.7.0(encoding@0.1.13) object-hash: 3.0.0 proto3-json-serializer: 2.0.2 - protobufjs: 7.3.0 + protobufjs: 7.3.2 retry-request: 7.0.2(encoding@0.1.13) uuid: 9.0.1 transitivePeerDependencies: @@ -4536,9 +4546,9 @@ snapshots: googleapis-common@7.2.0(encoding@0.1.13): dependencies: extend: 3.0.2 - gaxios: 6.6.0(encoding@0.1.13) - google-auth-library: 9.10.0(encoding@0.1.13) - qs: 6.12.1 + gaxios: 6.7.0(encoding@0.1.13) + google-auth-library: 9.11.0(encoding@0.1.13) + qs: 6.12.3 url-template: 2.0.8 uuid: 9.0.1 transitivePeerDependencies: @@ -4562,7 +4572,7 @@ snapshots: gtoken@7.1.0(encoding@0.1.13): dependencies: - gaxios: 6.6.0(encoding@0.1.13) + gaxios: 6.7.0(encoding@0.1.13) jws: 4.0.0 transitivePeerDependencies: - encoding @@ -4590,7 +4600,7 @@ snapshots: devlop: 1.1.0 hast-util-from-parse5: 8.0.1 parse5: 7.1.2 - vfile: 6.0.1 + vfile: 6.0.2 vfile-message: 4.0.2 hast-util-from-parse5@8.0.1: @@ -4600,8 +4610,8 @@ snapshots: devlop: 1.1.0 hastscript: 8.0.0 property-information: 6.5.0 - vfile: 6.0.1 - vfile-location: 5.0.2 + vfile: 6.0.2 + vfile-location: 5.0.3 web-namespaces: 2.0.1 hast-util-has-property@3.0.0: @@ -4668,7 +4678,7 @@ snapshots: entities: 4.5.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.31.0 + terser: 5.31.3 htmlparser2@7.2.0: dependencies: @@ -4694,28 +4704,28 @@ snapshots: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.5 + debug: 4.3.6 transitivePeerDependencies: - supports-color http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.1 - debug: 4.3.5 + debug: 4.3.6 transitivePeerDependencies: - supports-color https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.3.5 + debug: 4.3.6 transitivePeerDependencies: - supports-color - https-proxy-agent@7.0.4: + https-proxy-agent@7.0.5: dependencies: agent-base: 7.1.1 - debug: 4.3.5 + debug: 4.3.6 transitivePeerDependencies: - supports-color @@ -4734,7 +4744,7 @@ snapshots: dependencies: queue: 6.0.2 - immutable@4.3.6: {} + immutable@4.3.7: {} import-lazy@2.1.0: {} @@ -4880,7 +4890,7 @@ snapshots: transitivePeerDependencies: - encoding - jackspeak@3.1.2: + jackspeak@3.4.3: dependencies: '@isaacs/cliui': 8.0.2 optionalDependencies: @@ -4938,7 +4948,7 @@ snapshots: lodash.isstring: 4.0.1 lodash.once: 4.1.1 ms: 2.1.3 - semver: 7.6.2 + semver: 7.6.3 junk@1.0.3: {} @@ -4980,17 +4990,17 @@ snapshots: leven@3.1.0: {} - libsodium-wrappers@0.7.13: + libsodium-wrappers@0.7.14: dependencies: - libsodium: 0.7.13 + libsodium: 0.7.14 - libsodium@0.7.13: {} + libsodium@0.7.14: {} linkify-it@5.0.0: dependencies: uc.micro: 2.1.0 - liquidjs@10.14.0: + liquidjs@10.16.1: dependencies: commander: 10.0.1 @@ -5029,7 +5039,7 @@ snapshots: chalk: 4.1.2 is-unicode-supported: 0.1.0 - logform@2.6.0: + logform@2.6.1: dependencies: '@colors/colors': 1.6.0 '@types/triple-beam': 1.3.5 @@ -5042,9 +5052,9 @@ snapshots: lower-case@2.0.2: dependencies: - tslib: 2.6.2 + tslib: 2.6.3 - lru-cache@10.2.2: {} + lru-cache@10.4.3: {} lru-cache@7.18.3: {} @@ -5057,7 +5067,7 @@ snapshots: make-fetch-happen@13.0.1: dependencies: '@npmcli/agent': 2.2.2 - cacache: 18.0.3 + cacache: 18.0.4 http-cache-semantics: 4.1.1 is-lambda: 1.0.1 minipass: 7.1.2 @@ -5132,6 +5142,8 @@ snapshots: mime-db@1.52.0: {} + mime-db@1.53.0: {} + mime-types@2.1.35: dependencies: mime-db: 1.52.0 @@ -5156,7 +5168,7 @@ snapshots: dependencies: brace-expansion: 2.0.1 - minimatch@9.0.4: + minimatch@9.0.5: dependencies: brace-expansion: 2.0.1 @@ -5210,6 +5222,8 @@ snapshots: mkdirp@1.0.4: {} + mkdirp@3.0.1: {} + moo@0.5.2: {} morgan@1.10.0: @@ -5222,7 +5236,7 @@ snapshots: transitivePeerDependencies: - supports-color - morphdom@2.7.2: {} + morphdom@2.7.4: {} ms@2.0.0: {} @@ -5230,15 +5244,9 @@ snapshots: ms@2.1.3: {} - multimatch@7.0.0: - dependencies: - array-differ: 4.0.0 - array-union: 3.0.1 - minimatch: 9.0.4 - mute-stream@0.0.8: {} - nan@2.19.0: + nan@2.20.0: optional: true nearley@2.20.1: @@ -5257,7 +5265,7 @@ snapshots: no-case@3.0.4: dependencies: lower-case: 2.0.2 - tslib: 2.6.2 + tslib: 2.6.3 node-emoji@1.11.0: dependencies: @@ -5269,16 +5277,16 @@ snapshots: optionalDependencies: encoding: 0.1.13 - node-gyp@10.1.0: + node-gyp@10.2.0: dependencies: env-paths: 2.2.1 exponential-backoff: 3.1.1 - glob: 10.4.1 + glob: 10.4.5 graceful-fs: 4.2.11 make-fetch-happen: 13.0.1 nopt: 7.2.1 - proc-log: 3.0.0 - semver: 7.6.2 + proc-log: 4.2.0 + semver: 7.6.3 tar: 6.2.1 which: 4.0.0 transitivePeerDependencies: @@ -5287,8 +5295,8 @@ snapshots: node-retrieve-globals@6.0.0: dependencies: - acorn: 8.11.3 - acorn-walk: 8.3.2 + acorn: 8.12.1 + acorn-walk: 8.3.3 esm-import-transformer: 3.0.2 nopt@7.2.1: @@ -5316,7 +5324,7 @@ snapshots: object-hash@3.0.0: {} - object-inspect@1.13.1: {} + object-inspect@1.13.2: {} object-keys@1.1.1: {} @@ -5354,7 +5362,7 @@ snapshots: openapi3-ts@3.2.0: dependencies: - yaml: 2.4.2 + yaml: 2.5.0 ora@5.4.1: dependencies: @@ -5394,16 +5402,16 @@ snapshots: dependencies: p-finally: 1.0.0 - pac-proxy-agent@7.0.1: + pac-proxy-agent@7.0.2: dependencies: '@tootallnate/quickjs-emscripten': 0.23.0 agent-base: 7.1.1 - debug: 4.3.5 + debug: 4.3.6 get-uri: 6.0.3 http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.4 + https-proxy-agent: 7.0.5 pac-resolver: 7.0.1 - socks-proxy-agent: 8.0.3 + socks-proxy-agent: 8.0.4 transitivePeerDependencies: - supports-color @@ -5412,10 +5420,12 @@ snapshots: degenerator: 5.0.1 netmask: 2.0.2 + package-json-from-dist@1.0.0: {} + param-case@3.0.4: dependencies: dot-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.6.3 parse-srcset@1.0.2: {} @@ -5428,7 +5438,7 @@ snapshots: pascal-case@3.1.2: dependencies: no-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.6.3 path-is-absolute@1.0.1: {} @@ -5438,7 +5448,7 @@ snapshots: path-scurry@1.11.1: dependencies: - lru-cache: 10.2.2 + lru-cache: 10.4.3 minipass: 7.1.2 path-to-regexp@0.1.7: {} @@ -5454,9 +5464,9 @@ snapshots: pg-int8@1.0.1: {} - pg-pool@3.6.2(pg@8.11.5): + pg-pool@3.6.2(pg@8.12.0): dependencies: - pg: 8.11.5 + pg: 8.12.0 pg-protocol@1.6.1: {} @@ -5468,10 +5478,10 @@ snapshots: postgres-date: 1.0.7 postgres-interval: 1.2.0 - pg@8.11.5: + pg@8.12.0: dependencies: pg-connection-string: 2.6.4 - pg-pool: 3.6.2(pg@8.11.5) + pg-pool: 3.6.2(pg@8.12.0) pg-protocol: 1.6.1 pg-types: 2.2.0 pgpass: 1.0.5 @@ -5510,6 +5520,10 @@ snapshots: dependencies: xtend: 4.0.2 + posthtml-match-helper@2.0.2(posthtml@0.16.6): + dependencies: + posthtml: 0.16.6 + posthtml-parser@0.11.0: dependencies: htmlparser2: 7.2.0 @@ -5523,9 +5537,6 @@ snapshots: posthtml-parser: 0.11.0 posthtml-render: 3.0.0 - proc-log@3.0.0: - optional: true - proc-log@4.2.0: optional: true @@ -5553,9 +5564,9 @@ snapshots: proto3-json-serializer@2.0.2: dependencies: - protobufjs: 7.3.0 + protobufjs: 7.3.2 - protobufjs@7.3.0: + protobufjs@7.3.2: dependencies: '@protobufjs/aspromise': 1.1.2 '@protobufjs/base64': 1.1.2 @@ -5567,7 +5578,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 20.12.13 + '@types/node': 20.14.12 long: 5.2.3 proxy-addr@2.0.7: @@ -5578,13 +5589,13 @@ snapshots: proxy-agent@6.4.0: dependencies: agent-base: 7.1.1 - debug: 4.3.5 + debug: 4.3.6 http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.4 + https-proxy-agent: 7.0.5 lru-cache: 7.18.3 - pac-proxy-agent: 7.0.1 + pac-proxy-agent: 7.0.2 proxy-from-env: 1.1.0 - socks-proxy-agent: 8.0.3 + socks-proxy-agent: 8.0.4 transitivePeerDependencies: - supports-color @@ -5611,7 +5622,7 @@ snapshots: dependencies: side-channel: 1.0.6 - qs@6.12.1: + qs@6.12.3: dependencies: side-channel: 1.0.6 @@ -5646,11 +5657,11 @@ snapshots: minimist: 1.2.8 strip-json-comments: 2.0.1 - re2@1.20.12: + re2@1.21.3: dependencies: install-artifact-from-github: 1.3.5 - nan: 2.19.0 - node-gyp: 10.1.0 + nan: 2.20.0 + node-gyp: 10.2.0 transitivePeerDependencies: - supports-color optional: true @@ -5687,18 +5698,6 @@ snapshots: dependencies: picomatch: 2.3.1 - recursive-copy@2.0.14: - dependencies: - errno: 0.1.8 - graceful-fs: 4.2.11 - junk: 1.0.3 - maximatch: 0.1.0 - mkdirp: 0.5.6 - pify: 2.3.0 - promise: 7.3.1 - rimraf: 2.7.1 - slash: 1.0.0 - redeyed@2.1.1: dependencies: esprima: 4.0.1 @@ -5740,17 +5739,13 @@ snapshots: reusify@1.0.4: {} - rimraf@2.7.1: - dependencies: - glob: 7.2.3 - rimraf@3.0.2: dependencies: glob: 7.2.3 - rimraf@5.0.7: + rimraf@5.0.9: dependencies: - glob: 10.4.1 + glob: 10.4.5 router@1.3.8: dependencies: @@ -5772,7 +5767,7 @@ snapshots: rxjs@7.8.1: dependencies: - tslib: 2.6.2 + tslib: 2.6.3 safe-buffer@5.1.2: {} @@ -5782,10 +5777,10 @@ snapshots: safer-buffer@2.1.2: {} - sass@1.77.6: + sass@1.77.8: dependencies: chokidar: 3.6.0 - immutable: 4.3.6 + immutable: 4.3.7 source-map-js: 1.2.0 section-matter@1.0.0: @@ -5803,7 +5798,7 @@ snapshots: semver@6.3.1: {} - semver@7.6.2: {} + semver@7.6.3: {} send@0.18.0: dependencies: @@ -5847,7 +5842,7 @@ snapshots: dependencies: color: 4.2.3 detect-libc: 2.0.3 - semver: 7.6.2 + semver: 7.6.3 optionalDependencies: '@img/sharp-darwin-arm64': 0.33.4 '@img/sharp-darwin-x64': 0.33.4 @@ -5881,16 +5876,17 @@ snapshots: shebang-regex@3.0.0: {} - shiki@1.10.0: + shiki@1.12.0: dependencies: - '@shikijs/core': 1.10.0 + '@shikijs/core': 1.12.0 + '@types/hast': 3.0.4 side-channel@1.0.6: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 - object-inspect: 1.13.1 + object-inspect: 1.13.2 signal-exit@3.0.7: {} @@ -5906,10 +5902,10 @@ snapshots: smart-buffer@4.2.0: {} - socks-proxy-agent@8.0.3: + socks-proxy-agent@8.0.4: dependencies: agent-base: 7.1.1 - debug: 4.3.5 + debug: 4.3.6 socks: 2.8.3 transitivePeerDependencies: - supports-color @@ -5940,7 +5936,7 @@ snapshots: sprintf-js@1.1.3: {} - sql-formatter@15.3.1: + sql-formatter@15.3.2: dependencies: argparse: 2.0.1 get-stdin: 8.0.0 @@ -5972,7 +5968,7 @@ snapshots: dependencies: fast-fifo: 1.3.2 queue-tick: 1.0.1 - text-decoder: 1.1.0 + text-decoder: 1.1.1 optionalDependencies: bare-events: 2.4.2 @@ -6031,7 +6027,7 @@ snapshots: router: 1.3.8 update-notifier-cjs: 5.1.6(encoding@0.1.13) optionalDependencies: - re2: 1.20.12 + re2: 1.21.3 transitivePeerDependencies: - encoding - supports-color @@ -6078,14 +6074,14 @@ snapshots: - encoding - supports-color - terser@5.31.0: + terser@5.31.3: dependencies: '@jridgewell/source-map': 0.3.6 - acorn: 8.11.3 + acorn: 8.12.1 commander: 2.20.3 source-map-support: 0.5.21 - text-decoder@1.1.0: + text-decoder@1.1.1: dependencies: b4a: 1.6.6 @@ -6113,7 +6109,7 @@ snapshots: triple-beam@1.4.1: {} - tslib@2.6.2: {} + tslib@2.6.3: {} type-fest@0.20.2: {} @@ -6172,7 +6168,7 @@ snapshots: universal-analytics@0.5.3: dependencies: - debug: 4.3.5 + debug: 4.3.6 uuid: 8.3.2 transitivePeerDependencies: - supports-color @@ -6196,7 +6192,7 @@ snapshots: pupa: 2.1.1 registry-auth-token: 5.0.2 registry-url: 5.1.0 - semver: 7.6.2 + semver: 7.6.3 semver-diff: 3.1.1 xdg-basedir: 4.0.0 transitivePeerDependencies: @@ -6216,6 +6212,8 @@ snapshots: utils-merge@1.0.1: {} + uuid@10.0.0: {} + uuid@8.3.2: {} uuid@9.0.1: {} @@ -6224,17 +6222,17 @@ snapshots: vary@1.1.2: {} - vfile-location@5.0.2: + vfile-location@5.0.3: dependencies: '@types/unist': 3.0.2 - vfile: 6.0.1 + vfile: 6.0.2 vfile-message@4.0.2: dependencies: '@types/unist': 3.0.2 unist-util-stringify-position: 4.0.0 - vfile@6.0.1: + vfile@6.0.2: dependencies: '@types/unist': 3.0.2 unist-util-stringify-position: 4.0.0 @@ -6272,25 +6270,25 @@ snapshots: dependencies: string-width: 4.2.3 - winston-transport@4.7.0: + winston-transport@4.7.1: dependencies: - logform: 2.6.0 + logform: 2.6.1 readable-stream: 3.6.2 triple-beam: 1.4.1 - winston@3.13.0: + winston@3.13.1: dependencies: '@colors/colors': 1.6.0 '@dabh/diagnostics': 2.0.3 async: 3.2.5 is-stream: 2.0.1 - logform: 2.6.0 + logform: 2.6.1 one-time: 1.0.0 readable-stream: 3.6.2 safe-stable-stringify: 2.4.3 stack-trace: 0.0.10 triple-beam: 1.4.1 - winston-transport: 4.7.0 + winston-transport: 4.7.1 wrap-ansi@6.2.0: dependencies: @@ -6319,9 +6317,9 @@ snapshots: signal-exit: 3.0.7 typedarray-to-buffer: 3.1.5 - ws@7.5.9: {} + ws@7.5.10: {} - ws@8.17.0: {} + ws@8.18.0: {} xdg-basedir@4.0.0: {} @@ -6331,7 +6329,7 @@ snapshots: yallist@4.0.0: {} - yaml@2.4.2: {} + yaml@2.5.0: {} yargs-parser@21.1.1: {} @@ -6353,4 +6351,4 @@ snapshots: compress-commons: 6.0.2 readable-stream: 4.5.2 - zwitch@2.0.4: {} + zwitch@2.0.4: {} \ No newline at end of file diff --git a/site-shared b/site-shared index d50b05880..43ee19493 160000 --- a/site-shared +++ b/site-shared @@ -1 +1 @@ -Subproject commit d50b05880ad6405518e3a08255bcda5fa72bbf2a +Subproject commit 43ee1949382ad3961e3192d702681b02af03ca90 diff --git a/src/_data/side-nav.yml b/src/_data/side-nav.yml index 27d1a28e8..87b07c0b8 100644 --- a/src/_data/side-nav.yml +++ b/src/_data/side-nav.yml @@ -184,6 +184,8 @@ permalink: /tools/pub/security-advisories - title: 版本管理 permalink: /tools/pub/versioning + - title: 不应提交的内容 + permalink: /guides/libraries/private-files - title: 开发文档 expanded: false @@ -334,9 +336,6 @@ permalink: /guides/testing - title: 调试 Web 应用 permalink: /web/debugging - - title: 不应提交的内容 - permalink: /guides/libraries/private-files - - divider - title: 资源 diff --git a/src/_data/site.yml b/src/_data/site.yml index c2ae5072a..baf2d03a4 100644 --- a/src/_data/site.yml +++ b/src/_data/site.yml @@ -29,7 +29,7 @@ announce: https://groups.google.com/a/dartlang.org/g/announce android-dev: https://developer.android.com apple-dev: https://developer.apple.com -show_banner: true +show_banner: false # Increment this global og:image URL version number (used as a query parameter) # when you update any og:image file. (Also increment the corresponding number @@ -38,4 +38,4 @@ og_image_vers: "?2" sdkInfo: channel: stable - version: 3.4.1 + version: 3.4.4 diff --git a/src/content/404.html b/src/content/404.html index a26f20508..ab0d49c4a 100644 --- a/src/content/404.html +++ b/src/content/404.html @@ -4,6 +4,7 @@ description: "dart.dev's 404 page." sitemap: false permalink: /404.html +skipFreshness: true ---
diff --git a/src/content/assets/img/tools/proget.svg b/src/content/assets/img/tools/proget.svg new file mode 100644 index 000000000..09d9eafd4 --- /dev/null +++ b/src/content/assets/img/tools/proget.svg @@ -0,0 +1,16 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/content/brand.md b/src/content/brand.md index d016f7275..53f08c710 100644 --- a/src/content/brand.md +++ b/src/content/brand.md @@ -5,6 +5,7 @@ title: Dart 品牌指南 # The guidelines governing the usage of the Dart trademarks and assets. description: >- 关于使用 Dart 品牌和资产的指导原则。 +skipFreshness: true --- The "Dart" name and logo are trademarks owned by Google. diff --git a/src/content/community/code-of-conduct.md b/src/content/community/code-of-conduct.md index b33f7b6d4..90fe0ca97 100644 --- a/src/content/community/code-of-conduct.md +++ b/src/content/community/code-of-conduct.md @@ -3,6 +3,7 @@ title: 行为准则 description: Be excellent to each other. toc: false +skipFreshness: true --- We expect Dart community members to act professionally and respectfully, and diff --git a/src/content/get-dart/archive/_archives_table.html b/src/content/get-dart/archive/_archives_table.html index 8ffa2fd62..83d18d7f6 100644 --- a/src/content/get-dart/archive/_archives_table.html +++ b/src/content/get-dart/archive/_archives_table.html @@ -27,7 +27,7 @@ {% if channel == 'stable' %} 0.0.0 (rev 00000) - {% else if channel == 'beta' %} + {% elsif channel == 'beta' %} 0.0.0-0.0.beta (rev 00000) {% else %} 0.0.0-0.0.dev (rev 00000) diff --git a/src/content/guides/environment-declarations.md b/src/content/guides/environment-declarations.md index 66b8d7130..ade10c748 100644 --- a/src/content/guides/environment-declarations.md +++ b/src/content/guides/environment-declarations.md @@ -3,6 +3,7 @@ title: Configuring apps with compilation environment declarations description: >- Learn about using compilation environment declarations to customize application behavior. +lastVerified: 2023-02-23 --- You can specify compilation environment declarations diff --git a/src/content/guides/language/evolution.md b/src/content/guides/language/evolution.md index de58cf4f5..1f2dece45 100644 --- a/src/content/guides/language/evolution.md +++ b/src/content/guides/language/evolution.md @@ -2,6 +2,7 @@ title: Dart language evolution short-title: Language evolution description: Notable changes and additions to the Dart programming language. +lastVerified: 2024-05-14 --- This page lists notable changes and additions to the diff --git a/src/content/guides/language/language-tour.md b/src/content/guides/language/language-tour.md index 322a309b9..2e32b4fda 100644 --- a/src/content/guides/language/language-tour.md +++ b/src/content/guides/language/language-tour.md @@ -8,6 +8,7 @@ js: [{url: '/assets/js/language-tour-redirector.js'}] sitemap: false canonical: https://dart.cn/language noindex: true +skipFreshness: true --- :::warning diff --git a/src/content/guides/language/sound-problems.md b/src/content/guides/language/sound-problems.md index 03df03f86..eda10d272 100644 --- a/src/content/guides/language/sound-problems.md +++ b/src/content/guides/language/sound-problems.md @@ -496,6 +496,35 @@ var maximumOrNull =
+### Conflicting Superinterfaces + +A class which `implements` more than one superinterface must be able to +implement valid overrides for every member of every superinterface. +Each member with a given name requires compatible signatures across the +superinterfaces. + +Superinterfaces must not include conflicting generics. +A class can't implement both `C` and `C`, including indirect +superinterfaces. + +#### Example + +In the following code, +class `C` has conflicting generic interfaces. +Definitions of valid overrides for some members would be impossible. + + +```dart tag=fails-sa +abstract class C implements List, Iterable {} +``` + +#### Fix: Use consistent generics or avoid repeating transitive interfaces + + +```dart tag=passes-sa +abstract class C implements List {} +``` + ## Runtime errors diff --git a/src/content/guides/libraries/create-packages.md b/src/content/guides/libraries/create-packages.md index 1bde76b15..5dbf8bbfa 100644 --- a/src/content/guides/libraries/create-packages.md +++ b/src/content/guides/libraries/create-packages.md @@ -15,7 +15,6 @@ This page tells you how to create a standard shared 本章将通过最常见的 [Package](/tools/pub/glossary#package) 来介绍如何创建一个 Package。 - ## Creating a new package ## 创建一个新的 package @@ -32,10 +31,6 @@ and the `package` template: $ dart create -t package ``` -{% comment %} -TODO: Add coverage of packages that contain tools. -{% endcomment %} - ## What makes a package ## Package 的组成 @@ -101,12 +96,17 @@ you have a situation where two classes are tightly coupled. :::note -You may have heard of the `part` directive, which allows -you to split a library into multiple Dart files. We recommend -that you avoid using `part` and create mini libraries instead. - -在文件的头部使用 `part` 命令,能够将一个 Library 分割成多个 Dart 文件。 -这里,我们建议应该创建 Mini Library ,而避免使用 `part` 命令。 +You might know about the `part` directive. +This directive allows you to split a library into multiple Dart files. +Though part files can incorporate generated code into a library, +the Dart team doesn't recommend using them. +Instead, create small libraries. + +你也许知道 `part` 指令。 +该指令允许你将一个 library 分割成多个 Dart 文件。 +虽然 part 文件可以将生成的代码整合到 library 中, +但 Dart 团队并不推荐使用它们。 +取而代之更推荐创建 Mini Library。 ::: diff --git a/src/content/guides/libraries/library-tour.md b/src/content/guides/libraries/library-tour.md index 9326c746b..783efa3b9 100644 --- a/src/content/guides/libraries/library-tour.md +++ b/src/content/guides/libraries/library-tour.md @@ -6,6 +6,7 @@ js: [{url: '/assets/js/library-tour-redirector.js'}] sitemap: false canonical: https://dart.cn/libraries noindex: true +skipFreshness: true --- :::warning diff --git a/src/content/interop/js-interop/mock.md b/src/content/interop/js-interop/mock.md index 77f1a35e5..8631d1645 100644 --- a/src/content/interop/js-interop/mock.md +++ b/src/content/interop/js-interop/mock.md @@ -97,9 +97,10 @@ void main() { `@JSExport` allows you to declare a class that can be used in `createJSInteropWrapper`. `createJSInteropWrapper` will create an object literal -that maps each of the class' instance member names (or renames) to a JS callback -that triggers the instance member when called. In the above example, getting and -setting `counter.value` gets and sets `fakeCounter.value`. +that maps each of the class' instance member names (or renames) to a JS +callback, which is created using [`Function.toJS`]. When called, the JS callback +will in turn call the instance member. In the above example, getting and setting +`counter.value` gets and sets `fakeCounter.value`. You can specify only some members of a class to be exported by omitting the annotation from the class and instead only annotate the specific members. You @@ -117,6 +118,7 @@ non-instance members unless the user explicitly replaces the real API in JS. [Usage]: /interop/js-interop/usage [`createJSInteropWrapper`]: {{site.dart-api}}/{{site.sdkInfo.channel}}/dart-js_interop/createJSInteropWrapper.html +[`Function.toJS`]: {{site.dart-api}}/{{site.sdkInfo.channel}}/dart-js_interop/FunctionToJSExportedDartFunction/toJS.html [`@JSExport`]: {{site.dart-api}}/{{site.sdkInfo.channel}}/dart-js_interop/JSExport-class.html [limitation is true for extension members]: {{site.repo.dart.org}}/mockito/blob/master/FAQ.md#how-do-i-mock-an-extension-method [extension types]: /language/extension-types diff --git a/src/content/interop/js-interop/usage.md b/src/content/interop/js-interop/usage.md index 5fd721b1e..29c5eeef2 100644 --- a/src/content/interop/js-interop/usage.md +++ b/src/content/interop/js-interop/usage.md @@ -389,6 +389,45 @@ but can often be elided on and within interop types and on extension members as the compiler can tell it is a JS interop type from the representation type and on-type. +## Exporting Dart functions and objects to JS + +The above sections show how to call JS members from Dart. It's also useful to +*export* Dart code so that it can be used in JS. To export a Dart function to +JS, first convert it using [`Function.toJS`], which wraps the Dart function with +a JS function. Then, pass the wrapped function to JS through an interop member. +At that point, it's ready to be called by other JS code. + +For example, this code converts a Dart function and uses interop to set it in a +global property, which is then called in JS: + +```dart +import 'dart:js_interop'; + +@JS() +external set exportedFunction(JSFunction value); + +void printString(JSString string) { + print(string.toDart); +} + +void main() { + exportedFunction = printString.toJS; +} +``` + +```js +globalThis.exportedFunction('hello world'); +``` + +Functions that are exported this way have type [restrictions] similar to those +of interop members. + +Sometimes it's useful to export an entire Dart interface so that JS can interact +with a Dart object. To do this, mark the Dart class as exportable using +[`@JSExport`] and wrap instances of that class using [`createJSInteropWrapper`]. +For a more detailed explanation of this technique, including how to mock JS +values, see the [mocking tutorial]. + ## `dart:js_interop` and `dart:js_interop_unsafe` [`dart:js_interop`] contains all the necessary members you should need, @@ -443,6 +482,10 @@ TODO: Some of these are not available on stable. How do we link to dev? [property accessors]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/Property_accessors#bracket_notation [utility functions]: {{site.dart-api}}/{{site.sdkInfo.channel}}/dart-js_interop/JSAnyOperatorExtension.html [`@JS()`]: {{site.dart-api}}/{{site.sdkInfo.channel}}/dart-js_interop/JS-class.html +[`Function.toJS`]: {{site.dart-api}}/{{site.sdkInfo.channel}}/dart-js_interop/FunctionToJSExportedDartFunction/toJS.html +[`@JSExport`]: {{site.dart-api}}/{{site.sdkInfo.channel}}/dart-js_interop/JSExport-class.html +[`createJSInteropWrapper`]: {{site.dart-api}}/{{site.sdkInfo.channel}}/dart-js_interop/createJSInteropWrapper.html +[mocking tutorial]: /interop/js-interop/mock [`dart:js_interop`]: {{site.dart-api}}/{{site.sdkInfo.channel}}/dart-js_interop [`globalContext`]: {{site.dart-api}}/{{site.sdkInfo.channel}}/dart-js_interop/globalContext.html [Helpers to inspect the type of JS values]: {{site.dart-api}}/{{site.sdkInfo.channel}}/dart-js_interop/JSAnyUtilityExtension.html diff --git a/src/content/language/concurrency.md b/src/content/language/concurrency.md index c4bb3d59b..6b8477075 100644 --- a/src/content/language/concurrency.md +++ b/src/content/language/concurrency.md @@ -3,6 +3,7 @@ title: Concurrency in Dart description: >- Use isolates to enable parallel code execution on multiple processor cores. short-title: Concurrency +lastVerified: 2023-12-14 prevpage: url: /language/modifier-reference title: Class modifiers reference @@ -238,7 +239,8 @@ shared-memory threads running concurrently. However, shared-state concurrency is lead to complicated code. Instead of threads, all Dart code runs inside isolates. -Using isolates, your Dart code can perform multiple independent tasks at once. +Using isolates, your Dart code can perform multiple independent tasks at once, +using additional processor cores if they're available. Isolates are like threads or processes, but each isolate has its own memory and a single thread running an event loop. @@ -252,11 +254,6 @@ won't occur in Dart. That said, isolates don't prevent race conditions all together. For more information on this concurrency model, read about the [Actor model](https://en.wikipedia.org/wiki/Actor_model). -Using isolates, your Dart code can perform multiple independent tasks at once, -using additional processor cores if they're available. Isolates are like threads -or processes, but each isolate has its own memory and a single thread running an -event loop. - :::note Platform note Only the [Dart Native platform][] implements isolates. To learn more about the Dart Web platform, diff --git a/src/content/language/functions.md b/src/content/language/functions.md index 2c14ab131..26bc8e17a 100644 --- a/src/content/language/functions.md +++ b/src/content/language/functions.md @@ -280,7 +280,7 @@ An anonymous function resembles a named function as it has: The following code block contains the function's body: ```dart -([[Type]] param1[, ...]]) { +([[Type] param1[, ...]]) { codeBlock; } ``` diff --git a/src/content/language/index.md b/src/content/language/index.md index fe7e2718b..76d8118ed 100644 --- a/src/content/language/index.md +++ b/src/content/language/index.md @@ -19,7 +19,7 @@ To learn more about the Dart language, visit the in-depth, individual topic pages listed under **Language** in the left side menu. -想要深度学习 Dart 语言,请访问左侧栏 **语言** 的具体内容。 +想要深度学习 Dart 语言,请访问左侧栏 **Dart 开发语言** 的具体内容。 For coverage of Dart's core libraries, check out the [core library documentation](/libraries). diff --git a/src/content/language/isolates.md b/src/content/language/isolates.md index 503ed4e91..d116ecbe8 100644 --- a/src/content/language/isolates.md +++ b/src/content/language/isolates.md @@ -2,6 +2,7 @@ title: Isolates description: Information on writing isolates in Dart. short-title: Isolates +lastVerified: 2024-01-04 prevpage: url: /language/async title: Asynchronous support diff --git a/src/content/language/mixins.md b/src/content/language/mixins.md index a9dd3876e..423506d6b 100644 --- a/src/content/language/mixins.md +++ b/src/content/language/mixins.md @@ -160,7 +160,7 @@ class Musician { } mixin MusicalPerformer [!on Musician!] { - perfomerMethod() { + performerMethod() { print('Performing music!'); super.musicianMethod(); } @@ -169,7 +169,7 @@ mixin MusicalPerformer [!on Musician!] { class SingerDancer extends Musician with MusicalPerformer { } main() { - SingerDance().performerMethod(); + SingerDancer().performerMethod(); } ``` diff --git a/src/content/libraries/async/async-await.md b/src/content/libraries/async/async-await.md index fd72b9520..4b8ce028c 100644 --- a/src/content/libraries/async/async-await.md +++ b/src/content/libraries/async/async-await.md @@ -18,6 +18,10 @@ To get the most out of this tutorial, you should have the following: * Knowledge of [basic Dart syntax](/language). * Some experience writing asynchronous code in another language. +* The [`discarded_futures`][] and [`unawaited_futures`][] lints enabled. + +[`discarded_futures`]: /tools/linter-rules/discarded_futures +[`unawaited_futures`]: /tools/linter-rules/unawaited_futures This tutorial covers the following material: @@ -279,10 +283,6 @@ The only differences are highlighted in the asynchronous example, which—if your window is wide enough—is to the right of the synchronous example. -
-
-
- #### Example: synchronous functions @@ -308,11 +308,11 @@ void main() { ```plaintext Fetching user order... -Your order is: Instance of '_Future' +Your order is: Instance of 'Future' ``` -
-
+As shown in following two examples, +it operates like synchronous code. #### Example: asynchronous functions @@ -342,10 +342,6 @@ Fetching user order... Your order is: Large Latte ``` -
-
-
- The asynchronous example is different in three ways: * The return type for `createOrderMessage()` changes @@ -433,14 +429,9 @@ which are provided for you: {:.table .table-striped}
- #### Part 1: `reportUserRole()` Add code to the `reportUserRole()` function so that it does the following: -{% comment %} - Some bulleted items are intentionally lacking punctuation to avoid - confusing the users about characters in string values -{% endcomment -%} * Returns a future that completes with the following string: `"User role: "` @@ -449,7 +440,7 @@ Add code to the `reportUserRole()` function so that it does the following: * Example return value: `"User role: tester"` * Gets the user role by calling the provided function `fetchRole()`. -#### Part 2: `reportLogins()` +#### Part 2: `reportLogins()` Implement an `async` function `reportLogins()` so that it does the following: @@ -1078,6 +1069,17 @@ bool _logoutSucceeds = false; +## Which lints work for futures? + +To catch common mistakes that arise while working with async and futures, +[enable](/tools/analysis#individual-rules) the following lints: + +* [`discarded_futures`][] +* [`unawaited_futures`][] + +[`discarded_futures`]: /tools/linter-rules/discarded_futures +[`unawaited_futures`]: /tools/linter-rules/unawaited_futures + ## What's next? Congratulations, you've finished the tutorial! If you'd like to learn more, here diff --git a/src/content/map.html b/src/content/map.html index 20497ead7..4922b1512 100644 --- a/src/content/map.html +++ b/src/content/map.html @@ -2,6 +2,7 @@ title: Document index description: Human-readable sitemap of all pages on dart.dev. toc: false +skipFreshness: true --- {% assign pages = collections.all | sort: 'data.title' %} diff --git a/src/content/resources/breaking-changes.md b/src/content/resources/breaking-changes.md index 14110681b..7fdc8d01e 100644 --- a/src/content/resources/breaking-changes.md +++ b/src/content/resources/breaking-changes.md @@ -1,6 +1,7 @@ --- title: Breaking changes and deprecations description: A list of breaking changes by release in Dart. +lastVerified: 2024-05-14 --- {% assign versioned = 'Language versioned' %} diff --git a/src/content/resources/coming-from/js-to-dart.md b/src/content/resources/coming-from/js-to-dart.md index b11646d1a..bbbc0d325 100644 --- a/src/content/resources/coming-from/js-to-dart.md +++ b/src/content/resources/coming-from/js-to-dart.md @@ -2,6 +2,7 @@ title: Learning Dart as a JavaScript developer description: Leverage your JavaScript knowledge when learning Dart. body_class: highlight-languages +lastVerified: 2022-11-21 --- This guide aims to leverage your JavaScript programming knowledge diff --git a/src/content/resources/coming-from/swift-to-dart.md b/src/content/resources/coming-from/swift-to-dart.md index 0ee1de50e..562f179e3 100644 --- a/src/content/resources/coming-from/swift-to-dart.md +++ b/src/content/resources/coming-from/swift-to-dart.md @@ -2,6 +2,7 @@ title: Learning Dart as a Swift developer description: Leverage your Swift knowledge when learning Dart. body_class: highlight-languages +lastVerified: 2022-12-13 --- This guide aims to leverage your Swift programming diff --git a/src/content/resources/dart-cheatsheet.md b/src/content/resources/dart-cheatsheet.md index d3c76ef66..5ac2d3571 100644 --- a/src/content/resources/dart-cheatsheet.md +++ b/src/content/resources/dart-cheatsheet.md @@ -14,9 +14,7 @@ This tutorial walks you through the most important of these language features. Dart 语言旨在让从其他编程语言转来的开发者们能够轻松学习,但也有它的独特之处。 -本篇将基于谷歌工程师编写的 -[Dart 语言速查表](/guides/language/cheatsheet) -为你介绍一些最重要的语言特性。 +本篇将为你介绍一些最重要的语言特性。 The embedded editors in this tutorial have partially completed code snippets. You can use these editors to test your knowledge by completing the code and @@ -1401,7 +1399,7 @@ Dart 代码可以抛出和捕获异常。 Dart provides `Exception` and `Error` types, but you're allowed to throw any non-null object: -虽然 Dart 提供了 Exception 和 Error 类型,但是你可以抛出任何非空对象: +虽然 Dart 提供了 `Exception` 和 `Error` 类型,但是你可以抛出任何非空对象: ```dart diff --git a/src/content/resources/google-apis.md b/src/content/resources/google-apis.md index 26fcca167..4335d5670 100644 --- a/src/content/resources/google-apis.md +++ b/src/content/resources/google-apis.md @@ -2,6 +2,7 @@ title: Using Google APIs short-title: Google APIs description: Your Dart apps can use Firebase and Google client APIs. +lastVerified: 2021-05-13 --- This page points to resources to help you use diff --git a/src/content/robots.liquid b/src/content/robots.liquid index 748f44bd7..3c61c1345 100644 --- a/src/content/robots.liquid +++ b/src/content/robots.liquid @@ -1,6 +1,7 @@ --- layout: none permalink: robots.txt +skipFreshness: true --- {%- if isProduction == true -%} diff --git a/src/content/search-all.html b/src/content/search-all.html index 39f0fb929..1e6e4eb5d 100644 --- a/src/content/search-all.html +++ b/src/content/search-all.html @@ -6,6 +6,7 @@ flutter.dev, and more. --> description: 在 flutter.dev、api.flutter.dev、dart.dev 上搜索内容。 toc: false +skipFreshness: true ---

请使用下面的搜索框搜索 Flutter 中文社区的所有内容,包括掘金、思否等。

diff --git a/src/content/search.html b/src/content/search.html index 6b738a5cc..19e0c2e11 100644 --- a/src/content/search.html +++ b/src/content/search.html @@ -6,6 +6,7 @@ description: 搜索 flutter.cn 和 dart.cn 的文档内容. toc: false +skipFreshness: true --- Want results from additional Dart-related sites, like api.dart.dev and flutter.dev? diff --git a/src/content/security.md b/src/content/security.md index de5f3bbc3..2a83c321a 100644 --- a/src/content/security.md +++ b/src/content/security.md @@ -5,6 +5,7 @@ title: 安全 # An overview of the Dart team's philosophy and processes for security. description: >- Dart 团队的安全理念和流程的概述 +skipFreshness: true --- The Dart team takes the security of Dart and the applications diff --git a/src/content/sitemap.liquid b/src/content/sitemap.liquid index 58251c0ff..41f0251f1 100644 --- a/src/content/sitemap.liquid +++ b/src/content/sitemap.liquid @@ -2,6 +2,7 @@ layout: none sitemap: false permalink: sitemap.xml +skipFreshness: true --- diff --git a/src/content/terms.md b/src/content/terms.md index 5a9fc5ebb..891d5d00d 100644 --- a/src/content/terms.md +++ b/src/content/terms.md @@ -2,6 +2,7 @@ title: Terms of use description: The terms of use for dart.dev. toc: false +skipFreshness: true --- https://dart.cn is a community-owned and hosted website diff --git a/src/content/tools/diagnostic-messages.md b/src/content/tools/diagnostic-messages.md index 0e1893916..8547641c2 100644 --- a/src/content/tools/diagnostic-messages.md +++ b/src/content/tools/diagnostic-messages.md @@ -2,6 +2,7 @@ title: Diagnostic messages description: Details for diagnostics produced by the Dart analyzer. body_class: highlight-diagnostics +skipFreshness: true --- {%- comment %} WARNING: Do NOT EDIT this file directly. It is autogenerated by the script in diff --git a/src/content/tools/linter-rules/individual-rules.md b/src/content/tools/linter-rules/individual-rules.md index a5d2f4a01..63b6257f0 100644 --- a/src/content/tools/linter-rules/individual-rules.md +++ b/src/content/tools/linter-rules/individual-rules.md @@ -10,6 +10,7 @@ eleventyComputed: permalink: "/tools/linter-rules/{{lint.name}}.html" title: "{{ lint.name }}" description: "Learn more about the {{ lint.name }} linter rule." +skipFreshness: true --- {{lint.description}} diff --git a/src/content/tools/pub/custom-package-repositories.md b/src/content/tools/pub/custom-package-repositories.md index 22a249d38..954002f3f 100644 --- a/src/content/tools/pub/custom-package-repositories.md +++ b/src/content/tools/pub/custom-package-repositories.md @@ -212,6 +212,10 @@ your own custom package repository: Cloudsmith logo Cloudsmith +
  • + Inedo ProGet logo + Inedo ProGet +
  • JetBrains Space logo JetBrains Space diff --git a/src/content/tools/pub/publishing.md b/src/content/tools/pub/publishing.md index 8af84d1a9..0be60e9dd 100644 --- a/src/content/tools/pub/publishing.md +++ b/src/content/tools/pub/publishing.md @@ -854,7 +854,7 @@ Once you discontinue a package, the package will: To mark a package as discontinued: 1. Sign in to pub.dev using a Google Account with uploader or - [verified publisher][]permissions for the package. + [verified publisher][] permissions for the package. 1. Navigate to the package's **Admin** tab. diff --git a/src/content/tools/pub/pubspec.md b/src/content/tools/pub/pubspec.md index 501757d14..13c9a70ab 100644 --- a/src/content/tools/pub/pubspec.md +++ b/src/content/tools/pub/pubspec.md @@ -300,9 +300,13 @@ platforms: macos: ``` -:::flutter-note -Flutter plugins use [plugin declarations][] -instead of this field. +:::note If you use Flutter +Flutter plugins platform support is by default derived from the +[plugin declarations][]. + +If there is a discrepancy between the plugin declaration and the actual platform +support, a top-level `platforms` declaration can still be used and takes +precedence over the Flutter plugin declaration when deciding platform support. ::: :::version-note diff --git a/src/content/tools/vs-code.md b/src/content/tools/vs-code.md index 0eb005169..ff22e7a28 100644 --- a/src/content/tools/vs-code.md +++ b/src/content/tools/vs-code.md @@ -6,33 +6,79 @@ description: 你可以使用 VS Code 开发 Dart 应用。 toc: false --- -With the Dart plugin, you can use [Visual Studio Code (VS Code)][vs-code] -to develop Dart apps. -The Flutter site has details on how to set up and use VS Code for Flutter apps. +To develop Dart apps, +install [Visual Studio Code][vs-code] (VS Code) +and add the [Dart extension][]. -你可以在 [Visual Studio Code (VS Code)][vs-code] -中安装 Dart 插件来开发 Dart 应用。 -Flutter 的网站上有详尽的关于如何设置 -和使用 VS Code 开发 Flutter 应用的介绍。 +你可以安装 [Visual Studio Code (VS Code)][vs-code] +并添加 [Dart 扩展][Dart extension] 来开发 Dart 应用。 -Until this page has more information, -see the Flutter documentation for instructions that you can apply to -other kinds of Dart apps: +## Install VS Code -在本文有更多详细的信息前,你可以先查阅 Flutter 文档获取有关可以应用于其他类型 Dart 应用的说明。 +## 安装 VS Code -* [Set up an editor][setup] on the Flutter site has - instructions for installing the Flutter and Dart plugins into VS Code. +To install the latest version of [VS Code][], +follow Microsoft's instructions for the relevant platform: - Flutter 网站上的 [设置编辑器][setup] 部分会向你介绍如何将 - Flutter 和 Dart 插件安装到 VS Code 中。 +请按照微软针对相应平台的说明来安装最新版的 [VS Code][]: -* [Visual Studio Code][vscode-flutter] on the Flutter site has - details on using VS Code to develop Flutter apps. +- [Install on macOS][] - Flutter 网站上的 [Visual Studio Code][vscode-flutter] - 部分有如何使用 VS Code 开发 Flutter 应用的详细说明。 + [在 macOS 上安装][Install on macOS] -[setup]: {{site.flutter-docs}}/get-started/editor?tab=vscode +- [Install on Windows][] + + [在 Windows 上安装][Install on Windows] + +- [Install on Linux][] + + [在 Linux 上安装][Install on Linux] + +[VS Code]: https://code.visualstudio.com/ +[Install on macOS]: https://code.visualstudio.com/docs/setup/mac +[Install on Windows]: https://code.visualstudio.com/docs/setup/windows +[Install on Linux]: https://code.visualstudio.com/docs/setup/linux + +## Install the VS Code Dart extension + +## 安装 VS Code 的 Dart 扩展 + +The Dart extension for VS Code supports Dart-specific development capabilities. +These include syntax highlighting, package resolution, hot reload, and others. + +VS Code 的 Dart 扩展支持 Dart 特有的开发功能。 +这些功能包括语法高亮、package 解析、热重载等。 + +1. Launch **VS Code**. + + 启动 **VS Code**。 + +1. Click **Extensions** in the **Activity Bar**. + You can also press + Control / Command + + Shift + X. + + 点击 **活动栏(默认在左侧)** 中的 **扩展**。 + 你也可以使用快捷键 + Control / Command + + Shift + X。 + +1. In the Search box, type `Dart`. + The first extension returned should be the [Dart extension][]. + + 在搜索框中输入 `Dart`。 + 搜索到的第一个扩展应该就是 [Dart 扩展][Dart extension]。 + +1. Click **Install**. + + 点击 **安装**。 + +To review the full list of features, +consult the [extension documentation][Dart extension]. + +如果要查看完整的功能列表, +请查阅 [扩展文档][Dart extension]。 + +[Dart extension]: https://marketplace.visualstudio.com/items?itemName=Dart-Code.dart-code +[documentation]: https://dartcode.org/docs/ [vs-code]: https://code.visualstudio.com/ -[vscode-flutter]: {{site.flutter-docs}}/development/tools/vs-code diff --git a/src/content/tutorials/index.md b/src/content/tutorials/index.md index 1b65038e4..b4ad63284 100644 --- a/src/content/tutorials/index.md +++ b/src/content/tutorials/index.md @@ -73,7 +73,7 @@ try more of the available tutorials!

    快速体验 Dart 独特的语言特性。

    -

    记录 (Record) 和模式匹配 (Pattern)

    +

    Records and Patterns记录 (Record) 和模式匹配 (Pattern)

    Discover Dart's support for records and patterns.

    探索 Dart 对记录 (Record) 和模式匹配 (Pattern) 的支持。

    diff --git a/tool/dart_site/lib/dart_site.dart b/tool/dart_site/lib/dart_site.dart index efdda292e..fe292a638 100644 --- a/tool/dart_site/lib/dart_site.dart +++ b/tool/dart_site/lib/dart_site.dart @@ -11,6 +11,7 @@ import 'src/commands/check_link_references.dart'; import 'src/commands/check_links.dart'; import 'src/commands/check_site_variable.dart'; import 'src/commands/format_dart.dart'; +import 'src/commands/freshness.dart'; import 'src/commands/generate_effective_dart_toc.dart'; import 'src/commands/refresh_excerpts.dart'; import 'src/commands/serve.dart'; @@ -32,6 +33,7 @@ final class DartSiteCommandRunner extends CommandRunner { addCommand(VerifyFirebaseJsonCommand()); addCommand(RefreshExcerptsCommand()); addCommand(FormatDartCommand()); + addCommand(FreshnessCommand()); addCommand(GenerateEffectiveDartToc()); addCommand(AnalyzeDartCommand()); addCommand(TestDartCommand()); diff --git a/tool/dart_site/lib/src/commands/freshness.dart b/tool/dart_site/lib/src/commands/freshness.dart new file mode 100644 index 000000000..45506f3a4 --- /dev/null +++ b/tool/dart_site/lib/src/commands/freshness.dart @@ -0,0 +1,255 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'dart:io'; + +import 'package:args/command_runner.dart'; +import 'package:fbh_front_matter/fbh_front_matter.dart' as front_matter; +import 'package:intl/intl.dart'; +import 'package:path/path.dart' as path; + +import '../utils.dart'; + +final class FreshnessCommand extends Command { + static const String _includeMissingFlag = 'include-missing'; + static const String _cutoffDaysOption = 'cutoff'; + + FreshnessCommand() { + argParser.addFlag( + _includeMissingFlag, + defaultsTo: true, + help: 'Whether to output files that are missing lastVerified dates.', + ); + argParser.addOption( + _cutoffDaysOption, + help: 'The cut off amount of days since lastVerified date ' + 'to consider inclusion in output.', + ); + } + + @override + String get description => 'Check freshness of the docs on the website.'; + + @override + String get name => 'freshness'; + + @override + Future run() async => determineFreshness( + includeMissing: argResults.get(_includeMissingFlag, true), + cutOffDays: int.tryParse(argResults.get(_cutoffDaysOption, '')), + ); +} + +int determineFreshness({bool includeMissing = true, int? cutOffDays}) { + // Directories to check for content. + final directoryPathsToCheck = [ + path.join('src', 'content'), + ]; + + const extensionsToConsider = { + '.md', + '.html', + '.liquid', + }; + + final currentDate = DateTime.now(); + final results = FreshnessResults._(); + final initialCutoff = Duration(days: cutOffDays ?? _cutoffDays.first.days); + + for (final directory in directoryPathsToCheck.map(Directory.new)) { + final filesToCheck = directory + .listSync(recursive: true) + .whereType() + .where( + (file) => extensionsToConsider.contains(path.extension(file.path))) + .where( + (file) => !path.basenameWithoutExtension(file.path).startsWith('_')) + .where((file) => path.basenameWithoutExtension(file.path).isNotEmpty) + .toList(growable: false); + + for (final file in filesToCheck) { + final filePath = path.relative(file.path, from: directory.path); + try { + final fileContents = file.readAsStringSync(); + final frontMatter = front_matter.parse(fileContents); + if (frontMatter.data['skipFreshness'] case final skipFreshness? + when skipFreshness == true || skipFreshness == 'true') { + continue; + } + + if (frontMatter.data.containsKey('lastVerified')) { + final lastVerifiedRaw = frontMatter.data['lastVerified']; + if (lastVerifiedRaw case final String lastVerifiedString?) { + final lastVerified = DateTime.tryParse(lastVerifiedString); + if (lastVerified != null) { + final difference = currentDate.difference(lastVerified); + if (difference > initialCutoff) { + results._addStale(filePath, lastVerified: lastVerified); + } + } else { + results._addMisformatted(filePath, + misformattedDate: lastVerifiedString); + } + } else { + results._addMisformatted(filePath, + misformattedDate: '$lastVerifiedRaw'); + } + } else { + results._addMissingVerified(filePath); + } + } catch (e) { + results._addError(filePath, error: '$e'); + } + } + } + + final errorOutput = results.errorOutput(); + final staleOutput = results.staleOutput(includeMissing: includeMissing); + + print(errorOutput); + print(staleOutput); + + return 0; +} + +final List<({int days, String icon})> _cutoffDays = [ + (days: 270, icon: '🟨'), + (days: 540, icon: '🟧'), + (days: 810, icon: '🟥') +]; + +final DateFormat _dateFormat = DateFormat('y-MM-dd'); + +final class FreshnessResults { + FreshnessResults._(); + + final List _staleFiles = []; + final List _missingVerifiedDateFiles = []; + + final List _misformattedDateFiles = []; + final List _errorFiles = []; + + void _addStale(String path, {required DateTime lastVerified}) { + _staleFiles.add(StaleFile(path, lastVerified: lastVerified)); + } + + void _addMissingVerified(String path) { + _missingVerifiedDateFiles.add(MissingVerifiedDateFile(path)); + } + + void _addMisformatted(String path, {required String misformattedDate}) { + _misformattedDateFiles + .add(MisformattedDateFile(path, misformattedDate: misformattedDate)); + } + + void _addError(String path, {required String error}) { + _errorFiles.add(ErrorFile(path, error: error)); + } + + String staleOutput({bool includeMissing = true}) { + _staleFiles.sort((a, b) => a.lastVerified.compareTo(b.lastVerified)); + + final buffer = StringBuffer(); + + if (includeMissing && _missingVerifiedDateFiles.isNotEmpty) { + _missingVerifiedDateFiles.sortByPath(); + buffer.writeln('\n====== Files with missing lastVerified dates ======\n'); + for (final missingFile in _missingVerifiedDateFiles) { + buffer.write('❓ '); + buffer.write('missing-date '); + buffer.writeln(missingFile.path); + } + } + + if (_staleFiles.isNotEmpty) { + buffer.writeln('\n====== Files with stale lastVerified dates ======\n'); + final currentDate = DateTime.now(); + for (final staleFile in _staleFiles) { + final dayDifference = + currentDate.difference(staleFile.lastVerified).inDays; + var outputIcon = '🟩'; + for (final (:days, :icon) in _cutoffDays.reversed) { + if (dayDifference < days) continue; + + outputIcon = icon; + + if (dayDifference >= days) break; + } + + buffer.write(outputIcon); + buffer.write(' '); + buffer.write(_dateFormat.format(staleFile.lastVerified)); + buffer.write(' '); + buffer.writeln(staleFile.path); + } + } + + return buffer.toString(); + } + + String errorOutput() { + final buffer = StringBuffer(); + + if (_errorFiles.isNotEmpty) { + _errorFiles.sortByPath(); + buffer.writeln('\n====== Files with parsing or other errors ======\n'); + for (final errorFile in _errorFiles) { + buffer.write('‼️ '); + buffer.write('file-with-error'); + buffer.write(' '); + buffer.writeln(errorFile.path); + buffer.write(' '); + buffer.writeln(errorFile.error); + } + } + + if (_misformattedDateFiles.isNotEmpty) { + _misformattedDateFiles.sortByPath(); + buffer.writeln( + '\n====== Files with misformatted lastVerified dates ======\n'); + for (final misformattedFile in _misformattedDateFiles) { + buffer.write('❗ '); + buffer.write(misformattedFile.misformattedDate); + buffer.write(' '); + buffer.writeln(misformattedFile.path); + } + } + + return buffer.toString(); + } +} + +extension on List { + void sortByPath() { + sort((a, b) => a.path.compareTo(b.path)); + } +} + +sealed class FileOfInterest { + final String path; + + FileOfInterest(this.path); +} + +final class MisformattedDateFile extends FileOfInterest { + final String misformattedDate; + + MisformattedDateFile(super.path, {required this.misformattedDate}); +} + +final class StaleFile extends FileOfInterest { + final DateTime lastVerified; + + StaleFile(super.path, {required this.lastVerified}); +} + +final class MissingVerifiedDateFile extends FileOfInterest { + MissingVerifiedDateFile(super.path); +} + +final class ErrorFile extends FileOfInterest { + final String error; + + ErrorFile(super.path, {required this.error}); +} diff --git a/tool/dart_site/pubspec.yaml b/tool/dart_site/pubspec.yaml index dab22b023..256b53db4 100644 --- a/tool/dart_site/pubspec.yaml +++ b/tool/dart_site/pubspec.yaml @@ -9,12 +9,14 @@ dependencies: args: ^2.4.2 excerpter: path: ../../site-shared/packages/excerpter + fbh_front_matter: ^0.0.1 html_unescape: ^2.0.0 + intl: ^0.19.0 io: ^1.0.4 linkcheck: ^3.0.0 - yaml_variable_scanner: ^0.0.5 markdown: ^7.2.0 path: ^1.9.0 + yaml_variable_scanner: ^0.0.5 dev_dependencies: analysis_defaults: diff --git a/tool/inject_dartpad/pubspec.yaml b/tool/inject_dartpad/pubspec.yaml index 2711da462..06bbde1cc 100644 --- a/tool/inject_dartpad/pubspec.yaml +++ b/tool/inject_dartpad/pubspec.yaml @@ -2,15 +2,15 @@ name: inject_dartpad publish_to: none environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: html_unescape: ^2.0.0 web: ^0.5.1 dev_dependencies: - build_runner: ^2.4.8 - build_web_compilers: ^4.0.9 + build_runner: ^2.4.9 + build_web_compilers: ^4.0.10 path: ^1.9.0 test: ^1.25.2 webdev: any