@blamnetwork/blf 1.0.0-alpha.1

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 (235) hide show
  1. package/README.md +82 -0
  2. package/dist/bitstream/enum.d.ts +6 -0
  3. package/dist/bitstream/enum.d.ts.map +1 -0
  4. package/dist/bitstream/enum.js +15 -0
  5. package/dist/bitstream/enums.d.ts +21 -0
  6. package/dist/bitstream/enums.d.ts.map +1 -0
  7. package/dist/bitstream/enums.js +31 -0
  8. package/dist/bitstream/errors.d.ts +5 -0
  9. package/dist/bitstream/errors.d.ts.map +1 -0
  10. package/dist/bitstream/errors.js +11 -0
  11. package/dist/bitstream/index.d.ts +7 -0
  12. package/dist/bitstream/index.d.ts.map +1 -0
  13. package/dist/bitstream/index.js +5 -0
  14. package/dist/bitstream/math.d.ts +28 -0
  15. package/dist/bitstream/math.d.ts.map +1 -0
  16. package/dist/bitstream/math.js +149 -0
  17. package/dist/bitstream/reader.d.ts +81 -0
  18. package/dist/bitstream/reader.d.ts.map +1 -0
  19. package/dist/bitstream/reader.js +400 -0
  20. package/dist/bitstream/writer.d.ts +56 -0
  21. package/dist/bitstream/writer.d.ts.map +1 -0
  22. package/dist/bitstream/writer.js +330 -0
  23. package/dist/blam/common/cache/index.d.ts +2 -0
  24. package/dist/blam/common/cache/index.d.ts.map +1 -0
  25. package/dist/blam/common/cache/index.js +1 -0
  26. package/dist/blam/common/cache/security_functions.d.ts +2 -0
  27. package/dist/blam/common/cache/security_functions.d.ts.map +1 -0
  28. package/dist/blam/common/cache/security_functions.js +19 -0
  29. package/dist/blam/common/index.d.ts +3 -0
  30. package/dist/blam/common/index.d.ts.map +1 -0
  31. package/dist/blam/common/index.js +2 -0
  32. package/dist/blam/common/memory/data_compress.d.ts +10 -0
  33. package/dist/blam/common/memory/data_compress.d.ts.map +1 -0
  34. package/dist/blam/common/memory/data_compress.js +28 -0
  35. package/dist/blam/common/memory/index.d.ts +2 -0
  36. package/dist/blam/common/memory/index.d.ts.map +1 -0
  37. package/dist/blam/common/memory/index.js +1 -0
  38. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_custom_variant.d.ts +37 -0
  39. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_custom_variant.d.ts.map +1 -0
  40. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_custom_variant.js +125 -0
  41. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_custom_variant_au1_settings.d.ts +14 -0
  42. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_custom_variant_au1_settings.d.ts.map +1 -0
  43. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_custom_variant_au1_settings.js +30 -0
  44. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_default.d.ts +114 -0
  45. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_default.d.ts.map +1 -0
  46. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_default.js +292 -0
  47. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_survival_variant.d.ts +70 -0
  48. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_survival_variant.d.ts.map +1 -0
  49. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_survival_variant.js +174 -0
  50. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_traits.d.ts +10 -0
  51. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_traits.d.ts.map +1 -0
  52. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_traits.js +16 -0
  53. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_variant.d.ts +28 -0
  54. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_variant.d.ts.map +1 -0
  55. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_variant.js +109 -0
  56. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_player_traits.d.ts +56 -0
  57. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_player_traits.d.ts.map +1 -0
  58. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_player_traits.js +142 -0
  59. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_string_table.d.ts +27 -0
  60. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_string_table.d.ts.map +1 -0
  61. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_string_table.js +190 -0
  62. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/index.d.ts +10 -0
  63. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/index.d.ts.map +1 -0
  64. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/index.js +9 -0
  65. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_megalo_game_statistic.d.ts +10 -0
  66. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_megalo_game_statistic.d.ts.map +1 -0
  67. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_megalo_game_statistic.js +18 -0
  68. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_megalogamengine_map_permissions.d.ts +8 -0
  69. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_megalogamengine_map_permissions.d.ts.map +1 -0
  70. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_megalogamengine_map_permissions.js +18 -0
  71. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_object_filter.d.ts +13 -0
  72. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_object_filter.d.ts.map +1 -0
  73. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_object_filter.js +39 -0
  74. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_trigger.d.ts +34 -0
  75. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_trigger.d.ts.map +1 -0
  76. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_trigger.js +59 -0
  77. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/index.d.ts +14 -0
  78. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/index.d.ts.map +1 -0
  79. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/index.js +13 -0
  80. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_actions.d.ts +393 -0
  81. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_actions.d.ts.map +1 -0
  82. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_actions.js +1590 -0
  83. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_conditions.d.ts +49 -0
  84. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_conditions.d.ts.map +1 -0
  85. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_conditions.js +216 -0
  86. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_references.d.ts +79 -0
  87. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_references.d.ts.map +1 -0
  88. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_references.js +496 -0
  89. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_text.d.ts +26 -0
  90. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_text.d.ts.map +1 -0
  91. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_text.js +118 -0
  92. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_custom_game_engine_definition.d.ts +29 -0
  93. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_custom_game_engine_definition.d.ts.map +1 -0
  94. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_custom_game_engine_definition.js +116 -0
  95. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_game_engine_player_rating_parameters.d.ts +22 -0
  96. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_game_engine_player_rating_parameters.d.ts.map +1 -0
  97. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_game_engine_player_rating_parameters.js +54 -0
  98. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_user_defined_option.d.ts +22 -0
  99. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_user_defined_option.d.ts.map +1 -0
  100. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_user_defined_option.js +82 -0
  101. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_variable_metadata.d.ts +22 -0
  102. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_variable_metadata.d.ts.map +1 -0
  103. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_variable_metadata.js +85 -0
  104. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_variant_variable.d.ts +13 -0
  105. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_variant_variable.d.ts.map +1 -0
  106. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_variant_variable.js +75 -0
  107. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/index.d.ts +4 -0
  108. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/index.d.ts.map +1 -0
  109. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/index.js +3 -0
  110. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/saved_games/index.d.ts +2 -0
  111. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/saved_games/index.d.ts.map +1 -0
  112. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/saved_games/index.js +1 -0
  113. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/saved_games/saved_game_files.d.ts +66 -0
  114. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/saved_games/saved_game_files.d.ts.map +1 -0
  115. package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/saved_games/saved_game_files.js +586 -0
  116. package/dist/blf_chunk.d.ts +41 -0
  117. package/dist/blf_chunk.d.ts.map +1 -0
  118. package/dist/blf_chunk.js +126 -0
  119. package/dist/blffile.d.ts +5 -0
  120. package/dist/blffile.d.ts.map +1 -0
  121. package/dist/blffile.js +23 -0
  122. package/dist/chunk_signature.d.ts +10 -0
  123. package/dist/chunk_signature.d.ts.map +1 -0
  124. package/dist/chunk_signature.js +47 -0
  125. package/dist/chunks/halo3/v12070_08_09_05_2031_halo3_ship/index.d.ts +4 -0
  126. package/dist/chunks/halo3/v12070_08_09_05_2031_halo3_ship/index.d.ts.map +1 -0
  127. package/dist/chunks/halo3/v12070_08_09_05_2031_halo3_ship/index.js +3 -0
  128. package/dist/chunks/halo3/v12070_08_09_05_2031_halo3_ship/s_blf_chunk_compressed_data.d.ts +21 -0
  129. package/dist/chunks/halo3/v12070_08_09_05_2031_halo3_ship/s_blf_chunk_compressed_data.d.ts.map +1 -0
  130. package/dist/chunks/halo3/v12070_08_09_05_2031_halo3_ship/s_blf_chunk_compressed_data.js +112 -0
  131. package/dist/chunks/halo3/v12070_08_09_05_2031_halo3_ship/s_blf_chunk_end_of_file.d.ts +7 -0
  132. package/dist/chunks/halo3/v12070_08_09_05_2031_halo3_ship/s_blf_chunk_end_of_file.d.ts.map +1 -0
  133. package/dist/chunks/halo3/v12070_08_09_05_2031_halo3_ship/s_blf_chunk_end_of_file.js +72 -0
  134. package/dist/chunks/halo3/v12070_08_09_05_2031_halo3_ship/s_blf_chunk_start_of_file.d.ts +13 -0
  135. package/dist/chunks/halo3/v12070_08_09_05_2031_halo3_ship/s_blf_chunk_start_of_file.d.ts.map +1 -0
  136. package/dist/chunks/halo3/v12070_08_09_05_2031_halo3_ship/s_blf_chunk_start_of_file.js +83 -0
  137. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/index.d.ts +7 -0
  138. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/index.d.ts.map +1 -0
  139. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/index.js +6 -0
  140. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_author.d.ts +26 -0
  141. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_author.d.ts.map +1 -0
  142. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_author.js +109 -0
  143. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_compressed_data.d.ts +4 -0
  144. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_compressed_data.d.ts.map +1 -0
  145. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_compressed_data.js +3 -0
  146. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_content_header.d.ts +8 -0
  147. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_content_header.d.ts.map +1 -0
  148. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_content_header.js +78 -0
  149. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_game_variant.d.ts +24 -0
  150. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_game_variant.d.ts.map +1 -0
  151. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_game_variant.js +130 -0
  152. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_packed_game_variant.d.ts +15 -0
  153. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_packed_game_variant.d.ts.map +1 -0
  154. package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_packed_game_variant.js +85 -0
  155. package/dist/decorators.d.ts +38 -0
  156. package/dist/decorators.d.ts.map +1 -0
  157. package/dist/decorators.js +68 -0
  158. package/dist/error.d.ts +4 -0
  159. package/dist/error.d.ts.map +1 -0
  160. package/dist/error.js +6 -0
  161. package/dist/index.d.ts +7 -0
  162. package/dist/index.d.ts.map +1 -0
  163. package/dist/index.js +6 -0
  164. package/dist/s_blf_header.d.ts +14 -0
  165. package/dist/s_blf_header.d.ts.map +1 -0
  166. package/dist/s_blf_header.js +113 -0
  167. package/dist/versions/halo3/v12070_08_09_05_2031_halo3_ship.d.ts +5 -0
  168. package/dist/versions/halo3/v12070_08_09_05_2031_halo3_ship.d.ts.map +1 -0
  169. package/dist/versions/halo3/v12070_08_09_05_2031_halo3_ship.js +4 -0
  170. package/dist/versions/halo3odst/v13895_09_04_27_2201_atlas_release.d.ts +5 -0
  171. package/dist/versions/halo3odst/v13895_09_04_27_2201_atlas_release.d.ts.map +1 -0
  172. package/dist/versions/halo3odst/v13895_09_04_27_2201_atlas_release.js +4 -0
  173. package/dist/versions/haloreach/v12065_11_08_24_1738_tu1actual.d.ts +10 -0
  174. package/dist/versions/haloreach/v12065_11_08_24_1738_tu1actual.d.ts.map +1 -0
  175. package/dist/versions/haloreach/v12065_11_08_24_1738_tu1actual.js +9 -0
  176. package/dist-cjs/bitstream/enum.js +19 -0
  177. package/dist-cjs/bitstream/enums.js +34 -0
  178. package/dist-cjs/bitstream/errors.js +16 -0
  179. package/dist-cjs/bitstream/index.js +29 -0
  180. package/dist-cjs/bitstream/math.js +167 -0
  181. package/dist-cjs/bitstream/reader.js +404 -0
  182. package/dist-cjs/bitstream/writer.js +334 -0
  183. package/dist-cjs/blam/common/cache/index.js +17 -0
  184. package/dist-cjs/blam/common/cache/security_functions.js +22 -0
  185. package/dist-cjs/blam/common/index.js +18 -0
  186. package/dist-cjs/blam/common/memory/data_compress.js +33 -0
  187. package/dist-cjs/blam/common/memory/index.js +17 -0
  188. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_custom_variant.js +129 -0
  189. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_custom_variant_au1_settings.js +34 -0
  190. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_default.js +305 -0
  191. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_survival_variant.js +182 -0
  192. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_traits.js +20 -0
  193. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_variant.js +113 -0
  194. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_player_traits.js +151 -0
  195. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_string_table.js +195 -0
  196. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/index.js +25 -0
  197. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_megalo_game_statistic.js +22 -0
  198. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_megalogamengine_map_permissions.js +22 -0
  199. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_object_filter.js +43 -0
  200. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_trigger.js +63 -0
  201. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/index.js +29 -0
  202. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_actions.js +1640 -0
  203. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_conditions.js +224 -0
  204. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_references.js +508 -0
  205. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_text.js +124 -0
  206. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_custom_game_engine_definition.js +120 -0
  207. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_game_engine_player_rating_parameters.js +58 -0
  208. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_user_defined_option.js +87 -0
  209. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_variable_metadata.js +93 -0
  210. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_variant_variable.js +79 -0
  211. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/index.js +19 -0
  212. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/saved_games/index.js +17 -0
  213. package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/saved_games/saved_game_files.js +591 -0
  214. package/dist-cjs/blf_chunk.js +139 -0
  215. package/dist-cjs/blffile.js +26 -0
  216. package/dist-cjs/chunk_signature.js +52 -0
  217. package/dist-cjs/chunks/halo3/v12070_08_09_05_2031_halo3_ship/index.js +10 -0
  218. package/dist-cjs/chunks/halo3/v12070_08_09_05_2031_halo3_ship/s_blf_chunk_compressed_data.js +115 -0
  219. package/dist-cjs/chunks/halo3/v12070_08_09_05_2031_halo3_ship/s_blf_chunk_end_of_file.js +75 -0
  220. package/dist-cjs/chunks/halo3/v12070_08_09_05_2031_halo3_ship/s_blf_chunk_start_of_file.js +86 -0
  221. package/dist-cjs/chunks/haloreach/v12065_11_08_24_1738_tu1actual/index.js +23 -0
  222. package/dist-cjs/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_author.js +115 -0
  223. package/dist-cjs/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_compressed_data.js +10 -0
  224. package/dist-cjs/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_content_header.js +81 -0
  225. package/dist-cjs/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_game_variant.js +133 -0
  226. package/dist-cjs/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_packed_game_variant.js +88 -0
  227. package/dist-cjs/decorators.js +75 -0
  228. package/dist-cjs/error.js +10 -0
  229. package/dist-cjs/index.js +53 -0
  230. package/dist-cjs/package.json +1 -0
  231. package/dist-cjs/s_blf_header.js +117 -0
  232. package/dist-cjs/versions/halo3/v12070_08_09_05_2031_halo3_ship.js +20 -0
  233. package/dist-cjs/versions/halo3odst/v13895_09_04_27_2201_atlas_release.js +20 -0
  234. package/dist-cjs/versions/haloreach/v12065_11_08_24_1738_tu1actual.js +25 -0
  235. package/package.json +99 -0
@@ -0,0 +1,126 @@
1
+ import { c } from "@craftycodie/cstruct";
2
+ import { chunkMatches, getBlfChunkMeta } from "./decorators";
3
+ import { BlfError } from "./error";
4
+ import { parse_blf_chunk_version, s_blf_header } from "./s_blf_header";
5
+ export { BLF_CHUNK_META, blf, chunk, createBlfChunk, getBlfChunkMeta, } from "./decorators";
6
+ export { parse_blf_chunk_version, s_blf_header };
7
+ /** Default {@link BLFChunk.read} / {@link BLFChunk.write}. */
8
+ export class BLFChunkBase {
9
+ read(bytes, endian) {
10
+ const header = c.read(s_blf_header, bytes.subarray(0, c.size(s_blf_header)), endian);
11
+ const meta = getBlfChunkMeta(this);
12
+ if (header.signature !== meta.signature ||
13
+ header.major !== meta.major ||
14
+ header.minor !== meta.minor) {
15
+ throw new BlfError(`BLF chunk header mismatch: expected ${meta.signature} ${meta.major}.${meta.minor}, got ${header.signature} ${header.major}.${header.minor}`);
16
+ }
17
+ if (bytes.length < header.chunk_length) {
18
+ throw new BlfError(`BLF chunk buffer too short: chunk_length ${header.chunk_length}, got ${bytes.length}`);
19
+ }
20
+ const payload = bytes.subarray(c.size(s_blf_header), header.chunk_length);
21
+ this.read_body(payload, endian);
22
+ }
23
+ write(endian) {
24
+ const body = this.write_body(endian);
25
+ const { signature, major, minor } = getBlfChunkMeta(this);
26
+ const header_bytes = c.write(s_blf_header, s_blf_header.create(signature, body.length + c.size(s_blf_header), major, minor), endian);
27
+ const out = new Uint8Array(header_bytes.length + body.length);
28
+ out.set(header_bytes, 0);
29
+ out.set(body, header_bytes.length);
30
+ return out;
31
+ }
32
+ }
33
+ /**
34
+ * Default {@link BLFChunk} read/write for classes decorated with `@c.struct`.
35
+ * Apply `@blf.chunk` above `@c.struct` and extend this base class.
36
+ */
37
+ export class CStructBLFChunk extends BLFChunkBase {
38
+ read_body(payload, endian) {
39
+ const ctor = this.constructor;
40
+ const info = this;
41
+ const size = c.size(ctor);
42
+ if (payload.length < size) {
43
+ throw new BlfError(`Cannot read ${info.signature} chunk: need at least ${size} bytes, got ${payload.length}`);
44
+ }
45
+ Object.assign(this, c.read(ctor, payload, endian));
46
+ }
47
+ write_body(endian) {
48
+ const ctor = this.constructor;
49
+ return c.write(ctor, this, endian);
50
+ }
51
+ }
52
+ function tryReadHeader(buffer, byte_offset, endian) {
53
+ if (byte_offset + c.size(s_blf_header) > buffer.length) {
54
+ return null;
55
+ }
56
+ try {
57
+ return c.read(s_blf_header, buffer.subarray(byte_offset, byte_offset + c.size(s_blf_header)), endian);
58
+ }
59
+ catch {
60
+ return null;
61
+ }
62
+ }
63
+ function isChunkLengthValid(chunk_length, byte_offset, buffer_length) {
64
+ return (Number.isInteger(chunk_length) &&
65
+ chunk_length >= c.size(s_blf_header) &&
66
+ byte_offset + chunk_length <= buffer_length);
67
+ }
68
+ function loadChunkAt(buffer, byte_offset, header, chunk, endian) {
69
+ const chunk_end = byte_offset + header.chunk_length;
70
+ const payload = buffer.subarray(byte_offset + c.size(s_blf_header), chunk_end);
71
+ chunk.read_body(payload, endian);
72
+ }
73
+ /** Walk a BLF file sequentially until `chunk` is found, then read it in place. */
74
+ export function find_chunk(buffer, chunk, endian) {
75
+ const meta = getBlfChunkMeta(chunk);
76
+ let offset = 0;
77
+ while (offset + c.size(s_blf_header) <= buffer.length) {
78
+ let header;
79
+ try {
80
+ header = c.read(s_blf_header, buffer.subarray(offset, offset + c.size(s_blf_header)), endian);
81
+ }
82
+ catch {
83
+ return false;
84
+ }
85
+ if (chunkMatches(header, meta)) {
86
+ if (!isChunkLengthValid(header.chunk_length, offset, buffer.length)) {
87
+ throw new BlfError(`Matched chunk "${header.signature}" at offset ${offset} has invalid chunk_length ${header.chunk_length}`);
88
+ }
89
+ loadChunkAt(buffer, offset, header, chunk, endian);
90
+ return true;
91
+ }
92
+ if (!isChunkLengthValid(header.chunk_length, offset, buffer.length)) {
93
+ return false;
94
+ }
95
+ offset += header.chunk_length;
96
+ }
97
+ return false;
98
+ }
99
+ /** Scan every byte offset for `chunk`, then read it in place when found. */
100
+ export function search_for_chunk(buffer, chunk, endian) {
101
+ const meta = getBlfChunkMeta(chunk);
102
+ const last_offset = buffer.length - c.size(s_blf_header);
103
+ const sig = meta.signature;
104
+ const sig0 = endian === "little" ? sig.charCodeAt(3) : sig.charCodeAt(0);
105
+ const sig1 = endian === "little" ? sig.charCodeAt(2) : sig.charCodeAt(1);
106
+ const sig2 = endian === "little" ? sig.charCodeAt(1) : sig.charCodeAt(2);
107
+ const sig3 = endian === "little" ? sig.charCodeAt(0) : sig.charCodeAt(3);
108
+ for (let offset = 0; offset <= last_offset; offset++) {
109
+ if (buffer[offset] !== sig0 ||
110
+ buffer[offset + 1] !== sig1 ||
111
+ buffer[offset + 2] !== sig2 ||
112
+ buffer[offset + 3] !== sig3) {
113
+ continue;
114
+ }
115
+ const header = tryReadHeader(buffer, offset, endian);
116
+ if (header === null || !chunkMatches(header, meta)) {
117
+ continue;
118
+ }
119
+ if (!isChunkLengthValid(header.chunk_length, offset, buffer.length)) {
120
+ continue;
121
+ }
122
+ loadChunkAt(buffer, offset, header, chunk, endian);
123
+ return true;
124
+ }
125
+ return false;
126
+ }
@@ -0,0 +1,5 @@
1
+ import type { c } from "@craftycodie/cstruct";
2
+ import { type BLFChunk } from "./blf_chunk";
3
+ /** Concatenate chunks (each with a 12-byte BLF header) in order. */
4
+ export declare function write_blffile(endian: c.Endian, chunks: BLFChunk[]): Uint8Array;
5
+ //# sourceMappingURL=blffile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blffile.d.ts","sourceRoot":"","sources":["../src/blffile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,KAAK,QAAQ,EAAmB,MAAM,aAAa,CAAC;AAE7D,oEAAoE;AACpE,wBAAgB,aAAa,CAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,EAChB,MAAM,EAAE,QAAQ,EAAE,GACjB,UAAU,CAyBZ"}
@@ -0,0 +1,23 @@
1
+ import { getBlfChunkMeta } from "./blf_chunk";
2
+ /** Concatenate chunks (each with a 12-byte BLF header) in order. */
3
+ export function write_blffile(endian, chunks) {
4
+ const parts = [];
5
+ let offset = 0;
6
+ for (const chunk of chunks) {
7
+ if (getBlfChunkMeta(chunk).signature === "_eof" &&
8
+ Object.getOwnPropertyNames(chunk).includes("file_size") &&
9
+ typeof chunk.file_size === "number") {
10
+ chunk.file_size = offset;
11
+ }
12
+ const bytes = chunk.write(endian);
13
+ parts.push(bytes);
14
+ offset += bytes.length;
15
+ }
16
+ const out = new Uint8Array(offset);
17
+ let write_offset = 0;
18
+ for (const part of parts) {
19
+ out.set(part, write_offset);
20
+ write_offset += part.length;
21
+ }
22
+ return out;
23
+ }
@@ -0,0 +1,10 @@
1
+ import { c } from "@craftycodie/cstruct";
2
+ /** Fixed 4-byte BLF chunk signature; reverses byte order on little-endian. */
3
+ export declare class ChunkSignature extends c.AdvancedType<string> {
4
+ readonly byteSize = 4;
5
+ read(bytes: Uint8Array, offset: number, endian: c.Endian, _label: string): string;
6
+ write(bytes: Uint8Array, offset: number, value: string, endian: c.Endian, _label: string): void;
7
+ }
8
+ /** BLF chunk signature field for `@c.field`. */
9
+ export declare function chunkSignature(): ChunkSignature;
10
+ //# sourceMappingURL=chunk_signature.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk_signature.d.ts","sourceRoot":"","sources":["../src/chunk_signature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,sBAAsB,CAAC;AAGzC,8EAA8E;AAC9E,qBAAa,cAAe,SAAQ,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC;IACxD,QAAQ,CAAC,QAAQ,KAAK;IAEtB,IAAI,CACF,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,CAAC,CAAC,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,MAAM;IAgBT,KAAK,CACH,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,CAAC,CAAC,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,IAAI;CA2BR;AAED,gDAAgD;AAChD,wBAAgB,cAAc,IAAI,cAAc,CAE/C"}
@@ -0,0 +1,47 @@
1
+ import { c } from "@craftycodie/cstruct";
2
+ import { BlfError } from "./error";
3
+ /** Fixed 4-byte BLF chunk signature; reverses byte order on little-endian. */
4
+ export class ChunkSignature extends c.AdvancedType {
5
+ byteSize = 4;
6
+ read(bytes, offset, endian, _label) {
7
+ if (offset + this.byteSize > bytes.length) {
8
+ throw new BlfError(`Cannot read chunk signature: need ${this.byteSize} bytes at offset ${offset}, have ${bytes.length - offset}`);
9
+ }
10
+ const w0 = bytes[offset];
11
+ const w1 = bytes[offset + 1];
12
+ const w2 = bytes[offset + 2];
13
+ const w3 = bytes[offset + 3];
14
+ if (endian === "little") {
15
+ return String.fromCharCode(w3, w2, w1, w0);
16
+ }
17
+ return String.fromCharCode(w0, w1, w2, w3);
18
+ }
19
+ write(bytes, offset, value, endian, _label) {
20
+ if (value.length !== this.byteSize) {
21
+ throw new BlfError(`BLF chunk signature must be exactly 4 characters, got ${value.length}: "${value}"`);
22
+ }
23
+ if (offset + this.byteSize > bytes.length) {
24
+ throw new BlfError(`Cannot write chunk signature: need ${this.byteSize} bytes at offset ${offset}, have ${bytes.length - offset}`);
25
+ }
26
+ const a = value.charCodeAt(0);
27
+ const b = value.charCodeAt(1);
28
+ const c0 = value.charCodeAt(2);
29
+ const d = value.charCodeAt(3);
30
+ if (endian === "little") {
31
+ bytes[offset] = d;
32
+ bytes[offset + 1] = c0;
33
+ bytes[offset + 2] = b;
34
+ bytes[offset + 3] = a;
35
+ }
36
+ else {
37
+ bytes[offset] = a;
38
+ bytes[offset + 1] = b;
39
+ bytes[offset + 2] = c0;
40
+ bytes[offset + 3] = d;
41
+ }
42
+ }
43
+ }
44
+ /** BLF chunk signature field for `@c.field`. */
45
+ export function chunkSignature() {
46
+ return new ChunkSignature();
47
+ }
@@ -0,0 +1,4 @@
1
+ export { s_blf_chunk_compressed_data } from "./s_blf_chunk_compressed_data";
2
+ export { s_blf_chunk_end_of_file } from "./s_blf_chunk_end_of_file";
3
+ export { e_byte_order_mark, s_blf_chunk_start_of_file, } from "./s_blf_chunk_start_of_file";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/chunks/halo3/v12070_08_09_05_2031_halo3_ship/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EACL,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,6BAA6B,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { s_blf_chunk_compressed_data } from "./s_blf_chunk_compressed_data";
2
+ export { s_blf_chunk_end_of_file } from "./s_blf_chunk_end_of_file";
3
+ export { e_byte_order_mark, s_blf_chunk_start_of_file, } from "./s_blf_chunk_start_of_file";
@@ -0,0 +1,21 @@
1
+ import type { c } from "@craftycodie/cstruct";
2
+ import { type BLFChunk, BLFChunkBase, type BLFChunkConstructor } from "../../../blf_chunk";
3
+ /**
4
+ * Halo 3 `_cmp` (1.1): zlib-compressed wrapper around another BLF chunk.
5
+ *
6
+ * Payload layout (big-endian): `u8 compression_type`, `u32 uncompressed_size`,
7
+ * zlib bytes (RFC 1950). Uncompressed data is a full inner BLF chunk (12-byte
8
+ * header + payload).
9
+ */
10
+ export declare class s_blf_chunk_compressed_data<T extends BLFChunk = BLFChunk> extends BLFChunkBase {
11
+ readonly InnerCtor: BLFChunkConstructor<T>;
12
+ compression_type: number;
13
+ chunk: T;
14
+ constructor(InnerCtor: BLFChunkConstructor<T>, chunk?: T);
15
+ static create<C extends BLFChunk>(InnerCtor: BLFChunkConstructor<C>, chunk: C): s_blf_chunk_compressed_data<C>;
16
+ /** Decompress `_cmp` body bytes (type + BE size + zlib) without parsing the inner chunk. */
17
+ static decompress_payload(payload: Uint8Array): Uint8Array;
18
+ read_body(payload: Uint8Array, endian: c.Endian): void;
19
+ write_body(endian: c.Endian): Uint8Array;
20
+ }
21
+ //# sourceMappingURL=s_blf_chunk_compressed_data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s_blf_chunk_compressed_data.d.ts","sourceRoot":"","sources":["../../../../src/chunks/halo3/v12070_08_09_05_2031_halo3_ship/s_blf_chunk_compressed_data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,sBAAsB,CAAC;AAG9C,OAAO,EACL,KAAK,QAAQ,EACb,YAAY,EACZ,KAAK,mBAAmB,EAKzB,MAAM,oBAAoB,CAAC;AAG5B;;;;;;GAMG;AACH,qBACa,2BAA2B,CACtC,CAAC,SAAS,QAAQ,GAAG,QAAQ,CAC7B,SAAQ,YAAY;IACpB,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC;IAC3C,gBAAgB,SAAK;IACrB,KAAK,EAAE,CAAC,CAAC;gBAEG,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;IAMxD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,QAAQ,EAC9B,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC,EACjC,KAAK,EAAE,CAAC,GACP,2BAA2B,CAAC,CAAC,CAAC;IAMjC,4FAA4F;IAC5F,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU;IAqB1D,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,GAAG,IAAI;IAqBtD,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,GAAG,UAAU;CAUzC"}
@@ -0,0 +1,112 @@
1
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
2
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
3
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
4
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
5
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
6
+ var _, done = false;
7
+ for (var i = decorators.length - 1; i >= 0; i--) {
8
+ var context = {};
9
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
10
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
11
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
12
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
13
+ if (kind === "accessor") {
14
+ if (result === void 0) continue;
15
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
16
+ if (_ = accept(result.get)) descriptor.get = _;
17
+ if (_ = accept(result.set)) descriptor.set = _;
18
+ if (_ = accept(result.init)) initializers.unshift(_);
19
+ }
20
+ else if (_ = accept(result)) {
21
+ if (kind === "field") initializers.unshift(_);
22
+ else descriptor[key] = _;
23
+ }
24
+ }
25
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
26
+ done = true;
27
+ };
28
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
29
+ var useValue = arguments.length > 2;
30
+ for (var i = 0; i < initializers.length; i++) {
31
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
32
+ }
33
+ return useValue ? value : void 0;
34
+ };
35
+ import { inflate } from "pako";
36
+ import { zlib_compress } from "../../../blam/common/memory/data_compress";
37
+ import { BLFChunkBase, blf, createBlfChunk, find_chunk, getBlfChunkMeta, } from "../../../blf_chunk";
38
+ import { BlfError } from "../../../error";
39
+ /**
40
+ * Halo 3 `_cmp` (1.1): zlib-compressed wrapper around another BLF chunk.
41
+ *
42
+ * Payload layout (big-endian): `u8 compression_type`, `u32 uncompressed_size`,
43
+ * zlib bytes (RFC 1950). Uncompressed data is a full inner BLF chunk (12-byte
44
+ * header + payload).
45
+ */
46
+ let s_blf_chunk_compressed_data = (() => {
47
+ let _classDecorators = [blf.chunk("_cmp", 1.1)];
48
+ let _classDescriptor;
49
+ let _classExtraInitializers = [];
50
+ let _classThis;
51
+ let _classSuper = BLFChunkBase;
52
+ var s_blf_chunk_compressed_data = class extends _classSuper {
53
+ static { _classThis = this; }
54
+ static {
55
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
56
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
57
+ s_blf_chunk_compressed_data = _classThis = _classDescriptor.value;
58
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
59
+ __runInitializers(_classThis, _classExtraInitializers);
60
+ }
61
+ InnerCtor;
62
+ compression_type = 0;
63
+ chunk;
64
+ constructor(InnerCtor, chunk) {
65
+ super();
66
+ this.InnerCtor = InnerCtor;
67
+ this.chunk = chunk ?? createBlfChunk(InnerCtor);
68
+ }
69
+ static create(InnerCtor, chunk) {
70
+ const wrapper = new s_blf_chunk_compressed_data(InnerCtor, chunk);
71
+ wrapper.compression_type = 0;
72
+ return wrapper;
73
+ }
74
+ /** Decompress `_cmp` body bytes (type + BE size + zlib) without parsing the inner chunk. */
75
+ static decompress_payload(payload) {
76
+ if (payload.length < 5) {
77
+ throw new BlfError(`_cmp payload needs at least 5 bytes, got ${payload.length}`);
78
+ }
79
+ const uncompressed_size = new DataView(payload.buffer, payload.byteOffset).getUint32(1, false);
80
+ const compressed = payload.subarray(5);
81
+ const uncompressed = inflate(compressed);
82
+ if (uncompressed.length !== uncompressed_size) {
83
+ throw new BlfError(`_cmp zlib decompressed ${uncompressed.length} bytes, expected ${uncompressed_size}`);
84
+ }
85
+ return uncompressed;
86
+ }
87
+ read_body(payload, endian) {
88
+ if (payload.length < 5) {
89
+ throw new BlfError(`_cmp payload needs at least 5 bytes, got ${payload.length}`);
90
+ }
91
+ this.compression_type = payload[0];
92
+ const uncompressed = s_blf_chunk_compressed_data.decompress_payload(payload);
93
+ const chunk = createBlfChunk(this.InnerCtor);
94
+ if (!find_chunk(uncompressed, chunk, endian)) {
95
+ const expected = getBlfChunkMeta(this.InnerCtor);
96
+ throw new BlfError(`Unexpected compressed chunk: expected ${expected.signature} ${expected.major}.${expected.minor} not found in decompressed body`);
97
+ }
98
+ this.chunk = chunk;
99
+ }
100
+ write_body(endian) {
101
+ const inner_bytes = this.chunk.write(endian);
102
+ const compressed = zlib_compress(inner_bytes);
103
+ const payload = new Uint8Array(1 + 4 + compressed.length);
104
+ payload[0] = this.compression_type;
105
+ new DataView(payload.buffer).setUint32(1, inner_bytes.length, false);
106
+ payload.set(compressed, 5);
107
+ return payload;
108
+ }
109
+ };
110
+ return s_blf_chunk_compressed_data = _classThis;
111
+ })();
112
+ export { s_blf_chunk_compressed_data };
@@ -0,0 +1,7 @@
1
+ import { CStructBLFChunk } from "../../../blf_chunk";
2
+ /** BLF end-of-file chunk (`_eof` 1.1). `file_size` is bytes written before this chunk. */
3
+ export declare class s_blf_chunk_end_of_file extends CStructBLFChunk {
4
+ file_size: number;
5
+ authentication_type: number;
6
+ }
7
+ //# sourceMappingURL=s_blf_chunk_end_of_file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s_blf_chunk_end_of_file.d.ts","sourceRoot":"","sources":["../../../../src/chunks/halo3/v12070_08_09_05_2031_halo3_ship/s_blf_chunk_end_of_file.ts"],"names":[],"mappings":"AACA,OAAO,EAAO,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,0FAA0F;AAC1F,qBAEa,uBAAwB,SAAQ,eAAe;IAE1D,SAAS,SAAK;IAGd,mBAAmB,SAAK;CACzB"}
@@ -0,0 +1,72 @@
1
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
2
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
3
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
4
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
5
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
6
+ var _, done = false;
7
+ for (var i = decorators.length - 1; i >= 0; i--) {
8
+ var context = {};
9
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
10
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
11
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
12
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
13
+ if (kind === "accessor") {
14
+ if (result === void 0) continue;
15
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
16
+ if (_ = accept(result.get)) descriptor.get = _;
17
+ if (_ = accept(result.set)) descriptor.set = _;
18
+ if (_ = accept(result.init)) initializers.unshift(_);
19
+ }
20
+ else if (_ = accept(result)) {
21
+ if (kind === "field") initializers.unshift(_);
22
+ else descriptor[key] = _;
23
+ }
24
+ }
25
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
26
+ done = true;
27
+ };
28
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
29
+ var useValue = arguments.length > 2;
30
+ for (var i = 0; i < initializers.length; i++) {
31
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
32
+ }
33
+ return useValue ? value : void 0;
34
+ };
35
+ import { c } from "@craftycodie/cstruct";
36
+ import { blf, CStructBLFChunk } from "../../../blf_chunk";
37
+ /** BLF end-of-file chunk (`_eof` 1.1). `file_size` is bytes written before this chunk. */
38
+ let s_blf_chunk_end_of_file = (() => {
39
+ let _classDecorators = [blf.chunk("_eof", 1.1), c.struct()];
40
+ let _classDescriptor;
41
+ let _classExtraInitializers = [];
42
+ let _classThis;
43
+ let _classSuper = CStructBLFChunk;
44
+ let _file_size_decorators;
45
+ let _file_size_initializers = [];
46
+ let _file_size_extraInitializers = [];
47
+ let _authentication_type_decorators;
48
+ let _authentication_type_initializers = [];
49
+ let _authentication_type_extraInitializers = [];
50
+ var s_blf_chunk_end_of_file = class extends _classSuper {
51
+ static { _classThis = this; }
52
+ static {
53
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
54
+ _file_size_decorators = [c.field("u32")];
55
+ _authentication_type_decorators = [c.field("u8")];
56
+ __esDecorate(null, null, _file_size_decorators, { kind: "field", name: "file_size", static: false, private: false, access: { has: obj => "file_size" in obj, get: obj => obj.file_size, set: (obj, value) => { obj.file_size = value; } }, metadata: _metadata }, _file_size_initializers, _file_size_extraInitializers);
57
+ __esDecorate(null, null, _authentication_type_decorators, { kind: "field", name: "authentication_type", static: false, private: false, access: { has: obj => "authentication_type" in obj, get: obj => obj.authentication_type, set: (obj, value) => { obj.authentication_type = value; } }, metadata: _metadata }, _authentication_type_initializers, _authentication_type_extraInitializers);
58
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
59
+ s_blf_chunk_end_of_file = _classThis = _classDescriptor.value;
60
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
61
+ __runInitializers(_classThis, _classExtraInitializers);
62
+ }
63
+ file_size = __runInitializers(this, _file_size_initializers, 0);
64
+ authentication_type = (__runInitializers(this, _file_size_extraInitializers), __runInitializers(this, _authentication_type_initializers, 0));
65
+ constructor() {
66
+ super(...arguments);
67
+ __runInitializers(this, _authentication_type_extraInitializers);
68
+ }
69
+ };
70
+ return s_blf_chunk_end_of_file = _classThis;
71
+ })();
72
+ export { s_blf_chunk_end_of_file };
@@ -0,0 +1,13 @@
1
+ import { CStructBLFChunk } from "../../../blf_chunk";
2
+ /** Wire values for {@link s_blf_chunk_start_of_file.byte_order_mark}. */
3
+ export declare enum e_byte_order_mark {
4
+ little_endian = 65534,
5
+ big_endian = 65279
6
+ }
7
+ /** BLF start-of-file chunk (`_blf` 1.2). */
8
+ export declare class s_blf_chunk_start_of_file extends CStructBLFChunk {
9
+ byte_order_mark: e_byte_order_mark;
10
+ name: string;
11
+ static create(name: string): s_blf_chunk_start_of_file;
12
+ }
13
+ //# sourceMappingURL=s_blf_chunk_start_of_file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s_blf_chunk_start_of_file.d.ts","sourceRoot":"","sources":["../../../../src/chunks/halo3/v12070_08_09_05_2031_halo3_ship/s_blf_chunk_start_of_file.ts"],"names":[],"mappings":"AACA,OAAO,EAAO,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,yEAAyE;AACzE,oBAAY,iBAAiB;IAC3B,aAAa,QAAS;IACtB,UAAU,QAAS;CACpB;AAED,4CAA4C;AAC5C,qBAEa,yBAA0B,SAAQ,eAAe;IAE5D,eAAe,oBAAmC;IAGlD,IAAI,SAAM;IAEV,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,yBAAyB;CAKvD"}
@@ -0,0 +1,83 @@
1
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
2
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
3
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
4
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
5
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
6
+ var _, done = false;
7
+ for (var i = decorators.length - 1; i >= 0; i--) {
8
+ var context = {};
9
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
10
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
11
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
12
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
13
+ if (kind === "accessor") {
14
+ if (result === void 0) continue;
15
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
16
+ if (_ = accept(result.get)) descriptor.get = _;
17
+ if (_ = accept(result.set)) descriptor.set = _;
18
+ if (_ = accept(result.init)) initializers.unshift(_);
19
+ }
20
+ else if (_ = accept(result)) {
21
+ if (kind === "field") initializers.unshift(_);
22
+ else descriptor[key] = _;
23
+ }
24
+ }
25
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
26
+ done = true;
27
+ };
28
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
29
+ var useValue = arguments.length > 2;
30
+ for (var i = 0; i < initializers.length; i++) {
31
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
32
+ }
33
+ return useValue ? value : void 0;
34
+ };
35
+ import { c } from "@craftycodie/cstruct";
36
+ import { blf, CStructBLFChunk } from "../../../blf_chunk";
37
+ /** Wire values for {@link s_blf_chunk_start_of_file.byte_order_mark}. */
38
+ export var e_byte_order_mark;
39
+ (function (e_byte_order_mark) {
40
+ e_byte_order_mark[e_byte_order_mark["little_endian"] = 65534] = "little_endian";
41
+ e_byte_order_mark[e_byte_order_mark["big_endian"] = 65279] = "big_endian";
42
+ })(e_byte_order_mark || (e_byte_order_mark = {}));
43
+ /** BLF start-of-file chunk (`_blf` 1.2). */
44
+ let s_blf_chunk_start_of_file = (() => {
45
+ let _classDecorators = [blf.chunk("_blf", 1.2), c.struct()];
46
+ let _classDescriptor;
47
+ let _classExtraInitializers = [];
48
+ let _classThis;
49
+ let _classSuper = CStructBLFChunk;
50
+ let _byte_order_mark_decorators;
51
+ let _byte_order_mark_initializers = [];
52
+ let _byte_order_mark_extraInitializers = [];
53
+ let _name_decorators;
54
+ let _name_initializers = [];
55
+ let _name_extraInitializers = [];
56
+ var s_blf_chunk_start_of_file = class extends _classSuper {
57
+ static { _classThis = this; }
58
+ static {
59
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
60
+ _byte_order_mark_decorators = [c.field(c.enum("u16", e_byte_order_mark))];
61
+ _name_decorators = [c.field(c.String(32), { pad_before: 2 })];
62
+ __esDecorate(null, null, _byte_order_mark_decorators, { kind: "field", name: "byte_order_mark", static: false, private: false, access: { has: obj => "byte_order_mark" in obj, get: obj => obj.byte_order_mark, set: (obj, value) => { obj.byte_order_mark = value; } }, metadata: _metadata }, _byte_order_mark_initializers, _byte_order_mark_extraInitializers);
63
+ __esDecorate(null, null, _name_decorators, { kind: "field", name: "name", static: false, private: false, access: { has: obj => "name" in obj, get: obj => obj.name, set: (obj, value) => { obj.name = value; } }, metadata: _metadata }, _name_initializers, _name_extraInitializers);
64
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
65
+ s_blf_chunk_start_of_file = _classThis = _classDescriptor.value;
66
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
67
+ __runInitializers(_classThis, _classExtraInitializers);
68
+ }
69
+ byte_order_mark = __runInitializers(this, _byte_order_mark_initializers, e_byte_order_mark.little_endian);
70
+ name = (__runInitializers(this, _byte_order_mark_extraInitializers), __runInitializers(this, _name_initializers, ""));
71
+ static create(name) {
72
+ const chunk = new s_blf_chunk_start_of_file();
73
+ chunk.name = name;
74
+ return chunk;
75
+ }
76
+ constructor() {
77
+ super(...arguments);
78
+ __runInitializers(this, _name_extraInitializers);
79
+ }
80
+ };
81
+ return s_blf_chunk_start_of_file = _classThis;
82
+ })();
83
+ export { s_blf_chunk_start_of_file };
@@ -0,0 +1,7 @@
1
+ /** Reach TU1 chunk implementations (import via `versions/` for a full build). */
2
+ export { e_file_type, s_content_item_campaign_metadata, s_content_item_display_metadata, s_content_item_film_metadata, s_content_item_firefight_metadata, s_content_item_game_variant_metadata, s_content_item_general_metadata, s_content_item_history, s_content_item_matchmaking_metadata, s_content_item_metadata as c_content_item_metadata, } from "../../../blam/haloreach/v12065_11_08_24_1738_tu1actual/saved_games/saved_game_files";
3
+ export { s_blf_chunk_author } from "./s_blf_chunk_author";
4
+ export { s_blf_chunk_content_header } from "./s_blf_chunk_content_header";
5
+ export { s_blf_chunk_game_variant } from "./s_blf_chunk_game_variant";
6
+ export { s_blf_chunk_packed_game_variant as s_blf_chunk_matchmaking_game_variant } from "./s_blf_chunk_packed_game_variant";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/chunks/haloreach/v12065_11_08_24_1738_tu1actual/index.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,OAAO,EACL,WAAW,EACX,gCAAgC,EAChC,+BAA+B,EAC/B,4BAA4B,EAC5B,iCAAiC,EACjC,oCAAoC,EACpC,+BAA+B,EAC/B,sBAAsB,EACtB,mCAAmC,EACnC,uBAAuB,IAAI,uBAAuB,GACnD,MAAM,qFAAqF,CAAC;AAC7F,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,+BAA+B,IAAI,oCAAoC,EAAE,MAAM,mCAAmC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /** Reach TU1 chunk implementations (import via `versions/` for a full build). */
2
+ export { e_file_type, s_content_item_campaign_metadata, s_content_item_display_metadata, s_content_item_film_metadata, s_content_item_firefight_metadata, s_content_item_game_variant_metadata, s_content_item_general_metadata, s_content_item_history, s_content_item_matchmaking_metadata, s_content_item_metadata as c_content_item_metadata, } from "../../../blam/haloreach/v12065_11_08_24_1738_tu1actual/saved_games/saved_game_files";
3
+ export { s_blf_chunk_author } from "./s_blf_chunk_author";
4
+ export { s_blf_chunk_content_header } from "./s_blf_chunk_content_header";
5
+ export { s_blf_chunk_game_variant } from "./s_blf_chunk_game_variant";
6
+ export { s_blf_chunk_packed_game_variant as s_blf_chunk_matchmaking_game_variant } from "./s_blf_chunk_packed_game_variant";
@@ -0,0 +1,26 @@
1
+ import { CStructBLFChunk } from "../../../blf_chunk";
2
+ /** BLF author chunk (`athr` 3.1) — same layout as Halo 3: ODST Atlas. */
3
+ export declare class s_blf_chunk_author extends CStructBLFChunk {
4
+ /** e.g. `GameData.Reach`, or blf_lib package name from `for_build`. */
5
+ program_name: string;
6
+ /** e.g. 12065 */
7
+ build_number: number;
8
+ /** e.g. 2 for Reach title storage exports */
9
+ build_number_sequence: number;
10
+ /** e.g. `12065.11.08.24.1738.tu1actual` */
11
+ build_string: string;
12
+ /** e.g. `davidav`, `dagasca` */
13
+ author_name: string;
14
+ /**
15
+ * Default author chunk for Reach TU1 exports.
16
+ * Mirrors `s_blf_chunk_author::for_build` in blf_lib (ODST 3.1 layout).
17
+ */
18
+ static forBuild(options?: {
19
+ programName?: string;
20
+ buildString?: string;
21
+ buildNumber?: number;
22
+ buildNumberSequence?: number;
23
+ authorName?: string;
24
+ }): s_blf_chunk_author;
25
+ }
26
+ //# sourceMappingURL=s_blf_chunk_author.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s_blf_chunk_author.d.ts","sourceRoot":"","sources":["../../../../src/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_author.ts"],"names":[],"mappings":"AAEA,OAAO,EAAO,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,yEAAyE;AACzE,qBAEa,kBAAmB,SAAQ,eAAe;IACrD,uEAAuE;IAEvE,YAAY,SAAM;IAElB,iBAAiB;IAEjB,YAAY,SAAK;IAEjB,6CAA6C;IAE7C,qBAAqB,SAAK;IAE1B,2CAA2C;IAE3C,YAAY,SAAM;IAElB,gCAAgC;IAEhC,WAAW,SAAM;IAEjB;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;QACxB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,kBAAkB;CASvB"}