@adeficior/data-modifier 1.0.0-rc.15 → 1.0.0-rc.17

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 (73) hide show
  1. package/dist/common/{predicates.d.ts → filters.d.ts} +3 -3
  2. package/dist/common/{predicates.js → filters.js} +3 -3
  3. package/dist/common/filters.js.map +1 -0
  4. package/dist/common/id.d.ts +3 -0
  5. package/dist/common/id.js +6 -1
  6. package/dist/common/id.js.map +1 -1
  7. package/dist/common/ingredient/filter.d.ts +3 -3
  8. package/dist/common/ingredient/filter.js +20 -59
  9. package/dist/common/ingredient/filter.js.map +1 -1
  10. package/dist/common/ingredient/index.d.ts +35 -27
  11. package/dist/common/ingredient/index.js +57 -37
  12. package/dist/common/ingredient/index.js.map +1 -1
  13. package/dist/common/ingredient/serializer.js +1 -1
  14. package/dist/common/ingredient/serializer.js.map +1 -1
  15. package/dist/common/result/filter.d.ts +3 -3
  16. package/dist/common/result/filter.js +12 -35
  17. package/dist/common/result/filter.js.map +1 -1
  18. package/dist/common/result/index.d.ts +20 -16
  19. package/dist/common/result/index.js +25 -17
  20. package/dist/common/result/index.js.map +1 -1
  21. package/dist/common/result/serializer.js +1 -1
  22. package/dist/common/result/serializer.js.map +1 -1
  23. package/dist/common/serializable.d.ts +5 -2
  24. package/dist/emit/assets/lang.js.map +1 -1
  25. package/dist/emit/blacklist.d.ts +3 -3
  26. package/dist/emit/blacklist.js +2 -2
  27. package/dist/emit/blacklist.js.map +1 -1
  28. package/dist/emit/data/loot.d.ts +9 -9
  29. package/dist/emit/data/loot.js +3 -3
  30. package/dist/emit/data/loot.js.map +1 -1
  31. package/dist/emit/data/recipe.d.ts +13 -13
  32. package/dist/emit/data/recipe.js +5 -5
  33. package/dist/emit/data/recipe.js.map +1 -1
  34. package/dist/emit/data/tags.d.ts +4 -4
  35. package/dist/emit/data/tags.js +1 -1
  36. package/dist/emit/data/tags.js.map +1 -1
  37. package/dist/emit/rule/lootTable.d.ts +1 -1
  38. package/dist/emit/rule/lootTable.js.map +1 -1
  39. package/dist/emit/rule/recipe.d.ts +1 -1
  40. package/dist/emit/rule/recipe.js.map +1 -1
  41. package/dist/loader/index.d.ts +4 -3
  42. package/dist/loader/index.js +7 -3
  43. package/dist/loader/index.js.map +1 -1
  44. package/dist/loader/lang.d.ts +1 -2
  45. package/dist/loader/lang.js +1 -1
  46. package/dist/loader/lang.js.map +1 -1
  47. package/dist/loader/loot.d.ts +1 -2
  48. package/dist/loader/loot.js +2 -2
  49. package/dist/loader/loot.js.map +1 -1
  50. package/dist/loader/pack.d.ts +2 -2
  51. package/dist/loader/pack.js +13 -12
  52. package/dist/loader/pack.js.map +1 -1
  53. package/dist/loader/recipe.d.ts +5 -4
  54. package/dist/loader/recipe.js +17 -28
  55. package/dist/loader/recipe.js.map +1 -1
  56. package/dist/loader/registry/dump.js +3 -3
  57. package/dist/loader/registry/dump.js.map +1 -1
  58. package/dist/loader/tags.d.ts +2 -2
  59. package/dist/loader/tags.js +1 -1
  60. package/dist/loader/tags.js.map +1 -1
  61. package/dist/parser/lootTable.d.ts +1 -1
  62. package/dist/parser/lootTable.js +2 -2
  63. package/dist/parser/lootTable.js.map +1 -1
  64. package/dist/parser/recipe/adAstra/inputOutput.js +3 -3
  65. package/dist/parser/recipe/adAstra/inputOutput.js.map +1 -1
  66. package/dist/parser/recipe/create/assembly.js +1 -1
  67. package/dist/parser/recipe/create/assembly.js.map +1 -1
  68. package/dist/parser/recipe/index.d.ts +1 -1
  69. package/dist/parser/recipe/index.js.map +1 -1
  70. package/dist/parser/recipe/vanilla/stonecutting.js +1 -1
  71. package/dist/parser/recipe/vanilla/stonecutting.js.map +1 -1
  72. package/package.json +9 -6
  73. package/dist/common/predicates.js.map +0 -1
@@ -3,6 +3,6 @@ import type { Logger } from "@adeficior/pack-resolver";
3
3
  import type { TagRegistry } from "../loader/tags.js";
4
4
  import type { IdInput, NormalizedId } from "./id.js";
5
5
  export type Predicate<T> = (value: T, logger?: Logger) => boolean;
6
- export type CommonTest<T> = RegExp | Predicate<T> | T;
7
- export declare function resolveCommonTest<TEntry, TId extends string>(test: CommonTest<TId>, resolve: (value: TEntry, logger?: Logger) => NormalizedId<TId>[], tags?: TagRegistry<RegistryId>): Predicate<TEntry>;
8
- export declare function resolveIDTest<T extends RegistryId>(test: CommonTest<NormalizedId<InferIds<T>>>, tags?: TagRegistry<T>): Predicate<IdInput<InferIds<T>>>;
6
+ export type CommonFilter<T> = RegExp | Predicate<T> | T;
7
+ export declare function createCommonFilter<TEntry, TId extends string>(test: CommonFilter<TId>, resolve: (value: TEntry, logger?: Logger) => NormalizedId<TId>[], tags?: TagRegistry<RegistryId>): Predicate<TEntry>;
8
+ export declare function resolveIDTest<T extends RegistryId>(test: CommonFilter<NormalizedId<InferIds<T>>>, tags?: TagRegistry<T>): Predicate<IdInput<InferIds<T>>>;
@@ -1,5 +1,5 @@
1
1
  import { encodeId } from "./id.js";
2
- export function resolveCommonTest(test, resolve, tags) {
2
+ export function createCommonFilter(test, resolve, tags) {
3
3
  if (typeof test === "function") {
4
4
  return (entry, logger) => resolve(entry, logger).some((id) => test(id, logger));
5
5
  }
@@ -27,6 +27,6 @@ export function resolveCommonTest(test, resolve, tags) {
27
27
  }
28
28
  }
29
29
  export function resolveIDTest(test, tags) {
30
- return resolveCommonTest(test, (it) => [encodeId(it)], tags);
30
+ return createCommonFilter(test, (it) => [encodeId(it)], tags);
31
31
  }
32
- //# sourceMappingURL=predicates.js.map
32
+ //# sourceMappingURL=filters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filters.js","sourceRoot":"","sources":["../../src/common/filters.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAKnC,MAAM,UAAU,kBAAkB,CAChC,IAAuB,EACvB,OAAgE,EAChE,IAA8B;IAE9B,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CACvB,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,EAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IACjE,CAAC;SAAM,IAAI,IAAI,YAAY,MAAM,EAAE,CAAC;QAClC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE;YAC5B,OAAO,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACjE,CAAC,CAAC;IACJ,CAAC;SAAM,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE;YAC5B,OAAO,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE;gBAC7C,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,EAAE;oBAAE,OAAO,IAAI,CAAC;qBAC9C,IAAI,IAAI;oBAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAgB,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC;;oBAC9D,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE;YAC5B,OAAO,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9D,CAAC,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,IAA6C,EAC7C,IAAqB;IAErB,OAAO,kBAAkB,CACvB,IAAI,EACJ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EACtB,IAAI,CACL,CAAC;AACJ,CAAC"}
@@ -6,11 +6,14 @@ export type Id = Readonly<{
6
6
  }>;
7
7
  export type IdInput<T extends string = string> = T | Id;
8
8
  export type NormalizedId<T extends string = string> = T extends `${string}:${string}` ? T : T extends `#${infer R}` ? `#${string}:${R}` : `${string}:${T}`;
9
+ export type TagId = NormalizedId<`#${string}`>;
9
10
  export type TagInput = IdInput<`#${string}`>;
10
11
  export declare const IdSchema: zod.ZodString;
11
12
  export declare const TagSchema: zod.ZodType<`#${string}`>;
12
13
  export declare const IdOrTagSchema: zod.ZodString;
13
14
  export declare function createId(from: IdInput): Id;
14
15
  export declare function encodeId<T extends string>(from: IdInput<T>): NormalizedId<T>;
16
+ export declare function toTag(from: IdInput): TagId;
17
+ export declare function stripTag(from: IdInput): NormalizedId;
15
18
  export declare function prefix(id: IdInput, prefix: string): `${string}:${string}`;
16
19
  export declare function suffix(id: IdInput, suffix: string): `${string}:${string}`;
package/dist/common/id.js CHANGED
@@ -24,7 +24,6 @@ export function createId(from) {
24
24
  }
25
25
  export function encodeId(from) {
26
26
  if (typeof from === "string") {
27
- IdOrTagSchema.parse(from);
28
27
  if (from.includes(":"))
29
28
  return from;
30
29
  if (from.startsWith("#"))
@@ -35,6 +34,12 @@ export function encodeId(from) {
35
34
  return `#${from.namespace}:${from.path}`;
36
35
  return `${from.namespace}:${from.path}`;
37
36
  }
37
+ export function toTag(from) {
38
+ return encodeId({ ...createId(from), isTag: true });
39
+ }
40
+ export function stripTag(from) {
41
+ return encodeId({ ...createId(from), isTag: false });
42
+ }
38
43
  export function prefix(id, prefix) {
39
44
  const { path, ...rest } = createId(id);
40
45
  return encodeId({ ...rest, path: prefix + path });
@@ -1 +1 @@
1
- {"version":3,"file":"id.js","sourceRoot":"","sources":["../../src/common/id.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AAmBtB,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG;KACxB,MAAM,EAAE;KACR,KAAK,CAAC,kCAAkC,CAAC;KACzC,QAAQ,CAAC,UAAU,CAAC,CAAC;AAExB,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG;KACzB,MAAM,EAAE;KACR,KAAK,CAAC,mCAAmC,CAAC;KAC1C,QAAQ,CAAC,cAAc,CAA8B,CAAC;AAEzD,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG;KAC7B,MAAM,EAAE;KACR,KAAK,CAAC,oCAAoC,CAAC;KAC3C,QAAQ,CAAC,oBAAoB,CAAC,CAAC;AAElC,MAAM,UAAU,QAAQ,CAAC,IAAa;IACpC,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QACtB,OAAO,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAEzD,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAErB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACvE,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAqB,CAAC;IAC9D,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,QAAQ,CAAmB,IAAgB;IACzD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE1B,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,IAAuB,CAAC;QACvD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YACtB,OAAO,cAAc,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAqB,CAAC;QAC9D,OAAO,aAAa,IAAI,EAAqB,CAAC;IAChD,CAAC;IACD,IAAI,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,EAAqB,CAAC;IAC5E,OAAO,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,EAAqB,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,EAAW,EAAE,MAAc;IAChD,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACvC,OAAO,QAAQ,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,EAAW,EAAE,MAAc;IAChD,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACvC,OAAO,QAAQ,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,EAAE,CAAC,CAAC;AACpD,CAAC"}
1
+ {"version":3,"file":"id.js","sourceRoot":"","sources":["../../src/common/id.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AAqBtB,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG;KACxB,MAAM,EAAE;KACR,KAAK,CAAC,kCAAkC,CAAC;KACzC,QAAQ,CAAC,UAAU,CAAC,CAAC;AAExB,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG;KACzB,MAAM,EAAE;KACR,KAAK,CAAC,mCAAmC,CAAC;KAC1C,QAAQ,CAAC,cAAc,CAA8B,CAAC;AAEzD,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG;KAC7B,MAAM,EAAE;KACR,KAAK,CAAC,oCAAoC,CAAC;KAC3C,QAAQ,CAAC,oBAAoB,CAAC,CAAC;AAElC,MAAM,UAAU,QAAQ,CAAC,IAAa;IACpC,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QACtB,OAAO,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAEzD,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAErB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACvE,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAqB,CAAC;IAC9D,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,QAAQ,CAAmB,IAAgB;IACzD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,IAAuB,CAAC;QACvD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YACtB,OAAO,cAAc,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAqB,CAAC;QAC9D,OAAO,aAAa,IAAI,EAAqB,CAAC;IAChD,CAAC;IACD,IAAI,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,EAAqB,CAAC;IAC5E,OAAO,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,EAAqB,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,IAAa;IACjC,OAAO,QAAQ,CAAC,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAU,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAa;IACpC,OAAO,QAAQ,CAAC,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,EAAW,EAAE,MAAc;IAChD,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACvC,OAAO,QAAQ,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,EAAW,EAAE,MAAc;IAChD,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACvC,OAAO,QAAQ,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,EAAE,CAAC,CAAC;AACpD,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { Ingredient } from ".";
2
2
  import type { PackContext } from "../../loader/context";
3
- import { type CommonTest, type Predicate } from "../predicates";
3
+ import { type CommonFilter, type Predicate } from "../filters";
4
4
  import type { IngredientInput } from "./input";
5
- export type IngredientTest = CommonTest<Ingredient> | IngredientInput | `#${string}`;
6
- export default function resolveIngredientTest(test: IngredientTest, context: Omit<PackContext, "results">): Predicate<IngredientInput>;
5
+ export type IngredientFilter = CommonFilter<Ingredient> | IngredientInput | `#${string}`;
6
+ export default function createIngredientFilter(test: IngredientFilter, context: Omit<PackContext, "results">): Predicate<IngredientInput>;
@@ -1,19 +1,16 @@
1
- import { exists } from "@adeficior/pack-resolver";
2
- import { BlockIngredient, BlockTagIngredient, FluidIngredient, FluidTagIngredient, Ingredient, ItemIngredient, ItemTagIngredient, ListIngredient, } from ".";
1
+ import { BlockIngredient, BlockTagIngredient, FluidIngredient, FluidTagIngredient, Ingredient, ItemIngredient, ItemTagIngredient, } from ".";
3
2
  import { tryCatching } from "../../error";
4
- import { createId, encodeId } from "../id";
5
- import { resolveCommonTest, } from "../predicates";
6
- export default function resolveIngredientTest(test,
7
- // TODO pass context?
8
- context) {
3
+ import { createCommonFilter, } from "../filters";
4
+ import { encodeId } from "../id";
5
+ export default function createIngredientFilter(test, context) {
9
6
  if (typeof test === "string") {
10
7
  if (test.startsWith("#")) {
11
- return resolveIngredientTest(new ItemTagIngredient(test.substring(1)), context);
8
+ return createIngredientFilter(new ItemTagIngredient(test.substring(1)), context);
12
9
  }
13
- return resolveIngredientTest(new ItemIngredient(test), context);
10
+ return createIngredientFilter(new ItemIngredient(test), context);
14
11
  }
15
12
  if (test instanceof RegExp) {
16
- return resolveIdTest(test, context.tags.registry("item"), extractItemID);
13
+ return filterByRegistry(test, context.tags, "minecraft:item");
17
14
  }
18
15
  if (typeof test === "function") {
19
16
  return (it, logger) => test(context.ingredients.create(it), logger);
@@ -22,76 +19,40 @@ context) {
22
19
  test.validate(context.lookup);
23
20
  }
24
21
  if (test instanceof ItemTagIngredient) {
25
- return resolveIdTest(`#${encodeId(test.tag)}`, context.tags.registry("item"), extractItemID);
22
+ return filterByRegistry(test.tag, context.tags, "minecraft:item");
26
23
  }
27
24
  if (test instanceof ItemIngredient) {
28
- return resolveIdTest(encodeId(test.id), context.tags.registry("item"), extractItemID);
25
+ return filterByRegistry(test.id, context.tags, "minecraft:item");
29
26
  }
30
27
  if (test instanceof FluidTagIngredient) {
31
- return resolveIdTest(`#${encodeId(test.tag)}`, context.tags.registry("fluid"), extractFluidID);
28
+ return filterByRegistry(test.tag, context.tags, "minecraft:fluid");
32
29
  }
33
30
  if (test instanceof FluidIngredient) {
34
- return resolveIdTest(encodeId(test.id), context.tags.registry("fluid"), extractFluidID);
31
+ return filterByRegistry(test.id, context.tags, "minecraft:fluid");
35
32
  }
36
33
  if (test instanceof BlockTagIngredient) {
37
- return resolveIdTest(`#${encodeId(test.tag)}`, context.tags.registry("block"), extractBlockID);
34
+ return filterByRegistry(test.tag, context.tags, "minecraft:block");
38
35
  }
39
- // TODO match method in ingredient itself?
40
36
  if (test instanceof BlockIngredient) {
41
- return resolveIdTest(encodeId(test.id), context.tags.registry("block"), extractBlockID);
37
+ return filterByRegistry(test.id, context.tags, "minecraft:block");
42
38
  }
43
39
  // TODO add support for ListIngredient?
44
40
  // TODO warn or throw?
45
41
  return () => false;
46
42
  }
47
- // TODO is Predicate<Ingredient> fine?
48
- function resolveIdTest(test, tags, idSupplier) {
43
+ function filterByRegistry(test, tags, registry) {
49
44
  function resolveIds(it) {
50
45
  if (typeof it === "string")
51
- return [it];
52
- if (it instanceof ListIngredient) {
53
- return it.entries.flatMap(resolveIds);
54
- }
55
- else if (Array.isArray(it)) {
46
+ return [encodeId(it)];
47
+ if (Array.isArray(it)) {
56
48
  return it.flatMap(resolveIds);
57
49
  }
58
- else {
59
- return [idSupplier(it)].filter(exists);
60
- }
50
+ return it.idsFor(registry);
61
51
  }
62
- return resolveCommonTest(test, (input, logger) =>
52
+ return createCommonFilter(test, (input, logger) =>
63
53
  // TODO which exception has to be caught here?
64
54
  tryCatching(logger, () => {
65
- return resolveIds(input).map(encodeId);
66
- }) ?? [], tags);
67
- }
68
- function extractItemID(ingredient) {
69
- if (ingredient instanceof ItemTagIngredient) {
70
- return { ...createId(ingredient.tag), isTag: true };
71
- }
72
- if (ingredient instanceof ItemIngredient) {
73
- return ingredient.id;
74
- }
75
- return null;
76
- }
77
- // TODO functions on the ingredient itself?
78
- // TODO common super class maybe even?
79
- function extractBlockID(ingredient) {
80
- if (ingredient instanceof BlockTagIngredient) {
81
- return { ...createId(ingredient.tag), isTag: true };
82
- }
83
- if (ingredient instanceof BlockIngredient) {
84
- return ingredient.id;
85
- }
86
- return null;
87
- }
88
- function extractFluidID(ingredient) {
89
- if (ingredient instanceof FluidTagIngredient) {
90
- return { ...createId(ingredient.tag), isTag: true };
91
- }
92
- if (ingredient instanceof FluidIngredient) {
93
- return ingredient.id;
94
- }
95
- return null;
55
+ return resolveIds(input);
56
+ }) ?? [], tags.registry(registry));
96
57
  }
97
58
  //# sourceMappingURL=filter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../src/common/ingredient/filter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../src/common/ingredient/filter.ts"],"names":[],"mappings":"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"}
@@ -1,73 +1,81 @@
1
- import type { BlockId, FluidId, ItemId } from "@adeficior/data-modifier/generated";
1
+ import type { BlockId, FluidId, ItemId, RegistryId } from "@adeficior/data-modifier/generated";
2
2
  import type RegistryLookup from "../../loader/registry";
3
3
  import type { SemVerInput } from "../../packFormat";
4
- import { type IdInput } from "../id";
4
+ import { type IdInput, type NormalizedId, type TagId } from "../id";
5
5
  import type { Serializable } from "../serializable";
6
6
  export declare abstract class Ingredient implements Serializable {
7
- validate(_?: RegistryLookup): void;
8
- abstract toJSON(packFormat: SemVerInput): unknown;
7
+ validate(_: RegistryLookup): void;
8
+ abstract serialize(packFormat: SemVerInput): unknown;
9
+ abstract idsFor(registry: NormalizedId<RegistryId>): NormalizedId<RegistryId>[];
9
10
  }
10
- export declare class ItemTagIngredient extends Ingredient {
11
- readonly tag: IdInput;
11
+ export declare abstract class TagIngredient extends Ingredient {
12
+ private readonly registry;
13
+ readonly tag: TagId;
14
+ constructor(input: IdInput, registry: NormalizedId<RegistryId>);
15
+ idsFor(registry: NormalizedId<RegistryId>): `#${string}:${string}`[];
16
+ }
17
+ export declare class ItemTagIngredient extends TagIngredient {
12
18
  readonly count: number;
13
19
  constructor(tag: IdInput, count?: number);
14
- toJSON(_packFormat: SemVerInput): {
20
+ serialize(_packFormat: SemVerInput): {
15
21
  tag: `${string}:${string}`;
16
22
  count: number | undefined;
17
23
  };
18
24
  }
19
- export declare class FluidTagIngredient extends Ingredient {
20
- readonly tag: IdInput;
25
+ export declare class FluidTagIngredient extends TagIngredient {
21
26
  readonly amount: number;
22
27
  constructor(tag: IdInput, amount?: number);
23
- toJSON(_packFormat: SemVerInput): {
28
+ serialize(_packFormat: SemVerInput): {
24
29
  fluidTag: `${string}:${string}`;
25
30
  amount: number;
26
31
  };
27
32
  }
28
- export declare class BlockTagIngredient extends Ingredient {
29
- readonly tag: IdInput;
33
+ export declare class BlockTagIngredient extends TagIngredient {
30
34
  constructor(tag: IdInput);
31
- toJSON(_packFormat: SemVerInput): {
35
+ serialize(_packFormat: SemVerInput): {
32
36
  blockTag: `${string}:${string}`;
33
37
  };
34
38
  }
35
- export declare class ItemIngredient extends Ingredient {
36
- readonly id: IdInput<ItemId>;
39
+ export declare abstract class RegistryEntryIngredient<T extends string> extends Ingredient {
40
+ private readonly registry;
41
+ readonly id: NormalizedId<T>;
42
+ constructor(input: IdInput<T>, registry: NormalizedId<RegistryId>);
43
+ idsFor(registry: NormalizedId<RegistryId>): NormalizedId<T>[];
44
+ }
45
+ export declare class ItemIngredient extends RegistryEntryIngredient<ItemId> {
37
46
  readonly count: number;
38
47
  constructor(id: IdInput<ItemId>, count?: number);
39
- toJSON(_packFormat: SemVerInput): {
48
+ serialize(_packFormat: SemVerInput): {
40
49
  item: `${string}:${string}`;
41
50
  count: number | undefined;
42
51
  };
43
- validate(lookup?: RegistryLookup): void;
52
+ validate(lookup: RegistryLookup): void;
44
53
  }
45
- export declare class FluidIngredient extends Ingredient {
46
- readonly id: IdInput<FluidId>;
54
+ export declare class FluidIngredient extends RegistryEntryIngredient<FluidId> {
47
55
  readonly amount: number;
48
56
  readonly chance?: number | undefined;
49
57
  constructor(id: IdInput<FluidId>, amount?: number, chance?: number | undefined);
50
- toJSON(_packFormat: SemVerInput): {
58
+ serialize(_packFormat: SemVerInput): {
51
59
  fluid: `${string}:${string}`;
52
60
  amount: number;
53
61
  };
54
- validate(lookup?: RegistryLookup): void;
62
+ validate(lookup: RegistryLookup): void;
55
63
  }
56
- export declare class BlockIngredient extends Ingredient {
57
- readonly id: IdInput<BlockId>;
64
+ export declare class BlockIngredient extends RegistryEntryIngredient<BlockId> {
58
65
  readonly weight?: number | undefined;
59
66
  constructor(id: IdInput<BlockId>, weight?: number | undefined);
60
- toJSON(_packFormat: SemVerInput): {
67
+ serialize(_packFormat: SemVerInput): {
61
68
  block: `${string}:${string}`;
62
69
  weight: number | undefined;
63
70
  };
64
- validate(lookup?: RegistryLookup): void;
71
+ validate(lookup: RegistryLookup): void;
65
72
  }
66
73
  export declare class ListIngredient extends Ingredient {
67
74
  readonly entries: Ingredient[];
68
75
  constructor(entries: Ingredient[]);
69
- toJSON(packFormat: SemVerInput): unknown[];
70
- validate(lookup?: RegistryLookup): void;
76
+ serialize(packFormat: SemVerInput): unknown[];
77
+ validate(lookup: RegistryLookup): void;
78
+ idsFor(registry: NormalizedId<RegistryId>): `${string}:${string}`[];
71
79
  }
72
80
  export type ItemLikeIngredient = ItemTagIngredient | ItemIngredient;
73
81
  export type FluidLikeIngredient = FluidTagIngredient | FluidIngredient;
@@ -1,99 +1,116 @@
1
- import { encodeId } from "../id";
1
+ import { encodeId, stripTag, toTag, } from "../id";
2
2
  import { BUCKET } from "../units";
3
3
  export class Ingredient {
4
4
  // TODO make required
5
5
  validate(_) { }
6
6
  }
7
- export class ItemTagIngredient extends Ingredient {
7
+ export class TagIngredient extends Ingredient {
8
+ registry;
8
9
  tag;
10
+ constructor(input, registry) {
11
+ super();
12
+ this.registry = registry;
13
+ // TODO complain if input is already a tag?
14
+ this.tag = toTag(input);
15
+ }
16
+ idsFor(registry) {
17
+ if (this.registry === registry)
18
+ return [this.tag];
19
+ return [];
20
+ }
21
+ }
22
+ export class ItemTagIngredient extends TagIngredient {
9
23
  count;
10
24
  constructor(tag, count = 1) {
11
- super();
12
- this.tag = tag;
25
+ super(tag, "minecraft:item");
13
26
  this.count = count;
14
27
  }
15
- toJSON(_packFormat) {
28
+ serialize(_packFormat) {
16
29
  const count = this.count === 1 ? undefined : this.count;
17
- const tag = encodeId(this.tag);
30
+ const tag = stripTag(this.tag);
18
31
  return { tag, count };
19
32
  }
20
33
  }
21
- export class FluidTagIngredient extends Ingredient {
22
- tag;
34
+ export class FluidTagIngredient extends TagIngredient {
23
35
  amount;
24
36
  constructor(tag, amount = BUCKET) {
25
- super();
26
- this.tag = tag;
37
+ super(tag, "minecraft:fluid");
27
38
  this.amount = amount;
28
39
  }
29
- toJSON(_packFormat) {
40
+ serialize(_packFormat) {
30
41
  const { amount } = this;
31
- const tag = encodeId(this.tag);
42
+ const tag = stripTag(this.tag);
32
43
  return { fluidTag: tag, amount };
33
44
  }
34
45
  }
35
- export class BlockTagIngredient extends Ingredient {
36
- tag;
46
+ export class BlockTagIngredient extends TagIngredient {
37
47
  constructor(tag) {
38
- super();
39
- this.tag = tag;
48
+ super(tag, "minecraft:block");
40
49
  }
41
- toJSON(_packFormat) {
42
- const tag = encodeId(this.tag);
50
+ serialize(_packFormat) {
51
+ const tag = stripTag(this.tag);
43
52
  return { blockTag: tag };
44
53
  }
45
54
  }
46
- export class ItemIngredient extends Ingredient {
55
+ export class RegistryEntryIngredient extends Ingredient {
56
+ registry;
47
57
  id;
58
+ constructor(input, registry) {
59
+ super();
60
+ this.registry = registry;
61
+ this.id = encodeId(input);
62
+ }
63
+ idsFor(registry) {
64
+ if (this.registry === registry)
65
+ return [this.id];
66
+ return [];
67
+ }
68
+ }
69
+ export class ItemIngredient extends RegistryEntryIngredient {
48
70
  count;
49
71
  constructor(id, count = 1) {
50
- super();
51
- this.id = id;
72
+ super(id, "minecraft:item");
52
73
  this.count = count;
53
74
  }
54
- toJSON(_packFormat) {
75
+ serialize(_packFormat) {
55
76
  const count = this.count === 1 ? undefined : this.count;
56
77
  const id = encodeId(this.id);
57
78
  return { item: id, count };
58
79
  }
59
80
  validate(lookup) {
60
- lookup?.validateEntry("minecraft:item", this.id);
81
+ lookup.validateEntry("minecraft:item", this.id);
61
82
  }
62
83
  }
63
- export class FluidIngredient extends Ingredient {
64
- id;
84
+ export class FluidIngredient extends RegistryEntryIngredient {
65
85
  amount;
66
86
  chance;
67
87
  constructor(id, amount = BUCKET, chance) {
68
- super();
69
- this.id = id;
88
+ super(id, "minecraft:fluid");
70
89
  this.amount = amount;
71
90
  this.chance = chance;
72
91
  }
73
- toJSON(_packFormat) {
92
+ serialize(_packFormat) {
74
93
  const { amount } = this;
75
94
  const id = encodeId(this.id);
76
95
  return { fluid: id, amount };
77
96
  }
78
97
  validate(lookup) {
79
- lookup?.validateEntry("minecraft:fluid", this.id);
98
+ lookup.validateEntry("minecraft:fluid", this.id);
80
99
  }
81
100
  }
82
- export class BlockIngredient extends Ingredient {
83
- id;
101
+ export class BlockIngredient extends RegistryEntryIngredient {
84
102
  weight;
85
103
  constructor(id, weight) {
86
- super();
87
- this.id = id;
104
+ super(id, "minecraft:block");
88
105
  this.weight = weight;
89
106
  }
90
- toJSON(_packFormat) {
107
+ serialize(_packFormat) {
91
108
  const { weight } = this;
92
109
  const id = encodeId(this.id);
93
110
  return { block: id, weight };
94
111
  }
95
112
  validate(lookup) {
96
- lookup?.validateEntry("minecraft:block", this.id);
113
+ lookup.validateEntry("minecraft:block", this.id);
97
114
  }
98
115
  }
99
116
  export class ListIngredient extends Ingredient {
@@ -102,11 +119,14 @@ export class ListIngredient extends Ingredient {
102
119
  super();
103
120
  this.entries = entries;
104
121
  }
105
- toJSON(packFormat) {
106
- return this.entries.map((it) => it.toJSON(packFormat));
122
+ serialize(packFormat) {
123
+ return this.entries.map((it) => it.serialize(packFormat));
107
124
  }
108
125
  validate(lookup) {
109
126
  this.entries.forEach((it) => it.validate(lookup));
110
127
  }
128
+ idsFor(registry) {
129
+ return this.entries.flatMap((it) => it.idsFor(registry));
130
+ }
111
131
  }
112
132
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/common/ingredient/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/common/ingredient/index.ts"],"names":[],"mappings":"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"}
@@ -68,7 +68,7 @@ export default class IngredientSerializer {
68
68
  this.deserializer = new OldDeserializer();
69
69
  }
70
70
  serialize(ingredient) {
71
- return ingredient.toJSON(this.packFormat);
71
+ return ingredient.serialize(this.packFormat);
72
72
  }
73
73
  serializeList(ingredients) {
74
74
  return ingredients.map((it) => this.serialize(it));
@@ -1 +1 @@
1
- {"version":3,"file":"serializer.js","sourceRoot":"","sources":["../../../src/common/ingredient/serializer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serializer.js","sourceRoot":"","sources":["../../../src/common/ingredient/serializer.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { Result } from ".";
2
2
  import type { PackContext } from "../../loader/context";
3
- import { type CommonTest, type Predicate } from "../predicates";
3
+ import { type CommonFilter, type Predicate } from "../filters";
4
4
  import type { ResultInput } from "./input";
5
- export type ResultTest = CommonTest<Result> | ResultInput;
6
- export default function resolveResultTest(test: ResultTest, context: Omit<PackContext, "ingredients">): Predicate<ResultInput>;
5
+ export type ResultFilter = CommonFilter<Result> | ResultInput;
6
+ export default function createResultFilter(test: ResultFilter, context: Omit<PackContext, "ingredients">): Predicate<ResultInput>;