Require any modules after loading polyfill in entry points (#4231)
app/javascript/mastodon/main.js delayed the execution of modules, but other entry points didn't. That leads to failure in executing modules, which requires those polyfills. Strictly enforce the rule to require any modules after loading polyfill in entry points.
This commit is contained in:
parent
681c33d1f4
commit
b11ac88692
4 changed files with 49 additions and 50 deletions
|
@ -1,12 +1,14 @@
|
||||||
|
import * as OfflinePluginRuntime from 'offline-plugin/runtime';
|
||||||
|
import * as WebPushSubscription from './web_push_subscription';
|
||||||
|
import Mastodon from 'mastodon/containers/mastodon';
|
||||||
|
import React from 'react';
|
||||||
|
import ReactDOM from 'react-dom';
|
||||||
import ready from './ready';
|
import ready from './ready';
|
||||||
|
|
||||||
const perf = require('./performance');
|
const perf = require('./performance');
|
||||||
|
|
||||||
function main() {
|
function main() {
|
||||||
perf.start('main()');
|
perf.start('main()');
|
||||||
const Mastodon = require('mastodon/containers/mastodon').default;
|
|
||||||
const React = require('react');
|
|
||||||
const ReactDOM = require('react-dom');
|
|
||||||
|
|
||||||
if (window.history && history.replaceState) {
|
if (window.history && history.replaceState) {
|
||||||
const { pathname, search, hash } = window.location;
|
const { pathname, search, hash } = window.location;
|
||||||
|
@ -23,9 +25,6 @@ function main() {
|
||||||
ReactDOM.render(<Mastodon {...props} />, mountNode);
|
ReactDOM.render(<Mastodon {...props} />, mountNode);
|
||||||
if (process.env.NODE_ENV === 'production') {
|
if (process.env.NODE_ENV === 'production') {
|
||||||
// avoid offline in dev mode because it's harder to debug
|
// avoid offline in dev mode because it's harder to debug
|
||||||
const OfflinePluginRuntime = require('offline-plugin/runtime');
|
|
||||||
const WebPushSubscription = require('./web_push_subscription');
|
|
||||||
|
|
||||||
OfflinePluginRuntime.install();
|
OfflinePluginRuntime.install();
|
||||||
WebPushSubscription.register();
|
WebPushSubscription.register();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,11 @@
|
||||||
import TimelineContainer from '../mastodon/containers/timeline_container';
|
|
||||||
import React from 'react';
|
|
||||||
import ReactDOM from 'react-dom';
|
|
||||||
import loadPolyfills from '../mastodon/load_polyfills';
|
import loadPolyfills from '../mastodon/load_polyfills';
|
||||||
import ready from '../mastodon/ready';
|
|
||||||
|
|
||||||
require.context('../images/', true);
|
require.context('../images/', true);
|
||||||
|
|
||||||
function loaded() {
|
function loaded() {
|
||||||
|
const TimelineContainer = require('../mastodon/containers/timeline_container').default;
|
||||||
|
const React = require('react');
|
||||||
|
const ReactDOM = require('react-dom');
|
||||||
const mountNode = document.getElementById('mastodon-timeline');
|
const mountNode = document.getElementById('mastodon-timeline');
|
||||||
|
|
||||||
if (mountNode !== null) {
|
if (mountNode !== null) {
|
||||||
|
@ -16,6 +15,7 @@ function loaded() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function main() {
|
function main() {
|
||||||
|
const ready = require('../mastodon/ready').default;
|
||||||
ready(loaded);
|
ready(loaded);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import main from '../mastodon/main';
|
|
||||||
import loadPolyfills from '../mastodon/load_polyfills';
|
import loadPolyfills from '../mastodon/load_polyfills';
|
||||||
|
|
||||||
loadPolyfills().then(main).catch(e => {
|
loadPolyfills().then(() => {
|
||||||
|
require('../mastodon/main').default();
|
||||||
|
}).catch(e => {
|
||||||
console.error(e);
|
console.error(e);
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,44 +1,43 @@
|
||||||
import { length } from 'stringz';
|
|
||||||
import IntlRelativeFormat from 'intl-relativeformat';
|
|
||||||
import { delegate } from 'rails-ujs';
|
|
||||||
import emojify from '../mastodon/emoji';
|
|
||||||
import { getLocale } from '../mastodon/locales';
|
|
||||||
import loadPolyfills from '../mastodon/load_polyfills';
|
import loadPolyfills from '../mastodon/load_polyfills';
|
||||||
import ready from '../mastodon/ready';
|
|
||||||
|
|
||||||
const { localeData } = getLocale();
|
|
||||||
localeData.forEach(IntlRelativeFormat.__addLocaleData);
|
|
||||||
|
|
||||||
function loaded() {
|
|
||||||
const locale = document.documentElement.lang;
|
|
||||||
const dateTimeFormat = new Intl.DateTimeFormat(locale, {
|
|
||||||
year: 'numeric',
|
|
||||||
month: 'long',
|
|
||||||
day: 'numeric',
|
|
||||||
hour: 'numeric',
|
|
||||||
minute: 'numeric',
|
|
||||||
});
|
|
||||||
const relativeFormat = new IntlRelativeFormat(locale);
|
|
||||||
|
|
||||||
[].forEach.call(document.querySelectorAll('.emojify'), (content) => {
|
|
||||||
content.innerHTML = emojify(content.innerHTML);
|
|
||||||
});
|
|
||||||
|
|
||||||
[].forEach.call(document.querySelectorAll('time.formatted'), (content) => {
|
|
||||||
const datetime = new Date(content.getAttribute('datetime'));
|
|
||||||
const formattedDate = dateTimeFormat.format(datetime);
|
|
||||||
content.title = formattedDate;
|
|
||||||
content.textContent = formattedDate;
|
|
||||||
});
|
|
||||||
|
|
||||||
[].forEach.call(document.querySelectorAll('time.time-ago'), (content) => {
|
|
||||||
const datetime = new Date(content.getAttribute('datetime'));
|
|
||||||
content.textContent = relativeFormat.format(datetime);;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function main() {
|
function main() {
|
||||||
ready(loaded);
|
const { length } = require('stringz');
|
||||||
|
const IntlRelativeFormat = require('intl-relativeformat').default;
|
||||||
|
const { delegate } = require('rails-ujs');
|
||||||
|
const emojify = require('../mastodon/emoji').default;
|
||||||
|
const { getLocale } = require('../mastodon/locales');
|
||||||
|
const ready = require('../mastodon/ready').default;
|
||||||
|
|
||||||
|
const { localeData } = getLocale();
|
||||||
|
localeData.forEach(IntlRelativeFormat.__addLocaleData);
|
||||||
|
|
||||||
|
ready(() => {
|
||||||
|
const locale = document.documentElement.lang;
|
||||||
|
const dateTimeFormat = new Intl.DateTimeFormat(locale, {
|
||||||
|
year: 'numeric',
|
||||||
|
month: 'long',
|
||||||
|
day: 'numeric',
|
||||||
|
hour: 'numeric',
|
||||||
|
minute: 'numeric',
|
||||||
|
});
|
||||||
|
const relativeFormat = new IntlRelativeFormat(locale);
|
||||||
|
|
||||||
|
[].forEach.call(document.querySelectorAll('.emojify'), (content) => {
|
||||||
|
content.innerHTML = emojify(content.innerHTML);
|
||||||
|
});
|
||||||
|
|
||||||
|
[].forEach.call(document.querySelectorAll('time.formatted'), (content) => {
|
||||||
|
const datetime = new Date(content.getAttribute('datetime'));
|
||||||
|
const formattedDate = dateTimeFormat.format(datetime);
|
||||||
|
content.title = formattedDate;
|
||||||
|
content.textContent = formattedDate;
|
||||||
|
});
|
||||||
|
|
||||||
|
[].forEach.call(document.querySelectorAll('time.time-ago'), (content) => {
|
||||||
|
const datetime = new Date(content.getAttribute('datetime'));
|
||||||
|
content.textContent = relativeFormat.format(datetime);;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
delegate(document, '.video-player video', 'click', ({ target }) => {
|
delegate(document, '.video-player video', 'click', ({ target }) => {
|
||||||
if (target.paused) {
|
if (target.paused) {
|
||||||
|
|
Loading…
Reference in a new issue