@adeficior/data-modifier 1.0.0-rc.37 → 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.
- package/dist/common/fields.js +1 -1
- package/dist/common/fields.js.map +1 -1
- package/dist/common/ingredient/index.d.ts +12 -0
- package/dist/common/ingredient/index.js +26 -0
- package/dist/common/ingredient/index.js.map +1 -1
- package/dist/common/result/index.d.ts +6 -0
- package/dist/common/result/index.js +13 -0
- package/dist/common/result/index.js.map +1 -1
- package/dist/error.js +2 -2
- package/dist/error.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/loader/context.d.ts +2 -2
- package/dist/loader/pack.d.ts +1 -1
- package/dist/loader/pack.js +4 -4
- package/dist/loader/pack.js.map +1 -1
- package/dist/loader/recipe.d.ts +2 -2
- package/dist/loader/recipe.js +22 -45
- package/dist/loader/recipe.js.map +1 -1
- package/dist/parser/recipe/adAstra/inputOutput.js +1 -0
- package/dist/parser/recipe/adAstra/inputOutput.js.map +1 -1
- package/dist/parser/recipe/adAstra/spaceStation.js +1 -1
- package/dist/parser/recipe/adAstra/spaceStation.js.map +1 -1
- package/dist/parser/recipe/botania/apothecary.js +1 -1
- package/dist/parser/recipe/botania/apothecary.js.map +1 -1
- package/dist/parser/recipe/botania/blocks.d.ts +14 -8
- package/dist/parser/recipe/botania/blocks.js +39 -61
- package/dist/parser/recipe/botania/blocks.js.map +1 -1
- package/dist/parser/recipe/botania/brew.js +1 -1
- package/dist/parser/recipe/botania/brew.js.map +1 -1
- package/dist/parser/recipe/botania/elvenTrade.js +2 -2
- package/dist/parser/recipe/botania/elvenTrade.js.map +1 -1
- package/dist/parser/recipe/botania/gogWrapper.d.ts +2 -2
- package/dist/parser/recipe/botania/manaInfusion.d.ts +3 -0
- package/dist/parser/recipe/botania/manaInfusion.js +6 -5
- package/dist/parser/recipe/botania/manaInfusion.js.map +1 -1
- package/dist/parser/recipe/botania/nbtWrapper.d.ts +2 -2
- package/dist/parser/recipe/botania/pureDaisy.d.ts +4 -0
- package/dist/parser/recipe/botania/pureDaisy.js +15 -0
- package/dist/parser/recipe/botania/pureDaisy.js.map +1 -1
- package/dist/parser/recipe/botania/runicAltar.js +1 -1
- package/dist/parser/recipe/botania/runicAltar.js.map +1 -1
- package/dist/parser/recipe/create/assembly.d.ts +1 -0
- package/dist/parser/recipe/create/assembly.js +6 -3
- package/dist/parser/recipe/create/assembly.js.map +1 -1
- package/dist/parser/recipe/farmersdelight/cooking.js +3 -6
- package/dist/parser/recipe/farmersdelight/cooking.js.map +1 -1
- package/dist/parser/recipe/farmersdelight/cutting.js +2 -2
- package/dist/parser/recipe/farmersdelight/cutting.js.map +1 -1
- package/dist/parser/recipe/forge/conditional.d.ts +2 -2
- package/dist/parser/recipe/index.d.ts +9 -3
- package/dist/parser/recipe/index.js +17 -2
- package/dist/parser/recipe/index.js.map +1 -1
- package/dist/parser/recipe/ingredientMap.d.ts +2 -5
- package/dist/parser/recipe/ingredientMap.js +0 -3
- package/dist/parser/recipe/ingredientMap.js.map +1 -1
- package/dist/parser/recipe/manyToMany.js +2 -2
- package/dist/parser/recipe/manyToMany.js.map +1 -1
- package/dist/parser/recipe/manyToOne.js +1 -1
- package/dist/parser/recipe/manyToOne.js.map +1 -1
- package/dist/parser/recipe/roots/component.js +1 -1
- package/dist/parser/recipe/roots/component.js.map +1 -1
- package/dist/parser/recipe/roots/ritual.js +2 -2
- package/dist/parser/recipe/roots/ritual.js.map +1 -1
- package/dist/parser/recipe/thermal/index.d.ts +3 -0
- package/dist/parser/recipe/thermal/index.js +10 -6
- package/dist/parser/recipe/thermal/index.js.map +1 -1
- package/dist/parser/recipe/thermal/module.d.ts +4 -0
- package/dist/parser/recipe/thermal/module.js +36 -0
- package/dist/parser/recipe/thermal/module.js.map +1 -0
- package/dist/parser/recipe/vanilla/shaped.d.ts +1 -1
- package/dist/parser/recipe/vanilla/shaped.js +2 -2
- package/dist/parser/recipe/vanilla/shaped.js.map +1 -1
- package/dist/parser/recipe/vanilla/smithing.d.ts +4 -2
- package/dist/parser/recipe/vanilla/smithing.js +12 -7
- package/dist/parser/recipe/vanilla/smithing.js.map +1 -1
- package/dist/serializer/checks.d.ts +2 -0
- package/dist/serializer/checks.js +13 -0
- package/dist/serializer/checks.js.map +1 -0
- package/dist/serializer/index.d.ts +23 -0
- package/dist/serializer/index.js +19 -0
- package/dist/serializer/index.js.map +1 -0
- package/dist/serializer/ingredients/15.d.ts +2 -0
- package/dist/{common/ingredient/serializer.js → serializer/ingredients/15.js} +14 -26
- package/dist/serializer/ingredients/15.js.map +1 -0
- package/dist/serializer/ingredients/44.d.ts +2 -0
- package/dist/serializer/ingredients/44.js +46 -0
- package/dist/serializer/ingredients/44.js.map +1 -0
- package/dist/serializer/ingredients/common.d.ts +3 -0
- package/dist/serializer/ingredients/common.js +13 -0
- package/dist/serializer/ingredients/common.js.map +1 -0
- package/dist/serializer/ingredients/index.d.ts +20 -0
- package/dist/serializer/ingredients/index.js +36 -0
- package/dist/serializer/ingredients/index.js.map +1 -0
- package/dist/serializer/module.d.ts +23 -0
- package/dist/serializer/module.js +42 -0
- package/dist/serializer/module.js.map +1 -0
- package/dist/serializer/results/15.d.ts +2 -0
- package/dist/{common/result/serializer.js → serializer/results/15.js} +9 -14
- package/dist/serializer/results/15.js.map +1 -0
- package/dist/serializer/results/44.d.ts +2 -0
- package/dist/serializer/results/44.js +21 -0
- package/dist/serializer/results/44.js.map +1 -0
- package/dist/serializer/results/common.d.ts +3 -0
- package/dist/serializer/results/common.js +6 -0
- package/dist/serializer/results/common.js.map +1 -0
- package/dist/serializer/results/index.d.ts +6 -0
- package/dist/serializer/results/index.js +21 -0
- package/dist/serializer/results/index.js.map +1 -0
- package/dist/serializer/versioned.d.ts +19 -0
- package/dist/serializer/versioned.js +55 -0
- package/dist/serializer/versioned.js.map +1 -0
- package/dist/serializer/wrapped.d.ts +12 -0
- package/dist/serializer/wrapped.js +32 -0
- package/dist/serializer/wrapped.js.map +1 -0
- package/package.json +1 -1
- package/dist/common/ingredient/serializer.d.ts +0 -9
- package/dist/common/ingredient/serializer.js.map +0 -1
- package/dist/common/result/serializer.d.ts +0 -7
- package/dist/common/result/serializer.js.map +0 -1
- package/dist/common/serializer.d.ts +0 -32
- package/dist/common/serializer.js +0 -95
- package/dist/common/serializer.js.map +0 -1
- package/dist/parser/recipe/thermal/ingredient.d.ts +0 -4
- package/dist/parser/recipe/thermal/ingredient.js +0 -50
- package/dist/parser/recipe/thermal/ingredient.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.js","sourceRoot":"","sources":["../../../../src/parser/recipe/roots/component.ts"],"names":[],"mappings":"AAGA,OAAO,YAAY,EAAE,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAQnD,MAAM,OAAO,mBAAoB,SAAQ,MAAM;IAChB;IAA7B,YAA6B,WAAyB;QACpD,KAAK,EAAE,CAAC;QADmB,gBAAW,GAAX,WAAW,CAAc;IAEtD,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,UAAU;QACR,OAAO,EAAE,CAAC;IACZ,CAAC;IAEQ,MAAM,CAAC,QAAwB;QACtC,OAAO,IAAI,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IAC5E,CAAC;IAEQ,SAAS,CAChB,OAA2B;QAE3B,OAAO;YACL,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC;SACjE,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,yBAA0B,SAAQ,YAG9C;IACC,WAAW,CACT,UAAyC,EACzC,OAA2B;QAE3B,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"component.js","sourceRoot":"","sources":["../../../../src/parser/recipe/roots/component.ts"],"names":[],"mappings":"AAGA,OAAO,YAAY,EAAE,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAQnD,MAAM,OAAO,mBAAoB,SAAQ,MAAM;IAChB;IAA7B,YAA6B,WAAyB;QACpD,KAAK,EAAE,CAAC;QADmB,gBAAW,GAAX,WAAW,CAAc;IAEtD,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,UAAU;QACR,OAAO,EAAE,CAAC;IACZ,CAAC;IAEQ,MAAM,CAAC,QAAwB;QACtC,OAAO,IAAI,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IAC5E,CAAC;IAEQ,SAAS,CAChB,OAA2B;QAE3B,OAAO;YACL,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC;SACjE,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,yBAA0B,SAAQ,YAG9C;IACC,WAAW,CACT,UAAyC,EACzC,OAA2B;QAE3B,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,eAAe,CACrD,UAAU,CAAC,WAAW,CACvB,CAAC;QACF,OAAO,IAAI,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC9C,CAAC;CACF"}
|
|
@@ -15,10 +15,10 @@ export class RootRitualRecipe extends ManyToOneRecipe {
|
|
|
15
15
|
}
|
|
16
16
|
export class RootRitualRecipeParser extends RecipeParser {
|
|
17
17
|
deserialize(definition, context) {
|
|
18
|
-
const ingredients = context.ingredients.
|
|
18
|
+
const ingredients = context.ingredients.deserializeList(definition.ingredients);
|
|
19
19
|
const result = context.results.deserialize(definition.result);
|
|
20
20
|
const incenses = definition.incenses &&
|
|
21
|
-
context.ingredients.
|
|
21
|
+
context.ingredients.deserializeList(definition.incenses);
|
|
22
22
|
return new RootRitualRecipe(ingredients, result, incenses);
|
|
23
23
|
}
|
|
24
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ritual.js","sourceRoot":"","sources":["../../../../src/parser/recipe/roots/ritual.ts"],"names":[],"mappings":"AAGA,OAAO,YAAY,MAAM,aAAa,CAAC;AACvC,OAAO,EACL,eAAe,GAEhB,MAAM,iBAAiB,CAAC;AAUzB,MAAM,OAAO,gBAAiB,SAAQ,eAAe;IAIhC;IAHnB,YACE,WAAyB,EACzB,MAAc,EACG,WAAyB,EAAE;QAE5C,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAFV,aAAQ,GAAR,QAAQ,CAAmB;IAG9C,CAAC;IAEQ,cAAc;QACrB,OAAO,CAAC,GAAG,KAAK,CAAC,cAAc,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC;IAEQ,MAAM,CAAC,QAAwB;QACtC,OAAO,IAAI,gBAAgB,CACzB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EACtC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAC5B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CACvC,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,YAG3C;IACC,WAAW,CACT,UAAsC,EACtC,OAA2B;QAE3B,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"ritual.js","sourceRoot":"","sources":["../../../../src/parser/recipe/roots/ritual.ts"],"names":[],"mappings":"AAGA,OAAO,YAAY,MAAM,aAAa,CAAC;AACvC,OAAO,EACL,eAAe,GAEhB,MAAM,iBAAiB,CAAC;AAUzB,MAAM,OAAO,gBAAiB,SAAQ,eAAe;IAIhC;IAHnB,YACE,WAAyB,EACzB,MAAc,EACG,WAAyB,EAAE;QAE5C,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAFV,aAAQ,GAAR,QAAQ,CAAmB;IAG9C,CAAC;IAEQ,cAAc;QACrB,OAAO,CAAC,GAAG,KAAK,CAAC,cAAc,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC;IAEQ,MAAM,CAAC,QAAwB;QACtC,OAAO,IAAI,gBAAgB,CACzB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EACtC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAC5B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CACvC,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,YAG3C;IACC,WAAW,CACT,UAAsC,EACtC,OAA2B;QAE3B,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,eAAe,CACrD,UAAU,CAAC,WAAW,CACvB,CAAC;QACF,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC9D,MAAM,QAAQ,GACZ,UAAU,CAAC,QAAQ;YACnB,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC3D,OAAO,IAAI,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7D,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,5 +1,6 @@
|
|
|
1
1
|
import { IllegalShapeError } from "../../../error.js";
|
|
2
2
|
import RecipeParser, { Recipe } from "../index.js";
|
|
3
|
+
import { ingredientSerializerModules } from "./module.js";
|
|
3
4
|
export class ThermalRecipe extends Recipe {
|
|
4
5
|
ingredients;
|
|
5
6
|
results;
|
|
@@ -31,15 +32,18 @@ export class ThermalRecipe extends Recipe {
|
|
|
31
32
|
}
|
|
32
33
|
}
|
|
33
34
|
export class ThermalRecipeParser extends RecipeParser {
|
|
35
|
+
ingredientModules() {
|
|
36
|
+
return ingredientSerializerModules;
|
|
37
|
+
}
|
|
34
38
|
deserialize(definition, context) {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
if (ingredients.length === 0)
|
|
39
|
+
const rawIngredients = definition.ingredient
|
|
40
|
+
? [definition.ingredient]
|
|
41
|
+
: (definition.ingredients ?? []);
|
|
42
|
+
if (rawIngredients.length === 0)
|
|
40
43
|
throw new IllegalShapeError("ingredients missing or empty", definition);
|
|
44
|
+
const ingredients = context.ingredients.deserializeList(rawIngredients);
|
|
41
45
|
const results = Array.isArray(definition.result)
|
|
42
|
-
? context.results.
|
|
46
|
+
? context.results.deserializeList(definition.result)
|
|
43
47
|
: [context.results.deserialize(definition.result)];
|
|
44
48
|
return new ThermalRecipe(ingredients, results);
|
|
45
49
|
}
|
|
@@ -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;
|
|
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,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("../../../
|
|
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:
|
|
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.
|
|
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,
|
|
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"}
|
|
@@ -6,13 +6,15 @@ import RecipeParser, { Recipe } from "../index.js";
|
|
|
6
6
|
export type SmithingRecipeDefinition = RecipeDefinition & Readonly<{
|
|
7
7
|
base: unknown;
|
|
8
8
|
addition: unknown;
|
|
9
|
-
result
|
|
9
|
+
result?: unknown;
|
|
10
|
+
template?: unknown;
|
|
10
11
|
}>;
|
|
11
12
|
export declare class SmithingRecipe extends Recipe {
|
|
12
13
|
private readonly base;
|
|
13
14
|
private readonly addition;
|
|
14
15
|
private readonly result;
|
|
15
|
-
|
|
16
|
+
private readonly template;
|
|
17
|
+
constructor(base: Ingredient, addition: Ingredient, result: Result | undefined, template: Ingredient | undefined);
|
|
16
18
|
getIngredients(): Ingredient[];
|
|
17
19
|
getResults(): Result[];
|
|
18
20
|
modify(modifier: RecipeModifier): SmithingRecipe;
|
|
@@ -1,28 +1,32 @@
|
|
|
1
|
+
import { exists } from "@adeficior/pack-resolver";
|
|
1
2
|
import RecipeParser, { Recipe } from "../index.js";
|
|
2
3
|
export class SmithingRecipe extends Recipe {
|
|
3
4
|
base;
|
|
4
5
|
addition;
|
|
5
6
|
result;
|
|
6
|
-
|
|
7
|
+
template;
|
|
8
|
+
constructor(base, addition, result, template) {
|
|
7
9
|
super();
|
|
8
10
|
this.base = base;
|
|
9
11
|
this.addition = addition;
|
|
10
12
|
this.result = result;
|
|
13
|
+
this.template = template;
|
|
11
14
|
}
|
|
12
15
|
getIngredients() {
|
|
13
|
-
return [this.base, this.addition];
|
|
16
|
+
return [this.base, this.addition, this.template].filter(exists);
|
|
14
17
|
}
|
|
15
18
|
getResults() {
|
|
16
|
-
return [this.result];
|
|
19
|
+
return [this.result].filter(exists);
|
|
17
20
|
}
|
|
18
21
|
modify(modifier) {
|
|
19
|
-
return new SmithingRecipe(modifier.ingredient(this.base), modifier.ingredient(this.addition), modifier.result(this.result));
|
|
22
|
+
return new SmithingRecipe(modifier.ingredient(this.base), modifier.ingredient(this.addition), this.result && modifier.result(this.result), this.template && modifier.ingredient(this.template));
|
|
20
23
|
}
|
|
21
24
|
serialize(context) {
|
|
22
25
|
return {
|
|
23
26
|
base: context.ingredients.serialize(this.base),
|
|
24
27
|
addition: context.ingredients.serialize(this.addition),
|
|
25
|
-
result: context.results.
|
|
28
|
+
result: context.results.serializeOptional(this.result),
|
|
29
|
+
template: context.ingredients.serializeOptional(this.template),
|
|
26
30
|
};
|
|
27
31
|
}
|
|
28
32
|
}
|
|
@@ -30,8 +34,9 @@ export class SmithingParser extends RecipeParser {
|
|
|
30
34
|
deserialize(definition, context) {
|
|
31
35
|
const base = context.ingredients.deserialize(definition.base);
|
|
32
36
|
const addition = context.ingredients.deserialize(definition.addition);
|
|
33
|
-
const result = context.results.
|
|
34
|
-
|
|
37
|
+
const result = context.results.deserializeOptional(definition.result);
|
|
38
|
+
const template = context.ingredients.deserializeOptional(definition.addition);
|
|
39
|
+
return new SmithingRecipe(base, addition, result, template);
|
|
35
40
|
}
|
|
36
41
|
}
|
|
37
42
|
//# sourceMappingURL=smithing.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smithing.js","sourceRoot":"","sources":["../../../../src/parser/recipe/vanilla/smithing.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"smithing.js","sourceRoot":"","sources":["../../../../src/parser/recipe/vanilla/smithing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAKlD,OAAO,YAAY,EAAE,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAUnD,MAAM,OAAO,cAAe,SAAQ,MAAM;IAErB;IACA;IACA;IACA;IAJnB,YACmB,IAAgB,EAChB,QAAoB,EACpB,MAA0B,EAC1B,QAAgC;QAEjD,KAAK,EAAE,CAAC;QALS,SAAI,GAAJ,IAAI,CAAY;QAChB,aAAQ,GAAR,QAAQ,CAAY;QACpB,WAAM,GAAN,MAAM,CAAoB;QAC1B,aAAQ,GAAR,QAAQ,CAAwB;IAGnD,CAAC;IAED,cAAc;QACZ,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAClE,CAAC;IAED,UAAU;QACR,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAEQ,MAAM,CAAC,QAAwB;QACtC,OAAO,IAAI,cAAc,CACvB,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAC9B,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAClC,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAC3C,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CACpD,CAAC;IACJ,CAAC;IAEQ,SAAS,CAChB,OAA2B;QAE3B,OAAO;YACL,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9C,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;YACtD,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC;YACtD,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC;SAC/D,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,YAGnC;IACC,WAAW,CACT,UAAoC,EACpC,OAA2B;QAE3B,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACtE,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACtE,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,mBAAmB,CACtD,UAAU,CAAC,QAAQ,CACpB,CAAC;QACF,OAAO,IAAI,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC9D,CAAC;CACF"}
|
|
@@ -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"}
|
|
@@ -1,19 +1,17 @@
|
|
|
1
|
-
import { mapValues } from "lodash-es";
|
|
2
1
|
import z from "zod";
|
|
3
|
-
import { BlockIngredient, BlockTagIngredient, FluidIngredient, FluidTagIngredient,
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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);
|
|
10
|
+
const toolActionType = "farmersdelight:tool_action";
|
|
11
|
+
builder.register(ToolActionIngredient, hasType(toolActionType), z.object({
|
|
12
|
+
type: z.literal(toolActionType),
|
|
13
|
+
action: z.string().nonempty(),
|
|
14
|
+
}), (it) => new ToolActionIngredient(it.action), ({ action }) => ({ action, type: toolActionType }));
|
|
17
15
|
builder.register(ItemTagIngredient, isObjectWith("tag"), z.object({
|
|
18
16
|
tag: IdSchema,
|
|
19
17
|
count: CountSchema,
|
|
@@ -38,14 +36,4 @@ const serializer15 = createSerializer((builder) => {
|
|
|
38
36
|
block: IdSchema,
|
|
39
37
|
}), (it) => new BlockIngredient(it.block), ({ id }) => ({ block: id }));
|
|
40
38
|
});
|
|
41
|
-
|
|
42
|
-
constructor(packFormat, lookup) {
|
|
43
|
-
super(packFormat, lookup, Ingredient, {
|
|
44
|
-
15: serializer15,
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
ingredientMap(input) {
|
|
48
|
-
return new IngredientMap(mapValues(input, (it) => this.deserialize(it)));
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
//# 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,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,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 {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import {} from "zod";
|
|
2
|
+
import { isAtLeastVersion } from "../packFormat";
|
|
3
|
+
export function createSerializerModule(factory) {
|
|
4
|
+
const deserializers = [];
|
|
5
|
+
const serializers = [];
|
|
6
|
+
factory({
|
|
7
|
+
deserializer: (test, mapper) => {
|
|
8
|
+
deserializers.push({
|
|
9
|
+
test,
|
|
10
|
+
mapper: mapper,
|
|
11
|
+
});
|
|
12
|
+
},
|
|
13
|
+
serializer: (clazz, mapper) => {
|
|
14
|
+
serializers.push({
|
|
15
|
+
clazz,
|
|
16
|
+
mapper: mapper,
|
|
17
|
+
});
|
|
18
|
+
},
|
|
19
|
+
register(clazz, test, schema, deserialize, serialize) {
|
|
20
|
+
this.serializer(clazz, (it, nested) => schema.encode(serialize(it, nested)));
|
|
21
|
+
this.deserializer(test, (it, nested) => deserialize(schema.parse(it), nested));
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
return {
|
|
25
|
+
deserialize: (input, nested) => {
|
|
26
|
+
const match = deserializers.find((it) => it.test(input));
|
|
27
|
+
if (!match)
|
|
28
|
+
return false;
|
|
29
|
+
return match.mapper(input, nested);
|
|
30
|
+
},
|
|
31
|
+
serialize(output, nested) {
|
|
32
|
+
const match = serializers.find((it) => output instanceof it.clazz);
|
|
33
|
+
if (!match)
|
|
34
|
+
return false;
|
|
35
|
+
return match.mapper(output, nested);
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export function selectSerializerModule(packFormat, serializers) {
|
|
40
|
+
return Object.entries(serializers).findLast(([it]) => isAtLeastVersion(packFormat, it))?.[1];
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/serializer/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,MAAM,KAAK,CAAC;AAKnC,OAAO,EAAE,gBAAgB,EAAoB,MAAM,eAAe,CAAC;AAgCnE,MAAM,UAAU,sBAAsB,CACpC,OAA2D;IAE3D,MAAM,aAAa,GAGd,EAAE,CAAC;IAER,MAAM,WAAW,GAGZ,EAAE,CAAC;IAER,OAAO,CAAC;QACN,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YAC7B,aAAa,CAAC,IAAI,CAAC;gBACjB,IAAI;gBACJ,MAAM,EAAE,MAAuD;aAChE,CAAC,CAAC;QACL,CAAC;QACD,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAC5B,WAAW,CAAC,IAAI,CAAC;gBACf,KAAK;gBACL,MAAM,EAAE,MAAuD;aAChE,CAAC,CAAC;QACL,CAAC;QACD,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS;YAClD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CACpC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CACrC,CAAC;YACF,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CACrC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CACtC,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;IAEH,OAAO;QACL,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAC7B,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACzD,IAAI,CAAC,KAAK;gBAAE,OAAO,KAAK,CAAC;YACzB,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACrC,CAAC;QACD,SAAS,CAAC,MAAM,EAAE,MAAM;YACtB,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC;YACnE,IAAI,CAAC,KAAK;gBAAE,OAAO,KAAK,CAAC;YACzB,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACtC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,UAAuB,EACvB,WAAkD;IAElD,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACnD,gBAAgB,CAAC,UAAU,EAAE,EAAE,CAAC,CACjC,EAAE,CAAC,CAAC,CAAC,CAAC;AACT,CAAC"}
|