diff --git a/bin/templates/plugin/client/.babelrc b/bin/templates/plugin/client/.babelrc
new file mode 100644
index 000000000..60be246eb
--- /dev/null
+++ b/bin/templates/plugin/client/.babelrc
@@ -0,0 +1,14 @@
+{
+ "presets": [
+ "es2015"
+ ],
+ "plugins": [
+ "add-module-exports",
+ "transform-class-properties",
+ "transform-decorators-legacy",
+ "transform-object-assign",
+ "transform-object-rest-spread",
+ "transform-async-to-generator",
+ "transform-react-jsx"
+ ]
+}
\ No newline at end of file
diff --git a/.babelrc b/client/.babelrc
similarity index 87%
rename from .babelrc
rename to client/.babelrc
index 3dcf42eb7..2af1a3dad 100644
--- a/.babelrc
+++ b/client/.babelrc
@@ -1,8 +1,9 @@
{
"presets": [
- ["es2015", {modules: false}]
+ "es2015"
],
"plugins": [
+ "add-module-exports",
"transform-class-properties",
"transform-decorators-legacy",
"transform-object-assign",
@@ -11,4 +12,4 @@
"transform-react-jsx",
"syntax-dynamic-import"
]
-}
+}
\ No newline at end of file
diff --git a/client/coral-configure/components/QuestionBoxBuilder.js b/client/coral-configure/components/QuestionBoxBuilder.js
index 28dfc30b3..285df40ed 100644
--- a/client/coral-configure/components/QuestionBoxBuilder.js
+++ b/client/coral-configure/components/QuestionBoxBuilder.js
@@ -8,7 +8,7 @@ import styles from './QuestionBoxBuilder.css';
class QuestionBoxBuilder extends React.Component {
constructor() {
super();
-
+
this.state = {
loading: true
};
@@ -17,9 +17,9 @@ class QuestionBoxBuilder extends React.Component {
componentWillMount() {
this.loadEditor();
}
-
+
async loadEditor() {
- const {default: MarkdownEditor} = await import('coral-framework/components/MarkdownEditor');
+ const MarkdownEditor = await import('coral-framework/components/MarkdownEditor');
return this.setState({
loading : false,
@@ -79,17 +79,17 @@ class QuestionBoxBuilder extends React.Component {
- handleChange({}, {questionBoxContent: value})}
/>
-
+
);
}
diff --git a/client/coral-embed/src/index.js b/client/coral-embed/src/index.js
index f60a88439..34bee1797 100644
--- a/client/coral-embed/src/index.js
+++ b/client/coral-embed/src/index.js
@@ -2,98 +2,101 @@ import URLSearchParams from 'url-search-params';
import Stream from './Stream';
import StreamInterface from './StreamInterface';
-export class Talk {
+// This function should return value of window.Coral
+const Coral = {};
+const Talk = (Coral.Talk = {});
- /**
- * Render a Talk stream
- * @param {HTMLElement} el - Element to render the stream in
- * @param {Object} opts - Configuration options for talk
- * @param {String} opts.talk - Talk base URL
- * @param {String} [opts.title] - Title of Stream (rendered in iframe)
- * @param {String} [opts.asset_url] - Asset URL
- * @param {String} [opts.asset_id] - Asset ID
- * @param {String} [opts.auth_token] - (optional) A jwt representing the session
- * @return {Object}
- *
- * Example:
- * ```
- * const embed = Talk.render(document.getElementById('talkStreamEmbed'), opts);
- *
- * // trigger a login with optional token.
- * embed.login(token);
- *
- * // trigger a logout.
- * embed.logout();
- *
- * // listen to events (in this case all events).
- * embed.on('**', function(value) {
- * console.log(this.event, value);
- * });
- * ```
- */
- static render(el, opts) {
- if (!el) {
- throw new Error('Please provide Coral.Talk.render() the HTMLElement you want to render Talk in.');
- }
- if (typeof el !== 'object') {
- throw new Error(`Coral.Talk.render() expected HTMLElement but got ${el} (${typeof el})`);
- }
-
- opts = opts || {};
-
- // TODO: infer this URL without explicit user input (if possible, may have to be added at build/render time of this script)
- if (!opts.talk) {
- throw new Error(
- 'Coral.Talk.render() expects opts.talk as the Talk Base URL'
- );
- }
-
- // Ensure el has an id, as pym can't directly accept the HTMLElement.
- if (!el.id) {
- el.id = `_${Math.random()}`;
- }
-
- // Compose the query to send down to the Talk API so it knows what to load.
- const query = {};
-
- // Parse the url parameters to extract some of the information.
- const urlParams = new URLSearchParams(window.location.search);
- if (urlParams.get('commentId')) {
- query.comment_id = urlParams.get('commentId');
- }
-
- // Extract the asset id from the options.
- if (opts.asset_id) {
- query.asset_id = opts.asset_id;
- }
-
- // Extract the asset url.
- if (opts.asset_url) {
- query.asset_url = opts.asset_url;
- } else if (!opts.asset_id) {
-
- // The asset url was not provided and the asset id was also not provided,
- // we need to infer the asset url from details on the page.
-
- try {
- query.asset_url = document.querySelector('link[rel="canonical"]').href;
- } catch (e) {
- console.warn(
- 'This page does not include a canonical link tag. Talk has inferred this asset_url from the window object. Query params have been stripped, which may cause a single thread to be present across multiple pages.'
- );
-
- if (!window.location.origin) {
- window.location.origin = `${window.location.protocol}//${window.location.hostname}${window.location.port ? `:${window.location.port}` : ''}`;
- }
-
- query.asset_url = window.location.origin + window.location.pathname;
- }
- }
-
- // Create the new Stream.
- const stream = new Stream(el, opts.talk, query, opts);
-
- // Return the public interface for the stream.
- return new StreamInterface(stream);
+/**
+ * Render a Talk stream
+ * @param {HTMLElement} el - Element to render the stream in
+ * @param {Object} opts - Configuration options for talk
+ * @param {String} opts.talk - Talk base URL
+ * @param {String} [opts.title] - Title of Stream (rendered in iframe)
+ * @param {String} [opts.asset_url] - Asset URL
+ * @param {String} [opts.asset_id] - Asset ID
+ * @param {String} [opts.auth_token] - (optional) A jwt representing the session
+ * @return {Object}
+ *
+ * Example:
+ * ```
+ * const embed = Talk.render(document.getElementById('talkStreamEmbed'), opts);
+ *
+ * // trigger a login with optional token.
+ * embed.login(token);
+ *
+ * // trigger a logout.
+ * embed.logout();
+ *
+ * // listen to events (in this case all events).
+ * embed.on('**', function(value) {
+ * console.log(this.event, value);
+ * });
+ * ```
+ */
+Talk.render = (el, opts) => {
+ if (!el) {
+ throw new Error('Please provide Coral.Talk.render() the HTMLElement you want to render Talk in.');
}
-}
+ if (typeof el !== 'object') {
+ throw new Error(`Coral.Talk.render() expected HTMLElement but got ${el} (${typeof el})`);
+ }
+
+ opts = opts || {};
+
+ // TODO: infer this URL without explicit user input (if possible, may have to be added at build/render time of this script)
+ if (!opts.talk) {
+ throw new Error(
+ 'Coral.Talk.render() expects opts.talk as the Talk Base URL'
+ );
+ }
+
+ // Ensure el has an id, as pym can't directly accept the HTMLElement.
+ if (!el.id) {
+ el.id = `_${Math.random()}`;
+ }
+
+ // Compose the query to send down to the Talk API so it knows what to load.
+ const query = {};
+
+ // Parse the url parameters to extract some of the information.
+ const urlParams = new URLSearchParams(window.location.search);
+ if (urlParams.get('commentId')) {
+ query.comment_id = urlParams.get('commentId');
+ }
+
+ // Extract the asset id from the options.
+ if (opts.asset_id) {
+ query.asset_id = opts.asset_id;
+ }
+
+ // Extract the asset url.
+ if (opts.asset_url) {
+ query.asset_url = opts.asset_url;
+ } else if (!opts.asset_id) {
+
+ // The asset url was not provided and the asset id was also not provided,
+ // we need to infer the asset url from details on the page.
+
+ try {
+ query.asset_url = document.querySelector('link[rel="canonical"]').href;
+ } catch (e) {
+ console.warn(
+ 'This page does not include a canonical link tag. Talk has inferred this asset_url from the window object. Query params have been stripped, which may cause a single thread to be present across multiple pages.'
+ );
+
+ if (!window.location.origin) {
+ window.location.origin = `${window.location.protocol}//${window.location.hostname}${window.location.port ? `:${window.location.port}` : ''}`;
+ }
+
+ query.asset_url = window.location.origin + window.location.pathname;
+ }
+ }
+
+ // Create the new Stream.
+ const stream = new Stream(el, opts.talk, query, opts);
+
+ // Return the public interface for the stream.
+ return new StreamInterface(stream);
+};
+
+export default Coral;
diff --git a/client/coral-framework/loaders/plugins-loader.js b/client/coral-framework/loaders/plugins-loader.js
index 7683dae8d..a9fed95ab 100644
--- a/client/coral-framework/loaders/plugins-loader.js
+++ b/client/coral-framework/loaders/plugins-loader.js
@@ -21,7 +21,7 @@ module.exports = function(source) {
this.cacheable();
const config = this.exec(source, this.resourcePath);
const plugins = getPluginList(config).map((plugin) => `{
- module: require('${plugin}/client').default,
+ module: require('${plugin}/client'),
name: '${plugin}'
}`);
diff --git a/client/coral-framework/services/client.js b/client/coral-framework/services/client.js
index dc5a67d03..52088ad79 100644
--- a/client/coral-framework/services/client.js
+++ b/client/coral-framework/services/client.js
@@ -1,4 +1,4 @@
-import ApolloClient, {IntrospectionFragmentMatcher, createNetworkInterface} from 'apollo-client';
+import ApolloClient, {addTypename, IntrospectionFragmentMatcher, createNetworkInterface} from 'apollo-client';
import {SubscriptionClient, addGraphQLSubscriptions} from 'subscriptions-transport-ws';
import MessageTypes from 'subscriptions-transport-ws/dist/message-types';
@@ -64,6 +64,7 @@ export function createClient(options = {}) {
connectToDevTools: true,
addTypename: true,
fragmentMatcher: new IntrospectionFragmentMatcher({introspectionQueryResultData: introspectionData}),
+ queryTransformer: addTypename,
dataIdFromObject: (result) => {
if (result.id && result.__typename) { // eslint-disable-line no-underscore-dangle
return `${result.__typename}_${result.id}`; // eslint-disable-line no-underscore-dangle
diff --git a/client/talk-plugin-commentbox/index.js b/client/talk-plugin-commentbox/index.js
index 0d94a840e..9f166caeb 100644
--- a/client/talk-plugin-commentbox/index.js
+++ b/client/talk-plugin-commentbox/index.js
@@ -1 +1,5 @@
-export {default as reducer} from './reducer';
+import reducer from './reducer';
+
+export default {
+ reducer
+};
diff --git a/client/talk-plugin-flags/helpers/flagReasons.js b/client/talk-plugin-flags/helpers/flagReasons.js
index 52bddbb38..514c57398 100644
--- a/client/talk-plugin-flags/helpers/flagReasons.js
+++ b/client/talk-plugin-flags/helpers/flagReasons.js
@@ -1,14 +1,15 @@
-export const username = {
- offensive: 'USERNAME_OFFENSIVE',
- nolike: 'USERNAME_NOLIKE',
- impersonating: 'USERNAME_IMPERSONATING',
- spam: 'USERNAME_SPAM',
- other: 'USERNAME_OTHER'
-};
-
-export const comment = {
- offensive: 'COMMENT_OFFENSIVE',
- spam: 'COMMENT_SPAM',
- noagree: 'COMMENT_NOAGREE',
- other: 'COMMENT_OTHER'
+export default {
+ username: {
+ offensive: 'USERNAME_OFFENSIVE',
+ nolike: 'USERNAME_NOLIKE',
+ impersonating: 'USERNAME_IMPERSONATING',
+ spam: 'USERNAME_SPAM',
+ other: 'USERNAME_OTHER'
+ },
+ comment: {
+ offensive: 'COMMENT_OFFENSIVE',
+ spam: 'COMMENT_SPAM',
+ noagree: 'COMMENT_NOAGREE',
+ other: 'COMMENT_OTHER'
+ }
};
diff --git a/package.json b/package.json
index f8c8c9731..52866238b 100644
--- a/package.json
+++ b/package.json
@@ -63,6 +63,7 @@
"babel-core": "^6.26.0",
"babel-eslint": "^7.2.1",
"babel-loader": "^7.1.2",
+ "babel-plugin-add-module-exports": "^0.2.1",
"babel-plugin-syntax-dynamic-import": "^6.18.0",
"babel-plugin-transform-async-to-generator": "^6.16.0",
"babel-plugin-transform-class-properties": "^6.23.0",
diff --git a/plugin-api/.babelrc b/plugin-api/.babelrc
new file mode 100644
index 000000000..63b1c53de
--- /dev/null
+++ b/plugin-api/.babelrc
@@ -0,0 +1,14 @@
+{
+ "presets": [
+ "es2015"
+ ],
+ "plugins": [
+ "add-module-exports",
+ "transform-class-properties",
+ "transform-decorators-legacy",
+ "transform-object-assign",
+ "transform-object-rest-spread",
+ "transform-async-to-generator",
+ "transform-react-jsx"
+ ]
+}
diff --git a/plugins/talk-plugin-auth/client/.babelrc b/plugins/talk-plugin-auth/client/.babelrc
new file mode 100644
index 000000000..60be246eb
--- /dev/null
+++ b/plugins/talk-plugin-auth/client/.babelrc
@@ -0,0 +1,14 @@
+{
+ "presets": [
+ "es2015"
+ ],
+ "plugins": [
+ "add-module-exports",
+ "transform-class-properties",
+ "transform-decorators-legacy",
+ "transform-object-assign",
+ "transform-object-rest-spread",
+ "transform-async-to-generator",
+ "transform-react-jsx"
+ ]
+}
\ No newline at end of file
diff --git a/plugins/talk-plugin-author-menu/client/.babelrc b/plugins/talk-plugin-author-menu/client/.babelrc
new file mode 100644
index 000000000..60be246eb
--- /dev/null
+++ b/plugins/talk-plugin-author-menu/client/.babelrc
@@ -0,0 +1,14 @@
+{
+ "presets": [
+ "es2015"
+ ],
+ "plugins": [
+ "add-module-exports",
+ "transform-class-properties",
+ "transform-decorators-legacy",
+ "transform-object-assign",
+ "transform-object-rest-spread",
+ "transform-async-to-generator",
+ "transform-react-jsx"
+ ]
+}
\ No newline at end of file
diff --git a/plugins/talk-plugin-comment-content/client/.babelrc b/plugins/talk-plugin-comment-content/client/.babelrc
new file mode 100644
index 000000000..60be246eb
--- /dev/null
+++ b/plugins/talk-plugin-comment-content/client/.babelrc
@@ -0,0 +1,14 @@
+{
+ "presets": [
+ "es2015"
+ ],
+ "plugins": [
+ "add-module-exports",
+ "transform-class-properties",
+ "transform-decorators-legacy",
+ "transform-object-assign",
+ "transform-object-rest-spread",
+ "transform-async-to-generator",
+ "transform-react-jsx"
+ ]
+}
\ No newline at end of file
diff --git a/plugins/talk-plugin-featured-comments/client/.babelrc b/plugins/talk-plugin-featured-comments/client/.babelrc
new file mode 100644
index 000000000..60be246eb
--- /dev/null
+++ b/plugins/talk-plugin-featured-comments/client/.babelrc
@@ -0,0 +1,14 @@
+{
+ "presets": [
+ "es2015"
+ ],
+ "plugins": [
+ "add-module-exports",
+ "transform-class-properties",
+ "transform-decorators-legacy",
+ "transform-object-assign",
+ "transform-object-rest-spread",
+ "transform-async-to-generator",
+ "transform-react-jsx"
+ ]
+}
\ No newline at end of file
diff --git a/plugins/talk-plugin-featured-comments/client/components/.babelrc b/plugins/talk-plugin-featured-comments/client/components/.babelrc
new file mode 100644
index 000000000..60be246eb
--- /dev/null
+++ b/plugins/talk-plugin-featured-comments/client/components/.babelrc
@@ -0,0 +1,14 @@
+{
+ "presets": [
+ "es2015"
+ ],
+ "plugins": [
+ "add-module-exports",
+ "transform-class-properties",
+ "transform-decorators-legacy",
+ "transform-object-assign",
+ "transform-object-rest-spread",
+ "transform-async-to-generator",
+ "transform-react-jsx"
+ ]
+}
\ No newline at end of file
diff --git a/plugins/talk-plugin-featured-comments/client/components/ModTag.js b/plugins/talk-plugin-featured-comments/client/components/ModTag.js
index 7dfd36f2d..52c051796 100644
--- a/plugins/talk-plugin-featured-comments/client/components/ModTag.js
+++ b/plugins/talk-plugin-featured-comments/client/components/ModTag.js
@@ -3,7 +3,7 @@ import cn from 'classnames';
import styles from './ModTag.css';
import {t} from 'plugin-api/beta/client/services';
import {Icon} from 'plugin-api/beta/client/components/ui';
-import {getErrorMessages} from 'plugin-api/beta/client/utils';
+import * as notification from 'coral-admin/src/services/notification';
export default class ModTag extends React.Component {
constructor() {
@@ -32,10 +32,10 @@ export default class ModTag extends React.Component {
postTag = async () => {
try {
await this.props.postTag();
- this.props.notify('success', t('talk-plugin-featured-comments.notify_self_featured', this.props.comment.user.username));
+ notification.success(t('talk-plugin-featured-comments.notify_self_featured', this.props.comment.user.username));
}
catch(err) {
- this.props.notify('error', getErrorMessages(err));
+ notification.showMutationErrors(err);
}
}
diff --git a/plugins/talk-plugin-featured-comments/client/components/TabPane.js b/plugins/talk-plugin-featured-comments/client/components/TabPane.js
index 941f15402..2f5d0c7c2 100644
--- a/plugins/talk-plugin-featured-comments/client/components/TabPane.js
+++ b/plugins/talk-plugin-featured-comments/client/components/TabPane.js
@@ -1,7 +1,7 @@
import React from 'react';
import Comment from '../containers/Comment';
import LoadMore from './LoadMore';
-import {getErrorMessages} from 'plugin-api/beta/client/utils';
+import {forEachError} from 'plugin-api/beta/client/utils';
class TabPane extends React.Component {
state = {
@@ -16,7 +16,7 @@ class TabPane extends React.Component {
})
.catch((error) => {
this.setState({loadingState: 'error'});
- this.props.notify('error', getErrorMessages(error));
+ forEachError(error, ({msg}) => {this.props.addNotification('error', msg);});
});
}
diff --git a/plugins/talk-plugin-featured-comments/client/containers/ModTag.js b/plugins/talk-plugin-featured-comments/client/containers/ModTag.js
index 88aee73f6..7081c7ec6 100644
--- a/plugins/talk-plugin-featured-comments/client/containers/ModTag.js
+++ b/plugins/talk-plugin-featured-comments/client/containers/ModTag.js
@@ -1,13 +1,6 @@
import ModTag from '../components/ModTag';
-import {withTags, connect} from 'plugin-api/beta/client/hocs';
-import {gql, compose} from 'react-apollo';
-import {bindActionCreators} from 'redux';
-import {notify} from 'plugin-api/beta/client/actions/notification';
-
-const mapDispatchToProps = (dispatch) =>
- bindActionCreators({
- notify,
- }, dispatch);
+import {withTags} from 'plugin-api/beta/client/hocs';
+import {gql} from 'react-apollo';
const fragments = {
comment: gql`
@@ -18,10 +11,6 @@ const fragments = {
}
`
};
-const enhance = compose(
- withTags('featured', {fragments}),
- connect(null, mapDispatchToProps),
-);
-export default enhance(ModTag);
+export default withTags('featured', {fragments})(ModTag);
diff --git a/plugins/talk-plugin-featured-comments/client/containers/TabPane.js b/plugins/talk-plugin-featured-comments/client/containers/TabPane.js
index 5f684b228..93ef402a9 100644
--- a/plugins/talk-plugin-featured-comments/client/containers/TabPane.js
+++ b/plugins/talk-plugin-featured-comments/client/containers/TabPane.js
@@ -4,7 +4,7 @@ import {compose, gql} from 'react-apollo';
import TabPane from '../components/TabPane';
import {withFragments, connect} from 'plugin-api/beta/client/hocs';
import Comment from '../containers/Comment';
-import {notify} from 'plugin-api/beta/client/actions/notification';
+import {addNotification} from 'plugin-api/beta/client/actions/notification';
import {viewComment} from 'coral-embed-stream/src/actions/stream';
import {appendNewNodes, getDefinitionName} from 'plugin-api/beta/client/utils';
import update from 'immutability-helper';
@@ -81,7 +81,7 @@ const LOAD_MORE_QUERY = gql`
const mapDispatchToProps = (dispatch) =>
bindActionCreators({
viewComment,
- notify,
+ addNotification,
}, dispatch);
const enhance = compose(
diff --git a/plugins/talk-plugin-flag-details/client/.babelrc b/plugins/talk-plugin-flag-details/client/.babelrc
new file mode 100644
index 000000000..60be246eb
--- /dev/null
+++ b/plugins/talk-plugin-flag-details/client/.babelrc
@@ -0,0 +1,14 @@
+{
+ "presets": [
+ "es2015"
+ ],
+ "plugins": [
+ "add-module-exports",
+ "transform-class-properties",
+ "transform-decorators-legacy",
+ "transform-object-assign",
+ "transform-object-rest-spread",
+ "transform-async-to-generator",
+ "transform-react-jsx"
+ ]
+}
\ No newline at end of file
diff --git a/plugins/talk-plugin-ignore-user/client/.babelrc b/plugins/talk-plugin-ignore-user/client/.babelrc
new file mode 100644
index 000000000..60be246eb
--- /dev/null
+++ b/plugins/talk-plugin-ignore-user/client/.babelrc
@@ -0,0 +1,14 @@
+{
+ "presets": [
+ "es2015"
+ ],
+ "plugins": [
+ "add-module-exports",
+ "transform-class-properties",
+ "transform-decorators-legacy",
+ "transform-object-assign",
+ "transform-object-rest-spread",
+ "transform-async-to-generator",
+ "transform-react-jsx"
+ ]
+}
\ No newline at end of file
diff --git a/plugins/talk-plugin-like/client/.babelrc b/plugins/talk-plugin-like/client/.babelrc
new file mode 100644
index 000000000..60be246eb
--- /dev/null
+++ b/plugins/talk-plugin-like/client/.babelrc
@@ -0,0 +1,14 @@
+{
+ "presets": [
+ "es2015"
+ ],
+ "plugins": [
+ "add-module-exports",
+ "transform-class-properties",
+ "transform-decorators-legacy",
+ "transform-object-assign",
+ "transform-object-rest-spread",
+ "transform-async-to-generator",
+ "transform-react-jsx"
+ ]
+}
\ No newline at end of file
diff --git a/plugins/talk-plugin-love/client/.babelrc b/plugins/talk-plugin-love/client/.babelrc
new file mode 100644
index 000000000..60be246eb
--- /dev/null
+++ b/plugins/talk-plugin-love/client/.babelrc
@@ -0,0 +1,14 @@
+{
+ "presets": [
+ "es2015"
+ ],
+ "plugins": [
+ "add-module-exports",
+ "transform-class-properties",
+ "transform-decorators-legacy",
+ "transform-object-assign",
+ "transform-object-rest-spread",
+ "transform-async-to-generator",
+ "transform-react-jsx"
+ ]
+}
\ No newline at end of file
diff --git a/plugins/talk-plugin-member-since/client/.babelrc b/plugins/talk-plugin-member-since/client/.babelrc
new file mode 100644
index 000000000..60be246eb
--- /dev/null
+++ b/plugins/talk-plugin-member-since/client/.babelrc
@@ -0,0 +1,14 @@
+{
+ "presets": [
+ "es2015"
+ ],
+ "plugins": [
+ "add-module-exports",
+ "transform-class-properties",
+ "transform-decorators-legacy",
+ "transform-object-assign",
+ "transform-object-rest-spread",
+ "transform-async-to-generator",
+ "transform-react-jsx"
+ ]
+}
\ No newline at end of file
diff --git a/plugins/talk-plugin-moderation-actions/client/.babelrc b/plugins/talk-plugin-moderation-actions/client/.babelrc
new file mode 100644
index 000000000..60be246eb
--- /dev/null
+++ b/plugins/talk-plugin-moderation-actions/client/.babelrc
@@ -0,0 +1,14 @@
+{
+ "presets": [
+ "es2015"
+ ],
+ "plugins": [
+ "add-module-exports",
+ "transform-class-properties",
+ "transform-decorators-legacy",
+ "transform-object-assign",
+ "transform-object-rest-spread",
+ "transform-async-to-generator",
+ "transform-react-jsx"
+ ]
+}
\ No newline at end of file
diff --git a/plugins/talk-plugin-offtopic/client/.babelrc b/plugins/talk-plugin-offtopic/client/.babelrc
new file mode 100644
index 000000000..60be246eb
--- /dev/null
+++ b/plugins/talk-plugin-offtopic/client/.babelrc
@@ -0,0 +1,14 @@
+{
+ "presets": [
+ "es2015"
+ ],
+ "plugins": [
+ "add-module-exports",
+ "transform-class-properties",
+ "transform-decorators-legacy",
+ "transform-object-assign",
+ "transform-object-rest-spread",
+ "transform-async-to-generator",
+ "transform-react-jsx"
+ ]
+}
\ No newline at end of file
diff --git a/plugins/talk-plugin-permalink/client/.babelrc b/plugins/talk-plugin-permalink/client/.babelrc
new file mode 100644
index 000000000..60be246eb
--- /dev/null
+++ b/plugins/talk-plugin-permalink/client/.babelrc
@@ -0,0 +1,14 @@
+{
+ "presets": [
+ "es2015"
+ ],
+ "plugins": [
+ "add-module-exports",
+ "transform-class-properties",
+ "transform-decorators-legacy",
+ "transform-object-assign",
+ "transform-object-rest-spread",
+ "transform-async-to-generator",
+ "transform-react-jsx"
+ ]
+}
\ No newline at end of file
diff --git a/plugins/talk-plugin-remember-sort/client/.babelrc b/plugins/talk-plugin-remember-sort/client/.babelrc
new file mode 100644
index 000000000..60be246eb
--- /dev/null
+++ b/plugins/talk-plugin-remember-sort/client/.babelrc
@@ -0,0 +1,14 @@
+{
+ "presets": [
+ "es2015"
+ ],
+ "plugins": [
+ "add-module-exports",
+ "transform-class-properties",
+ "transform-decorators-legacy",
+ "transform-object-assign",
+ "transform-object-rest-spread",
+ "transform-async-to-generator",
+ "transform-react-jsx"
+ ]
+}
\ No newline at end of file
diff --git a/plugins/talk-plugin-respect/client/.babelrc b/plugins/talk-plugin-respect/client/.babelrc
new file mode 100644
index 000000000..60be246eb
--- /dev/null
+++ b/plugins/talk-plugin-respect/client/.babelrc
@@ -0,0 +1,14 @@
+{
+ "presets": [
+ "es2015"
+ ],
+ "plugins": [
+ "add-module-exports",
+ "transform-class-properties",
+ "transform-decorators-legacy",
+ "transform-object-assign",
+ "transform-object-rest-spread",
+ "transform-async-to-generator",
+ "transform-react-jsx"
+ ]
+}
\ No newline at end of file
diff --git a/plugins/talk-plugin-sort-most-liked/client/.babelrc b/plugins/talk-plugin-sort-most-liked/client/.babelrc
new file mode 100644
index 000000000..60be246eb
--- /dev/null
+++ b/plugins/talk-plugin-sort-most-liked/client/.babelrc
@@ -0,0 +1,14 @@
+{
+ "presets": [
+ "es2015"
+ ],
+ "plugins": [
+ "add-module-exports",
+ "transform-class-properties",
+ "transform-decorators-legacy",
+ "transform-object-assign",
+ "transform-object-rest-spread",
+ "transform-async-to-generator",
+ "transform-react-jsx"
+ ]
+}
\ No newline at end of file
diff --git a/plugins/talk-plugin-sort-most-loved/client/.babelrc b/plugins/talk-plugin-sort-most-loved/client/.babelrc
new file mode 100644
index 000000000..60be246eb
--- /dev/null
+++ b/plugins/talk-plugin-sort-most-loved/client/.babelrc
@@ -0,0 +1,14 @@
+{
+ "presets": [
+ "es2015"
+ ],
+ "plugins": [
+ "add-module-exports",
+ "transform-class-properties",
+ "transform-decorators-legacy",
+ "transform-object-assign",
+ "transform-object-rest-spread",
+ "transform-async-to-generator",
+ "transform-react-jsx"
+ ]
+}
\ No newline at end of file
diff --git a/plugins/talk-plugin-sort-most-replied/client/.babelrc b/plugins/talk-plugin-sort-most-replied/client/.babelrc
new file mode 100644
index 000000000..60be246eb
--- /dev/null
+++ b/plugins/talk-plugin-sort-most-replied/client/.babelrc
@@ -0,0 +1,14 @@
+{
+ "presets": [
+ "es2015"
+ ],
+ "plugins": [
+ "add-module-exports",
+ "transform-class-properties",
+ "transform-decorators-legacy",
+ "transform-object-assign",
+ "transform-object-rest-spread",
+ "transform-async-to-generator",
+ "transform-react-jsx"
+ ]
+}
\ No newline at end of file
diff --git a/plugins/talk-plugin-sort-most-respected/client/.babelrc b/plugins/talk-plugin-sort-most-respected/client/.babelrc
new file mode 100644
index 000000000..60be246eb
--- /dev/null
+++ b/plugins/talk-plugin-sort-most-respected/client/.babelrc
@@ -0,0 +1,14 @@
+{
+ "presets": [
+ "es2015"
+ ],
+ "plugins": [
+ "add-module-exports",
+ "transform-class-properties",
+ "transform-decorators-legacy",
+ "transform-object-assign",
+ "transform-object-rest-spread",
+ "transform-async-to-generator",
+ "transform-react-jsx"
+ ]
+}
\ No newline at end of file
diff --git a/plugins/talk-plugin-sort-newest/client/.babelrc b/plugins/talk-plugin-sort-newest/client/.babelrc
new file mode 100644
index 000000000..60be246eb
--- /dev/null
+++ b/plugins/talk-plugin-sort-newest/client/.babelrc
@@ -0,0 +1,14 @@
+{
+ "presets": [
+ "es2015"
+ ],
+ "plugins": [
+ "add-module-exports",
+ "transform-class-properties",
+ "transform-decorators-legacy",
+ "transform-object-assign",
+ "transform-object-rest-spread",
+ "transform-async-to-generator",
+ "transform-react-jsx"
+ ]
+}
\ No newline at end of file
diff --git a/plugins/talk-plugin-sort-oldest/client/.babelrc b/plugins/talk-plugin-sort-oldest/client/.babelrc
new file mode 100644
index 000000000..60be246eb
--- /dev/null
+++ b/plugins/talk-plugin-sort-oldest/client/.babelrc
@@ -0,0 +1,14 @@
+{
+ "presets": [
+ "es2015"
+ ],
+ "plugins": [
+ "add-module-exports",
+ "transform-class-properties",
+ "transform-decorators-legacy",
+ "transform-object-assign",
+ "transform-object-rest-spread",
+ "transform-async-to-generator",
+ "transform-react-jsx"
+ ]
+}
\ No newline at end of file
diff --git a/plugins/talk-plugin-toxic-comments/client/.babelrc b/plugins/talk-plugin-toxic-comments/client/.babelrc
new file mode 100644
index 000000000..60be246eb
--- /dev/null
+++ b/plugins/talk-plugin-toxic-comments/client/.babelrc
@@ -0,0 +1,14 @@
+{
+ "presets": [
+ "es2015"
+ ],
+ "plugins": [
+ "add-module-exports",
+ "transform-class-properties",
+ "transform-decorators-legacy",
+ "transform-object-assign",
+ "transform-object-rest-spread",
+ "transform-async-to-generator",
+ "transform-react-jsx"
+ ]
+}
\ No newline at end of file
diff --git a/plugins/talk-plugin-viewing-options/client/.babelrc b/plugins/talk-plugin-viewing-options/client/.babelrc
new file mode 100644
index 000000000..60be246eb
--- /dev/null
+++ b/plugins/talk-plugin-viewing-options/client/.babelrc
@@ -0,0 +1,14 @@
+{
+ "presets": [
+ "es2015"
+ ],
+ "plugins": [
+ "add-module-exports",
+ "transform-class-properties",
+ "transform-decorators-legacy",
+ "transform-object-assign",
+ "transform-object-rest-spread",
+ "transform-async-to-generator",
+ "transform-react-jsx"
+ ]
+}
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
index 29d4a2605..bc012d33e 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -572,6 +572,10 @@ babel-messages@^6.23.0:
dependencies:
babel-runtime "^6.22.0"
+babel-plugin-add-module-exports@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-0.2.1.tgz#9ae9a1f4a8dc67f0cdec4f4aeda1e43a5ff65e25"
+
babel-plugin-check-es2015-constants@^6.22.0:
version "6.22.0"
resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a"
@@ -3176,7 +3180,11 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6,
version "1.0.1"
resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
-graphql-anywhere@^3.0.0, graphql-anywhere@^3.0.1, graphql-anywhere@^3.1.0:
+graphql-anywhere@^3.0.0, graphql-anywhere@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/graphql-anywhere/-/graphql-anywhere-3.0.1.tgz#73531db861174c8f212eafb9f8e84944b38b4e5a"
+
+graphql-anywhere@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/graphql-anywhere/-/graphql-anywhere-3.1.0.tgz#3ea0d8e8646b5cee68035016a9a7557c15c21e96"