From 8a0c1e8a4bc14e16ae7c789b307df4c582b0a667 Mon Sep 17 00:00:00 2001 From: Hornwitser Date: Tue, 17 Aug 2021 01:03:24 +0200 Subject: [PATCH] Use single entrypoint for lib in web interface In order to import a path inside packages/lib/ in the webpack shared module environment it has to be declared as shared in both the web_ui webpack config and the plugin's webpack config. This is rather error prone and easy to miss. Move the burden of specifying which entrypoints are valid in lib to lib itself by changing all imports in the web interface code to import from @clusterio/lib instead sub paths. For web code this means imports is done like this from now on: import { libConfig, libLink } from "@clusterio/lib"; For info.js which has to be loadable by both Node.js and web code the imports are done as follows: const { libConfig, libLink } = require("@clusterio/lib"); While the Node.js only code can either continue to import sub paths directly or use the info.js style. --- .eslintrc.js | 2 +- docs/writing-plugins.md | 2 +- packages/lib/browser.js | 11 +++++ packages/lib/index.js | 47 +++++++++++++++++++ packages/lib/package.json | 1 + packages/master/webpack.config.js | 9 +--- packages/web_ui/src/bootstrap.jsx | 5 +- packages/web_ui/src/components/App.jsx | 3 +- .../src/components/AssignInstanceModal.jsx | 2 +- .../web_ui/src/components/CreateSaveModal.jsx | 7 ++- packages/web_ui/src/components/ErrorPage.jsx | 2 +- .../src/components/InstanceConfigTree.jsx | 3 +- .../web_ui/src/components/InstanceConsole.jsx | 2 +- .../web_ui/src/components/InstanceRcon.jsx | 2 +- .../src/components/InstanceViewPage.jsx | 2 +- .../web_ui/src/components/InstancesPage.jsx | 3 +- .../src/components/LoadScenarioModal.jsx | 7 ++- .../src/components/MasterConfigTree.jsx | 3 +- .../web_ui/src/components/RoleViewPage.jsx | 3 +- packages/web_ui/src/components/RolesPage.jsx | 2 +- packages/web_ui/src/components/SavesList.jsx | 2 +- packages/web_ui/src/components/SlavesPage.jsx | 2 +- .../components/StartStopInstanceButton.jsx | 2 +- .../web_ui/src/components/UserViewPage.jsx | 2 +- packages/web_ui/src/components/UsersPage.jsx | 2 +- packages/web_ui/src/model/instance.jsx | 4 +- packages/web_ui/src/model/saves.jsx | 4 +- packages/web_ui/src/model/slave.jsx | 2 +- packages/web_ui/src/util/notify.jsx | 3 +- packages/web_ui/src/util/websocket.jsx | 6 +-- plugins/global_chat/info.js | 2 +- plugins/global_chat/webpack.config.js | 3 +- plugins/inventory_sync/info.js | 4 +- plugins/inventory_sync/web/index.jsx | 2 +- plugins/inventory_sync/webpack.config.js | 3 +- plugins/player_auth/info.js | 3 +- plugins/player_auth/web/index.jsx | 2 +- plugins/player_auth/webpack.config.js | 4 +- plugins/research_sync/info.js | 2 +- plugins/research_sync/webpack.config.js | 3 +- plugins/statistics_exporter/info.js | 2 +- plugins/statistics_exporter/webpack.config.js | 3 +- plugins/subspace_storage/info.js | 4 +- plugins/subspace_storage/web/index.jsx | 2 +- plugins/subspace_storage/webpack.config.js | 5 +- 45 files changed, 111 insertions(+), 80 deletions(-) create mode 100644 packages/lib/browser.js create mode 100644 packages/lib/index.js diff --git a/.eslintrc.js b/.eslintrc.js index 3dfec3f3..a7b7a962 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -26,7 +26,7 @@ module.exports = { }, }, { - "files": ["packages/web_ui/src/**/*.jsx", "plugins/*/web/**/*.jsx"], + "files": ["packages/web_ui/src/**/*.jsx", "packages/lib/browser.js", "plugins/*/web/**/*.jsx"], "env": { "browser": true, }, diff --git a/docs/writing-plugins.md b/docs/writing-plugins.md index b66dfe64..2165b48e 100644 --- a/docs/writing-plugins.md +++ b/docs/writing-plugins.md @@ -49,7 +49,7 @@ Without it the plugin will not recognized by Clusterio. Here's an example of it: ```js -const libLink = require("@clusterio/lib/link"); // For messages +const { libLink } = require("@clusterio/lib"); // For messages module.exports = { name: "foo_frobber", diff --git a/packages/lib/browser.js b/packages/lib/browser.js new file mode 100644 index 00000000..35623b28 --- /dev/null +++ b/packages/lib/browser.js @@ -0,0 +1,11 @@ +export { default as libConfig } from "./config"; +export { default as libErrors } from "./errors"; +export { default as libFactorio } from "./factorio/exchange_string"; +export { default as libHelpers } from "./helpers"; +export { default as libLink } from "./link"; +export { default as libLogging } from "./logging"; +export { default as libPlugin } from "./plugin"; +export { default as libSchema } from "./schema"; +export { default as libUsers } from "./users"; + +export { default as RateLimiter } from "./RateLimiter"; diff --git a/packages/lib/index.js b/packages/lib/index.js new file mode 100644 index 00000000..b2929a4d --- /dev/null +++ b/packages/lib/index.js @@ -0,0 +1,47 @@ +"use strict"; +const libBuildMod = require("./build_mod"); +const libCommand = require("./command"); +const libConfig = require("./config"); +const libDatabase = require("./database"); +const libErrors = require("./errors"); +const libFactorio = require("./factorio"); +const libFileOps = require("./file_ops"); +const libHash = require("./hash"); +const libHelpers = require("./helpers"); +const libLink = require("./link"); +const libLogging = require("./logging"); +const libLoggingUtils = require("./logging_utils"); +const libLuaTools = require("./lua_tools"); +const libPlugin = require("./plugin"); +const libPluginLoader = require("./plugin_loader"); +const libPrometheus = require("./prometheus"); +const libSchema = require("./schema"); +const libSharedCommands = require("./shared_commands"); +const libUsers = require("./users"); + +const RateLimiter = require("./RateLimiter"); + + +module.exports = { + libBuildMod, + libCommand, + libConfig, + libDatabase, + libErrors, + libFactorio, + libFileOps, + libHash, + libHelpers, + libLink, + libLogging, + libLoggingUtils, + libLuaTools, + libPlugin, + libPluginLoader, + libPrometheus, + libSchema, + libSharedCommands, + libUsers, + + RateLimiter, +}; diff --git a/packages/lib/package.json b/packages/lib/package.json index 319ed4a7..798bc21a 100644 --- a/packages/lib/package.json +++ b/packages/lib/package.json @@ -4,6 +4,7 @@ "version": "2.0.0-alpha.8", "repository": "https://github.com/clusterio/clusterio", "license": "MIT", + "browser": "browser.js", "keywords": [ "factorio" ], diff --git a/packages/master/webpack.config.js b/packages/master/webpack.config.js index d7570127..1d80580b 100644 --- a/packages/master/webpack.config.js +++ b/packages/master/webpack.config.js @@ -20,14 +20,7 @@ module.exports = (env = {}) => merge(common(env), { new webpack.container.ModuleFederationPlugin({ name: "master", shared: { - "@clusterio/lib/config": { singleton: true }, - "@clusterio/lib/errors": { singleton: true }, - "@clusterio/lib/helpers": { singleton: true }, - "@clusterio/lib/link": { singleton: true }, - "@clusterio/lib/logging": { singleton: true }, - "@clusterio/lib/plugin": { singleton: true }, - "@clusterio/lib/schema": { singleton: true }, - "@clusterio/lib/users": { singleton: true }, + "@clusterio/lib": { singleton: true }, "@clusterio/web_ui": { singleton: true }, "antd": { singleton: true }, "react": { singleton: true }, diff --git a/packages/web_ui/src/bootstrap.jsx b/packages/web_ui/src/bootstrap.jsx index 54bd091e..dfef2d58 100644 --- a/packages/web_ui/src/bootstrap.jsx +++ b/packages/web_ui/src/bootstrap.jsx @@ -3,9 +3,8 @@ import "./index.css"; import React from "react"; import ReactDOM from "react-dom"; -import libConfig from "@clusterio/lib/config"; -import libPlugin from "@clusterio/lib/plugin"; -import { ConsoleTransport, WebConsoleFormat, logger } from "@clusterio/lib/logging"; +import { libConfig, libLogging, libPlugin } from "@clusterio/lib"; +const { ConsoleTransport, WebConsoleFormat, logger } = libLogging; import App from "./components/App"; import { Control, ControlConnector } from "./util/websocket"; diff --git a/packages/web_ui/src/components/App.jsx b/packages/web_ui/src/components/App.jsx index dd36eac4..3a51feef 100644 --- a/packages/web_ui/src/components/App.jsx +++ b/packages/web_ui/src/components/App.jsx @@ -2,7 +2,7 @@ import events from "events"; import React, { useEffect, useState } from "react"; import { BrowserRouter } from "react-router-dom"; -import { logger } from "@clusterio/lib/logging"; +import { libLogging } from "@clusterio/lib"; import ErrorBoundary from "./ErrorBoundary"; import SiteLayout from "./SiteLayout"; @@ -12,6 +12,7 @@ import LoginForm from "./LoginForm"; import { Card, Spin, Typography } from "antd"; const { Paragraph } = Typography; +const { logger } = libLogging; function ErrorCard(props) { diff --git a/packages/web_ui/src/components/AssignInstanceModal.jsx b/packages/web_ui/src/components/AssignInstanceModal.jsx index ad06f474..00e4b047 100644 --- a/packages/web_ui/src/components/AssignInstanceModal.jsx +++ b/packages/web_ui/src/components/AssignInstanceModal.jsx @@ -1,7 +1,7 @@ import React, { useContext, useState } from "react"; import { Button, Form, Modal, Select, Typography } from "antd"; -import libLink from "@clusterio/lib/link"; +import { libLink } from "@clusterio/lib"; import ControlContext from "./ControlContext"; import { notifyErrorHandler } from "../util/notify"; diff --git a/packages/web_ui/src/components/CreateSaveModal.jsx b/packages/web_ui/src/components/CreateSaveModal.jsx index 10907779..1ded9c5c 100644 --- a/packages/web_ui/src/components/CreateSaveModal.jsx +++ b/packages/web_ui/src/components/CreateSaveModal.jsx @@ -1,8 +1,7 @@ import React, { useContext, useState } from "react"; import { Button, Col, Form, Input, Modal, Row, Typography } from "antd"; -import libLink from "@clusterio/lib/link"; -import { readMapExchangeString } from "@clusterio/lib/factorio/exchange_string"; +import { libFactorio, libLink } from "@clusterio/lib"; import ControlContext from "./ControlContext"; import { notifyErrorHandler } from "../util/notify"; @@ -23,7 +22,7 @@ export default function CreateSaveModal(props) { if (values.exchangeString && values.exchangeString.trim()) { let result; try { - result = readMapExchangeString(values.exchangeString); + result = libFactorio.readMapExchangeString(values.exchangeString); } catch (err) { form.setFields([{ name: "exchangeString", errors: [err.message] }]); return; @@ -72,7 +71,7 @@ export default function CreateSaveModal(props) { let exchangeString = form.getFieldValue("exchangeString"); let result; try { - result = readMapExchangeString(exchangeString); + result = libFactorio.readMapExchangeString(exchangeString); } catch (err) { form.setFields([{ name: "exchangeString", errors: [err.message] }]); return; diff --git a/packages/web_ui/src/components/ErrorPage.jsx b/packages/web_ui/src/components/ErrorPage.jsx index 855bfce7..6dc28028 100644 --- a/packages/web_ui/src/components/ErrorPage.jsx +++ b/packages/web_ui/src/components/ErrorPage.jsx @@ -1,7 +1,7 @@ import React, { useContext } from "react"; import { Typography } from "antd"; -import libLink from "@clusterio/lib/link"; +import { libLink } from "@clusterio/lib"; import PageLayout from "./PageLayout"; diff --git a/packages/web_ui/src/components/InstanceConfigTree.jsx b/packages/web_ui/src/components/InstanceConfigTree.jsx index 921694e0..cd77abe2 100644 --- a/packages/web_ui/src/components/InstanceConfigTree.jsx +++ b/packages/web_ui/src/components/InstanceConfigTree.jsx @@ -1,8 +1,7 @@ import React, { useContext } from "react"; import { Typography } from "antd"; -import libLink from "@clusterio/lib/link"; -import libConfig from "@clusterio/lib/config"; +import { libConfig, libLink } from "@clusterio/lib"; import BaseConfigTree from "./BaseConfigTree"; import ControlContext from "./ControlContext"; diff --git a/packages/web_ui/src/components/InstanceConsole.jsx b/packages/web_ui/src/components/InstanceConsole.jsx index 07542676..fdc0c7f2 100644 --- a/packages/web_ui/src/components/InstanceConsole.jsx +++ b/packages/web_ui/src/components/InstanceConsole.jsx @@ -1,7 +1,7 @@ import React, { useEffect, useContext, useRef, useState } from "react"; import { Typography } from "antd"; -import libLink from "@clusterio/lib/link"; +import { libLink } from "@clusterio/lib"; import ControlContext from "./ControlContext"; diff --git a/packages/web_ui/src/components/InstanceRcon.jsx b/packages/web_ui/src/components/InstanceRcon.jsx index ce1e07ee..ef5c8c44 100644 --- a/packages/web_ui/src/components/InstanceRcon.jsx +++ b/packages/web_ui/src/components/InstanceRcon.jsx @@ -1,7 +1,7 @@ import React, { useContext, useState } from "react"; import { Input, Typography } from "antd"; -import libLink from "@clusterio/lib/link"; +import { libLink } from "@clusterio/lib"; import ControlContext from "./ControlContext"; import { notifyErrorHandler } from "../util/notify"; diff --git a/packages/web_ui/src/components/InstanceViewPage.jsx b/packages/web_ui/src/components/InstanceViewPage.jsx index bd96d526..d38a300f 100644 --- a/packages/web_ui/src/components/InstanceViewPage.jsx +++ b/packages/web_ui/src/components/InstanceViewPage.jsx @@ -3,7 +3,7 @@ import { useHistory, useParams } from "react-router-dom"; import { Button, Descriptions, Popconfirm, Space, Spin, Typography } from "antd"; import DeleteOutlined from "@ant-design/icons/DeleteOutlined"; -import libLink from "@clusterio/lib/link"; +import { libLink } from "@clusterio/lib"; import ControlContext from "./ControlContext"; import PageLayout from "./PageLayout"; diff --git a/packages/web_ui/src/components/InstancesPage.jsx b/packages/web_ui/src/components/InstancesPage.jsx index 71fb90a4..be54b6c7 100644 --- a/packages/web_ui/src/components/InstancesPage.jsx +++ b/packages/web_ui/src/components/InstancesPage.jsx @@ -2,8 +2,7 @@ import React, { useContext, useState } from "react"; import { useHistory } from "react-router-dom"; import { Button, Form, Input, Modal, PageHeader, Table } from "antd"; -import libLink from "@clusterio/lib/link"; -import libConfig from "@clusterio/lib/config"; +import { libConfig, libLink } from "@clusterio/lib"; import ControlContext from "./ControlContext"; import PageLayout from "./PageLayout"; diff --git a/packages/web_ui/src/components/LoadScenarioModal.jsx b/packages/web_ui/src/components/LoadScenarioModal.jsx index 448e6d0a..045b665d 100644 --- a/packages/web_ui/src/components/LoadScenarioModal.jsx +++ b/packages/web_ui/src/components/LoadScenarioModal.jsx @@ -1,8 +1,7 @@ import React, { useContext, useState } from "react"; import { Button, Col, Form, Input, Modal, Row, Typography } from "antd"; -import libLink from "@clusterio/lib/link"; -import { readMapExchangeString } from "@clusterio/lib/factorio/exchange_string"; +import { libFactorio, libLink } from "@clusterio/lib"; import ControlContext from "./ControlContext"; import { notifyErrorHandler } from "../util/notify"; @@ -23,7 +22,7 @@ export default function LoadScenarioModal(props) { if (values.exchangeString && values.exchangeString.trim()) { let result; try { - result = readMapExchangeString(values.exchangeString); + result = libFactorio.readMapExchangeString(values.exchangeString); } catch (err) { form.setFields([{ name: "exchangeString", errors: [err.message] }]); return; @@ -71,7 +70,7 @@ export default function LoadScenarioModal(props) { let exchangeString = form.getFieldValue("exchangeString"); let result; try { - result = readMapExchangeString(exchangeString); + result = libFactorio.readMapExchangeString(exchangeString); } catch (err) { form.setFields([{ name: "exchangeString", errors: [err.message] }]); return; diff --git a/packages/web_ui/src/components/MasterConfigTree.jsx b/packages/web_ui/src/components/MasterConfigTree.jsx index fc817b90..d72512e6 100644 --- a/packages/web_ui/src/components/MasterConfigTree.jsx +++ b/packages/web_ui/src/components/MasterConfigTree.jsx @@ -1,8 +1,7 @@ import React, { useContext } from "react"; import { Typography } from "antd"; -import libLink from "@clusterio/lib/link"; -import libConfig from "@clusterio/lib/config"; +import { libConfig, libLink } from "@clusterio/lib"; import BaseConfigTree from "./BaseConfigTree"; import ControlContext from "./ControlContext"; diff --git a/packages/web_ui/src/components/RoleViewPage.jsx b/packages/web_ui/src/components/RoleViewPage.jsx index 25d1fadb..900dfb07 100644 --- a/packages/web_ui/src/components/RoleViewPage.jsx +++ b/packages/web_ui/src/components/RoleViewPage.jsx @@ -3,8 +3,7 @@ import { useHistory, useParams } from "react-router-dom"; import { Button, Checkbox, Col, Form, Input, Popconfirm, Row, Space, Spin } from "antd"; import DeleteOutlined from "@ant-design/icons/DeleteOutlined"; -import libLink from "@clusterio/lib/link"; -import libUsers from "@clusterio/lib/users"; +import { libLink, libUsers } from "@clusterio/lib"; import ControlContext from "./ControlContext"; import PageLayout from "./PageLayout"; diff --git a/packages/web_ui/src/components/RolesPage.jsx b/packages/web_ui/src/components/RolesPage.jsx index 1b09afea..e4a0aca2 100644 --- a/packages/web_ui/src/components/RolesPage.jsx +++ b/packages/web_ui/src/components/RolesPage.jsx @@ -1,7 +1,7 @@ import React, { useContext } from "react"; import { useHistory } from "react-router-dom"; -import libLink from "@clusterio/lib/link"; +import { libLink } from "@clusterio/lib"; import DataTable from "./data-table"; import ControlContext from "./ControlContext"; diff --git a/packages/web_ui/src/components/SavesList.jsx b/packages/web_ui/src/components/SavesList.jsx index bd5eb6a4..20c9fee5 100644 --- a/packages/web_ui/src/components/SavesList.jsx +++ b/packages/web_ui/src/components/SavesList.jsx @@ -3,7 +3,7 @@ import { Button, List, Popconfirm, Progress, Space, Table, Tooltip, Upload } fro import CaretLeftOutlined from "@ant-design/icons/CaretLeftOutlined"; import LeftOutlined from "@ant-design/icons/LeftOutlined"; -import libLink from "@clusterio/lib/link"; +import { libLink } from "@clusterio/lib"; import ControlContext from "./ControlContext"; import CreateSaveModal from "./CreateSaveModal"; diff --git a/packages/web_ui/src/components/SlavesPage.jsx b/packages/web_ui/src/components/SlavesPage.jsx index 74af789a..751480e7 100644 --- a/packages/web_ui/src/components/SlavesPage.jsx +++ b/packages/web_ui/src/components/SlavesPage.jsx @@ -1,7 +1,7 @@ import React, { useContext, useRef, useState } from "react"; import { Button, Form, Input, Modal, PageHeader, Table } from "antd"; -import libLink from "@clusterio/lib/link"; +import { libLink } from "@clusterio/lib"; import ControlContext from "./ControlContext"; import PageLayout from "./PageLayout"; diff --git a/packages/web_ui/src/components/StartStopInstanceButton.jsx b/packages/web_ui/src/components/StartStopInstanceButton.jsx index 1e7f7162..89a58eac 100644 --- a/packages/web_ui/src/components/StartStopInstanceButton.jsx +++ b/packages/web_ui/src/components/StartStopInstanceButton.jsx @@ -1,7 +1,7 @@ import React, { useContext, useState } from "react"; import { Button } from "antd"; -import libLink from "@clusterio/lib/link"; +import { libLink } from "@clusterio/lib"; import ControlContext from "./ControlContext"; import { notifyErrorHandler } from "../util/notify"; diff --git a/packages/web_ui/src/components/UserViewPage.jsx b/packages/web_ui/src/components/UserViewPage.jsx index 3f6cf656..f687e85c 100644 --- a/packages/web_ui/src/components/UserViewPage.jsx +++ b/packages/web_ui/src/components/UserViewPage.jsx @@ -3,7 +3,7 @@ import { useHistory, useParams } from "react-router-dom"; import { Button, Checkbox, Col, Form, Input, Popconfirm, Popover, Row, Select, Space, Spin, Switch } from "antd"; import DeleteOutlined from "@ant-design/icons/DeleteOutlined"; -import libLink from "@clusterio/lib/link"; +import { libLink } from "@clusterio/lib"; import ControlContext from "./ControlContext"; import PageLayout from "./PageLayout"; diff --git a/packages/web_ui/src/components/UsersPage.jsx b/packages/web_ui/src/components/UsersPage.jsx index 75fee750..e70911a5 100644 --- a/packages/web_ui/src/components/UsersPage.jsx +++ b/packages/web_ui/src/components/UsersPage.jsx @@ -2,7 +2,7 @@ import React, { useEffect, useContext, useState } from "react"; import { useHistory } from "react-router-dom"; import { Spin, Tag } from "antd"; -import libLink from "@clusterio/lib/link"; +import { libLink } from "@clusterio/lib"; import DataTable from "./data-table"; import ControlContext from "./ControlContext"; diff --git a/packages/web_ui/src/model/instance.jsx b/packages/web_ui/src/model/instance.jsx index ef4f27a2..11c7cc78 100644 --- a/packages/web_ui/src/model/instance.jsx +++ b/packages/web_ui/src/model/instance.jsx @@ -1,8 +1,8 @@ import React, { useEffect, useContext, useState } from "react"; import ControlContext from "../components/ControlContext"; -import libLink from "@clusterio/lib/link"; -import { logger } from "@clusterio/lib/logging"; +import { libLink, libLogging } from "@clusterio/lib"; +const { logger } = libLogging; export function useInstance(id) { diff --git a/packages/web_ui/src/model/saves.jsx b/packages/web_ui/src/model/saves.jsx index 7d9e1a5e..83bad774 100644 --- a/packages/web_ui/src/model/saves.jsx +++ b/packages/web_ui/src/model/saves.jsx @@ -1,8 +1,8 @@ import React, { useEffect, useContext, useState } from "react"; import ControlContext from "../components/ControlContext"; -import libLink from "@clusterio/lib/link"; -import { logger } from "@clusterio/lib/logging"; +import { libLink, libLogging } from "@clusterio/lib"; +const { logger } = libLogging; export function useSaves(instanceId) { diff --git a/packages/web_ui/src/model/slave.jsx b/packages/web_ui/src/model/slave.jsx index 729e671a..6f6a6cfd 100644 --- a/packages/web_ui/src/model/slave.jsx +++ b/packages/web_ui/src/model/slave.jsx @@ -1,7 +1,7 @@ import React, { useEffect, useContext, useState } from "react"; import ControlContext from "../components/ControlContext"; -import libLink from "@clusterio/lib/link"; +import { libLink } from "@clusterio/lib"; export function useSlave(id) { diff --git a/packages/web_ui/src/util/notify.jsx b/packages/web_ui/src/util/notify.jsx index 7066ad6a..420ff83f 100644 --- a/packages/web_ui/src/util/notify.jsx +++ b/packages/web_ui/src/util/notify.jsx @@ -1,5 +1,6 @@ import { notification } from "antd"; -import { logger } from "@clusterio/lib/logging"; +import { libLogging } from "@clusterio/lib"; +const { logger } = libLogging; export default function notify(message, type = "info", description = undefined) { diff --git a/packages/web_ui/src/util/websocket.jsx b/packages/web_ui/src/util/websocket.jsx index 6b3b983f..c0be3ef2 100644 --- a/packages/web_ui/src/util/websocket.jsx +++ b/packages/web_ui/src/util/websocket.jsx @@ -1,7 +1,5 @@ -import libLink from "@clusterio/lib/link"; -import libPlugin from "@clusterio/lib/plugin"; -import libErrors from "@clusterio/lib/errors"; -import { logger } from "@clusterio/lib/logging"; +import { libErrors, libLink, libLogging, libPlugin } from "@clusterio/lib"; +const { logger } = libLogging; import packageJson from "../../package.json"; diff --git a/plugins/global_chat/info.js b/plugins/global_chat/info.js index 1782d730..ebb44c0b 100644 --- a/plugins/global_chat/info.js +++ b/plugins/global_chat/info.js @@ -1,5 +1,5 @@ "use strict"; -let libLink = require("@clusterio/lib/link"); +let { libLink } = require("@clusterio/lib"); module.exports = { name: "global_chat", diff --git a/plugins/global_chat/webpack.config.js b/plugins/global_chat/webpack.config.js index b1b77ec3..b17a1b4c 100644 --- a/plugins/global_chat/webpack.config.js +++ b/plugins/global_chat/webpack.config.js @@ -23,8 +23,7 @@ module.exports = (env = {}) => merge(common(env), { "./package.json": "./package.json", }, shared: { - "@clusterio/lib/config": { import: false }, - "@clusterio/lib/link": { import: false }, + "@clusterio/lib": { import: false }, "@clusterio/web_ui": { import: false }, "ajv": { import: false }, }, diff --git a/plugins/inventory_sync/info.js b/plugins/inventory_sync/info.js index 5c80e838..af0c1616 100644 --- a/plugins/inventory_sync/info.js +++ b/plugins/inventory_sync/info.js @@ -1,7 +1,5 @@ "use strict"; -const libLink = require("@clusterio/lib/link"); -const libConfig = require("@clusterio/lib/config"); -const libUsers = require("@clusterio/lib/users"); +const { libConfig, libLink, libUsers } = require("@clusterio/lib"); class MasterConfigGroup extends libConfig.PluginConfigGroup { } MasterConfigGroup.defaultAccess = ["master", "slave", "control"]; diff --git a/plugins/inventory_sync/web/index.jsx b/plugins/inventory_sync/web/index.jsx index 38328bc5..8261705f 100644 --- a/plugins/inventory_sync/web/index.jsx +++ b/plugins/inventory_sync/web/index.jsx @@ -1,6 +1,6 @@ import React, { useContext, useEffect, useState } from "react"; -import libPlugin from "@clusterio/lib/plugin"; +import { libPlugin } from "@clusterio/lib"; import { PageLayout, ControlContext } from "@clusterio/web_ui"; import info from "../info"; diff --git a/plugins/inventory_sync/webpack.config.js b/plugins/inventory_sync/webpack.config.js index 32df7fbf..1103fdda 100644 --- a/plugins/inventory_sync/webpack.config.js +++ b/plugins/inventory_sync/webpack.config.js @@ -24,8 +24,7 @@ module.exports = (env = {}) => merge(common(env), { "./web": "./web/index.jsx", }, shared: { - "@clusterio/lib/config": { import: false }, - "@clusterio/lib/link": { import: false }, + "@clusterio/lib": { import: false }, "@clusterio/web_ui": { import: false }, "ajv": { import: false }, "antd": { import: false }, diff --git a/plugins/player_auth/info.js b/plugins/player_auth/info.js index 0991b0d5..7a7d0ffc 100644 --- a/plugins/player_auth/info.js +++ b/plugins/player_auth/info.js @@ -1,6 +1,5 @@ "use strict"; -let libLink = require("@clusterio/lib/link"); -let libConfig = require("@clusterio/lib/config"); +let { libConfig, libLink } = require("@clusterio/lib"); class MasterConfigGroup extends libConfig.PluginConfigGroup {} diff --git a/plugins/player_auth/web/index.jsx b/plugins/player_auth/web/index.jsx index bb91a5ad..8bbdcf2b 100644 --- a/plugins/player_auth/web/index.jsx +++ b/plugins/player_auth/web/index.jsx @@ -1,6 +1,6 @@ import React, { useEffect, useState } from "react"; -import libPlugin from "@clusterio/lib/plugin"; +import { libPlugin } from "@clusterio/lib"; import { notify, notifyErrorHandler } from "@clusterio/web_ui"; import { Button, Form, Input, Spin, Typography } from "antd"; diff --git a/plugins/player_auth/webpack.config.js b/plugins/player_auth/webpack.config.js index fc82c3f4..d282ac14 100644 --- a/plugins/player_auth/webpack.config.js +++ b/plugins/player_auth/webpack.config.js @@ -24,9 +24,7 @@ module.exports = (env = {}) => merge(common(env), { "./web": "./web/index.jsx", }, shared: { - "@clusterio/lib/config": { import: false }, - "@clusterio/lib/link": { import: false }, - "@clusterio/lib/plugin": { import: false }, + "@clusterio/lib": { import: false }, "@clusterio/web_ui": { import: false }, "antd": { import: false }, "react": { import: false }, diff --git a/plugins/research_sync/info.js b/plugins/research_sync/info.js index 7a852f00..1e4649d4 100644 --- a/plugins/research_sync/info.js +++ b/plugins/research_sync/info.js @@ -1,5 +1,5 @@ "use strict"; -const libLink = require("@clusterio/lib/link"); +const { libLink } = require("@clusterio/lib"); // schema used for syncing technologies to and from the master diff --git a/plugins/research_sync/webpack.config.js b/plugins/research_sync/webpack.config.js index e41d52e5..b46cd851 100644 --- a/plugins/research_sync/webpack.config.js +++ b/plugins/research_sync/webpack.config.js @@ -23,8 +23,7 @@ module.exports = (env = {}) => merge(common(env), { "./package.json": "./package.json", }, shared: { - "@clusterio/lib/config": { import: false }, - "@clusterio/lib/link": { import: false }, + "@clusterio/lib": { import: false }, "@clusterio/web_ui": { import: false }, "ajv": { import: false }, }, diff --git a/plugins/statistics_exporter/info.js b/plugins/statistics_exporter/info.js index b8fd3ea0..078b02f3 100644 --- a/plugins/statistics_exporter/info.js +++ b/plugins/statistics_exporter/info.js @@ -1,5 +1,5 @@ "use strict"; -const libConfig = require("@clusterio/lib/config"); +const { libConfig } = require("@clusterio/lib"); class InstanceConfigGroup extends libConfig.PluginConfigGroup {} InstanceConfigGroup.defaultAccess = ["master", "slave", "control"]; diff --git a/plugins/statistics_exporter/webpack.config.js b/plugins/statistics_exporter/webpack.config.js index 81f1a2ad..66334cd4 100644 --- a/plugins/statistics_exporter/webpack.config.js +++ b/plugins/statistics_exporter/webpack.config.js @@ -23,8 +23,7 @@ module.exports = (env = {}) => merge(common(env), { "./package.json": "./package.json", }, shared: { - "@clusterio/lib/config": { import: false }, - "@clusterio/lib/link": { import: false }, + "@clusterio/lib": { import: false }, "@clusterio/web_ui": { import: false }, "ajv": { import: false }, }, diff --git a/plugins/subspace_storage/info.js b/plugins/subspace_storage/info.js index 84c7d511..55e9394b 100644 --- a/plugins/subspace_storage/info.js +++ b/plugins/subspace_storage/info.js @@ -1,7 +1,5 @@ "use strict"; -const libLink = require("@clusterio/lib/link"); -const libConfig = require("@clusterio/lib/config"); -const libUsers = require("@clusterio/lib/users"); +const { libConfig, libLink, libUsers } = require("@clusterio/lib"); class MasterConfigGroup extends libConfig.PluginConfigGroup {} MasterConfigGroup.defaultAccess = ["master", "slave", "control"]; diff --git a/plugins/subspace_storage/web/index.jsx b/plugins/subspace_storage/web/index.jsx index 3336ac13..c6123713 100644 --- a/plugins/subspace_storage/web/index.jsx +++ b/plugins/subspace_storage/web/index.jsx @@ -1,7 +1,7 @@ import React, { useContext, useEffect, useState } from "react"; import { Input, Table, Typography } from "antd"; -import libPlugin from "@clusterio/lib/plugin"; +import { libPlugin } from "@clusterio/lib"; import { notifyErrorHandler, useItemMetadata, useLocale, PageLayout, ControlContext } from "@clusterio/web_ui"; import info from "../info"; diff --git a/plugins/subspace_storage/webpack.config.js b/plugins/subspace_storage/webpack.config.js index 491a9c31..a4ae1db3 100644 --- a/plugins/subspace_storage/webpack.config.js +++ b/plugins/subspace_storage/webpack.config.js @@ -24,10 +24,7 @@ module.exports = (env = {}) => merge(common(env), { "./web": "./web/index.jsx", }, shared: { - "@clusterio/lib/config": { import: false }, - "@clusterio/lib/link": { import: false }, - "@clusterio/lib/plugin": { import: false }, - "@clusterio/lib/users": { import: false }, + "@clusterio/lib": { import: false }, "@clusterio/web_ui": { import: false }, "antd": { import: false }, "react": { import: false },