@serverkgg/bridge 0.1.3 → 0.1.5

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 (78) hide show
  1. package/package.json +1 -1
  2. package/rules/package.md +5 -0
  3. package/src/bot/botCauses.test.ts +284 -0
  4. package/src/bot/botCauses.ts +58 -0
  5. package/src/bot/botDeploy.test.ts +260 -1
  6. package/src/bot/botDeploy.ts +125 -6
  7. package/src/bot/botState.ts +6 -0
  8. package/src/bot/detect/botInspectWarning.ts +3 -1
  9. package/src/bot/detect/botPackageManager.ts +3 -0
  10. package/src/bot/detect/corpus/alexmubarakshin-ts-telegraf-boilerplate.json +37 -0
  11. package/src/bot/detect/corpus/alsarmad-discord-quran-bot.json +40 -0
  12. package/src/bot/detect/corpus/anasty17-mirror-leech-telegram-bot.json +50 -0
  13. package/src/bot/detect/corpus/anidiotsguide-guidebot.json +36 -0
  14. package/src/bot/detect/corpus/anonymousx1025-anonxmusic.json +45 -0
  15. package/src/bot/detect/corpus/bot-base-telegram-bot-template.json +35 -0
  16. package/src/bot/detect/corpus/bracketed-templates-discordjs.json +40 -0
  17. package/src/bot/detect/corpus/cog-creators-red-discordbot.json +49 -0
  18. package/src/bot/detect/corpus/cranberriez-discord.ts-bot-template.json +35 -0
  19. package/src/bot/detect/corpus/crazycat256-nextcord-bot-template.json +38 -0
  20. package/src/bot/detect/corpus/discord-tickets-bot.json +45 -0
  21. package/src/bot/detect/corpus/edjopato-telegram-typescript-bot-template.json +37 -0
  22. package/src/bot/detect/corpus/haniali3161-bot-adhkar-telegram.json +33 -0
  23. package/src/bot/detect/corpus/hellosverre-discord-ts-template.json +34 -0
  24. package/src/bot/detect/corpus/kevinnovak-discord-bot-typescript-template.json +43 -0
  25. package/src/bot/detect/corpus/kkrypt0nn-python-discord-bot-template.json +41 -0
  26. package/src/bot/detect/corpus/kolezka-telegram-grammy-template.json +37 -0
  27. package/src/bot/detect/corpus/latand-tgbot_template_v3.json +37 -0
  28. package/src/bot/detect/corpus/mahmoudbm77-zekr-telegram-bot.json +36 -0
  29. package/src/bot/detect/corpus/mericcan41-discordjs-v14-template-ts.json +33 -0
  30. package/src/bot/detect/corpus/modmail-dev-modmail.json +52 -0
  31. package/src/bot/detect/corpus/nezdemkovski-telegram-bot-boilerplate.json +39 -0
  32. package/src/bot/detect/corpus/notchum-discord-bot-template.json +39 -0
  33. package/src/bot/detect/corpus/python-discord-bot.json +44 -0
  34. package/src/bot/detect/corpus/python-telegram-bot-rules-bot.json +39 -0
  35. package/src/bot/detect/corpus/rajdave69-pycord-bot-template.json +31 -0
  36. package/src/bot/detect/corpus/rapptz-robodanny.json +36 -0
  37. package/src/bot/detect/corpus/ry2x-typescript-discord.js-v.14-template.json +35 -0
  38. package/src/bot/detect/corpus/saiteja-madha-discord-js-bot.json +45 -0
  39. package/src/bot/detect/corpus/seegreatness-discord.js-for-heroku.json +37 -0
  40. package/src/bot/detect/corpus/serverk-discord-node.json +36 -0
  41. package/src/bot/detect/corpus/serverk-discord-python.json +35 -0
  42. package/src/bot/detect/corpus/serverk-telegram-node.json +36 -0
  43. package/src/bot/detect/corpus/serverk-telegram-python.json +35 -0
  44. package/src/bot/detect/corpus/shuruhatik-quran-radio-bot-discord.json +33 -0
  45. package/src/bot/detect/corpus/skyra-project-skyra.json +46 -0
  46. package/src/bot/detect/corpus/tgbot-collection-ytdlbot.json +41 -0
  47. package/src/bot/detect/corpus/zeriodev-music-bot.json +38 -0
  48. package/src/bot/detect/detect.corpus.test.ts +77 -0
  49. package/src/bot/detect/detect.test.ts +414 -17
  50. package/src/bot/detect/detect.ts +347 -36
  51. package/src/bot/detect/detectResult.ts +4 -0
  52. package/src/bot/detect/detectTable.test.ts +22 -6
  53. package/src/bot/detect/detectTable.ts +187 -19
  54. package/src/bot/detect/detectedVersion.ts +5 -0
  55. package/src/bot/detect/envExample.test.ts +55 -1
  56. package/src/bot/detect/envExample.ts +14 -0
  57. package/src/bot/detect/index.ts +1 -0
  58. package/src/bot/detect/keys.test.ts +32 -1
  59. package/src/bot/detect/keys.ts +15 -0
  60. package/src/bot/detect/serverkJson.test.ts +2 -0
  61. package/src/bot/detect/serverkJson.ts +4 -1
  62. package/src/bot/index.ts +1 -0
  63. package/src/cli/validate.test.ts +127 -1
  64. package/src/cli/validate.ts +42 -0
  65. package/src/manifest/manifest.ts +2 -1
  66. package/src/modules/bridge.ts +2 -0
  67. package/src/modules/bridgeModule.ts +5 -0
  68. package/src/protocol/bridgeCrash.ts +49 -0
  69. package/src/protocol/bridgeEvents.ts +9 -0
  70. package/src/protocol/bridgePreview.ts +1 -0
  71. package/src/rcon/rconAccess.ts +1 -1
  72. package/src/runtime/bridgeDriver.test.ts +45 -0
  73. package/src/runtime/bridgeDriver.ts +25 -0
  74. package/src/runtime/bridgeEvents.ts +2 -0
  75. package/src/runtime/bridgeRegistry.test.ts +32 -0
  76. package/src/runtime/bridgeSupervisor.test.ts +163 -3
  77. package/src/runtime/bridgeSupervisor.ts +42 -1
  78. package/src/runtime/serve.ts +26 -5
@@ -98,6 +98,14 @@ export const serve = async (driver: BridgeDriver) => {
98
98
 
99
99
  const setup = createSetupHandlers(driver, log, redact);
100
100
 
101
+ const runHook = (hook: string, run: () => Promise<void>) => {
102
+ void run().catch((error: unknown) => {
103
+ log.warn(`lifecycle ${hook} hook failed`, {
104
+ error: errorText(error),
105
+ });
106
+ });
107
+ };
108
+
101
109
  const supervisor = createSupervisor({
102
110
  cwd: config.cwd,
103
111
  uid: config.gameUid,
@@ -108,6 +116,8 @@ export const serve = async (driver: BridgeDriver) => {
108
116
  subject: driver.lifecycle.subject,
109
117
  ready: driver.lifecycle.ready,
110
118
  failed: driver.lifecycle.failed,
119
+ graceSeconds: driver.lifecycle.graceSeconds,
120
+ stableLine: driver.lifecycle.stableLine,
111
121
  redact,
112
122
  onLog: log,
113
123
  async resolveCommand() {
@@ -124,20 +134,31 @@ export const serve = async (driver: BridgeDriver) => {
124
134
  await driver.lifecycle.stop?.(context);
125
135
  },
126
136
  onReady() {
127
- void Promise.resolve(driver.lifecycle.onReady?.(context)).catch((error: unknown) => {
128
- log.warn("lifecycle ready hook failed", {
129
- error: errorText(error),
130
- });
137
+ ring.discard();
138
+
139
+ runHook("ready", async () => {
140
+ await driver.lifecycle.onReady?.(context);
131
141
  });
132
142
  },
133
143
  onStable() {
134
144
  ring.discard();
145
+
146
+ runHook("stable", async () => {
147
+ await driver.lifecycle.onStable?.(context);
148
+ });
135
149
  },
136
150
  onStopped() {
137
151
  ring.discard();
138
152
  },
139
153
  onExit(record) {
140
- ring.crash(record);
154
+ const cause = ring.crash(record);
155
+
156
+ runHook("exit", async () => {
157
+ await driver.lifecycle.onExit?.(context, {
158
+ ...record,
159
+ cause,
160
+ });
161
+ });
141
162
  },
142
163
  });
143
164