@neocompose/cli 0.70.3 → 0.70.4
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/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.70.4] - 2026-10-06
|
|
4
|
+
|
|
5
|
+
- `neo test <file>` runs in a workspace reached through a symlink, such as one under `/tmp` or `/var` on macOS or a symlinked dev folder. Before, every explicit selector failed with "resolves outside the workspace through a symlink", because the selector's real path was compared with the unresolved workspace root. A selector that really does leave the workspace through a symlink still fails.
|
|
6
|
+
- `neo doctor` accepts a VS Code analysis cache written before 0.70.3. 0.70.3 required the new initializer location on every configuration global, so doctor reported an older cache as incompatible until `neo status` or `neo pull` rewrote it.
|
|
7
|
+
|
|
3
8
|
## [0.70.3] - 2026-10-06
|
|
4
9
|
|
|
5
10
|
- `neo export` reads each project file from the path its declaration names. Moving a file to another folder without renaming it changes no record, so nothing is pushed. Before, the export kept reading the old path and failed with "missing". A new file dropped at the old path is now discovered as a new file, and `neo resolve` writes a conflicted file to its moved path.
|
package/dist/neo.mjs
CHANGED
|
@@ -31614,16 +31614,12 @@ function assertEnum(value, path) {
|
|
|
31614
31614
|
}
|
|
31615
31615
|
function assertGlobal(value, path) {
|
|
31616
31616
|
const global = record(value, path);
|
|
31617
|
-
|
|
31618
|
-
|
|
31619
|
-
|
|
31620
|
-
"source",
|
|
31621
|
-
"
|
|
31622
|
-
|
|
31623
|
-
"annotations",
|
|
31624
|
-
"initializer",
|
|
31625
|
-
"initializerSource"
|
|
31626
|
-
]);
|
|
31617
|
+
exactKeysWithOptional(
|
|
31618
|
+
global,
|
|
31619
|
+
path,
|
|
31620
|
+
["id", "state", "source", "name", "type", "annotations", "initializer"],
|
|
31621
|
+
["initializerSource"]
|
|
31622
|
+
);
|
|
31627
31623
|
assertIdentity(global, path);
|
|
31628
31624
|
if (global.initializerSource !== void 0)
|
|
31629
31625
|
assertLocation(global.initializerSource, `${path}.initializerSource`);
|
|
@@ -31937,7 +31933,7 @@ var init_registry = __esm({
|
|
|
31937
31933
|
"../packages/manifest/schema-contract/registry.mjs"() {
|
|
31938
31934
|
"use strict";
|
|
31939
31935
|
PROJECT_SCHEMA_CONTRACT = Object.freeze({
|
|
31940
|
-
cliVersion: "0.70.
|
|
31936
|
+
cliVersion: "0.70.4",
|
|
31941
31937
|
projectFileUploadBatchSize: 32,
|
|
31942
31938
|
documentRecords: {
|
|
31943
31939
|
member: {
|
|
@@ -112869,6 +112865,22 @@ function createGenerationContext(exportData, diagnostics, docs = EMPTY_UNITY_COD
|
|
|
112869
112865
|
`${exportData.project.name}Neo`,
|
|
112870
112866
|
"NeoProject"
|
|
112871
112867
|
);
|
|
112868
|
+
const enums = Object.values(exportData.enums);
|
|
112869
|
+
const enumNames = buildEnumNameMap(enums, diagnostics);
|
|
112870
|
+
const typeNames = buildNameMap(
|
|
112871
|
+
Object.values(exportData.classes),
|
|
112872
|
+
"Type",
|
|
112873
|
+
diagnostics
|
|
112874
|
+
);
|
|
112875
|
+
const interfaceNames = buildNameMap(
|
|
112876
|
+
Object.values(exportData.interfaces),
|
|
112877
|
+
"Interface",
|
|
112878
|
+
diagnostics
|
|
112879
|
+
);
|
|
112880
|
+
const dialogueGroupClassNames = buildDialogueGroupClassNameMap(
|
|
112881
|
+
dialogueGroups,
|
|
112882
|
+
diagnostics
|
|
112883
|
+
);
|
|
112872
112884
|
return {
|
|
112873
112885
|
exportData,
|
|
112874
112886
|
docs,
|
|
@@ -112876,22 +112888,23 @@ function createGenerationContext(exportData, diagnostics, docs = EMPTY_UNITY_COD
|
|
|
112876
112888
|
classes: Object.values(exportData.classes),
|
|
112877
112889
|
interfaces: Object.values(exportData.interfaces),
|
|
112878
112890
|
diagnostics,
|
|
112879
|
-
enumNames
|
|
112880
|
-
|
|
112881
|
-
|
|
112882
|
-
|
|
112883
|
-
|
|
112884
|
-
|
|
112885
|
-
|
|
112886
|
-
|
|
112887
|
-
|
|
112888
|
-
|
|
112889
|
-
|
|
112890
|
-
),
|
|
112891
|
-
dialogueGroupClassNames: buildDialogueGroupClassNameMap(
|
|
112892
|
-
dialogueGroups,
|
|
112891
|
+
enumNames,
|
|
112892
|
+
enumOptionsNames: buildEnumOptionsNameMap(
|
|
112893
|
+
enums,
|
|
112894
|
+
enumNames,
|
|
112895
|
+
[
|
|
112896
|
+
projectClassName,
|
|
112897
|
+
...enumNames.values(),
|
|
112898
|
+
...typeNames.values(),
|
|
112899
|
+
...interfaceNames.values(),
|
|
112900
|
+
...dialogueGroupClassNames.values()
|
|
112901
|
+
],
|
|
112893
112902
|
diagnostics
|
|
112894
112903
|
),
|
|
112904
|
+
enumOptionFieldNames: /* @__PURE__ */ new Map(),
|
|
112905
|
+
typeNames,
|
|
112906
|
+
interfaceNames,
|
|
112907
|
+
dialogueGroupClassNames,
|
|
112895
112908
|
dialogueGroupPropertyNames: buildDialogueGroupPropertyNameMap(
|
|
112896
112909
|
dialogueGroups,
|
|
112897
112910
|
diagnostics
|
|
@@ -112972,6 +112985,29 @@ function buildEnumNameMap(enums, diagnostics) {
|
|
|
112972
112985
|
}
|
|
112973
112986
|
return names;
|
|
112974
112987
|
}
|
|
112988
|
+
function buildEnumOptionsNameMap(enums, enumNames, typeNames, diagnostics) {
|
|
112989
|
+
const taken = new Set(typeNames);
|
|
112990
|
+
const names = /* @__PURE__ */ new Map();
|
|
112991
|
+
for (const enumDef of enums) {
|
|
112992
|
+
const enumName = enumNames.get(enumDef.id);
|
|
112993
|
+
if (enumName === void 0) continue;
|
|
112994
|
+
const baseName = `${enumName}Options`;
|
|
112995
|
+
if (sdkRuntimeEnumBinding(enumDef.id) !== void 0 || !taken.has(baseName)) {
|
|
112996
|
+
taken.add(baseName);
|
|
112997
|
+
names.set(enumDef.id, baseName);
|
|
112998
|
+
continue;
|
|
112999
|
+
}
|
|
113000
|
+
const uniqueName = `${baseName}_${shortId(enumDef.id)}`;
|
|
113001
|
+
diagnostics.push({
|
|
113002
|
+
severity: "warning",
|
|
113003
|
+
message: `Generated C# options class "${baseName}" for enum "${enumDef.name}" collides with another generated type; using "${uniqueName}".`,
|
|
113004
|
+
path: `enums.${enumDef.id}.name`
|
|
113005
|
+
});
|
|
113006
|
+
taken.add(uniqueName);
|
|
113007
|
+
names.set(enumDef.id, uniqueName);
|
|
113008
|
+
}
|
|
113009
|
+
return names;
|
|
113010
|
+
}
|
|
112975
113011
|
function buildDialogueGroupClassNameMap(groups, diagnostics) {
|
|
112976
113012
|
const baseNames = buildNameMap(groups, "DialogueGroup", diagnostics);
|
|
112977
113013
|
const used = /* @__PURE__ */ new Map();
|
|
@@ -146676,8 +146712,13 @@ function staticDelegate(target, parameters) {
|
|
|
146676
146712
|
const list = parameters.join(", ");
|
|
146677
146713
|
return `static (${list}) => ${target}(${list})`;
|
|
146678
146714
|
}
|
|
146679
|
-
function
|
|
146680
|
-
return
|
|
146715
|
+
function enumOptionsName(ctx, enumId) {
|
|
146716
|
+
return ctx.enumOptionsNames.get(enumId) ?? "NeoEnumOptions";
|
|
146717
|
+
}
|
|
146718
|
+
function enumParser(ctx, enumId) {
|
|
146719
|
+
return staticDelegate(`${enumOptionsName(ctx, enumId)}.FromOptionId`, [
|
|
146720
|
+
"factoryOptionId"
|
|
146721
|
+
]);
|
|
146681
146722
|
}
|
|
146682
146723
|
function immediateInvocationArguments(receiver, argumentNames) {
|
|
146683
146724
|
const values = argumentNames.length === 1 ? [`(object?)(${argumentNames[0]})`] : argumentNames.length <= 4 ? argumentNames : [`new object?[] { ${argumentNames.join(", ")} }`];
|
|
@@ -146691,10 +146732,7 @@ function enumOptionFieldName(ctx, enumId, optionId) {
|
|
|
146691
146732
|
const enumDef = ctx.exportData.enums[enumId];
|
|
146692
146733
|
if (enumDef !== void 0) {
|
|
146693
146734
|
const enumName = ctx.enumNames.get(enumId) ?? toCSharpTypeName(enumDef.name, "NeoEnum");
|
|
146694
|
-
const taken = /* @__PURE__ */ new Set([
|
|
146695
|
-
enumName,
|
|
146696
|
-
...GENERATED_ENUM_CLASS_MEMBER_NAMES
|
|
146697
|
-
]);
|
|
146735
|
+
const taken = /* @__PURE__ */ new Set(["value__"]);
|
|
146698
146736
|
for (const key of getEnumOptionKeyOrder(enumDef)) {
|
|
146699
146737
|
const option = enumDef.options[key];
|
|
146700
146738
|
if (option === void 0) continue;
|
|
@@ -146707,7 +146745,7 @@ function enumOptionFieldName(ctx, enumId, optionId) {
|
|
|
146707
146745
|
unique = `${preferred}_${ordinal}`;
|
|
146708
146746
|
ctx.diagnostics.push({
|
|
146709
146747
|
severity: "warning",
|
|
146710
|
-
message: `Enum option "${option.name}" collides with
|
|
146748
|
+
message: `Enum option "${option.name}" collides with another member of the generated C# enum "${enumName}"; using "${unique}".`,
|
|
146711
146749
|
path: `enums.${enumId}.options.${key}`
|
|
146712
146750
|
});
|
|
146713
146751
|
}
|
|
@@ -146718,118 +146756,141 @@ function enumOptionFieldName(ctx, enumId, optionId) {
|
|
|
146718
146756
|
}
|
|
146719
146757
|
return names.get(optionId) ?? null;
|
|
146720
146758
|
}
|
|
146759
|
+
function enumMemberValue(optionId) {
|
|
146760
|
+
let hash = 2166136261;
|
|
146761
|
+
for (let index = 0; index < optionId.length; index++) {
|
|
146762
|
+
hash = Math.imul(hash ^ optionId.charCodeAt(index), 16777619);
|
|
146763
|
+
}
|
|
146764
|
+
return (hash >>> 0) % 2147483647 + 1;
|
|
146765
|
+
}
|
|
146721
146766
|
function generateEnumClass(ctx, enumId) {
|
|
146722
146767
|
const enumDef = ctx.exportData.enums[enumId];
|
|
146723
146768
|
if (enumDef === void 0) return [];
|
|
146724
146769
|
if (sdkRuntimeEnumBinding(enumId) !== void 0) return [];
|
|
146725
146770
|
const enumName = ctx.enumNames.get(enumId) ?? toCSharpTypeName(enumDef.name, "NeoEnum");
|
|
146726
|
-
const
|
|
146771
|
+
const optionsName = enumOptionsName(ctx, enumId);
|
|
146772
|
+
const optionsByValue = /* @__PURE__ */ new Map();
|
|
146773
|
+
const options = getEnumOptionKeyOrder(enumDef).flatMap((optionId) => {
|
|
146774
|
+
const option = enumDef.options[optionId];
|
|
146775
|
+
if (option === void 0) {
|
|
146776
|
+
throw new Error(
|
|
146777
|
+
`Enum ${enumId} option order references missing option ${optionId}.`
|
|
146778
|
+
);
|
|
146779
|
+
}
|
|
146780
|
+
const fieldName = enumOptionFieldName(ctx, enumId, optionId);
|
|
146781
|
+
if (fieldName === null) {
|
|
146782
|
+
ctx.diagnostics.push({
|
|
146783
|
+
severity: "error",
|
|
146784
|
+
message: `Enum option name "${option.name}" is not a valid C# identifier.`,
|
|
146785
|
+
path: `enums.${enumId}.options.${optionId}`
|
|
146786
|
+
});
|
|
146787
|
+
return [];
|
|
146788
|
+
}
|
|
146789
|
+
const value = enumMemberValue(optionId);
|
|
146790
|
+
const clash = optionsByValue.get(value);
|
|
146791
|
+
if (clash !== void 0) {
|
|
146792
|
+
ctx.diagnostics.push({
|
|
146793
|
+
severity: "error",
|
|
146794
|
+
message: `Enum options "${clash}" and "${option.name}" generate the same C# enum value; recreate one of them to give it a new option id.`,
|
|
146795
|
+
path: `enums.${enumId}.options.${optionId}`
|
|
146796
|
+
});
|
|
146797
|
+
return [];
|
|
146798
|
+
}
|
|
146799
|
+
optionsByValue.set(value, option.name);
|
|
146800
|
+
return [
|
|
146801
|
+
{
|
|
146802
|
+
optionId,
|
|
146803
|
+
value,
|
|
146804
|
+
id: `"${escapeCSharpString(optionId)}"`,
|
|
146805
|
+
member: `${enumName}.${fieldName}`,
|
|
146806
|
+
fieldName,
|
|
146807
|
+
text: `"${escapeCSharpString(option.text)}"`
|
|
146808
|
+
}
|
|
146809
|
+
];
|
|
146810
|
+
});
|
|
146811
|
+
const switchBody = (subject, arms, fallback) => [
|
|
146812
|
+
`return ${subject} switch`,
|
|
146813
|
+
"{",
|
|
146814
|
+
...indent([...arms, `_ => ${fallback},`]),
|
|
146815
|
+
"};"
|
|
146816
|
+
];
|
|
146817
|
+
const method2 = (signature, body) => [
|
|
146818
|
+
signature,
|
|
146819
|
+
"{",
|
|
146820
|
+
...indent(body),
|
|
146821
|
+
"}"
|
|
146822
|
+
];
|
|
146727
146823
|
return [
|
|
146728
146824
|
...xmlSummary(ctx.docs.enums[enumId]),
|
|
146729
|
-
`
|
|
146825
|
+
`[NeoEnum(typeof(${optionsName}))]`,
|
|
146826
|
+
`public enum ${enumName}`,
|
|
146827
|
+
"{",
|
|
146828
|
+
...indent(
|
|
146829
|
+
options.flatMap((option) => [
|
|
146830
|
+
...xmlSummary(ctx.docs.enumOptions[option.optionId]),
|
|
146831
|
+
`${option.fieldName} = ${option.value},`
|
|
146832
|
+
])
|
|
146833
|
+
),
|
|
146834
|
+
"}",
|
|
146835
|
+
"",
|
|
146836
|
+
"/// <summary>",
|
|
146837
|
+
`/// Converts <see cref="${enumName}"/> to and from the option ids Neo stores.`,
|
|
146838
|
+
"/// </summary>",
|
|
146839
|
+
`public static class ${optionsName}`,
|
|
146730
146840
|
"{",
|
|
146731
146841
|
...indent([
|
|
146732
|
-
|
|
146733
|
-
|
|
146734
|
-
|
|
146735
|
-
|
|
146736
|
-
|
|
146737
|
-
|
|
146738
|
-
|
|
146739
|
-
|
|
146740
|
-
"}",
|
|
146741
|
-
"",
|
|
146742
|
-
...optionKeyOrder.flatMap((optionId) => {
|
|
146743
|
-
const option = enumDef.options[optionId];
|
|
146744
|
-
if (option === void 0) {
|
|
146745
|
-
throw new Error(
|
|
146746
|
-
`Enum ${enumId} option order references missing option ${optionId}.`
|
|
146747
|
-
);
|
|
146748
|
-
}
|
|
146749
|
-
const optionName = option.name;
|
|
146750
|
-
const fieldName = enumOptionFieldName(ctx, enumId, optionId);
|
|
146751
|
-
if (fieldName === null) {
|
|
146752
|
-
ctx.diagnostics.push({
|
|
146753
|
-
severity: "error",
|
|
146754
|
-
message: `Enum option name "${optionName}" is not a valid C# identifier.`,
|
|
146755
|
-
path: `enums.${enumId}.options.${optionId}`
|
|
146756
|
-
});
|
|
146757
|
-
return [`// Skipped invalid option id: ${optionId}`];
|
|
146758
|
-
}
|
|
146759
|
-
return [
|
|
146760
|
-
...xmlSummary(ctx.docs.enumOptions[optionId]),
|
|
146761
|
-
`public static readonly ${enumName} ${fieldName} = FromOptionId("${escapeCSharpString(optionId)}");`
|
|
146762
|
-
];
|
|
146763
|
-
}),
|
|
146764
|
-
"",
|
|
146765
|
-
`public static ${enumName} FromOptionId(string optionId)`,
|
|
146766
|
-
"{",
|
|
146767
|
-
...indent([
|
|
146768
|
-
"if (values.TryGetValue(optionId, out var known)) return known;",
|
|
146769
|
-
`var created = new ${enumName}(optionId);`,
|
|
146770
|
-
"values[optionId] = created;",
|
|
146771
|
-
"return created;"
|
|
146772
|
-
]),
|
|
146773
|
-
"}",
|
|
146842
|
+
...method2(
|
|
146843
|
+
`public static ${enumName} FromOptionId(string optionId)`,
|
|
146844
|
+
switchBody(
|
|
146845
|
+
"optionId",
|
|
146846
|
+
options.map((option) => `${option.id} => ${option.member},`),
|
|
146847
|
+
`NeoUndeclaredEnumOptions<${enumName}>.FromOptionId(optionId)`
|
|
146848
|
+
)
|
|
146849
|
+
),
|
|
146774
146850
|
"",
|
|
146775
|
-
|
|
146776
|
-
|
|
146777
|
-
|
|
146778
|
-
|
|
146779
|
-
|
|
146780
|
-
|
|
146781
|
-
|
|
146782
|
-
|
|
146783
|
-
"}",
|
|
146851
|
+
...method2(
|
|
146852
|
+
`public static string OptionId(this ${enumName} value)`,
|
|
146853
|
+
switchBody(
|
|
146854
|
+
"value",
|
|
146855
|
+
options.map((option) => `${option.member} => ${option.id},`),
|
|
146856
|
+
`NeoUndeclaredEnumOptions<${enumName}>.OptionId(value)`
|
|
146857
|
+
)
|
|
146858
|
+
),
|
|
146784
146859
|
"",
|
|
146785
|
-
|
|
146786
|
-
|
|
146787
|
-
|
|
146788
|
-
|
|
146789
|
-
|
|
146790
|
-
|
|
146791
|
-
|
|
146792
|
-
|
|
146793
|
-
|
|
146794
|
-
"_ => false,"
|
|
146795
|
-
]),
|
|
146796
|
-
"};"
|
|
146797
|
-
]),
|
|
146798
|
-
"}",
|
|
146860
|
+
...method2(
|
|
146861
|
+
`public static string[] ToOptionIds(IEnumerable<${enumName}>? options)`,
|
|
146862
|
+
[
|
|
146863
|
+
"if (options is null) return Array.Empty<string>();",
|
|
146864
|
+
"var ids = new List<string>();",
|
|
146865
|
+
"foreach (var option in options) ids.Add(option.OptionId());",
|
|
146866
|
+
"return ids.ToArray();"
|
|
146867
|
+
]
|
|
146868
|
+
),
|
|
146799
146869
|
"",
|
|
146800
|
-
|
|
146801
|
-
|
|
146802
|
-
|
|
146803
|
-
|
|
146804
|
-
|
|
146805
|
-
|
|
146806
|
-
|
|
146807
|
-
|
|
146808
|
-
return [
|
|
146809
|
-
`"${escapeCSharpString(optionId)}" => "${escapeCSharpString(option.text)}",`
|
|
146810
|
-
];
|
|
146811
|
-
}),
|
|
146812
|
-
"_ => optionId,"
|
|
146813
|
-
]),
|
|
146814
|
-
"};"
|
|
146815
|
-
]),
|
|
146816
|
-
"}",
|
|
146870
|
+
...method2(
|
|
146871
|
+
"public static bool IsKnown(string optionId)",
|
|
146872
|
+
switchBody(
|
|
146873
|
+
"optionId",
|
|
146874
|
+
options.map((option) => `${option.id} => true,`),
|
|
146875
|
+
"false"
|
|
146876
|
+
)
|
|
146877
|
+
),
|
|
146817
146878
|
"",
|
|
146818
|
-
|
|
146819
|
-
|
|
146820
|
-
|
|
146821
|
-
|
|
146822
|
-
|
|
146823
|
-
|
|
146879
|
+
...method2(
|
|
146880
|
+
`public static string TextId(this ${enumName} value)`,
|
|
146881
|
+
switchBody(
|
|
146882
|
+
"value",
|
|
146883
|
+
options.map((option) => `${option.member} => ${option.text},`),
|
|
146884
|
+
"value.OptionId()"
|
|
146885
|
+
)
|
|
146886
|
+
),
|
|
146824
146887
|
"",
|
|
146825
|
-
|
|
146826
|
-
|
|
146827
|
-
|
|
146828
|
-
|
|
146829
|
-
|
|
146830
|
-
|
|
146831
|
-
`public static bool operator ==(${enumName}? left, ${enumName}? right) => ReferenceEquals(left, right) || (left is not null && left.Equals(right));`,
|
|
146832
|
-
`public static bool operator !=(${enumName}? left, ${enumName}? right) => !(left == right);`
|
|
146888
|
+
...method2(
|
|
146889
|
+
`public static string Text(this ${enumName} value, NeoClient? client = null)`,
|
|
146890
|
+
[
|
|
146891
|
+
ctx.singleton ? `return (client ?? ${ctx.projectClassName}.RequireInstance().Client).Localization.ResolveText(value.TextId());` : "return client is null ? value.TextId() : client.Localization.ResolveText(value.TextId());"
|
|
146892
|
+
]
|
|
146893
|
+
)
|
|
146833
146894
|
]),
|
|
146834
146895
|
"}"
|
|
146835
146896
|
];
|
|
@@ -147059,7 +147120,7 @@ function generateIndexedListWrappers(ctx, ownerClass, schemaKey, memberId, env)
|
|
|
147059
147120
|
{
|
|
147060
147121
|
definition: definition2,
|
|
147061
147122
|
keyType: enumName,
|
|
147062
|
-
codecs: enumKeyCodecArguments(indexedMember.enumId
|
|
147123
|
+
codecs: enumKeyCodecArguments(ctx, indexedMember.enumId)
|
|
147063
147124
|
}
|
|
147064
147125
|
];
|
|
147065
147126
|
}
|
|
@@ -148329,7 +148390,7 @@ function generateExplicitInterfaceMember(ctx, schemaKey, memberId, interfaceName
|
|
|
148329
148390
|
genericEnv,
|
|
148330
148391
|
ownerClassId
|
|
148331
148392
|
);
|
|
148332
|
-
const setter = isMemberNSPropertyBase(member) && typeof member.setterCode === "string" && !suppressesInheritedSetter(interfaceContract) ? nsPropertyWriteExpression(schemaKey) : null;
|
|
148393
|
+
const setter = isMemberNSPropertyBase(member) && typeof member.setterCode === "string" && !suppressesInheritedSetter(interfaceContract) ? nsPropertyWriteExpression(ctx, member, schemaKey) : null;
|
|
148333
148394
|
return [
|
|
148334
148395
|
`${interfaceType2} ${interfaceName}.${memberName}`,
|
|
148335
148396
|
"{",
|
|
@@ -149083,7 +149144,7 @@ function planWorldObjectEmission(ctx, classDef, worldKind) {
|
|
|
149083
149144
|
// conversion runs through the wrapper's implicit operator, which is
|
|
149084
149145
|
// where the required-member throw now lives.
|
|
149085
149146
|
`Sprite ${SPRITE_OBJECT_VALUE_INTERFACE}.${schemaKeyToMemberName(SPRITE_OBJECT_SPRITE_SCHEMA_KEY)} => ${schemaKeyToMemberName(SPRITE_OBJECT_SPRITE_SCHEMA_KEY)};`,
|
|
149086
|
-
`string ${SPRITE_OBJECT_VALUE_INTERFACE}.${schemaKeyToMemberName(SPRITE_OBJECT_MASK_INTERACTION_SCHEMA_KEY)} => ${schemaKeyToMemberName(SPRITE_OBJECT_MASK_INTERACTION_SCHEMA_KEY)}.
|
|
149147
|
+
`string ${SPRITE_OBJECT_VALUE_INTERFACE}.${schemaKeyToMemberName(SPRITE_OBJECT_MASK_INTERACTION_SCHEMA_KEY)} => ${schemaKeyToMemberName(SPRITE_OBJECT_MASK_INTERACTION_SCHEMA_KEY)}.OptionId();`
|
|
149087
149148
|
],
|
|
149088
149149
|
shadowedSchemaKeys: /* @__PURE__ */ new Set([
|
|
149089
149150
|
SPRITE_OBJECT_SPRITE_SCHEMA_KEY,
|
|
@@ -149105,7 +149166,7 @@ function planSmartTileEmission(ctx, classDef) {
|
|
|
149105
149166
|
return planValidatedContractEmission(ctx, classDef, worldKind, () => ({
|
|
149106
149167
|
runtimeInterfaces: [SMART_TILE_INTERFACE],
|
|
149107
149168
|
classMembers: [
|
|
149108
|
-
`string ${SMART_TILE_INTERFACE}.${schemaKeyToMemberName(WORLD_SMART_TILE_DEFAULT_COLLIDER_SCHEMA_KEY)} => ${schemaKeyToMemberName(WORLD_SMART_TILE_DEFAULT_COLLIDER_SCHEMA_KEY)}.
|
|
149169
|
+
`string ${SMART_TILE_INTERFACE}.${schemaKeyToMemberName(WORLD_SMART_TILE_DEFAULT_COLLIDER_SCHEMA_KEY)} => ${schemaKeyToMemberName(WORLD_SMART_TILE_DEFAULT_COLLIDER_SCHEMA_KEY)}.OptionId();`,
|
|
149109
149170
|
`IReadOnlyList<${SMART_TILE_RULE_INTERFACE}> ${SMART_TILE_INTERFACE}.${schemaKeyToMemberName(WORLD_SMART_TILE_RULES_SCHEMA_KEY)} => ${schemaKeyToMemberName(WORLD_SMART_TILE_RULES_SCHEMA_KEY)};`
|
|
149110
149171
|
],
|
|
149111
149172
|
shadowedSchemaKeys: /* @__PURE__ */ new Set([
|
|
@@ -149120,9 +149181,9 @@ function planSmartTileEmission(ctx, classDef) {
|
|
|
149120
149181
|
classMembers: [
|
|
149121
149182
|
`IReadOnlyList<${SMART_TILE_NEIGHBOR_INTERFACE}> ${SMART_TILE_RULE_INTERFACE}.${schemaKeyToMemberName(WORLD_SMART_TILE_RULE_NEIGHBORS_SCHEMA_KEY)} => ${schemaKeyToMemberName(WORLD_SMART_TILE_RULE_NEIGHBORS_SCHEMA_KEY)};`,
|
|
149122
149183
|
`IReadOnlyList<Sprite> ${SMART_TILE_RULE_INTERFACE}.${schemaKeyToMemberName(WORLD_SMART_TILE_RULE_SPRITES_SCHEMA_KEY)} => ${schemaKeyToMemberName(WORLD_SMART_TILE_RULE_SPRITES_SCHEMA_KEY)};`,
|
|
149123
|
-
`string ${SMART_TILE_RULE_INTERFACE}.${schemaKeyToMemberName(WORLD_SMART_TILE_RULE_OUTPUT_SCHEMA_KEY)} => ${schemaKeyToMemberName(WORLD_SMART_TILE_RULE_OUTPUT_SCHEMA_KEY)}.
|
|
149124
|
-
`string ${SMART_TILE_RULE_INTERFACE}.${schemaKeyToMemberName(WORLD_SMART_TILE_RULE_COLLIDER_SCHEMA_KEY)} => ${schemaKeyToMemberName(WORLD_SMART_TILE_RULE_COLLIDER_SCHEMA_KEY)}.
|
|
149125
|
-
`string ${SMART_TILE_RULE_INTERFACE}.${schemaKeyToMemberName(WORLD_SMART_TILE_RULE_TRANSFORM_SCHEMA_KEY)} => ${schemaKeyToMemberName(WORLD_SMART_TILE_RULE_TRANSFORM_SCHEMA_KEY)}.
|
|
149184
|
+
`string ${SMART_TILE_RULE_INTERFACE}.${schemaKeyToMemberName(WORLD_SMART_TILE_RULE_OUTPUT_SCHEMA_KEY)} => ${schemaKeyToMemberName(WORLD_SMART_TILE_RULE_OUTPUT_SCHEMA_KEY)}.OptionId();`,
|
|
149185
|
+
`string ${SMART_TILE_RULE_INTERFACE}.${schemaKeyToMemberName(WORLD_SMART_TILE_RULE_COLLIDER_SCHEMA_KEY)} => ${schemaKeyToMemberName(WORLD_SMART_TILE_RULE_COLLIDER_SCHEMA_KEY)}.OptionId();`,
|
|
149186
|
+
`string ${SMART_TILE_RULE_INTERFACE}.${schemaKeyToMemberName(WORLD_SMART_TILE_RULE_TRANSFORM_SCHEMA_KEY)} => ${schemaKeyToMemberName(WORLD_SMART_TILE_RULE_TRANSFORM_SCHEMA_KEY)}.OptionId();`,
|
|
149126
149187
|
`float ${SMART_TILE_RULE_INTERFACE}.${schemaKeyToMemberName(WORLD_SMART_TILE_RULE_MIN_ANIMATION_SPEED_SCHEMA_KEY)} => ${schemaKeyToMemberName(WORLD_SMART_TILE_RULE_MIN_ANIMATION_SPEED_SCHEMA_KEY)};`,
|
|
149127
149188
|
`float ${SMART_TILE_RULE_INTERFACE}.${schemaKeyToMemberName(WORLD_SMART_TILE_RULE_MAX_ANIMATION_SPEED_SCHEMA_KEY)} => ${schemaKeyToMemberName(WORLD_SMART_TILE_RULE_MAX_ANIMATION_SPEED_SCHEMA_KEY)};`
|
|
149128
149189
|
],
|
|
@@ -149142,7 +149203,7 @@ function planSmartTileEmission(ctx, classDef) {
|
|
|
149142
149203
|
runtimeInterfaces: [SMART_TILE_NEIGHBOR_INTERFACE],
|
|
149143
149204
|
classMembers: [
|
|
149144
149205
|
`Vector2Int ${SMART_TILE_NEIGHBOR_INTERFACE}.${schemaKeyToMemberName(WORLD_SMART_TILE_NEIGHBOR_CELL_SCHEMA_KEY)} => ${schemaKeyToMemberName(WORLD_SMART_TILE_NEIGHBOR_CELL_SCHEMA_KEY)}.Value;`,
|
|
149145
|
-
`string ${SMART_TILE_NEIGHBOR_INTERFACE}.${schemaKeyToMemberName(WORLD_SMART_TILE_NEIGHBOR_CONDITION_SCHEMA_KEY)} => ${schemaKeyToMemberName(WORLD_SMART_TILE_NEIGHBOR_CONDITION_SCHEMA_KEY)}.
|
|
149206
|
+
`string ${SMART_TILE_NEIGHBOR_INTERFACE}.${schemaKeyToMemberName(WORLD_SMART_TILE_NEIGHBOR_CONDITION_SCHEMA_KEY)} => ${schemaKeyToMemberName(WORLD_SMART_TILE_NEIGHBOR_CONDITION_SCHEMA_KEY)}.OptionId();`,
|
|
149146
149207
|
`string? ${SMART_TILE_NEIGHBOR_INTERFACE}.TileClassId => ${SMART_TILE_NEIGHBOR_TILE_RELATION_EXPRESSION};`
|
|
149147
149208
|
],
|
|
149148
149209
|
shadowedSchemaKeys: /* @__PURE__ */ new Set([
|
|
@@ -150366,37 +150427,16 @@ function declaredConstructorParameters(ctx, classId, declared, genericEnv) {
|
|
|
150366
150427
|
}
|
|
150367
150428
|
identifiers.add(identifier2);
|
|
150368
150429
|
const baseType = csharpFunctionTypeInfoValueType(ctx, argument2, true, genericEnv) ?? "object?";
|
|
150369
|
-
const rendered = renderCSharpParameterDefault(
|
|
150370
|
-
ctx,
|
|
150371
|
-
argument2,
|
|
150372
|
-
`constructors.${declared.id}.argumentTypes`
|
|
150373
|
-
);
|
|
150374
|
-
if (rendered === null) {
|
|
150375
|
-
parameters.push({
|
|
150376
|
-
declaredName: argument2.name,
|
|
150377
|
-
identifier: identifier2,
|
|
150378
|
-
csharpType: baseType,
|
|
150379
|
-
defaultLiteral: null,
|
|
150380
|
-
enumFallback: null
|
|
150381
|
-
});
|
|
150382
|
-
continue;
|
|
150383
|
-
}
|
|
150384
|
-
if (rendered.enumFallback === null) {
|
|
150385
|
-
parameters.push({
|
|
150386
|
-
declaredName: argument2.name,
|
|
150387
|
-
identifier: identifier2,
|
|
150388
|
-
csharpType: baseType,
|
|
150389
|
-
defaultLiteral: rendered.literal,
|
|
150390
|
-
enumFallback: null
|
|
150391
|
-
});
|
|
150392
|
-
continue;
|
|
150393
|
-
}
|
|
150394
150430
|
parameters.push({
|
|
150395
150431
|
declaredName: argument2.name,
|
|
150396
150432
|
identifier: identifier2,
|
|
150397
|
-
csharpType: baseType
|
|
150398
|
-
defaultLiteral:
|
|
150399
|
-
|
|
150433
|
+
csharpType: baseType,
|
|
150434
|
+
defaultLiteral: renderCSharpParameterDefault(
|
|
150435
|
+
ctx,
|
|
150436
|
+
argument2,
|
|
150437
|
+
`constructors.${declared.id}.argumentTypes`
|
|
150438
|
+
),
|
|
150439
|
+
scriptArgument: scriptValueExpression(ctx, argument2, identifier2)
|
|
150400
150440
|
});
|
|
150401
150441
|
}
|
|
150402
150442
|
return parameters;
|
|
@@ -150470,10 +150510,9 @@ function generateDeclaredConstructor(ctx, classId, className, constructorId, par
|
|
|
150470
150510
|
);
|
|
150471
150511
|
const signatureParameters = [...declaredParameters, ...appendedParameters];
|
|
150472
150512
|
const parameterText = ctx.singleton ? signatureParameters.join(", ") : [`${ctx.projectClassName} project`, ...signatureParameters].join(", ");
|
|
150473
|
-
const argumentEntries = parameters.map(
|
|
150474
|
-
|
|
150475
|
-
|
|
150476
|
-
}).join(", ");
|
|
150513
|
+
const argumentEntries = parameters.map(
|
|
150514
|
+
(parameter4) => `new global::NeoCompose.Runtime.NeoDeclaredConstructorArgument("${escapeCSharpString(parameter4.declaredName)}", ${parameter4.scriptArgument})`
|
|
150515
|
+
).join(", ");
|
|
150477
150516
|
const argumentArray = argumentEntries.length === 0 ? "new global::NeoCompose.Runtime.NeoDeclaredConstructorArgument[] { }" : `new global::NeoCompose.Runtime.NeoDeclaredConstructorArgument[] { ${argumentEntries} }`;
|
|
150478
150517
|
const suppliedValues = appendedMembers.map(
|
|
150479
150518
|
(member) => `new global::NeoCompose.Runtime.NeoGeneratedConstructorValue("${escapeCSharpString(member.schemaKey)}", "${escapeCSharpString(member.memberId)}", ${member.identifier})`
|
|
@@ -150590,21 +150629,18 @@ function generateStaticFunctionMethod(ctx, ownerClass, member, genericEnv) {
|
|
|
150590
150629
|
`members.${member.id}.argumentTypes`
|
|
150591
150630
|
);
|
|
150592
150631
|
const parameters = parameterList.map((parameter4) => parameter4.declaration).join(", ");
|
|
150593
|
-
const
|
|
150594
|
-
|
|
150632
|
+
const argumentNames = parameterList.map((parameter4) => parameter4.identifier);
|
|
150633
|
+
const scriptArguments = parameterList.map(
|
|
150634
|
+
(parameter4) => parameter4.scriptArgument
|
|
150595
150635
|
);
|
|
150596
|
-
const
|
|
150597
|
-
(parameter4) => parameter4.valueExpression
|
|
150598
|
-
);
|
|
150599
|
-
const args = argumentNames.length === 0 ? "{ }" : `{ ${argumentNames.join(", ")} }`;
|
|
150636
|
+
const args = scriptArguments.length === 0 ? "{ }" : `{ ${scriptArguments.join(", ")} }`;
|
|
150600
150637
|
const asyncModifier = member.kind === 23 /* NSFunction */ && callableIsDeferred(member) ? "async " : "";
|
|
150601
150638
|
const declaration = `${memberAccessKeyword(member)} static ${asyncModifier}${returnType} ${functionMethodName(member.name)}(${parameters})`;
|
|
150602
150639
|
const docs = xmlSummary(ctx.docs.members[member.id]);
|
|
150603
150640
|
const stamp = memberMethodStamp(member);
|
|
150604
150641
|
if (member.kind === 23 /* NSFunction */) {
|
|
150605
|
-
const invocation = callableIsDeferred(member) ? `await node.InvokeStaticAsync(new object?[] ${args})` : `node.InvokeStatic(${immediateInvocationArguments(null,
|
|
150642
|
+
const invocation = callableIsDeferred(member) ? `await node.InvokeStaticAsync(new object?[] ${args})` : `node.InvokeStatic(${immediateInvocationArguments(null, scriptArguments)})`;
|
|
150606
150643
|
const body = [
|
|
150607
|
-
...coalesceStatements,
|
|
150608
150644
|
`var client = ${ctx.projectClassName}.RequireInstance().Client;`,
|
|
150609
150645
|
`var node = NeoMemberNSFunction.GetOrCreateStatic(client, "${escapeCSharpString(member.id)}");`,
|
|
150610
150646
|
...isFunctionVoidTypeInfo(member.returnTypeInfo) ? [`${invocation};`] : [
|
|
@@ -150641,7 +150677,6 @@ function generateStaticFunctionMethod(ctx, ownerClass, member, genericEnv) {
|
|
|
150641
150677
|
declaration,
|
|
150642
150678
|
"{",
|
|
150643
150679
|
...indent([
|
|
150644
|
-
...coalesceStatements,
|
|
150645
150680
|
`if (${handler} is null)`,
|
|
150646
150681
|
"{",
|
|
150647
150682
|
...indent([
|
|
@@ -150874,7 +150909,7 @@ function generateStaticNSProperty(ctx, member, memberName, memberId, genericEnv)
|
|
|
150874
150909
|
];
|
|
150875
150910
|
const setter = typeof member.setterCode === "string" ? [
|
|
150876
150911
|
...prelude,
|
|
150877
|
-
|
|
150912
|
+
`var result = node.Set(${scriptValueExpression(ctx, member.returnTypeInfo, "value")});`,
|
|
150878
150913
|
'if (!result.ok) throw new InvalidOperationException(result.error ?? "Static NSProperty setter failed.");'
|
|
150879
150914
|
] : null;
|
|
150880
150915
|
return [
|
|
@@ -151044,7 +151079,7 @@ function generateMember(ctx, schemaKey, memberId, saved, modifier, emitBody, own
|
|
|
151044
151079
|
genericEnv,
|
|
151045
151080
|
ownerClassId
|
|
151046
151081
|
);
|
|
151047
|
-
const declaredPropertySetter = isMemberNSPropertyBase(member) && typeof member.setterCode === "string" ? nsPropertyWriteExpression(schemaKey) : null;
|
|
151082
|
+
const declaredPropertySetter = isMemberNSPropertyBase(member) && typeof member.setterCode === "string" ? nsPropertyWriteExpression(ctx, member, schemaKey) : null;
|
|
151048
151083
|
const propertySetter = suppressesInheritedSetter(inheritedContract) ? null : declaredPropertySetter;
|
|
151049
151084
|
const emitsStoredSetter = bindingContract === null ? memberSaved : bindingContract.hasSetter;
|
|
151050
151085
|
const storedSetterBody = suppressesInheritedSetter(inheritedContract) || !emitsStoredSetter ? null : writeExpression(ctx, member, schemaKey, ownerClassName, ownerClassId);
|
|
@@ -151397,10 +151432,10 @@ function descendsFromWorldObject(ctx, classId) {
|
|
|
151397
151432
|
}
|
|
151398
151433
|
return false;
|
|
151399
151434
|
}
|
|
151400
|
-
function nsPropertyWriteExpression(schemaKey) {
|
|
151435
|
+
function nsPropertyWriteExpression(ctx, member, schemaKey) {
|
|
151401
151436
|
const getNode = `writableNode.Get<NeoMemberNSProperty>("${escapeCSharpString(schemaKey)}")`;
|
|
151402
151437
|
return [
|
|
151403
|
-
`var result = ${getNode}.Set(valueId!, value);`,
|
|
151438
|
+
`var result = ${getNode}.Set(valueId!, ${scriptValueExpression(ctx, member.returnTypeInfo, "value")});`,
|
|
151404
151439
|
'if (!result.ok) throw new InvalidOperationException(result.error ?? "NSProperty setter failed.");'
|
|
151405
151440
|
];
|
|
151406
151441
|
}
|
|
@@ -151470,49 +151505,37 @@ function renderCSharpParameterDefault(ctx, argument2, path) {
|
|
|
151470
151505
|
case 1 /* Bool */: {
|
|
151471
151506
|
const defaultValue = argument2.defaultValue;
|
|
151472
151507
|
if (defaultValue === void 0) return null;
|
|
151473
|
-
if (defaultValue.value === null)
|
|
151474
|
-
|
|
151475
|
-
return {
|
|
151476
|
-
literal: defaultValue.value ? "true" : "false",
|
|
151477
|
-
enumFallback: null
|
|
151478
|
-
};
|
|
151508
|
+
if (defaultValue.value === null) return "null";
|
|
151509
|
+
return defaultValue.value ? "true" : "false";
|
|
151479
151510
|
}
|
|
151480
151511
|
case 2 /* Int */: {
|
|
151481
151512
|
const defaultValue = argument2.defaultValue;
|
|
151482
151513
|
if (defaultValue === void 0) return null;
|
|
151483
|
-
if (defaultValue.value === null)
|
|
151484
|
-
|
|
151485
|
-
return { literal: String(defaultValue.value), enumFallback: null };
|
|
151514
|
+
if (defaultValue.value === null) return "null";
|
|
151515
|
+
return String(defaultValue.value);
|
|
151486
151516
|
}
|
|
151487
151517
|
case 4 /* Float */: {
|
|
151488
151518
|
const defaultValue = argument2.defaultValue;
|
|
151489
151519
|
if (defaultValue === void 0) return null;
|
|
151490
|
-
if (defaultValue.value === null)
|
|
151491
|
-
|
|
151492
|
-
return { literal: `${String(defaultValue.value)}f`, enumFallback: null };
|
|
151520
|
+
if (defaultValue.value === null) return "null";
|
|
151521
|
+
return `${String(defaultValue.value)}f`;
|
|
151493
151522
|
}
|
|
151494
151523
|
case 20 /* Decimal */: {
|
|
151495
151524
|
const defaultValue = argument2.defaultValue;
|
|
151496
151525
|
if (defaultValue === void 0) return null;
|
|
151497
|
-
if (defaultValue.value === null)
|
|
151498
|
-
|
|
151499
|
-
return { literal: `${defaultValue.value}m`, enumFallback: null };
|
|
151526
|
+
if (defaultValue.value === null) return "null";
|
|
151527
|
+
return `${defaultValue.value}m`;
|
|
151500
151528
|
}
|
|
151501
151529
|
case 3 /* String */: {
|
|
151502
151530
|
const defaultValue = argument2.defaultValue;
|
|
151503
151531
|
if (defaultValue === void 0) return null;
|
|
151504
|
-
if (defaultValue.value === null)
|
|
151505
|
-
|
|
151506
|
-
return {
|
|
151507
|
-
literal: `"${escapeCSharpString(defaultValue.value)}"`,
|
|
151508
|
-
enumFallback: null
|
|
151509
|
-
};
|
|
151532
|
+
if (defaultValue.value === null) return "null";
|
|
151533
|
+
return `"${escapeCSharpString(defaultValue.value)}"`;
|
|
151510
151534
|
}
|
|
151511
151535
|
case 8 /* Enum */: {
|
|
151512
151536
|
const defaultValue = argument2.defaultValue;
|
|
151513
151537
|
if (defaultValue === void 0) return null;
|
|
151514
|
-
if (defaultValue.value === null)
|
|
151515
|
-
return { literal: "null", enumFallback: null };
|
|
151538
|
+
if (defaultValue.value === null) return "null";
|
|
151516
151539
|
const enumDef = ctx.exportData.enums[argument2.enumId];
|
|
151517
151540
|
if (enumDef === void 0) {
|
|
151518
151541
|
ctx.diagnostics.push({
|
|
@@ -151554,22 +151577,22 @@ function renderCSharpParameterDefault(ctx, argument2, path) {
|
|
|
151554
151577
|
return null;
|
|
151555
151578
|
}
|
|
151556
151579
|
if (argument2.enumId === NEO_CELL_PATTERN_EXCLUDING_ENUM_ID)
|
|
151557
|
-
return {
|
|
151558
|
-
|
|
151559
|
-
enumFallback: null
|
|
151560
|
-
};
|
|
151561
|
-
return { literal: "null", enumFallback: `${enumName}.${accessor}` };
|
|
151580
|
+
return `NeoCompose.Runtime.NeoCellPatternExcluding.${schemaKeyToMemberName(option.name)}`;
|
|
151581
|
+
return `${enumName}.${accessor}`;
|
|
151562
151582
|
}
|
|
151563
151583
|
default: {
|
|
151564
151584
|
if (argument2.defaultValue === void 0) return null;
|
|
151565
|
-
return
|
|
151585
|
+
return "null";
|
|
151566
151586
|
}
|
|
151567
151587
|
}
|
|
151568
151588
|
}
|
|
151589
|
+
function scriptValueExpression(ctx, typeInfo, expression) {
|
|
151590
|
+
return typeInfo.type === 8 /* Enum */ && typeInfo.enumId !== NEO_CELL_PATTERN_EXCLUDING_ENUM_ID && ctx.enumNames.has(typeInfo.enumId) ? `${expression}${typeInfo.required ? "" : "?"}.OptionId()` : expression;
|
|
151591
|
+
}
|
|
151569
151592
|
function renderFunctionParameters(ctx, member, genericBindingSaved, genericEnv, path) {
|
|
151570
151593
|
return member.argumentTypes.map((argument2, index) => {
|
|
151571
151594
|
const identifier2 = functionParameterName(argument2.name, index);
|
|
151572
|
-
const
|
|
151595
|
+
const type = csharpFunctionTypeInfoValueType(
|
|
151573
151596
|
ctx,
|
|
151574
151597
|
argument2,
|
|
151575
151598
|
genericBindingSaved,
|
|
@@ -151577,10 +151600,9 @@ function renderFunctionParameters(ctx, member, genericBindingSaved, genericEnv,
|
|
|
151577
151600
|
) ?? "object?";
|
|
151578
151601
|
const bare = {
|
|
151579
151602
|
identifier: identifier2,
|
|
151580
|
-
type
|
|
151581
|
-
declaration: `${
|
|
151582
|
-
|
|
151583
|
-
coalesceStatement: null
|
|
151603
|
+
type,
|
|
151604
|
+
declaration: `${type} ${identifier2}`,
|
|
151605
|
+
scriptArgument: scriptValueExpression(ctx, argument2, identifier2)
|
|
151584
151606
|
};
|
|
151585
151607
|
if (callableIsDeferred(member) && parameterHasDefault(argument2)) {
|
|
151586
151608
|
ctx.diagnostics.push({
|
|
@@ -151590,26 +151612,8 @@ function renderFunctionParameters(ctx, member, genericBindingSaved, genericEnv,
|
|
|
151590
151612
|
});
|
|
151591
151613
|
return bare;
|
|
151592
151614
|
}
|
|
151593
|
-
const
|
|
151594
|
-
|
|
151595
|
-
if (rendered.enumFallback === null) {
|
|
151596
|
-
return {
|
|
151597
|
-
identifier: identifier2,
|
|
151598
|
-
type: baseType,
|
|
151599
|
-
declaration: `${baseType} ${identifier2} = ${rendered.literal}`,
|
|
151600
|
-
valueExpression: identifier2,
|
|
151601
|
-
coalesceStatement: null
|
|
151602
|
-
};
|
|
151603
|
-
}
|
|
151604
|
-
const nullableType = baseType.endsWith("?") ? baseType : `${baseType}?`;
|
|
151605
|
-
const coalescedLocal = `${identifier2}Value`;
|
|
151606
|
-
return {
|
|
151607
|
-
identifier: identifier2,
|
|
151608
|
-
type: nullableType,
|
|
151609
|
-
declaration: `${nullableType} ${identifier2} = null`,
|
|
151610
|
-
valueExpression: coalescedLocal,
|
|
151611
|
-
coalesceStatement: `var ${coalescedLocal} = ${identifier2} ?? ${rendered.enumFallback};`
|
|
151612
|
-
};
|
|
151615
|
+
const literal3 = renderCSharpParameterDefault(ctx, argument2, path);
|
|
151616
|
+
return literal3 === null ? bare : { ...bare, declaration: `${type} ${identifier2} = ${literal3}` };
|
|
151613
151617
|
});
|
|
151614
151618
|
}
|
|
151615
151619
|
function functionSignature(ctx, member, genericEnv) {
|
|
@@ -151677,12 +151681,12 @@ function generateFunctionMethod(ctx, member, schemaKey, modifier = "", emitBody
|
|
|
151677
151681
|
];
|
|
151678
151682
|
if (!emitBody) return [...docs, `${declaration};`];
|
|
151679
151683
|
const stamp = memberMethodStamp(member);
|
|
151680
|
-
const
|
|
151681
|
-
(parameter4) => parameter4.coalesceStatement === null ? [] : [parameter4.coalesceStatement]
|
|
151682
|
-
);
|
|
151683
|
-
const argumentList = parameterList.map((parameter4) => parameter4.valueExpression).join(", ");
|
|
151684
|
+
const argumentList = parameterList.map((parameter4) => parameter4.identifier).join(", ");
|
|
151684
151685
|
const call = `FunctionHandler.${methodName}(${argumentList})`;
|
|
151685
|
-
const
|
|
151686
|
+
const scriptArguments = parameterList.map(
|
|
151687
|
+
(parameter4) => parameter4.scriptArgument
|
|
151688
|
+
);
|
|
151689
|
+
const deferredArgs = scriptArguments.length === 0 ? "{ }" : `{ ${scriptArguments.join(", ")} }`;
|
|
151686
151690
|
const deferredCall = isFunctionVoidTypeInfo(member.returnTypeInfo) ? `return client.InvokeDeferredNativeFunction("${escapeCSharpString(member.id)}", this, new object?[] ${deferredArgs});` : `return client.InvokeDeferredNativeFunction<${csharpFunctionReturnType(ctx, member.returnTypeInfo, genericEnv, true)}>("${escapeCSharpString(member.id)}", this, new object?[] ${deferredArgs});`;
|
|
151687
151691
|
if (member.id === NEO_TILE_CONVERT_MEMBER_ID) {
|
|
151688
151692
|
return [
|
|
@@ -151690,10 +151694,7 @@ function generateFunctionMethod(ctx, member, schemaKey, modifier = "", emitBody
|
|
|
151690
151694
|
...stamp,
|
|
151691
151695
|
declaration,
|
|
151692
151696
|
"{",
|
|
151693
|
-
...indent([
|
|
151694
|
-
...coalesceStatements,
|
|
151695
|
-
`return base.TryConvert(${argumentList});`
|
|
151696
|
-
]),
|
|
151697
|
+
...indent([`return base.TryConvert(${argumentList});`]),
|
|
151697
151698
|
"}"
|
|
151698
151699
|
];
|
|
151699
151700
|
}
|
|
@@ -151704,7 +151705,6 @@ function generateFunctionMethod(ctx, member, schemaKey, modifier = "", emitBody
|
|
|
151704
151705
|
declaration,
|
|
151705
151706
|
"{",
|
|
151706
151707
|
...indent([
|
|
151707
|
-
...coalesceStatements,
|
|
151708
151708
|
`var result = client.ScriptGridQueries.Invoke("${member.id}", this, new object?[] ${deferredArgs});`,
|
|
151709
151709
|
...nsGetterResultReturnExpression(
|
|
151710
151710
|
ctx,
|
|
@@ -151720,11 +151720,10 @@ function generateFunctionMethod(ctx, member, schemaKey, modifier = "", emitBody
|
|
|
151720
151720
|
if (isNSFunction2) {
|
|
151721
151721
|
const invocation = callableIsDeferred(member) ? `writableNode.Get<NeoMemberNSFunction>("${escapeCSharpString(schemaKey)}").InvokeAsync(valueId!, new object?[] ${deferredArgs})` : `InvokeFunction(${immediateInvocationArguments(
|
|
151722
151722
|
`"${escapeCSharpString(schemaKey)}"`,
|
|
151723
|
-
|
|
151723
|
+
scriptArguments
|
|
151724
151724
|
)})`;
|
|
151725
151725
|
const resultStatement = callableIsDeferred(member) ? `var result = await ${invocation};` : `var result = ${invocation};`;
|
|
151726
151726
|
const body = [
|
|
151727
|
-
...coalesceStatements,
|
|
151728
151727
|
...callableIsDeferred(member) ? [
|
|
151729
151728
|
`if (valueId is null) throw new InvalidOperationException("Cannot invoke NSFunction '${escapeCSharpString(member.name)}' without a backing receiver value id.");`
|
|
151730
151729
|
] : [],
|
|
@@ -151749,7 +151748,6 @@ function generateFunctionMethod(ctx, member, schemaKey, modifier = "", emitBody
|
|
|
151749
151748
|
declaration,
|
|
151750
151749
|
"{",
|
|
151751
151750
|
...indent([
|
|
151752
|
-
...coalesceStatements,
|
|
151753
151751
|
...callableIsDeferred(member) ? [deferredCall] : [
|
|
151754
151752
|
"if (FunctionHandler is null)",
|
|
151755
151753
|
"{",
|
|
@@ -151822,8 +151820,8 @@ function nativeFunctionArgExpression(ctx, typeInfo, valueExpression, argumentNam
|
|
|
151822
151820
|
case 8 /* Enum */: {
|
|
151823
151821
|
if (typeInfo.enumId === NEO_CELL_PATTERN_EXCLUDING_ENUM_ID)
|
|
151824
151822
|
return `NeoCellPatternStorage.${required2 ? "ReadExcluding" : "ReadOptionalExcluding"}(${valueExpression})`;
|
|
151825
|
-
const
|
|
151826
|
-
return required2 ? `NeoGeneratedTypesSupport.ReadEnumSingle(${valueExpression}, ${
|
|
151823
|
+
const parser = enumParser(ctx, typeInfo.enumId);
|
|
151824
|
+
return required2 ? `NeoGeneratedTypesSupport.ReadEnumSingle(${valueExpression}, ${parser}) ?? throw new InvalidOperationException("Required enum argument '${escapeCSharpString(argumentName)}' could not be resolved.")` : `NeoGeneratedTypesSupport.ReadEnumSingle(${valueExpression}, ${parser})`;
|
|
151827
151825
|
}
|
|
151828
151826
|
case 18 /* DialogueLookup */: {
|
|
151829
151827
|
const dialogueIds = `NeoGeneratedTypesSupport.ToStringArray(${valueExpression})`;
|
|
@@ -151862,8 +151860,7 @@ function nativeFunctionArgExpression(ctx, typeInfo, valueExpression, argumentNam
|
|
|
151862
151860
|
if (isMemberEnumBase(binding) && isMultiSelectionMember(binding)) {
|
|
151863
151861
|
if (binding.enumId === NEO_CELL_PATTERN_EXCLUDING_ENUM_ID)
|
|
151864
151862
|
return `NeoCellPatternStorage.ReadExcludingList(${valueExpression})`;
|
|
151865
|
-
|
|
151866
|
-
return `NeoGeneratedTypesSupport.ReadEnumList(${valueExpression}, ${enumParser(enumName)})`;
|
|
151863
|
+
return `NeoGeneratedTypesSupport.ReadEnumList(${valueExpression}, ${enumParser(ctx, binding.enumId)})`;
|
|
151867
151864
|
}
|
|
151868
151865
|
if (isMemberClassBase(binding)) {
|
|
151869
151866
|
const typeName = ctx.typeNames.get(binding.classId);
|
|
@@ -152107,10 +152104,9 @@ function nsGetterResultReturnExpression(ctx, returnTypeInfo, valueExpression, sa
|
|
|
152107
152104
|
...prefix,
|
|
152108
152105
|
`return NeoCellPatternStorage.${optional2 ? "ReadOptionalExcluding" : "ReadExcluding"}(${valueExpression});`
|
|
152109
152106
|
];
|
|
152110
|
-
const enumName = ctx.enumNames.get(returnTypeInfo.enumId) ?? "string";
|
|
152111
152107
|
return [
|
|
152112
152108
|
...prefix,
|
|
152113
|
-
`var selected = NeoGeneratedTypesSupport.ReadEnumSingle(${valueExpression}, ${enumParser(
|
|
152109
|
+
`var selected = NeoGeneratedTypesSupport.ReadEnumSingle(${valueExpression}, ${enumParser(ctx, returnTypeInfo.enumId)});`,
|
|
152114
152110
|
optional2 ? "return selected;" : 'return selected ?? throw new InvalidOperationException("NSProperty returned null for a required enum value.");'
|
|
152115
152111
|
];
|
|
152116
152112
|
}
|
|
@@ -152226,11 +152222,11 @@ function nsGetterGenericResultExpression(ctx, typeInfo, valueExpression, saved,
|
|
|
152226
152222
|
if (isMemberEnumBase(binding)) {
|
|
152227
152223
|
if (binding.enumId === NEO_CELL_PATTERN_EXCLUDING_ENUM_ID)
|
|
152228
152224
|
return `NeoCellPatternStorage.${isMultiSelectionMember(binding) ? "ReadExcludingList" : required2 ? "ReadExcluding" : "ReadOptionalExcluding"}(${valueExpression})`;
|
|
152229
|
-
const
|
|
152225
|
+
const parser = enumParser(ctx, binding.enumId);
|
|
152230
152226
|
if (isMultiSelectionMember(binding)) {
|
|
152231
|
-
return `NeoGeneratedTypesSupport.ReadEnumList(${valueExpression}, ${
|
|
152227
|
+
return `NeoGeneratedTypesSupport.ReadEnumList(${valueExpression}, ${parser})`;
|
|
152232
152228
|
}
|
|
152233
|
-
const read = `NeoGeneratedTypesSupport.ReadEnumSingle(${valueExpression}, ${
|
|
152229
|
+
const read = `NeoGeneratedTypesSupport.ReadEnumSingle(${valueExpression}, ${parser})`;
|
|
152234
152230
|
return required2 ? `${read} ?? throw new InvalidOperationException("Required generic enum result was null.")` : read;
|
|
152235
152231
|
}
|
|
152236
152232
|
if (isMemberClassBase(binding)) {
|
|
@@ -152380,11 +152376,11 @@ function detachedValueExpression(ctx, member, value, required2, saved, genericEn
|
|
|
152380
152376
|
if (isMemberEnumBase(member)) {
|
|
152381
152377
|
if (member.enumId === NEO_CELL_PATTERN_EXCLUDING_ENUM_ID)
|
|
152382
152378
|
return `NeoCellPatternStorage.${isMultiSelectionMember(member) ? "ReadExcludingList" : required2 ? "ReadExcluding" : "ReadOptionalExcluding"}(${value})`;
|
|
152383
|
-
|
|
152384
|
-
|
|
152379
|
+
if (!ctx.enumNames.has(member.enumId)) return null;
|
|
152380
|
+
const parser = enumParser(ctx, member.enumId);
|
|
152385
152381
|
if (isMultiSelectionMember(member))
|
|
152386
|
-
return `NeoGeneratedTypesSupport.ReadEnumList(${value}, ${
|
|
152387
|
-
const read = `NeoGeneratedTypesSupport.ReadEnumSingle(${value}, ${
|
|
152382
|
+
return `NeoGeneratedTypesSupport.ReadEnumList(${value}, ${parser})`;
|
|
152383
|
+
const read = `NeoGeneratedTypesSupport.ReadEnumSingle(${value}, ${parser})`;
|
|
152388
152384
|
return required2 ? `${read} ?? throw new InvalidOperationException("Required enum '${escapeCSharpString(member.name)}' has no selected option.")` : `${value} is null ? null : ${read}`;
|
|
152389
152385
|
}
|
|
152390
152386
|
if (isMemberClassBase(member) && member.classArguments == null) {
|
|
@@ -152553,15 +152549,15 @@ function storedReadExpression(ctx, member, schemaKey, nodeType, saved, ownerClas
|
|
|
152553
152549
|
return [
|
|
152554
152550
|
`return NeoCellPatternStorage.${isMultiSelectionMember(member) ? "ReadExcludingList" : isRequiredMember2(member) ? "ReadExcluding" : "ReadOptionalExcluding"}(${getNode}.Selected());`
|
|
152555
152551
|
];
|
|
152556
|
-
const
|
|
152552
|
+
const optionsName = enumOptionsName(ctx, member.enumId);
|
|
152557
152553
|
return isMultiSelectionMember(member) ? [
|
|
152558
|
-
`return NeoGeneratedTypesSupport.ReadEnumList(${getNode}.Selected(), ${enumParser(
|
|
152554
|
+
`return NeoGeneratedTypesSupport.ReadEnumList(${getNode}.Selected(), ${enumParser(ctx, member.enumId)});`
|
|
152559
152555
|
] : isRequiredMember2(member) ? [
|
|
152560
152556
|
`var selected = NeoGeneratedTypesSupport.ReadSingleSelected(${getNode});`,
|
|
152561
|
-
`return selected is null ? throw new InvalidOperationException("Required enum '${escapeCSharpString(schemaKey)}' has no selected option.") : ${
|
|
152557
|
+
`return selected is null ? throw new InvalidOperationException("Required enum '${escapeCSharpString(schemaKey)}' has no selected option.") : ${optionsName}.FromOptionId(selected);`
|
|
152562
152558
|
] : [
|
|
152563
152559
|
`var selected = NeoGeneratedTypesSupport.ReadSingleSelected(${getNode});`,
|
|
152564
|
-
`return selected is null ? null : ${
|
|
152560
|
+
`return selected is null ? null : ${optionsName}.FromOptionId(selected);`
|
|
152565
152561
|
];
|
|
152566
152562
|
}
|
|
152567
152563
|
if (isMemberLookupBase(member)) {
|
|
@@ -152718,13 +152714,12 @@ function writeExpression(ctx, member, schemaKey, ownerClassName, ownerClassId) {
|
|
|
152718
152714
|
return [
|
|
152719
152715
|
`NeoGeneratedTypesSupport.SetValue(writableNode, "${key}", NeoGeneratedTypesSupport.Value(NeoCellPatternStorage.${isMultiSelectionMember(member) ? "ExcludingListIds" : "OptionalExcludingIds"}(value)));`
|
|
152720
152716
|
];
|
|
152721
|
-
const enumName = ctx.enumNames.get(member.enumId) ?? "string";
|
|
152722
152717
|
return isMultiSelectionMember(member) ? [
|
|
152723
|
-
`NeoGeneratedTypesSupport.SetValue(writableNode, "${key}", NeoGeneratedTypesSupport.Value(${
|
|
152718
|
+
`NeoGeneratedTypesSupport.SetValue(writableNode, "${key}", NeoGeneratedTypesSupport.Value(${enumOptionsName(ctx, member.enumId)}.ToOptionIds(value)));`
|
|
152724
152719
|
] : isRequiredMember2(member) ? [
|
|
152725
|
-
`NeoGeneratedTypesSupport.SetValue(writableNode, "${key}", NeoGeneratedTypesSupport.Value(new[] { value.
|
|
152720
|
+
`NeoGeneratedTypesSupport.SetValue(writableNode, "${key}", NeoGeneratedTypesSupport.Value(new[] { value.OptionId() }));`
|
|
152726
152721
|
] : [
|
|
152727
|
-
`NeoGeneratedTypesSupport.SetValue(writableNode, "${key}", NeoGeneratedTypesSupport.Value(value is null ? null : new[] { value.
|
|
152722
|
+
`NeoGeneratedTypesSupport.SetValue(writableNode, "${key}", NeoGeneratedTypesSupport.Value(value is null ? null : new[] { value.Value.OptionId() }));`
|
|
152728
152723
|
];
|
|
152729
152724
|
}
|
|
152730
152725
|
if (isMemberLookupBase(member)) {
|
|
@@ -152839,14 +152834,13 @@ function collectionReadExpression(ctx, member, getNode, schemaKey, entryMember,
|
|
|
152839
152834
|
`new ${collectionType}(client, memberNode, (client, child) => ${childConverter(ctx, entryMember, false, false, genericEnv)}${keyCodecArguments})`
|
|
152840
152835
|
);
|
|
152841
152836
|
}
|
|
152842
|
-
function enumKeyCodecArguments(
|
|
152843
|
-
return enumId === NEO_CELL_PATTERN_EXCLUDING_ENUM_ID ? ", id => NeoCellPatternStorage.ReadExcluding(new[] { id }), key => NeoCellPatternStorage.ExcludingIds(key)[0]" : `, ${enumParser(
|
|
152837
|
+
function enumKeyCodecArguments(ctx, enumId) {
|
|
152838
|
+
return enumId === NEO_CELL_PATTERN_EXCLUDING_ENUM_ID ? ", id => NeoCellPatternStorage.ReadExcluding(new[] { id }), key => NeoCellPatternStorage.ExcludingIds(key)[0]" : `, ${enumParser(ctx, enumId)}, key => key.OptionId()`;
|
|
152844
152839
|
}
|
|
152845
152840
|
function dictionaryKeyCodecArguments(ctx, member) {
|
|
152846
152841
|
if (!isEnumKeyedDictionaryMember(member)) return "";
|
|
152847
|
-
|
|
152848
|
-
|
|
152849
|
-
return enumKeyCodecArguments(member.keyEnumId, keyEnumName);
|
|
152842
|
+
if (!ctx.enumNames.has(member.keyEnumId)) return "";
|
|
152843
|
+
return enumKeyCodecArguments(ctx, member.keyEnumId);
|
|
152850
152844
|
}
|
|
152851
152845
|
function serializeItemExpression(ctx, member, valueExpression) {
|
|
152852
152846
|
if (member === null) return valueExpression;
|
|
@@ -152855,7 +152849,7 @@ function serializeItemExpression(ctx, member, valueExpression) {
|
|
|
152855
152849
|
if (isMemberEnumBase(member)) {
|
|
152856
152850
|
if (member.enumId === NEO_CELL_PATTERN_EXCLUDING_ENUM_ID)
|
|
152857
152851
|
return `NeoGeneratedTypesSupport.Value(NeoCellPatternStorage.${isMultiSelectionMember(member) ? "ExcludingListIds" : "OptionalExcludingIds"}(${valueExpression}))`;
|
|
152858
|
-
const rawExpression = isMultiSelectionMember(member) ? `${ctx
|
|
152852
|
+
const rawExpression = isMultiSelectionMember(member) ? `${enumOptionsName(ctx, member.enumId)}.ToOptionIds(${valueExpression})` : `${valueExpression} is ${ctx.enumNames.get(member.enumId) ?? "NeoEnum"} enumOption ? new[] { enumOption.OptionId() } : null`;
|
|
152859
152853
|
return `NeoGeneratedTypesSupport.Value(${rawExpression})`;
|
|
152860
152854
|
}
|
|
152861
152855
|
if (isMemberLookupBase(member)) {
|
|
@@ -153044,8 +153038,8 @@ function childConverter(ctx, member, saved = false, branchOnReadOnly = false, ge
|
|
|
153044
153038
|
if (isMemberEnumBase(member)) {
|
|
153045
153039
|
if (member.enumId === NEO_CELL_PATTERN_EXCLUDING_ENUM_ID)
|
|
153046
153040
|
return `NeoCellPatternStorage.${isMultiSelectionMember(member) ? "ReadExcludingList" : isRequiredMember2(member) ? "ReadExcluding" : "ReadOptionalExcluding"}(((NeoMemberEnum)child).Selected())`;
|
|
153047
|
-
const
|
|
153048
|
-
return isMultiSelectionMember(member) ? `NeoGeneratedTypesSupport.ReadEnumList(((NeoMemberEnum)child).Selected(), ${
|
|
153041
|
+
const parser = enumParser(ctx, member.enumId);
|
|
153042
|
+
return isMultiSelectionMember(member) ? `NeoGeneratedTypesSupport.ReadEnumList(((NeoMemberEnum)child).Selected(), ${parser})` : isRequiredMember2(member) ? `NeoGeneratedTypesSupport.ReadEnumSingle(((NeoMemberEnum)child).Selected(), ${parser}) ?? throw new InvalidOperationException("Required enum '${escapeCSharpString(member.name)}' has no selected option.")` : `NeoGeneratedTypesSupport.ReadEnumSingle(((NeoMemberEnum)child).Selected(), ${parser})`;
|
|
153049
153043
|
}
|
|
153050
153044
|
if (isMemberLookupBase(member)) return "((NeoMemberLookup)child).Selected()";
|
|
153051
153045
|
if (isMemberDialogueLookupBase(member))
|
|
@@ -153099,8 +153093,8 @@ function nsGetterChildConverter(ctx, returnTypeInfo, saved, genericEnv) {
|
|
|
153099
153093
|
case 8 /* Enum */: {
|
|
153100
153094
|
if (returnTypeInfo.enumId === NEO_CELL_PATTERN_EXCLUDING_ENUM_ID)
|
|
153101
153095
|
return `NeoCellPatternStorage.${returnTypeInfo.required ? "ReadExcluding" : "ReadOptionalExcluding"}(${valueExpression})`;
|
|
153102
|
-
const
|
|
153103
|
-
return
|
|
153096
|
+
const readExpression2 = `NeoGeneratedTypesSupport.ReadEnumSingle(${valueExpression}, ${enumParser(ctx, returnTypeInfo.enumId)})`;
|
|
153097
|
+
return returnTypeInfo.required ? `${readExpression2} ?? throw new InvalidOperationException("NSProperty returned null for a required enum value.")` : readExpression2;
|
|
153104
153098
|
}
|
|
153105
153099
|
case 18 /* DialogueLookup */: {
|
|
153106
153100
|
const dialogueIds = `NeoGeneratedTypesSupport.ToStringArray(${valueExpression})`;
|
|
@@ -153167,7 +153161,7 @@ function escapeCSharpString(value) {
|
|
|
153167
153161
|
(character) => CSHARP_STRING_ESCAPES.get(character) ?? `\\u${character.charCodeAt(0).toString(16).padStart(4, "0")}`
|
|
153168
153162
|
);
|
|
153169
153163
|
}
|
|
153170
|
-
var NEO_MEMORY_SCHEMA_KEYS, NEO_MEMORY_CLASS_NAMES,
|
|
153164
|
+
var NEO_MEMORY_SCHEMA_KEYS, NEO_MEMORY_CLASS_NAMES, CHILDREN_SCHEMA_KEY, TILE_LAYER_LINK_INTERFACE, OBJECT_LAYER_LINK_INTERFACE, OBJECT_SPAWN_HOOKS_INTERFACE, TILE_LAYER_RENDER_TARGET_PROVIDER_INTERFACE, SMART_TILE_SOURCE_INTERFACE, SMART_TILE_INTERFACE, SMART_TILE_RULE_INTERFACE, SMART_TILE_NEIGHBOR_INTERFACE, WORLD_OBJECT_VALUE_INTERFACE, OBJECT_COMPOSITION_SOURCE_INTERFACE, COLLIDER_SOURCE_INTERFACE, SORTING_GROUP_SOURCE_INTERFACE, COLLIDER_INTERFACE, SORTING_GROUP_INTERFACE, SPRITE_OBJECT_VALUE_INTERFACE, SORTING_GROUP_SOURCE_MEMBER_NAME, OBJECT_BASE_NAME_SCHEMA_KEY, OBJECT_BASE_POSITION_SCHEMA_KEY, OBJECT_BASE_SIZE_SCHEMA_KEY, SPRITE_OBJECT_SPRITE_SCHEMA_KEY, SPRITE_OBJECT_FLIP_X_SCHEMA_KEY, SPRITE_OBJECT_FLIP_Y_SCHEMA_KEY, SPRITE_OBJECT_MASK_INTERACTION_SCHEMA_KEY, SPRITE_OBJECT_SORTING_ORDER_SCHEMA_KEY, TILE_CELL_SCHEMA_KEY, EMPTY_RUNTIME_CONTRACT_PLAN, SMART_TILE_CONTRACT_WORLD_KINDS, WORLD_OBJECT_CONTRACT_WORLD_KINDS, SMART_TILE_NEIGHBOR_TILE_RELATION_EXPRESSION, REQUIRED_STRING_CONTRACT_FIELD, REQUIRED_BOOL_CONTRACT_FIELD, OPTIONAL_BOOL_CONTRACT_FIELD, OPTIONAL_INT_CONTRACT_FIELD, REQUIRED_FLOAT_CONTRACT_FIELD, REQUIRED_SPRITE_CONTRACT_FIELD, REQUIRED_VECTOR2_CONTRACT_FIELD, OPTIONAL_VECTOR2_CONTRACT_FIELD, REQUIRED_VECTOR2_INT_CONTRACT_FIELD, REQUIRED_VECTOR3_CONTRACT_FIELD, VARIANTS_SCOPE_NAME, BASE_VARIANT_NAME, VARIANT_APPLY_METHOD_NAME, VARIANT_FOLDER_SEPARATOR, CSHARP_STRING_ESCAPES, UNRESOLVED_VARIANT_TARGET;
|
|
153171
153165
|
var init_generate_unity_classes = __esm({
|
|
153172
153166
|
"../src/models/exports/unity-codegen/generate-unity-classes.ts"() {
|
|
153173
153167
|
"use strict";
|
|
@@ -153213,24 +153207,6 @@ var init_generate_unity_classes = __esm({
|
|
|
153213
153207
|
textNodeMemory: "NeoTextNodeMemory",
|
|
153214
153208
|
choiceLog: "NeoChoiceLog"
|
|
153215
153209
|
};
|
|
153216
|
-
GENERATED_ENUM_CLASS_MEMBER_NAMES = /* @__PURE__ */ new Set([
|
|
153217
|
-
"values",
|
|
153218
|
-
"optionId",
|
|
153219
|
-
"Text",
|
|
153220
|
-
"TextId",
|
|
153221
|
-
"FromOptionId",
|
|
153222
|
-
"ToOptionIds",
|
|
153223
|
-
"IsKnown",
|
|
153224
|
-
"TextIdForOptionId",
|
|
153225
|
-
"TextForOptionId",
|
|
153226
|
-
"ToString",
|
|
153227
|
-
"Equals",
|
|
153228
|
-
"GetHashCode",
|
|
153229
|
-
"GetType",
|
|
153230
|
-
"ReferenceEquals",
|
|
153231
|
-
"MemberwiseClone",
|
|
153232
|
-
"Finalize"
|
|
153233
|
-
]);
|
|
153234
153210
|
CHILDREN_SCHEMA_KEY = "Children";
|
|
153235
153211
|
TILE_LAYER_LINK_INTERFACE = "INeoTileLayerLinkValue";
|
|
153236
153212
|
OBJECT_LAYER_LINK_INTERFACE = "INeoObjectLayerLinkValue";
|
|
@@ -156488,7 +156464,7 @@ var UNITY_CODEGEN_REVISION;
|
|
|
156488
156464
|
var init_unity_codegen_revision = __esm({
|
|
156489
156465
|
"../src/models/exports/unity-codegen-revision.ts"() {
|
|
156490
156466
|
"use strict";
|
|
156491
|
-
UNITY_CODEGEN_REVISION = "
|
|
156467
|
+
UNITY_CODEGEN_REVISION = "30d96d89e3d179ccf291e522834281f90dbd44b464cf51eea76aae87eed97e7e";
|
|
156492
156468
|
}
|
|
156493
156469
|
});
|
|
156494
156470
|
|
|
@@ -174074,6 +174050,7 @@ function selectedSpecPaths(workspace, selectors) {
|
|
|
174074
174050
|
const normalizedSelectors = selectors.map(
|
|
174075
174051
|
(selector) => selector.replaceAll("\\", "/").replace(/^\.\//u, "")
|
|
174076
174052
|
);
|
|
174053
|
+
const realRoot = realpathSync2(workspace.root);
|
|
174077
174054
|
for (const selector of normalizedSelectors) {
|
|
174078
174055
|
if (/[*?]/u.test(selector)) continue;
|
|
174079
174056
|
if (isAbsolute3(selector)) {
|
|
@@ -174090,7 +174067,7 @@ function selectedSpecPaths(workspace, selectors) {
|
|
|
174090
174067
|
}
|
|
174091
174068
|
if (!existsSync19(absolute)) continue;
|
|
174092
174069
|
const real = realpathSync2(absolute);
|
|
174093
|
-
const realRelative = relative9(
|
|
174070
|
+
const realRelative = relative9(realRoot, real);
|
|
174094
174071
|
if (realRelative === ".." || realRelative.startsWith(`..${sep9}`)) {
|
|
174095
174072
|
throw new Error(
|
|
174096
174073
|
`Spec selector ${JSON.stringify(selector)} resolves outside the workspace through a symlink.`
|
|
@@ -182175,7 +182152,7 @@ There is no --keep-current: preserving current semantic state defines flatten.
|
|
|
182175
182152
|
async function main() {
|
|
182176
182153
|
const args = parseArgs(process.argv.slice(2));
|
|
182177
182154
|
if (args.command === "--version") {
|
|
182178
|
-
console.log("0.70.
|
|
182155
|
+
console.log("0.70.4");
|
|
182179
182156
|
return;
|
|
182180
182157
|
}
|
|
182181
182158
|
if (args.command === null || args.command === "help" || args.command === "--help" || args.command === "-h") {
|
package/package.json
CHANGED
|
@@ -110,7 +110,7 @@ wrappers.
|
|
|
110
110
|
The marker near the top of `SKILL.md` must exactly match the package version:
|
|
111
111
|
|
|
112
112
|
```html
|
|
113
|
-
<!-- reviewed-through-cli: 0.70.
|
|
113
|
+
<!-- reviewed-through-cli: 0.70.4 -->
|
|
114
114
|
```
|
|
115
115
|
|
|
116
116
|
The quoted version above is checked too, so this instruction cannot go stale
|