@adeficior/data-modifier 1.0.0-rc.38 → 1.0.0-rc.40

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 (99) hide show
  1. package/dist/common/ingredient/index.d.ts +6 -0
  2. package/dist/common/ingredient/index.js +13 -0
  3. package/dist/common/ingredient/index.js.map +1 -1
  4. package/dist/common/result/index.d.ts +6 -0
  5. package/dist/common/result/index.js +13 -0
  6. package/dist/common/result/index.js.map +1 -1
  7. package/dist/error.js +11 -7
  8. package/dist/error.js.map +1 -1
  9. package/dist/index.d.ts +2 -0
  10. package/dist/index.js +2 -0
  11. package/dist/index.js.map +1 -1
  12. package/dist/loader/context.d.ts +2 -2
  13. package/dist/loader/pack.d.ts +1 -1
  14. package/dist/loader/pack.js +4 -4
  15. package/dist/loader/pack.js.map +1 -1
  16. package/dist/loader/recipe.js +9 -5
  17. package/dist/loader/recipe.js.map +1 -1
  18. package/dist/parser/recipe/adAstra/inputOutput.js +1 -0
  19. package/dist/parser/recipe/adAstra/inputOutput.js.map +1 -1
  20. package/dist/parser/recipe/botania/blocks.d.ts +14 -8
  21. package/dist/parser/recipe/botania/blocks.js +39 -62
  22. package/dist/parser/recipe/botania/blocks.js.map +1 -1
  23. package/dist/parser/recipe/botania/gogWrapper.d.ts +2 -2
  24. package/dist/parser/recipe/botania/manaInfusion.d.ts +3 -0
  25. package/dist/parser/recipe/botania/manaInfusion.js +6 -5
  26. package/dist/parser/recipe/botania/manaInfusion.js.map +1 -1
  27. package/dist/parser/recipe/botania/nbtWrapper.d.ts +2 -2
  28. package/dist/parser/recipe/botania/pureDaisy.d.ts +4 -0
  29. package/dist/parser/recipe/botania/pureDaisy.js +15 -0
  30. package/dist/parser/recipe/botania/pureDaisy.js.map +1 -1
  31. package/dist/parser/recipe/create/assembly.d.ts +1 -0
  32. package/dist/parser/recipe/create/assembly.js +5 -2
  33. package/dist/parser/recipe/create/assembly.js.map +1 -1
  34. package/dist/parser/recipe/forge/conditional.d.ts +2 -2
  35. package/dist/parser/recipe/index.d.ts +9 -3
  36. package/dist/parser/recipe/index.js +17 -2
  37. package/dist/parser/recipe/index.js.map +1 -1
  38. package/dist/parser/recipe/ingredientMap.d.ts +2 -5
  39. package/dist/parser/recipe/ingredientMap.js +0 -3
  40. package/dist/parser/recipe/ingredientMap.js.map +1 -1
  41. package/dist/parser/recipe/thermal/index.d.ts +3 -0
  42. package/dist/parser/recipe/thermal/index.js +5 -3
  43. package/dist/parser/recipe/thermal/index.js.map +1 -1
  44. package/dist/parser/recipe/thermal/module.d.ts +4 -0
  45. package/dist/parser/recipe/thermal/module.js +36 -0
  46. package/dist/parser/recipe/thermal/module.js.map +1 -0
  47. package/dist/parser/recipe/vanilla/shaped.d.ts +1 -1
  48. package/dist/parser/recipe/vanilla/shaped.js +2 -2
  49. package/dist/parser/recipe/vanilla/shaped.js.map +1 -1
  50. package/dist/serializer/checks.d.ts +2 -0
  51. package/dist/serializer/checks.js +13 -0
  52. package/dist/serializer/checks.js.map +1 -0
  53. package/dist/serializer/index.d.ts +23 -0
  54. package/dist/serializer/index.js +19 -0
  55. package/dist/serializer/index.js.map +1 -0
  56. package/dist/serializer/ingredients/15.d.ts +2 -0
  57. package/dist/{common/ingredient/serializer.js → serializer/ingredients/15.js} +9 -26
  58. package/dist/serializer/ingredients/15.js.map +1 -0
  59. package/dist/serializer/ingredients/44.d.ts +2 -0
  60. package/dist/serializer/ingredients/44.js +46 -0
  61. package/dist/serializer/ingredients/44.js.map +1 -0
  62. package/dist/serializer/ingredients/common.d.ts +3 -0
  63. package/dist/serializer/ingredients/common.js +13 -0
  64. package/dist/serializer/ingredients/common.js.map +1 -0
  65. package/dist/serializer/ingredients/index.d.ts +20 -0
  66. package/dist/serializer/ingredients/index.js +36 -0
  67. package/dist/serializer/ingredients/index.js.map +1 -0
  68. package/dist/serializer/module.d.ts +23 -0
  69. package/dist/serializer/module.js +42 -0
  70. package/dist/serializer/module.js.map +1 -0
  71. package/dist/serializer/results/15.d.ts +2 -0
  72. package/dist/{common/result/serializer.js → serializer/results/15.js} +9 -14
  73. package/dist/serializer/results/15.js.map +1 -0
  74. package/dist/serializer/results/44.d.ts +2 -0
  75. package/dist/serializer/results/44.js +21 -0
  76. package/dist/serializer/results/44.js.map +1 -0
  77. package/dist/serializer/results/common.d.ts +3 -0
  78. package/dist/serializer/results/common.js +6 -0
  79. package/dist/serializer/results/common.js.map +1 -0
  80. package/dist/serializer/results/index.d.ts +6 -0
  81. package/dist/serializer/results/index.js +21 -0
  82. package/dist/serializer/results/index.js.map +1 -0
  83. package/dist/serializer/versioned.d.ts +19 -0
  84. package/dist/serializer/versioned.js +55 -0
  85. package/dist/serializer/versioned.js.map +1 -0
  86. package/dist/serializer/wrapped.d.ts +12 -0
  87. package/dist/serializer/wrapped.js +32 -0
  88. package/dist/serializer/wrapped.js.map +1 -0
  89. package/package.json +1 -1
  90. package/dist/common/ingredient/serializer.d.ts +0 -9
  91. package/dist/common/ingredient/serializer.js.map +0 -1
  92. package/dist/common/result/serializer.d.ts +0 -7
  93. package/dist/common/result/serializer.js.map +0 -1
  94. package/dist/common/serializer.d.ts +0 -35
  95. package/dist/common/serializer.js +0 -110
  96. package/dist/common/serializer.js.map +0 -1
  97. package/dist/parser/recipe/thermal/ingredient.d.ts +0 -4
  98. package/dist/parser/recipe/thermal/ingredient.js +0 -51
  99. package/dist/parser/recipe/thermal/ingredient.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"pureDaisy.js","sourceRoot":"","sources":["../../../../src/parser/recipe/botania/pureDaisy.ts"],"names":[],"mappings":"AAAA,OAAO,wBAAwB,EAAE,EAEhC,MAAM,aAAa,CAAC;AAIrB,MAAM,OAAO,qBAAsB,SAAQ,wBAAmD;CAAG"}
1
+ {"version":3,"file":"pureDaisy.js","sourceRoot":"","sources":["../../../../src/parser/recipe/botania/pureDaisy.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAe,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,wBAAwB,EAAE,EAEhC,MAAM,aAAa,CAAC;AAIrB,MAAM,kBAAkB,GAAG,sBAAsB,CAAS,CAAC,OAAO,EAAE,EAAE;IACpE,OAAO,CAAC,QAAQ,CACd,WAAW,EACX,YAAY,CAAC,MAAM,CAAC,EACpB,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,QAAQ;KACf,CAAC,EACF,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,EACnC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAC3B,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,MAAM,OAAO,qBAAsB,SAAQ,wBAAmD;IACnF,aAAa;QACpB,OAAO;YACL,EAAE,EAAE,kBAAkB;SACvB,CAAC;IACJ,CAAC;CACF"}
@@ -6,6 +6,7 @@ import RecipeParser, { Recipe } from "../index.js";
6
6
  export type AssemblyRecipeDefinition = RecipeDefinition & Readonly<{
7
7
  ingredient: unknown;
8
8
  transitionalItem: unknown;
9
+ transitional_item: unknown;
9
10
  results: unknown[];
10
11
  loops?: number;
11
12
  sequence: RecipeDefinition[];
@@ -27,7 +27,7 @@ export class AssemblyRecipe extends Recipe {
27
27
  serialize(context) {
28
28
  return {
29
29
  ingredient: context.ingredients.serialize(this.ingredient),
30
- transitionalItem: context.ingredients.serialize(this.transitionalItem),
30
+ transitionalItem: context.results.serialize(this.transitionalItem.asResult()),
31
31
  results: context.results.serializeList(this.results),
32
32
  sequence: this.sequence.map((it) => context.recipes.serialize(it)),
33
33
  };
@@ -36,7 +36,10 @@ export class AssemblyRecipe extends Recipe {
36
36
  export class AssemblyRecipeParser extends RecipeParser {
37
37
  deserialize(definition, context) {
38
38
  const ingredient = context.ingredients.deserialize(definition.ingredient);
39
- const transitionalItem = context.ingredients.deserialize(definition.transitionalItem);
39
+ const rawTransitionalItem = definition.transitionalItem ?? definition.transitional_item;
40
+ const transitionalItem = context.results
41
+ .deserialize(rawTransitionalItem)
42
+ .asIngredient();
40
43
  const results = context.results.deserializeList(definition.results);
41
44
  const sequence = definition.sequence.map((it) => context.recipes.deserialize(it));
42
45
  return new AssemblyRecipe(ingredient, transitionalItem, results, sequence);
@@ -1 +1 @@
1
- {"version":3,"file":"assembly.js","sourceRoot":"","sources":["../../../../src/parser/recipe/create/assembly.ts"],"names":[],"mappings":"AAQA,OAAO,YAAY,EAAE,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAWnD,MAAM,OAAO,cAAe,SAAQ,MAAM;IAErB;IACA;IACA;IACA;IAJnB,YACmB,UAAsB,EACtB,gBAA4B,EAC5B,OAAiB,EACjB,QAAwB;QAEzC,KAAK,EAAE,CAAC;QALS,eAAU,GAAV,UAAU,CAAY;QACtB,qBAAgB,GAAhB,gBAAgB,CAAY;QAC5B,YAAO,GAAP,OAAO,CAAU;QACjB,aAAQ,GAAR,QAAQ,CAAgB;IAG3C,CAAC;IAED,cAAc;QACZ,OAAO;YACL,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,gBAAgB;YACrB,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC;SACtD,CAAC;IACJ,CAAC;IAED,UAAU;QACR,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC9E,CAAC;IAEQ,MAAM,CAAC,QAAwB;QACtC,OAAO,IAAI,cAAc,CACvB,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EACpC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAC1C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAC/C,CAAC;IACJ,CAAC;IAEQ,SAAS,CAChB,OAA2B;QAE3B,OAAO;YACL,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;YAC1D,gBAAgB,EAAE,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC;YACtE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;YACpD,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;SACnE,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,oBAAqB,SAAQ,YAGzC;IACC,WAAW,CACT,UAAoC,EACpC,OAA2B;QAE3B,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC1E,MAAM,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW,CACtD,UAAU,CAAC,gBAAgB,CAC5B,CAAC;QACF,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACpE,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAC9C,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAChC,CAAC;QACF,OAAO,IAAI,cAAc,CAAC,UAAU,EAAE,gBAAgB,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC7E,CAAC;CACF"}
1
+ {"version":3,"file":"assembly.js","sourceRoot":"","sources":["../../../../src/parser/recipe/create/assembly.ts"],"names":[],"mappings":"AAQA,OAAO,YAAY,EAAE,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAYnD,MAAM,OAAO,cAAe,SAAQ,MAAM;IAErB;IACA;IACA;IACA;IAJnB,YACmB,UAAsB,EACtB,gBAA4B,EAC5B,OAAiB,EACjB,QAAwB;QAEzC,KAAK,EAAE,CAAC;QALS,eAAU,GAAV,UAAU,CAAY;QACtB,qBAAgB,GAAhB,gBAAgB,CAAY;QAC5B,YAAO,GAAP,OAAO,CAAU;QACjB,aAAQ,GAAR,QAAQ,CAAgB;IAG3C,CAAC;IAED,cAAc;QACZ,OAAO;YACL,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,gBAAgB;YACrB,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC;SACtD,CAAC;IACJ,CAAC;IAED,UAAU;QACR,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC9E,CAAC;IAEQ,MAAM,CAAC,QAAwB;QACtC,OAAO,IAAI,cAAc,CACvB,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EACpC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAC1C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAC/C,CAAC;IACJ,CAAC;IAEQ,SAAS,CAChB,OAA2B;QAE3B,OAAO;YACL,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;YAC1D,gBAAgB,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,CACzC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CACjC;YACD,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;YACpD,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;SACnE,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,oBAAqB,SAAQ,YAGzC;IACC,WAAW,CACT,UAAoC,EACpC,OAA2B;QAE3B,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAE1E,MAAM,mBAAmB,GACvB,UAAU,CAAC,gBAAgB,IAAI,UAAU,CAAC,iBAAiB,CAAC;QAC9D,MAAM,gBAAgB,GAAG,OAAO,CAAC,OAAO;aACrC,WAAW,CAAC,mBAAmB,CAAC;aAChC,YAAY,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACpE,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAC9C,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAChC,CAAC;QACF,OAAO,IAAI,cAAc,CAAC,UAAU,EAAE,gBAAgB,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC7E,CAAC;CACF"}
@@ -11,8 +11,8 @@ export type ForgeConditionalRecipeDefinition = RecipeDefinition & Readonly<{
11
11
  export declare class ForgeConditionalRecipe extends Recipe {
12
12
  private readonly recipes;
13
13
  constructor(recipes: WithConditions<RecipeHolder>[]);
14
- getIngredients(): import("../../../common/ingredient/index.js").Ingredient[];
15
- getResults(): import("../../../common/result/index.js").Result[];
14
+ getIngredients(): import("../../../index.js").Ingredient[];
15
+ getResults(): import("../../../index.js").Result[];
16
16
  modify(modifier: RecipeModifier): ForgeConditionalRecipe;
17
17
  serialize(context: RecipeParseContext): Partial<ForgeConditionalRecipeDefinition>;
18
18
  additionalTypes(): `${string}:${string}`[];
@@ -4,17 +4,19 @@ import type { Ingredient } from "../../common/ingredient/index.js";
4
4
  import type { Result } from "../../common/result/index.js";
5
5
  import type { PackContext } from "../../loader/context.js";
6
6
  import type { RecipeDefinition } from "../../schema/data/recipe.js";
7
+ import type { WithSerializerModules } from "../../serializer/module.js";
7
8
  export type Replacer<T> = (value: T) => T;
8
9
  export declare function createReplacer<T>(from: Predicate<T>, to: T): Replacer<T>;
9
10
  export type RecipeModifier = {
10
11
  result: Replacer<Result>;
11
12
  ingredient: Replacer<Ingredient>;
12
13
  };
13
- export declare class RecipeHolder {
14
+ export declare class RecipeHolder implements WithSerializerModules {
14
15
  private readonly definition;
15
16
  private readonly recipe;
17
+ private readonly modules?;
16
18
  private readonly type;
17
- constructor(definition: RecipeDefinition, recipe: Recipe);
19
+ constructor(definition: RecipeDefinition, recipe: Recipe, modules?: WithSerializerModules | undefined);
18
20
  serialize(context: RecipeParseContext): {
19
21
  type: import("@adeficior/data-modifier/generated").RecipeSerializerId;
20
22
  conditions?: import("../../index.js").ForgeCondition[];
@@ -26,6 +28,8 @@ export declare class RecipeHolder {
26
28
  replaceIngredient(replace: Replacer<Ingredient>): RecipeHolder;
27
29
  replaceResult(replace: Replacer<Result>): RecipeHolder;
28
30
  getTypes(): NormalizedId[];
31
+ ingredientModules(): Record<string, import("../../serializer/module.js").SerializerModule<Ingredient, unknown>>;
32
+ resultModules(): Record<string, import("../../serializer/module.js").SerializerModule<Result, unknown>>;
29
33
  }
30
34
  export declare abstract class Recipe {
31
35
  abstract getIngredients(): Ingredient[];
@@ -41,6 +45,8 @@ export type RecipeSerializer = {
41
45
  export type RecipeParseContext = Pick<PackContext, "ingredients" | "results"> & {
42
46
  recipes: RecipeSerializer;
43
47
  };
44
- export default abstract class RecipeParser<TDefinition extends RecipeDefinition, TRecipe extends Recipe> {
48
+ export default abstract class RecipeParser<TDefinition extends RecipeDefinition = RecipeDefinition, TRecipe extends Recipe = Recipe> implements WithSerializerModules {
49
+ ingredientModules(): {};
50
+ resultModules(): {};
45
51
  abstract deserialize(definition: TDefinition, context: RecipeParseContext): TRecipe;
46
52
  }
@@ -12,10 +12,12 @@ function keep() {
12
12
  export class RecipeHolder {
13
13
  definition;
14
14
  recipe;
15
+ modules;
15
16
  type;
16
- constructor(definition, recipe) {
17
+ constructor(definition, recipe, modules) {
17
18
  this.definition = definition;
18
19
  this.recipe = recipe;
20
+ this.modules = modules;
19
21
  this.type = encodeId(definition.type);
20
22
  }
21
23
  serialize(context) {
@@ -32,7 +34,7 @@ export class RecipeHolder {
32
34
  }
33
35
  modify(modifier) {
34
36
  const modified = this.recipe.modify(modifier);
35
- return new RecipeHolder(this.definition, modified);
37
+ return new RecipeHolder(this.definition, modified, this.modules);
36
38
  }
37
39
  replaceIngredient(replace) {
38
40
  return this.modify({
@@ -49,6 +51,13 @@ export class RecipeHolder {
49
51
  getTypes() {
50
52
  return [this.type, ...this.recipe.additionalTypes()];
51
53
  }
54
+ ingredientModules() {
55
+ return this.modules?.ingredientModules() ?? {};
56
+ }
57
+ resultModules() {
58
+ // TODO this will not work with custom recipes, serialize needs to be done by RecipeParser
59
+ return this.modules?.resultModules() ?? {};
60
+ }
52
61
  }
53
62
  export class Recipe {
54
63
  additionalTypes() {
@@ -56,5 +65,11 @@ export class Recipe {
56
65
  }
57
66
  }
58
67
  export default class RecipeParser {
68
+ ingredientModules() {
69
+ return {};
70
+ }
71
+ resultModules() {
72
+ return {};
73
+ }
59
74
  }
60
75
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/parser/recipe/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAqB,MAAM,oBAAoB,CAAC;AAQjE,MAAM,UAAU,cAAc,CAAI,IAAkB,EAAE,EAAK;IACzD,OAAO,CAAC,EAAK,EAAE,EAAE;QACf,IAAI,IAAI,CAAC,EAAE,CAAC;YAAE,OAAO,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,IAAI;IACX,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAClB,CAAC;AAOD,MAAM,OAAO,YAAY;IAIJ;IACA;IAJF,IAAI,CAAe;IAEpC,YACmB,UAA4B,EAC5B,MAAc;QADd,eAAU,GAAV,UAAU,CAAkB;QAC5B,WAAM,GAAN,MAAM,CAAQ;QAE/B,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,SAAS,CAAC,OAA2B;QACnC,OAAO;YACL,GAAG,IAAI,CAAC,UAAU;YAClB,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC;SAClC,CAAC;IACJ,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;IACtC,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IAClC,CAAC;IAED,MAAM,CAAC,QAAwB;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC9C,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC;IAED,iBAAiB,CAAC,OAA6B;QAC7C,OAAO,IAAI,CAAC,MAAM,CAAC;YACjB,UAAU,EAAE,OAAO;YACnB,MAAM,EAAE,IAAI,EAAE;SACf,CAAC,CAAC;IACL,CAAC;IAED,aAAa,CAAC,OAAyB;QACrC,OAAO,IAAI,CAAC,MAAM,CAAC;YACjB,UAAU,EAAE,IAAI,EAAE;YAClB,MAAM,EAAE,OAAO;SAChB,CAAC,CAAC;IACL,CAAC;IAED,QAAQ;QACN,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;IACvD,CAAC;CACF;AAED,MAAM,OAAgB,MAAM;IAO1B,eAAe;QACb,OAAO,EAAE,CAAC;IACZ,CAAC;CAGF;AAcD,MAAM,CAAC,OAAO,OAAgB,YAAY;CAQzC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/parser/recipe/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAqB,MAAM,oBAAoB,CAAC;AASjE,MAAM,UAAU,cAAc,CAAI,IAAkB,EAAE,EAAK;IACzD,OAAO,CAAC,EAAK,EAAE,EAAE;QACf,IAAI,IAAI,CAAC,EAAE,CAAC;YAAE,OAAO,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,IAAI;IACX,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAClB,CAAC;AAOD,MAAM,OAAO,YAAY;IAIJ;IACA;IACA;IALF,IAAI,CAAe;IAEpC,YACmB,UAA4B,EAC5B,MAAc,EACd,OAA+B;QAF/B,eAAU,GAAV,UAAU,CAAkB;QAC5B,WAAM,GAAN,MAAM,CAAQ;QACd,YAAO,GAAP,OAAO,CAAwB;QAEhD,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,SAAS,CAAC,OAA2B;QACnC,OAAO;YACL,GAAG,IAAI,CAAC,UAAU;YAClB,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC;SAClC,CAAC;IACJ,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;IACtC,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IAClC,CAAC;IAED,MAAM,CAAC,QAAwB;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC9C,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACnE,CAAC;IAED,iBAAiB,CAAC,OAA6B;QAC7C,OAAO,IAAI,CAAC,MAAM,CAAC;YACjB,UAAU,EAAE,OAAO;YACnB,MAAM,EAAE,IAAI,EAAE;SACf,CAAC,CAAC;IACL,CAAC;IAED,aAAa,CAAC,OAAyB;QACrC,OAAO,IAAI,CAAC,MAAM,CAAC;YACjB,UAAU,EAAE,IAAI,EAAE;YAClB,MAAM,EAAE,OAAO;SAChB,CAAC,CAAC;IACL,CAAC;IAED,QAAQ;QACN,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;IACjD,CAAC;IAED,aAAa;QACX,0FAA0F;QAC1F,OAAO,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;IAC7C,CAAC;CACF;AAED,MAAM,OAAgB,MAAM;IAO1B,eAAe;QACb,OAAO,EAAE,CAAC;IACZ,CAAC;CAGF;AAcD,MAAM,CAAC,OAAO,OAAgB,YAAY;IAIxC,iBAAiB;QACf,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,aAAa;QACX,OAAO,EAAE,CAAC;IACZ,CAAC;CAMF"}
@@ -1,12 +1,9 @@
1
- import type { RecipeParseContext, Replacer } from ".";
1
+ import type { Replacer } from ".";
2
2
  import type { Ingredient } from "../../common/ingredient";
3
3
  export type IngredientMapInput = Record<string, unknown>;
4
4
  export declare class IngredientMap {
5
- private readonly ingredients;
5
+ readonly ingredients: Record<string, Ingredient>;
6
6
  constructor(ingredients: Record<string, Ingredient>);
7
7
  list(): Ingredient[];
8
8
  replace(replace: Replacer<Ingredient>): IngredientMap;
9
- serialize(context: RecipeParseContext): {
10
- [x: string]: unknown;
11
- };
12
9
  }
@@ -10,8 +10,5 @@ export class IngredientMap {
10
10
  replace(replace) {
11
11
  return new IngredientMap(mapValues(this.ingredients, replace));
12
12
  }
13
- serialize(context) {
14
- return mapValues(this.ingredients, (it) => context.ingredients.serialize(it));
15
- }
16
13
  }
17
14
  //# sourceMappingURL=ingredientMap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ingredientMap.js","sourceRoot":"","sources":["../../../src/parser/recipe/ingredientMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAMtC,MAAM,OAAO,aAAa;IACK;IAA7B,YAA6B,WAAuC;QAAvC,gBAAW,GAAX,WAAW,CAA4B;IAAG,CAAC;IAExE,IAAI;QACF,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,CAAC,OAA6B;QACnC,OAAO,IAAI,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,SAAS,CAAC,OAA2B;QACnC,OAAO,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,CACxC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,CAClC,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"ingredientMap.js","sourceRoot":"","sources":["../../../src/parser/recipe/ingredientMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAMtC,MAAM,OAAO,aAAa;IACI;IAA5B,YAA4B,WAAuC;QAAvC,gBAAW,GAAX,WAAW,CAA4B;IAAG,CAAC;IAEvE,IAAI;QACF,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,CAAC,OAA6B;QACnC,OAAO,IAAI,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IACjE,CAAC;CACF"}
@@ -20,5 +20,8 @@ export declare class ThermalRecipe extends Recipe {
20
20
  serialize(context: RecipeParseContext): Partial<ThermalRecipeDefinition>;
21
21
  }
22
22
  export declare class ThermalRecipeParser extends RecipeParser<ThermalRecipeDefinition, ThermalRecipe> {
23
+ ingredientModules(): {
24
+ 15: import("../../../serializer/module.js").SerializerModule<Ingredient, unknown>;
25
+ };
23
26
  deserialize(definition: ThermalRecipeDefinition, context: RecipeParseContext): ThermalRecipe;
24
27
  }
@@ -1,6 +1,6 @@
1
1
  import { IllegalShapeError } from "../../../error.js";
2
2
  import RecipeParser, { Recipe } from "../index.js";
3
- import { createThermalIngredients } from "./ingredient.js";
3
+ import { ingredientSerializerModules } from "./module.js";
4
4
  export class ThermalRecipe extends Recipe {
5
5
  ingredients;
6
6
  results;
@@ -32,14 +32,16 @@ export class ThermalRecipe extends Recipe {
32
32
  }
33
33
  }
34
34
  export class ThermalRecipeParser extends RecipeParser {
35
+ ingredientModules() {
36
+ return ingredientSerializerModules;
37
+ }
35
38
  deserialize(definition, context) {
36
- // TODO map from and to thermals shape
37
39
  const rawIngredients = definition.ingredient
38
40
  ? [definition.ingredient]
39
41
  : (definition.ingredients ?? []);
40
42
  if (rawIngredients.length === 0)
41
43
  throw new IllegalShapeError("ingredients missing or empty", definition);
42
- const ingredients = rawIngredients.flatMap((it) => createThermalIngredients(context.ingredients, it));
44
+ const ingredients = context.ingredients.deserializeList(rawIngredients);
43
45
  const results = Array.isArray(definition.result)
44
46
  ? context.results.deserializeList(definition.result)
45
47
  : [context.results.deserialize(definition.result)];
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/parser/recipe/thermal/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGtD,OAAO,YAAY,EAAE,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAe3D,MAAM,OAAO,aAAc,SAAQ,MAAM;IAEpB;IACA;IAFnB,YACmB,WAAyB,EACzB,OAAiB;QAElC,KAAK,EAAE,CAAC;QAHS,gBAAW,GAAX,WAAW,CAAc;QACzB,YAAO,GAAP,OAAO,CAAU;IAGpC,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEQ,MAAM,CAAC,QAAwB;QACtC,OAAO,IAAI,aAAa,CACtB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EACzC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAClC,CAAC;IACJ,CAAC;IAEQ,SAAS,CAChB,OAA2B;QAE3B,MAAM,UAAU,GAAgD;YAC9D,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;SACpD,CAAC;QAEF,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,UAAU,CAAC,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,CACnD,IAAI,CAAC,WAAW,CAAC,CAAC,CAAE,CACrB,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,aAAa,CACxD,IAAI,CAAC,WAAW,CACjB,CAAC;QACJ,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,YAGxC;IACC,WAAW,CACT,UAAmC,EACnC,OAA2B;QAE3B,sCAAsC;QAEtC,MAAM,cAAc,GAAG,UAAU,CAAC,UAAU;YAC1C,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;YACzB,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;QAEnC,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;YAC7B,MAAM,IAAI,iBAAiB,CAAC,8BAA8B,EAAE,UAAU,CAAC,CAAC;QAE1E,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAChD,wBAAwB,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAClD,CAAC;QAEF,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC;YAC9C,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC;YACpD,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QAErD,OAAO,IAAI,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;CACF"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/parser/recipe/thermal/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGtD,OAAO,YAAY,EAAE,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAe1D,MAAM,OAAO,aAAc,SAAQ,MAAM;IAEpB;IACA;IAFnB,YACmB,WAAyB,EACzB,OAAiB;QAElC,KAAK,EAAE,CAAC;QAHS,gBAAW,GAAX,WAAW,CAAc;QACzB,YAAO,GAAP,OAAO,CAAU;IAGpC,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEQ,MAAM,CAAC,QAAwB;QACtC,OAAO,IAAI,aAAa,CACtB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EACzC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAClC,CAAC;IACJ,CAAC;IAEQ,SAAS,CAChB,OAA2B;QAE3B,MAAM,UAAU,GAAgD;YAC9D,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;SACpD,CAAC;QAEF,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,UAAU,CAAC,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,CACnD,IAAI,CAAC,WAAW,CAAC,CAAC,CAAE,CACrB,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,aAAa,CACxD,IAAI,CAAC,WAAW,CACjB,CAAC;QACJ,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,YAGxC;IACU,iBAAiB;QACxB,OAAO,2BAA2B,CAAC;IACrC,CAAC;IAED,WAAW,CACT,UAAmC,EACnC,OAA2B;QAE3B,MAAM,cAAc,GAAG,UAAU,CAAC,UAAU;YAC1C,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;YACzB,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;QAEnC,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;YAC7B,MAAM,IAAI,iBAAiB,CAAC,8BAA8B,EAAE,UAAU,CAAC,CAAC;QAE1E,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QAExE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC;YAC9C,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC;YACpD,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QAErD,OAAO,IAAI,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;CACF"}
@@ -0,0 +1,4 @@
1
+ import { type Ingredient } from "../../../common/ingredient";
2
+ export declare const ingredientSerializerModules: {
3
+ 15: import("../../../serializer/module.js").SerializerModule<Ingredient, unknown>;
4
+ };
@@ -0,0 +1,36 @@
1
+ import z from "zod";
2
+ import { AmountSchema, CountSchema } from "../../../common/fields.js";
3
+ import { IdSchema } from "../../../common/id.js";
4
+ import { FluidTagIngredient, ItemIngredient, ItemTagIngredient, ListIngredient, } from "../../../common/ingredient";
5
+ import { isObjectWith } from "../../../serializer/checks.js";
6
+ import { createSerializerModule } from "../../../serializer/module.js";
7
+ const ThermalFluidTagSchema = z.object({
8
+ fluid_tag: IdSchema,
9
+ amount: AmountSchema,
10
+ });
11
+ const ThermalItemEntry = z.object({
12
+ item: IdSchema,
13
+ });
14
+ const ThermalTagEntry = z.object({
15
+ tag: IdSchema,
16
+ });
17
+ const ThermalIngredientEntry = ThermalItemEntry.or(ThermalTagEntry);
18
+ const ThermalIngredientList = z.object({
19
+ value: z.array(ThermalIngredientEntry),
20
+ count: CountSchema,
21
+ });
22
+ const ingredientSerializer15 = createSerializerModule((builder) => {
23
+ builder.deserializer(isObjectWith("value"), (input) => {
24
+ const { value, count } = ThermalIngredientList.parse(input);
25
+ return new ListIngredient(value.map((it) => {
26
+ if ("item" in it)
27
+ return new ItemIngredient(it.item, count);
28
+ return new ItemTagIngredient(it.tag, count);
29
+ }));
30
+ });
31
+ builder.register(FluidTagIngredient, isObjectWith("fluid_tag"), ThermalFluidTagSchema, ({ fluid_tag, amount }) => new FluidTagIngredient(fluid_tag, amount), ({ tag, amount }) => ({ fluid_tag: tag, amount }));
32
+ });
33
+ export const ingredientSerializerModules = {
34
+ 15: ingredientSerializer15,
35
+ };
36
+ //# sourceMappingURL=module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../../../../src/parser/recipe/thermal/module.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,cAAc,GAEf,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,SAAS,EAAE,QAAQ;IACnB,MAAM,EAAE,YAAY;CACrB,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,IAAI,EAAE,QAAQ;CACf,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,GAAG,EAAE,QAAQ;CACd,CAAC,CAAC;AAEH,MAAM,sBAAsB,GAAG,gBAAgB,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC;AACpE,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC;IACtC,KAAK,EAAE,WAAW;CACnB,CAAC,CAAC;AAEH,MAAM,sBAAsB,GAAG,sBAAsB,CAAa,CAAC,OAAO,EAAE,EAAE;IAC5E,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE;QACpD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5D,OAAO,IAAI,cAAc,CACvB,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;YACf,IAAI,MAAM,IAAI,EAAE;gBAAE,OAAO,IAAI,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC5D,OAAO,IAAI,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,QAAQ,CACd,kBAAkB,EAClB,YAAY,CAAC,WAAW,CAAC,EACzB,qBAAqB,EACrB,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,IAAI,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,EACpE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAClD,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,EAAE,EAAE,sBAAsB;CAC3B,CAAC"}
@@ -12,7 +12,7 @@ export declare class ShapedRecipe extends Recipe {
12
12
  private readonly ingredients;
13
13
  private readonly result;
14
14
  constructor(ingredients: IngredientMap, result: Result);
15
- getIngredients(): import("../../../common/ingredient/index.js").Ingredient[];
15
+ getIngredients(): import("../../../index.js").Ingredient[];
16
16
  getResults(): Result[];
17
17
  modify(modifier: RecipeModifier): ShapedRecipe;
18
18
  serialize(context: RecipeParseContext): Partial<ShapedRecipeDefinition>;
@@ -18,14 +18,14 @@ export class ShapedRecipe extends Recipe {
18
18
  }
19
19
  serialize(context) {
20
20
  return {
21
- key: this.ingredients.serialize(context),
21
+ key: context.ingredients.serializeIngredientMap(this.ingredients),
22
22
  result: context.results.serialize(this.result),
23
23
  };
24
24
  }
25
25
  }
26
26
  export class ShapedParser extends RecipeParser {
27
27
  deserialize(definition, context) {
28
- const ingredients = context.ingredients.ingredientMap(definition.key);
28
+ const ingredients = context.ingredients.deserializeIngredientMap(definition.key);
29
29
  const result = context.results.deserialize(definition.result);
30
30
  return new ShapedRecipe(ingredients, result);
31
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"shaped.js","sourceRoot":"","sources":["../../../../src/parser/recipe/vanilla/shaped.ts"],"names":[],"mappings":"AAGA,OAAO,YAAY,EAAE,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAUnD,MAAM,OAAO,YAAa,SAAQ,MAAM;IAEnB;IACA;IAFnB,YACmB,WAA0B,EAC1B,MAAc;QAE/B,KAAK,EAAE,CAAC;QAHS,gBAAW,GAAX,WAAW,CAAe;QAC1B,WAAM,GAAN,MAAM,CAAQ;IAGjC,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC;IAED,UAAU;QACR,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAEQ,MAAM,CAAC,QAAwB;QACtC,OAAO,IAAI,YAAY,CACrB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAC7C,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAC7B,CAAC;IACJ,CAAC;IAEQ,SAAS,CAChB,OAA2B;QAE3B,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC;YACxC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;SAC/C,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,YAGjC;IACC,WAAW,CACT,UAAkC,EAClC,OAA2B;QAE3B,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACtE,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC9D,OAAO,IAAI,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;CACF"}
1
+ {"version":3,"file":"shaped.js","sourceRoot":"","sources":["../../../../src/parser/recipe/vanilla/shaped.ts"],"names":[],"mappings":"AAGA,OAAO,YAAY,EAAE,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAUnD,MAAM,OAAO,YAAa,SAAQ,MAAM;IAEnB;IACA;IAFnB,YACmB,WAA0B,EAC1B,MAAc;QAE/B,KAAK,EAAE,CAAC;QAHS,gBAAW,GAAX,WAAW,CAAe;QAC1B,WAAM,GAAN,MAAM,CAAQ;IAGjC,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC;IAED,UAAU;QACR,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAEQ,MAAM,CAAC,QAAwB;QACtC,OAAO,IAAI,YAAY,CACrB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAC7C,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAC7B,CAAC;IACJ,CAAC;IAEQ,SAAS,CAChB,OAA2B;QAE3B,OAAO;YACL,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC,sBAAsB,CAAC,IAAI,CAAC,WAAW,CAAC;YACjE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;SAC/C,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,YAGjC;IACC,WAAW,CACT,UAAkC,EAClC,OAA2B;QAE3B,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,wBAAwB,CAC9D,UAAU,CAAC,GAAG,CACf,CAAC;QACF,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC9D,OAAO,IAAI,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export declare function isObjectWith(property: string): (input: unknown) => input is Record<string, unknown>;
2
+ export declare function hasType(type: string): (input: unknown) => input is Record<string, unknown>;
@@ -0,0 +1,13 @@
1
+ export function isObjectWith(property) {
2
+ return (input) => input !== undefined &&
3
+ input !== null &&
4
+ typeof input === "object" &&
5
+ property in input;
6
+ }
7
+ export function hasType(type) {
8
+ const hasType = isObjectWith("type");
9
+ return (input) => {
10
+ return hasType(input) && input.type === type;
11
+ };
12
+ }
13
+ //# sourceMappingURL=checks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checks.js","sourceRoot":"","sources":["../../src/serializer/checks.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,OAAO,CAAC,KAAc,EAAoC,EAAE,CAC1D,KAAK,KAAK,SAAS;QACnB,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,QAAQ;QACzB,QAAQ,IAAI,KAAK,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACrC,OAAO,CAAC,KAAc,EAAoC,EAAE;QAC1D,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;IAC/C,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { SerializerModule } from "./module";
2
+ export interface Serializer<Out, S extends Serializer<Out, S>> {
3
+ serialize(output: Out): unknown;
4
+ serializeList(outputs: Out[]): unknown[];
5
+ serializeOptional(output: Out | undefined): unknown;
6
+ deserialize(input: unknown): Out;
7
+ deserializeOptional(input: unknown): Out | undefined;
8
+ deserializeList(input: unknown[]): Out[];
9
+ validated<T extends Out>(output: T): T;
10
+ withModule(module: SerializerModule<Out>): S;
11
+ selectModule(module: Record<string, SerializerModule<Out, unknown>>): S;
12
+ }
13
+ export declare abstract class AbstractSerializer<Out, S extends Serializer<Out, S>> implements Serializer<Out, S> {
14
+ abstract serialize(output: Out): unknown;
15
+ abstract deserialize(input: unknown): Out;
16
+ abstract withModule(module: SerializerModule<Out, unknown>): S;
17
+ abstract selectModule(modules: Record<string, SerializerModule<Out, unknown>>): S;
18
+ abstract validated<T extends Out>(output: T): T;
19
+ serializeList(outputs: Out[]): unknown[];
20
+ serializeOptional(output: Out | undefined): unknown;
21
+ deserializeOptional(input: unknown): Out | undefined;
22
+ deserializeList(input: unknown[]): Out[];
23
+ }
@@ -0,0 +1,19 @@
1
+ export class AbstractSerializer {
2
+ serializeList(outputs) {
3
+ return outputs.map((it) => this.serialize(it));
4
+ }
5
+ serializeOptional(output) {
6
+ if (output === undefined)
7
+ return undefined;
8
+ return this.serialize(output);
9
+ }
10
+ deserializeOptional(input) {
11
+ if (input === undefined)
12
+ return undefined;
13
+ return this.deserialize(input);
14
+ }
15
+ deserializeList(input) {
16
+ return input.map((it) => this.deserialize(it));
17
+ }
18
+ }
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/serializer/index.ts"],"names":[],"mappings":"AAiBA,MAAM,OAAgB,kBAAkB;IAetC,aAAa,CAAC,OAAc;QAC1B,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,iBAAiB,CAAC,MAAuB;QACvC,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC3C,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,mBAAmB,CAAC,KAAc;QAChC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC1C,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,eAAe,CAAC,KAAgB;QAC9B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ import { type Ingredient } from "../../";
2
+ export declare const serializer15: import("../module").SerializerModule<Ingredient, unknown>;
@@ -1,19 +1,12 @@
1
- import { mapValues } from "lodash-es";
2
1
  import z from "zod";
3
- import { BlockIngredient, BlockTagIngredient, FluidIngredient, FluidTagIngredient, Ingredient, ItemIngredient, ItemTagIngredient, ListIngredient, ToolActionIngredient, } from ".";
4
- import { IngredientMap, } from "../../parser/recipe/ingredientMap";
5
- import { AmountSchema, CountSchema } from "../fields";
6
- import { IdSchema, stripTag } from "../id";
7
- import { createSerializer, hasType, isObjectWith, VersionedSerializer, } from "../serializer";
8
- const serializer15 = createSerializer((builder) => {
9
- builder.deserializer((it) => typeof it === "string", (input) => {
10
- if (input.startsWith("#")) {
11
- return new ItemTagIngredient(input);
12
- }
13
- return new ItemIngredient(input);
14
- });
15
- builder.serializer(ListIngredient, (it, serialize) => it.entries.flatMap(serialize));
16
- builder.deserializer(Array.isArray, (it, deserialize) => new ListIngredient(it.map(deserialize)));
2
+ import { BlockIngredient, BlockTagIngredient, FluidIngredient, FluidTagIngredient, ItemIngredient, ItemTagIngredient, ToolActionIngredient, } from "../../";
3
+ import { AmountSchema, CountSchema } from "../../common/fields";
4
+ import { IdSchema, stripTag } from "../../common/id";
5
+ import { hasType, isObjectWith } from "../checks";
6
+ import { createSerializerModule } from "../module";
7
+ import commonSerialization from "./common";
8
+ export const serializer15 = createSerializerModule((builder) => {
9
+ commonSerialization(builder);
17
10
  const toolActionType = "farmersdelight:tool_action";
18
11
  builder.register(ToolActionIngredient, hasType(toolActionType), z.object({
19
12
  type: z.literal(toolActionType),
@@ -43,14 +36,4 @@ const serializer15 = createSerializer((builder) => {
43
36
  block: IdSchema,
44
37
  }), (it) => new BlockIngredient(it.block), ({ id }) => ({ block: id }));
45
38
  });
46
- export default class IngredientSerializer extends VersionedSerializer {
47
- constructor(packFormat, lookup) {
48
- super(packFormat, lookup, Ingredient, {
49
- 15: serializer15,
50
- });
51
- }
52
- ingredientMap(input) {
53
- return new IngredientMap(mapValues(input, (it) => this.deserialize(it)));
54
- }
55
- }
56
- //# sourceMappingURL=serializer.js.map
39
+ //# sourceMappingURL=15.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"15.js","sourceRoot":"","sources":["../../../src/serializer/ingredients/15.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { type Ingredient } from "../../";
2
+ export declare const serializer44: import("../module").SerializerModule<Ingredient, unknown>;
@@ -0,0 +1,46 @@
1
+ import z from "zod";
2
+ import { FluidIngredient, FluidTagIngredient, IgnoredIngredient, ItemIngredient, ItemTagIngredient, ListIngredient, ToolActionIngredient, } from "../../";
3
+ import { AmountSchema, CountSchema } from "../../common/fields";
4
+ import { IdSchema, stripTag } from "../../common/id";
5
+ import { hasType, isObjectWith } from "../checks";
6
+ import { createSerializerModule } from "../module";
7
+ import commonSerialization from "./common";
8
+ export const serializer44 = createSerializerModule((builder) => {
9
+ commonSerialization(builder);
10
+ // Do I also need to serialize as this?
11
+ builder.deserializer(hasType("neoforge:compound"), (it, deserialize) => {
12
+ const { ingredients } = z
13
+ .object({
14
+ ingredients: z.array(z.any()),
15
+ })
16
+ .parse(it);
17
+ return new ListIngredient(ingredients.map(deserialize));
18
+ });
19
+ const toolActionType = "farmersdelight:tool_action";
20
+ builder.register(ToolActionIngredient, hasType(toolActionType), z.object({
21
+ type: z.literal(toolActionType),
22
+ action: z.string().nonempty(),
23
+ }), (it) => new ToolActionIngredient(it.action), ({ action }) => ({ action, type: toolActionType }));
24
+ builder.register(ItemTagIngredient, isObjectWith("tag"), z.object({
25
+ tag: IdSchema,
26
+ count: CountSchema,
27
+ }), (it) => new ItemTagIngredient(it.tag, it.count), ({ count, tag }) => ({ tag: stripTag(tag), count }));
28
+ builder.register(FluidTagIngredient, isObjectWith("fluidTag"), z.object({
29
+ fluidTag: IdSchema,
30
+ amount: AmountSchema,
31
+ }), (it) => new FluidTagIngredient(it.fluidTag, it.amount), ({ amount, tag }) => ({ fluidTag: stripTag(tag), amount }));
32
+ builder.register(ItemIngredient, isObjectWith("item"), z.object({
33
+ item: IdSchema,
34
+ count: CountSchema,
35
+ }), (it) => new ItemIngredient(it.item, it.count), ({ id, ...rest }) => ({ item: id, ...rest }));
36
+ // TODO "type": "neoforge:single",
37
+ builder.register(FluidIngredient, isObjectWith("fluid"), z.object({
38
+ fluid: IdSchema,
39
+ amount: AmountSchema,
40
+ }), (it) => new FluidIngredient(it.fluid, it.amount), ({ id, ...rest }) => ({ fluid: id, ...rest }));
41
+ // TODO add support for these?
42
+ builder.deserializer(hasType("neoforge:components"), (it) => new IgnoredIngredient(it));
43
+ builder.deserializer(hasType("neoforge:intersection"), (it) => new IgnoredIngredient(it));
44
+ builder.deserializer(hasType("neoforge:difference"), (it) => new IgnoredIngredient(it));
45
+ });
46
+ //# sourceMappingURL=44.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"44.js","sourceRoot":"","sources":["../../../src/serializer/ingredients/44.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type Ingredient } from "../../";
2
+ import type { SerializerBuilder } from "../module";
3
+ export default function commonSerialization(builder: SerializerBuilder<Ingredient>): void;
@@ -0,0 +1,13 @@
1
+ import { IgnoredIngredient, ItemIngredient, ItemTagIngredient, ListIngredient, } from "../../";
2
+ export default function commonSerialization(builder) {
3
+ builder.deserializer((it) => typeof it === "string", (input) => {
4
+ if (input.startsWith("#")) {
5
+ return new ItemTagIngredient(input);
6
+ }
7
+ return new ItemIngredient(input);
8
+ });
9
+ builder.serializer(ListIngredient, (it, serialize) => it.entries.flatMap(serialize));
10
+ builder.deserializer(Array.isArray, (it, deserialize) => new ListIngredient(it.map(deserialize)));
11
+ builder.serializer(IgnoredIngredient, (it) => it.raw);
12
+ }
13
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/serializer/ingredients/common.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EAEjB,cAAc,EACd,iBAAiB,EACjB,cAAc,GACf,MAAM,QAAQ,CAAC;AAGhB,MAAM,CAAC,OAAO,UAAU,mBAAmB,CACzC,OAAsC;IAEtC,OAAO,CAAC,YAAY,CAClB,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,EAC9B,CAAC,KAAK,EAAE,EAAE;QACR,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,CACF,CAAC;IAEF,OAAO,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,CACnD,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAC9B,CAAC;IAEF,OAAO,CAAC,YAAY,CAClB,KAAK,CAAC,OAAO,EACb,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,CAAC,IAAI,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAC7D,CAAC;IAEF,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACxD,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { Serializer } from "..";
2
+ import { Ingredient } from "../../common/ingredient";
3
+ import type RegistryLookup from "../../loader/registry";
4
+ import type { SemVerInput } from "../../packFormat";
5
+ import { IngredientMap, type IngredientMapInput } from "../../parser/recipe/ingredientMap";
6
+ import type { SerializerModule } from "../module";
7
+ import { VersionedSerializer } from "../versioned";
8
+ export interface IngredientSerializer extends Serializer<Ingredient, IngredientSerializer> {
9
+ deserializeIngredientMap(input: IngredientMapInput): IngredientMap;
10
+ serializeIngredientMap(map: IngredientMap): IngredientMapInput;
11
+ }
12
+ export declare class IngredientSerializerImpl extends VersionedSerializer<Ingredient, IngredientSerializer> implements IngredientSerializer {
13
+ constructor(packFormat: SemVerInput, lookup: RegistryLookup);
14
+ deserializeIngredientMap(input: IngredientMapInput): IngredientMap;
15
+ serializeIngredientMap(map: IngredientMap): {
16
+ [x: string]: unknown;
17
+ };
18
+ withModule(module: SerializerModule<Ingredient>): IngredientSerializer;
19
+ }
20
+ export declare function createIngredientSerializer(packFormat: SemVerInput, lookup: RegistryLookup): IngredientSerializer;
@@ -0,0 +1,36 @@
1
+ import { mapValues } from "lodash-es";
2
+ import { Ingredient } from "../../common/ingredient";
3
+ import { IngredientMap, } from "../../parser/recipe/ingredientMap";
4
+ import { VersionedSerializer } from "../versioned";
5
+ import { WrapperSerializer } from "../wrapped";
6
+ import { serializer15 } from "./15";
7
+ import { serializer44 } from "./44";
8
+ export class IngredientSerializerImpl extends VersionedSerializer {
9
+ constructor(packFormat, lookup) {
10
+ super(packFormat, lookup, Ingredient, {
11
+ 15: serializer15,
12
+ 44: serializer44,
13
+ });
14
+ }
15
+ deserializeIngredientMap(input) {
16
+ return new IngredientMap(mapValues(input, (it) => this.deserialize(it)));
17
+ }
18
+ serializeIngredientMap(map) {
19
+ return mapValues(map.ingredients, (it) => this.serialize(it));
20
+ }
21
+ withModule(module) {
22
+ return new WrappedIngredientSerializer(this, module);
23
+ }
24
+ }
25
+ class WrappedIngredientSerializer extends WrapperSerializer {
26
+ deserializeIngredientMap(input) {
27
+ return this.serializer.deserializeIngredientMap(input);
28
+ }
29
+ serializeIngredientMap(map) {
30
+ return this.serializer.serializeIngredientMap(map);
31
+ }
32
+ }
33
+ export function createIngredientSerializer(packFormat, lookup) {
34
+ return new IngredientSerializerImpl(packFormat, lookup);
35
+ }
36
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/serializer/ingredients/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGrD,OAAO,EACL,aAAa,GAEd,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAUpC,MAAM,OAAO,wBACX,SAAQ,mBAAqD;IAG7D,YAAY,UAAuB,EAAE,MAAsB;QACzD,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE;YACpC,EAAE,EAAE,YAAY;YAChB,EAAE,EAAE,YAAY;SACjB,CAAC,CAAC;IACL,CAAC;IAED,wBAAwB,CAAC,KAAyB;QAChD,OAAO,IAAI,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,sBAAsB,CAAC,GAAkB;QACvC,OAAO,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC;IAEQ,UAAU,CACjB,MAAoC;QAEpC,OAAO,IAAI,2BAA2B,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC;CACF;AAED,MAAM,2BAA4B,SAAQ,iBAGzC;IACC,wBAAwB,CAAC,KAAyB;QAChD,OAAO,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;IACzD,CAAC;IAED,sBAAsB,CAAC,GAAkB;QACvC,OAAO,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;IACrD,CAAC;CACF;AAED,MAAM,UAAU,0BAA0B,CACxC,UAAuB,EACvB,MAAsB;IAEtB,OAAO,IAAI,wBAAwB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAC1D,CAAC"}