@adeficior/data-modifier 1.0.0-rc.9

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 (274) hide show
  1. package/dist/cli/codegen/registry.d.ts +3 -0
  2. package/dist/cli/codegen/registry.js +81 -0
  3. package/dist/cli/codegen/registry.js.map +1 -0
  4. package/dist/cli/config.d.ts +10 -0
  5. package/dist/cli/config.js +60 -0
  6. package/dist/cli/config.js.map +1 -0
  7. package/dist/cli/index.d.ts +1 -0
  8. package/dist/cli/index.js +34 -0
  9. package/dist/cli/index.js.map +1 -0
  10. package/dist/common/id.d.ts +15 -0
  11. package/dist/common/id.js +42 -0
  12. package/dist/common/id.js.map +1 -0
  13. package/dist/common/ingredient.d.ts +49 -0
  14. package/dist/common/ingredient.js +108 -0
  15. package/dist/common/ingredient.js.map +1 -0
  16. package/dist/common/predicates.d.ts +7 -0
  17. package/dist/common/predicates.js +32 -0
  18. package/dist/common/predicates.js.map +1 -0
  19. package/dist/common/registry.d.ts +12 -0
  20. package/dist/common/registry.js +36 -0
  21. package/dist/common/registry.js.map +1 -0
  22. package/dist/common/result.d.ts +48 -0
  23. package/dist/common/result.js +37 -0
  24. package/dist/common/result.js.map +1 -0
  25. package/dist/emit/assets/blockstates.d.ts +18 -0
  26. package/dist/emit/assets/blockstates.js +46 -0
  27. package/dist/emit/assets/blockstates.js.map +1 -0
  28. package/dist/emit/assets/lang.d.ts +33 -0
  29. package/dist/emit/assets/lang.js +103 -0
  30. package/dist/emit/assets/lang.js.map +1 -0
  31. package/dist/emit/assets/models.d.ts +24 -0
  32. package/dist/emit/assets/models.js +59 -0
  33. package/dist/emit/assets/models.js.map +1 -0
  34. package/dist/emit/blacklist.d.ts +32 -0
  35. package/dist/emit/blacklist.js +99 -0
  36. package/dist/emit/blacklist.js.map +1 -0
  37. package/dist/emit/content/blockDefinition.d.ts +58 -0
  38. package/dist/emit/content/blockDefinition.js +58 -0
  39. package/dist/emit/content/blockDefinition.js.map +1 -0
  40. package/dist/emit/content/innerBlockDefinition.d.ts +12 -0
  41. package/dist/emit/content/innerBlockDefinition.js +32 -0
  42. package/dist/emit/content/innerBlockDefinition.js.map +1 -0
  43. package/dist/emit/content/itemDefinition.d.ts +58 -0
  44. package/dist/emit/content/itemDefinition.js +54 -0
  45. package/dist/emit/content/itemDefinition.js.map +1 -0
  46. package/dist/emit/custom.d.ts +15 -0
  47. package/dist/emit/custom.js +42 -0
  48. package/dist/emit/custom.js.map +1 -0
  49. package/dist/emit/data/loot.d.ts +48 -0
  50. package/dist/emit/data/loot.js +108 -0
  51. package/dist/emit/data/loot.js.map +1 -0
  52. package/dist/emit/data/recipe.d.ts +46 -0
  53. package/dist/emit/data/recipe.js +106 -0
  54. package/dist/emit/data/recipe.js.map +1 -0
  55. package/dist/emit/data/tags.d.ts +38 -0
  56. package/dist/emit/data/tags.js +115 -0
  57. package/dist/emit/data/tags.js.map +1 -0
  58. package/dist/emit/index.d.ts +11 -0
  59. package/dist/emit/index.js +1 -0
  60. package/dist/emit/index.js.map +1 -0
  61. package/dist/emit/polytoneTabs.d.ts +65 -0
  62. package/dist/emit/polytoneTabs.js +101 -0
  63. package/dist/emit/polytoneTabs.js.map +1 -0
  64. package/dist/emit/rule/index.d.ts +10 -0
  65. package/dist/emit/rule/index.js +10 -0
  66. package/dist/emit/rule/index.js.map +1 -0
  67. package/dist/emit/rule/lootTable.d.ts +14 -0
  68. package/dist/emit/rule/lootTable.js +47 -0
  69. package/dist/emit/rule/lootTable.js.map +1 -0
  70. package/dist/emit/rule/recipe.d.ts +16 -0
  71. package/dist/emit/rule/recipe.js +29 -0
  72. package/dist/emit/rule/recipe.js.map +1 -0
  73. package/dist/emit/ruled.d.ts +18 -0
  74. package/dist/emit/ruled.js +47 -0
  75. package/dist/emit/ruled.js.map +1 -0
  76. package/dist/error.d.ts +12 -0
  77. package/dist/error.js +45 -0
  78. package/dist/error.js.map +1 -0
  79. package/dist/index.d.ts +31 -0
  80. package/dist/index.js +12 -0
  81. package/dist/index.js.map +1 -0
  82. package/dist/loader/index.d.ts +16 -0
  83. package/dist/loader/index.js +40 -0
  84. package/dist/loader/index.js.map +1 -0
  85. package/dist/loader/lang.d.ts +7 -0
  86. package/dist/loader/lang.js +12 -0
  87. package/dist/loader/lang.js.map +1 -0
  88. package/dist/loader/loot.d.ts +7 -0
  89. package/dist/loader/loot.js +12 -0
  90. package/dist/loader/loot.js.map +1 -0
  91. package/dist/loader/pack.d.ts +62 -0
  92. package/dist/loader/pack.js +131 -0
  93. package/dist/loader/pack.js.map +1 -0
  94. package/dist/loader/recipe.d.ts +25 -0
  95. package/dist/loader/recipe.js +207 -0
  96. package/dist/loader/recipe.js.map +1 -0
  97. package/dist/loader/registry/dump.d.ts +19 -0
  98. package/dist/loader/registry/dump.js +74 -0
  99. package/dist/loader/registry/dump.js.map +1 -0
  100. package/dist/loader/registry/empty.d.ts +11 -0
  101. package/dist/loader/registry/empty.js +22 -0
  102. package/dist/loader/registry/empty.js.map +1 -0
  103. package/dist/loader/registry/index.d.ts +11 -0
  104. package/dist/loader/registry/index.js +1 -0
  105. package/dist/loader/registry/index.js.map +1 -0
  106. package/dist/loader/tags.d.ts +26 -0
  107. package/dist/loader/tags.js +131 -0
  108. package/dist/loader/tags.js.map +1 -0
  109. package/dist/parser/adAstra.d.ts +11 -0
  110. package/dist/parser/adAstra.js +6 -0
  111. package/dist/parser/adAstra.js.map +1 -0
  112. package/dist/parser/botania.d.ts +20 -0
  113. package/dist/parser/botania.js +11 -0
  114. package/dist/parser/botania.js.map +1 -0
  115. package/dist/parser/create.d.ts +4 -0
  116. package/dist/parser/create.js +3 -0
  117. package/dist/parser/create.js.map +1 -0
  118. package/dist/parser/farmersdelight.d.ts +4 -0
  119. package/dist/parser/farmersdelight.js +3 -0
  120. package/dist/parser/farmersdelight.js.map +1 -0
  121. package/dist/parser/index.d.ts +13 -0
  122. package/dist/parser/index.js +8 -0
  123. package/dist/parser/index.js.map +1 -0
  124. package/dist/parser/lootTable.d.ts +7 -0
  125. package/dist/parser/lootTable.js +70 -0
  126. package/dist/parser/lootTable.js.map +1 -0
  127. package/dist/parser/recipe/adAstra/conversion.d.ts +20 -0
  128. package/dist/parser/recipe/adAstra/conversion.js +33 -0
  129. package/dist/parser/recipe/adAstra/conversion.js.map +1 -0
  130. package/dist/parser/recipe/adAstra/hammering.d.ts +18 -0
  131. package/dist/parser/recipe/adAstra/hammering.js +27 -0
  132. package/dist/parser/recipe/adAstra/hammering.js.map +1 -0
  133. package/dist/parser/recipe/adAstra/index.d.ts +5 -0
  134. package/dist/parser/recipe/adAstra/index.js +1 -0
  135. package/dist/parser/recipe/adAstra/index.js.map +1 -0
  136. package/dist/parser/recipe/adAstra/inputOutput.d.ts +24 -0
  137. package/dist/parser/recipe/adAstra/inputOutput.js +42 -0
  138. package/dist/parser/recipe/adAstra/inputOutput.js.map +1 -0
  139. package/dist/parser/recipe/adAstra/nasaWorkbench.d.ts +20 -0
  140. package/dist/parser/recipe/adAstra/nasaWorkbench.js +30 -0
  141. package/dist/parser/recipe/adAstra/nasaWorkbench.js.map +1 -0
  142. package/dist/parser/recipe/adAstra/spaceStation.d.ts +19 -0
  143. package/dist/parser/recipe/adAstra/spaceStation.js +27 -0
  144. package/dist/parser/recipe/adAstra/spaceStation.js.map +1 -0
  145. package/dist/parser/recipe/botania/apothecary.d.ts +19 -0
  146. package/dist/parser/recipe/botania/apothecary.js +28 -0
  147. package/dist/parser/recipe/botania/apothecary.js.map +1 -0
  148. package/dist/parser/recipe/botania/brew.d.ts +18 -0
  149. package/dist/parser/recipe/botania/brew.js +24 -0
  150. package/dist/parser/recipe/botania/brew.js.map +1 -0
  151. package/dist/parser/recipe/botania/elvenTrade.d.ts +19 -0
  152. package/dist/parser/recipe/botania/elvenTrade.js +27 -0
  153. package/dist/parser/recipe/botania/elvenTrade.js.map +1 -0
  154. package/dist/parser/recipe/botania/gogWrapper.d.ts +22 -0
  155. package/dist/parser/recipe/botania/gogWrapper.js +34 -0
  156. package/dist/parser/recipe/botania/gogWrapper.js.map +1 -0
  157. package/dist/parser/recipe/botania/manaInfusion.d.ts +21 -0
  158. package/dist/parser/recipe/botania/manaInfusion.js +33 -0
  159. package/dist/parser/recipe/botania/manaInfusion.js.map +1 -0
  160. package/dist/parser/recipe/botania/nbtWrapper.d.ts +20 -0
  161. package/dist/parser/recipe/botania/nbtWrapper.js +30 -0
  162. package/dist/parser/recipe/botania/nbtWrapper.js.map +1 -0
  163. package/dist/parser/recipe/botania/orechid.d.ts +35 -0
  164. package/dist/parser/recipe/botania/orechid.js +74 -0
  165. package/dist/parser/recipe/botania/orechid.js.map +1 -0
  166. package/dist/parser/recipe/botania/pureDaisy.d.ts +19 -0
  167. package/dist/parser/recipe/botania/pureDaisy.js +30 -0
  168. package/dist/parser/recipe/botania/pureDaisy.js.map +1 -0
  169. package/dist/parser/recipe/botania/runicAltar.d.ts +19 -0
  170. package/dist/parser/recipe/botania/runicAltar.js +27 -0
  171. package/dist/parser/recipe/botania/runicAltar.js.map +1 -0
  172. package/dist/parser/recipe/botania/terraPlate.d.ts +19 -0
  173. package/dist/parser/recipe/botania/terraPlate.js +27 -0
  174. package/dist/parser/recipe/botania/terraPlate.js.map +1 -0
  175. package/dist/parser/recipe/create/assembly.d.ts +25 -0
  176. package/dist/parser/recipe/create/assembly.js +45 -0
  177. package/dist/parser/recipe/create/assembly.js.map +1 -0
  178. package/dist/parser/recipe/create/processing.d.ts +21 -0
  179. package/dist/parser/recipe/create/processing.js +27 -0
  180. package/dist/parser/recipe/create/processing.js.map +1 -0
  181. package/dist/parser/recipe/farmersdelight/cooking.d.ts +22 -0
  182. package/dist/parser/recipe/farmersdelight/cooking.js +29 -0
  183. package/dist/parser/recipe/farmersdelight/cooking.js.map +1 -0
  184. package/dist/parser/recipe/farmersdelight/cutting.d.ts +23 -0
  185. package/dist/parser/recipe/farmersdelight/cutting.js +38 -0
  186. package/dist/parser/recipe/farmersdelight/cutting.js.map +1 -0
  187. package/dist/parser/recipe/forge/conditional.d.ts +25 -0
  188. package/dist/parser/recipe/forge/conditional.js +45 -0
  189. package/dist/parser/recipe/forge/conditional.js.map +1 -0
  190. package/dist/parser/recipe/ignored.d.ts +10 -0
  191. package/dist/parser/recipe/ignored.js +16 -0
  192. package/dist/parser/recipe/ignored.js.map +1 -0
  193. package/dist/parser/recipe/index.d.ts +19 -0
  194. package/dist/parser/recipe/index.js +22 -0
  195. package/dist/parser/recipe/index.js.map +1 -0
  196. package/dist/parser/recipe/quark/exclusion.d.ts +20 -0
  197. package/dist/parser/recipe/quark/exclusion.js +32 -0
  198. package/dist/parser/recipe/quark/exclusion.js.map +1 -0
  199. package/dist/parser/recipe/roots/component.d.ts +18 -0
  200. package/dist/parser/recipe/roots/component.js +24 -0
  201. package/dist/parser/recipe/roots/component.js.map +1 -0
  202. package/dist/parser/recipe/roots/ritual.d.ts +22 -0
  203. package/dist/parser/recipe/roots/ritual.js +32 -0
  204. package/dist/parser/recipe/roots/ritual.js.map +1 -0
  205. package/dist/parser/recipe/sullys/polishing.d.ts +19 -0
  206. package/dist/parser/recipe/sullys/polishing.js +27 -0
  207. package/dist/parser/recipe/sullys/polishing.js.map +1 -0
  208. package/dist/parser/recipe/thermal/catalyst.d.ts +22 -0
  209. package/dist/parser/recipe/thermal/catalyst.js +24 -0
  210. package/dist/parser/recipe/thermal/catalyst.js.map +1 -0
  211. package/dist/parser/recipe/thermal/fuel.d.ts +18 -0
  212. package/dist/parser/recipe/thermal/fuel.js +24 -0
  213. package/dist/parser/recipe/thermal/fuel.js.map +1 -0
  214. package/dist/parser/recipe/thermal/index.d.ts +22 -0
  215. package/dist/parser/recipe/thermal/index.js +36 -0
  216. package/dist/parser/recipe/thermal/index.js.map +1 -0
  217. package/dist/parser/recipe/thermal/ingredient.d.ts +21 -0
  218. package/dist/parser/recipe/thermal/ingredient.js +43 -0
  219. package/dist/parser/recipe/thermal/ingredient.js.map +1 -0
  220. package/dist/parser/recipe/thermal/treeExtraction.d.ts +24 -0
  221. package/dist/parser/recipe/thermal/treeExtraction.js +47 -0
  222. package/dist/parser/recipe/thermal/treeExtraction.js.map +1 -0
  223. package/dist/parser/recipe/vanilla/shaped.d.ts +19 -0
  224. package/dist/parser/recipe/vanilla/shaped.js +28 -0
  225. package/dist/parser/recipe/vanilla/shaped.js.map +1 -0
  226. package/dist/parser/recipe/vanilla/shapeless.d.ts +18 -0
  227. package/dist/parser/recipe/vanilla/shapeless.js +27 -0
  228. package/dist/parser/recipe/vanilla/shapeless.js.map +1 -0
  229. package/dist/parser/recipe/vanilla/smelting.d.ts +19 -0
  230. package/dist/parser/recipe/vanilla/smelting.js +27 -0
  231. package/dist/parser/recipe/vanilla/smelting.js.map +1 -0
  232. package/dist/parser/recipe/vanilla/smithing.d.ts +19 -0
  233. package/dist/parser/recipe/vanilla/smithing.js +28 -0
  234. package/dist/parser/recipe/vanilla/smithing.js.map +1 -0
  235. package/dist/parser/recipe/vanilla/stonecutting.d.ts +20 -0
  236. package/dist/parser/recipe/vanilla/stonecutting.js +36 -0
  237. package/dist/parser/recipe/vanilla/stonecutting.js.map +1 -0
  238. package/dist/parser/roots.d.ts +4 -0
  239. package/dist/parser/roots.js +3 -0
  240. package/dist/parser/roots.js.map +1 -0
  241. package/dist/parser/thermal.d.ts +10 -0
  242. package/dist/parser/thermal.js +6 -0
  243. package/dist/parser/thermal.js.map +1 -0
  244. package/dist/schema/assets/blockstate.d.ts +10 -0
  245. package/dist/schema/assets/blockstate.js +1 -0
  246. package/dist/schema/assets/blockstate.js.map +1 -0
  247. package/dist/schema/assets/lang.d.ts +3 -0
  248. package/dist/schema/assets/lang.js +3 -0
  249. package/dist/schema/assets/lang.js.map +1 -0
  250. package/dist/schema/assets/model.d.ts +27 -0
  251. package/dist/schema/assets/model.js +1 -0
  252. package/dist/schema/assets/model.js.map +1 -0
  253. package/dist/schema/content/blockDefinition.d.ts +11 -0
  254. package/dist/schema/content/blockDefinition.js +1 -0
  255. package/dist/schema/content/blockDefinition.js.map +1 -0
  256. package/dist/schema/content/itemDefinition.d.ts +14 -0
  257. package/dist/schema/content/itemDefinition.js +1 -0
  258. package/dist/schema/content/itemDefinition.js.map +1 -0
  259. package/dist/schema/data/loot.d.ts +1151 -0
  260. package/dist/schema/data/loot.js +76 -0
  261. package/dist/schema/data/loot.js.map +1 -0
  262. package/dist/schema/data/recipe.d.ts +13 -0
  263. package/dist/schema/data/recipe.js +1 -0
  264. package/dist/schema/data/recipe.js.map +1 -0
  265. package/dist/schema/data/tag.d.ts +11 -0
  266. package/dist/schema/data/tag.js +6 -0
  267. package/dist/schema/data/tag.js.map +1 -0
  268. package/dist/stubTypes.d.ts +7 -0
  269. package/dist/stubTypes.js +1 -0
  270. package/dist/stubTypes.js.map +1 -0
  271. package/dist/textHelper.d.ts +3 -0
  272. package/dist/textHelper.js +20 -0
  273. package/dist/textHelper.js.map +1 -0
  274. package/package.json +96 -0
package/dist/index.js ADDED
@@ -0,0 +1,12 @@
1
+ export { createId, encodeId, prefix, suffix, } from "./common/id.js";
2
+ export { createIngredient } from "./common/ingredient.js";
3
+ export { default as Registry } from "./common/registry.js";
4
+ export { createResult } from "./common/result.js";
5
+ export { default as CustomEmitter } from "./emit/custom.js";
6
+ export { EMPTY_LOOT_MODIFIER, EMPTY_LOOT_TABLE, } from "./emit/data/loot.js";
7
+ export { EMPTY_RECIPE } from "./emit/data/recipe.js";
8
+ export { default as RuledEmitter } from "./emit/ruled.js";
9
+ export { IllegalShapeError, UnknownRegistryEntry } from "./error.js";
10
+ export { default as PackLoader } from "./loader/pack.js";
11
+ export { EmptyLootEntry } from "./schema/data/loot.js";
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,MAAM,GAKP,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAc1D,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAmBlD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EACL,mBAAmB,EACnB,gBAAgB,GAEjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAIrD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAgBzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { Acceptor, IResolver, Logger } from "@adeficior/pack-resolver";
2
+ import type { Id } from "../common/id.js";
3
+ import Registry from "../common/registry.js";
4
+ import type { RegistryProvider } from "../emit/index.js";
5
+ export type AcceptorWithLoader = (logger: Logger, ...paramenters: Parameters<Acceptor>) => ReturnType<Acceptor>;
6
+ export default interface Loader {
7
+ loadFrom(resolver: IResolver): Promise<void>;
8
+ }
9
+ export declare function tryParseJson(logger: Logger, content: string): any;
10
+ export declare abstract class JsonLoader<T> implements RegistryProvider<T> {
11
+ protected readonly registry: Registry<T, string>;
12
+ protected abstract parse(logger: Logger, json: unknown, id: Id): T | null;
13
+ forEach(consumer: (recipe: T, id: Id) => void): void;
14
+ forEachAsync(consumer: (recipe: T, id: Id) => Promise<void>): Promise<void>;
15
+ readonly accept: AcceptorWithLoader;
16
+ }
@@ -0,0 +1,40 @@
1
+ import Registry from "../common/registry.js";
2
+ import { tryCatching } from "../error.js";
3
+ import { fromJson } from "../textHelper.js";
4
+ export function tryParseJson(logger, content) {
5
+ try {
6
+ return fromJson(content);
7
+ }
8
+ catch (error) {
9
+ if (error instanceof SyntaxError) {
10
+ logger.warn(`unable to parse json: ${error.message}`);
11
+ return null;
12
+ }
13
+ throw error;
14
+ }
15
+ }
16
+ export class JsonLoader {
17
+ registry = new Registry();
18
+ forEach(consumer) {
19
+ this.registry.forEach(consumer);
20
+ }
21
+ async forEachAsync(consumer) {
22
+ await this.registry.forEachAsync(consumer);
23
+ }
24
+ accept = (logger, path, content) => {
25
+ const match = /(data|assets)\/(?<namespace>[\w-]+)\/\w+\/(?<rest>[\w-/]+).json/.exec(path);
26
+ if (!match?.groups)
27
+ return false;
28
+ const { namespace, rest } = match.groups;
29
+ const id = { namespace: namespace, path: rest };
30
+ const grouped = logger.group(path);
31
+ const json = tryParseJson(grouped, content.toString());
32
+ if (!json)
33
+ return false;
34
+ const parsed = tryCatching(grouped, () => this.parse(grouped, json, id));
35
+ if (!parsed)
36
+ return false;
37
+ this.registry.set(id, parsed);
38
+ };
39
+ }
40
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/loader/index.ts"],"names":[],"mappings":"AAEA,OAAO,QAAQ,MAAM,uBAAuB,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAW5C,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,OAAe;IAC1D,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,yBAAyB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACtD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,OAAgB,UAAU;IACX,QAAQ,GAAG,IAAI,QAAQ,EAAK,CAAC;IAIhD,OAAO,CAAC,QAAqC;QAC3C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,QAA8C;QAE9C,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAEQ,MAAM,GAAuB,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QAC9D,MAAM,KAAK,GACT,iEAAiE,CAAC,IAAI,CACpE,IAAI,CACL,CAAC;QACJ,IAAI,CAAC,KAAK,EAAE,MAAM;YAAE,OAAO,KAAK,CAAC;QAEjC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;QACzC,MAAM,EAAE,GAAO,EAAE,SAAS,EAAE,SAAU,EAAE,IAAI,EAAE,IAAK,EAAE,CAAC;QAEtD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEnC,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QAExB,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAE1B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC,CAAC;CACH"}
@@ -0,0 +1,7 @@
1
+ import type { Logger } from "@adeficior/pack-resolver";
2
+ import type { Id } from "../common/id.js";
3
+ import type { LangDefinition } from "../schema/assets/lang.js";
4
+ import { JsonLoader } from "./index.js";
5
+ export default class LangLoader extends JsonLoader<LangDefinition> {
6
+ protected parse(_: Logger, json: unknown, id: Id): LangDefinition | null;
7
+ }
@@ -0,0 +1,12 @@
1
+ import { LangSchema } from "../schema/assets/lang.js";
2
+ import { JsonLoader } from "./index.js";
3
+ export default class LangLoader extends JsonLoader {
4
+ parse(_, json, id) {
5
+ const parsed = LangSchema.parse(json);
6
+ const existing = this.registry.get(id);
7
+ if (!existing)
8
+ return parsed;
9
+ return { ...existing, ...parsed };
10
+ }
11
+ }
12
+ //# sourceMappingURL=lang.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lang.js","sourceRoot":"","sources":["../../src/loader/lang.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,UAA0B;IACtD,KAAK,CAAC,CAAS,EAAE,IAAa,EAAE,EAAM;QAC9C,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ;YAAE,OAAO,MAAM,CAAC;QAC7B,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAC;IACpC,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ import type { Logger } from "@adeficior/pack-resolver";
2
+ import type { Id } from "../common/id.js";
3
+ import type { LootTable } from "../schema/data/loot.js";
4
+ import { JsonLoader } from "./index.js";
5
+ export default class LootTableLoader extends JsonLoader<LootTable> {
6
+ protected parse(logger: Logger, json: unknown, id: Id): LootTable | null;
7
+ }
@@ -0,0 +1,12 @@
1
+ import { encodeId } from "../common/id.js";
2
+ import { tryCatching } from "../error.js";
3
+ import { LootTableSchema } from "../schema/data/loot.js";
4
+ import { JsonLoader } from "./index.js";
5
+ export default class LootTableLoader extends JsonLoader {
6
+ parse(logger, json, id) {
7
+ return tryCatching(logger.group(`error parsing loot table ${encodeId(id)}`), () => {
8
+ return LootTableSchema.parse(json);
9
+ });
10
+ }
11
+ }
12
+ //# sourceMappingURL=loot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loot.js","sourceRoot":"","sources":["../../src/loader/loot.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,UAAqB;IACtD,KAAK,CAAC,MAAc,EAAE,IAAa,EAAE,EAAM;QACnD,OAAO,WAAW,CAChB,MAAM,CAAC,KAAK,CAAC,4BAA4B,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,EACxD,GAAG,EAAE;YACH,OAAO,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC,CACF,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,62 @@
1
+ import type { RegistryId } from "@adeficior/data-modifier/generated";
2
+ import type { Acceptor, IResolver, Logger, ResolverInfo } from "@adeficior/pack-resolver";
3
+ import type { IngredientInput, IngredientTest } from "../common/ingredient.js";
4
+ import type { ResultInput } from "../common/result.js";
5
+ import type { BlockstateRules } from "../emit/assets/blockstates.js";
6
+ import type { LangRules } from "../emit/assets/lang.js";
7
+ import type { ModelRulesGroup } from "../emit/assets/models.js";
8
+ import type { BlacklistOptions, BlacklistRules } from "../emit/blacklist.js";
9
+ import type { BlockDefinitionRules } from "../emit/content/blockDefinition.js";
10
+ import type { ItemDefinitionRules } from "../emit/content/itemDefinition.js";
11
+ import type { LootRules } from "../emit/data/loot.js";
12
+ import type { RecipeRules } from "../emit/data/recipe.js";
13
+ import type { TagEmitterOptions, TagRules } from "../emit/data/tags.js";
14
+ import type { ClearableEmitter } from "../emit/index.js";
15
+ import type { PolytoneTabs } from "../emit/polytoneTabs.js";
16
+ import type Loader from "./index.js";
17
+ import type { RecipeLoaderAccessor } from "./recipe.js";
18
+ import type RegistryLookup from "./registry/index.js";
19
+ export interface PackLoaderOptions extends TagEmitterOptions, BlacklistOptions {
20
+ packFormat: number;
21
+ }
22
+ export default class PackLoader implements Loader, ClearableEmitter {
23
+ readonly logger: Logger;
24
+ private activeRegistryLookup;
25
+ private readonly emitters;
26
+ readonly tags: TagRules;
27
+ readonly recipes: RecipeRules;
28
+ readonly loot: LootRules;
29
+ readonly lang: LangRules;
30
+ readonly tabs: PolytoneTabs;
31
+ readonly blacklist: BlacklistRules;
32
+ private readonly itemDefinition;
33
+ private readonly blockDefinition;
34
+ private readonly tagLoader;
35
+ private readonly recipesLoader;
36
+ private readonly lootLoader;
37
+ private readonly langLoader;
38
+ readonly blockstates: BlockstateRules;
39
+ readonly models: ModelRulesGroup;
40
+ constructor(logger: Logger, options: PackLoaderOptions);
41
+ registerEmitter<T extends ClearableEmitter>(emitter: T): T;
42
+ registerRegistry(key: string): void;
43
+ tagRegistry<T extends RegistryId>(key: T): import("./tags.js").TagRegistry<T>;
44
+ get content(): Readonly<{
45
+ blocks: BlockDefinitionRules;
46
+ items: ItemDefinitionRules;
47
+ }>;
48
+ get recipeLoader(): RecipeLoaderAccessor;
49
+ get registries(): RegistryLookup;
50
+ createResult(input: ResultInput): import("../index.js").Result;
51
+ createIngredient(input: IngredientInput): import("../index.js").Ingredient;
52
+ resolveIngredientTest(test: IngredientTest): import("../index.js").Predicate<IngredientInput>;
53
+ private acceptors;
54
+ private loadInternal;
55
+ loadFromMultiple(resolvers: ResolverInfo[]): Promise<void>;
56
+ loadFrom(resolver: IResolver): Promise<void>;
57
+ loadRegistryDump(resolver: IResolver): Promise<void>;
58
+ private freeze;
59
+ clear(): void;
60
+ emit(acceptor: Acceptor): Promise<void>;
61
+ run(from: IResolver, to: Acceptor): Promise<void>;
62
+ }
@@ -0,0 +1,131 @@
1
+ import match from "minimatch";
2
+ import { createIngredient } from "../common/ingredient.js";
3
+ import { createResult } from "../common/result.js";
4
+ import BlockstateEmitter from "../emit/assets/blockstates.js";
5
+ import LangEmitter from "../emit/assets/lang.js";
6
+ import ModelEmitter from "../emit/assets/models.js";
7
+ import BlacklistEmitter from "../emit/blacklist.js";
8
+ import BlockDefinitionEmitter from "../emit/content/blockDefinition.js";
9
+ import ItemDefinitionEmitter from "../emit/content/itemDefinition.js";
10
+ import LootTableEmitter from "../emit/data/loot.js";
11
+ import RecipeEmitter from "../emit/data/recipe.js";
12
+ import TagEmitter from "../emit/data/tags.js";
13
+ import PolytoneTabsEmitter from "../emit/polytoneTabs.js";
14
+ import LangLoader from "./lang.js";
15
+ import LootTableLoader from "./loot.js";
16
+ import RecipeLoader from "./recipe.js";
17
+ import RegistryDumpLoader from "./registry/dump.js";
18
+ import EmptyRegistryLookup from "./registry/empty.js";
19
+ import TagsLoader from "./tags.js";
20
+ export default class PackLoader {
21
+ logger;
22
+ activeRegistryLookup = new EmptyRegistryLookup();
23
+ emitters = [];
24
+ tags;
25
+ recipes;
26
+ loot;
27
+ lang;
28
+ tabs;
29
+ blacklist;
30
+ itemDefinition;
31
+ blockDefinition;
32
+ tagLoader = new TagsLoader(() => this.activeRegistryLookup);
33
+ recipesLoader = new RecipeLoader();
34
+ lootLoader = new LootTableLoader();
35
+ langLoader = new LangLoader();
36
+ blockstates = this.registerEmitter(new BlockstateEmitter());
37
+ models = {
38
+ blocks: this.registerEmitter(new ModelEmitter("block")),
39
+ items: this.registerEmitter(new ModelEmitter("item")),
40
+ };
41
+ constructor(logger, options) {
42
+ this.logger = logger;
43
+ this.tags = this.registerEmitter(new TagEmitter(logger, this.tagLoader, options));
44
+ this.recipes = this.registerEmitter(new RecipeEmitter(logger, this.recipesLoader, this.tagLoader, () => this.activeRegistryLookup, options.packFormat));
45
+ this.loot = this.registerEmitter(new LootTableEmitter(logger, this.lootLoader, this.tagLoader, () => this.activeRegistryLookup, options.packFormat));
46
+ this.lang = this.registerEmitter(new LangEmitter(this.langLoader));
47
+ this.tabs = this.registerEmitter(new PolytoneTabsEmitter(() => this.activeRegistryLookup));
48
+ this.blacklist = this.registerEmitter(new BlacklistEmitter(logger, this.tagLoader, () => this.activeRegistryLookup, options));
49
+ this.itemDefinition = this.registerEmitter(new ItemDefinitionEmitter(this.models, this.blockstates, this.loot));
50
+ this.blockDefinition = this.registerEmitter(new BlockDefinitionEmitter(this.models.blocks, this.blockstates, this.loot));
51
+ }
52
+ registerEmitter(emitter) {
53
+ this.emitters.push(emitter);
54
+ return emitter;
55
+ }
56
+ registerRegistry(key) {
57
+ this.tagLoader.registerRegistry(key);
58
+ }
59
+ tagRegistry(key) {
60
+ return this.tagLoader.registry(key);
61
+ }
62
+ get content() {
63
+ return {
64
+ blocks: this.blockDefinition,
65
+ items: this.itemDefinition,
66
+ };
67
+ }
68
+ get recipeLoader() {
69
+ return this.recipesLoader;
70
+ }
71
+ get registries() {
72
+ return this.activeRegistryLookup;
73
+ }
74
+ createResult(input) {
75
+ return createResult(input, this.activeRegistryLookup);
76
+ }
77
+ createIngredient(input) {
78
+ return createIngredient(input, this.activeRegistryLookup);
79
+ }
80
+ resolveIngredientTest(test) {
81
+ return this.recipes.resolveIngredientTest(test);
82
+ }
83
+ acceptors = {
84
+ "data/*/tags/**/*.json": this.tagLoader.accept,
85
+ "data/*/recipes/**/*.json": this.recipesLoader.accept,
86
+ "data/*/recipe/**/*.json": this.recipesLoader.accept,
87
+ "data/*/loot_tables/**/*.json": this.lootLoader.accept,
88
+ "data/*/loot_table/**/*.json": this.lootLoader.accept,
89
+ "assets/*/lang/*.json": this.langLoader.accept,
90
+ };
91
+ loadInternal(resolver, logger) {
92
+ return resolver.extract((path, content) => {
93
+ const acceptor = Object.entries(this.acceptors).find(([pattern]) => match(path, pattern))?.[1];
94
+ if (!acceptor)
95
+ return false;
96
+ return acceptor(logger, path, content);
97
+ });
98
+ }
99
+ async loadFromMultiple(resolvers) {
100
+ await Promise.all(resolvers.map(({ resolver, name }) => {
101
+ const logger = this.logger.group(name);
102
+ return this.loadInternal(resolver, logger);
103
+ }));
104
+ this.freeze();
105
+ }
106
+ async loadFrom(resolver) {
107
+ await this.loadInternal(resolver, this.logger);
108
+ this.freeze();
109
+ }
110
+ async loadRegistryDump(resolver) {
111
+ const registryDumpLoader = new RegistryDumpLoader(this.logger);
112
+ await registryDumpLoader.extract(resolver);
113
+ this.activeRegistryLookup = registryDumpLoader;
114
+ }
115
+ freeze() {
116
+ this.tagLoader.freeze();
117
+ }
118
+ clear() {
119
+ this.recipesLoader.clear();
120
+ this.activeRegistryLookup = new EmptyRegistryLookup();
121
+ this.emitters.forEach((it) => it.clear());
122
+ }
123
+ async emit(acceptor) {
124
+ await Promise.all(this.emitters.map((it) => it.emit(acceptor)));
125
+ }
126
+ async run(from, to) {
127
+ await this.loadFrom(from);
128
+ await this.emit(to);
129
+ }
130
+ }
131
+ //# sourceMappingURL=pack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pack.js","sourceRoot":"","sources":["../../src/loader/pack.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { Logger } from "@adeficior/pack-resolver";
2
+ import type RecipeParser from "../parser/recipe/index.js";
3
+ import type { Recipe } from "../parser/recipe/index.js";
4
+ import type { RecipeDefinition } from "../schema/data/recipe.js";
5
+ import { JsonLoader } from "./index.js";
6
+ export interface RecipeLoaderAccessor {
7
+ unknownRecipeTypes(): RecipeDefinition[];
8
+ registerParser(recipeType: string, parser: RecipeParser<RecipeDefinition, Recipe>): void;
9
+ ignoreType(recipeType: string): void;
10
+ }
11
+ export default class RecipeLoader extends JsonLoader<Recipe> implements RecipeLoaderAccessor {
12
+ private readonly recipeParsers;
13
+ private readonly ignoredRecipeTypes;
14
+ private readonly _unknownRecipeTypes;
15
+ constructor();
16
+ ignoreType(recipeType: string): void;
17
+ unknownRecipeTypes(): Readonly<{
18
+ type: string;
19
+ conditions?: import("../index.js").ForgeCondition[];
20
+ "fabric:load_conditions"?: import("../index.js").FabricCondition[];
21
+ }>[];
22
+ parse<TDefinition extends RecipeDefinition, TRecipe extends Recipe<TDefinition>>(logger: Logger, definition: TDefinition): TRecipe | null;
23
+ registerParser(recipeType: string, parser: RecipeParser<RecipeDefinition, Recipe>): void;
24
+ clear(): void;
25
+ }
@@ -0,0 +1,207 @@
1
+ import { encodeId } from "../common/id.js";
2
+ import { createIngredient } from "../common/ingredient.js";
3
+ import { createResult } from "../common/result.js";
4
+ import { IllegalShapeError } from "../error.js";
5
+ import { ShapelessRecipeParser } from "../parser/index.js";
6
+ import FluidConversionRecipeParser from "../parser/recipe/adAstra/conversion.js";
7
+ import HammeringRecipeParser from "../parser/recipe/adAstra/hammering.js";
8
+ import InputOutputRecipeParser from "../parser/recipe/adAstra/inputOutput.js";
9
+ import NasaWorkbenchRecipeParser from "../parser/recipe/adAstra/nasaWorkbench.js";
10
+ import SpaceStationRecipeParser from "../parser/recipe/adAstra/spaceStation.js";
11
+ import ApothecaryRecipeParser from "../parser/recipe/botania/apothecary.js";
12
+ import BrewRecipeParser from "../parser/recipe/botania/brew.js";
13
+ import ElvenTradeRecipeParser from "../parser/recipe/botania/elvenTrade.js";
14
+ import GogWrapperRecipeParser from "../parser/recipe/botania/gogWrapper.js";
15
+ import ManaInfusionRecipeParser from "../parser/recipe/botania/manaInfusion.js";
16
+ import NbtWrapperRecipeParser from "../parser/recipe/botania/nbtWrapper.js";
17
+ import OrechidRecipeParser from "../parser/recipe/botania/orechid.js";
18
+ import PureDaisyRecipeParser from "../parser/recipe/botania/pureDaisy.js";
19
+ import RunicAltarRecipeParser from "../parser/recipe/botania/runicAltar.js";
20
+ import TerraPlateRecipeParser from "../parser/recipe/botania/terraPlate.js";
21
+ import AssemblyRecipeParser from "../parser/recipe/create/assembly.js";
22
+ import CreateProcessingRecipeParser from "../parser/recipe/create/processing.js";
23
+ import CookingRecipeParser from "../parser/recipe/farmersdelight/cooking.js";
24
+ import CuttingRecipeParser from "../parser/recipe/farmersdelight/cutting.js";
25
+ import ForgeConditionalRecipeParser from "../parser/recipe/forge/conditional.js";
26
+ import IgnoredRecipe from "../parser/recipe/ignored.js";
27
+ import QuarkExclusionRecipeParser from "../parser/recipe/quark/exclusion.js";
28
+ import RootComponentRecipeParser from "../parser/recipe/roots/component.js";
29
+ import RootRitualRecipeParser from "../parser/recipe/roots/ritual.js";
30
+ import GrindstonePolishingParser from "../parser/recipe/sullys/polishing.js";
31
+ import ThermalCatalystRecipeParser from "../parser/recipe/thermal/catalyst.js";
32
+ import ThermalFuelRecipeParser from "../parser/recipe/thermal/fuel.js";
33
+ import ThermalRecipeParser from "../parser/recipe/thermal/index.js";
34
+ import TreeExtractionRecipeParser from "../parser/recipe/thermal/treeExtraction.js";
35
+ import ShapedParser from "../parser/recipe/vanilla/shaped.js";
36
+ import ShapelessParser from "../parser/recipe/vanilla/shapeless.js";
37
+ import SmeltingParser from "../parser/recipe/vanilla/smelting.js";
38
+ import SmithingParser from "../parser/recipe/vanilla/smithing.js";
39
+ import StonecuttingParser from "../parser/recipe/vanilla/stonecutting.js";
40
+ import { JsonLoader } from "./index.js";
41
+ export default class RecipeLoader extends JsonLoader {
42
+ recipeParsers = new Map();
43
+ ignoredRecipeTypes = new Set();
44
+ _unknownRecipeTypes = new Map();
45
+ constructor() {
46
+ super();
47
+ this.registerParser("minecraft:crafting_shaped", new ShapedParser());
48
+ this.registerParser("minecraft:crafting_shapeless", new ShapelessParser());
49
+ this.registerParser("minecraft:smelting", new SmeltingParser());
50
+ this.registerParser("minecraft:smoking", new SmeltingParser());
51
+ this.registerParser("minecraft:blasting", new SmeltingParser());
52
+ this.registerParser("minecraft:campfire_cooking", new SmeltingParser());
53
+ this.registerParser("minecraft:smithing", new SmithingParser());
54
+ this.registerParser("minecraft:stonecutting", new StonecuttingParser());
55
+ this.registerParser("create:mixing", new CreateProcessingRecipeParser());
56
+ this.registerParser("create:pressing", new CreateProcessingRecipeParser());
57
+ this.registerParser("create:emptying", new CreateProcessingRecipeParser());
58
+ this.registerParser("create:crushing", new CreateProcessingRecipeParser());
59
+ this.registerParser("create:milling", new CreateProcessingRecipeParser());
60
+ this.registerParser("create:compacting", new CreateProcessingRecipeParser());
61
+ this.registerParser("create:filling", new CreateProcessingRecipeParser());
62
+ this.registerParser("create:cutting", new CreateProcessingRecipeParser());
63
+ this.registerParser("create:item_application", new CreateProcessingRecipeParser());
64
+ this.registerParser("create:sandpaper_polishing", new CreateProcessingRecipeParser());
65
+ this.registerParser("create:deploying", new CreateProcessingRecipeParser());
66
+ this.registerParser("create:splashing", new CreateProcessingRecipeParser());
67
+ this.registerParser("create:haunting", new CreateProcessingRecipeParser());
68
+ this.registerParser("create:mechanical_crafting", new ShapedParser());
69
+ this.registerParser("create:sequenced_assembly", new AssemblyRecipeParser());
70
+ this.registerParser("farmersdelight:cooking", new CookingRecipeParser());
71
+ this.registerParser("farmersdelight:cutting", new CuttingRecipeParser());
72
+ this.registerParser("farmersrespite:brewing", new CookingRecipeParser());
73
+ this.registerParser("thermal:bottler", new ThermalRecipeParser());
74
+ this.registerParser("thermal:centrifuge", new ThermalRecipeParser());
75
+ this.registerParser("thermal:chiller", new ThermalRecipeParser());
76
+ this.registerParser("thermal:crucible", new ThermalRecipeParser());
77
+ this.registerParser("thermal:crystallizer", new ThermalRecipeParser());
78
+ this.registerParser("thermal:furnace", new ThermalRecipeParser());
79
+ this.registerParser("thermal:insolator", new ThermalRecipeParser());
80
+ this.registerParser("thermal:insolator_catalyst", new ThermalCatalystRecipeParser());
81
+ this.registerParser("thermal:press", new ThermalRecipeParser());
82
+ this.registerParser("thermal:pulverizer", new ThermalRecipeParser());
83
+ this.registerParser("thermal:pulverizer_recycle", new ThermalRecipeParser());
84
+ this.registerParser("thermal:pulverizer_catalyst", new ThermalCatalystRecipeParser());
85
+ this.registerParser("thermal:pyrolyzer", new ThermalRecipeParser());
86
+ this.registerParser("thermal:refinery", new ThermalRecipeParser());
87
+ this.registerParser("thermal:sawmill", new ThermalRecipeParser());
88
+ this.registerParser("thermal:smelter", new ThermalRecipeParser());
89
+ this.registerParser("thermal:smelter_recycle", new ThermalRecipeParser());
90
+ this.registerParser("thermal:smelter_catalyst", new ThermalCatalystRecipeParser());
91
+ this.registerParser("thermal:tree_extractor", new TreeExtractionRecipeParser());
92
+ this.registerParser("thermal:compression_fuel", new ThermalFuelRecipeParser());
93
+ this.registerParser("thermal:magmatic_fuel", new ThermalFuelRecipeParser());
94
+ this.registerParser("thermal:gourmand_fuel", new ThermalFuelRecipeParser());
95
+ this.registerParser("thermal:numismatic_fuel", new ThermalFuelRecipeParser());
96
+ this.registerParser("botania:nbt_output_wrapper", new NbtWrapperRecipeParser());
97
+ this.registerParser("botania:orechid", new OrechidRecipeParser());
98
+ this.registerParser("botania:orechid_ignem", new OrechidRecipeParser());
99
+ this.registerParser("botania:marimorphosis", new OrechidRecipeParser());
100
+ this.registerParser("botania:pure_daisy", new PureDaisyRecipeParser());
101
+ this.registerParser("botania:state_copying_pure_daisy", new PureDaisyRecipeParser());
102
+ this.registerParser("botania:mana_upgrade", new ShapedParser());
103
+ this.registerParser("botania:water_bottle_matching_shaped", new ShapedParser());
104
+ this.registerParser("botania:runic_altar", new RunicAltarRecipeParser());
105
+ this.registerParser("botania:runic_altar_head", new RunicAltarRecipeParser());
106
+ this.registerParser("botania:terra_plate", new TerraPlateRecipeParser());
107
+ this.registerParser("botania:elven_trade", new ElvenTradeRecipeParser());
108
+ this.registerParser("botania:brew", new BrewRecipeParser());
109
+ this.registerParser("botania:twig_wand", new ShapedParser());
110
+ this.registerParser("botania:mana_infusion", new ManaInfusionRecipeParser());
111
+ this.registerParser("botania:mana_upgrade_shapeless", new ShapelessParser());
112
+ this.registerParser("botania:armor_upgrade", new ShapedParser());
113
+ this.registerParser("botania:gog_alternation", new GogWrapperRecipeParser());
114
+ this.registerParser("botania:petal_apothecary", new ApothecaryRecipeParser());
115
+ this.registerParser("theoneprobe:probe_helmet", new ShapedParser());
116
+ this.registerParser("forge:conditional", new ForgeConditionalRecipeParser());
117
+ this.registerParser("sullysmod:grindstone_polishing", new GrindstonePolishingParser());
118
+ this.registerParser("ad_astra:hammering", new HammeringRecipeParser());
119
+ this.registerParser("ad_astra:cryo_fuel_conversion", new FluidConversionRecipeParser());
120
+ this.registerParser("ad_astra:fuel_conversion", new FluidConversionRecipeParser());
121
+ this.registerParser("ad_astra:oxygen_conversion", new FluidConversionRecipeParser());
122
+ this.registerParser("ad_astra:compressing", new InputOutputRecipeParser());
123
+ this.registerParser("ad_astra:crafting_shaped_space_suit", new ShapedParser());
124
+ this.registerParser("ad_astra:nasa_workbench", new NasaWorkbenchRecipeParser());
125
+ this.registerParser("ad_astra:space_station", new SpaceStationRecipeParser());
126
+ this.registerParser("quark:exclusion", new QuarkExclusionRecipeParser());
127
+ this.registerParser("patchouli:shapeless_book_recipe", new ShapelessRecipeParser());
128
+ this.registerParser("cofh_core:crafting_shaped_potion", new ShapedParser());
129
+ this.registerParser("rootsclassic:component", new RootComponentRecipeParser());
130
+ this.registerParser("rootsclassic:ritual", new RootRitualRecipeParser());
131
+ this.ignoreType("jeed:effect_provider");
132
+ this.ignoreType("jeed:potion_provider");
133
+ this.ignoreType("pipez:copy_nbt");
134
+ this.ignoreType("pipez:clear_nbt");
135
+ this.ignoreType("refinedstorage:upgrade_with_enchanted_book");
136
+ this.ignoreType("forge:ore_shaped");
137
+ this.ignoreType("supplementaries:trapped_present");
138
+ this.ignoreType("supplementaries:weathered_map");
139
+ this.ignoreType("supplementaries:soap_clearing");
140
+ this.ignoreType("supplementaries:rope_arrow_create");
141
+ this.ignoreType("supplementaries:present_dye");
142
+ this.ignoreType("supplementaries:rope_arrow_add");
143
+ this.ignoreType("supplementaries:item_lore");
144
+ this.ignoreType("supplementaries:flag_from_banner");
145
+ this.ignoreType("supplementaries:bubble_blower_charge");
146
+ this.ignoreType("supplementaries:bamboo_spikes_tipped");
147
+ this.ignoreType("supplementaries:antique_book");
148
+ this.ignoreType("supplementaries:cauldron_flag_dye");
149
+ this.ignoreType("supplementaries:cauldron_flag_clear");
150
+ this.ignoreType("supplementaries:cauldron_blackboard");
151
+ this.ignoreType("quark:mixed_exclusion");
152
+ this.ignoreType("quark:elytra_duplication");
153
+ this.ignoreType("quark:slab_to_block");
154
+ // TODO could to in the future
155
+ this.ignoreType("ad_astra:lunarian_trade_simple");
156
+ this.ignoreType("ad_astra:lunarian_trade_enchanted_item");
157
+ this.ignoreType("ad_astra:lunarian_trade_suspicious_stew");
158
+ this.ignoreType("ad_astra:lunarian_trade_enchanted_book");
159
+ this.ignoreType("ad_astra:lunarian_trade_dyed_item");
160
+ this.ignoreType("ad_astra:lunarian_trade_potioned_item");
161
+ this.ignoreType("immersiveengineering:cloche");
162
+ this.ignoreType("immersiveengineering:crusher");
163
+ this.ignoreType("immersiveengineering:fermenter");
164
+ this.ignoreType("immersiveengineering:metal_press");
165
+ this.ignoreType("immersiveengineering:squeezer");
166
+ this.ignoreType("immersiveengineering:mineral_mix");
167
+ }
168
+ ignoreType(recipeType) {
169
+ this.ignoredRecipeTypes.add(recipeType);
170
+ }
171
+ unknownRecipeTypes() {
172
+ return [...this._unknownRecipeTypes.values()];
173
+ }
174
+ parse(logger, definition) {
175
+ const parser = this.recipeParsers.get(encodeId(definition.type));
176
+ if (!("type" in definition))
177
+ throw new IllegalShapeError("recipe type missing");
178
+ if (Object.keys(definition).length <= 1)
179
+ return null;
180
+ if (this.ignoredRecipeTypes.has(definition.type))
181
+ return null;
182
+ if (!parser) {
183
+ if (!this._unknownRecipeTypes.has(definition.type)) {
184
+ this._unknownRecipeTypes.set(definition.type, definition);
185
+ throw new IllegalShapeError(`unknown recipe type: '${definition.type}'`, definition);
186
+ }
187
+ return null;
188
+ }
189
+ const parsed = parser.create(definition, (it) => {
190
+ const parsed = this.parse(logger, it);
191
+ if (parsed)
192
+ return parsed;
193
+ return new IgnoredRecipe(it);
194
+ });
195
+ // Catch warnings early
196
+ parsed.getResults().forEach((it) => createResult(it));
197
+ parsed.getIngredients().forEach((it) => createIngredient(it));
198
+ return parsed;
199
+ }
200
+ registerParser(recipeType, parser) {
201
+ this.recipeParsers.set(recipeType, parser);
202
+ }
203
+ clear() {
204
+ this._unknownRecipeTypes.clear();
205
+ }
206
+ }
207
+ //# sourceMappingURL=recipe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recipe.js","sourceRoot":"","sources":["../../src/loader/recipe.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { RegistryId } from "@adeficior/data-modifier/generated";
2
+ import type { IResolver, Logger } from "@adeficior/pack-resolver";
3
+ import type { IdInput, NormalizedId } from "../../common/id.js";
4
+ import type { Ingredient } from "../../common/ingredient.js";
5
+ import type RegistryLookup from "./index.js";
6
+ export default class RegistryDumpLoader implements RegistryLookup {
7
+ private readonly logger;
8
+ private readonly registry;
9
+ constructor(logger: Logger);
10
+ extract(resolver: IResolver): Promise<void>;
11
+ private registryOf;
12
+ private readonly accept;
13
+ registries(): NormalizedId<RegistryId>[];
14
+ keys<T extends RegistryId>(registry: IdInput<T>): Set<`${string}:${string}`> | undefined;
15
+ isKnown(registry: IdInput<RegistryId>): boolean;
16
+ validateEntry(registry: RegistryId, id: IdInput): void;
17
+ validate(ingredient: Ingredient): void;
18
+ addCustom(key: RegistryId, input: IdInput): `${string}:${string}`;
19
+ }