@sandstone-mc/mcdoc-ts-generator 0.1.5 → 0.1.6
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/cli.js +33 -15
- package/dist/index.d.ts +1 -0
- package/dist/index.js +34 -15
- package/dist/typegen/index.d.ts +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -28,6 +28,8 @@ function pascal_case(name) {
|
|
|
28
28
|
return words.map((word) => word[0].toUpperCase() + word.slice(1)).join("");
|
|
29
29
|
}
|
|
30
30
|
function pluralize(name) {
|
|
31
|
+
if (name.endsWith("ey"))
|
|
32
|
+
return name + "s";
|
|
31
33
|
if (name.endsWith("y"))
|
|
32
34
|
return name.slice(0, -1) + "ies";
|
|
33
35
|
if (name.endsWith("s") || name.endsWith("ch") || name.endsWith("sh") || name.endsWith("x") || name.endsWith("z"))
|
|
@@ -1803,15 +1805,12 @@ function mcdoc_string(type) {
|
|
|
1803
1805
|
}).with({ name: "time_pattern" }, () => {
|
|
1804
1806
|
return (args) => static_value3.time;
|
|
1805
1807
|
}).with({ name: "translation_key" }, () => {
|
|
1806
|
-
const
|
|
1807
|
-
const LiteralUnion = "LiteralUnion";
|
|
1808
|
+
const Registry = "::java::registry::Registry";
|
|
1808
1809
|
return (args) => ({
|
|
1809
|
-
type: factory17.createTypeReferenceNode(
|
|
1810
|
-
factory17.createTypeReferenceNode(TRANSLATION_KEYS)
|
|
1811
|
-
]),
|
|
1810
|
+
type: factory17.createIndexedAccessTypeNode(factory17.createTypeReferenceNode("Registry"), Bind.StringLiteral("minecraft:translation_key")),
|
|
1812
1811
|
imports: {
|
|
1813
|
-
ordered: [
|
|
1814
|
-
check: new Map([[
|
|
1812
|
+
ordered: [Registry],
|
|
1813
|
+
check: new Map([[Registry, 0]])
|
|
1815
1814
|
}
|
|
1816
1815
|
});
|
|
1817
1816
|
}).with({ name: "translation_value" }, () => {
|
|
@@ -2637,9 +2636,9 @@ class TypesGenerator {
|
|
|
2637
2636
|
resolved_symbols = new Map;
|
|
2638
2637
|
resolved_dispatchers = new Map;
|
|
2639
2638
|
constructor() {}
|
|
2640
|
-
resolve_types(symbols) {
|
|
2639
|
+
resolve_types(symbols, translation_keys) {
|
|
2641
2640
|
console.log("registries");
|
|
2642
|
-
this.resolve_registry_symbols(symbols);
|
|
2641
|
+
this.resolve_registry_symbols(symbols, translation_keys);
|
|
2643
2642
|
const registry_exports = export_registry(this.resolved_registries);
|
|
2644
2643
|
this.resolved_symbols.set("::java::registry", registry_exports);
|
|
2645
2644
|
const dispatchers = symbols.getVisibleSymbols("mcdoc/dispatcher");
|
|
@@ -2656,12 +2655,12 @@ class TypesGenerator {
|
|
|
2656
2655
|
const dispatcher_exports = export_dispatcher(this.resolved_dispatchers);
|
|
2657
2656
|
this.resolved_symbols.set("mcdoc::dispatcher", dispatcher_exports);
|
|
2658
2657
|
}
|
|
2659
|
-
resolve_registry_symbols(registries) {
|
|
2660
|
-
for (const registry_name of AllCategories) {
|
|
2658
|
+
resolve_registry_symbols(registries, translation_keys) {
|
|
2659
|
+
for (const registry_name of [...AllCategories]) {
|
|
2661
2660
|
if (registry_name === "mcdoc" || registry_name === "mcdoc/dispatcher") {
|
|
2662
2661
|
continue;
|
|
2663
2662
|
}
|
|
2664
|
-
const registry = Object.keys(registries.getVisibleSymbols(registry_name));
|
|
2663
|
+
const registry = registry_name === "translation_key" ? translation_keys : Object.keys(registries.getVisibleSymbols(registry_name));
|
|
2665
2664
|
if (registry.length === 0)
|
|
2666
2665
|
continue;
|
|
2667
2666
|
const type_name = pluralize(registry_name.split("/").join("_")).toUpperCase();
|
|
@@ -2886,7 +2885,13 @@ function handle_imports(imports) {
|
|
|
2886
2885
|
} else if (path[1] === "java") {
|
|
2887
2886
|
file = `sandstone/arguments/generated/${path.slice(2).join("/")}.js`;
|
|
2888
2887
|
} else if (path[0] === "sandstone") {
|
|
2889
|
-
|
|
2888
|
+
if (path.length === 1) {
|
|
2889
|
+
file = "sandstone";
|
|
2890
|
+
} else if (path[1] === "arguments" && path.length === 2) {
|
|
2891
|
+
file = "sandstone/arguments";
|
|
2892
|
+
} else {
|
|
2893
|
+
file = `${path.join("/")}.js`;
|
|
2894
|
+
}
|
|
2890
2895
|
} else {
|
|
2891
2896
|
throw new Error(`[mcdoc_import] Unsupported import location "${path[0]}" in "${import_path}"`);
|
|
2892
2897
|
}
|
|
@@ -2984,6 +2989,18 @@ async function fetchBlockStates(versionId) {
|
|
|
2984
2989
|
}
|
|
2985
2990
|
return [result, etag];
|
|
2986
2991
|
}
|
|
2992
|
+
async function fetchTranslationKeys() {
|
|
2993
|
+
console.debug(`[fetchTranslationKeys] latest from github`);
|
|
2994
|
+
const result = new Map;
|
|
2995
|
+
try {
|
|
2996
|
+
const req = await fetchWithCache(`https://raw.githubusercontent.com/misode/mcmeta/refs/heads/assets-tiny/assets/minecraft/lang/en_us.json`);
|
|
2997
|
+
const data = await req.json();
|
|
2998
|
+
return Object.keys(data).map((key) => `minecraft:${key}`);
|
|
2999
|
+
} catch (e) {
|
|
3000
|
+
console.warn("Error occurred while fetching translation keys:", errorMessage(e));
|
|
3001
|
+
}
|
|
3002
|
+
return [];
|
|
3003
|
+
}
|
|
2987
3004
|
var VanillaMcdocUri = "mcdoc://vanilla-mcdoc/symbols.json";
|
|
2988
3005
|
function vanillaMcdocRegistrar(vanillaMcdoc) {
|
|
2989
3006
|
return (symbols) => {
|
|
@@ -3058,7 +3075,7 @@ async function generate(options = {}) {
|
|
|
3058
3075
|
await service.project.ready();
|
|
3059
3076
|
await service.project.cacheService.save();
|
|
3060
3077
|
const type_gen = new TypesGenerator;
|
|
3061
|
-
type_gen.resolve_types(service.project.symbols);
|
|
3078
|
+
type_gen.resolve_types(service.project.symbols, await fetchTranslationKeys());
|
|
3062
3079
|
for await (const [symbol_path, { exports, imports }] of type_gen.resolved_symbols.entries()) {
|
|
3063
3080
|
const parts = symbol_path.split("::");
|
|
3064
3081
|
if (parts[0] === "") {
|
|
@@ -3084,7 +3101,8 @@ async function generate(options = {}) {
|
|
|
3084
3101
|
baseUrl: "./",
|
|
3085
3102
|
paths: {
|
|
3086
3103
|
sandstone: ["../sandstone-types/index.ts"],
|
|
3087
|
-
"sandstone/arguments
|
|
3104
|
+
"sandstone/arguments": ["../sandstone-types/arguments/index.ts"],
|
|
3105
|
+
"sandstone/arguments/generated/*": ["./*"]
|
|
3088
3106
|
}
|
|
3089
3107
|
}
|
|
3090
3108
|
}, null, 2));
|
package/dist/index.d.ts
CHANGED
|
@@ -14,4 +14,5 @@ export declare function fetchVanillaMcdoc(): Promise<VanillaMcdocSymbols>;
|
|
|
14
14
|
export declare function fetchRegistries(versionId: string): Promise<readonly [Map<string, string[]>, string]>;
|
|
15
15
|
export type BlockStateData = [Record<string, string[]>, Record<string, string>];
|
|
16
16
|
export declare function fetchBlockStates(versionId: string): Promise<readonly [Map<string, BlockStateData>, string]>;
|
|
17
|
+
export declare function fetchTranslationKeys(): Promise<string[]>;
|
|
17
18
|
export declare function generate(options?: GeneratorOptions): Promise<void>;
|
package/dist/index.js
CHANGED
|
@@ -26,6 +26,8 @@ function pascal_case(name) {
|
|
|
26
26
|
return words.map((word) => word[0].toUpperCase() + word.slice(1)).join("");
|
|
27
27
|
}
|
|
28
28
|
function pluralize(name) {
|
|
29
|
+
if (name.endsWith("ey"))
|
|
30
|
+
return name + "s";
|
|
29
31
|
if (name.endsWith("y"))
|
|
30
32
|
return name.slice(0, -1) + "ies";
|
|
31
33
|
if (name.endsWith("s") || name.endsWith("ch") || name.endsWith("sh") || name.endsWith("x") || name.endsWith("z"))
|
|
@@ -1801,15 +1803,12 @@ function mcdoc_string(type) {
|
|
|
1801
1803
|
}).with({ name: "time_pattern" }, () => {
|
|
1802
1804
|
return (args) => static_value3.time;
|
|
1803
1805
|
}).with({ name: "translation_key" }, () => {
|
|
1804
|
-
const
|
|
1805
|
-
const LiteralUnion = "LiteralUnion";
|
|
1806
|
+
const Registry = "::java::registry::Registry";
|
|
1806
1807
|
return (args) => ({
|
|
1807
|
-
type: factory17.createTypeReferenceNode(
|
|
1808
|
-
factory17.createTypeReferenceNode(TRANSLATION_KEYS)
|
|
1809
|
-
]),
|
|
1808
|
+
type: factory17.createIndexedAccessTypeNode(factory17.createTypeReferenceNode("Registry"), Bind.StringLiteral("minecraft:translation_key")),
|
|
1810
1809
|
imports: {
|
|
1811
|
-
ordered: [
|
|
1812
|
-
check: new Map([[
|
|
1810
|
+
ordered: [Registry],
|
|
1811
|
+
check: new Map([[Registry, 0]])
|
|
1813
1812
|
}
|
|
1814
1813
|
});
|
|
1815
1814
|
}).with({ name: "translation_value" }, () => {
|
|
@@ -2635,9 +2634,9 @@ class TypesGenerator {
|
|
|
2635
2634
|
resolved_symbols = new Map;
|
|
2636
2635
|
resolved_dispatchers = new Map;
|
|
2637
2636
|
constructor() {}
|
|
2638
|
-
resolve_types(symbols) {
|
|
2637
|
+
resolve_types(symbols, translation_keys) {
|
|
2639
2638
|
console.log("registries");
|
|
2640
|
-
this.resolve_registry_symbols(symbols);
|
|
2639
|
+
this.resolve_registry_symbols(symbols, translation_keys);
|
|
2641
2640
|
const registry_exports = export_registry(this.resolved_registries);
|
|
2642
2641
|
this.resolved_symbols.set("::java::registry", registry_exports);
|
|
2643
2642
|
const dispatchers = symbols.getVisibleSymbols("mcdoc/dispatcher");
|
|
@@ -2654,12 +2653,12 @@ class TypesGenerator {
|
|
|
2654
2653
|
const dispatcher_exports = export_dispatcher(this.resolved_dispatchers);
|
|
2655
2654
|
this.resolved_symbols.set("mcdoc::dispatcher", dispatcher_exports);
|
|
2656
2655
|
}
|
|
2657
|
-
resolve_registry_symbols(registries) {
|
|
2658
|
-
for (const registry_name of AllCategories) {
|
|
2656
|
+
resolve_registry_symbols(registries, translation_keys) {
|
|
2657
|
+
for (const registry_name of [...AllCategories]) {
|
|
2659
2658
|
if (registry_name === "mcdoc" || registry_name === "mcdoc/dispatcher") {
|
|
2660
2659
|
continue;
|
|
2661
2660
|
}
|
|
2662
|
-
const registry = Object.keys(registries.getVisibleSymbols(registry_name));
|
|
2661
|
+
const registry = registry_name === "translation_key" ? translation_keys : Object.keys(registries.getVisibleSymbols(registry_name));
|
|
2663
2662
|
if (registry.length === 0)
|
|
2664
2663
|
continue;
|
|
2665
2664
|
const type_name = pluralize(registry_name.split("/").join("_")).toUpperCase();
|
|
@@ -2884,7 +2883,13 @@ function handle_imports(imports) {
|
|
|
2884
2883
|
} else if (path[1] === "java") {
|
|
2885
2884
|
file = `sandstone/arguments/generated/${path.slice(2).join("/")}.js`;
|
|
2886
2885
|
} else if (path[0] === "sandstone") {
|
|
2887
|
-
|
|
2886
|
+
if (path.length === 1) {
|
|
2887
|
+
file = "sandstone";
|
|
2888
|
+
} else if (path[1] === "arguments" && path.length === 2) {
|
|
2889
|
+
file = "sandstone/arguments";
|
|
2890
|
+
} else {
|
|
2891
|
+
file = `${path.join("/")}.js`;
|
|
2892
|
+
}
|
|
2888
2893
|
} else {
|
|
2889
2894
|
throw new Error(`[mcdoc_import] Unsupported import location "${path[0]}" in "${import_path}"`);
|
|
2890
2895
|
}
|
|
@@ -2982,6 +2987,18 @@ async function fetchBlockStates(versionId) {
|
|
|
2982
2987
|
}
|
|
2983
2988
|
return [result, etag];
|
|
2984
2989
|
}
|
|
2990
|
+
async function fetchTranslationKeys() {
|
|
2991
|
+
console.debug(`[fetchTranslationKeys] latest from github`);
|
|
2992
|
+
const result = new Map;
|
|
2993
|
+
try {
|
|
2994
|
+
const req = await fetchWithCache(`https://raw.githubusercontent.com/misode/mcmeta/refs/heads/assets-tiny/assets/minecraft/lang/en_us.json`);
|
|
2995
|
+
const data = await req.json();
|
|
2996
|
+
return Object.keys(data).map((key) => `minecraft:${key}`);
|
|
2997
|
+
} catch (e) {
|
|
2998
|
+
console.warn("Error occurred while fetching translation keys:", errorMessage(e));
|
|
2999
|
+
}
|
|
3000
|
+
return [];
|
|
3001
|
+
}
|
|
2985
3002
|
var VanillaMcdocUri = "mcdoc://vanilla-mcdoc/symbols.json";
|
|
2986
3003
|
function vanillaMcdocRegistrar(vanillaMcdoc) {
|
|
2987
3004
|
return (symbols) => {
|
|
@@ -3056,7 +3073,7 @@ async function generate(options = {}) {
|
|
|
3056
3073
|
await service.project.ready();
|
|
3057
3074
|
await service.project.cacheService.save();
|
|
3058
3075
|
const type_gen = new TypesGenerator;
|
|
3059
|
-
type_gen.resolve_types(service.project.symbols);
|
|
3076
|
+
type_gen.resolve_types(service.project.symbols, await fetchTranslationKeys());
|
|
3060
3077
|
for await (const [symbol_path, { exports, imports }] of type_gen.resolved_symbols.entries()) {
|
|
3061
3078
|
const parts = symbol_path.split("::");
|
|
3062
3079
|
if (parts[0] === "") {
|
|
@@ -3082,7 +3099,8 @@ async function generate(options = {}) {
|
|
|
3082
3099
|
baseUrl: "./",
|
|
3083
3100
|
paths: {
|
|
3084
3101
|
sandstone: ["../sandstone-types/index.ts"],
|
|
3085
|
-
"sandstone/arguments
|
|
3102
|
+
"sandstone/arguments": ["../sandstone-types/arguments/index.ts"],
|
|
3103
|
+
"sandstone/arguments/generated/*": ["./*"]
|
|
3086
3104
|
}
|
|
3087
3105
|
}
|
|
3088
3106
|
}, null, 2));
|
|
@@ -3093,6 +3111,7 @@ export {
|
|
|
3093
3111
|
mcdoc_raw,
|
|
3094
3112
|
generate,
|
|
3095
3113
|
fetchVanillaMcdoc,
|
|
3114
|
+
fetchTranslationKeys,
|
|
3096
3115
|
fetchRegistries,
|
|
3097
3116
|
fetchBlockStates
|
|
3098
3117
|
};
|
package/dist/typegen/index.d.ts
CHANGED
|
@@ -31,7 +31,7 @@ export declare class TypesGenerator {
|
|
|
31
31
|
readonly resolved_symbols: Map<string, ResolvedSymbol>;
|
|
32
32
|
readonly resolved_dispatchers: Map<string, ResolvedDispatcher>;
|
|
33
33
|
constructor();
|
|
34
|
-
resolve_types(symbols: SymbolUtil): void;
|
|
34
|
+
resolve_types(symbols: SymbolUtil, translation_keys: string[]): void;
|
|
35
35
|
private resolve_registry_symbols;
|
|
36
36
|
private resolve_module_symbols;
|
|
37
37
|
private resolve_dispatcher_symbols;
|