grim-server 0.1.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.
Files changed (73) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +186 -0
  3. package/dist/artifacts/cache.d.ts +6 -0
  4. package/dist/artifacts/cache.d.ts.map +1 -0
  5. package/dist/artifacts/cache.js +73 -0
  6. package/dist/artifacts/cache.js.map +1 -0
  7. package/dist/artifacts/grim.d.ts +3 -0
  8. package/dist/artifacts/grim.d.ts.map +1 -0
  9. package/dist/artifacts/grim.js +94 -0
  10. package/dist/artifacts/grim.js.map +1 -0
  11. package/dist/artifacts/http.d.ts +8 -0
  12. package/dist/artifacts/http.d.ts.map +1 -0
  13. package/dist/artifacts/http.js +51 -0
  14. package/dist/artifacts/http.js.map +1 -0
  15. package/dist/artifacts/index.d.ts +5 -0
  16. package/dist/artifacts/index.d.ts.map +1 -0
  17. package/dist/artifacts/index.js +4 -0
  18. package/dist/artifacts/index.js.map +1 -0
  19. package/dist/artifacts/paper.d.ts +4 -0
  20. package/dist/artifacts/paper.d.ts.map +1 -0
  21. package/dist/artifacts/paper.js +56 -0
  22. package/dist/artifacts/paper.js.map +1 -0
  23. package/dist/artifacts/types.d.ts +21 -0
  24. package/dist/artifacts/types.d.ts.map +1 -0
  25. package/dist/artifacts/types.js +2 -0
  26. package/dist/artifacts/types.js.map +1 -0
  27. package/dist/artifacts.d.ts +2 -0
  28. package/dist/artifacts.d.ts.map +1 -0
  29. package/dist/artifacts.js +2 -0
  30. package/dist/artifacts.js.map +1 -0
  31. package/dist/cli.d.ts +3 -0
  32. package/dist/cli.d.ts.map +1 -0
  33. package/dist/cli.js +57 -0
  34. package/dist/cli.js.map +1 -0
  35. package/dist/config.d.ts +31 -0
  36. package/dist/config.d.ts.map +1 -0
  37. package/dist/config.js +174 -0
  38. package/dist/config.js.map +1 -0
  39. package/dist/index.d.ts +4 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +4 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/server/artifacts.d.ts +9 -0
  44. package/dist/server/artifacts.d.ts.map +1 -0
  45. package/dist/server/artifacts.js +65 -0
  46. package/dist/server/artifacts.js.map +1 -0
  47. package/dist/server/index.d.ts +7 -0
  48. package/dist/server/index.d.ts.map +1 -0
  49. package/dist/server/index.js +17 -0
  50. package/dist/server/index.js.map +1 -0
  51. package/dist/server/java.d.ts +2 -0
  52. package/dist/server/java.d.ts.map +1 -0
  53. package/dist/server/java.js +72 -0
  54. package/dist/server/java.js.map +1 -0
  55. package/dist/server/launch.d.ts +4 -0
  56. package/dist/server/launch.d.ts.map +1 -0
  57. package/dist/server/launch.js +35 -0
  58. package/dist/server/launch.js.map +1 -0
  59. package/dist/server/process.d.ts +4 -0
  60. package/dist/server/process.d.ts.map +1 -0
  61. package/dist/server/process.js +48 -0
  62. package/dist/server/process.js.map +1 -0
  63. package/dist/server/properties.d.ts +3 -0
  64. package/dist/server/properties.d.ts.map +1 -0
  65. package/dist/server/properties.js +45 -0
  66. package/dist/server/properties.js.map +1 -0
  67. package/dist/server/types.d.ts +18 -0
  68. package/dist/server/types.d.ts.map +1 -0
  69. package/dist/server/types.js +2 -0
  70. package/dist/server/types.js.map +1 -0
  71. package/package.json +59 -0
  72. package/vendor/grim.json +10 -0
  73. package/vendor/grimac-bukkit-2.3.73.jar +0 -0
@@ -0,0 +1,3 @@
1
+ import type { GrimServerConfig } from '../config.js';
2
+ export declare function ensureServerFiles(config: GrimServerConfig): Promise<void>;
3
+ //# sourceMappingURL=properties.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"properties.d.ts","sourceRoot":"","sources":["../../src/server/properties.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAG/E"}
@@ -0,0 +1,45 @@
1
+ import { access, readFile, writeFile } from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ export async function ensureServerFiles(config) {
4
+ await ensureFile(path.join(config.serverDir, 'eula.txt'), 'eula=true\n');
5
+ await ensureProperties(config);
6
+ }
7
+ async function ensureProperties(config) {
8
+ const file = path.join(config.serverDir, 'server.properties');
9
+ const values = await readProperties(file);
10
+ values.set('online-mode', String(config.onlineMode));
11
+ values.set('allow-flight', String(config.allowFlight));
12
+ values.set('motd', sanitize(config.motd));
13
+ values.set('server-port', String(config.port));
14
+ for (const [key, value] of Object.entries(config.serverProperties)) {
15
+ values.set(key, sanitize(String(value)));
16
+ }
17
+ await writeFile(file, [...values].map(([key, value]) => `${key}=${value}`).join('\n') + '\n', 'utf8');
18
+ }
19
+ async function readProperties(file) {
20
+ try {
21
+ const current = await readFile(file, 'utf8');
22
+ const values = new Map();
23
+ for (const line of current.split(/\r?\n/)) {
24
+ const index = line.indexOf('=');
25
+ if (index > 0)
26
+ values.set(line.slice(0, index), line.slice(index + 1));
27
+ }
28
+ return values;
29
+ }
30
+ catch {
31
+ return new Map();
32
+ }
33
+ }
34
+ async function ensureFile(file, content) {
35
+ try {
36
+ await access(file);
37
+ }
38
+ catch {
39
+ await writeFile(file, content, 'utf8');
40
+ }
41
+ }
42
+ function sanitize(value) {
43
+ return value.replace(/\r?\n/g, ' ');
44
+ }
45
+ //# sourceMappingURL=properties.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"properties.js","sourceRoot":"","sources":["../../src/server/properties.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAwB;IAC9D,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,aAAa,CAAC,CAAC;IACzE,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,MAAwB;IACtD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IACrD,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;IACvD,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1C,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACnE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,MAAM,SAAS,CACb,IAAI,EACJ,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,EACtE,MAAM,CACP,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,IAAY;IACxC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;QACzC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,KAAK,GAAG,CAAC;gBAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,GAAG,EAAE,CAAC;IACnB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,IAAY,EAAE,OAAe;IACrD,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC7B,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { ChildProcess } from 'node:child_process';
2
+ import type { Artifact, HttpClient } from '../artifacts/index.js';
3
+ export type LaunchOptions = {
4
+ fetch?: HttpClient;
5
+ signal?: AbortSignal;
6
+ };
7
+ export type ServerHandle = ChildProcess & {
8
+ command(input: string): boolean;
9
+ say(message: string): boolean;
10
+ stop(): boolean;
11
+ killServer(): boolean;
12
+ onLine(listener: (line: string) => void): ServerHandle;
13
+ onLog(listener: (line: string, stream: 'stdout' | 'stderr') => void): ServerHandle;
14
+ };
15
+ export type ResolvedArtifact = Artifact & {
16
+ path: string;
17
+ };
18
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAElE,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG;IACxC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9B,IAAI,IAAI,OAAO,CAAC;IAChB,UAAU,IAAI,OAAO,CAAC;IACtB,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,YAAY,CAAC;IACvD,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,KAAK,IAAI,GAAG,YAAY,CAAC;CACpF,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,59 @@
1
+ {
2
+ "name": "grim-server",
3
+ "version": "0.1.0",
4
+ "description": "Ready to deploy Minecraft server with Grim anticheat.",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "bin": {
8
+ "grim-server": "dist/cli.js"
9
+ },
10
+ "files": [
11
+ "dist",
12
+ "README.md",
13
+ "LICENSE",
14
+ "vendor"
15
+ ],
16
+ "engines": {
17
+ "node": ">=20"
18
+ },
19
+ "scripts": {
20
+ "build": "tsc -p tsconfig.json",
21
+ "bundle": "node scripts/bundle-artifacts.mjs",
22
+ "bundle:runtime": "node scripts/bundle-runtime.mjs",
23
+ "clean": "node -e \"import('node:fs').then(({rmSync})=>rmSync('dist',{recursive:true,force:true}))\"",
24
+ "format": "prettier --write .",
25
+ "format:check": "prettier --check .",
26
+ "lint": "eslint .",
27
+ "typecheck": "tsc -p tsconfig.json --noEmit",
28
+ "test": "node --import tsx --test test/**/*.test.ts",
29
+ "check": "npm run format:check && npm run lint && npm run typecheck && npm test",
30
+ "init": "node dist/cli.js init",
31
+ "start": "node dist/cli.js start",
32
+ "versions": "node dist/cli.js versions",
33
+ "prepare": "npm run build",
34
+ "prepublishOnly": "npm run bundle"
35
+ },
36
+ "dependencies": {
37
+ "extract-zip": "^2.0.1",
38
+ "tar": "^7.4.3"
39
+ },
40
+ "publishConfig": {
41
+ "access": "public"
42
+ },
43
+ "devDependencies": {
44
+ "@eslint/js": "^9.22.0",
45
+ "@semantic-release/commit-analyzer": "^13.0.1",
46
+ "@semantic-release/github": "^11.0.3",
47
+ "@semantic-release/npm": "^12.0.1",
48
+ "@semantic-release/release-notes-generator": "^14.0.3",
49
+ "@types/node": "^22.13.10",
50
+ "eslint": "^9.22.0",
51
+ "eslint-config-prettier": "^10.1.1",
52
+ "globals": "^15.15.0",
53
+ "prettier": "^3.5.3",
54
+ "tsx": "^4.19.3",
55
+ "typescript": "^5.8.2",
56
+ "typescript-eslint": "^8.26.0",
57
+ "semantic-release": "^24.2.3"
58
+ }
59
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "minecraftVersion": "1.21.11",
3
+ "version": "2.3.73",
4
+ "filename": "grimac-bukkit-2.3.73.jar",
5
+ "source": "https://cdn.modrinth.com/data/LJNGWSvH/versions/1FIGlM6Q/grimac-bukkit-2.3.73.jar",
6
+ "checksum": {
7
+ "algorithm": "sha512",
8
+ "value": "bf9be1194eb45afe1dec6bd8e98d078dacf41539025c8aabe24d31337cbea86625774e30842568b47f34ca174472c724c7876cc30793945e7408b03609672655"
9
+ }
10
+ }
Binary file