diff --git a/app/javascript/packs/application.js b/app/javascript/packs/application.ts similarity index 83% rename from app/javascript/packs/application.js rename to app/javascript/packs/application.ts index d13388b4791..364cae3c464 100644 --- a/app/javascript/packs/application.js +++ b/app/javascript/packs/application.ts @@ -1,5 +1,5 @@ import './public-path'; -import main from "mastodon/main"; +import main from 'mastodon/main'; import { start } from '../mastodon/common'; import { loadLocale } from '../mastodon/locales'; @@ -10,6 +10,6 @@ start(); loadPolyfills() .then(loadLocale) .then(main) - .catch(e => { + .catch((e) => { console.error(e); }); diff --git a/app/javascript/packs/error.js b/app/javascript/packs/error.ts similarity index 66% rename from app/javascript/packs/error.js rename to app/javascript/packs/error.ts index 6376dc2f5df..ddc7655dd41 100644 --- a/app/javascript/packs/error.js +++ b/app/javascript/packs/error.ts @@ -2,7 +2,9 @@ import './public-path'; import ready from '../mastodon/ready'; ready(() => { - const image = document.querySelector('img'); + const image = document.querySelector('img'); + + if (!image) return; image.addEventListener('mouseenter', () => { image.src = '/oops.gif'; @@ -11,4 +13,6 @@ ready(() => { image.addEventListener('mouseleave', () => { image.src = '/oops.png'; }); +}).catch((e) => { + console.error(e); }); diff --git a/app/javascript/packs/inert.js b/app/javascript/packs/inert.ts similarity index 100% rename from app/javascript/packs/inert.js rename to app/javascript/packs/inert.ts diff --git a/app/javascript/packs/mailer.js b/app/javascript/packs/mailer.js deleted file mode 100644 index a2ad5e73ac2..00000000000 --- a/app/javascript/packs/mailer.js +++ /dev/null @@ -1,3 +0,0 @@ -import '../styles/mailer.scss'; - -require.context('../icons'); diff --git a/app/javascript/packs/mailer.ts b/app/javascript/packs/mailer.ts new file mode 100644 index 00000000000..d4b82ad8691 --- /dev/null +++ b/app/javascript/packs/mailer.ts @@ -0,0 +1,5 @@ +/* Placeholder to make the mailer assets compiled by Webpack */ + +import '../styles/mailer.scss'; + +require.context('../icons'); diff --git a/app/javascript/packs/public-path.js b/app/javascript/packs/public-path.ts similarity index 69% rename from app/javascript/packs/public-path.js rename to app/javascript/packs/public-path.ts index f4d166a7713..ac4b9355b95 100644 --- a/app/javascript/packs/public-path.js +++ b/app/javascript/packs/public-path.ts @@ -2,7 +2,7 @@ // to share the same assets regardless of instance configuration. // See https://webpack.js.org/guides/public-path/#on-the-fly -function removeOuterSlashes(string) { +function removeOuterSlashes(string: string) { return string.replace(/^\/*/, '').replace(/\/*$/, ''); } @@ -15,7 +15,9 @@ function formatPublicPath(host = '', path = '') { return `${formattedHost}/${formattedPath}/`; } -const cdnHost = document.querySelector('meta[name=cdn-host]'); +const cdnHost = document.querySelector('meta[name=cdn-host]'); -// eslint-disable-next-line no-undef -__webpack_public_path__ = formatPublicPath(cdnHost ? cdnHost.content : '', process.env.PUBLIC_OUTPUT_PATH); +__webpack_public_path__ = formatPublicPath( + cdnHost ? cdnHost.content : '', + process.env.PUBLIC_OUTPUT_PATH, +); diff --git a/package.json b/package.json index ed59a68a417..b0d7919bafa 100644 --- a/package.json +++ b/package.json @@ -167,6 +167,7 @@ "@types/redux-immutable": "^4.0.3", "@types/requestidlecallback": "^0.3.5", "@types/webpack": "^4.41.33", + "@types/webpack-env": "^1.18.4", "@typescript-eslint/eslint-plugin": "^7.0.0", "@typescript-eslint/parser": "^7.0.0", "babel-jest": "^29.5.0", diff --git a/yarn.lock b/yarn.lock index 8d235a7197a..f389f4cd0e0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2766,6 +2766,7 @@ __metadata: "@types/redux-immutable": "npm:^4.0.3" "@types/requestidlecallback": "npm:^0.3.5" "@types/webpack": "npm:^4.41.33" + "@types/webpack-env": "npm:^1.18.4" "@typescript-eslint/eslint-plugin": "npm:^7.0.0" "@typescript-eslint/parser": "npm:^7.0.0" arrow-key-navigation: "npm:^1.2.0" @@ -3990,6 +3991,13 @@ __metadata: languageName: node linkType: hard +"@types/webpack-env@npm:^1.18.4": + version: 1.18.4 + resolution: "@types/webpack-env@npm:1.18.4" + checksum: 10c0/3fa77dbff0ed71685404576b0a1cf74587567fe2ee1cfd11d56d6eefcab7a61e4c9ead0eced264e289d2cf0fc74296dbd55ed6c95774fe0fd6264d156c5a59f0 + languageName: node + linkType: hard + "@types/webpack-sources@npm:*": version: 3.2.2 resolution: "@types/webpack-sources@npm:3.2.2"