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

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 (97) 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/index.d.ts +2 -0
  8. package/dist/index.js +2 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/loader/context.d.ts +2 -2
  11. package/dist/loader/pack.d.ts +1 -1
  12. package/dist/loader/pack.js +4 -4
  13. package/dist/loader/pack.js.map +1 -1
  14. package/dist/loader/recipe.js +9 -5
  15. package/dist/loader/recipe.js.map +1 -1
  16. package/dist/parser/recipe/adAstra/inputOutput.js +1 -0
  17. package/dist/parser/recipe/adAstra/inputOutput.js.map +1 -1
  18. package/dist/parser/recipe/botania/blocks.d.ts +14 -8
  19. package/dist/parser/recipe/botania/blocks.js +39 -62
  20. package/dist/parser/recipe/botania/blocks.js.map +1 -1
  21. package/dist/parser/recipe/botania/gogWrapper.d.ts +2 -2
  22. package/dist/parser/recipe/botania/manaInfusion.d.ts +3 -0
  23. package/dist/parser/recipe/botania/manaInfusion.js +6 -5
  24. package/dist/parser/recipe/botania/manaInfusion.js.map +1 -1
  25. package/dist/parser/recipe/botania/nbtWrapper.d.ts +2 -2
  26. package/dist/parser/recipe/botania/pureDaisy.d.ts +4 -0
  27. package/dist/parser/recipe/botania/pureDaisy.js +15 -0
  28. package/dist/parser/recipe/botania/pureDaisy.js.map +1 -1
  29. package/dist/parser/recipe/create/assembly.d.ts +1 -0
  30. package/dist/parser/recipe/create/assembly.js +5 -2
  31. package/dist/parser/recipe/create/assembly.js.map +1 -1
  32. package/dist/parser/recipe/forge/conditional.d.ts +2 -2
  33. package/dist/parser/recipe/index.d.ts +9 -3
  34. package/dist/parser/recipe/index.js +17 -2
  35. package/dist/parser/recipe/index.js.map +1 -1
  36. package/dist/parser/recipe/ingredientMap.d.ts +2 -5
  37. package/dist/parser/recipe/ingredientMap.js +0 -3
  38. package/dist/parser/recipe/ingredientMap.js.map +1 -1
  39. package/dist/parser/recipe/thermal/index.d.ts +3 -0
  40. package/dist/parser/recipe/thermal/index.js +5 -3
  41. package/dist/parser/recipe/thermal/index.js.map +1 -1
  42. package/dist/parser/recipe/thermal/module.d.ts +4 -0
  43. package/dist/parser/recipe/thermal/module.js +36 -0
  44. package/dist/parser/recipe/thermal/module.js.map +1 -0
  45. package/dist/parser/recipe/vanilla/shaped.d.ts +1 -1
  46. package/dist/parser/recipe/vanilla/shaped.js +2 -2
  47. package/dist/parser/recipe/vanilla/shaped.js.map +1 -1
  48. package/dist/serializer/checks.d.ts +2 -0
  49. package/dist/serializer/checks.js +13 -0
  50. package/dist/serializer/checks.js.map +1 -0
  51. package/dist/serializer/index.d.ts +23 -0
  52. package/dist/serializer/index.js +19 -0
  53. package/dist/serializer/index.js.map +1 -0
  54. package/dist/serializer/ingredients/15.d.ts +2 -0
  55. package/dist/{common/ingredient/serializer.js → serializer/ingredients/15.js} +9 -26
  56. package/dist/serializer/ingredients/15.js.map +1 -0
  57. package/dist/serializer/ingredients/44.d.ts +2 -0
  58. package/dist/serializer/ingredients/44.js +46 -0
  59. package/dist/serializer/ingredients/44.js.map +1 -0
  60. package/dist/serializer/ingredients/common.d.ts +3 -0
  61. package/dist/serializer/ingredients/common.js +13 -0
  62. package/dist/serializer/ingredients/common.js.map +1 -0
  63. package/dist/serializer/ingredients/index.d.ts +20 -0
  64. package/dist/serializer/ingredients/index.js +36 -0
  65. package/dist/serializer/ingredients/index.js.map +1 -0
  66. package/dist/serializer/module.d.ts +23 -0
  67. package/dist/serializer/module.js +42 -0
  68. package/dist/serializer/module.js.map +1 -0
  69. package/dist/serializer/results/15.d.ts +2 -0
  70. package/dist/{common/result/serializer.js → serializer/results/15.js} +9 -14
  71. package/dist/serializer/results/15.js.map +1 -0
  72. package/dist/serializer/results/44.d.ts +2 -0
  73. package/dist/serializer/results/44.js +21 -0
  74. package/dist/serializer/results/44.js.map +1 -0
  75. package/dist/serializer/results/common.d.ts +3 -0
  76. package/dist/serializer/results/common.js +6 -0
  77. package/dist/serializer/results/common.js.map +1 -0
  78. package/dist/serializer/results/index.d.ts +6 -0
  79. package/dist/serializer/results/index.js +21 -0
  80. package/dist/serializer/results/index.js.map +1 -0
  81. package/dist/serializer/versioned.d.ts +19 -0
  82. package/dist/serializer/versioned.js +55 -0
  83. package/dist/serializer/versioned.js.map +1 -0
  84. package/dist/serializer/wrapped.d.ts +12 -0
  85. package/dist/serializer/wrapped.js +32 -0
  86. package/dist/serializer/wrapped.js.map +1 -0
  87. package/package.json +1 -1
  88. package/dist/common/ingredient/serializer.d.ts +0 -9
  89. package/dist/common/ingredient/serializer.js.map +0 -1
  90. package/dist/common/result/serializer.d.ts +0 -7
  91. package/dist/common/result/serializer.js.map +0 -1
  92. package/dist/common/serializer.d.ts +0 -35
  93. package/dist/common/serializer.js +0 -110
  94. package/dist/common/serializer.js.map +0 -1
  95. package/dist/parser/recipe/thermal/ingredient.d.ts +0 -4
  96. package/dist/parser/recipe/thermal/ingredient.js +0 -51
  97. package/dist/parser/recipe/thermal/ingredient.js.map +0 -1
@@ -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"}
@@ -0,0 +1,23 @@
1
+ import { type ZodType } from "zod";
2
+ import type { Class } from "../common/class";
3
+ import type { Predicate } from "../common/filters";
4
+ import type { Ingredient } from "../common/ingredient";
5
+ import type { Result } from "../common/result";
6
+ import { type SemVerInput } from "../packFormat";
7
+ type Mapper<From extends Out, To extends In, Out, In> = (it: From, nested: (it: Out) => In) => To;
8
+ export interface SerializerModule<Out, In = unknown> {
9
+ deserialize(input: In, nested: (it: In) => Out): Out | false;
10
+ serialize(input: Out, nested: (it: Out) => In): In | false;
11
+ }
12
+ export interface SerializerBuilder<Out, In = unknown> {
13
+ deserializer<TIn extends In>(test: Predicate<In>, mapper: Mapper<TIn, Out, In, Out>): void;
14
+ serializer<TOut extends Out, TIn extends In>(clazz: Class<TOut>, mapper: Mapper<TOut, TIn, Out, In>): void;
15
+ register<TOut extends Out, TIn extends In>(clazz: Class<TOut>, test: Predicate<In>, schema: ZodType<TIn>, deserialize: Mapper<TIn, TOut, In, Out>, serialize: Mapper<TOut, TIn, Out, In>): void;
16
+ }
17
+ export declare function createSerializerModule<Out>(factory: (builder: SerializerBuilder<Out, unknown>) => void): SerializerModule<Out, unknown>;
18
+ export declare function selectSerializerModule<Out>(packFormat: SemVerInput, serializers: Record<string, SerializerModule<Out>>): SerializerModule<Out, unknown> | undefined;
19
+ export interface WithSerializerModules {
20
+ ingredientModules(): Record<string, SerializerModule<Ingredient>>;
21
+ resultModules(): Record<string, SerializerModule<Result>>;
22
+ }
23
+ export {};