diff --git a/package.json b/package.json
index cd8659842f2..83025a3e8fc 100644
--- a/package.json
+++ b/package.json
@@ -77,7 +77,6 @@
"postcss-reporter": "^5.0.0",
"prettier": "1.7.3",
"react-test-renderer": "^16.0.0",
- "rxjs": "^5.4.3",
"sass-lint": "^1.10.2",
"sass-loader": "^6.0.6",
"sinon": "1.17.6",
@@ -119,6 +118,7 @@
"mousetrap": "^1.6.0",
"ngreact": "^0.4.1",
"react": "^16.0.0",
+ "rxjs": "^5.4.3",
"react-dom": "^16.0.0",
"remarkable": "^1.7.1",
"tether": "^1.4.0",
diff --git a/public/app/core/live/live_srv.ts b/public/app/core/live/live_srv.ts
index 8368992d052..8e808e60e1a 100644
--- a/public/app/core/live/live_srv.ts
+++ b/public/app/core/live/live_srv.ts
@@ -1,5 +1,3 @@
-///
-
import _ from 'lodash';
import config from 'app/core/config';
diff --git a/public/app/features/plugins/buit_in_plugins.ts b/public/app/features/plugins/buit_in_plugins.ts
new file mode 100644
index 00000000000..7ca32696388
--- /dev/null
+++ b/public/app/features/plugins/buit_in_plugins.ts
@@ -0,0 +1,47 @@
+import * as graphitePlugin from 'app/plugins/datasource/graphite/module';
+import * as cloudwatchPlugin from 'app/plugins/datasource/cloudwatch/module';
+import * as elasticsearchPlugin from 'app/plugins/datasource/elasticsearch/module';
+import * as opentsdbPlugin from 'app/plugins/datasource/opentsdb/module';
+import * as grafanaPlugin from 'app/plugins/datasource/grafana/module';
+import * as influxdbPlugin from 'app/plugins/datasource/influxdb/module';
+import * as mixedPlugin from 'app/plugins/datasource/mixed/module';
+import * as mysqlPlugin from 'app/plugins/datasource/mysql/module';
+import * as prometheusPlugin from 'app/plugins/datasource/prometheus/module';
+
+import * as textPanel from 'app/plugins/panel/text/module';
+import * as graphPanel from 'app/plugins/panel/graph/module';
+import * as dashListPanel from 'app/plugins/panel/dashlist/module';
+import * as pluginsListPanel from 'app/plugins/panel/pluginlist/module';
+import * as alertListPanel from 'app/plugins/panel/alertlist/module';
+import * as heatmapPanel from 'app/plugins/panel/heatmap/module';
+import * as tablePanel from 'app/plugins/panel/table/module';
+import * as singlestatPanel from 'app/plugins/panel/singlestat/module';
+import * as gettingStartedPanel from 'app/plugins/panel/gettingstarted/module';
+import * as testDataAppPlugin from 'app/plugins/app/testdata/module';
+import * as testDataDSPlugin from 'app/plugins/app/testdata/datasource/module';
+
+const builtInPlugins = {
+ "app/plugins/datasource/graphite/module": graphitePlugin,
+ "app/plugins/datasource/cloudwatch/module": cloudwatchPlugin,
+ "app/plugins/datasource/elasticsearch/module": elasticsearchPlugin,
+ "app/plugins/datasource/opentsdb/module": opentsdbPlugin,
+ "app/plugins/datasource/grafana/module": grafanaPlugin,
+ "app/plugins/datasource/influxdb/module": influxdbPlugin,
+ "app/plugins/datasource/mixed/module": mixedPlugin,
+ "app/plugins/datasource/mysql/module": mysqlPlugin,
+ "app/plugins/datasource/prometheus/module": prometheusPlugin,
+ "app/plugins/app/testdata/module": testDataAppPlugin,
+ "app/plugins/app/testdata/datasource/module": testDataDSPlugin,
+
+ "app/plugins/panel/text/module": textPanel,
+ "app/plugins/panel/graph/module": graphPanel,
+ "app/plugins/panel/dashlist/module": dashListPanel,
+ "app/plugins/panel/pluginlist/module": pluginsListPanel,
+ "app/plugins/panel/alertlist/module": alertListPanel,
+ "app/plugins/panel/heatmap/module": heatmapPanel,
+ "app/plugins/panel/table/module": tablePanel,
+ "app/plugins/panel/singlestat/module": singlestatPanel,
+ "app/plugins/panel/gettingstarted/module": gettingStartedPanel,
+};
+
+export default builtInPlugins;
diff --git a/public/app/features/plugins/plugin_loader.ts b/public/app/features/plugins/plugin_loader.ts
index ac6fc06ce28..8df27c0f320 100644
--- a/public/app/features/plugins/plugin_loader.ts
+++ b/public/app/features/plugins/plugin_loader.ts
@@ -7,53 +7,11 @@ import angular from 'angular';
import jquery from 'jquery';
import config from 'app/core/config';
import TimeSeries from 'app/core/time_series2';
+import TableModel from 'app/core/table_model';
+import {Observable} from 'rxjs/Observable';
+import {Subject} from 'rxjs/Subject';
import * as datemath from 'app/core/utils/datemath';
-
-import * as graphitePlugin from 'app/plugins/datasource/graphite/module';
-import * as cloudwatchPlugin from 'app/plugins/datasource/cloudwatch/module';
-import * as elasticsearchPlugin from 'app/plugins/datasource/elasticsearch/module';
-import * as opentsdbPlugin from 'app/plugins/datasource/opentsdb/module';
-import * as grafanaPlugin from 'app/plugins/datasource/grafana/module';
-import * as influxdbPlugin from 'app/plugins/datasource/influxdb/module';
-import * as mixedPlugin from 'app/plugins/datasource/mixed/module';
-import * as mysqlPlugin from 'app/plugins/datasource/mysql/module';
-import * as prometheusPlugin from 'app/plugins/datasource/prometheus/module';
-
-import * as textPanel from 'app/plugins/panel/text/module';
-import * as graphPanel from 'app/plugins/panel/graph/module';
-import * as dashListPanel from 'app/plugins/panel/dashlist/module';
-import * as pluginsListPanel from 'app/plugins/panel/pluginlist/module';
-import * as alertListPanel from 'app/plugins/panel/alertlist/module';
-import * as heatmapPanel from 'app/plugins/panel/heatmap/module';
-import * as tablePanel from 'app/plugins/panel/table/module';
-import * as singlestatPanel from 'app/plugins/panel/singlestat/module';
-import * as gettingStartedPanel from 'app/plugins/panel/gettingstarted/module';
-import * as testDataAppPlugin from 'app/plugins/app/testdata/module';
-import * as testDataDSPlugin from 'app/plugins/app/testdata/datasource/module';
-
-let builtInPlugins = {
- "app/plugins/datasource/graphite/module": graphitePlugin,
- "app/plugins/datasource/cloudwatch/module": cloudwatchPlugin,
- "app/plugins/datasource/elasticsearch/module": elasticsearchPlugin,
- "app/plugins/datasource/opentsdb/module": opentsdbPlugin,
- "app/plugins/datasource/grafana/module": grafanaPlugin,
- "app/plugins/datasource/influxdb/module": influxdbPlugin,
- "app/plugins/datasource/mixed/module": mixedPlugin,
- "app/plugins/datasource/mysql/module": mysqlPlugin,
- "app/plugins/datasource/prometheus/module": prometheusPlugin,
- "app/plugins/app/testdata/module": testDataAppPlugin,
- "app/plugins/app/testdata/datasource/module": testDataDSPlugin,
-
- "app/plugins/panel/text/module": textPanel,
- "app/plugins/panel/graph/module": graphPanel,
- "app/plugins/panel/dashlist/module": dashListPanel,
- "app/plugins/panel/pluginlist/module": pluginsListPanel,
- "app/plugins/panel/alertlist/module": alertListPanel,
- "app/plugins/panel/heatmap/module": heatmapPanel,
- "app/plugins/panel/table/module": tablePanel,
- "app/plugins/panel/singlestat/module": singlestatPanel,
- "app/plugins/panel/gettingstarted/module": gettingStartedPanel,
-};
+import builtInPlugins from './buit_in_plugins';
System.config({
baseURL: 'public',
@@ -89,12 +47,16 @@ exposeToPlugin('lodash', _);
exposeToPlugin('moment', moment);
exposeToPlugin('jquery', jquery);
exposeToPlugin('angular', angular);
+exposeToPlugin('rxjs/Subject', Subject);
+exposeToPlugin('rxjs/Observable', Observable);
+
exposeToPlugin('app/plugins/sdk', sdk);
exposeToPlugin('app/core/utils/datemath', datemath);
exposeToPlugin('app/core/utils/kbn', kbn);
exposeToPlugin('app/core/config', config);
exposeToPlugin('app/core/time_series', TimeSeries);
exposeToPlugin('app/core/time_series2', TimeSeries);
+exposeToPlugin('app/core/table_model', TableModel);
import 'vendor/flot/jquery.flot';
import 'vendor/flot/jquery.flot.selection';
@@ -107,7 +69,7 @@ import 'vendor/flot/jquery.flot.crosshair';
import 'vendor/flot/jquery.flot.dashes';
for (let flotDep of ['jquery.flot', 'jquery.flot.pie', 'jquery.flot.time']) {
- System.registerDynamic(flotDep, [], true, function(require, exports, module) { module.exports = {fakeDep: 1}; });
+ exposeToPlugin(flotDep, {fakeDep: 1});
}
export function importPluginModule(path: string): Promise {
diff --git a/scripts/webpack/dependencies.js b/scripts/webpack/dependencies.js
new file mode 100644
index 00000000000..3bdec887ae9
--- /dev/null
+++ b/scripts/webpack/dependencies.js
@@ -0,0 +1,14 @@
+'use strict';
+
+const pkg = require('../../package.json');
+const _ = require('lodash');
+
+let dependencies = Object.keys(pkg.dependencies);
+// remove jquery so we can add it first
+// remove rxjs so we can only depend on parts of it in code
+_.pull(dependencies, 'jquery', 'rxjs')
+
+// add jquery first
+dependencies.unshift('jquery');
+
+module.exports = dependencies;
diff --git a/scripts/webpack/webpack.dev.js b/scripts/webpack/webpack.dev.js
index 98ecb44e284..51b9a646175 100644
--- a/scripts/webpack/webpack.dev.js
+++ b/scripts/webpack/webpack.dev.js
@@ -8,16 +8,6 @@ const HtmlWebpackPlugin = require("html-webpack-plugin");
const ExtractTextPlugin = require("extract-text-webpack-plugin");
const WebpackCleanupPlugin = require('webpack-cleanup-plugin');
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
-const pkg = require('../../package.json');
-const _ = require('lodash');
-
-let dependencies = Object.keys(pkg.dependencies);
-// remove jquery
-dependencies = _.filter(dependencies, function(key) {
- return key !== 'jquery';
-});
-// add it first
-dependencies.unshift('jquery');
module.exports = merge(common, {
devtool: "source-map",
@@ -25,7 +15,7 @@ module.exports = merge(common, {
entry: {
dark: './public/sass/grafana.dark.scss',
light: './public/sass/grafana.light.scss',
- vendor: dependencies,
+ vendor: require('./dependencies'),
},
module: {
@@ -55,8 +45,8 @@ module.exports = merge(common, {
names: ['vendor', 'manifest'],
}),
new WebpackCleanupPlugin(),
- // new BundleAnalyzerPlugin({
- // analyzerPort: 8889
- // })
+ new BundleAnalyzerPlugin({
+ analyzerPort: 8889
+ })
]
});
diff --git a/scripts/webpack/webpack.prod.js b/scripts/webpack/webpack.prod.js
index c43b2056e47..6d254c7ab0b 100644
--- a/scripts/webpack/webpack.prod.js
+++ b/scripts/webpack/webpack.prod.js
@@ -8,8 +8,6 @@ const path = require('path');
const ngAnnotatePlugin = require('ng-annotate-webpack-plugin');
const HtmlWebpackPlugin = require("html-webpack-plugin");
const ExtractTextPlugin = require("extract-text-webpack-plugin");
-const pkg = require('../../package.json');
-let dependencies = Object.keys(pkg.dependencies);
module.exports = merge(common, {
devtool: "source-map",
@@ -17,7 +15,7 @@ module.exports = merge(common, {
entry: {
dark: './public/sass/grafana.dark.scss',
light: './public/sass/grafana.light.scss',
- vendor: dependencies,
+ vendor: require('./dependencies'),
},
module: {