summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--api/src/plugins/example-plugin/index.ts0
-rw-r--r--bundle/src/Server.ts2
-rw-r--r--fosscord-server.code-workspace35
-rwxr-xr-xplugins/example-plugin/build.sh8
-rw-r--r--plugins/example-plugin/index.ts7
-rw-r--r--plugins/example-plugin/plugin.json (renamed from api/src/plugins/example-plugin/plugin.json)3
-rw-r--r--plugins/example-plugin/tsconfig.json85
7 files changed, 129 insertions, 11 deletions
diff --git a/api/src/plugins/example-plugin/index.ts b/api/src/plugins/example-plugin/index.ts
deleted file mode 100644
index e69de29b..00000000
--- a/api/src/plugins/example-plugin/index.ts
+++ /dev/null
diff --git a/bundle/src/Server.ts b/bundle/src/Server.ts
index 3ed98b15..165ab121 100644
--- a/bundle/src/Server.ts
+++ b/bundle/src/Server.ts
@@ -10,6 +10,7 @@ import { green, bold, yellow } from "picocolors";
 import { Config, getOrInitialiseDatabase } from "@fosscord/util";
 import * as Sentry from "@sentry/node";
 import * as Tracing from "@sentry/tracing";
+import { PluginLoader } from "@fosscord/util";
 
 const app = express();
 const server = http.createServer();
@@ -94,6 +95,7 @@ async function main() {
 		});
 	}
 	console.log(`[Server] ${green(`listening on port ${bold(port)}`)}`);
+	PluginLoader.loadPlugins();
 }
 
 main().catch(console.error);
diff --git a/fosscord-server.code-workspace b/fosscord-server.code-workspace
index 7491cb35..4a7440f6 100644
--- a/fosscord-server.code-workspace
+++ b/fosscord-server.code-workspace
@@ -1,13 +1,10 @@
 {
 	"folders": [
 		{
-			"path": "api"
-		},
-		{
-			"path": "dashboard"
+			"path": "bundle"
 		},
 		{
-			"path": "bundle"
+			"path": "api"
 		},
 		{
 			"path": "cdn"
@@ -16,13 +13,31 @@
 			"path": "gateway"
 		},
 		{
-			"path": "rtc"
-		},
-		{
 			"path": "util"
 		},
 		{
-			"path": "webrtc"
+			"path": "plugins"
+		}
+	],
+	"settings": {
+		"files.exclude": {
+			".gitignore": true,
+			".npmignore": true,
+			".prettierrc": true,
+			".vscode": true,
+			"*.ansi": true,
+			"benchmarks": true,
+			"database.db": true,
+			"files/": true,
+			"jest": true,
+			"locales/[!e]*": true,
+			"locales/e[!n]*": true,
+			"node_modules": true,
+			"package-lock.json": true,
+			"patches": true,
+			"README.md": true,
+			"tests/": true,
+			"tsconfig.tsbuildinfo": true
 		}
-	]
+	}
 }
diff --git a/plugins/example-plugin/build.sh b/plugins/example-plugin/build.sh
new file mode 100755
index 00000000..cf8463ed
--- /dev/null
+++ b/plugins/example-plugin/build.sh
@@ -0,0 +1,8 @@
+#rm -rf dist/
+#mkdir dist
+rm -rfv *.js *.js.map
+ln -s ../../bundle/node_modules node_modules
+mkdir -p ../../node_modules/@fosscord
+ln -s ../../util ../../node_modules/@fosscord/util
+ln -s ../../api ../../node_modules/@fosscord/api
+tsc -p .
diff --git a/plugins/example-plugin/index.ts b/plugins/example-plugin/index.ts
new file mode 100644
index 00000000..ec1ed7b5
--- /dev/null
+++ b/plugins/example-plugin/index.ts
@@ -0,0 +1,7 @@
+import { Plugin } from "@fosscord/util"
+
+export default class TestPlugin extends Plugin {
+    onPluginLoaded(): void {
+        console.log("Hello from test plugin! IT WORKS!!!!!!!");
+    }
+}
\ No newline at end of file
diff --git a/api/src/plugins/example-plugin/plugin.json b/plugins/example-plugin/plugin.json
index 8d98276c..980edbdf 100644
--- a/api/src/plugins/example-plugin/plugin.json
+++ b/plugins/example-plugin/plugin.json
@@ -1,8 +1,9 @@
 {
+    "id": "example-plugin",
     "name": "Fosscord example plugin",
     "authors": [
         "The Arcane Brony"
     ],
     "repository": "https://github.com/fosscord/fosscord-server",
     "license": ""
-}
\ No newline at end of file
+}
diff --git a/plugins/example-plugin/tsconfig.json b/plugins/example-plugin/tsconfig.json
new file mode 100644
index 00000000..5ff9e607
--- /dev/null
+++ b/plugins/example-plugin/tsconfig.json
@@ -0,0 +1,85 @@
+{

+	"include": ["./**/*.ts"],

+	"exclude": [],

+	"compilerOptions": {

+

+		/* Basic Options */

+		"incremental": false /* Enable incremental compilation */,

+		"target": "ESNext" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */,

+		"module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */,

+		"lib": [

+			"ESNext"

+		] /* Specify library files to be included in the compilation. */,

+		"allowJs": true /* Allow javascript files to be compiled. */,

+		"checkJs": true /* Report errors in .js files. */,

+		// "jsx": "preserve",                     /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */

+		"declaration": false /* Generates corresponding '.d.ts' file. */,

+		"declarationMap": false /* Generates a sourcemap for each corresponding '.d.ts' file. */,

+		"sourceMap": true /* Generates corresponding '.map' file. */,

+		// "outFile": "./",                       /* Concatenate and emit output to single file. */

+		"outDir": "./dist/" /* Redirect output structure to the directory. */,

+		"rootDir": "./" /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */,

+		// "composite": true,                     /* Enable project compilation */

+		// "tsBuildInfoFile": "./",               /* Specify file to store incremental compilation information */

+		// "removeComments": true,                /* Do not emit comments to output. */

+		// "noEmit": true,                        /* Do not emit outputs. */

+		// "importHelpers": true,                 /* Import emit helpers from 'tslib'. */

+		// "downlevelIteration": true,            /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */

+		// "isolatedModules": true,               /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */

+

+		/* Strict Type-Checking Options */

+		"strict": true /* Enable all strict type-checking options. */,

+		"noImplicitAny": true /* Raise error on expressions and declarations with an implied 'any' type. */,

+		"strictNullChecks": true /* Enable strict null checks. */,

+		// "strictFunctionTypes": true,           /* Enable strict checking of function types. */

+		// "strictBindCallApply": true,           /* Enable strict 'bind', 'call', and 'apply' methods on functions. */

+		"strictPropertyInitialization": false /* Enable strict checking of property initialization in classes. */,

+		// "noImplicitThis": true,                /* Raise error on 'this' expressions with an implied 'any' type. */

+		"alwaysStrict": true /* Parse in strict mode and emit "use strict" for each source file. */,

+

+		/* Additional Checks */

+		// "noUnusedLocals": true,                /* Report errors on unused locals. */

+		// "noUnusedParameters": true,            /* Report errors on unused parameters. */

+		// "noImplicitReturns": true,             /* Report error when not all code paths in function return a value. */

+		// "noFallthroughCasesInSwitch": true,    /* Report errors for fallthrough cases in switch statement. */

+

+		/* Module Resolution Options */

+		"moduleResolution": "node",            /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */

+		// "rootDirs": [],                        /* List of root folders whose combined content represents the structure of the project at runtime. */

+		// "typeRoots": [],                       /* List of folders to include type definitions from. */

+		"types": [

+			"node"

+		] /* Type declaration files to be included in compilation. */,

+		// "allowSyntheticDefaultImports": true,  /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */

+		"esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */,

+		// "preserveSymlinks": true,              /* Do not resolve the real path of symlinks. */

+		// "allowUmdGlobalAccess": true,          /* Allow accessing UMD globals from modules. */

+

+		/* Source Map Options */

+		// "sourceRoot": "",                      /* Specify the location where debugger should locate TypeScript files instead of source locations. */

+		// "mapRoot": "",                         /* Specify the location where debugger should locate map files instead of generated locations. */

+		// "inlineSourceMap": true,               /* Emit a single file with source maps instead of having a separate file. */

+		// "inlineSources": true,                 /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */

+

+		/* Experimental Options */

+		// "experimentalDecorators": true,        /* Enables experimental support for ES7 decorators. */

+		// "emitDecoratorMetadata": true,         /* Enables experimental support for emitting type metadata for decorators. */

+

+		/* Advanced Options */

+		"skipLibCheck": true /* Skip type checking of declaration files. */,

+		"forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */,

+		"emitDecoratorMetadata": true,

+		"experimentalDecorators": true,

+		"resolveJsonModule": true,

+		"baseUrl": "../../",

+		"paths": {

+			"@fosscord/api": ["../../api/src/index"],

+			"@fosscord/gateway": ["../../gateway/src/index"],

+			"@fosscord/cdn": ["../../cdn/src/index"],

+			"@fosscord/util": ["../../util/src/index"]

+		},

+		"plugins": [{ "transform": "@ovos-media/ts-transform-paths" }],

+		"noEmitHelpers": true,

+		"importHelpers": true

+	}

+}