mirror of
https://github.com/grafana/grafana.git
synced 2025-07-31 04:22:13 +08:00

* i18n: adds grafana/i18n * Trigger build * chore: fix frontend lint * chore: refactor * chore: refactor * chore: expose getI18nInstance in shared deps * chore: refactors away second init * Trigger build * chore: updates after PR feedback * chore: sync with enterprise * chore: adds shouldUnescape * Trigger build * chore: makes functions internal * Trigger build * chore: fix for Pseudo locale * chore: bumps package version * chore: fix the version of i18n package
127 lines
5.3 KiB
TypeScript
127 lines
5.3 KiB
TypeScript
import jquery from 'jquery';
|
|
import 'vendor/flot/jquery.flot';
|
|
import 'vendor/flot/jquery.flot.selection';
|
|
import 'vendor/flot/jquery.flot.time';
|
|
import 'vendor/flot/jquery.flot.stack';
|
|
import 'vendor/flot/jquery.flot.stackpercent';
|
|
import 'vendor/flot/jquery.flot.fillbelow';
|
|
import 'vendor/flot/jquery.flot.crosshair';
|
|
import 'vendor/flot/jquery.flot.dashes';
|
|
import 'vendor/flot/jquery.flot.gauge';
|
|
|
|
import * as grafanaData from '@grafana/data';
|
|
import * as grafanaRuntime from '@grafana/runtime';
|
|
import * as grafanaUIraw from '@grafana/ui';
|
|
import TableModel from 'app/core/TableModel';
|
|
import config from 'app/core/config';
|
|
import { appEvents, contextSrv } from 'app/core/core';
|
|
import { BackendSrv, getBackendSrv } from 'app/core/services/backend_srv';
|
|
import impressionSrv from 'app/core/services/impression_srv';
|
|
import TimeSeries from 'app/core/time_series2';
|
|
import { arrayMove } from 'app/core/utils/arrayMove';
|
|
import * as flatten from 'app/core/utils/flatten';
|
|
import kbn from 'app/core/utils/kbn';
|
|
import * as ticks from 'app/core/utils/ticks';
|
|
|
|
// Help the 6.4 to 6.5 migration
|
|
// The base classes were moved from @grafana/ui to @grafana/data
|
|
// This exposes the same classes on both import paths
|
|
const grafanaUI: Record<string, unknown> = grafanaUIraw;
|
|
grafanaUI.PanelPlugin = grafanaData.PanelPlugin;
|
|
grafanaUI.DataSourcePlugin = grafanaData.DataSourcePlugin;
|
|
grafanaUI.AppPlugin = grafanaData.AppPlugin;
|
|
grafanaUI.DataSourceApi = grafanaData.DataSourceApi;
|
|
|
|
const jQueryFlotDeps = [
|
|
'jquery.flot.crosshair',
|
|
'jquery.flot.events',
|
|
'jquery.flot.fillbelow',
|
|
'jquery.flot.gauge',
|
|
'jquery.flot.pie',
|
|
'jquery.flot.selection',
|
|
'jquery.flot.stack',
|
|
'jquery.flot.stackpercent',
|
|
'jquery.flot.time',
|
|
'jquery.flot',
|
|
].reduce((acc, flotDep) => ({ ...acc, [flotDep]: { fakeDep: 1 } }), {});
|
|
|
|
export const sharedDependenciesMap = {
|
|
'@emotion/css': () => import('@emotion/css'),
|
|
'@emotion/react': () => import('@emotion/react'),
|
|
'@grafana/data': grafanaData,
|
|
'@grafana/data/unstable': () => import('@grafana/data/unstable'),
|
|
'@grafana/runtime': grafanaRuntime,
|
|
'@grafana/runtime/unstable': () => import('@grafana/runtime/unstable'),
|
|
'@grafana/slate-react': () => import('slate-react'),
|
|
'@grafana/ui': grafanaUI,
|
|
'@grafana/ui/unstable': () => import('@grafana/ui/unstable'),
|
|
'@kusto/monaco-kusto': () => import('@kusto/monaco-kusto'),
|
|
'app/core/app_events': {
|
|
default: appEvents,
|
|
__useDefault: true,
|
|
},
|
|
'app/core/config': {
|
|
default: config,
|
|
__useDefault: true,
|
|
},
|
|
'app/core/core': {
|
|
appEvents: appEvents,
|
|
contextSrv: contextSrv,
|
|
},
|
|
'app/core/services/backend_srv': {
|
|
BackendSrv,
|
|
getBackendSrv,
|
|
},
|
|
'app/core/table_model': { default: TableModel, __useDefault: true },
|
|
'app/core/time_series': { default: TimeSeries, __useDefault: true },
|
|
'app/core/time_series2': { default: TimeSeries, __useDefault: true },
|
|
'app/core/utils/datemath': grafanaData.dateMath,
|
|
'app/core/utils/flatten': flatten,
|
|
'app/core/utils/kbn': {
|
|
default: kbn,
|
|
__useDefault: true,
|
|
},
|
|
'app/core/utils/ticks': ticks,
|
|
'app/features/dashboard/impression_store': {
|
|
impressions: impressionSrv,
|
|
},
|
|
d3: () => import('d3'),
|
|
emotion: () => import('@emotion/css'),
|
|
// bundling grafana-ui in plugins requires sharing i18next state
|
|
i18next: () => import('@grafana/i18n/internal').then((module) => module.getI18nInstance()),
|
|
jquery: {
|
|
default: jquery,
|
|
__useDefault: true,
|
|
},
|
|
...jQueryFlotDeps,
|
|
// add move to lodash for backward compatabilty with plugins
|
|
lodash: () => import('lodash').then((module) => ({ ...module, move: arrayMove, __useDefault: true })),
|
|
moment: () => import('moment').then((module) => ({ ...module, __useDefault: true })),
|
|
prismjs: () => import('prismjs'),
|
|
react: () => import('react'),
|
|
'react-dom': () => import('react-dom'),
|
|
// bundling grafana-ui in plugins requires sharing react-inlinesvg for the icon cache
|
|
'react-inlinesvg': () => import('react-inlinesvg'),
|
|
'react-redux': () => import('react-redux'),
|
|
// Migration - React Router v5 -> v6
|
|
// =================================
|
|
// Plugins that still use "react-router-dom@v5" don't depend on react-router directly, so they will not use this import.
|
|
// (The react-router-dom@v5 that we expose for them depends on the "react-router" package internally from core.)
|
|
//
|
|
// Plugins that would like update to "react-router-dom@v6" will need to bundle "react-router-dom",
|
|
// however they cannot bundle "react-router" - this would mean that we have two instances of "react-router"
|
|
// in the app, which would casue issues. As the "react-router-dom-v5-compat" package re-exports everything from "react-router-dom@v6"
|
|
// which then re-exports everything from "react-router@v6", we are in the lucky state to be able to expose a compatible v6 version of the router to plugins by
|
|
// just exposing "react-router-dom-v5-compat".
|
|
//
|
|
// (This means that we are exposing two versions of the same package).
|
|
'react-router-dom': () => import('react-router-dom'),
|
|
'react-router': () => import('react-router-dom-v5-compat'),
|
|
redux: () => import('redux'),
|
|
rxjs: () => import('rxjs'),
|
|
'rxjs/operators': () => import('rxjs/operators'),
|
|
slate: () => import('slate'),
|
|
'slate-plain-serializer': () => import('slate-plain-serializer'),
|
|
'slate-react': () => import('slate-react'),
|
|
};
|