@deephaven/app-utils 1.16.0 → 1.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/PluginsBootstrap.d.ts +6 -3
- package/dist/components/PluginsBootstrap.d.ts.map +1 -1
- package/dist/components/PluginsBootstrap.js +8 -2
- package/dist/components/PluginsBootstrap.js.map +1 -1
- package/dist/plugins/PluginUtils.d.ts.map +1 -1
- package/dist/plugins/PluginUtils.js +31 -8
- package/dist/plugins/PluginUtils.js.map +1 -1
- package/package.json +15 -15
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { type Plugin } from '@deephaven/plugin';
|
|
2
|
+
import { type Plugin, type MultiPlugin } from '@deephaven/plugin';
|
|
3
3
|
export type PluginsBootstrapProps = {
|
|
4
4
|
/**
|
|
5
5
|
* Base URL of the plugins to load.
|
|
6
6
|
*/
|
|
7
7
|
pluginsUrl: string;
|
|
8
|
-
/**
|
|
9
|
-
|
|
8
|
+
/**
|
|
9
|
+
* The core plugins to load.
|
|
10
|
+
* Can include MultiPlugin instances which will be flattened.
|
|
11
|
+
*/
|
|
12
|
+
getCorePlugins?: () => Promise<(Plugin | MultiPlugin)[]>;
|
|
10
13
|
/**
|
|
11
14
|
* The children to render wrapped with the PluginsContext.
|
|
12
15
|
* Note that it renders the children even if the plugins aren't loaded yet.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PluginsBootstrap.d.ts","sourceRoot":"","sources":["../../src/components/PluginsBootstrap.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,EACL,KAAK,MAAM,
|
|
1
|
+
{"version":3,"file":"PluginsBootstrap.d.ts","sourceRoot":"","sources":["../../src/components/PluginsBootstrap.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,EACL,KAAK,MAAM,EAIX,KAAK,WAAW,EACjB,MAAM,mBAAmB,CAAC;AAG3B,MAAM,MAAM,qBAAqB,GAAG;IAClC;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,CAAC,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;IAEzD;;;OAGG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,UAAU,EACV,cAAc,EACd,QAAQ,GACT,EAAE,qBAAqB,GAAG,GAAG,CAAC,OAAO,CAkCrC;AAED,eAAe,gBAAgB,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
2
2
|
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
3
3
|
import React, { useEffect, useState } from 'react';
|
|
4
|
-
import { PluginsContext } from '@deephaven/plugin';
|
|
4
|
+
import { PluginsContext, isMultiPlugin } from '@deephaven/plugin';
|
|
5
5
|
import { loadModulePlugins } from "../plugins/index.js";
|
|
6
6
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
7
|
/**
|
|
@@ -25,7 +25,13 @@ export function PluginsBootstrap(_ref) {
|
|
|
25
25
|
var corePlugins = (_yield$getCorePlugins = yield getCorePlugins === null || getCorePlugins === void 0 ? void 0 : getCorePlugins()) !== null && _yield$getCorePlugins !== void 0 ? _yield$getCorePlugins : [];
|
|
26
26
|
var pluginModules = yield loadModulePlugins(pluginsUrl);
|
|
27
27
|
if (!isCanceled) {
|
|
28
|
-
|
|
28
|
+
// Flatten MultiPlugins in core plugins
|
|
29
|
+
var corePluginPairs = corePlugins.flatMap(plugin => {
|
|
30
|
+
if (isMultiPlugin(plugin)) {
|
|
31
|
+
return plugin.plugins.map(innerPlugin => [innerPlugin.name, innerPlugin]);
|
|
32
|
+
}
|
|
33
|
+
return [[plugin.name, plugin]];
|
|
34
|
+
});
|
|
29
35
|
setPlugins(new Map([...corePluginPairs, ...pluginModules]));
|
|
30
36
|
}
|
|
31
37
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PluginsBootstrap.js","names":["React","useEffect","useState","PluginsContext","loadModulePlugins","jsx","_jsx","PluginsBootstrap","_ref","pluginsUrl","getCorePlugins","children","plugins","setPlugins","initPlugins","isCanceled","loadPlugins","_loadPlugins","apply","arguments","_asyncToGenerator","_yield$getCorePlugins","corePlugins","pluginModules","corePluginPairs","
|
|
1
|
+
{"version":3,"file":"PluginsBootstrap.js","names":["React","useEffect","useState","PluginsContext","isMultiPlugin","loadModulePlugins","jsx","_jsx","PluginsBootstrap","_ref","pluginsUrl","getCorePlugins","children","plugins","setPlugins","initPlugins","isCanceled","loadPlugins","_loadPlugins","apply","arguments","_asyncToGenerator","_yield$getCorePlugins","corePlugins","pluginModules","corePluginPairs","flatMap","plugin","map","innerPlugin","name","Map","Provider","value"],"sources":["../../src/components/PluginsBootstrap.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport {\n type Plugin,\n type PluginModuleMap,\n PluginsContext,\n isMultiPlugin,\n type MultiPlugin,\n} from '@deephaven/plugin';\nimport { loadModulePlugins } from '../plugins';\n\nexport type PluginsBootstrapProps = {\n /**\n * Base URL of the plugins to load.\n */\n pluginsUrl: string;\n\n /**\n * The core plugins to load.\n * Can include MultiPlugin instances which will be flattened.\n */\n getCorePlugins?: () => Promise<(Plugin | MultiPlugin)[]>;\n\n /**\n * The children to render wrapped with the PluginsContext.\n * Note that it renders the children even if the plugins aren't loaded yet.\n */\n children: React.ReactNode;\n};\n\n/**\n * PluginsBootstrap component. Handles loading the plugins.\n */\nexport function PluginsBootstrap({\n pluginsUrl,\n getCorePlugins,\n children,\n}: PluginsBootstrapProps): JSX.Element {\n const [plugins, setPlugins] = useState<PluginModuleMap | null>(null);\n useEffect(\n function initPlugins() {\n let isCanceled = false;\n async function loadPlugins(): Promise<void> {\n const corePlugins = (await getCorePlugins?.()) ?? [];\n const pluginModules = await loadModulePlugins(pluginsUrl);\n if (!isCanceled) {\n // Flatten MultiPlugins in core plugins\n const corePluginPairs = corePlugins.flatMap(plugin => {\n if (isMultiPlugin(plugin)) {\n return plugin.plugins.map(\n innerPlugin => [innerPlugin.name, innerPlugin] as const\n );\n }\n return [[plugin.name, plugin] as const];\n });\n setPlugins(new Map([...corePluginPairs, ...pluginModules]));\n }\n }\n loadPlugins();\n return () => {\n isCanceled = true;\n };\n },\n [pluginsUrl, getCorePlugins]\n );\n\n return (\n <PluginsContext.Provider value={plugins}>\n {children}\n </PluginsContext.Provider>\n );\n}\n\nexport default PluginsBootstrap;\n"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAClD,SAGEC,cAAc,EACdC,aAAa,QAER,mBAAmB;AAAC,SAClBC,iBAAiB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAqB1B;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAAAC,IAAA,EAIO;EAAA,IAJN;IAC/BC,UAAU;IACVC,cAAc;IACdC;EACqB,CAAC,GAAAH,IAAA;EACtB,IAAM,CAACI,OAAO,EAAEC,UAAU,CAAC,GAAGZ,QAAQ,CAAyB,IAAI,CAAC;EACpED,SAAS,CACP,SAASc,WAAWA,CAAA,EAAG;IACrB,IAAIC,UAAU,GAAG,KAAK;IAAC,SACRC,WAAWA,CAAA;MAAA,OAAAC,YAAA,CAAAC,KAAA,OAAAC,SAAA;IAAA;IAAA,SAAAF,aAAA;MAAAA,YAAA,GAAAG,iBAAA,CAA1B,aAA4C;QAAA,IAAAC,qBAAA;QAC1C,IAAMC,WAAW,IAAAD,qBAAA,SAAUX,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAG,CAAC,cAAAW,qBAAA,cAAAA,qBAAA,GAAK,EAAE;QACpD,IAAME,aAAa,SAASnB,iBAAiB,CAACK,UAAU,CAAC;QACzD,IAAI,CAACM,UAAU,EAAE;UACf;UACA,IAAMS,eAAe,GAAGF,WAAW,CAACG,OAAO,CAACC,MAAM,IAAI;YACpD,IAAIvB,aAAa,CAACuB,MAAM,CAAC,EAAE;cACzB,OAAOA,MAAM,CAACd,OAAO,CAACe,GAAG,CACvBC,WAAW,IAAI,CAACA,WAAW,CAACC,IAAI,EAAED,WAAW,CAC/C,CAAC;YACH;YACA,OAAO,CAAC,CAACF,MAAM,CAACG,IAAI,EAAEH,MAAM,CAAC,CAAU;UACzC,CAAC,CAAC;UACFb,UAAU,CAAC,IAAIiB,GAAG,CAAC,CAAC,GAAGN,eAAe,EAAE,GAAGD,aAAa,CAAC,CAAC,CAAC;QAC7D;MACF,CAAC;MAAA,OAAAN,YAAA,CAAAC,KAAA,OAAAC,SAAA;IAAA;IACDH,WAAW,CAAC,CAAC;IACb,OAAO,MAAM;MACXD,UAAU,GAAG,IAAI;IACnB,CAAC;EACH,CAAC,EACD,CAACN,UAAU,EAAEC,cAAc,CAC7B,CAAC;EAED,oBACEJ,IAAA,CAACJ,cAAc,CAAC6B,QAAQ;IAACC,KAAK,EAAEpB,OAAQ;IAAAD,QAAA,EACrCA;EAAQ,CACc,CAAC;AAE9B;AAEA,eAAeJ,gBAAgB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PluginUtils.d.ts","sourceRoot":"","sources":["../../src/plugins/PluginUtils.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,mBAAmB,EAExB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,MAAM,EAIX,KAAK,YAAY,
|
|
1
|
+
{"version":3,"file":"PluginUtils.d.ts","sourceRoot":"","sources":["../../src/plugins/PluginUtils.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,mBAAmB,EAExB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,MAAM,EAIX,KAAK,YAAY,EAGlB,MAAM,mBAAmB,CAAC;AAK3B,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAAE,OAAO,EAAE,wBAAwB,EAAE,CAAA;CAAE,CAAC;AAErE;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,YAAY,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAG7C;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAUvE;AAUD,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,YAAY,GAAG,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GACjD,YAAY,GAAG,IAAI,CAerB;AAuBD;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,eAAe,CAAC,CAiD1B;AAED,wBAAgB,eAAe,CAC7B,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACpC,MAAM,EAAE,CAEV;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,eAAe,EAC1B,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACrC,WAAW,6CAAmD,GAC7D,mBAAmB,CAwCrB"}
|
|
@@ -6,7 +6,7 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
|
|
|
6
6
|
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
7
7
|
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
8
8
|
import Log from '@deephaven/log';
|
|
9
|
-
import { isAuthPlugin, PluginType, isLegacyAuthPlugin, isLegacyPlugin, isPlugin } from '@deephaven/plugin';
|
|
9
|
+
import { isAuthPlugin, PluginType, isLegacyAuthPlugin, isLegacyPlugin, isPlugin, isMultiPlugin } from '@deephaven/plugin';
|
|
10
10
|
import loadRemoteModule from "./loadRemoteModule.js";
|
|
11
11
|
var log = Log.module('@deephaven/app-utils.PluginUtils');
|
|
12
12
|
/**
|
|
@@ -67,6 +67,22 @@ export function getPluginModuleValue(value) {
|
|
|
67
67
|
return null;
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
+
/**
|
|
71
|
+
* Register a plugin in the plugin map, logging a warning if a plugin with the same name already exists.
|
|
72
|
+
* @param pluginMap The plugin map to register the plugin in
|
|
73
|
+
* @param name The name to register the plugin under
|
|
74
|
+
* @param plugin The plugin to register
|
|
75
|
+
* @param version Optional version to attach to the plugin
|
|
76
|
+
*/
|
|
77
|
+
function registerPlugin(pluginMap, name, plugin, version) {
|
|
78
|
+
if (pluginMap.has(name)) {
|
|
79
|
+
log.warn("Plugin '".concat(name, "' is already registered. The existing plugin will be replaced."));
|
|
80
|
+
}
|
|
81
|
+
pluginMap.set(name, _objectSpread(_objectSpread({}, plugin), {}, {
|
|
82
|
+
version
|
|
83
|
+
}));
|
|
84
|
+
}
|
|
85
|
+
|
|
70
86
|
/**
|
|
71
87
|
* Load all plugin modules available based on the manifest file at the provided base URL
|
|
72
88
|
* @param modulePluginsUrl The base URL of the module plugins to load
|
|
@@ -95,24 +111,31 @@ function _loadModulePlugins() {
|
|
|
95
111
|
}
|
|
96
112
|
var pluginModules = yield Promise.allSettled(pluginPromises);
|
|
97
113
|
var pluginMap = new Map();
|
|
98
|
-
|
|
114
|
+
var _loop = function* _loop() {
|
|
99
115
|
var module = pluginModules[_i];
|
|
100
116
|
var {
|
|
101
|
-
name
|
|
117
|
+
name,
|
|
102
118
|
version
|
|
103
119
|
} = manifest.plugins[_i];
|
|
104
120
|
if (module.status === 'fulfilled') {
|
|
105
121
|
var moduleValue = getPluginModuleValue(module.value);
|
|
106
122
|
if (moduleValue == null) {
|
|
107
|
-
log.error("Plugin '".concat(
|
|
123
|
+
log.error("Plugin '".concat(name, "' is missing an exported value."));
|
|
124
|
+
} else if (isMultiPlugin(moduleValue)) {
|
|
125
|
+
// Flatten MultiPlugin: register each inner plugin by its own name
|
|
126
|
+
log.debug("MultiPlugin '".concat(name, "' contains ").concat(moduleValue.plugins.length, " plugins"));
|
|
127
|
+
moduleValue.plugins.forEach(innerPlugin => {
|
|
128
|
+
registerPlugin(pluginMap, innerPlugin.name, innerPlugin, version);
|
|
129
|
+
});
|
|
108
130
|
} else {
|
|
109
|
-
pluginMap
|
|
110
|
-
version
|
|
111
|
-
}));
|
|
131
|
+
registerPlugin(pluginMap, name, moduleValue, version);
|
|
112
132
|
}
|
|
113
133
|
} else {
|
|
114
|
-
log.error("Unable to load plugin '".concat(
|
|
134
|
+
log.error("Unable to load plugin '".concat(name, "'"), module.reason);
|
|
115
135
|
}
|
|
136
|
+
};
|
|
137
|
+
for (var _i = 0; _i < pluginModules.length; _i += 1) {
|
|
138
|
+
yield* _loop();
|
|
116
139
|
}
|
|
117
140
|
log.info('Plugins loaded:', pluginMap);
|
|
118
141
|
return pluginMap;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PluginUtils.js","names":["Log","isAuthPlugin","PluginType","isLegacyAuthPlugin","isLegacyPlugin","isPlugin","loadRemoteModule","log","module","loadModulePlugin","_x","_loadModulePlugin","apply","arguments","_asyncToGenerator","pluginUrl","myModule","loadJson","_x2","_loadJson","jsonUrl","res","fetch","ok","Error","statusText","json","_unused","hasDefaultExport","value","default","getPluginModuleValue","loadModulePlugins","_x3","_loadModulePlugins","modulePluginsUrl","debug","manifest","concat","Array","isArray","plugins","pluginPromises","i","length","name","main","pluginMainUrl","push","pluginModules","Promise","allSettled","pluginMap","Map","version","status","moduleValue","error","set","_objectSpread","reason","info","e","getAuthHandlers","authConfigValues","_authConfigValues$get","_authConfigValues$get2","get","split","getAuthPluginComponent","corePlugins","undefined","authHandlers","authPlugins","entries","filter","_ref","plugin","map","_ref2","type","AUTH_PLUGIN","component","AuthPlugin","Component","isAvailable","availableAuthPlugins","_ref3","warn","_ref4","join"],"sources":["../../src/plugins/PluginUtils.tsx"],"sourcesContent":["import Log from '@deephaven/log';\nimport {\n type PluginModuleMap,\n type AuthPlugin,\n type AuthPluginComponent,\n isAuthPlugin,\n type LegacyAuthPlugin,\n type LegacyPlugin,\n type Plugin,\n PluginType,\n isLegacyAuthPlugin,\n isLegacyPlugin,\n type PluginModule,\n isPlugin,\n} from '@deephaven/plugin';\nimport loadRemoteModule from './loadRemoteModule';\n\nconst log = Log.module('@deephaven/app-utils.PluginUtils');\n\nexport type PluginManifestPluginInfo = {\n name: string;\n main: string;\n version: string;\n};\n\nexport type PluginManifest = { plugins: PluginManifestPluginInfo[] };\n\n/**\n * Imports a commonjs plugin module from the provided URL\n * @param pluginUrl The URL of the plugin to load\n * @returns The loaded module\n */\nexport async function loadModulePlugin(\n pluginUrl: string\n): Promise<LegacyPlugin | { default: Plugin }> {\n const myModule = await loadRemoteModule(pluginUrl);\n return myModule;\n}\n\n/**\n * Loads a JSON file and returns the JSON object\n * @param jsonUrl The URL of the JSON file to load\n * @returns The JSON object of the manifest file\n */\nexport async function loadJson(jsonUrl: string): Promise<PluginManifest> {\n const res = await fetch(jsonUrl);\n if (!res.ok) {\n throw new Error(res.statusText);\n }\n try {\n return await res.json();\n } catch {\n throw new Error('Could not be parsed as JSON');\n }\n}\n\nfunction hasDefaultExport(value: unknown): value is { default: Plugin } {\n return (\n typeof value === 'object' &&\n value != null &&\n typeof (value as { default?: unknown }).default === 'object'\n );\n}\n\nexport function getPluginModuleValue(\n value: LegacyPlugin | Plugin | { default: Plugin }\n): PluginModule | null {\n // TypeScript builds CJS default exports differently depending on\n // whether there are also named exports. If the default is the only\n // export, it will be the value. If there are also named exports,\n // it will be assigned to the `default` property on the value.\n if (isPlugin(value)) {\n return value;\n }\n if (hasDefaultExport(value) && isPlugin(value.default)) {\n return value.default;\n }\n if (isLegacyPlugin(value)) {\n return value;\n }\n return null;\n}\n\n/**\n * Load all plugin modules available based on the manifest file at the provided base URL\n * @param modulePluginsUrl The base URL of the module plugins to load\n * @returns A map from the name of the plugin to the plugin module that was loaded\n */\nexport async function loadModulePlugins(\n modulePluginsUrl: string\n): Promise<PluginModuleMap> {\n log.debug('Loading plugins...');\n try {\n const manifest = await loadJson(`${modulePluginsUrl}/manifest.json`);\n\n if (!Array.isArray(manifest.plugins)) {\n throw new Error('Plugin manifest JSON does not contain plugins array');\n }\n\n log.debug('Plugin manifest loaded:', manifest);\n const pluginPromises: Promise<LegacyPlugin | { default: Plugin }>[] = [];\n for (let i = 0; i < manifest.plugins.length; i += 1) {\n const { name, main } = manifest.plugins[i];\n const pluginMainUrl = `${modulePluginsUrl}/${name}/${main}`;\n pluginPromises.push(loadModulePlugin(pluginMainUrl));\n }\n\n const pluginModules = await Promise.allSettled(pluginPromises);\n\n const pluginMap: PluginModuleMap = new Map();\n for (let i = 0; i < pluginModules.length; i += 1) {\n const module = pluginModules[i];\n const { name, version } = manifest.plugins[i];\n if (module.status === 'fulfilled') {\n const moduleValue = getPluginModuleValue(module.value);\n if (moduleValue == null) {\n log.error(`Plugin '${name}' is missing an exported value.`);\n } else {\n pluginMap.set(name, { ...moduleValue, version });\n }\n } else {\n log.error(`Unable to load plugin '${name}'`, module.reason);\n }\n }\n log.info('Plugins loaded:', pluginMap);\n\n return pluginMap;\n } catch (e) {\n log.error('Unable to load plugins:', e);\n return new Map();\n }\n}\n\nexport function getAuthHandlers(\n authConfigValues: Map<string, string>\n): string[] {\n return authConfigValues.get('AuthHandlers')?.split(',') ?? [];\n}\n\n/**\n * Get the auth plugin component from the plugin map and current configuration\n * Throws if no auth plugin is available\n *\n * @param pluginMap Map of plugins loaded from the server\n * @param authConfigValues Auth config values from the server\n * @param corePlugins Map of core auth plugins to include in the list. They are added after the loaded plugins\n * @returns The auth plugin component to render\n */\nexport function getAuthPluginComponent(\n pluginMap: PluginModuleMap,\n authConfigValues: Map<string, string>,\n corePlugins = new Map<string, AuthPlugin | LegacyAuthPlugin>()\n): AuthPluginComponent {\n const authHandlers = getAuthHandlers(authConfigValues);\n // User plugins take priority over core plugins\n const authPlugins = (\n [...pluginMap.entries(), ...corePlugins.entries()].filter(\n ([, plugin]) => isAuthPlugin(plugin) || isLegacyAuthPlugin(plugin)\n ) as [string, AuthPlugin | LegacyAuthPlugin][]\n ).map(([name, plugin]) => {\n if (isLegacyAuthPlugin(plugin)) {\n return {\n type: PluginType.AUTH_PLUGIN,\n name,\n component: plugin.AuthPlugin.Component,\n isAvailable: plugin.AuthPlugin.isAvailable,\n };\n }\n\n return plugin;\n });\n\n // Filter the available auth plugins\n const availableAuthPlugins = authPlugins.filter(({ isAvailable }) =>\n isAvailable(authHandlers, authConfigValues)\n );\n\n if (availableAuthPlugins.length === 0) {\n throw new Error(\n `No login plugins found, please register a login plugin for auth handlers: ${authHandlers}`\n );\n } else if (availableAuthPlugins.length > 1) {\n log.warn(\n 'More than one login plugin available, will use the first one: ',\n availableAuthPlugins.map(({ name }) => name).join(', ')\n );\n }\n\n const { name, component } = availableAuthPlugins[0];\n log.info('Using LoginPlugin', name);\n\n return component;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"PluginUtils.js","names":["Log","isAuthPlugin","PluginType","isLegacyAuthPlugin","isLegacyPlugin","isPlugin","isMultiPlugin","loadRemoteModule","log","module","loadModulePlugin","_x","_loadModulePlugin","apply","arguments","_asyncToGenerator","pluginUrl","myModule","loadJson","_x2","_loadJson","jsonUrl","res","fetch","ok","Error","statusText","json","_unused","hasDefaultExport","value","default","getPluginModuleValue","registerPlugin","pluginMap","name","plugin","version","has","warn","concat","set","_objectSpread","loadModulePlugins","_x3","_loadModulePlugins","modulePluginsUrl","debug","manifest","Array","isArray","plugins","pluginPromises","i","length","main","pluginMainUrl","push","pluginModules","Promise","allSettled","Map","_loop","status","moduleValue","error","forEach","innerPlugin","reason","info","e","getAuthHandlers","authConfigValues","_authConfigValues$get","_authConfigValues$get2","get","split","getAuthPluginComponent","corePlugins","undefined","authHandlers","authPlugins","entries","filter","_ref","map","_ref2","type","AUTH_PLUGIN","component","AuthPlugin","Component","isAvailable","availableAuthPlugins","_ref3","_ref4","join"],"sources":["../../src/plugins/PluginUtils.tsx"],"sourcesContent":["import Log from '@deephaven/log';\nimport {\n type PluginModuleMap,\n type AuthPlugin,\n type AuthPluginComponent,\n isAuthPlugin,\n type LegacyAuthPlugin,\n type LegacyPlugin,\n type Plugin,\n PluginType,\n isLegacyAuthPlugin,\n isLegacyPlugin,\n type PluginModule,\n isPlugin,\n isMultiPlugin,\n} from '@deephaven/plugin';\nimport loadRemoteModule from './loadRemoteModule';\n\nconst log = Log.module('@deephaven/app-utils.PluginUtils');\n\nexport type PluginManifestPluginInfo = {\n name: string;\n main: string;\n version: string;\n};\n\nexport type PluginManifest = { plugins: PluginManifestPluginInfo[] };\n\n/**\n * Imports a commonjs plugin module from the provided URL\n * @param pluginUrl The URL of the plugin to load\n * @returns The loaded module\n */\nexport async function loadModulePlugin(\n pluginUrl: string\n): Promise<LegacyPlugin | { default: Plugin }> {\n const myModule = await loadRemoteModule(pluginUrl);\n return myModule;\n}\n\n/**\n * Loads a JSON file and returns the JSON object\n * @param jsonUrl The URL of the JSON file to load\n * @returns The JSON object of the manifest file\n */\nexport async function loadJson(jsonUrl: string): Promise<PluginManifest> {\n const res = await fetch(jsonUrl);\n if (!res.ok) {\n throw new Error(res.statusText);\n }\n try {\n return await res.json();\n } catch {\n throw new Error('Could not be parsed as JSON');\n }\n}\n\nfunction hasDefaultExport(value: unknown): value is { default: Plugin } {\n return (\n typeof value === 'object' &&\n value != null &&\n typeof (value as { default?: unknown }).default === 'object'\n );\n}\n\nexport function getPluginModuleValue(\n value: LegacyPlugin | Plugin | { default: Plugin }\n): PluginModule | null {\n // TypeScript builds CJS default exports differently depending on\n // whether there are also named exports. If the default is the only\n // export, it will be the value. If there are also named exports,\n // it will be assigned to the `default` property on the value.\n if (isPlugin(value)) {\n return value;\n }\n if (hasDefaultExport(value) && isPlugin(value.default)) {\n return value.default;\n }\n if (isLegacyPlugin(value)) {\n return value;\n }\n return null;\n}\n\n/**\n * Register a plugin in the plugin map, logging a warning if a plugin with the same name already exists.\n * @param pluginMap The plugin map to register the plugin in\n * @param name The name to register the plugin under\n * @param plugin The plugin to register\n * @param version Optional version to attach to the plugin\n */\nfunction registerPlugin(\n pluginMap: PluginModuleMap,\n name: string,\n plugin: PluginModule,\n version?: string\n): void {\n if (pluginMap.has(name)) {\n log.warn(\n `Plugin '${name}' is already registered. The existing plugin will be replaced.`\n );\n }\n pluginMap.set(name, { ...plugin, version });\n}\n\n/**\n * Load all plugin modules available based on the manifest file at the provided base URL\n * @param modulePluginsUrl The base URL of the module plugins to load\n * @returns A map from the name of the plugin to the plugin module that was loaded\n */\nexport async function loadModulePlugins(\n modulePluginsUrl: string\n): Promise<PluginModuleMap> {\n log.debug('Loading plugins...');\n try {\n const manifest = await loadJson(`${modulePluginsUrl}/manifest.json`);\n\n if (!Array.isArray(manifest.plugins)) {\n throw new Error('Plugin manifest JSON does not contain plugins array');\n }\n\n log.debug('Plugin manifest loaded:', manifest);\n const pluginPromises: Promise<LegacyPlugin | { default: Plugin }>[] = [];\n for (let i = 0; i < manifest.plugins.length; i += 1) {\n const { name, main } = manifest.plugins[i];\n const pluginMainUrl = `${modulePluginsUrl}/${name}/${main}`;\n pluginPromises.push(loadModulePlugin(pluginMainUrl));\n }\n\n const pluginModules = await Promise.allSettled(pluginPromises);\n\n const pluginMap: PluginModuleMap = new Map();\n for (let i = 0; i < pluginModules.length; i += 1) {\n const module = pluginModules[i];\n const { name, version } = manifest.plugins[i];\n if (module.status === 'fulfilled') {\n const moduleValue = getPluginModuleValue(module.value);\n if (moduleValue == null) {\n log.error(`Plugin '${name}' is missing an exported value.`);\n } else if (isMultiPlugin(moduleValue)) {\n // Flatten MultiPlugin: register each inner plugin by its own name\n log.debug(\n `MultiPlugin '${name}' contains ${moduleValue.plugins.length} plugins`\n );\n moduleValue.plugins.forEach(innerPlugin => {\n registerPlugin(pluginMap, innerPlugin.name, innerPlugin, version);\n });\n } else {\n registerPlugin(pluginMap, name, moduleValue, version);\n }\n } else {\n log.error(`Unable to load plugin '${name}'`, module.reason);\n }\n }\n log.info('Plugins loaded:', pluginMap);\n\n return pluginMap;\n } catch (e) {\n log.error('Unable to load plugins:', e);\n return new Map();\n }\n}\n\nexport function getAuthHandlers(\n authConfigValues: Map<string, string>\n): string[] {\n return authConfigValues.get('AuthHandlers')?.split(',') ?? [];\n}\n\n/**\n * Get the auth plugin component from the plugin map and current configuration\n * Throws if no auth plugin is available\n *\n * @param pluginMap Map of plugins loaded from the server\n * @param authConfigValues Auth config values from the server\n * @param corePlugins Map of core auth plugins to include in the list. They are added after the loaded plugins\n * @returns The auth plugin component to render\n */\nexport function getAuthPluginComponent(\n pluginMap: PluginModuleMap,\n authConfigValues: Map<string, string>,\n corePlugins = new Map<string, AuthPlugin | LegacyAuthPlugin>()\n): AuthPluginComponent {\n const authHandlers = getAuthHandlers(authConfigValues);\n // User plugins take priority over core plugins\n const authPlugins = (\n [...pluginMap.entries(), ...corePlugins.entries()].filter(\n ([, plugin]) => isAuthPlugin(plugin) || isLegacyAuthPlugin(plugin)\n ) as [string, AuthPlugin | LegacyAuthPlugin][]\n ).map(([name, plugin]) => {\n if (isLegacyAuthPlugin(plugin)) {\n return {\n type: PluginType.AUTH_PLUGIN,\n name,\n component: plugin.AuthPlugin.Component,\n isAvailable: plugin.AuthPlugin.isAvailable,\n };\n }\n\n return plugin;\n });\n\n // Filter the available auth plugins\n const availableAuthPlugins = authPlugins.filter(({ isAvailable }) =>\n isAvailable(authHandlers, authConfigValues)\n );\n\n if (availableAuthPlugins.length === 0) {\n throw new Error(\n `No login plugins found, please register a login plugin for auth handlers: ${authHandlers}`\n );\n } else if (availableAuthPlugins.length > 1) {\n log.warn(\n 'More than one login plugin available, will use the first one: ',\n availableAuthPlugins.map(({ name }) => name).join(', ')\n );\n }\n\n const { name, component } = availableAuthPlugins[0];\n log.info('Using LoginPlugin', name);\n\n return component;\n}\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/app-utils",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.17.0",
|
|
4
4
|
"description": "Deephaven App Utils",
|
|
5
5
|
"author": "Deephaven Data Labs LLC",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -26,24 +26,24 @@
|
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
28
|
"@adobe/react-spectrum": "3.38.0",
|
|
29
|
-
"@deephaven/auth-plugins": "^1.
|
|
30
|
-
"@deephaven/chart": "^1.
|
|
31
|
-
"@deephaven/components": "^1.
|
|
32
|
-
"@deephaven/console": "^1.
|
|
33
|
-
"@deephaven/dashboard": "^1.
|
|
34
|
-
"@deephaven/dashboard-core-plugins": "^1.
|
|
35
|
-
"@deephaven/file-explorer": "^1.
|
|
36
|
-
"@deephaven/golden-layout": "^1.
|
|
29
|
+
"@deephaven/auth-plugins": "^1.17.0",
|
|
30
|
+
"@deephaven/chart": "^1.17.0",
|
|
31
|
+
"@deephaven/components": "^1.17.0",
|
|
32
|
+
"@deephaven/console": "^1.17.0",
|
|
33
|
+
"@deephaven/dashboard": "^1.17.0",
|
|
34
|
+
"@deephaven/dashboard-core-plugins": "^1.17.0",
|
|
35
|
+
"@deephaven/file-explorer": "^1.17.0",
|
|
36
|
+
"@deephaven/golden-layout": "^1.17.0",
|
|
37
37
|
"@deephaven/icons": "^1.2.0",
|
|
38
|
-
"@deephaven/iris-grid": "^1.
|
|
39
|
-
"@deephaven/jsapi-bootstrap": "^1.
|
|
40
|
-
"@deephaven/jsapi-components": "^1.
|
|
38
|
+
"@deephaven/iris-grid": "^1.17.0",
|
|
39
|
+
"@deephaven/jsapi-bootstrap": "^1.17.0",
|
|
40
|
+
"@deephaven/jsapi-components": "^1.17.0",
|
|
41
41
|
"@deephaven/jsapi-types": "^1.0.0-dev0.40.4",
|
|
42
42
|
"@deephaven/jsapi-utils": "^1.16.0",
|
|
43
43
|
"@deephaven/log": "^1.8.0",
|
|
44
|
-
"@deephaven/plugin": "^1.
|
|
44
|
+
"@deephaven/plugin": "^1.17.0",
|
|
45
45
|
"@deephaven/react-hooks": "^1.14.0",
|
|
46
|
-
"@deephaven/redux": "^1.
|
|
46
|
+
"@deephaven/redux": "^1.17.0",
|
|
47
47
|
"@deephaven/storage": "^1.8.0",
|
|
48
48
|
"@deephaven/utils": "^1.10.0",
|
|
49
49
|
"@paciolan/remote-component": "2.13.0",
|
|
@@ -68,5 +68,5 @@
|
|
|
68
68
|
"publishConfig": {
|
|
69
69
|
"access": "public"
|
|
70
70
|
},
|
|
71
|
-
"gitHead": "
|
|
71
|
+
"gitHead": "a0ef312b2294f1452952cf7a9c95636dd9f65a59"
|
|
72
72
|
}
|