omegga 1.2.8 → 1.3.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/README.md +20 -1
- package/dist/brickadia/config.js +26 -90
- package/dist/brickadia/config.js.map +1 -1
- package/dist/brickadia/server.js +294 -293
- package/dist/brickadia/server.js.map +1 -1
- package/dist/cli/auth.js +149 -177
- package/dist/cli/auth.js.map +1 -1
- package/dist/cli/config.js +64 -66
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/index.js +14 -14
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/installer.js +37 -43
- package/dist/cli/installer.js.map +1 -1
- package/dist/cli/plugin.js +651 -682
- package/dist/cli/plugin.js.map +1 -1
- package/dist/cli/terminal.js +811 -733
- package/dist/cli/terminal.js.map +1 -1
- package/dist/config/formats/format_js.js +6 -6
- package/dist/config/formats/format_js.js.map +1 -1
- package/dist/config/formats/format_yml.js +7 -10
- package/dist/config/formats/format_yml.js.map +1 -1
- package/dist/config/index.js +46 -68
- package/dist/config/index.js.map +1 -1
- package/dist/config/reader.js +16 -27
- package/dist/config/reader.js.map +1 -1
- package/dist/config/validator.js +23 -25
- package/dist/config/validator.js.map +1 -1
- package/dist/config/writer.js +11 -21
- package/dist/config/writer.js.map +1 -1
- package/dist/index.js +18 -64
- package/dist/index.js.map +1 -1
- package/dist/info/default_commands.json.js +39 -0
- package/dist/info/default_commands.json.js.map +1 -0
- package/dist/logger.js +61 -60
- package/dist/logger.js.map +1 -1
- package/dist/main.js +424 -471
- package/dist/main.js.map +1 -1
- package/dist/omegga/auth.js +101 -148
- package/dist/omegga/auth.js.map +1 -1
- package/dist/omegga/commandInjector.js +261 -251
- package/dist/omegga/commandInjector.js.map +1 -1
- package/dist/omegga/index.js +14 -52
- package/dist/omegga/index.js.map +1 -1
- package/dist/omegga/logWrangler.js +224 -275
- package/dist/omegga/logWrangler.js.map +1 -1
- package/dist/omegga/matchers/auth.js +36 -50
- package/dist/omegga/matchers/auth.js.map +1 -1
- package/dist/omegga/matchers/chat.js +49 -71
- package/dist/omegga/matchers/chat.js.map +1 -1
- package/dist/omegga/matchers/command.js +25 -36
- package/dist/omegga/matchers/command.js.map +1 -1
- package/dist/omegga/matchers/exit.js +15 -18
- package/dist/omegga/matchers/exit.js.map +1 -1
- package/dist/omegga/matchers/index.js +26 -40
- package/dist/omegga/matchers/index.js.map +1 -1
- package/dist/omegga/matchers/init.js +20 -23
- package/dist/omegga/matchers/init.js.map +1 -1
- package/dist/omegga/matchers/interact.js +58 -64
- package/dist/omegga/matchers/interact.js.map +1 -1
- package/dist/omegga/matchers/join.js +74 -95
- package/dist/omegga/matchers/join.js.map +1 -1
- package/dist/omegga/matchers/leave.js +43 -56
- package/dist/omegga/matchers/leave.js.map +1 -1
- package/dist/omegga/matchers/mapChange.js +26 -35
- package/dist/omegga/matchers/mapChange.js.map +1 -1
- package/dist/omegga/matchers/minigameJoin.js +24 -31
- package/dist/omegga/matchers/minigameJoin.js.map +1 -1
- package/dist/omegga/matchers/version.js +42 -49
- package/dist/omegga/matchers/version.js.map +1 -1
- package/dist/omegga/player.js +527 -527
- package/dist/omegga/player.js.map +1 -1
- package/dist/omegga/plugin/interface.js +91 -98
- package/dist/omegga/plugin/interface.js.map +1 -1
- package/dist/omegga/plugin/plugin_jsonrpc_stdio.js +524 -429
- package/dist/omegga/plugin/plugin_jsonrpc_stdio.js.map +1 -1
- package/dist/omegga/plugin/plugin_node_safe/proxyOmegga.js +282 -294
- package/dist/omegga/plugin/plugin_node_safe/proxyOmegga.js.map +1 -1
- package/dist/omegga/plugin/plugin_node_safe.js +365 -393
- package/dist/omegga/plugin/plugin_node_safe.js.map +1 -1
- package/dist/omegga/plugin/plugin_node_unsafe.js +119 -179
- package/dist/omegga/plugin/plugin_node_unsafe.js.map +1 -1
- package/dist/omegga/plugin.js +402 -347
- package/dist/omegga/plugin.js.map +1 -1
- package/dist/omegga/server.js +742 -774
- package/dist/omegga/server.js.map +1 -1
- package/dist/omegga/wrapper.js +64 -91
- package/dist/omegga/wrapper.js.map +1 -1
- package/dist/plugin.js +11 -31
- package/dist/plugin.js.map +1 -1
- package/dist/softconfig.js +121 -100
- package/dist/softconfig.js.map +1 -1
- package/dist/updater/steam.js +97 -112
- package/dist/updater/steam.js.map +1 -1
- package/dist/util/brdb.js +496 -528
- package/dist/util/brdb.js.map +1 -1
- package/dist/util/brick/checkBounds.js +11 -15
- package/dist/util/brick/checkBounds.js.map +1 -1
- package/dist/util/brick/constants.js +723 -174
- package/dist/util/brick/constants.js.map +1 -1
- package/dist/util/brick/displayName.js +204 -211
- package/dist/util/brick/displayName.js.map +1 -1
- package/dist/util/brick/getBounds.js +29 -41
- package/dist/util/brick/getBounds.js.map +1 -1
- package/dist/util/brick/getBrickSize.js +6 -7
- package/dist/util/brick/getBrickSize.js.map +1 -1
- package/dist/util/brick/getScaleAxis.js +24 -30
- package/dist/util/brick/getScaleAxis.js.map +1 -1
- package/dist/util/brick/index.js +8 -29
- package/dist/util/brick/index.js.map +1 -1
- package/dist/util/brick/rotate.js +29 -34
- package/dist/util/brick/rotate.js.map +1 -1
- package/dist/util/brick/setOwnership.js +13 -19
- package/dist/util/brick/setOwnership.js.map +1 -1
- package/dist/util/chat.js +53 -44
- package/dist/util/chat.js.map +1 -1
- package/dist/util/color.js +112 -124
- package/dist/util/color.js.map +1 -1
- package/dist/util/file.js +54 -98
- package/dist/util/file.js.map +1 -1
- package/dist/util/index.js +84 -106
- package/dist/util/index.js.map +1 -1
- package/dist/util/map.js +18 -20
- package/dist/util/map.js.map +1 -1
- package/dist/util/pattern.js +6 -9
- package/dist/util/pattern.js.map +1 -1
- package/dist/util/time.js +31 -34
- package/dist/util/time.js.map +1 -1
- package/dist/util/uuid.js +10 -8
- package/dist/util/uuid.js.map +1 -1
- package/dist/util/wsl.js +19 -25
- package/dist/util/wsl.js.map +1 -1
- package/dist/version.js +7 -9
- package/dist/version.js.map +1 -1
- package/dist/webserver/backend/api.js +784 -874
- package/dist/webserver/backend/api.js.map +1 -1
- package/dist/webserver/backend/calendar.js +14 -17
- package/dist/webserver/backend/calendar.js.map +1 -1
- package/dist/webserver/backend/database.js +563 -613
- package/dist/webserver/backend/database.js.map +1 -1
- package/dist/webserver/backend/index.js +153 -191
- package/dist/webserver/backend/index.js.map +1 -1
- package/dist/webserver/backend/metrics.js +219 -248
- package/dist/webserver/backend/metrics.js.map +1 -1
- package/dist/webserver/backend/util.js +47 -68
- package/dist/webserver/backend/util.js.map +1 -1
- package/dist/worker.js +322 -0
- package/dist/worker.js.map +1 -0
- package/package.json +14 -10
- package/templates/safe-ts/omegga.d.ts +2 -2
- package/vite.backend.config.mts +46 -0
- package/vite.frontend.config.mts +58 -0
- package/vitest.backend.config.mts +7 -0
- package/dist/brickadia/config.d.ts +0 -3
- package/dist/brickadia/presets.d.ts +0 -65
- package/dist/brickadia/presets.js +0 -3
- package/dist/brickadia/presets.js.map +0 -1
- package/dist/brickadia/server.d.ts +0 -36
- package/dist/brickadia/types.d.ts +0 -45
- package/dist/brickadia/types.js +0 -3
- package/dist/brickadia/types.js.map +0 -1
- package/dist/cli/auth.d.ts +0 -26
- package/dist/cli/config.d.ts +0 -10
- package/dist/cli/index.d.ts +0 -30
- package/dist/cli/installer.d.ts +0 -1
- package/dist/cli/plugin.d.ts +0 -22
- package/dist/cli/terminal.d.ts +0 -25
- package/dist/config/authorizer.d.ts +0 -2
- package/dist/config/authorizer.js +0 -38
- package/dist/config/authorizer.js.map +0 -1
- package/dist/config/formats/format_js.d.ts +0 -3
- package/dist/config/formats/format_yml.d.ts +0 -3
- package/dist/config/index.d.ts +0 -18
- package/dist/config/reader.d.ts +0 -3
- package/dist/config/types.d.ts +0 -50
- package/dist/config/types.js +0 -3
- package/dist/config/types.js.map +0 -1
- package/dist/config/validator.d.ts +0 -6
- package/dist/config/writer.d.ts +0 -3
- package/dist/index.d.ts +0 -22
- package/dist/info/default_commands.json +0 -29
- package/dist/logger.d.ts +0 -41
- package/dist/main.d.ts +0 -1
- package/dist/omegga/auth.d.ts +0 -9
- package/dist/omegga/commandInjector.d.ts +0 -35
- package/dist/omegga/index.d.ts +0 -7
- package/dist/omegga/logWrangler.d.ts +0 -32
- package/dist/omegga/matchers/auth.d.ts +0 -10
- package/dist/omegga/matchers/chat.d.ts +0 -10
- package/dist/omegga/matchers/command.d.ts +0 -7
- package/dist/omegga/matchers/exit.d.ts +0 -3
- package/dist/omegga/matchers/index.d.ts +0 -3
- package/dist/omegga/matchers/init.d.ts +0 -3
- package/dist/omegga/matchers/interact.d.ts +0 -4
- package/dist/omegga/matchers/join.d.ts +0 -4
- package/dist/omegga/matchers/leave.d.ts +0 -4
- package/dist/omegga/matchers/mapChange.d.ts +0 -3
- package/dist/omegga/matchers/minigameJoin.d.ts +0 -9
- package/dist/omegga/matchers/types.d.ts +0 -5
- package/dist/omegga/matchers/types.js +0 -3
- package/dist/omegga/matchers/types.js.map +0 -1
- package/dist/omegga/matchers/version.d.ts +0 -3
- package/dist/omegga/player.d.ts +0 -81
- package/dist/omegga/plugin/interface.d.ts +0 -30
- package/dist/omegga/plugin/plugin_jsonrpc_stdio.d.ts +0 -23
- package/dist/omegga/plugin/plugin_node_safe/proxyOmegga.d.ts +0 -145
- package/dist/omegga/plugin/plugin_node_safe/worker.d.ts +0 -1
- package/dist/omegga/plugin/plugin_node_safe/worker.js +0 -367
- package/dist/omegga/plugin/plugin_node_safe/worker.js.map +0 -1
- package/dist/omegga/plugin/plugin_node_safe.d.ts +0 -23
- package/dist/omegga/plugin/plugin_node_unsafe.d.ts +0 -13
- package/dist/omegga/plugin.d.ts +0 -63
- package/dist/omegga/server.d.ts +0 -166
- package/dist/omegga/types.d.ts +0 -49
- package/dist/omegga/types.js +0 -3
- package/dist/omegga/types.js.map +0 -1
- package/dist/omegga/wrapper.d.ts +0 -32
- package/dist/plugin.d.ts +0 -916
- package/dist/softconfig.d.ts +0 -67
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/dist/updater/index.d.ts +0 -1
- package/dist/updater/index.js +0 -10
- package/dist/updater/index.js.map +0 -1
- package/dist/updater/steam.d.ts +0 -52
- package/dist/util/brdb.d.ts +0 -31
- package/dist/util/brick/checkBounds.d.ts +0 -8
- package/dist/util/brick/constants.d.ts +0 -18
- package/dist/util/brick/displayName.d.ts +0 -7
- package/dist/util/brick/getBounds.d.ts +0 -5
- package/dist/util/brick/getBrickSize.d.ts +0 -3
- package/dist/util/brick/getScaleAxis.d.ts +0 -3
- package/dist/util/brick/index.d.ts +0 -14
- package/dist/util/brick/rotate.d.ts +0 -16
- package/dist/util/brick/setOwnership.d.ts +0 -12
- package/dist/util/chat.d.ts +0 -23
- package/dist/util/color.d.ts +0 -13
- package/dist/util/file.d.ts +0 -5
- package/dist/util/index.d.ts +0 -183
- package/dist/util/map.d.ts +0 -6
- package/dist/util/pattern.d.ts +0 -1
- package/dist/util/time.d.ts +0 -39
- package/dist/util/uuid.d.ts +0 -3
- package/dist/util/wsl.d.ts +0 -2
- package/dist/version.d.ts +0 -2
- package/dist/webserver/backend/api.d.ts +0 -115
- package/dist/webserver/backend/calendar.d.ts +0 -5
- package/dist/webserver/backend/database.d.ts +0 -150
- package/dist/webserver/backend/index.d.ts +0 -30
- package/dist/webserver/backend/metrics.d.ts +0 -3
- package/dist/webserver/backend/types.d.ts +0 -114
- package/dist/webserver/backend/types.js +0 -3
- package/dist/webserver/backend/types.js.map +0 -1
- package/dist/webserver/backend/util.d.ts +0 -2
- package/dist/webserver/index.d.ts +0 -2
- package/dist/webserver/index.js +0 -9
- package/dist/webserver/index.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/omegga/plugin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.js","sources":["../../src/omegga/plugin.ts"],"sourcesContent":["import Logger from '@/logger';\nimport { IPluginCommand, IPluginDocumentation } from '@/plugin';\nimport soft from '@/softconfig';\nimport Datastore from 'nedb-promises';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport type Player from './player';\nimport { Plugin } from './plugin/interface';\nimport RpcPlugin from './plugin/plugin_jsonrpc_stdio';\nimport NodeVmPlugin from './plugin/plugin_node_safe';\nimport NodePlugin from './plugin/plugin_node_unsafe';\nimport type Omegga from './server';\n\nexport interface IPluginJSON {\n formatVersion: number;\n omeggaVersion: string;\n emitConfig?: string;\n dependencies?: {\n [pluginName: string]: { optional?: boolean; repo?: string } | string;\n };\n loadPriority?: number;\n loadBefore?: string[];\n loadAfter?: string[];\n}\n\n// TODO: move doc.json to this file (maybe)\n// TODO: cleaner plugin error messages\n\nexport interface IStoreItem<T = unknown> {\n type: 'store';\n key: string;\n plugin: string;\n value: T;\n}\n\nexport interface IStoreConfig {\n type: 'config';\n plugin: string;\n value: Record<string, unknown>;\n}\n\n// key-value storage for a plugin\nexport class PluginStorage {\n store: Datastore;\n plugin: Plugin;\n name: string;\n\n constructor(store: Datastore, plugin: Plugin) {\n this.store = store;\n this.plugin = plugin;\n this.name = plugin.getName();\n }\n\n // get the initial config values\n getDefaultConfig() {\n const doc = this.plugin.getDocumentation();\n // check if the documentation object exists and whether it has a config field\n if (!doc) return {};\n if (!doc.config) return {};\n\n // insert values from default config values\n const config: Record<string, unknown> = {};\n for (const k in doc.config) {\n config[k] = doc.config[k].default;\n }\n\n return config;\n }\n\n // set the config field for this plugin\n async setConfig(value: unknown) {\n await this.store.update(\n { type: 'config', plugin: this.name },\n {\n $set: { value },\n },\n { upsert: true },\n );\n }\n\n // get the config for this plugin\n async getConfig(): Promise<Record<string, unknown>> {\n const config = await this.store.findOne<IStoreConfig>({\n type: 'config',\n plugin: this.name,\n });\n if (!config) return null;\n return config.value;\n }\n\n /** Wipes the configs for the plugin. */\n async wipeConfig() {\n await this.store.remove(\n { type: 'config', plugin: this.name },\n { multi: true },\n );\n }\n\n /** Initializes the configs for the plugin into the database and sets default configs. */\n async init() {\n // get default and configured values\n const defaultConf = this.getDefaultConfig();\n const config = await this.getConfig();\n\n await this.setConfig({\n // use default config\n ...defaultConf,\n\n // override with actual config values\n ...(config ? config : {}),\n });\n }\n\n // get a stored object\n async get<T>(key: string) {\n if (typeof key !== 'string' || key.length === 0) return;\n const obj = await this.store.findOne<IStoreItem<T>>({\n type: 'store',\n plugin: this.name,\n key,\n });\n if (!obj) return null;\n return obj.value;\n }\n\n // delete a stored object\n async delete(key: string) {\n if (typeof key !== 'string' || key.length === 0) return;\n await this.store.remove({ type: 'store', plugin: this.name, key }, {});\n }\n\n // clear all stored values\n async wipe() {\n await this.store.remove(\n { type: 'store', plugin: this.name },\n { multi: true },\n );\n }\n\n // count number of objects in store\n async count() {\n return await this.store.count({ type: 'store', plugin: this.name });\n }\n\n // get keys of all objects in store\n async keys() {\n const objects = await this.store.find<IStoreItem>({\n type: 'store',\n plugin: this.name,\n });\n return objects.map(o => o.key);\n }\n\n // set a stored value\n async set<T = unknown>(key: string, value: T) {\n if (typeof key !== 'string' || key.length === 0) return;\n await this.store.update<IStoreItem>(\n { type: 'store', plugin: this.name, key },\n { $set: { value } },\n { upsert: true },\n );\n }\n}\n\n/*\n Plugin Loader and Scanner\n Allows omegga to scan in plugins and load them\n*/\nexport class PluginLoader {\n path: string;\n omegga: Omegga;\n store: Datastore;\n formats: (typeof Plugin)[];\n plugins: Plugin[];\n\n commands: Record<string, IPluginCommand & { _plugin: Plugin }>;\n documentation: Record<string, IPluginDocumentation & { _plugin: Plugin }>;\n\n constructor(workDir: string, omegga?: Omegga) {\n this.path = path.join(workDir, soft.PLUGIN_PATH);\n this.omegga = omegga;\n this.store = Datastore.create({\n filename: path.join(workDir, soft.DATA_PATH, soft.PLUGIN_STORE),\n autoload: true,\n });\n this.store.persistence.setAutocompactionInterval(1000 * 60 * 5);\n this.plugins = [];\n\n Logger.verbose('Loading plugin formats');\n this.formats = [RpcPlugin, NodeVmPlugin, NodePlugin];\n Logger.verbose('Found plugin formats:', this.formats);\n\n if (omegga) {\n // soon to be deprecated !help\n omegga.on('chatcmd:help', this.showHelp.bind(this));\n\n // use /plugins to get help\n omegga.on('cmd:plugins', this.showHelp.bind(this));\n }\n }\n\n // determine if this command is a command on the plugin\n isCommand(cmd: string) {\n return cmd === 'plugins' || this.plugins.some(p => p.isCommand(cmd));\n }\n\n // unload and load all installed plugins\n async reload() {\n let ok = true;\n Logger.verbose('Reloading plugins');\n for (const p of this.plugins) {\n try {\n // unload the plugin if it's loaded\n if (p.isLoaded()) await p.unload();\n\n // load the plugin if it successfully unloaded\n if (!p.isLoaded()) {\n // only load it if it is enabled\n if (p.isEnabled()) {\n Logger.verbose(\n 'Loading plugin',\n (p.constructor as typeof Plugin).getFormat(),\n p.getName().underline,\n );\n ok = (await p.load()) || ok;\n }\n } else {\n Logger.errorp(\n 'Did not successfully unload plugin',\n p.getName().brightRed.underline,\n );\n ok = false;\n }\n } catch (err) {\n Logger.errorp(\n 'Error loading plugin',\n p.getName().brightRed.underline,\n err,\n );\n ok = false;\n }\n }\n Logger.verbose('Finished reloading plugins');\n return ok;\n }\n\n // stop all plugins from running\n async unload() {\n Logger.verbose('Unloading plugins');\n let ok = true;\n // potentually use Promise.all\n for (const p of this.plugins) {\n try {\n // unload the plugin if it's loaded\n if (p.isLoaded()) {\n if (!(await p.unload())) {\n Logger.errorp(\n 'Could not unloading plugin',\n p.getName().brightRed.underline,\n );\n ok = false;\n continue;\n } else {\n Logger.verbose('Unloaded', p.getName().underline);\n }\n }\n } catch (e) {\n Logger.errorp(\n 'Error unloading plugin',\n p.getName().brightRed.underline,\n );\n ok = false;\n }\n }\n return ok;\n }\n\n /** Scans a plugin at the specified directory and create a Plugin object. */\n async scanPlugin(dir: string): Promise<Plugin | undefined> {\n Logger.verbose('Scanning plugin', dir.underline);\n\n if (!fs.existsSync(dir)) {\n Logger.errorp('Plugin directory does not exist', dir.brightRed.underline);\n return;\n }\n if (!fs.statSync(dir).isDirectory()) {\n Logger.errorp('Plugin must be a directory', dir.brightRed.underline);\n return;\n }\n\n // find a plugin format that can load in this plugin\n const PluginFormat = this.formats.find(f => f.canLoad(dir));\n\n // let users know if there's a missing plugin format\n if (!PluginFormat) {\n Logger.errorp('Missing plugin format for', dir);\n return;\n }\n try {\n // create the plugin format\n const plugin = PluginFormat && new PluginFormat(dir, this.omegga);\n if (!plugin.getDocumentation()) {\n Logger.errorp('Missing/invalid plugin documentation for', dir);\n return;\n }\n\n // create its storage\n const storage = new PluginStorage(this.store, plugin);\n await storage.init();\n\n // load the storage in\n plugin.setStorage(storage);\n\n // if there is a plugin format, create the plugin instance (but don't load yet)\n return plugin;\n } catch (e) {\n // if a plugin format fails to load, prevent omegga from dying\n Logger.errorp(\n 'Error loading plugin',\n dir.brightRed.underline,\n PluginFormat,\n e,\n );\n }\n }\n\n static calculateLoadOrder(unsortedPlugins: Plugin[]) {\n if (!unsortedPlugins.length) {\n return [];\n }\n\n // create a DAG of plugins based on dependencies, loadBefore, and loadAfter\n type DependencyGraphNode = {\n plugin: Plugin;\n inDegree: number;\n behind: string[];\n };\n type DependencyGraph = Record<string, DependencyGraphNode>;\n\n const depGraph = unsortedPlugins.reduce((graph, plugin) => {\n const name = plugin.getName();\n const {\n dependencies = {},\n loadAfter = [],\n loadBefore = [],\n } = plugin.pluginConfig ?? {};\n\n //create a node in case it doesn't exist\n graph[name] ??= {} as DependencyGraphNode;\n graph[name].plugin ??= plugin;\n graph[name].behind ??= [];\n graph[name].inDegree ??= 0;\n\n // add edges for everything ahead of name\n for (const depName of [...loadAfter, ...Object.keys(dependencies)]) {\n graph[name].behind.push(depName);\n\n //create a node and set an inDegree in case it doesn't exist\n graph[depName] ??= {} as DependencyGraphNode;\n graph[depName].inDegree ??= 0;\n\n graph[depName].inDegree++;\n }\n\n // add edges for everything behind name\n for (const depName of [...loadBefore]) {\n //create a node and a behind array in case it doesn't exist\n graph[depName] ??= {} as DependencyGraphNode;\n graph[depName].behind ??= [];\n\n graph[depName].behind.push(name);\n\n graph[name].inDegree++;\n }\n\n return graph;\n }, {} as DependencyGraph);\n\n // find all nodes with no incoming edges to start processing\n let zeros: string[] = Object.entries(depGraph).reduce(\n (arr, [name, { inDegree }]) => {\n if (inDegree === 0) {\n arr.push(name);\n }\n return arr;\n },\n [],\n );\n\n // execute a topological sort, grouping nodes where the order doesn't matter, in the order that *does* matter\n const result: string[][] = [];\n while (zeros.length) {\n // these nodes can be in any order\n result.unshift([...zeros]);\n\n const nextZero = [];\n\n for (const node of zeros) {\n for (const neighbor of depGraph[node].behind) {\n depGraph[neighbor].inDegree--;\n if (depGraph[neighbor].inDegree === 0) {\n nextZero.push(neighbor);\n }\n }\n }\n\n zeros = nextZero;\n }\n\n if (Object.values(depGraph).some(({ inDegree }) => inDegree > 0)) {\n Logger.verbose(\n 'Cyclic or missing dependencies detected in plugins. Could not resolve load order.',\n );\n return [];\n }\n\n return result\n .map(interchangeablePlugins =>\n interchangeablePlugins\n .map(name => depGraph[name].plugin)\n // alphabetical order for the sub groups where order doesn't matter so its deterministic\n .sort((a, b) => a.getName().localeCompare(b.getName())),\n )\n .flat()\n .sort((a, b) => {\n const A = a.pluginConfig?.loadPriority;\n const B = b.pluginConfig?.loadPriority;\n const aU = A == null;\n const bU = B == null;\n // sort the result by load priority so that\n // a defined loadPriority that is negative comes before undefined (lower is earlier)\n // and a defined loadPriority that is positive comes after undefined (higher is later)\n if (aU && bU) return 0;\n if (aU) return B <= 0 ? 1 : -1;\n if (bU) return A <= 0 ? -1 : 1;\n return A - B;\n });\n }\n\n /** Scans plugin directory for plugins and builds their documentation. */\n async scan() {\n Logger.verbose('Scanning plugin directory');\n // plugin directory doesn't exist\n if (!fs.existsSync(this.path)) {\n Logger.verbose('Plugin directory is missing');\n return false;\n }\n\n // make sure there are no plugins running\n if (this.plugins.some(p => p.isLoaded())) {\n Logger.errorp('Cannot re-scan plugins while a plugin is loaded');\n return false;\n }\n\n // find all directories in the plugin path\n const unsortedPlugins = (\n await Promise.all(\n fs\n .readdirSync(this.path)\n .map(dir => path.join(this.path, dir)) // convert from local paths\n .map(async dir => this.scanPlugin(dir)),\n )\n )\n // remove plugins without formats\n .filter(p => p);\n\n this.plugins = PluginLoader.calculateLoadOrder(unsortedPlugins);\n\n Logger.verbose('Finished scanning plugin directory');\n Logger.verbose(\n `Found ${this.plugins.length} plugins.Loading in this order: `,\n this.plugins.map(p => p.getName()),\n );\n\n this.buildDocumentation();\n\n return true;\n }\n\n // show helptext\n showHelp(player: string | Player, ...args: string[]) {\n // send the message to the player\n const send = (msg: string) => this.omegga.whisper(player, msg);\n\n // available commands and documentation from the plugin system\n const commands = this.commands ?? {};\n const docs = this.documentation ?? {};\n\n const splitHelper = (objs: string[]) => {\n const lines = [];\n while (objs.length > 0) {\n const [item] = objs.splice(0, 1);\n if (!lines.length || lines[lines.length - 1].length + item.length > 150)\n lines.push(item);\n else lines[lines.length - 1] += ', ' + item;\n }\n return lines;\n };\n\n // no arguments\n if (!args.length) {\n send(\n '\"Use <code>/plugins plugin</>, <code>/plugins !command</>, <code>/plugins /command</> for more information\"',\n );\n const plugins = Object.keys(docs).map(\n d =>\n `<color=\\\\\"${\n docs[d]._plugin.isLoaded() ? 'aaffaa' : 'aaaaaa'\n }\\\\\">${d}</>`,\n );\n if (!plugins.length) {\n send('\"<b>No Installed Plugins</>\"');\n } else {\n const lines = splitHelper(plugins);\n send(`\"<b>Installed Plugins</>: ${lines[0]}\"`);\n for (let i = 1; i < lines.length; i++) send(`\"${lines[i]}\"`);\n }\n\n // plugin or command argument\n } else if (args.length > 0) {\n const target = args.join(' ').toLowerCase();\n\n // argument is a plugin; render description, author, and commands\n if (target in docs) {\n const doc = docs[target];\n const desc = doc.description || 'no description';\n const color = doc._plugin.isLoaded() ? 'aaffaa' : 'aaaaaa';\n send(\n `\"<b>Plugin</> <code><color=\\\\\"${color}\\\\\">${doc.name}</></>: ${desc}\"`,\n );\n\n if (doc.author)\n send(`\"<b>Author</>: <color=\\\\\"c4d7f5\\\\\"><b>${doc.author}</></>\"`);\n\n if (doc.commands && doc.commands.length > 0) {\n const lines = splitHelper(\n doc.commands.map(c => `<code>${c.name}</>`),\n );\n send(`\"<b>Commands</>: ${lines[0]}\"`);\n for (let i = 1; i < lines.length; i++) send(`\"${lines[i]}\"`);\n }\n\n // argument is a command\n } else if (target in commands) {\n const cmd = commands[target];\n const desc = cmd.description || 'no description';\n const example = cmd.example || 'no example';\n const color = cmd._plugin.isLoaded() ? 'aaffaa' : 'aaaaaa';\n send(\n `\"<b>Command</> <code><color=\\\\\"${color}\\\\\">${cmd.name}</></>: ${desc}\"`,\n );\n send(`\"<b>Example</>: <code>${example}</>\"`);\n if (cmd.args && cmd.args.length > 0) {\n send('\"<b>Arguments</>:\"');\n for (const arg of cmd.args) {\n const desc = arg.description || 'no description';\n send(\n `\"- <code>${arg.name}</>${\n arg.required ? ' (required)' : ''\n }: ${desc}\"`,\n );\n }\n } else {\n send('\"<b>Arguments</>: None\"');\n }\n\n // user takes the helptext literally\n } else if (\n args[0] === '!command' ||\n args[0] === '/command' ||\n args[0] === 'plugin'\n ) {\n send(\n '\"Use <code>/plugins [name of plugin]</> or <code>/plugins [name of !command or /command]</> for more help for the respective plugin or command\"',\n );\n\n // argument is not found\n } else {\n send('\"Could not find that command or plugin\"');\n }\n\n // too many arguments\n } else {\n send(\n '\"Use <code>/plugins</> to list plugins and <code>/plugins plugin</> or <code>!help !command or /command</> for more information\"',\n );\n }\n }\n\n // generate documentation from loaded plugins\n buildDocumentation() {\n this.documentation = {};\n this.commands = {};\n for (const plugin of this.plugins) {\n // make sure this plugin has docs\n const doc = JSON.parse(JSON.stringify(plugin.getDocumentation()));\n if (!doc) continue;\n const name = plugin.getName();\n if (!name) continue;\n\n // add the documentation into a dictionary\n this.documentation[name.toLowerCase()] = doc;\n doc._plugin = plugin;\n\n // add all the commands into a dictionary\n if (doc.commands) {\n for (const cmd of doc.commands) {\n this.commands[cmd.name.toLowerCase()] = cmd;\n cmd._plugin = plugin;\n }\n }\n }\n }\n}\n"],"names":["soft","Logger","RpcPlugin","NodeVmPlugin","NodePlugin","desc"],"mappings":"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"}
|