@adeficior/data-modifier 2.0.0-rc.1 → 2.0.0-rc.20260814123929

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 (318) hide show
  1. package/dist/builtinModules.d.ts +3 -0
  2. package/dist/builtinModules.js +16 -0
  3. package/dist/builtinModules.js.map +1 -0
  4. package/dist/cli.js +5 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/emit/blacklist.d.ts +14 -17
  7. package/dist/emit/blacklist.js +40 -49
  8. package/dist/emit/blacklist.js.map +1 -1
  9. package/dist/emit/packMetadata.d.ts +16 -0
  10. package/dist/emit/packMetadata.js +20 -0
  11. package/dist/emit/packMetadata.js.map +1 -0
  12. package/dist/emit/polytoneTabs.d.ts +5 -8
  13. package/dist/emit/polytoneTabs.js +10 -8
  14. package/dist/emit/polytoneTabs.js.map +1 -1
  15. package/dist/emit/recipeGraph.d.ts +26 -0
  16. package/dist/emit/recipeGraph.js +201 -0
  17. package/dist/emit/recipeGraph.js.map +1 -0
  18. package/dist/index.d.ts +1 -31
  19. package/dist/index.js +4 -11
  20. package/dist/index.js.map +1 -1
  21. package/dist/installTarget.d.ts +18 -0
  22. package/dist/installTarget.js +109 -0
  23. package/dist/installTarget.js.map +1 -0
  24. package/dist/instance.d.ts +16 -0
  25. package/dist/instance.js +58 -0
  26. package/dist/instance.js.map +1 -0
  27. package/dist/module.d.ts +2 -0
  28. package/dist/module.js +13 -0
  29. package/dist/module.js.map +1 -0
  30. package/dist/serializer/recipe/adAstra/conversion.d.ts +18 -0
  31. package/dist/serializer/recipe/adAstra/conversion.js +38 -0
  32. package/dist/serializer/recipe/adAstra/conversion.js.map +1 -0
  33. package/dist/serializer/recipe/adAstra/hammering.d.ts +4 -0
  34. package/dist/serializer/recipe/adAstra/hammering.js +4 -0
  35. package/dist/serializer/recipe/adAstra/hammering.js.map +1 -0
  36. package/dist/serializer/recipe/adAstra/inputOutput.d.ts +18 -0
  37. package/dist/serializer/recipe/adAstra/inputOutput.js +50 -0
  38. package/dist/serializer/recipe/adAstra/inputOutput.js.map +1 -0
  39. package/dist/serializer/recipe/adAstra/nasaWorkbench.d.ts +4 -0
  40. package/dist/serializer/recipe/adAstra/nasaWorkbench.js +4 -0
  41. package/dist/serializer/recipe/adAstra/nasaWorkbench.js.map +1 -0
  42. package/dist/serializer/recipe/adAstra/spaceStation.d.ts +18 -0
  43. package/dist/serializer/recipe/adAstra/spaceStation.js +46 -0
  44. package/dist/serializer/recipe/adAstra/spaceStation.js.map +1 -0
  45. package/dist/serializer/recipe/roots/component.d.ts +17 -0
  46. package/dist/serializer/recipe/roots/component.js +30 -0
  47. package/dist/serializer/recipe/roots/component.js.map +1 -0
  48. package/dist/serializer/recipe/roots/ritual.d.ts +17 -0
  49. package/dist/serializer/recipe/roots/ritual.js +25 -0
  50. package/dist/serializer/recipe/roots/ritual.js.map +1 -0
  51. package/dist/serializer/recipe/sullys/polishing.d.ts +6 -0
  52. package/dist/serializer/recipe/sullys/polishing.js +4 -0
  53. package/dist/serializer/recipe/sullys/polishing.js.map +1 -0
  54. package/package.json +86 -96
  55. package/dist/cli/codegen/registry.d.ts +0 -3
  56. package/dist/cli/codegen/registry.js +0 -81
  57. package/dist/cli/codegen/registry.js.map +0 -1
  58. package/dist/cli/config.d.ts +0 -10
  59. package/dist/cli/config.js +0 -60
  60. package/dist/cli/config.js.map +0 -1
  61. package/dist/cli/index.js +0 -34
  62. package/dist/cli/index.js.map +0 -1
  63. package/dist/common/id.d.ts +0 -15
  64. package/dist/common/id.js +0 -42
  65. package/dist/common/id.js.map +0 -1
  66. package/dist/common/ingredient.d.ts +0 -49
  67. package/dist/common/ingredient.js +0 -108
  68. package/dist/common/ingredient.js.map +0 -1
  69. package/dist/common/predicates.d.ts +0 -7
  70. package/dist/common/predicates.js +0 -32
  71. package/dist/common/predicates.js.map +0 -1
  72. package/dist/common/registry.d.ts +0 -12
  73. package/dist/common/registry.js +0 -36
  74. package/dist/common/registry.js.map +0 -1
  75. package/dist/common/result.d.ts +0 -48
  76. package/dist/common/result.js +0 -37
  77. package/dist/common/result.js.map +0 -1
  78. package/dist/emit/assets/blockstates.d.ts +0 -18
  79. package/dist/emit/assets/blockstates.js +0 -46
  80. package/dist/emit/assets/blockstates.js.map +0 -1
  81. package/dist/emit/assets/lang.d.ts +0 -33
  82. package/dist/emit/assets/lang.js +0 -103
  83. package/dist/emit/assets/lang.js.map +0 -1
  84. package/dist/emit/assets/models.d.ts +0 -24
  85. package/dist/emit/assets/models.js +0 -59
  86. package/dist/emit/assets/models.js.map +0 -1
  87. package/dist/emit/content/blockDefinition.d.ts +0 -58
  88. package/dist/emit/content/blockDefinition.js +0 -58
  89. package/dist/emit/content/blockDefinition.js.map +0 -1
  90. package/dist/emit/content/innerBlockDefinition.d.ts +0 -12
  91. package/dist/emit/content/innerBlockDefinition.js +0 -32
  92. package/dist/emit/content/innerBlockDefinition.js.map +0 -1
  93. package/dist/emit/content/itemDefinition.d.ts +0 -58
  94. package/dist/emit/content/itemDefinition.js +0 -54
  95. package/dist/emit/content/itemDefinition.js.map +0 -1
  96. package/dist/emit/custom.d.ts +0 -15
  97. package/dist/emit/custom.js +0 -42
  98. package/dist/emit/custom.js.map +0 -1
  99. package/dist/emit/data/loot.d.ts +0 -48
  100. package/dist/emit/data/loot.js +0 -108
  101. package/dist/emit/data/loot.js.map +0 -1
  102. package/dist/emit/data/recipe.d.ts +0 -46
  103. package/dist/emit/data/recipe.js +0 -106
  104. package/dist/emit/data/recipe.js.map +0 -1
  105. package/dist/emit/data/tags.d.ts +0 -38
  106. package/dist/emit/data/tags.js +0 -115
  107. package/dist/emit/data/tags.js.map +0 -1
  108. package/dist/emit/index.d.ts +0 -11
  109. package/dist/emit/index.js +0 -1
  110. package/dist/emit/index.js.map +0 -1
  111. package/dist/emit/rule/index.d.ts +0 -10
  112. package/dist/emit/rule/index.js +0 -10
  113. package/dist/emit/rule/index.js.map +0 -1
  114. package/dist/emit/rule/lootTable.d.ts +0 -14
  115. package/dist/emit/rule/lootTable.js +0 -47
  116. package/dist/emit/rule/lootTable.js.map +0 -1
  117. package/dist/emit/rule/recipe.d.ts +0 -16
  118. package/dist/emit/rule/recipe.js +0 -29
  119. package/dist/emit/rule/recipe.js.map +0 -1
  120. package/dist/emit/ruled.d.ts +0 -18
  121. package/dist/emit/ruled.js +0 -47
  122. package/dist/emit/ruled.js.map +0 -1
  123. package/dist/error.d.ts +0 -12
  124. package/dist/error.js +0 -45
  125. package/dist/error.js.map +0 -1
  126. package/dist/loader/index.d.ts +0 -16
  127. package/dist/loader/index.js +0 -40
  128. package/dist/loader/index.js.map +0 -1
  129. package/dist/loader/lang.d.ts +0 -7
  130. package/dist/loader/lang.js +0 -12
  131. package/dist/loader/lang.js.map +0 -1
  132. package/dist/loader/loot.d.ts +0 -7
  133. package/dist/loader/loot.js +0 -12
  134. package/dist/loader/loot.js.map +0 -1
  135. package/dist/loader/pack.d.ts +0 -62
  136. package/dist/loader/pack.js +0 -131
  137. package/dist/loader/pack.js.map +0 -1
  138. package/dist/loader/recipe.d.ts +0 -25
  139. package/dist/loader/recipe.js +0 -207
  140. package/dist/loader/recipe.js.map +0 -1
  141. package/dist/loader/registry/dump.d.ts +0 -19
  142. package/dist/loader/registry/dump.js +0 -74
  143. package/dist/loader/registry/dump.js.map +0 -1
  144. package/dist/loader/registry/empty.d.ts +0 -11
  145. package/dist/loader/registry/empty.js +0 -22
  146. package/dist/loader/registry/empty.js.map +0 -1
  147. package/dist/loader/registry/index.d.ts +0 -11
  148. package/dist/loader/registry/index.js +0 -1
  149. package/dist/loader/registry/index.js.map +0 -1
  150. package/dist/loader/tags.d.ts +0 -26
  151. package/dist/loader/tags.js +0 -131
  152. package/dist/loader/tags.js.map +0 -1
  153. package/dist/parser/adAstra.d.ts +0 -11
  154. package/dist/parser/adAstra.js +0 -6
  155. package/dist/parser/adAstra.js.map +0 -1
  156. package/dist/parser/botania.d.ts +0 -20
  157. package/dist/parser/botania.js +0 -11
  158. package/dist/parser/botania.js.map +0 -1
  159. package/dist/parser/create.d.ts +0 -4
  160. package/dist/parser/create.js +0 -3
  161. package/dist/parser/create.js.map +0 -1
  162. package/dist/parser/farmersdelight.d.ts +0 -4
  163. package/dist/parser/farmersdelight.js +0 -3
  164. package/dist/parser/farmersdelight.js.map +0 -1
  165. package/dist/parser/index.d.ts +0 -13
  166. package/dist/parser/index.js +0 -8
  167. package/dist/parser/index.js.map +0 -1
  168. package/dist/parser/lootTable.d.ts +0 -7
  169. package/dist/parser/lootTable.js +0 -70
  170. package/dist/parser/lootTable.js.map +0 -1
  171. package/dist/parser/recipe/adAstra/conversion.d.ts +0 -20
  172. package/dist/parser/recipe/adAstra/conversion.js +0 -33
  173. package/dist/parser/recipe/adAstra/conversion.js.map +0 -1
  174. package/dist/parser/recipe/adAstra/hammering.d.ts +0 -18
  175. package/dist/parser/recipe/adAstra/hammering.js +0 -27
  176. package/dist/parser/recipe/adAstra/hammering.js.map +0 -1
  177. package/dist/parser/recipe/adAstra/index.d.ts +0 -5
  178. package/dist/parser/recipe/adAstra/index.js +0 -1
  179. package/dist/parser/recipe/adAstra/index.js.map +0 -1
  180. package/dist/parser/recipe/adAstra/inputOutput.d.ts +0 -24
  181. package/dist/parser/recipe/adAstra/inputOutput.js +0 -42
  182. package/dist/parser/recipe/adAstra/inputOutput.js.map +0 -1
  183. package/dist/parser/recipe/adAstra/nasaWorkbench.d.ts +0 -20
  184. package/dist/parser/recipe/adAstra/nasaWorkbench.js +0 -30
  185. package/dist/parser/recipe/adAstra/nasaWorkbench.js.map +0 -1
  186. package/dist/parser/recipe/adAstra/spaceStation.d.ts +0 -19
  187. package/dist/parser/recipe/adAstra/spaceStation.js +0 -27
  188. package/dist/parser/recipe/adAstra/spaceStation.js.map +0 -1
  189. package/dist/parser/recipe/botania/apothecary.d.ts +0 -19
  190. package/dist/parser/recipe/botania/apothecary.js +0 -28
  191. package/dist/parser/recipe/botania/apothecary.js.map +0 -1
  192. package/dist/parser/recipe/botania/brew.d.ts +0 -18
  193. package/dist/parser/recipe/botania/brew.js +0 -24
  194. package/dist/parser/recipe/botania/brew.js.map +0 -1
  195. package/dist/parser/recipe/botania/elvenTrade.d.ts +0 -19
  196. package/dist/parser/recipe/botania/elvenTrade.js +0 -27
  197. package/dist/parser/recipe/botania/elvenTrade.js.map +0 -1
  198. package/dist/parser/recipe/botania/gogWrapper.d.ts +0 -22
  199. package/dist/parser/recipe/botania/gogWrapper.js +0 -34
  200. package/dist/parser/recipe/botania/gogWrapper.js.map +0 -1
  201. package/dist/parser/recipe/botania/manaInfusion.d.ts +0 -21
  202. package/dist/parser/recipe/botania/manaInfusion.js +0 -33
  203. package/dist/parser/recipe/botania/manaInfusion.js.map +0 -1
  204. package/dist/parser/recipe/botania/nbtWrapper.d.ts +0 -20
  205. package/dist/parser/recipe/botania/nbtWrapper.js +0 -30
  206. package/dist/parser/recipe/botania/nbtWrapper.js.map +0 -1
  207. package/dist/parser/recipe/botania/orechid.d.ts +0 -35
  208. package/dist/parser/recipe/botania/orechid.js +0 -74
  209. package/dist/parser/recipe/botania/orechid.js.map +0 -1
  210. package/dist/parser/recipe/botania/pureDaisy.d.ts +0 -19
  211. package/dist/parser/recipe/botania/pureDaisy.js +0 -30
  212. package/dist/parser/recipe/botania/pureDaisy.js.map +0 -1
  213. package/dist/parser/recipe/botania/runicAltar.d.ts +0 -19
  214. package/dist/parser/recipe/botania/runicAltar.js +0 -27
  215. package/dist/parser/recipe/botania/runicAltar.js.map +0 -1
  216. package/dist/parser/recipe/botania/terraPlate.d.ts +0 -19
  217. package/dist/parser/recipe/botania/terraPlate.js +0 -27
  218. package/dist/parser/recipe/botania/terraPlate.js.map +0 -1
  219. package/dist/parser/recipe/create/assembly.d.ts +0 -25
  220. package/dist/parser/recipe/create/assembly.js +0 -45
  221. package/dist/parser/recipe/create/assembly.js.map +0 -1
  222. package/dist/parser/recipe/create/processing.d.ts +0 -21
  223. package/dist/parser/recipe/create/processing.js +0 -27
  224. package/dist/parser/recipe/create/processing.js.map +0 -1
  225. package/dist/parser/recipe/farmersdelight/cooking.d.ts +0 -22
  226. package/dist/parser/recipe/farmersdelight/cooking.js +0 -29
  227. package/dist/parser/recipe/farmersdelight/cooking.js.map +0 -1
  228. package/dist/parser/recipe/farmersdelight/cutting.d.ts +0 -23
  229. package/dist/parser/recipe/farmersdelight/cutting.js +0 -38
  230. package/dist/parser/recipe/farmersdelight/cutting.js.map +0 -1
  231. package/dist/parser/recipe/forge/conditional.d.ts +0 -25
  232. package/dist/parser/recipe/forge/conditional.js +0 -45
  233. package/dist/parser/recipe/forge/conditional.js.map +0 -1
  234. package/dist/parser/recipe/ignored.d.ts +0 -10
  235. package/dist/parser/recipe/ignored.js +0 -16
  236. package/dist/parser/recipe/ignored.js.map +0 -1
  237. package/dist/parser/recipe/index.d.ts +0 -19
  238. package/dist/parser/recipe/index.js +0 -22
  239. package/dist/parser/recipe/index.js.map +0 -1
  240. package/dist/parser/recipe/quark/exclusion.d.ts +0 -20
  241. package/dist/parser/recipe/quark/exclusion.js +0 -32
  242. package/dist/parser/recipe/quark/exclusion.js.map +0 -1
  243. package/dist/parser/recipe/roots/component.d.ts +0 -18
  244. package/dist/parser/recipe/roots/component.js +0 -24
  245. package/dist/parser/recipe/roots/component.js.map +0 -1
  246. package/dist/parser/recipe/roots/ritual.d.ts +0 -22
  247. package/dist/parser/recipe/roots/ritual.js +0 -32
  248. package/dist/parser/recipe/roots/ritual.js.map +0 -1
  249. package/dist/parser/recipe/sullys/polishing.d.ts +0 -19
  250. package/dist/parser/recipe/sullys/polishing.js +0 -27
  251. package/dist/parser/recipe/sullys/polishing.js.map +0 -1
  252. package/dist/parser/recipe/thermal/catalyst.d.ts +0 -22
  253. package/dist/parser/recipe/thermal/catalyst.js +0 -24
  254. package/dist/parser/recipe/thermal/catalyst.js.map +0 -1
  255. package/dist/parser/recipe/thermal/fuel.d.ts +0 -18
  256. package/dist/parser/recipe/thermal/fuel.js +0 -24
  257. package/dist/parser/recipe/thermal/fuel.js.map +0 -1
  258. package/dist/parser/recipe/thermal/index.d.ts +0 -22
  259. package/dist/parser/recipe/thermal/index.js +0 -36
  260. package/dist/parser/recipe/thermal/index.js.map +0 -1
  261. package/dist/parser/recipe/thermal/ingredient.d.ts +0 -21
  262. package/dist/parser/recipe/thermal/ingredient.js +0 -43
  263. package/dist/parser/recipe/thermal/ingredient.js.map +0 -1
  264. package/dist/parser/recipe/thermal/treeExtraction.d.ts +0 -24
  265. package/dist/parser/recipe/thermal/treeExtraction.js +0 -47
  266. package/dist/parser/recipe/thermal/treeExtraction.js.map +0 -1
  267. package/dist/parser/recipe/vanilla/shaped.d.ts +0 -19
  268. package/dist/parser/recipe/vanilla/shaped.js +0 -28
  269. package/dist/parser/recipe/vanilla/shaped.js.map +0 -1
  270. package/dist/parser/recipe/vanilla/shapeless.d.ts +0 -18
  271. package/dist/parser/recipe/vanilla/shapeless.js +0 -27
  272. package/dist/parser/recipe/vanilla/shapeless.js.map +0 -1
  273. package/dist/parser/recipe/vanilla/smelting.d.ts +0 -19
  274. package/dist/parser/recipe/vanilla/smelting.js +0 -27
  275. package/dist/parser/recipe/vanilla/smelting.js.map +0 -1
  276. package/dist/parser/recipe/vanilla/smithing.d.ts +0 -19
  277. package/dist/parser/recipe/vanilla/smithing.js +0 -28
  278. package/dist/parser/recipe/vanilla/smithing.js.map +0 -1
  279. package/dist/parser/recipe/vanilla/stonecutting.d.ts +0 -20
  280. package/dist/parser/recipe/vanilla/stonecutting.js +0 -36
  281. package/dist/parser/recipe/vanilla/stonecutting.js.map +0 -1
  282. package/dist/parser/roots.d.ts +0 -4
  283. package/dist/parser/roots.js +0 -3
  284. package/dist/parser/roots.js.map +0 -1
  285. package/dist/parser/thermal.d.ts +0 -10
  286. package/dist/parser/thermal.js +0 -6
  287. package/dist/parser/thermal.js.map +0 -1
  288. package/dist/schema/assets/blockstate.d.ts +0 -10
  289. package/dist/schema/assets/blockstate.js +0 -1
  290. package/dist/schema/assets/blockstate.js.map +0 -1
  291. package/dist/schema/assets/lang.d.ts +0 -3
  292. package/dist/schema/assets/lang.js +0 -3
  293. package/dist/schema/assets/lang.js.map +0 -1
  294. package/dist/schema/assets/model.d.ts +0 -27
  295. package/dist/schema/assets/model.js +0 -1
  296. package/dist/schema/assets/model.js.map +0 -1
  297. package/dist/schema/content/blockDefinition.d.ts +0 -11
  298. package/dist/schema/content/blockDefinition.js +0 -1
  299. package/dist/schema/content/blockDefinition.js.map +0 -1
  300. package/dist/schema/content/itemDefinition.d.ts +0 -14
  301. package/dist/schema/content/itemDefinition.js +0 -1
  302. package/dist/schema/content/itemDefinition.js.map +0 -1
  303. package/dist/schema/data/loot.d.ts +0 -1151
  304. package/dist/schema/data/loot.js +0 -76
  305. package/dist/schema/data/loot.js.map +0 -1
  306. package/dist/schema/data/recipe.d.ts +0 -13
  307. package/dist/schema/data/recipe.js +0 -1
  308. package/dist/schema/data/recipe.js.map +0 -1
  309. package/dist/schema/data/tag.d.ts +0 -11
  310. package/dist/schema/data/tag.js +0 -6
  311. package/dist/schema/data/tag.js.map +0 -1
  312. package/dist/stubTypes.d.ts +0 -7
  313. package/dist/stubTypes.js +0 -1
  314. package/dist/stubTypes.js.map +0 -1
  315. package/dist/textHelper.d.ts +0 -3
  316. package/dist/textHelper.js +0 -20
  317. package/dist/textHelper.js.map +0 -1
  318. /package/dist/{cli/index.d.ts → cli.d.ts} +0 -0
@@ -0,0 +1,3 @@
1
+ import { type CoreModuleOptions } from "@adeficior/data-modifier-core";
2
+ import { type DataModifierFactory } from "./instance";
3
+ export declare function installBuiltinModules(coreOptions: CoreModuleOptions): DataModifierFactory;
@@ -0,0 +1,16 @@
1
+ import { module as core, } from "@adeficior/data-modifier-core";
2
+ import ingredients from "@adeficior/data-modifier-ingredients";
3
+ import loot from "@adeficior/data-modifier-loot";
4
+ import recipes from "@adeficior/data-modifier-recipes";
5
+ import tags from "@adeficior/data-modifier-tags";
6
+ import {} from "./instance";
7
+ export function installBuiltinModules(coreOptions) {
8
+ return (builder) => {
9
+ builder.install(tags);
10
+ builder.install(ingredients);
11
+ builder.install(recipes);
12
+ builder.install(loot);
13
+ builder.install(core, coreOptions);
14
+ };
15
+ }
16
+ //# sourceMappingURL=builtinModules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtinModules.js","sourceRoot":"","sources":["../src/builtinModules.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,IAAI,IAAI,GAEf,MAAM,+BAA+B,CAAC;AACvC,OAAO,WAAW,MAAM,sCAAsC,CAAC;AAC/D,OAAO,IAAI,MAAM,+BAA+B,CAAC;AACjD,OAAO,OAAO,MAAM,kCAAkC,CAAC;AACvD,OAAO,IAAI,MAAM,+BAA+B,CAAC;AACjD,OAAO,EAA4B,MAAM,YAAY,CAAC;AAEtD,MAAM,UAAU,qBAAqB,CACnC,WAA8B;IAE9B,OAAO,CAAC,OAAO,EAAE,EAAE;QACjB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACtB,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC7B,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACzB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACtB,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACrC,CAAC,CAAC;AACJ,CAAC"}
package/dist/cli.js ADDED
@@ -0,0 +1,5 @@
1
+ // TODO implement
2
+ import { createLogger } from "@adeficior/pack-resolver";
3
+ const logger = createLogger();
4
+ logger.warn("not implemented yet");
5
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,iBAAiB;AAEjB,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;AAE9B,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC"}
@@ -1,30 +1,27 @@
1
- import type { InferIds, RegistryId } from "@adeficior/data-modifier/generated";
2
- import type { Acceptor, Logger } from "@adeficior/pack-resolver";
3
- import type { IngredientTest } from "../common/ingredient.js";
4
- import type RegistryLookup from "../loader/registry/index.js";
5
- import type { TagRegistryHolder } from "../loader/tags.js";
6
- import type { ClearableEmitter } from "./index.js";
1
+ import { type ClearableEmitter, type LoaderContext, type RegistryLookup } from "@adeficior/data-modifier-core";
2
+ import { type IngredientFilter, type IngredientSerializer, type Predicates } from "@adeficior/data-modifier-ingredients";
3
+ import { type InferIds, type RegistryId } from "@adeficior/data-modifier/generated";
7
4
  export type HideMode = "jei" | "polytone";
8
- export interface BlacklistOptions {
5
+ export type BlacklistOptions = {
9
6
  hideFrom?: HideMode | HideMode[];
10
- }
7
+ };
11
8
  export interface BlacklistRules {
12
- hide(...inputs: IngredientTest[]): void;
9
+ hide(...inputs: IngredientFilter[]): void;
13
10
  hideEntry<T extends RegistryId>(type: T, ...entries: RegistryIdInput<T>[]): void;
14
11
  }
15
12
  type RegistryIdInput<T extends RegistryId> = InferIds<T> | RegExp;
16
- export default class BlacklistEmitter implements BlacklistRules, ClearableEmitter {
17
- private readonly logger;
18
- private readonly tags;
19
- private readonly lookup;
13
+ export declare class BlacklistEmitter implements BlacklistRules, ClearableEmitter {
14
+ private readonly registries;
15
+ private readonly predicates;
16
+ private readonly ingredientSerializer;
20
17
  private hidden;
21
18
  private readonly hideModes;
22
- constructor(logger: Logger, tags: TagRegistryHolder, lookup: () => RegistryLookup, options: BlacklistOptions);
23
- hide(...inputs: IngredientTest[]): void;
19
+ constructor(registries: RegistryLookup, predicates: Predicates, ingredientSerializer: IngredientSerializer, options: BlacklistOptions);
20
+ hide(...inputs: IngredientFilter[]): void;
24
21
  hideEntry<T extends RegistryId>(type: T, ...entries: RegistryIdInput<T>[]): void;
25
- private filterIds;
22
+ private filterItemIds;
26
23
  private resolveIds;
27
- emit(acceptor: Acceptor): Promise<void>;
24
+ resolver(context: LoaderContext): import("@adeficior/pack-resolver").Resolver<import("@adeficior/pack-resolver").Acceptable, import("@adeficior/pack-resolver").BaseContext>;
28
25
  private emitJei;
29
26
  private emitPolytone;
30
27
  clear(): void;
@@ -1,34 +1,32 @@
1
- import { arrayOrSelf } from "@adeficior/pack-resolver";
1
+ import { encodeId, toJson, } from "@adeficior/data-modifier-core";
2
+ import { ItemIngredient, } from "@adeficior/data-modifier-ingredients";
3
+ import {} from "@adeficior/data-modifier/generated";
4
+ import { arrayOrSelf, simpleResolver, } from "@adeficior/pack-resolver";
2
5
  import { uniq } from "lodash-es";
3
- import { encodeId } from "../common/id.js";
4
- import { createIngredient, resolveIngredientTest, } from "../common/ingredient.js";
5
- import { IllegalShapeError } from "../error.js";
6
- import { toJson } from "../textHelper.js";
7
- export default class BlacklistEmitter {
8
- logger;
9
- tags;
10
- lookup;
6
+ export class BlacklistEmitter {
7
+ registries;
8
+ predicates;
9
+ ingredientSerializer;
11
10
  hidden = [];
12
11
  hideModes;
13
- constructor(logger, tags, lookup, options) {
14
- this.logger = logger;
15
- this.tags = tags;
16
- this.lookup = lookup;
12
+ constructor(registries, predicates, ingredientSerializer, options) {
13
+ this.registries = registries;
14
+ this.predicates = predicates;
15
+ this.ingredientSerializer = ingredientSerializer;
17
16
  this.hideModes = arrayOrSelf(options.hideFrom);
18
17
  }
19
18
  hide(...inputs) {
20
19
  this.hidden.push(...inputs.flatMap((test) => this.resolveIds(test)).map(encodeId));
21
20
  }
22
21
  hideEntry(type, ...entries) {
23
- const lookup = this.lookup();
24
22
  const ids = entries
25
23
  .flatMap((entry) => {
26
24
  if (typeof entry === "string") {
27
- lookup.validateEntry(type, entry);
25
+ this.registries.validateEntry(type, entry);
28
26
  return [entry];
29
27
  }
30
28
  else {
31
- const keys = lookup.keys(type);
29
+ const keys = this.registries.keys(type);
32
30
  if (!keys)
33
31
  throw new Error(`cannot hide using regex/predicates, registry ${encodeId(type)} not loaded`);
34
32
  return [...keys].filter((it) => entry.test(it));
@@ -37,51 +35,44 @@ export default class BlacklistEmitter {
37
35
  .map(encodeId);
38
36
  this.hidden.push(...ids);
39
37
  }
40
- filterIds(test) {
41
- const keys = this.lookup().keys("minecraft:item");
38
+ filterItemIds(test) {
39
+ const keys = this.registries.keys("minecraft:item");
42
40
  if (!keys)
43
41
  throw new Error("you can only use regex/predicates to blacklist items if a registry dump is loaded");
44
- const predicate = resolveIngredientTest(test, this.tags, this.lookup());
45
- return [...keys.keys()].filter((it) => predicate(it, this.logger));
42
+ const predicate = this.predicates.ingredient(test);
43
+ return [...keys.keys()].filter((it) => predicate(new ItemIngredient(it)));
46
44
  }
47
45
  resolveIds(input) {
48
46
  if (input instanceof RegExp || typeof input === "function") {
49
- return this.filterIds(input);
47
+ return this.filterItemIds(input);
50
48
  }
51
- const ingredient = createIngredient(input, this.lookup());
52
- if (Array.isArray(ingredient)) {
53
- return ingredient.flatMap((it) => this.resolveIds(it));
54
- }
55
- if ("item" in ingredient)
56
- return [ingredient.item];
57
- if ("fluid" in ingredient)
58
- return [ingredient.fluid];
59
- if ("block" in ingredient)
60
- return [ingredient.block];
61
- throw new IllegalShapeError("illegal blacklist entry", input);
49
+ const ingredient = this.ingredientSerializer.deserialize(input);
50
+ return Object.values(ingredient.ids()).flat();
62
51
  }
63
- async emit(acceptor) {
64
- const hiddenIds = uniq(this.hidden).sort();
65
- if (hiddenIds.length === 0)
66
- return;
67
- const promises = [];
68
- if (this.hideModes.includes("jei"))
69
- promises.push(this.emitJei(acceptor, hiddenIds));
70
- if (this.hideModes.includes("polytone"))
71
- promises.push(this.emitPolytone(acceptor, hiddenIds));
72
- await Promise.all(promises);
52
+ resolver(context) {
53
+ return simpleResolver(async (acceptor) => {
54
+ const hiddenIds = uniq(this.hidden).sort();
55
+ if (hiddenIds.length === 0)
56
+ return;
57
+ const promises = [];
58
+ if (this.hideModes.includes("jei"))
59
+ promises.push(this.emitJei(acceptor, hiddenIds, context));
60
+ if (this.hideModes.includes("polytone"))
61
+ promises.push(this.emitPolytone(acceptor, hiddenIds, context));
62
+ await Promise.all(promises);
63
+ }, context);
73
64
  }
74
- async emitJei(acceptor, hiddenIds) {
65
+ async emitJei(acceptor, hiddenIds, context) {
75
66
  const content = hiddenIds.join("\n");
76
67
  const path = "jei/blacklist.cfg";
77
- acceptor(path, content);
68
+ await acceptor(path, Promise.resolve(content), context);
78
69
  }
79
- async emitPolytone(acceptor, hiddenIds) {
80
- const tabs = this.lookup().keys("minecraft:creative_mode_tab");
70
+ async emitPolytone(acceptor, hiddenIds, context) {
71
+ const tabs = this.registries.keys("minecraft:creative_mode_tab");
81
72
  if (!tabs)
82
73
  throw new Error("Cannot use polytone output without creative mod tab registry");
83
- const content = await toJson({
84
- targets: [...tabs.values()],
74
+ const content = toJson({
75
+ targets: [...tabs.values()].toSorted(),
85
76
  removals: [
86
77
  {
87
78
  type: "items_match",
@@ -90,7 +81,7 @@ export default class BlacklistEmitter {
90
81
  ],
91
82
  });
92
83
  const path = "assets/generated/polytone/creative_tab_modifiers/hidden.json";
93
- acceptor(path, content);
84
+ await acceptor(path, content, context);
94
85
  }
95
86
  clear() {
96
87
  this.hidden = [];
@@ -1 +1 @@
1
- {"version":3,"file":"blacklist.js","sourceRoot":"","sources":["../../src/emit/blacklist.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blacklist.js","sourceRoot":"","sources":["../../src/emit/blacklist.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { type SemVerInput } from "@adeficior/data-modifier-core";
2
+ import { type Logger, type Resolver } from "@adeficior/pack-resolver";
3
+ export type PackMetadata = {
4
+ pack: {
5
+ pack_format: number;
6
+ description: string;
7
+ };
8
+ };
9
+ type PackMetadataInput = {
10
+ packFormat: SemVerInput;
11
+ logger: Logger;
12
+ description?: string;
13
+ };
14
+ export declare function generatePackMetadata({ logger, packFormat, description, }: PackMetadataInput): Resolver;
15
+ export declare function overwritePackMetadata(resolver: Resolver, options: PackMetadataInput): Resolver<import("@adeficior/pack-resolver").Acceptable, import("@adeficior/pack-resolver").BaseContext>;
16
+ export {};
@@ -0,0 +1,20 @@
1
+ import { parseSemVer, toJson, } from "@adeficior/data-modifier-core";
2
+ import { combineResolvers, simpleResolver, } from "@adeficior/pack-resolver";
3
+ export function generatePackMetadata({ logger, packFormat, description = "generated resources", }) {
4
+ const { major } = parseSemVer(packFormat);
5
+ const metadata = {
6
+ pack: {
7
+ pack_format: major,
8
+ description: description,
9
+ },
10
+ };
11
+ return simpleResolver(async (acceptor) => {
12
+ await acceptor("pack.mcmeta", toJson(metadata));
13
+ }, { logger });
14
+ }
15
+ export function overwritePackMetadata(resolver, options) {
16
+ return combineResolvers([resolver, generatePackMetadata(options)], {
17
+ async: false,
18
+ });
19
+ }
20
+ //# sourceMappingURL=packMetadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packMetadata.js","sourceRoot":"","sources":["../../src/emit/packMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,MAAM,GAEP,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,gBAAgB,EAChB,cAAc,GAGf,MAAM,0BAA0B,CAAC;AAelC,MAAM,UAAU,oBAAoB,CAAC,EACnC,MAAM,EACN,UAAU,EACV,WAAW,GAAG,qBAAqB,GACjB;IAClB,MAAM,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;IAE1C,MAAM,QAAQ,GAAiB;QAC7B,IAAI,EAAE;YACJ,WAAW,EAAE,KAAK;YAClB,WAAW,EAAE,WAAW;SACzB;KACF,CAAC;IAEF,OAAO,cAAc,CACnB,KAAK,EAAE,QAAQ,EAAE,EAAE;QACjB,MAAM,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClD,CAAC,EACD,EAAE,MAAM,EAAE,CACX,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,QAAkB,EAClB,OAA0B;IAE1B,OAAO,gBAAgB,CAAC,CAAC,QAAQ,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC,EAAE;QACjE,KAAK,EAAE,KAAK;KACb,CAAC,CAAC;AACL,CAAC"}
@@ -1,8 +1,5 @@
1
- import type { CreativeModeTabId, ItemId } from "@adeficior/data-modifier/generated";
2
- import type { Acceptor } from "@adeficior/pack-resolver";
3
- import type { IdInput, NormalizedId } from "../common/id.js";
4
- import type RegistryLookup from "../loader/registry/index.js";
5
- import type { ClearableEmitter } from "./index.js";
1
+ import { type ClearableEmitter, type IdInput, type LoaderContext, type NormalizedId, type RegistryLookup } from "@adeficior/data-modifier-core";
2
+ import { type CreativeModeTabId, type ItemId } from "@adeficior/data-modifier/generated";
6
3
  interface TabModifications {
7
4
  icon?: IdInput<ItemId>;
8
5
  can_scroll?: boolean;
@@ -49,13 +46,13 @@ export interface PolytoneTabModifier extends TabModifications {
49
46
  additions?: AdditionEntry[];
50
47
  require_mods?: string[];
51
48
  }
52
- export default class PolytoneTabsEmitter implements PolytoneTabs, ClearableEmitter {
49
+ export declare class PolytoneTabsEmitter implements PolytoneTabs, ClearableEmitter {
53
50
  private readonly lookup;
54
51
  private readonly entries;
55
52
  private readonly tabs;
56
- constructor(lookup: () => RegistryLookup);
53
+ constructor(lookup: RegistryLookup);
57
54
  clear(): void;
58
- emit(acceptor: Acceptor): Promise<void>;
55
+ resolver(context: LoaderContext): import("@adeficior/pack-resolver").Resolver<import("@adeficior/pack-resolver").Acceptable, import("@adeficior/pack-resolver").BaseContext>;
59
56
  remove(tab: IdInput<CreativeModeTabId> | IdInput<CreativeModeTabId>[], items: IdInput<ItemId>[], options?: TabOptions): void;
60
57
  add(tab: IdInput<CreativeModeTabId> | IdInput<CreativeModeTabId>[], items: IdInput<ItemId>[], options?: AddOptions): void;
61
58
  create(id: IdInput, modifications?: TabModifications): string;
@@ -1,7 +1,8 @@
1
- import { arrayOrSelf } from "@adeficior/pack-resolver";
1
+ import {} from "@adeficior/data-modifier-core";
2
+ import { createId, CustomEmitter, encodeId, } from "@adeficior/data-modifier-core";
3
+ import {} from "@adeficior/data-modifier/generated";
4
+ import { arrayOrSelf, combineResolvers } from "@adeficior/pack-resolver";
2
5
  import { difference, uniq } from "lodash-es";
3
- import { createId, encodeId } from "../common/id.js";
4
- import CustomEmitter from "./custom.js";
5
6
  function translateModifications({ icon, after_tabs, before_tabs, ...modifications }) {
6
7
  return {
7
8
  ...modifications,
@@ -45,7 +46,7 @@ function translateOptions(options = {}) {
45
46
  return {};
46
47
  }
47
48
  }
48
- export default class PolytoneTabsEmitter {
49
+ export class PolytoneTabsEmitter {
49
50
  lookup;
50
51
  entries = new CustomEmitter((id) => `assets/${id.namespace}/polytone/creative_tab_modifiers/${id.path}.json`);
51
52
  tabs = new CustomEmitter((id) => `assets/${id.namespace}/polytone/creative_tabs.csv`, (it) => it.join(","));
@@ -56,8 +57,10 @@ export default class PolytoneTabsEmitter {
56
57
  this.entries.clear();
57
58
  this.tabs.clear();
58
59
  }
59
- async emit(acceptor) {
60
- await Promise.all([this.entries.emit(acceptor), this.tabs.emit(acceptor)]);
60
+ resolver(context) {
61
+ return combineResolvers([this.entries.resolver(context), this.tabs.resolver(context)], {
62
+ async: true,
63
+ });
61
64
  }
62
65
  remove(tab, items, options = {}) {
63
66
  this.forEach(tab, {
@@ -72,13 +75,12 @@ export default class PolytoneTabsEmitter {
72
75
  }, options);
73
76
  }
74
77
  create(id, modifications = {}) {
75
- const lookup = this.lookup();
76
78
  const { namespace, path } = createId(id);
77
79
  this.tabs.merge({ namespace, path: "tab" }, [path], (a, b) => uniq([...a, ...b]));
78
80
  if (Object.keys(modifications).length) {
79
81
  this.modify(id, modifications);
80
82
  }
81
- return lookup.addCustom("minecraft:creative_mode_tab", id);
83
+ return this.lookup.addCustom("minecraft:creative_mode_tab", id);
82
84
  }
83
85
  modify(id, modifications) {
84
86
  this.entries.merge(id, {
@@ -1 +1 @@
1
- {"version":3,"file":"polytoneTabs.js","sourceRoot":"","sources":["../../src/emit/polytoneTabs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"polytoneTabs.js","sourceRoot":"","sources":["../../src/emit/polytoneTabs.ts"],"names":[],"mappings":"AAAA,OAAO,EAMN,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,QAAQ,EACR,aAAa,EACb,QAAQ,GACT,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAGN,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAkE7C,SAAS,sBAAsB,CAAC,EAC9B,IAAI,EACJ,UAAU,EACV,WAAW,EACX,GAAG,aAAa,EACC;IACjB,OAAO;QACL,GAAG,aAAa;QAChB,WAAW,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;QACnD,UAAU,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;QACjD,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;KACtD,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CACrB,CAAsB,EACtB,CAAsB;IAEtB,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,IAAI,CAAC,MAAM;QACb,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,OAAO;QACL,GAAG,CAAC;QACJ,GAAG,CAAC;QACJ,OAAO,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;QAC3C,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QAC3D,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;KACzD,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,UAAsB,EAAE;IAChD,IAAI,QAAQ,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1C,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE;gBACT,KAAK,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACjC,IAAI,EAAE,aAAa;aACpB;SACF,CAAC;IACJ,CAAC;SAAM,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAC/C,OAAO;YACL,MAAM,EAAE,KAAK;YACb,SAAS,EAAE;gBACT,KAAK,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAChC,IAAI,EAAE,aAAa;aACpB;SACF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,OAAO,mBAAmB;IAWD;IAVZ,OAAO,GAAG,IAAI,aAAa,CAC1C,CAAC,EAAE,EAAE,EAAE,CACL,UAAU,EAAE,CAAC,SAAS,oCAAoC,EAAE,CAAC,IAAI,OAAO,CAC3E,CAAC;IAEe,IAAI,GAAG,IAAI,aAAa,CACvC,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,SAAS,6BAA6B,EAC3D,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CACrB,CAAC;IAEF,YAA6B,MAAsB;QAAtB,WAAM,GAAN,MAAM,CAAgB;IAAG,CAAC;IAEvD,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IAED,QAAQ,CAAC,OAAsB;QAC7B,OAAO,gBAAgB,CACrB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAC7D;YACE,KAAK,EAAE,IAAI;SACZ,CACF,CAAC;IACJ,CAAC;IAED,MAAM,CACJ,GAA8D,EAC9D,KAAwB,EACxB,UAAsB,EAAE;QAExB,IAAI,CAAC,OAAO,CACV,GAAG,EACH;YACE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;SAChE,EACD,OAAO,CACR,CAAC;IACJ,CAAC;IAED,GAAG,CACD,GAA8D,EAC9D,KAAwB,EACxB,UAAsB,EAAE;QAExB,IAAI,CAAC,OAAO,CACV,GAAG,EACH;YACE,SAAS,EAAE;gBACT,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,EAAE;aAC7D;SACF,EACD,OAAO,CACR,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,EAAW,EAAE,gBAAkC,EAAE;QACtD,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC3D,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CACnB,CAAC;QACF,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE,CAAC;YACtC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,6BAA6B,EAAE,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,CAAC,EAAW,EAAE,aAA+B;QACjD,IAAI,CAAC,OAAO,CAAC,KAAK,CAChB,EAAE,EACF;YACE,GAAG,sBAAsB,CAAC,aAAa,CAAC;YACxC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;SACxB,EACD,cAAc,CACf,CAAC;IACJ,CAAC;IAEO,OAAO,CACb,GAA8D,EAC9D,QAA8C,EAC9C,OAAmB;QAEnB,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAClC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC;YACpC,MAAM,KAAK,GAAwB;gBACjC,OAAO,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC3B,YAAY,EAAE,OAAO,CAAC,IAAI;gBAC1B,GAAG,QAAQ;aACZ,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,26 @@
1
+ import { type ClearableEmitter, type IdInput, type LoaderContext, type NormalizedId } from "@adeficior/data-modifier-core";
2
+ import { type CommonFilter } from "@adeficior/data-modifier-core/serializer";
3
+ import { type RecipeLoaderAccessor } from "@adeficior/data-modifier-recipes";
4
+ import { type TagRegistryHolder } from "@adeficior/data-modifier-tags";
5
+ import { type ItemId, type RecipeSerializerId, type RegistryId } from "@adeficior/data-modifier/generated";
6
+ export type RecipeGraphOptions = {
7
+ resolveTags?: boolean;
8
+ brokenIcon?: string;
9
+ iconProvider?: (id: NormalizedId, registry: NormalizedId<RegistryId>) => string;
10
+ };
11
+ export interface RecipeGraphAccessor {
12
+ represent(type: CommonFilter<NormalizedId<RecipeSerializerId>>, icon: IdInput<ItemId>, label?: string): void;
13
+ show(id: IdInput): void;
14
+ }
15
+ export declare class RecipeGraphEmitter implements ClearableEmitter, RecipeGraphAccessor {
16
+ private readonly recipes;
17
+ private readonly tags;
18
+ private readonly shown;
19
+ private representations;
20
+ private readonly options;
21
+ constructor(recipes: RecipeLoaderAccessor, tags: TagRegistryHolder, options?: RecipeGraphOptions);
22
+ represent(type: CommonFilter<NormalizedId<RecipeSerializerId>>, icon: IdInput<ItemId>, label?: string): void;
23
+ show(id: IdInput): void;
24
+ clear(): void;
25
+ resolver(context: LoaderContext): import("@adeficior/pack-resolver").Resolver<import("@adeficior/pack-resolver").Acceptable, import("@adeficior/pack-resolver").BaseContext>;
26
+ }
@@ -0,0 +1,201 @@
1
+ import { createId, encodeId, prefix, Registry, suffix, toJson, } from "@adeficior/data-modifier-core";
2
+ import { resolveIdTest, } from "@adeficior/data-modifier-core/serializer";
3
+ import {} from "@adeficior/data-modifier-recipes";
4
+ import {} from "@adeficior/data-modifier-tags";
5
+ import {} from "@adeficior/data-modifier/generated";
6
+ import { simpleResolver } from "@adeficior/pack-resolver";
7
+ const defaultOptions = {
8
+ resolveTags: true,
9
+ brokenIcon: `https://icons.macarena.ceo/icons/minecraft/bedrock.png`,
10
+ iconProvider: (id, registry) => {
11
+ if (registry === "minecraft:fluid")
12
+ id = suffix(id, "_bucket");
13
+ const { namespace, path } = createId(id);
14
+ return `https://icons.macarena.ceo/icons/${namespace}/${path}.png`;
15
+ },
16
+ };
17
+ export class RecipeGraphEmitter {
18
+ recipes;
19
+ tags;
20
+ shown = new Registry();
21
+ representations = [];
22
+ options;
23
+ constructor(recipes, tags, options = {}) {
24
+ this.recipes = recipes;
25
+ this.tags = tags;
26
+ this.options = { ...defaultOptions, ...options };
27
+ this.represent(/minecraft:crafting_.+/, "minecraft:crafting_bench");
28
+ this.represent(/.+:crafting_special_.+/, "minecraft:crafting_bench");
29
+ this.represent("minecraft:smelting", "minecraft:furnace");
30
+ this.represent("minecraft:smoking", "minecraft:smoker");
31
+ this.represent("minecraft:blasting", "minecraft:blast_furnace");
32
+ this.represent("minecraft:campfire_cooking", "minecraft:campfire");
33
+ this.represent("minecraft:stonecutting", "minecraft:stonecutter");
34
+ this.represent(/minecraft:smithing.+/, "minecraft:smithing_table");
35
+ this.represent("create:crushing", "create:millstone");
36
+ this.represent("create:milling", "create:millstone");
37
+ this.represent("create:mixing", "create:mechanical_mixer");
38
+ this.represent("create:splashing", "create:encased_fan");
39
+ this.represent("create:compacting", "create:mechanical_press");
40
+ this.represent("create:pressing", "create:mechanical_press");
41
+ this.represent("create:cutting", "create:mechanical_saw");
42
+ this.represent("create:deploying", "create:deployer");
43
+ this.represent("create:emptying", "create:spout");
44
+ this.represent("create:filling", "create:spout");
45
+ this.represent("create:haunting", "create:encased_fan");
46
+ this.represent("create:mechanical_crafting", "create:mechanical_crafter");
47
+ this.represent("create:sandpaper_polishing", "create:sand_paper");
48
+ this.represent("farmersdelight:cooking", "farmersdelight:cooking_pot");
49
+ this.represent("farmersdelight:cutting", "farmersdelight:cutting_board");
50
+ this.represent("clayworks:baking", "clayworks:kiln");
51
+ this.represent("sliceanddice:cutting", "sliceanddice:slicer");
52
+ }
53
+ represent(type, icon, label) {
54
+ this.representations.push({
55
+ test: resolveIdTest(type),
56
+ icon: encodeId(icon),
57
+ label,
58
+ });
59
+ }
60
+ show(id) {
61
+ const recipe = this.recipes.get(id);
62
+ if (!recipe)
63
+ throw new Error(`cannot generate graph for unknown recipe '${id}'`);
64
+ this.shown.set(id, recipe);
65
+ }
66
+ clear() {
67
+ this.shown.clear();
68
+ this.representations = [];
69
+ }
70
+ resolver(context) {
71
+ return simpleResolver(async (acceptor) => {
72
+ const builder = new GraphBuilder(this.tags, this.representations, this.options);
73
+ const { edges, nodes } = builder.build(this.shown);
74
+ if (edges.length === 0)
75
+ return;
76
+ await Promise.all([
77
+ acceptor("graph/recipe/nodes.json", toJson(nodes)),
78
+ acceptor("graph/recipe/edges.json", toJson(edges)),
79
+ ]);
80
+ }, context);
81
+ }
82
+ }
83
+ class GraphBuilder {
84
+ tags;
85
+ representations;
86
+ options;
87
+ nodes = new Registry();
88
+ edges = new Registry();
89
+ constructor(tags, representations, options) {
90
+ this.tags = tags;
91
+ this.representations = representations;
92
+ this.options = options;
93
+ }
94
+ addIONode(recipeId, from, input) {
95
+ const entry = Object.entries(from.ids()).find((it) => it[1].length > 0);
96
+ if (!entry)
97
+ return;
98
+ const registry = entry[0];
99
+ const id = entry[1][0];
100
+ const common = {
101
+ registry,
102
+ label: id,
103
+ };
104
+ if (id.startsWith("#")) {
105
+ this.nodes.set(id, common);
106
+ }
107
+ else {
108
+ this.nodes.set(id, {
109
+ ...common,
110
+ shape: "image",
111
+ brokenImage: this.options.brokenIcon,
112
+ image: this.options.iconProvider(id, registry),
113
+ });
114
+ }
115
+ this.addIOEdge(recipeId, id, input);
116
+ }
117
+ addEdge(edge) {
118
+ this.edges.set(Bun.randomUUIDv7().replaceAll("-", ""), edge);
119
+ }
120
+ addIOEdge(recipeId, id, input, label) {
121
+ const common = { label, arrows: "to" };
122
+ if (input) {
123
+ this.addEdge({ ...common, from: id, to: recipeId });
124
+ }
125
+ else {
126
+ this.addEdge({ ...common, from: recipeId, to: id });
127
+ }
128
+ }
129
+ addRecipeNode(id, recipe) {
130
+ const representation = this.representations.find((it) => it.test(recipe.serializerType));
131
+ const common = {
132
+ id,
133
+ registry: "minecraft:recipe_serializer",
134
+ };
135
+ if (representation) {
136
+ this.nodes.set(id, {
137
+ ...common,
138
+ shape: "image",
139
+ brokenImage: this.options.brokenIcon,
140
+ image: this.options.iconProvider(representation.icon, "minecraft:item"),
141
+ label: representation.label,
142
+ });
143
+ }
144
+ else {
145
+ this.nodes.set(id, {
146
+ ...common,
147
+ label: id,
148
+ });
149
+ }
150
+ }
151
+ addRecipe(id, recipe) {
152
+ const recipeNodeId = prefix(id, "recipe/");
153
+ this.addRecipeNode(recipeNodeId, recipe);
154
+ recipe
155
+ .getIngredients()
156
+ .forEach((it) => this.addIONode(recipeNodeId, it, true));
157
+ recipe
158
+ .getResults()
159
+ .forEach((it) => this.addIONode(recipeNodeId, it, false));
160
+ }
161
+ sanitize() {
162
+ if (this.options.resolveTags) {
163
+ this.nodes.forEach((node, id) => {
164
+ if (id.isTag) {
165
+ const tags = this.tags.registry(node.registry);
166
+ const entries = tags
167
+ .resolve(id)
168
+ .map((it) => (typeof it === "string" ? it : it.id))
169
+ .map(encodeId);
170
+ const replacements = entries.filter((id) => this.nodes.get(id));
171
+ if (replacements.length === 0) {
172
+ const [entry] = entries;
173
+ if (entry) {
174
+ node.image = this.options.iconProvider(entry, node.registry);
175
+ node.shape = "image";
176
+ node.brokenImage = this.options.brokenIcon;
177
+ }
178
+ return;
179
+ }
180
+ const nodeId = encodeId(id);
181
+ const from = this.edges.filter((it) => it.from === nodeId);
182
+ const to = this.edges.filter((it) => it.to === nodeId);
183
+ const label = `uses any ${nodeId}`;
184
+ replacements.forEach((id) => {
185
+ from.forEach(([, edge]) => this.addIOEdge(edge.to, id, true, label));
186
+ to.forEach(([, edge]) => this.addIOEdge(edge.from, id, false, label));
187
+ });
188
+ from.forEach(([id]) => this.edges.delete(id));
189
+ to.forEach(([id]) => this.edges.delete(id));
190
+ this.nodes.delete(id);
191
+ }
192
+ });
193
+ }
194
+ }
195
+ build(shown) {
196
+ shown.forEach((recipe, id) => this.addRecipe(id, recipe));
197
+ this.sanitize();
198
+ return { edges: this.edges.values(), nodes: this.nodes.valuesWithId() };
199
+ }
200
+ }
201
+ //# sourceMappingURL=recipeGraph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recipeGraph.js","sourceRoot":"","sources":["../../src/emit/recipeGraph.ts"],"names":[],"mappings":"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"}