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.
Files changed (255) hide show
  1. package/README.md +20 -1
  2. package/dist/brickadia/config.js +26 -90
  3. package/dist/brickadia/config.js.map +1 -1
  4. package/dist/brickadia/server.js +294 -293
  5. package/dist/brickadia/server.js.map +1 -1
  6. package/dist/cli/auth.js +149 -177
  7. package/dist/cli/auth.js.map +1 -1
  8. package/dist/cli/config.js +64 -66
  9. package/dist/cli/config.js.map +1 -1
  10. package/dist/cli/index.js +14 -14
  11. package/dist/cli/index.js.map +1 -1
  12. package/dist/cli/installer.js +37 -43
  13. package/dist/cli/installer.js.map +1 -1
  14. package/dist/cli/plugin.js +651 -682
  15. package/dist/cli/plugin.js.map +1 -1
  16. package/dist/cli/terminal.js +811 -733
  17. package/dist/cli/terminal.js.map +1 -1
  18. package/dist/config/formats/format_js.js +6 -6
  19. package/dist/config/formats/format_js.js.map +1 -1
  20. package/dist/config/formats/format_yml.js +7 -10
  21. package/dist/config/formats/format_yml.js.map +1 -1
  22. package/dist/config/index.js +46 -68
  23. package/dist/config/index.js.map +1 -1
  24. package/dist/config/reader.js +16 -27
  25. package/dist/config/reader.js.map +1 -1
  26. package/dist/config/validator.js +23 -25
  27. package/dist/config/validator.js.map +1 -1
  28. package/dist/config/writer.js +11 -21
  29. package/dist/config/writer.js.map +1 -1
  30. package/dist/index.js +18 -64
  31. package/dist/index.js.map +1 -1
  32. package/dist/info/default_commands.json.js +39 -0
  33. package/dist/info/default_commands.json.js.map +1 -0
  34. package/dist/logger.js +61 -60
  35. package/dist/logger.js.map +1 -1
  36. package/dist/main.js +424 -471
  37. package/dist/main.js.map +1 -1
  38. package/dist/omegga/auth.js +101 -148
  39. package/dist/omegga/auth.js.map +1 -1
  40. package/dist/omegga/commandInjector.js +261 -251
  41. package/dist/omegga/commandInjector.js.map +1 -1
  42. package/dist/omegga/index.js +14 -52
  43. package/dist/omegga/index.js.map +1 -1
  44. package/dist/omegga/logWrangler.js +224 -275
  45. package/dist/omegga/logWrangler.js.map +1 -1
  46. package/dist/omegga/matchers/auth.js +36 -50
  47. package/dist/omegga/matchers/auth.js.map +1 -1
  48. package/dist/omegga/matchers/chat.js +49 -71
  49. package/dist/omegga/matchers/chat.js.map +1 -1
  50. package/dist/omegga/matchers/command.js +25 -36
  51. package/dist/omegga/matchers/command.js.map +1 -1
  52. package/dist/omegga/matchers/exit.js +15 -18
  53. package/dist/omegga/matchers/exit.js.map +1 -1
  54. package/dist/omegga/matchers/index.js +26 -40
  55. package/dist/omegga/matchers/index.js.map +1 -1
  56. package/dist/omegga/matchers/init.js +20 -23
  57. package/dist/omegga/matchers/init.js.map +1 -1
  58. package/dist/omegga/matchers/interact.js +58 -64
  59. package/dist/omegga/matchers/interact.js.map +1 -1
  60. package/dist/omegga/matchers/join.js +74 -95
  61. package/dist/omegga/matchers/join.js.map +1 -1
  62. package/dist/omegga/matchers/leave.js +43 -56
  63. package/dist/omegga/matchers/leave.js.map +1 -1
  64. package/dist/omegga/matchers/mapChange.js +26 -35
  65. package/dist/omegga/matchers/mapChange.js.map +1 -1
  66. package/dist/omegga/matchers/minigameJoin.js +24 -31
  67. package/dist/omegga/matchers/minigameJoin.js.map +1 -1
  68. package/dist/omegga/matchers/version.js +42 -49
  69. package/dist/omegga/matchers/version.js.map +1 -1
  70. package/dist/omegga/player.js +527 -527
  71. package/dist/omegga/player.js.map +1 -1
  72. package/dist/omegga/plugin/interface.js +91 -98
  73. package/dist/omegga/plugin/interface.js.map +1 -1
  74. package/dist/omegga/plugin/plugin_jsonrpc_stdio.js +524 -429
  75. package/dist/omegga/plugin/plugin_jsonrpc_stdio.js.map +1 -1
  76. package/dist/omegga/plugin/plugin_node_safe/proxyOmegga.js +282 -294
  77. package/dist/omegga/plugin/plugin_node_safe/proxyOmegga.js.map +1 -1
  78. package/dist/omegga/plugin/plugin_node_safe.js +365 -393
  79. package/dist/omegga/plugin/plugin_node_safe.js.map +1 -1
  80. package/dist/omegga/plugin/plugin_node_unsafe.js +119 -179
  81. package/dist/omegga/plugin/plugin_node_unsafe.js.map +1 -1
  82. package/dist/omegga/plugin.js +402 -347
  83. package/dist/omegga/plugin.js.map +1 -1
  84. package/dist/omegga/server.js +742 -774
  85. package/dist/omegga/server.js.map +1 -1
  86. package/dist/omegga/wrapper.js +64 -91
  87. package/dist/omegga/wrapper.js.map +1 -1
  88. package/dist/plugin.js +11 -31
  89. package/dist/plugin.js.map +1 -1
  90. package/dist/softconfig.js +121 -100
  91. package/dist/softconfig.js.map +1 -1
  92. package/dist/updater/steam.js +97 -112
  93. package/dist/updater/steam.js.map +1 -1
  94. package/dist/util/brdb.js +496 -528
  95. package/dist/util/brdb.js.map +1 -1
  96. package/dist/util/brick/checkBounds.js +11 -15
  97. package/dist/util/brick/checkBounds.js.map +1 -1
  98. package/dist/util/brick/constants.js +723 -174
  99. package/dist/util/brick/constants.js.map +1 -1
  100. package/dist/util/brick/displayName.js +204 -211
  101. package/dist/util/brick/displayName.js.map +1 -1
  102. package/dist/util/brick/getBounds.js +29 -41
  103. package/dist/util/brick/getBounds.js.map +1 -1
  104. package/dist/util/brick/getBrickSize.js +6 -7
  105. package/dist/util/brick/getBrickSize.js.map +1 -1
  106. package/dist/util/brick/getScaleAxis.js +24 -30
  107. package/dist/util/brick/getScaleAxis.js.map +1 -1
  108. package/dist/util/brick/index.js +8 -29
  109. package/dist/util/brick/index.js.map +1 -1
  110. package/dist/util/brick/rotate.js +29 -34
  111. package/dist/util/brick/rotate.js.map +1 -1
  112. package/dist/util/brick/setOwnership.js +13 -19
  113. package/dist/util/brick/setOwnership.js.map +1 -1
  114. package/dist/util/chat.js +53 -44
  115. package/dist/util/chat.js.map +1 -1
  116. package/dist/util/color.js +112 -124
  117. package/dist/util/color.js.map +1 -1
  118. package/dist/util/file.js +54 -98
  119. package/dist/util/file.js.map +1 -1
  120. package/dist/util/index.js +84 -106
  121. package/dist/util/index.js.map +1 -1
  122. package/dist/util/map.js +18 -20
  123. package/dist/util/map.js.map +1 -1
  124. package/dist/util/pattern.js +6 -9
  125. package/dist/util/pattern.js.map +1 -1
  126. package/dist/util/time.js +31 -34
  127. package/dist/util/time.js.map +1 -1
  128. package/dist/util/uuid.js +10 -8
  129. package/dist/util/uuid.js.map +1 -1
  130. package/dist/util/wsl.js +19 -25
  131. package/dist/util/wsl.js.map +1 -1
  132. package/dist/version.js +7 -9
  133. package/dist/version.js.map +1 -1
  134. package/dist/webserver/backend/api.js +784 -874
  135. package/dist/webserver/backend/api.js.map +1 -1
  136. package/dist/webserver/backend/calendar.js +14 -17
  137. package/dist/webserver/backend/calendar.js.map +1 -1
  138. package/dist/webserver/backend/database.js +563 -613
  139. package/dist/webserver/backend/database.js.map +1 -1
  140. package/dist/webserver/backend/index.js +153 -191
  141. package/dist/webserver/backend/index.js.map +1 -1
  142. package/dist/webserver/backend/metrics.js +219 -248
  143. package/dist/webserver/backend/metrics.js.map +1 -1
  144. package/dist/webserver/backend/util.js +47 -68
  145. package/dist/webserver/backend/util.js.map +1 -1
  146. package/dist/worker.js +322 -0
  147. package/dist/worker.js.map +1 -0
  148. package/package.json +14 -10
  149. package/templates/safe-ts/omegga.d.ts +2 -2
  150. package/vite.backend.config.mts +46 -0
  151. package/vite.frontend.config.mts +58 -0
  152. package/vitest.backend.config.mts +7 -0
  153. package/dist/brickadia/config.d.ts +0 -3
  154. package/dist/brickadia/presets.d.ts +0 -65
  155. package/dist/brickadia/presets.js +0 -3
  156. package/dist/brickadia/presets.js.map +0 -1
  157. package/dist/brickadia/server.d.ts +0 -36
  158. package/dist/brickadia/types.d.ts +0 -45
  159. package/dist/brickadia/types.js +0 -3
  160. package/dist/brickadia/types.js.map +0 -1
  161. package/dist/cli/auth.d.ts +0 -26
  162. package/dist/cli/config.d.ts +0 -10
  163. package/dist/cli/index.d.ts +0 -30
  164. package/dist/cli/installer.d.ts +0 -1
  165. package/dist/cli/plugin.d.ts +0 -22
  166. package/dist/cli/terminal.d.ts +0 -25
  167. package/dist/config/authorizer.d.ts +0 -2
  168. package/dist/config/authorizer.js +0 -38
  169. package/dist/config/authorizer.js.map +0 -1
  170. package/dist/config/formats/format_js.d.ts +0 -3
  171. package/dist/config/formats/format_yml.d.ts +0 -3
  172. package/dist/config/index.d.ts +0 -18
  173. package/dist/config/reader.d.ts +0 -3
  174. package/dist/config/types.d.ts +0 -50
  175. package/dist/config/types.js +0 -3
  176. package/dist/config/types.js.map +0 -1
  177. package/dist/config/validator.d.ts +0 -6
  178. package/dist/config/writer.d.ts +0 -3
  179. package/dist/index.d.ts +0 -22
  180. package/dist/info/default_commands.json +0 -29
  181. package/dist/logger.d.ts +0 -41
  182. package/dist/main.d.ts +0 -1
  183. package/dist/omegga/auth.d.ts +0 -9
  184. package/dist/omegga/commandInjector.d.ts +0 -35
  185. package/dist/omegga/index.d.ts +0 -7
  186. package/dist/omegga/logWrangler.d.ts +0 -32
  187. package/dist/omegga/matchers/auth.d.ts +0 -10
  188. package/dist/omegga/matchers/chat.d.ts +0 -10
  189. package/dist/omegga/matchers/command.d.ts +0 -7
  190. package/dist/omegga/matchers/exit.d.ts +0 -3
  191. package/dist/omegga/matchers/index.d.ts +0 -3
  192. package/dist/omegga/matchers/init.d.ts +0 -3
  193. package/dist/omegga/matchers/interact.d.ts +0 -4
  194. package/dist/omegga/matchers/join.d.ts +0 -4
  195. package/dist/omegga/matchers/leave.d.ts +0 -4
  196. package/dist/omegga/matchers/mapChange.d.ts +0 -3
  197. package/dist/omegga/matchers/minigameJoin.d.ts +0 -9
  198. package/dist/omegga/matchers/types.d.ts +0 -5
  199. package/dist/omegga/matchers/types.js +0 -3
  200. package/dist/omegga/matchers/types.js.map +0 -1
  201. package/dist/omegga/matchers/version.d.ts +0 -3
  202. package/dist/omegga/player.d.ts +0 -81
  203. package/dist/omegga/plugin/interface.d.ts +0 -30
  204. package/dist/omegga/plugin/plugin_jsonrpc_stdio.d.ts +0 -23
  205. package/dist/omegga/plugin/plugin_node_safe/proxyOmegga.d.ts +0 -145
  206. package/dist/omegga/plugin/plugin_node_safe/worker.d.ts +0 -1
  207. package/dist/omegga/plugin/plugin_node_safe/worker.js +0 -367
  208. package/dist/omegga/plugin/plugin_node_safe/worker.js.map +0 -1
  209. package/dist/omegga/plugin/plugin_node_safe.d.ts +0 -23
  210. package/dist/omegga/plugin/plugin_node_unsafe.d.ts +0 -13
  211. package/dist/omegga/plugin.d.ts +0 -63
  212. package/dist/omegga/server.d.ts +0 -166
  213. package/dist/omegga/types.d.ts +0 -49
  214. package/dist/omegga/types.js +0 -3
  215. package/dist/omegga/types.js.map +0 -1
  216. package/dist/omegga/wrapper.d.ts +0 -32
  217. package/dist/plugin.d.ts +0 -916
  218. package/dist/softconfig.d.ts +0 -67
  219. package/dist/tsconfig.tsbuildinfo +0 -1
  220. package/dist/updater/index.d.ts +0 -1
  221. package/dist/updater/index.js +0 -10
  222. package/dist/updater/index.js.map +0 -1
  223. package/dist/updater/steam.d.ts +0 -52
  224. package/dist/util/brdb.d.ts +0 -31
  225. package/dist/util/brick/checkBounds.d.ts +0 -8
  226. package/dist/util/brick/constants.d.ts +0 -18
  227. package/dist/util/brick/displayName.d.ts +0 -7
  228. package/dist/util/brick/getBounds.d.ts +0 -5
  229. package/dist/util/brick/getBrickSize.d.ts +0 -3
  230. package/dist/util/brick/getScaleAxis.d.ts +0 -3
  231. package/dist/util/brick/index.d.ts +0 -14
  232. package/dist/util/brick/rotate.d.ts +0 -16
  233. package/dist/util/brick/setOwnership.d.ts +0 -12
  234. package/dist/util/chat.d.ts +0 -23
  235. package/dist/util/color.d.ts +0 -13
  236. package/dist/util/file.d.ts +0 -5
  237. package/dist/util/index.d.ts +0 -183
  238. package/dist/util/map.d.ts +0 -6
  239. package/dist/util/pattern.d.ts +0 -1
  240. package/dist/util/time.d.ts +0 -39
  241. package/dist/util/uuid.d.ts +0 -3
  242. package/dist/util/wsl.d.ts +0 -2
  243. package/dist/version.d.ts +0 -2
  244. package/dist/webserver/backend/api.d.ts +0 -115
  245. package/dist/webserver/backend/calendar.d.ts +0 -5
  246. package/dist/webserver/backend/database.d.ts +0 -150
  247. package/dist/webserver/backend/index.d.ts +0 -30
  248. package/dist/webserver/backend/metrics.d.ts +0 -3
  249. package/dist/webserver/backend/types.d.ts +0 -114
  250. package/dist/webserver/backend/types.js +0 -3
  251. package/dist/webserver/backend/types.js.map +0 -1
  252. package/dist/webserver/backend/util.d.ts +0 -2
  253. package/dist/webserver/index.d.ts +0 -2
  254. package/dist/webserver/index.js +0 -9
  255. package/dist/webserver/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"brdb.js","sourceRoot":"","sources":["../../src/util/brdb.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"brdb.js","sources":["../../src/util/brdb.ts"],"sourcesContent":["import BetterSqlite3 from 'better-sqlite3';\nimport { existsSync } from 'node:fs';\nimport { zstdDecompressSync } from 'zlib';\n\n/** Open a brdb file if it exists */\nfunction openBrdb(path: string): BetterSqlite3.Database | null {\n if (!existsSync(path)) return null;\n try {\n return new BetterSqlite3(path, { readonly: true, fileMustExist: true });\n } catch (err) {\n console.error(`Error reading BRDB metadata from ${path}:`, err);\n return null;\n }\n}\n\n/** Unsafely read a file from the BRDB database */\nfunction readFile(db: BetterSqlite3.Database, name: string): Buffer | null {\n const row = db\n .prepare<\n string,\n {\n compression: number;\n size_uncompressed: number;\n size_compressed: number;\n content: Buffer | null;\n }\n >(\n `SELECT compression, size_uncompressed, size_compressed, content\n FROM files\n LEFT JOIN blobs ON files.content_id = blobs.blob_id\n WHERE name = ? AND deleted_at IS NULL;`,\n )\n .get(name);\n\n if (!row) return null;\n if (row.content === null) return null;\n if (!row.compression || row.size_compressed >= row.size_uncompressed)\n return row.content;\n\n return zstdDecompressSync(row.content, {\n maxOutputLength: row.size_uncompressed,\n params: {},\n });\n}\n\n/** read the meta and owner data from a brdb file */\n// TODO: specify a create/delete time range for the reading the owner data to allow \"browsing\" of revisions\nexport function readBrdbMeta(path: string) {\n const db = openBrdb(path);\n if (!db) return null;\n\n try {\n const worldJson: { environment: string } = JSON.parse(\n readFile(db, 'World.json').toString('utf8'),\n );\n const bundleJson: {\n type: 'World';\n iD: string;\n name: string;\n version: string;\n tags: string[];\n authors: string[];\n createdAt: string;\n updatedAt: string;\n description: string;\n dependencies: string[];\n } = JSON.parse(readFile(db, 'Bundle.json').toString('utf8'));\n\n // parse the owner schema and its data\n const ownersSchemaBuf = readFile(db, 'Owners.schema');\n const ownersBuf = readFile(db, 'Owners.mps');\n\n // Convert the struct of arrays into an array of structs\n const owners: {\n id: string;\n name: string;\n display_name: string;\n entity_count: number;\n brick_count: number;\n component_count: number;\n wire_count: number;\n }[] = [];\n\n if (ownersBuf && ownersSchemaBuf) {\n const ownersSchema = readBrdbSchema(ownersSchemaBuf);\n const { value: ownersMps } = readBrdbType(\n ownersBuf,\n 0,\n ownersSchema,\n 'BRSavedOwnerTableSoA',\n );\n\n for (let i = 0; i < ownersMps['UserIds'].length; i++) {\n const id = guidToUuid(ownersMps['UserIds'][i]);\n const name: string = ownersMps['UserNames'][i];\n const display_name: string = ownersMps['DisplayNames'][i];\n const entity_count: number = ownersMps['EntityCounts'][i];\n const brick_count: number = ownersMps['BrickCounts'][i];\n const component_count: number = ownersMps['ComponentCounts'][i];\n const wire_count: number = ownersMps['WireCounts'][i];\n owners.push({\n id,\n name,\n display_name,\n entity_count,\n brick_count,\n component_count,\n wire_count,\n });\n }\n }\n\n db.close();\n\n return {\n meta: { world: worldJson, bundle: bundleJson },\n owners,\n };\n } catch (err) {\n console.error(`Error reading BRDB metadata from ${path}:`, err);\n db.close();\n return null;\n }\n}\n\n/** read the screenshot from a brdb file */\nexport function readBrdbScreenshot(path: string): Buffer | null {\n const db = openBrdb(path);\n if (!db) return null;\n try {\n const file = readFile(db, 'Screenshot.jpg');\n db.close();\n return file;\n } catch (err) {\n console.error(`Error reading BRDB screenshot from ${path}:`, err);\n db.close();\n }\n}\n\ntype MsgpackMarker =\n | 'fixpos'\n | 'fixneg'\n | 'fixmap'\n | 'fixarray'\n | 'fixstr'\n | 'nil'\n | 'false'\n | 'true'\n | 'bin8'\n | 'bin16'\n | 'bin32'\n | 'ext8'\n | 'ext16'\n | 'ext32'\n | 'float32'\n | 'float64'\n | 'uint8'\n | 'uint16'\n | 'uint32'\n | 'uint64'\n | 'int8'\n | 'int16'\n | 'int32'\n | 'int64'\n | 'fixext1'\n | 'fixext2'\n | 'fixext4'\n | 'fixext8'\n | 'fixext16'\n | 'str8'\n | 'str16'\n | 'str32'\n | 'array16'\n | 'array32'\n | 'map16'\n | 'map32';\n\n/** get the msgpack format from a byte */\nfunction mpMarker(byte: number): [MsgpackMarker, number | null] {\n if ((byte & 0b1000_0000) === 0) return ['fixpos', byte & 0b0111_111];\n if ((byte & 0b1111_0000) === 0b1000_0000)\n return ['fixmap', byte & 0b0000_1111];\n if ((byte & 0b1111_0000) === 0b1001_0000)\n return ['fixarray', byte & 0b0000_1111];\n if ((byte & 0b1110_0000) === 0b1010_0000)\n return ['fixstr', byte & 0b0001_1111];\n if ((byte & 0b1110_0000) === 0b1110_0000)\n return ['fixneg', -(byte & 0b0001_1111)];\n\n switch (byte) {\n case 0b1100_0000:\n return ['nil', null];\n case 0b1100_0010:\n return ['false', null];\n case 0b1100_0011:\n return ['true', null];\n case 0b1100_0100:\n return ['bin8', null];\n case 0b1100_0101:\n return ['bin16', null];\n case 0b1100_0110:\n return ['bin32', null];\n case 0b1100_0111:\n return ['ext8', null];\n case 0b1100_1000:\n return ['ext16', null];\n case 0b1100_1001:\n return ['ext32', null];\n case 0b1100_1010:\n return ['float32', null];\n case 0b1100_1011:\n return ['float64', null];\n case 0b1100_1100:\n return ['uint8', null];\n case 0b1100_1101:\n return ['uint16', null];\n case 0b1100_1110:\n return ['uint32', null];\n case 0b1100_1111:\n return ['uint64', null];\n case 0b1101_0000:\n return ['int8', null];\n case 0b1101_0001:\n return ['int16', null];\n case 0b1101_0010:\n return ['int32', null];\n case 0b1101_0011:\n return ['int64', null];\n case 0b1101_0100:\n return ['fixext1', null];\n case 0b1101_0101:\n return ['fixext2', null];\n case 0b1101_0110:\n return ['fixext4', null];\n case 0b1101_0111:\n return ['fixext8', null];\n case 0b1101_1000:\n return ['fixext16', null];\n case 0b1101_1001:\n return ['str8', null];\n case 0b1101_1010:\n return ['str16', null];\n case 0b1101_1011:\n return ['str32', null];\n case 0b1101_1100:\n return ['array16', null];\n case 0b1101_1101:\n return ['array32', null];\n case 0b1101_1110:\n return ['map16', null];\n case 0b1101_1111:\n return ['map32', null];\n default:\n return null;\n }\n}\n\nfunction mpString(\n buf: Buffer,\n offset: number,\n): { str: string; offset: number } | null {\n const byte = buf[offset];\n const marker = mpMarker(byte);\n if (!marker) {\n throw new Error(`Invalid msgpack format byte: ${byte.toString(16)}`);\n }\n return mpStringContent(buf, marker, offset + 1);\n}\n\nfunction mpStringContent(\n buf: Buffer,\n marker: [MsgpackMarker, number | null],\n offset: number,\n): { str: string; offset: number } {\n const [m, size] = marker;\n if (m !== 'fixstr' && m !== 'str8' && m !== 'str16' && m !== 'str32') {\n throw new Error(`Expected string format, got ${m}`);\n }\n\n let strSize = 0;\n if (m === 'fixstr') {\n strSize = size;\n } else if (m === 'str8') {\n strSize = buf[offset];\n offset++;\n } else if (m === 'str16') {\n strSize = buf.readUInt16BE(offset);\n offset += 2;\n } else if (m === 'str32') {\n strSize = buf.readUInt32BE(offset);\n offset += 4;\n }\n if (!strSize) return { str: '', offset };\n\n const str = buf.toString('utf8', offset, offset + strSize);\n offset += strSize;\n return { str, offset };\n}\n\nfunction mpInt(\n buf: Buffer,\n offset: number,\n): { num: number | null; offset: number } {\n const [marker, num] = mpMarker(buf[offset]);\n offset++;\n if (!marker)\n throw new Error(\n `Invalid msgpack format byte: ${buf[offset - 1].toString(16)}`,\n );\n if (marker === 'fixpos') return { num, offset };\n if (marker === 'fixneg') return { num, offset };\n if (marker === 'uint8')\n return {\n num: buf.readUInt8(offset++),\n offset,\n };\n if (marker === 'uint16') {\n const num = buf.readUInt16BE(offset);\n offset += 2;\n return { num, offset };\n }\n if (marker === 'uint32') {\n const num = buf.readUInt32BE(offset);\n offset += 4;\n return { num, offset };\n }\n if (marker === 'uint64') {\n const num = BigInt.asUintN(64, BigInt(buf.readBigUInt64BE(offset)));\n offset += 8;\n return { num: Number(num), offset };\n }\n if (marker === 'int8') {\n const num = buf.readInt8(offset);\n offset++;\n return { num, offset };\n }\n if (marker === 'int16') {\n const num = buf.readInt16BE(offset);\n offset += 2;\n return { num, offset };\n }\n if (marker === 'int32') {\n const num = buf.readInt32BE(offset);\n offset += 4;\n return { num, offset };\n }\n if (marker === 'int64') {\n const num = BigInt.asIntN(64, BigInt(buf.readBigInt64BE(offset)));\n offset += 8;\n return { num: Number(num), offset };\n }\n throw new Error(`Expected integer format, got ${marker}`);\n}\n\ntype SchemaType =\n | {\n kind: 'literal';\n ty: string;\n }\n | {\n kind: 'array';\n ty: string;\n }\n | {\n kind: 'flatarray';\n ty: string;\n }\n | {\n kind: 'map';\n key: string;\n value: string;\n };\n\ntype SchemaStruct = {\n name: string;\n props: Record<string, SchemaType>;\n};\n\nfunction readBrdbSchema(buf: Buffer) {\n const enums: Record<string, Record<string, number> & Record<number, string>> =\n {};\n const structs: Record<string, SchemaStruct> = {};\n let offset = 0;\n const next = () => {\n const byte = buf[offset];\n offset++;\n return byte;\n };\n const nextMarker = () => {\n const byte = next();\n const kind = mpMarker(byte);\n if (!kind) {\n throw new Error(`Invalid msgpack format byte: ${byte.toString(16)}`);\n }\n return kind;\n };\n const mapLen = (name?: string) => {\n const [kind, val] = nextMarker();\n let len = 0;\n switch (kind) {\n case 'fixmap':\n len = val;\n break;\n case 'map16':\n len = buf.readUInt16BE(offset);\n offset += 2;\n break;\n case 'map32':\n len = buf.readUInt32BE(offset);\n offset += 4;\n break;\n default:\n throw new Error(`Expected ${name ?? 'unknown'} map len, got ${kind}`);\n }\n return len;\n };\n const header = nextMarker();\n if (header[0] !== 'fixarray' && header[1] !== 2) {\n throw new Error(\n `Expected schema header to be fixarray of length 2, got ${header[0]} ${header[1]}`,\n );\n }\n\n const numEnums = mapLen('enums');\n for (let i = 0; i < numEnums; i++) {\n let name: string;\n ({ str: name, offset } = mpString(buf, offset));\n enums[name] = {};\n const values = mapLen(`enum ${name} values`);\n for (let j = 0; j < values; j++) {\n let key: string;\n ({ str: key, offset } = mpString(buf, offset));\n let value: number;\n ({ num: value, offset } = mpInt(buf, offset));\n enums[name][key] = value;\n enums[name][value] = key;\n }\n }\n const numStructs = mapLen('structs');\n for (let i = 0; i < numStructs; i++) {\n let name: string;\n ({ str: name, offset } = mpString(buf, offset));\n const props: Record<string, SchemaType> = {};\n const numProps = mapLen(`struct ${name} properties`);\n for (let j = 0; j < numProps; j++) {\n let propName: string;\n ({ str: propName, offset } = mpString(buf, offset));\n const [kind, val] = nextMarker();\n // Basic types\n if (kind === 'fixstr' || kind === 'str8' || kind === 'str16') {\n let ty: string;\n ({ str: ty, offset } = mpStringContent(buf, [kind, val], offset));\n props[propName] = { kind: 'literal', ty };\n } else if (kind === 'fixarray' && val == 1) {\n let ty: string;\n ({ str: ty, offset } = mpString(buf, offset));\n props[propName] = { kind: 'array', ty };\n } else if (kind === 'fixarray' && val == 2) {\n let ty: string;\n ({ str: ty, offset } = mpString(buf, offset));\n if (nextMarker()[0] !== 'nil')\n throw new Error(`Expected nil after flatarray type`);\n props[propName] = { kind: 'flatarray', ty };\n } else if (kind === 'fixmap' && val == 1) {\n let key_ty: string;\n let val_ty: string;\n ({ str: key_ty, offset } = mpString(buf, offset));\n ({ str: val_ty, offset } = mpString(buf, offset));\n props[propName] = { kind: 'map', key: key_ty, value: val_ty };\n } else {\n throw new Error(\n `Expected property type for ${name}.${propName}, got ${kind}`,\n );\n }\n }\n structs[name] = { name, props };\n }\n return { enums, structs };\n}\ntype BrdbSchema = ReturnType<typeof readBrdbSchema>;\n\nfunction mpArrayLen(\n buf: Buffer,\n offset: number,\n): { len: number; offset: number } {\n const [kind, val] = mpMarker(buf[offset]);\n offset++;\n let len = 0;\n switch (kind) {\n case 'fixarray':\n len = val;\n break;\n case 'array16':\n len = buf.readUInt16BE(offset);\n offset += 2;\n break;\n case 'array32':\n len = buf.readUInt32BE(offset);\n offset += 4;\n break;\n default:\n throw new Error(`Expected array length, got ${kind}`);\n }\n return { len, offset };\n}\n\nfunction mpBinLen(\n buf: Buffer,\n offset: number,\n): { len: number; offset: number } {\n const [kind, _] = mpMarker(buf[offset]);\n offset++;\n let len = 0;\n switch (kind) {\n case 'bin8':\n len = buf.readUInt8(offset);\n offset++;\n break;\n case 'bin16':\n len = buf.readUInt16BE(offset);\n offset += 2;\n break;\n case 'bin32':\n len = buf.readUInt32BE(offset);\n offset += 4;\n break;\n default:\n throw new Error(`Expected binary length, got ${kind}`);\n }\n return { len, offset };\n}\n\n// this is not a full brdb impl so I'm only implementing what is required\n// to read the owner data\nfunction readBrdbType(\n buf: Buffer,\n offset: number,\n schema: BrdbSchema,\n ty: string,\n): { value: unknown; offset: number } {\n switch (ty) {\n case 'u32':\n let num: number;\n ({ num, offset } = mpInt(buf, offset));\n return { value: num, offset };\n case 'str':\n let str: string;\n ({ str, offset } = mpString(buf, offset));\n return { value: str, offset };\n default:\n if (!(ty in schema.structs)) {\n throw new Error(`Unknown type ${ty} in schema`);\n }\n const struct = schema.structs[ty];\n const value: Record<string, unknown> = {};\n for (const [propName, propType] of Object.entries(struct.props)) {\n switch (propType.kind) {\n // other soa fields\n case 'array':\n let arrLen: number;\n ({ len: arrLen, offset } = mpArrayLen(buf, offset));\n const arr: unknown[] = [];\n for (let i = 0; i < arrLen; i++) {\n const item = readBrdbType(buf, offset, schema, propType.ty);\n arr.push(item.value);\n offset = item.offset;\n }\n value[propName] = arr;\n break;\n\n // userids\n case 'flatarray':\n let flatBinSize: number;\n ({ len: flatBinSize, offset } = mpBinLen(buf, offset));\n const flatTySize = flatTypeSize(schema, propType.ty);\n const numItems = flatBinSize / flatTySize;\n const flatArr: unknown[] = [];\n for (let i = 0; i < numItems; i++) {\n const item = readFlatBrdbType(buf, offset, schema, propType.ty);\n flatArr.push(item.value);\n offset = item.offset;\n }\n value[propName] = flatArr;\n break;\n }\n }\n return { value, offset };\n }\n}\n\nfunction readFlatBrdbType(\n buf: Buffer,\n offset: number,\n schema: BrdbSchema,\n ty: string,\n): { value: unknown; offset: number } {\n switch (ty) {\n case 'u8':\n const u8 = buf.readUInt8(offset);\n offset++;\n return { value: u8, offset };\n case 'u16':\n const u16 = buf.readUInt16LE(offset);\n offset += 2;\n return { value: u16, offset };\n case 'u32':\n const u32 = buf.readUInt32LE(offset);\n offset += 4;\n return { value: u32, offset };\n case 'u64':\n const u64 = BigInt.asUintN(64, BigInt(buf.readBigUInt64LE(offset)));\n offset += 8;\n return { value: Number(u64), offset };\n case 'i8':\n const i8 = buf.readInt8(offset);\n offset++;\n return { value: i8, offset };\n case 'i16':\n const i16 = buf.readInt16LE(offset);\n offset += 2;\n return { value: i16, offset };\n case 'i32':\n const i32 = buf.readInt32LE(offset);\n offset += 4;\n return { value: i32, offset };\n case 'i64':\n const i64 = BigInt.asIntN(64, BigInt(buf.readBigInt64LE(offset)));\n offset += 8;\n return { value: Number(i64), offset };\n case 'f32':\n const f32 = buf.readFloatLE(offset);\n offset += 4;\n return { value: f32, offset };\n case 'f64':\n const f64 = buf.readDoubleLE(offset);\n offset += 8;\n return { value: f64, offset };\n default:\n if (!(ty in schema.structs)) {\n throw new Error(`Unknown type ${ty} in schema`);\n }\n const struct = schema.structs[ty];\n const value: Record<string, unknown> = {};\n for (const [propName, propType] of Object.entries(struct.props)) {\n if (propType.kind !== 'literal') {\n throw new Error(\n `Expected literal type for ${ty} property, got ${propType.kind}`,\n );\n }\n const item = readFlatBrdbType(buf, offset, schema, propType.ty);\n value[propName] = item.value;\n offset = item.offset;\n }\n return { value, offset };\n }\n}\n\nfunction flatTypeSize(schema: BrdbSchema, ty: string): number {\n switch (ty) {\n case 'u8':\n return 1;\n case 'u16':\n return 2;\n case 'u32':\n return 4;\n case 'u64':\n return 8;\n case 'i8':\n return 1;\n case 'i16':\n return 2;\n case 'i32':\n return 4;\n case 'i64':\n return 8;\n case 'f32':\n return 4;\n case 'f64':\n return 8;\n default:\n if (!(ty in schema.structs)) {\n throw new Error(`Unknown type ${ty} in schema`);\n }\n const struct = schema.structs[ty];\n let size = 0;\n for (const propType of Object.values(struct.props)) {\n if (propType.kind !== 'literal') {\n throw new Error(\n `Expected literal type for ${ty} property, got ${propType.kind}`,\n );\n }\n size += flatTypeSize(schema, propType.ty);\n }\n return size;\n }\n}\n\n/** convert a set of 4 u32s into a uuidv4 */\nfunction guidToUuid(guid: {\n A: number;\n B: number;\n C: number;\n D: number;\n}): string {\n const hex = (num: number): string => num.toString(16).padStart(8, '0');\n // concatenate them all together\n const joined = `${hex(guid.A)}${hex(guid.B)}${hex(guid.C)}${hex(guid.D)}`;\n // format as uuidv4\n return `${joined.slice(0, 8)}-${joined.slice(8, 12)}-${joined.slice(12, 16)}-${joined.slice(16, 20)}-${joined.slice(20)}`;\n}\n"],"names":["existsSync","zstdDecompressSync","num"],"mappings":"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"}
@@ -1,21 +1,17 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.checkBounds = checkBounds;
4
- const getScaleAxis_1 = require("./getScaleAxis");
5
- const getBrickSize_1 = require("./getBrickSize");
6
- // check if the brick is in bounds for 1 axis
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const getScaleAxis = require("./getScaleAxis.js");
4
+ const getBrickSize = require("./getBrickSize.js");
7
5
  function checkBound(brick, brick_assets, bounds, axis) {
8
- const scaleAxis = (0, getScaleAxis_1.getScaleAxis)(brick, axis);
9
- const size = (0, getBrickSize_1.getBrickSize)(brick, brick_assets);
10
- const upper = brick.position[axis] + size[scaleAxis];
11
- const lower = brick.position[axis] - size[scaleAxis];
12
- return upper <= bounds.maxBound[axis] && lower >= bounds.minBound[axis];
6
+ const scaleAxis = getScaleAxis.getScaleAxis(brick, axis);
7
+ const size = getBrickSize.getBrickSize(brick, brick_assets);
8
+ const upper = brick.position[axis] + size[scaleAxis];
9
+ const lower = brick.position[axis] - size[scaleAxis];
10
+ return upper <= bounds.maxBound[axis] && lower >= bounds.minBound[axis];
13
11
  }
14
- // check if the brick is in bounds
15
12
  function checkBounds(brick, brick_assets, bounds) {
16
- return (checkBound(brick, brick_assets, bounds, 0) &&
17
- checkBound(brick, brick_assets, bounds, 1) &&
18
- checkBound(brick, brick_assets, bounds, 2));
13
+ return checkBound(brick, brick_assets, bounds, 0) && checkBound(brick, brick_assets, bounds, 1) && checkBound(brick, brick_assets, bounds, 2);
19
14
  }
15
+ exports.checkBounds = checkBounds;
20
16
  exports.default = checkBounds;
21
- //# sourceMappingURL=checkBounds.js.map
17
+ //# sourceMappingURL=checkBounds.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkBounds.js","sourceRoot":"","sources":["../../../src/util/brick/checkBounds.ts"],"names":[],"mappings":";;AA0BA,kCAUC;AAlCD,iDAA8C;AAC9C,iDAA8C;AAQ9C,6CAA6C;AAC7C,SAAS,UAAU,CACjB,KAAY,EACZ,YAAsB,EACtB,MAAoB,EACpB,IAAY;IAEZ,MAAM,SAAS,GAAG,IAAA,2BAAY,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,IAAA,2BAAY,EAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IACrD,OAAO,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC1E,CAAC;AAED,kCAAkC;AAClC,SAAgB,WAAW,CACzB,KAAY,EACZ,YAAsB,EACtB,MAAoB;IAEpB,OAAO,CACL,UAAU,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1C,UAAU,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1C,UAAU,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,CAC3C,CAAC;AACJ,CAAC;AACD,kBAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"checkBounds.js","sources":["../../../src/util/brick/checkBounds.ts"],"sourcesContent":["import { Brick, Vector } from 'brs-js';\n\nimport { getScaleAxis } from './getScaleAxis';\nimport { getBrickSize } from './getBrickSize';\n\nexport interface IBrickBounds {\n minBound: Vector;\n maxBound: Vector;\n center: Vector;\n}\n\n// check if the brick is in bounds for 1 axis\nfunction checkBound(\n brick: Brick,\n brick_assets: string[],\n bounds: IBrickBounds,\n axis: number,\n) {\n const scaleAxis = getScaleAxis(brick, axis);\n const size = getBrickSize(brick, brick_assets);\n const upper = brick.position[axis] + size[scaleAxis];\n const lower = brick.position[axis] - size[scaleAxis];\n return upper <= bounds.maxBound[axis] && lower >= bounds.minBound[axis];\n}\n\n// check if the brick is in bounds\nexport function checkBounds(\n brick: Brick,\n brick_assets: string[],\n bounds: IBrickBounds,\n) {\n return (\n checkBound(brick, brick_assets, bounds, 0) &&\n checkBound(brick, brick_assets, bounds, 1) &&\n checkBound(brick, brick_assets, bounds, 2)\n );\n}\nexport default checkBounds;\n"],"names":["getScaleAxis","getBrickSize"],"mappings":";;;;AAYA,SAAS,WACP,OACA,cACA,QACA,MACA;AACA,QAAM,YAAYA,aAAAA,aAAa,OAAO,IAAI;AAC1C,QAAM,OAAOC,aAAAA,aAAa,OAAO,YAAY;AAC7C,QAAM,QAAQ,MAAM,SAAS,IAAI,IAAI,KAAK,SAAS;AACnD,QAAM,QAAQ,MAAM,SAAS,IAAI,IAAI,KAAK,SAAS;AACnD,SAAO,SAAS,OAAO,SAAS,IAAI,KAAK,SAAS,OAAO,SAAS,IAAI;AACxE;AAGO,SAAS,YACd,OACA,cACA,QACA;AACA,SACE,WAAW,OAAO,cAAc,QAAQ,CAAC,KACzC,WAAW,OAAO,cAAc,QAAQ,CAAC,KACzC,WAAW,OAAO,cAAc,QAAQ,CAAC;AAE7C;;;"}