@neocompose/cli 0.31.12 → 0.31.14
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,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.31.14] - 2026-08-18
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
- Accept code-only sparse NeoScript function overrides while reading local
|
|
8
|
+
pre-compilation candidates, without relaxing stored document validation.
|
|
9
|
+
|
|
10
|
+
## [0.31.13] - 2026-08-18
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- Encode native and NeoScript function overrides with sparse inherited
|
|
15
|
+
signatures, preventing validation from rejecting callable overrides.
|
|
16
|
+
|
|
3
17
|
## [0.31.12] - 2026-08-17
|
|
4
18
|
|
|
5
19
|
### Fixed
|
package/dist/neo.mjs
CHANGED
|
@@ -35383,9 +35383,11 @@ function memberToDocumentFields(member, baseData3) {
|
|
|
35383
35383
|
fields.templateId = member.templateId;
|
|
35384
35384
|
}
|
|
35385
35385
|
if (member.kind === "function" || member.kind === "scriptFunction") {
|
|
35386
|
-
|
|
35387
|
-
|
|
35388
|
-
|
|
35386
|
+
if (member.overrideOf === null) {
|
|
35387
|
+
fields.returnTypeInfo = manifestReturnTypeToDocument(member.returnType);
|
|
35388
|
+
fields.argumentTypes = member.arguments.map(manifestArgumentToDocument);
|
|
35389
|
+
fields.deferred = member.deferred;
|
|
35390
|
+
}
|
|
35389
35391
|
if (member.kind === "scriptFunction" && member.script !== null && member.bodyMode !== "ui") {
|
|
35390
35392
|
fields.code = member.script.sourceText;
|
|
35391
35393
|
}
|
|
@@ -43261,9 +43263,38 @@ function isMemberOverrideProps(value) {
|
|
|
43261
43263
|
function isMemberOverride(value) {
|
|
43262
43264
|
return isMemberOverrideProps(value);
|
|
43263
43265
|
}
|
|
43266
|
+
function isUncompiledMemberNSFunctionOverride(value) {
|
|
43267
|
+
const v = value;
|
|
43268
|
+
if (!isMemberOverrideBase(value)) return false;
|
|
43269
|
+
if (v.kind !== 23 /* NSFunction */) return false;
|
|
43270
|
+
if (typeof v.id !== "string") return false;
|
|
43271
|
+
if (typeof v.projectId !== "string") return false;
|
|
43272
|
+
if (!isEpochMillis(v.createdAt)) return false;
|
|
43273
|
+
if (!isEpochMillis(v.updatedAt)) return false;
|
|
43274
|
+
if (v.valueId !== void 0) return false;
|
|
43275
|
+
if (v.returnTypeInfo !== void 0) return false;
|
|
43276
|
+
if (v.argumentTypes !== void 0) return false;
|
|
43277
|
+
if (v.deferred !== void 0) return false;
|
|
43278
|
+
if (v.getter !== void 0) return false;
|
|
43279
|
+
if (v.setterCode !== void 0) return false;
|
|
43280
|
+
if (v.setter !== void 0) return false;
|
|
43281
|
+
if (v.action !== void 0) return false;
|
|
43282
|
+
if (v.required !== void 0 && v.required !== false) return false;
|
|
43283
|
+
if (v.defaultValue !== void 0 && v.defaultValue !== null) return false;
|
|
43284
|
+
if (v.storageKey !== void 0 && v.storageKey !== null) return false;
|
|
43285
|
+
if (v.bodyMode === "ui") {
|
|
43286
|
+
if (!isNSFunctionUIBody(v.uiAction)) return false;
|
|
43287
|
+
return v.code === void 0;
|
|
43288
|
+
}
|
|
43289
|
+
if (v.uiAction !== void 0 && v.uiAction !== null) return false;
|
|
43290
|
+
return typeof v.code === "string" && v.code.length > 0;
|
|
43291
|
+
}
|
|
43264
43292
|
function isAnyMember(value) {
|
|
43265
43293
|
return isMember(value) || isMemberOverride(value);
|
|
43266
43294
|
}
|
|
43295
|
+
function isAnyMemberAuthoredOrCompiled(value) {
|
|
43296
|
+
return isAnyMember(value) || isUncompiledMemberNSFunctionOverride(value);
|
|
43297
|
+
}
|
|
43267
43298
|
var FunctionMemberNamePattern, FunctionArgumentReservedNames, NSFunctionArgumentReservedNames, DECIMAL_STRING_PATTERN, DECIMAL_MAX_SIGNIFICANT_DIGITS, DECIMAL_MAX_SCALE;
|
|
43268
43299
|
var init_member_kinds = __esm({
|
|
43269
43300
|
"../src/models/members/member-kinds.ts"() {
|
|
@@ -73589,7 +73620,7 @@ function readProjectDocument(value, options = {}) {
|
|
|
73589
73620
|
members: readArrayField(
|
|
73590
73621
|
value,
|
|
73591
73622
|
"members",
|
|
73592
|
-
isAnyMember
|
|
73623
|
+
options.members === "authored-or-compiled" ? isAnyMemberAuthoredOrCompiled : isAnyMember
|
|
73593
73624
|
),
|
|
73594
73625
|
classes: readArrayField(value, "classes", isNeoSchemaClass),
|
|
73595
73626
|
constructors: readOptionalArrayField(
|
|
@@ -93455,6 +93486,9 @@ function replayAnimationDeclarationInitializersV4(records2, document, fallbackDo
|
|
|
93455
93486
|
rootOwners,
|
|
93456
93487
|
rootKinds
|
|
93457
93488
|
);
|
|
93489
|
+
const resolvedMembers = new Map(
|
|
93490
|
+
document.members.map((member) => [member.id, member])
|
|
93491
|
+
);
|
|
93458
93492
|
const pulled = /* @__PURE__ */ new Map();
|
|
93459
93493
|
for (const record3 of records2) {
|
|
93460
93494
|
const recordId = record3.data.id;
|
|
@@ -93464,7 +93498,10 @@ function replayAnimationDeclarationInitializersV4(records2, document, fallbackDo
|
|
|
93464
93498
|
recordId,
|
|
93465
93499
|
contentHash: "prospective-animation-validation",
|
|
93466
93500
|
deleted: false,
|
|
93467
|
-
|
|
93501
|
+
// Initializer replay consumes the runtime document shape too. Reuse the
|
|
93502
|
+
// transiently hydrated member instead of feeding sparse callable
|
|
93503
|
+
// overrides back through the strict full-record reader.
|
|
93504
|
+
data: record3.recordKind === "member" ? resolvedMembers.get(recordId) ?? record3.data : record3.data
|
|
93468
93505
|
});
|
|
93469
93506
|
}
|
|
93470
93507
|
const replayDocument = readPulledProjectDocumentV4(pulled);
|
|
@@ -93582,6 +93619,11 @@ function prospectiveAnimationDocumentV4(records2) {
|
|
|
93582
93619
|
(record3) => record3.recordKind === "class" && (Array.isArray(record3.data.constructorProjections) || declaresAnimationWorldKind(record3.data.system))
|
|
93583
93620
|
);
|
|
93584
93621
|
if (!hasAnimationSchema) return null;
|
|
93622
|
+
const memberRecords = new Map(
|
|
93623
|
+
candidates.flatMap(
|
|
93624
|
+
(record3) => record3.recordKind === "member" && typeof record3.data.id === "string" ? [[record3.data.id, record3.data]] : []
|
|
93625
|
+
)
|
|
93626
|
+
);
|
|
93585
93627
|
let project;
|
|
93586
93628
|
const classes = [];
|
|
93587
93629
|
const members = [];
|
|
@@ -93602,12 +93644,16 @@ function prospectiveAnimationDocumentV4(records2) {
|
|
|
93602
93644
|
}
|
|
93603
93645
|
classes.push(record3.data);
|
|
93604
93646
|
} else if (record3.recordKind === "member") {
|
|
93605
|
-
|
|
93647
|
+
const member = hydrateProspectiveCallableOverride(
|
|
93648
|
+
record3.data,
|
|
93649
|
+
memberRecords
|
|
93650
|
+
);
|
|
93651
|
+
if (!isMember(member)) {
|
|
93606
93652
|
throw new Error(
|
|
93607
93653
|
`Prospective animation validation received an invalid member record ${recordLabel(record3.data)}.`
|
|
93608
93654
|
);
|
|
93609
93655
|
}
|
|
93610
|
-
members.push(
|
|
93656
|
+
members.push(member);
|
|
93611
93657
|
} else if (record3.recordKind === "value") {
|
|
93612
93658
|
if (!isMemberValue(record3.data)) {
|
|
93613
93659
|
throw new Error(
|
|
@@ -93641,6 +93687,34 @@ function prospectiveAnimationDocumentV4(records2) {
|
|
|
93641
93687
|
});
|
|
93642
93688
|
return { project, classes, members, values: validationValues };
|
|
93643
93689
|
}
|
|
93690
|
+
function hydrateProspectiveCallableOverride(data, members) {
|
|
93691
|
+
if (data.kind !== 13 /* Function */ && data.kind !== 23 /* NSFunction */ || typeof data.extendsMemberId !== "string") {
|
|
93692
|
+
return data;
|
|
93693
|
+
}
|
|
93694
|
+
const hydrated = { ...data };
|
|
93695
|
+
for (const field of [
|
|
93696
|
+
"returnTypeInfo",
|
|
93697
|
+
"argumentTypes",
|
|
93698
|
+
"deferred"
|
|
93699
|
+
]) {
|
|
93700
|
+
if (Object.hasOwn(hydrated, field)) continue;
|
|
93701
|
+
const inherited = resolveProspectiveMemberField(data, field, members);
|
|
93702
|
+
if (inherited !== void 0) hydrated[field] = inherited;
|
|
93703
|
+
}
|
|
93704
|
+
return hydrated;
|
|
93705
|
+
}
|
|
93706
|
+
function resolveProspectiveMemberField(start, field, members) {
|
|
93707
|
+
let current = start;
|
|
93708
|
+
const visited = /* @__PURE__ */ new Set();
|
|
93709
|
+
while (current !== void 0) {
|
|
93710
|
+
if (Object.hasOwn(current, field)) return current[field];
|
|
93711
|
+
const parentId = current.extendsMemberId;
|
|
93712
|
+
if (typeof parentId !== "string" || visited.has(parentId)) return void 0;
|
|
93713
|
+
visited.add(parentId);
|
|
93714
|
+
current = members.get(parentId);
|
|
93715
|
+
}
|
|
93716
|
+
return void 0;
|
|
93717
|
+
}
|
|
93644
93718
|
function declaresAnimationWorldKind(system) {
|
|
93645
93719
|
if (!isObjectRecord2(system)) return false;
|
|
93646
93720
|
const worldKind = system.worldKind;
|
|
@@ -95050,7 +95124,8 @@ function readPulledProjectDocumentV4(records2) {
|
|
|
95050
95124
|
),
|
|
95051
95125
|
{
|
|
95052
95126
|
constructors: "authored-or-compiled",
|
|
95053
|
-
identities: "prospective"
|
|
95127
|
+
identities: "prospective",
|
|
95128
|
+
members: "authored-or-compiled"
|
|
95054
95129
|
}
|
|
95055
95130
|
);
|
|
95056
95131
|
}
|
|
@@ -111549,7 +111624,7 @@ var init_registry2 = __esm({
|
|
|
111549
111624
|
PROJECT_SCHEMA_CONTRACT = Object.freeze({
|
|
111550
111625
|
formatVersion: 3,
|
|
111551
111626
|
contractVersion: "3.13",
|
|
111552
|
-
cliVersion: "0.31.
|
|
111627
|
+
cliVersion: "0.31.14",
|
|
111553
111628
|
projectFileUploadBatchSize: 32,
|
|
111554
111629
|
documentRecords: {
|
|
111555
111630
|
member: {
|
|
@@ -118144,7 +118219,7 @@ There is no --keep-current: preserving current semantic state defines flatten.
|
|
|
118144
118219
|
async function main() {
|
|
118145
118220
|
const args = parseArgs(process.argv.slice(2));
|
|
118146
118221
|
if (args.command === "--version") {
|
|
118147
|
-
console.log("0.31.
|
|
118222
|
+
console.log("0.31.14");
|
|
118148
118223
|
return;
|
|
118149
118224
|
}
|
|
118150
118225
|
if (args.command === null || args.command === "help" || args.command === "--help" || args.command === "-h") {
|
package/package.json
CHANGED
|
@@ -83,7 +83,7 @@ wrappers.
|
|
|
83
83
|
The marker near the top of `SKILL.md` must exactly match the package version:
|
|
84
84
|
|
|
85
85
|
```html
|
|
86
|
-
<!-- reviewed-through-cli: 0.31.
|
|
86
|
+
<!-- reviewed-through-cli: 0.31.14 -->
|
|
87
87
|
```
|
|
88
88
|
|
|
89
89
|
The quoted version above is checked too, so this instruction cannot go stale
|