@adeficior/data-modifier-recipes 2.0.0-rc.20260814115618

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/.turbo/turbo-build.log +1 -0
  2. package/.turbo/turbo-check.log +1 -0
  3. package/.turbo/turbo-lint.log +1 -0
  4. package/@types/modules.d.ts +15 -0
  5. package/@types/registry.d.ts +20 -0
  6. package/CHANGELOG.md +14 -0
  7. package/dist/emitter.d.ts +48 -0
  8. package/dist/emitter.js +116 -0
  9. package/dist/emitter.js.map +1 -0
  10. package/dist/hooks.d.ts +6 -0
  11. package/dist/hooks.js +4 -0
  12. package/dist/hooks.js.map +1 -0
  13. package/dist/index.d.ts +18 -0
  14. package/dist/index.js +14 -0
  15. package/dist/index.js.map +1 -0
  16. package/dist/loader.d.ts +27 -0
  17. package/dist/loader.js +141 -0
  18. package/dist/loader.js.map +1 -0
  19. package/dist/module.d.ts +15 -0
  20. package/dist/module.js +38 -0
  21. package/dist/module.js.map +1 -0
  22. package/dist/rule.d.ts +15 -0
  23. package/dist/rule.js +31 -0
  24. package/dist/rule.js.map +1 -0
  25. package/dist/schema.d.ts +7 -0
  26. package/dist/schema.js +14 -0
  27. package/dist/schema.js.map +1 -0
  28. package/dist/serializer/abstract.d.ts +17 -0
  29. package/dist/serializer/abstract.js +19 -0
  30. package/dist/serializer/abstract.js.map +1 -0
  31. package/dist/serializer/context.d.ts +12 -0
  32. package/dist/serializer/context.js +4 -0
  33. package/dist/serializer/context.js.map +1 -0
  34. package/dist/serializer/forge/conditional.d.ts +25 -0
  35. package/dist/serializer/forge/conditional.js +45 -0
  36. package/dist/serializer/forge/conditional.js.map +1 -0
  37. package/dist/serializer/holder.d.ts +25 -0
  38. package/dist/serializer/holder.js +52 -0
  39. package/dist/serializer/holder.js.map +1 -0
  40. package/dist/serializer/manyToMany.d.ts +21 -0
  41. package/dist/serializer/manyToMany.js +37 -0
  42. package/dist/serializer/manyToMany.js.map +1 -0
  43. package/dist/serializer/manyToOne.d.ts +21 -0
  44. package/dist/serializer/manyToOne.js +37 -0
  45. package/dist/serializer/manyToOne.js.map +1 -0
  46. package/dist/serializer/modifier.d.ts +6 -0
  47. package/dist/serializer/modifier.js +3 -0
  48. package/dist/serializer/modifier.js.map +1 -0
  49. package/dist/serializer/oneToOne.d.ts +21 -0
  50. package/dist/serializer/oneToOne.js +37 -0
  51. package/dist/serializer/oneToOne.js.map +1 -0
  52. package/dist/serializer/vanilla/shaped.d.ts +22 -0
  53. package/dist/serializer/vanilla/shaped.js +37 -0
  54. package/dist/serializer/vanilla/shaped.js.map +1 -0
  55. package/dist/serializer/vanilla/shapeless.d.ts +4 -0
  56. package/dist/serializer/vanilla/shapeless.js +4 -0
  57. package/dist/serializer/vanilla/shapeless.js.map +1 -0
  58. package/dist/serializer/vanilla/smelting.d.ts +22 -0
  59. package/dist/serializer/vanilla/smelting.js +37 -0
  60. package/dist/serializer/vanilla/smelting.js.map +1 -0
  61. package/dist/serializer/vanilla/smithing.d.ts +25 -0
  62. package/dist/serializer/vanilla/smithing.js +46 -0
  63. package/dist/serializer/vanilla/smithing.js.map +1 -0
  64. package/dist/serializer/vanilla/stonecutting.d.ts +22 -0
  65. package/dist/serializer/vanilla/stonecutting.js +38 -0
  66. package/dist/serializer/vanilla/stonecutting.js.map +1 -0
  67. package/eslint.config.js +8 -0
  68. package/package.json +42 -0
  69. package/src/emitter.ts +239 -0
  70. package/src/hooks.ts +10 -0
  71. package/src/index.ts +18 -0
  72. package/src/loader.ts +219 -0
  73. package/src/module.ts +70 -0
  74. package/src/rule.ts +45 -0
  75. package/src/schema.ts +30 -0
  76. package/src/serializer/abstract.ts +41 -0
  77. package/src/serializer/context.ts +17 -0
  78. package/src/serializer/forge/conditional.ts +72 -0
  79. package/src/serializer/holder.ts +63 -0
  80. package/src/serializer/manyToMany.ts +62 -0
  81. package/src/serializer/manyToOne.ts +62 -0
  82. package/src/serializer/modifier.ts +10 -0
  83. package/src/serializer/oneToOne.ts +60 -0
  84. package/src/serializer/vanilla/shaped.ts +65 -0
  85. package/src/serializer/vanilla/shapeless.ts +8 -0
  86. package/src/serializer/vanilla/smelting.ts +62 -0
  87. package/src/serializer/vanilla/smithing.ts +74 -0
  88. package/src/serializer/vanilla/stonecutting.ts +63 -0
  89. package/src/testing/index.ts +1 -0
  90. package/src/testing/setup.ts +85 -0
  91. package/test/1.20.1/__snapshots__/emitter.test.ts.snap +122 -0
  92. package/test/1.20.1/__snapshots__/loader.test.ts.snap +215 -0
  93. package/test/1.20.1/emitter.test.ts +222 -0
  94. package/test/1.20.1/loader.test.ts +17 -0
  95. package/test/1.21.1/loader.test.ts +17 -0
  96. package/test/1.21.1/packFormat.test.ts +52 -0
  97. package/test/resources/1.20.1/default/custom/data/custom/recipes/conditional.json +25 -0
  98. package/tsconfig.build.json +14 -0
  99. package/tsconfig.json +34 -0
@@ -0,0 +1,17 @@
1
+ import { expect, it } from "bun:test";
2
+ import { basename } from "node:path";
3
+ import { setupRecipeLoader } from "../../src/testing";
4
+
5
+ const version = basename(import.meta.dir);
6
+
7
+ const { loader, logger } = setupRecipeLoader(version);
8
+
9
+ it("has no unknown recipe loaders", () => {
10
+ expect(loader.unknownRecipeTypes().map((it) => it.type)).toBeEmpty();
11
+ });
12
+
13
+ it("does not encounter any errors", () => {
14
+ expect(logger.trace).not.toHaveBeenCalled();
15
+ expect(logger.warn).not.toHaveBeenCalled();
16
+ expect(logger.error).not.toHaveBeenCalled();
17
+ });
@@ -0,0 +1,17 @@
1
+ import { expect, it } from "bun:test";
2
+ import { basename } from "node:path";
3
+ import { setupRecipeLoader } from "../../src/testing";
4
+
5
+ const version = basename(import.meta.dir);
6
+
7
+ const { loader, logger } = setupRecipeLoader(version);
8
+
9
+ it("has no unknown recipe loaders", () => {
10
+ expect(loader.unknownRecipeTypes().map((it) => it.type)).toBeEmpty();
11
+ });
12
+
13
+ it("does not encounter any errors", () => {
14
+ expect(logger.trace).not.toHaveBeenCalled();
15
+ expect(logger.warn).not.toHaveBeenCalled();
16
+ expect(logger.error).not.toHaveBeenCalled();
17
+ });
@@ -0,0 +1,52 @@
1
+ import {
2
+ packFormatOf,
3
+ type LoaderContext,
4
+ } from "@adeficior/data-modifier-core";
5
+ import { mockRegistryProvider } from "@adeficior/data-modifier-core/testing";
6
+ import {
7
+ mockIngredientSerializer,
8
+ mockPredicates,
9
+ mockResultSerializer,
10
+ } from "@adeficior/data-modifier-ingredients/testing";
11
+ import {
12
+ createTestAcceptor,
13
+ createTestLogger,
14
+ } from "@adeficior/pack-resolver/testing";
15
+ import { describe, expect, it } from "bun:test";
16
+ import { EMPTY_RECIPE } from "../../src";
17
+ import { RecipeEmitter } from "../../src/emitter";
18
+ import { RecipeLoader } from "../../src/loader";
19
+
20
+ const version = "1.21.1";
21
+ // TODO common method?
22
+ const context: LoaderContext = { logger: createTestLogger() };
23
+ const serializer = new RecipeLoader(
24
+ mockResultSerializer(),
25
+ mockIngredientSerializer(),
26
+ );
27
+ const emitter = new RecipeEmitter(
28
+ context.logger,
29
+ packFormatOf(version),
30
+ mockRegistryProvider(),
31
+ mockResultSerializer(),
32
+ mockIngredientSerializer(),
33
+ mockPredicates(),
34
+ serializer,
35
+ );
36
+
37
+ describe("loader respects different pack format versions", () => {
38
+ it("folders follow new syntax after 1.21", async () => {
39
+ const acceptor = createTestAcceptor();
40
+
41
+ emitter.add("example:test", EMPTY_RECIPE);
42
+
43
+ await emitter.resolver(context).extract(acceptor);
44
+
45
+ expect(acceptor.jsonAt("data/example/recipe/test.json")).toMatchObject(
46
+ EMPTY_RECIPE,
47
+ );
48
+
49
+ expect(acceptor.jsonAt("data/example/loot_tables/test.json")).toBeNull();
50
+ expect(acceptor.jsonAt("data/example/recipes/test.json")).toBeNull();
51
+ });
52
+ });
@@ -0,0 +1,25 @@
1
+ {
2
+ "type": "forge:conditional",
3
+ "recipes": [
4
+ {
5
+ "conditions": [
6
+ {
7
+ "type": "forge:mod_loaded",
8
+ "modid": "farmersdelight"
9
+ }
10
+ ],
11
+ "recipe": {
12
+ "type": "minecraft:crafting_shapeless",
13
+ "ingredients": [
14
+ {
15
+ "item": "minecraft:poppy"
16
+ }
17
+ ],
18
+ "result": {
19
+ "count": 2,
20
+ "item": "minecraft:purple_dye"
21
+ }
22
+ }
23
+ }
24
+ ]
25
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "extends": "@adeficior/configs/tsconfig",
3
+ "compilerOptions": {
4
+ "rootDir": "./src",
5
+ "outDir": "./dist",
6
+ "declaration": true,
7
+ "sourceMap": true,
8
+ "paths": {
9
+ "@adeficior/data-modifier/generated": ["./@types/registry.d.ts"],
10
+ "@adeficior/data-modifier-core/generated": ["./@types/modules.d.ts"]
11
+ }
12
+ },
13
+ "include": ["src"]
14
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,34 @@
1
+ {
2
+ "extends": "@adeficior/configs/tsconfig",
3
+ "compilerOptions": {
4
+ "paths": {
5
+ "@adeficior/data-modifier-core": ["../../core/src/index.ts"],
6
+ "@adeficior/data-modifier-core/testing": [
7
+ "../../core/src/testing/index.ts"
8
+ ],
9
+ "@adeficior/data-modifier-core/serializer": [
10
+ "../../core/src/serializer/index.ts"
11
+ ],
12
+ "@adeficior/configs/eslint": ["../../packages/configs/eslint.config.ts"],
13
+ "@adeficior/configs/tsconfig": ["../../packages/configs/tsconfig.tson"],
14
+ "@adeficior/configs/tsconfig-build": [
15
+ "../../packages/configs/tsconfig.build.tson"
16
+ ],
17
+ "@adeficior/testing": ["../../packages/testing/src/index.ts"],
18
+ "@adeficior/data-modifier-ingredients": [
19
+ "../../modules/ingredients/src/index.ts"
20
+ ],
21
+ "@adeficior/data-modifier-ingredients/testing": [
22
+ "../../modules/ingredients/src/testing/index.ts"
23
+ ],
24
+ "@adeficior/data-modifier-tags": ["../../modules/tags/src/index.ts"],
25
+ "@adeficior/data-modifier-tags/testing": [
26
+ "../../modules/tags/src/testing/index.ts"
27
+ ],
28
+ "@adeficior/data-modifier/generated": ["./@types/registry.d.ts"],
29
+ "@adeficior/data-modifier-core/generated": ["./@types/modules.d.ts"]
30
+ }
31
+ },
32
+ "include": ["src", "test"],
33
+ "exclude": ["test/resources"]
34
+ }