Skip to content

Commit 9fafb2e

Browse files
devversionalan-agius4
authored andcommitted
build: update ng-dev setup to work with new ESM version
The `ng-dev` tool is now strict ESM. Config loading needs to be updated to also emit `.mjs` with `ts-node` (this cannot happen dynamically as ESM Node loading cannot be patched by ts-node at runtime).
1 parent 03b312f commit 9fafb2e

14 files changed

+85
-89
lines changed
File renamed without changes.

.ng-dev/commit-message.mts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { CommitMessageConfig } from '@angular/dev-infra-private/ng-dev';
2+
import packages from '../lib/packages.js';
3+
4+
/**
5+
* The configuration for `ng-dev commit-message` commands.
6+
*/
7+
export const commitMessage: CommitMessageConfig = {
8+
maxLineLength: Infinity,
9+
minBodyLength: 0,
10+
minBodyLengthTypeExcludes: ['docs'],
11+
// Note: When changing this logic, also change the `contributing.ejs` file.
12+
scopes: [...Object.keys(packages.packages)],
13+
};

.ng-dev/commit-message.ts

Lines changed: 0 additions & 24 deletions
This file was deleted.

.ng-dev/config.mts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
export { commitMessage } from './commit-message.mjs';
2+
export { format } from './format.mjs';
3+
export { github } from './github.mjs';
4+
export { pullRequest } from './pull-request.mjs';
5+
export { release } from './release.mjs';
6+
export { caretaker } from './caretaker.mjs';

.ng-dev/config.ts

Lines changed: 0 additions & 6 deletions
This file was deleted.
File renamed without changes.
File renamed without changes.
File renamed without changes.

.ng-dev/release.ts renamed to .ng-dev/release.mts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import '../lib/bootstrap-local';
1+
import '../lib/bootstrap-local.js';
22

33
import { ReleaseConfig } from '@angular/dev-infra-private/ng-dev';
4-
import { releasePackages } from '../lib/packages';
5-
import buildPackages from '../scripts/build';
4+
import packages from '../lib/packages.js';
5+
import buildPackages from '../scripts/build.js';
66

7-
const npmPackages = Object.entries(releasePackages).map(([name, { experimental }]) => ({
7+
const npmPackages = Object.entries(packages.releasePackages).map(([name, { experimental }]) => ({
88
name,
99
experimental,
1010
}));
@@ -13,7 +13,7 @@ const npmPackages = Object.entries(releasePackages).map(([name, { experimental }
1313
export const release: ReleaseConfig = {
1414
representativeNpmPackage: '@angular/cli',
1515
npmPackages,
16-
buildPackages: () => buildPackages(),
16+
buildPackages: () => buildPackages.default(),
1717
releaseNotes: {
1818
groupOrder: [
1919
'@angular/cli',

.ng-dev/tsconfig.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
{
22
"extends": "../tsconfig.json",
33
"compilerOptions": {
4+
"module": "Node16",
5+
"moduleResolution": "Node16",
46
"noEmit": true
57
},
6-
"include": ["**/*.ts"],
8+
"include": ["**/*.mts"],
79
"exclude": []
810
}

package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,16 @@
2424
"build:bazel": "node ./bin/devkit-admin build-bazel",
2525
"build-tsc": "tsc -p tsconfig.json",
2626
"lint": "eslint --cache --max-warnings=0 \"**/*.ts\"",
27+
"ng-dev": "TS_NODE_PROJECT=$PWD/.ng-dev/tsconfig.json node_modules/@angular/dev-infra-private/ng-dev/bundles/cli.mjs",
2728
"templates": "node ./bin/devkit-admin templates",
2829
"validate": "node ./bin/devkit-admin validate",
2930
"postinstall": "yarn webdriver-update && yarn husky install",
3031
"//webdriver-update-README": "ChromeDriver version must match Puppeteer Chromium version, see https://github.com/GoogleChrome/puppeteer/releases http://chromedriver.chromium.org/downloads",
3132
"webdriver-update": "webdriver-manager update --standalone false --gecko false --versions.chrome 103.0.5060.24",
3233
"public-api:check": "node goldens/public-api/manage.js test",
3334
"public-api:update": "node goldens/public-api/manage.js accept",
34-
"ts-circular-deps:check": "ng-dev ts-circular-deps check --config ./packages/circular-deps-test.conf.js",
35-
"ts-circular-deps:approve": "ng-dev ts-circular-deps approve --config ./packages/circular-deps-test.conf.js",
35+
"ts-circular-deps:check": "yarn -s ng-dev ts-circular-deps check --config ./packages/circular-deps-test.conf.js",
36+
"ts-circular-deps:approve": "yarn -s ng-dev ts-circular-deps approve --config ./packages/circular-deps-test.conf.js",
3637
"check-tooling-setup": "tsc --project .ng-dev/tsconfig.json"
3738
},
3839
"repository": {
@@ -69,7 +70,7 @@
6970
"@angular/compiler": "14.0.2",
7071
"@angular/compiler-cli": "14.0.2",
7172
"@angular/core": "14.0.2",
72-
"@angular/dev-infra-private": "https://github.com/angular/dev-infra-private-builds.git#c13dbe7aac0b5230b65c4de7dc08650332b4750a",
73+
"@angular/dev-infra-private": "https://github.com/angular/dev-infra-private-builds.git#132c156fd32ea70e3755df0fdb211ef5b6299936",
7374
"@angular/forms": "14.0.2",
7475
"@angular/localize": "14.0.2",
7576
"@angular/material": "14.0.1",

scripts/templates.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,25 +10,35 @@ import { logging } from '@angular-devkit/core';
1010
import * as fs from 'fs';
1111
import * as path from 'path';
1212

13-
function _runTemplate(inputPath: string, outputPath: string, logger: logging.Logger) {
13+
async function _runTemplate(inputPath: string, outputPath: string, logger: logging.Logger) {
1414
inputPath = path.resolve(__dirname, inputPath);
1515
outputPath = path.resolve(__dirname, outputPath);
1616

1717
logger.info(`Building ${path.relative(path.dirname(__dirname), outputPath)}...`);
1818

19+
// TODO(ESM): Consider making this an actual import statement.
20+
const { COMMIT_TYPES, ScopeRequirement } = await new Function(
21+
`return import('@angular/dev-infra-private/ng-dev');`,
22+
)();
23+
1924
const template = require(inputPath).default;
2025
const content = template({
2126
monorepo: require('../.monorepo.json'),
2227
packages: require('../lib/packages').packages,
2328
encode: (x: string) => global.encodeURIComponent(x),
2429
require: (x: string) => require(path.resolve(path.dirname(inputPath), x)),
30+
31+
// Pass-through `ng-dev` ESM commit message information for the `contributing.ejs`
32+
// template. EJS templates using the devkit template cannot use ESM.
33+
COMMIT_TYPES: COMMIT_TYPES,
34+
ScopeRequirement: ScopeRequirement,
2535
});
2636
fs.writeFileSync(outputPath, content, 'utf-8');
2737
}
2838

2939
export default async function (_options: {}, logger: logging.Logger): Promise<number> {
30-
_runTemplate('./templates/readme', '../README.md', logger);
31-
_runTemplate('./templates/contributing', '../CONTRIBUTING.md', logger);
40+
await _runTemplate('./templates/readme', '../README.md', logger);
41+
await _runTemplate('./templates/contributing', '../CONTRIBUTING.md', logger);
3242

3343
return 0;
3444
}

scripts/templates/contributing.ejs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,6 @@ If the commit reverts a previous commit, it should begin with `revert: `, follow
193193
Must be one of the following:
194194

195195
<%
196-
const { COMMIT_TYPES, ScopeRequirement } = require('../../.ng-dev/commit-message');
197196
for (const typeName of Object.keys(COMMIT_TYPES).sort()) {
198197
const type = COMMIT_TYPES[typeName];
199198
%>* **<%= typeName %>**: <%= type.description %><%
@@ -214,8 +213,7 @@ The scope should be the name of the npm package affected as perceived by the per
214213
The following is the list of supported scopes:
215214

216215
<%
217-
const { commitMessage } = require('../../.ng-dev/commit-message');
218-
for (const scope of commitMessage.scopes) {
216+
for (const scope of Object.keys(packages)) {
219217
%>* **<%= scope %>**
220218
<% } %>
221219

yarn.lock

Lines changed: 40 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -175,10 +175,9 @@
175175
dependencies:
176176
tslib "^2.3.0"
177177

178-
"@angular/dev-infra-private@https://github.com/angular/dev-infra-private-builds.git#c13dbe7aac0b5230b65c4de7dc08650332b4750a":
179-
version "0.0.0-684962a29f0beba95e0b1ecfd360760e7f011041"
180-
uid c13dbe7aac0b5230b65c4de7dc08650332b4750a
181-
resolved "https://github.com/angular/dev-infra-private-builds.git#c13dbe7aac0b5230b65c4de7dc08650332b4750a"
178+
"@angular/dev-infra-private@https://github.com/angular/dev-infra-private-builds.git#132c156fd32ea70e3755df0fdb211ef5b6299936":
179+
version "0.0.0-642f77e231f3346605832ba85e63b04da26c6dcf"
180+
resolved "https://github.com/angular/dev-infra-private-builds.git#132c156fd32ea70e3755df0fdb211ef5b6299936"
182181
dependencies:
183182
"@angular-devkit/build-angular" "14.1.0-next.1"
184183
"@angular/benchpress" "0.3.0"
@@ -190,27 +189,25 @@
190189
"@bazel/runfiles" "5.5.0"
191190
"@bazel/terser" "5.5.0"
192191
"@bazel/typescript" "5.5.0"
193-
"@microsoft/api-extractor" "7.25.0"
192+
"@microsoft/api-extractor" "7.25.1"
194193
"@types/browser-sync" "^2.26.3"
195194
"@types/node" "16.10.9"
196-
"@types/node-fetch" "^2.5.10"
197195
"@types/selenium-webdriver" "^4.0.18"
198196
"@types/send" "^0.17.1"
199197
"@types/tmp" "^0.2.1"
200198
"@types/uuid" "^8.3.1"
201199
"@types/yargs" "^17.0.0"
200+
"@yarnpkg/lockfile" "^1.1.0"
202201
browser-sync "^2.27.7"
203-
chalk "^4.1.0"
204202
clang-format "1.8.0"
205-
node-fetch "^2.6.1"
206-
prettier "2.7.0"
203+
prettier "2.7.1"
207204
protractor "^7.0.0"
208205
selenium-webdriver "4.2.0"
209206
send "^0.18.0"
210207
tmp "^0.2.1"
211208
"true-case-path" "^2.2.1"
212209
tslib "^2.3.0"
213-
typescript "~4.7.0"
210+
typescript "~4.7.3"
214211
uuid "^8.3.2"
215212
yargs "^17.0.0"
216213

@@ -1496,26 +1493,26 @@
14961493
brfs "^1.4.0"
14971494
unicode-trie "^0.3.0"
14981495

1499-
"@microsoft/[email protected].0":
1500-
version "7.18.0"
1501-
resolved "https://registry.yarnpkg.com/@microsoft/api-extractor-model/-/api-extractor-model-7.18.0.tgz#23bfe8fee6534e086ddaff4daa5b9e2d27192e09"
1502-
integrity sha512-Q7ZhD6zKQd/J5ayNNChFCCgHZ8tw3ibljm6nXP/JEmiEFFbpKKtWMPVCaN8Y+8/qFmrz7mblLrupcKmUu8cF4A==
1496+
"@microsoft/[email protected].1":
1497+
version "7.18.1"
1498+
resolved "https://registry.yarnpkg.com/@microsoft/api-extractor-model/-/api-extractor-model-7.18.1.tgz#8c8e699ff5ce0e352add5b6df67186af6ac5733c"
1499+
integrity sha512-aF9b9KU4+LCcXRbpwa+c/jOMZDsbomkehbjVNRMfCcRueeZ5KyBiERxWwc/Vk1mBFmDqkvYjK7RUxWYT2BsLAw==
15031500
dependencies:
15041501
"@microsoft/tsdoc" "0.14.1"
15051502
"@microsoft/tsdoc-config" "~0.16.1"
1506-
"@rushstack/node-core-library" "3.45.5"
1503+
"@rushstack/node-core-library" "3.45.6"
15071504

1508-
"@microsoft/[email protected].0":
1509-
version "7.25.0"
1510-
resolved "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.25.0.tgz#a06bfe24abc7e4a82c586953b26debe94e852cd4"
1511-
integrity sha512-GS1XOY2RgLthUkfcTR4CLPvCIvpFYj+2MfJMZ3J4NX8H64BWSHGaDUvVV6QvjKNpt/RHdLyyJZ+j7dQveBAZnA==
1505+
"@microsoft/[email protected].1":
1506+
version "7.25.1"
1507+
resolved "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.25.1.tgz#06132e4ec0965c18cf34bb2ad8ffe0a351e57cef"
1508+
integrity sha512-/RE3G1oGD5d1QNhXdapVsFfgYIadLrhl9jjYIheADC54Jetwdb/Oc3rZpZiyoeYLBPl0JVWUplc94QdfvhvmaA==
15121509
dependencies:
1513-
"@microsoft/api-extractor-model" "7.18.0"
1510+
"@microsoft/api-extractor-model" "7.18.1"
15141511
"@microsoft/tsdoc" "0.14.1"
15151512
"@microsoft/tsdoc-config" "~0.16.1"
1516-
"@rushstack/node-core-library" "3.45.5"
1517-
"@rushstack/rig-package" "0.3.11"
1518-
"@rushstack/ts-command-line" "4.11.0"
1513+
"@rushstack/node-core-library" "3.45.6"
1514+
"@rushstack/rig-package" "0.3.12"
1515+
"@rushstack/ts-command-line" "4.11.1"
15191516
colors "~1.2.1"
15201517
lodash "~4.17.15"
15211518
resolve "~1.17.0"
@@ -1722,10 +1719,10 @@
17221719
estree-walker "^1.0.1"
17231720
picomatch "^2.2.2"
17241721

1725-
"@rushstack/[email protected].5":
1726-
version "3.45.5"
1727-
resolved "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.45.5.tgz#00f92143cc21c3ad94fcd81ba168a40ac8cb77f2"
1728-
integrity sha512-KbN7Hp9vH3bD3YJfv6RnVtzzTAwGYIBl7y2HQLY4WEQqRbvE3LgI78W9l9X+cTAXCX//p0EeoiUYNTFdqJrMZg==
1722+
"@rushstack/[email protected].6":
1723+
version "3.45.6"
1724+
resolved "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.45.6.tgz#a69fab7022132d80a6d1ab78e26ace6ea5d4285d"
1725+
integrity sha512-RKGjkakEPcc5em1Dej6ql8OQobofp1IPKUDU2angme5XH7BFJzL5CAuU4zxIXaS8IT5HUV3WXd/GIkPAnrKNyw==
17291726
dependencies:
17301727
"@types/node" "12.20.24"
17311728
colors "~1.2.1"
@@ -1737,18 +1734,18 @@
17371734
timsort "~0.3.0"
17381735
z-schema "~5.0.2"
17391736

1740-
"@rushstack/[email protected].11":
1741-
version "0.3.11"
1742-
resolved "https://registry.yarnpkg.com/@rushstack/rig-package/-/rig-package-0.3.11.tgz#92a05929822610e8b42f2ad330d9ea20afae5165"
1743-
integrity sha512-uI1/g5oQPtyrT9nStoyX/xgZSLa2b+srRFaDk3r1eqC7zA5th4/bvTGl2QfV3C9NcP+coSqmk5mFJkUfH6i3Lw==
1737+
"@rushstack/[email protected].12":
1738+
version "0.3.12"
1739+
resolved "https://registry.yarnpkg.com/@rushstack/rig-package/-/rig-package-0.3.12.tgz#6bf2d45374ba665902bf31ec0c6e5dad55ba1b73"
1740+
integrity sha512-ZzxuBWG0wbOtI+9IHYvOsr3QN52GtxTWpcaHMsQ/PC9us2ve/k0xK0XOMu+CtStyHSnBG2nDdnF9vFv9HMYOZg==
17441741
dependencies:
17451742
resolve "~1.17.0"
17461743
strip-json-comments "~3.1.1"
17471744

1748-
"@rushstack/[email protected].0":
1749-
version "4.11.0"
1750-
resolved "https://registry.yarnpkg.com/@rushstack/ts-command-line/-/ts-command-line-4.11.0.tgz#4cd3b9f59b41aed600042936260fdaa55ca0184d"
1751-
integrity sha512-ptG9L0mjvJ5QtK11GsAFY+jGfsnqHDS6CY6Yw1xT7a9bhjfNYnf6UPwjV+pF6UgiucfNcMDNW9lkDLxvZKKxMg==
1745+
"@rushstack/[email protected].1":
1746+
version "4.11.1"
1747+
resolved "https://registry.yarnpkg.com/@rushstack/ts-command-line/-/ts-command-line-4.11.1.tgz#10b80960ddaed685445289807c75743e4ef0b5e9"
1748+
integrity sha512-Xo8LaQOXlNSfp+qIuIPb1tfX7b4H21ksqiMo/HbeZI5AX1klHMqKjWcEs0AqgE9huvQj6cvnCla8Eq/GDcwMIg==
17521749
dependencies:
17531750
"@types/argparse" "1.0.38"
17541751
argparse "~1.0.9"
@@ -2053,7 +2050,7 @@
20532050
resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197"
20542051
integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==
20552052

2056-
"@types/node-fetch@*", "@types/node-fetch@^2.1.6", "@types/node-fetch@^2.5.10":
2053+
"@types/node-fetch@*", "@types/node-fetch@^2.1.6":
20572054
version "2.6.1"
20582055
resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.1.tgz#8f127c50481db65886800ef496f20bbf15518975"
20592056
integrity sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA==
@@ -2608,7 +2605,7 @@
26082605
resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
26092606
integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
26102607

2611-
"@yarnpkg/[email protected]":
2608+
"@yarnpkg/[email protected]", "@yarnpkg/lockfile@^1.1.0":
26122609
version "1.1.0"
26132610
resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31"
26142611
integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==
@@ -7424,7 +7421,7 @@ node-addon-api@^3.0.0:
74247421
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161"
74257422
integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==
74267423

7427-
[email protected], node-fetch@^2.2.0, node-fetch@^2.6.1:
7424+
[email protected], node-fetch@^2.2.0:
74287425
version "2.6.7"
74297426
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad"
74307427
integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==
@@ -8501,10 +8498,10 @@ prettier-bytes@^1.0.4:
85018498
resolved "https://registry.yarnpkg.com/prettier-bytes/-/prettier-bytes-1.0.4.tgz#994b02aa46f699c50b6257b5faaa7fe2557e62d6"
85028499
integrity sha512-dLbWOa4xBn+qeWeIF60qRoB6Pk2jX5P3DIVgOQyMyvBpu931Q+8dXz8X0snJiFkQdohDDLnZQECjzsAj75hgZQ==
85038500

8504-
8505-
version "2.7.0"
8506-
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.0.tgz#a4fdae07e5596c51c9857ea676cd41a0163879d6"
8507-
integrity sha512-nwoX4GMFgxoPC6diHvSwmK/4yU8FFH3V8XWtLQrbj4IBsK2pkYhG4kf/ljF/haaZ/aii+wNJqISrCDPgxGWDVQ==
8501+
8502+
version "2.7.1"
8503+
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64"
8504+
integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==
85088505

85098506
prettier@^2.0.0:
85108507
version "2.6.2"
@@ -9217,7 +9214,6 @@ sass@^1.49.9:
92179214

92189215
"sauce-connect-proxy@https://saucelabs.com/downloads/sc-4.7.1-linux.tar.gz":
92199216
version "0.0.0"
9220-
uid e5d7f82ad98251a653d1b0537f1103e49eda5e11
92219217
resolved "https://saucelabs.com/downloads/sc-4.7.1-linux.tar.gz#e5d7f82ad98251a653d1b0537f1103e49eda5e11"
92229218

92239219
saucelabs@^1.5.0:
@@ -10328,7 +10324,7 @@ typedarray@^0.0.6:
1032810324
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
1032910325
integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==
1033010326

10331-
typescript@^4.6.2, typescript@~4.7.0, typescript@~4.7.2:
10327+
typescript@^4.6.2, typescript@~4.7.2, typescript@~4.7.3:
1033210328
version "4.7.3"
1033310329
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.3.tgz#8364b502d5257b540f9de4c40be84c98e23a129d"
1033410330
integrity sha512-WOkT3XYvrpXx4vMMqlD+8R8R37fZkjyLGlxavMc4iB8lrl8L0DeTcHbYgw/v0N/z9wAFsgBhcsF0ruoySS22mA==

0 commit comments

Comments
 (0)