mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-13 04:16:34 +00:00
Cleanup unused WDS deps and config (#23155)
* Cleanup unused WDS deps and config * fix
This commit is contained in:
parent
7a12fd2853
commit
af049274d9
@ -5,9 +5,6 @@ const paths = require("./paths.cjs");
|
||||
const isTrue = (value) => value === "1" || value?.toLowerCase() === "true";
|
||||
|
||||
module.exports = {
|
||||
useWDS() {
|
||||
return isTrue(process.env.WDS);
|
||||
},
|
||||
isProdBuild() {
|
||||
return (
|
||||
process.env.NODE_ENV === "production" || module.exports.isStatsBuild()
|
||||
|
@ -8,7 +8,6 @@ import "./gen-icons-json.js";
|
||||
import "./locale-data.js";
|
||||
import "./service-worker.js";
|
||||
import "./translations.js";
|
||||
import "./wds.js";
|
||||
import "./rspack.js";
|
||||
|
||||
gulp.task(
|
||||
@ -26,7 +25,7 @@ gulp.task(
|
||||
"build-locale-data"
|
||||
),
|
||||
"copy-static-app",
|
||||
env.useWDS() ? "wds-watch-app" : "rspack-watch-app"
|
||||
"rspack-watch-app"
|
||||
)
|
||||
);
|
||||
|
||||
|
@ -11,7 +11,6 @@ import { minify } from "html-minifier-terser";
|
||||
import template from "lodash.template";
|
||||
import { dirname, extname, resolve } from "node:path";
|
||||
import { htmlMinifierOptions, terserOptions } from "../bundle.cjs";
|
||||
import env from "../env.cjs";
|
||||
import paths from "../paths.cjs";
|
||||
|
||||
// macOS companion app has no way to obtain the Safari version used by WKWebView,
|
||||
@ -56,7 +55,6 @@ const getCommonTemplateVars = () => {
|
||||
{ ignorePatch: true, allowHigherVersions: true }
|
||||
);
|
||||
return {
|
||||
useWDS: env.useWDS(),
|
||||
modernRegex: compileRegex(browserRegexes.concat(haMacOSRegex)).toString(),
|
||||
};
|
||||
};
|
||||
@ -92,13 +90,11 @@ const minifyHtml = (content, ext) => {
|
||||
};
|
||||
|
||||
// Function to generate a dev task for each project's configuration
|
||||
// Note Currently WDS paths are hard-coded to only work for app
|
||||
const genPagesDevTask =
|
||||
(
|
||||
pageEntries,
|
||||
inputRoot,
|
||||
outputRoot,
|
||||
useWDS = false,
|
||||
inputSub = "src/html",
|
||||
publicRoot = ""
|
||||
) =>
|
||||
@ -109,17 +105,13 @@ const genPagesDevTask =
|
||||
resolve(inputRoot, inputSub, `${page}.template`),
|
||||
{
|
||||
...commonVars,
|
||||
latestEntryJS: entries.map((entry) =>
|
||||
useWDS
|
||||
? `http://localhost:8000/src/entrypoints/${entry}.ts`
|
||||
: `${publicRoot}/frontend_latest/${entry}.js`
|
||||
latestEntryJS: entries.map(
|
||||
(entry) => `${publicRoot}/frontend_latest/${entry}.js`
|
||||
),
|
||||
es5EntryJS: entries.map(
|
||||
(entry) => `${publicRoot}/frontend_es5/${entry}.js`
|
||||
),
|
||||
latestCustomPanelJS: useWDS
|
||||
? "http://localhost:8000/src/entrypoints/custom-panel.ts"
|
||||
: `${publicRoot}/frontend_latest/custom-panel.js`,
|
||||
latestCustomPanelJS: `${publicRoot}/frontend_latest/custom-panel.js`,
|
||||
es5CustomPanelJS: `${publicRoot}/frontend_es5/custom-panel.js`,
|
||||
}
|
||||
);
|
||||
@ -176,12 +168,7 @@ const APP_PAGE_ENTRIES = {
|
||||
|
||||
gulp.task(
|
||||
"gen-pages-app-dev",
|
||||
genPagesDevTask(
|
||||
APP_PAGE_ENTRIES,
|
||||
paths.polymer_dir,
|
||||
paths.app_output_root,
|
||||
env.useWDS()
|
||||
)
|
||||
genPagesDevTask(APP_PAGE_ENTRIES, paths.polymer_dir, paths.app_output_root)
|
||||
);
|
||||
|
||||
gulp.task(
|
||||
@ -287,7 +274,6 @@ gulp.task(
|
||||
HASSIO_PAGE_ENTRIES,
|
||||
paths.hassio_dir,
|
||||
paths.hassio_output_root,
|
||||
undefined,
|
||||
"src",
|
||||
paths.hassio_publicPath
|
||||
)
|
||||
|
@ -1,10 +0,0 @@
|
||||
import gulp from "gulp";
|
||||
import { startDevServer } from "@web/dev-server";
|
||||
|
||||
gulp.task("wds-watch-app", async () => {
|
||||
startDevServer({
|
||||
config: {
|
||||
watch: true,
|
||||
},
|
||||
});
|
||||
});
|
@ -162,12 +162,10 @@
|
||||
"@babel/preset-env": "7.26.0",
|
||||
"@babel/preset-typescript": "7.26.0",
|
||||
"@bundle-stats/plugin-webpack-filter": "4.17.0",
|
||||
"@koa/cors": "5.0.0",
|
||||
"@lokalise/node-api": "12.8.0",
|
||||
"@octokit/auth-oauth-device": "7.1.1",
|
||||
"@octokit/plugin-retry": "7.1.2",
|
||||
"@octokit/rest": "21.0.2",
|
||||
"@open-wc/dev-server-hmr": "0.1.4",
|
||||
"@rsdoctor/rspack-plugin": "0.4.10",
|
||||
"@rspack/cli": "1.1.4",
|
||||
"@rspack/core": "1.1.4",
|
||||
@ -233,7 +231,6 @@
|
||||
"systemjs": "6.15.1",
|
||||
"tar": "7.4.3",
|
||||
"terser-webpack-plugin": "5.3.10",
|
||||
"transform-async-modules-webpack-plugin": "1.1.1",
|
||||
"ts-lit-plugin": "2.0.2",
|
||||
"typescript": "5.7.2",
|
||||
"vitest": "2.1.8",
|
||||
|
@ -43,12 +43,6 @@
|
||||
"description": "Group date-fns with dependent timezone package",
|
||||
"groupName": "date-fns",
|
||||
"matchPackageNames": ["date-fns", "date-fns-tz"]
|
||||
},
|
||||
{
|
||||
"description": "Group and temporarily disable WDS packages",
|
||||
"groupName": "Web Dev Server",
|
||||
"enabled": false,
|
||||
"matchPackageNames": ["@web/dev-server{/,}**"]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -1,8 +1,6 @@
|
||||
<meta charset="utf-8" />
|
||||
<link rel="manifest" href="/manifest.json" crossorigin="use-credentials" />
|
||||
<link rel="icon" href="/static/icons/favicon.ico" />
|
||||
<% if (!useWDS) { %>
|
||||
<% for (const entry of latestEntryJS) { %>
|
||||
<% for (const entry of latestEntryJS) { %>
|
||||
<link rel="modulepreload" href="<%= entry %>" crossorigin="use-credentials" />
|
||||
<% } %>
|
||||
<% } %>
|
||||
|
@ -1,4 +1,4 @@
|
||||
<script <% if (!useWDS) { %>crossorigin="use-credentials"<% } %>>
|
||||
<script crossorigin="use-credentials">
|
||||
if (isModern) {
|
||||
<% for (const entry of latestEntryJS) { %>
|
||||
import("<%= entry %>");
|
||||
|
@ -80,7 +80,7 @@
|
||||
<home-assistant></home-assistant>
|
||||
<%= renderTemplate("_js_base.html.template") %>
|
||||
<%= renderTemplate("_preload_roboto.html.template") %>
|
||||
<script <% if (!useWDS) { %>crossorigin="use-credentials"<% } %>>
|
||||
<script crossorigin="use-credentials">
|
||||
if (isModern) {
|
||||
<% for (const entry of latestEntryJS) { %>
|
||||
import("<%= entry %>");
|
||||
|
117
yarn.lock
117
yarn.lock
@ -39,13 +39,13 @@ __metadata:
|
||||
linkType: hard
|
||||
|
||||
"@babel/code-frame@npm:^7.12.11, @babel/code-frame@npm:^7.25.9, @babel/code-frame@npm:^7.26.0":
|
||||
version: 7.26.0
|
||||
resolution: "@babel/code-frame@npm:7.26.0"
|
||||
version: 7.26.2
|
||||
resolution: "@babel/code-frame@npm:7.26.2"
|
||||
dependencies:
|
||||
"@babel/helper-validator-identifier": "npm:^7.25.9"
|
||||
js-tokens: "npm:^4.0.0"
|
||||
picocolors: "npm:^1.0.0"
|
||||
checksum: 10/41deb0a9ac72d81e46aeab7e587a75e46c7af6a717e10b150a150b332e843807eacb7c856832c84bee2c5015fe31de23e04c18e052c83a1254027c71c0840791
|
||||
checksum: 10/db2c2122af79d31ca916755331bb4bac96feb2b334cdaca5097a6b467fdd41963b89b14b6836a14f083de7ff887fc78fa1b3c10b14e743d33e12dbfe5ee3d223
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@ -56,7 +56,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/core@npm:7.26.0, @babel/core@npm:^7.12.3, @babel/core@npm:^7.13.0, @babel/core@npm:^7.24.4":
|
||||
"@babel/core@npm:7.26.0, @babel/core@npm:^7.24.4":
|
||||
version: 7.26.0
|
||||
resolution: "@babel/core@npm:7.26.0"
|
||||
dependencies:
|
||||
@ -211,7 +211,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.25.9":
|
||||
"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.25.9":
|
||||
version: 7.25.9
|
||||
resolution: "@babel/helper-plugin-utils@npm:7.25.9"
|
||||
checksum: 10/e347d87728b1ab10b6976d46403941c8f9008c045ea6d99997a7ffca7b852dc34b6171380f7b17edf94410e0857ff26f3a53d8618f11d73744db86e8ca9b8c64
|
||||
@ -410,17 +410,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/plugin-syntax-class-properties@npm:^7.12.13":
|
||||
version: 7.12.13
|
||||
resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13"
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils": "npm:^7.12.13"
|
||||
peerDependencies:
|
||||
"@babel/core": ^7.0.0-0
|
||||
checksum: 10/24f34b196d6342f28d4bad303612d7ff566ab0a013ce89e775d98d6f832969462e7235f3e7eaf17678a533d4be0ba45d3ae34ab4e5a9dcbda5d98d49e5efa2fc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/plugin-syntax-decorators@npm:^7.25.9":
|
||||
version: 7.25.9
|
||||
resolution: "@babel/plugin-syntax-decorators@npm:7.25.9"
|
||||
@ -432,7 +421,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/plugin-syntax-import-assertions@npm:^7.12.1, @babel/plugin-syntax-import-assertions@npm:^7.26.0":
|
||||
"@babel/plugin-syntax-import-assertions@npm:^7.26.0":
|
||||
version: 7.26.0
|
||||
resolution: "@babel/plugin-syntax-import-assertions@npm:7.26.0"
|
||||
dependencies:
|
||||
@ -465,17 +454,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/plugin-syntax-top-level-await@npm:^7.12.1":
|
||||
version: 7.14.5
|
||||
resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5"
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils": "npm:^7.14.5"
|
||||
peerDependencies:
|
||||
"@babel/core": ^7.0.0-0
|
||||
checksum: 10/bbd1a56b095be7820029b209677b194db9b1d26691fe999856462e66b25b281f031f3dfd91b1619e9dcf95bebe336211833b854d0fb8780d618e35667c2d0d7e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/plugin-syntax-typescript@npm:^7.25.9":
|
||||
version: 7.25.9
|
||||
resolution: "@babel/plugin-syntax-typescript@npm:7.25.9"
|
||||
@ -985,7 +963,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/plugin-transform-runtime@npm:7.25.9, @babel/plugin-transform-runtime@npm:^7.13.0":
|
||||
"@babel/plugin-transform-runtime@npm:7.25.9":
|
||||
version: 7.25.9
|
||||
resolution: "@babel/plugin-transform-runtime@npm:7.25.9"
|
||||
dependencies:
|
||||
@ -1119,7 +1097,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/preset-env@npm:7.26.0, @babel/preset-env@npm:^7.11.0, @babel/preset-env@npm:^7.13.0":
|
||||
"@babel/preset-env@npm:7.26.0, @babel/preset-env@npm:^7.11.0":
|
||||
version: 7.26.0
|
||||
resolution: "@babel/preset-env@npm:7.26.0"
|
||||
dependencies:
|
||||
@ -2144,15 +2122,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@koa/cors@npm:5.0.0":
|
||||
version: 5.0.0
|
||||
resolution: "@koa/cors@npm:5.0.0"
|
||||
dependencies:
|
||||
vary: "npm:^1.1.2"
|
||||
checksum: 10/3a0e32fbc422a5f9a41540ce3b7499d46073ddb0e4e851394a74bac5ecd0eaa1f24a8f189b7bd6a50c5863788ae6945c52d990edf99fdd2151a4404f266fe2e7
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@kurkle/color@npm:^0.3.0":
|
||||
version: 0.3.2
|
||||
resolution: "@kurkle/color@npm:0.3.2"
|
||||
@ -3544,21 +3513,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@open-wc/dev-server-hmr@npm:0.1.4":
|
||||
version: 0.1.4
|
||||
resolution: "@open-wc/dev-server-hmr@npm:0.1.4"
|
||||
dependencies:
|
||||
"@babel/core": "npm:^7.12.3"
|
||||
"@babel/plugin-syntax-class-properties": "npm:^7.12.13"
|
||||
"@babel/plugin-syntax-import-assertions": "npm:^7.12.1"
|
||||
"@babel/plugin-syntax-top-level-await": "npm:^7.12.1"
|
||||
"@web/dev-server-core": "npm:^0.4.0"
|
||||
"@web/dev-server-hmr": "npm:^0.1.11"
|
||||
picomatch: "npm:^2.2.2"
|
||||
checksum: 10/8a66d519ba1844281f4ed6dfb8ac73a7192ccd9785d278b7bfe333a61ed22ebbe8db37090dab40f4409af510b9c7b9ee8eea33c6b3cbdb4b22d0751fe30a1152
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@pkgjs/parseargs@npm:^0.11.0":
|
||||
version: 0.11.0
|
||||
resolution: "@pkgjs/parseargs@npm:0.11.0"
|
||||
@ -4704,9 +4658,9 @@ __metadata:
|
||||
linkType: hard
|
||||
|
||||
"@types/http-assert@npm:*":
|
||||
version: 1.5.5
|
||||
resolution: "@types/http-assert@npm:1.5.5"
|
||||
checksum: 10/cd6bb7fd42cc6e2a702cb55370b8b25231954ad74c04bcd185b943a74ded3d4c28099c30f77b26951df2426441baff41718816c60b5af80efe2b8888d900bf93
|
||||
version: 1.5.6
|
||||
resolution: "@types/http-assert@npm:1.5.6"
|
||||
checksum: 10/dfe1010164ba633859d90a50c4c53e69a38a16972061ef614acc1b0bdb7e53a1c923a11b4169a4a7eedc20b2303962d761727a212ae099717327cf4f38293817
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@ -5635,7 +5589,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@web/dev-server-core@npm:^0.4.0, @web/dev-server-core@npm:^0.4.1":
|
||||
"@web/dev-server-core@npm:^0.4.1":
|
||||
version: 0.4.1
|
||||
resolution: "@web/dev-server-core@npm:0.4.1"
|
||||
dependencies:
|
||||
@ -5661,15 +5615,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@web/dev-server-hmr@npm:^0.1.11":
|
||||
version: 0.1.12
|
||||
resolution: "@web/dev-server-hmr@npm:0.1.12"
|
||||
dependencies:
|
||||
"@web/dev-server-core": "npm:^0.4.1"
|
||||
checksum: 10/f799020923261142323811fa29f82dfd6cc96e33ba5a90d49e092f0f07d19fd1f20b96d02ea8d3e5ed8b9424a14353d729a0aa3f1f823bf034c28b3172439942
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@web/dev-server-rollup@npm:^0.4.1":
|
||||
version: 0.4.1
|
||||
resolution: "@web/dev-server-rollup@npm:0.4.1"
|
||||
@ -9481,7 +9426,6 @@ __metadata:
|
||||
"@fullcalendar/list": "npm:6.1.15"
|
||||
"@fullcalendar/luxon3": "npm:6.1.15"
|
||||
"@fullcalendar/timegrid": "npm:6.1.15"
|
||||
"@koa/cors": "npm:5.0.0"
|
||||
"@lezer/highlight": "npm:1.2.1"
|
||||
"@lit-labs/context": "npm:0.4.1"
|
||||
"@lit-labs/motion": "npm:1.0.7"
|
||||
@ -9520,7 +9464,6 @@ __metadata:
|
||||
"@octokit/auth-oauth-device": "npm:7.1.1"
|
||||
"@octokit/plugin-retry": "npm:7.1.2"
|
||||
"@octokit/rest": "npm:21.0.2"
|
||||
"@open-wc/dev-server-hmr": "npm:0.1.4"
|
||||
"@polymer/paper-item": "npm:3.0.1"
|
||||
"@polymer/paper-listbox": "npm:3.0.1"
|
||||
"@polymer/paper-tabs": "npm:3.1.0"
|
||||
@ -9638,7 +9581,6 @@ __metadata:
|
||||
tar: "npm:7.4.3"
|
||||
terser-webpack-plugin: "npm:5.3.10"
|
||||
tinykeys: "npm:3.0.0"
|
||||
transform-async-modules-webpack-plugin: "npm:1.1.1"
|
||||
ts-lit-plugin: "npm:2.0.2"
|
||||
tsparticles-engine: "npm:2.12.0"
|
||||
tsparticles-preset-links: "npm:2.12.0"
|
||||
@ -10509,9 +10451,9 @@ __metadata:
|
||||
linkType: hard
|
||||
|
||||
"isbinaryfile@npm:^5.0.0":
|
||||
version: 5.0.2
|
||||
resolution: "isbinaryfile@npm:5.0.2"
|
||||
checksum: 10/515d7c963b35c2c443457d18c9152d1f655f3a0e2dceb548448e482145c1897e57a92fc024dece7de98c85c2909f5528e34e3d720c307887529cd689d7a7cd36
|
||||
version: 5.0.4
|
||||
resolution: "isbinaryfile@npm:5.0.4"
|
||||
checksum: 10/6162e900b17e6c73da6138667d6b195ed234f9fd9d073e7c8c07ee36657e63b6a69d73da55f522d45a1928f5da4642b5d25d27e24ebd3bb68b83647d594bee79
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@ -13221,8 +13163,8 @@ __metadata:
|
||||
linkType: hard
|
||||
|
||||
"rollup@npm:^2.43.1, rollup@npm:^2.67.0":
|
||||
version: 2.79.1
|
||||
resolution: "rollup@npm:2.79.1"
|
||||
version: 2.79.2
|
||||
resolution: "rollup@npm:2.79.2"
|
||||
dependencies:
|
||||
fsevents: "npm:~2.3.2"
|
||||
dependenciesMeta:
|
||||
@ -13230,7 +13172,7 @@ __metadata:
|
||||
optional: true
|
||||
bin:
|
||||
rollup: dist/bin/rollup
|
||||
checksum: 10/df087b701304432f30922bbee5f534ab189aa6938bd383b5686c03147e0d00cd1789ea10a462361326ce6b6ebe448ce272ad3f3cc40b82eeb3157df12f33663c
|
||||
checksum: 10/095ba0a82811b1866a76d826987743278db0a87c45092656986bfff490326b66187d5f9ff0c24cf8d5682bc470aa00c36654e0044d6b6335ac0c1201b8280880
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@ -14591,23 +14533,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"transform-async-modules-webpack-plugin@npm:1.1.1":
|
||||
version: 1.1.1
|
||||
resolution: "transform-async-modules-webpack-plugin@npm:1.1.1"
|
||||
dependencies:
|
||||
"@babel/core": "npm:^7.13.0"
|
||||
"@babel/plugin-transform-runtime": "npm:^7.13.0"
|
||||
"@babel/preset-env": "npm:^7.13.0"
|
||||
peerDependencies:
|
||||
"@babel/core": ^7.13.0
|
||||
"@babel/plugin-transform-runtime": ^7.13.0
|
||||
"@babel/preset-env": ^7.13.0
|
||||
"@babel/runtime": ^7.13.0
|
||||
webpack: ^5.0.0
|
||||
checksum: 10/dbae9102100519ac124a55068e9de8096a2cb94153bce58b3b3ed64482f88c24430b7daa8397b32685e080a5c61da8aacabc3431400fc620323c7eeffa2bbab5
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"tree-dump@npm:^1.0.1":
|
||||
version: 1.0.2
|
||||
resolution: "tree-dump@npm:1.0.2"
|
||||
@ -14905,9 +14830,9 @@ __metadata:
|
||||
linkType: hard
|
||||
|
||||
"typical@npm:^7.1.1":
|
||||
version: 7.2.0
|
||||
resolution: "typical@npm:7.2.0"
|
||||
checksum: 10/92572592ca12a4848f84f70f801f06f86a135516ee91a23a79dda3d163a756a683a5a5851c85fe74853cdc5671262c383ae60e0339ddb4aa210bb37206c7e75a
|
||||
version: 7.3.0
|
||||
resolution: "typical@npm:7.3.0"
|
||||
checksum: 10/fae1e7dd0a127bdf940228ff89f6221cfdd3c1ceb2cf506fadd69b8c7aef6e8bbda98ca1026d63341e52a29393672c7e144c1d33c7d6eba93e4e17cd4710b40a
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user