@neocompose/cli 0.7.1 → 0.7.3
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 +14 -0
- package/dist/neo.mjs +31 -3
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,20 @@
|
|
|
7
7
|
- Document the final relation-only world layer-link contract and keep the
|
|
8
8
|
format-4 Hello World corpus free of the retired value-side binding field.
|
|
9
9
|
|
|
10
|
+
## [0.7.3] - 2026-07-22
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- Keep sparse member fields sparse during push-time NeoScript recompilation so
|
|
15
|
+
`isReadOnly: false` does not create phantom changes rejected by trusted lowering.
|
|
16
|
+
|
|
17
|
+
## [0.7.2] - 2026-07-22
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
|
|
21
|
+
- Preserve declaration-local `isReadOnly` on every override when an entire
|
|
22
|
+
inheritance chain converts to read-only in one source push.
|
|
23
|
+
|
|
10
24
|
## [0.7.1] - 2026-07-22
|
|
11
25
|
|
|
12
26
|
### Added
|
package/dist/neo.mjs
CHANGED
|
@@ -22650,6 +22650,7 @@ function memberToDocument(member, baseData3, parentMember) {
|
|
|
22650
22650
|
const normalizedBaseData = normalizeDocumentFields("member", baseData3);
|
|
22651
22651
|
for (const [field, value] of Object.entries(fields)) {
|
|
22652
22652
|
if (MEMBER_IDENTITY_FIELDS.has(field)) continue;
|
|
22653
|
+
if (field === "isReadOnly") continue;
|
|
22653
22654
|
if (Object.prototype.hasOwnProperty.call(normalizedBaseData, field))
|
|
22654
22655
|
continue;
|
|
22655
22656
|
if (!Object.prototype.hasOwnProperty.call(inheritedFields, field)) continue;
|
|
@@ -64310,13 +64311,28 @@ function prepareCompleteNeoScriptBodyChanges(workspace, status, schema, options
|
|
|
64310
64311
|
if (typeof compiled.id !== "string") continue;
|
|
64311
64312
|
const explicit = changesById.get(compiled.id);
|
|
64312
64313
|
if (explicit !== void 0) {
|
|
64313
|
-
explicit.nextData
|
|
64314
|
+
if (explicit.nextData === void 0) {
|
|
64315
|
+
throw new Error(
|
|
64316
|
+
`Cannot attach compiled NeoScript for deleted member "${compiled.id}".`
|
|
64317
|
+
);
|
|
64318
|
+
}
|
|
64319
|
+
explicit.nextData = mergeCompiledNeoScriptBody(
|
|
64320
|
+
explicit.nextData,
|
|
64321
|
+
compiled
|
|
64322
|
+
);
|
|
64314
64323
|
continue;
|
|
64315
64324
|
}
|
|
64316
64325
|
if (!completeSweep) continue;
|
|
64317
64326
|
const key = recordStateKey("member", compiled.id);
|
|
64318
64327
|
const base = workspace.state.records[key];
|
|
64319
|
-
if (base === void 0
|
|
64328
|
+
if (base === void 0) continue;
|
|
64329
|
+
if (!isObjectRecord2(base.data)) {
|
|
64330
|
+
throw new Error(
|
|
64331
|
+
`Cannot attach compiled NeoScript for member "${compiled.id}": its base record is not an object.`
|
|
64332
|
+
);
|
|
64333
|
+
}
|
|
64334
|
+
const nextData = mergeCompiledNeoScriptBody(base.data, compiled);
|
|
64335
|
+
if (canonicallyEqual(base.data, nextData)) continue;
|
|
64320
64336
|
const reconstructed3 = status.reconstructed.get(key);
|
|
64321
64337
|
if (reconstructed3 === void 0) {
|
|
64322
64338
|
throw new Error(
|
|
@@ -64328,7 +64344,7 @@ function prepareCompleteNeoScriptBodyChanges(workspace, status, schema, options
|
|
|
64328
64344
|
recordKind: "member",
|
|
64329
64345
|
recordId: compiled.id,
|
|
64330
64346
|
file: reconstructed3.file,
|
|
64331
|
-
nextData
|
|
64347
|
+
nextData,
|
|
64332
64348
|
baseData: base.data,
|
|
64333
64349
|
baseContentHash: base.contentHash,
|
|
64334
64350
|
casBaseHash: base.conflictServerHash ?? base.contentHash
|
|
@@ -64337,6 +64353,18 @@ function prepareCompleteNeoScriptBodyChanges(workspace, status, schema, options
|
|
|
64337
64353
|
changesById.set(compiled.id, cascadeChange);
|
|
64338
64354
|
}
|
|
64339
64355
|
}
|
|
64356
|
+
function mergeCompiledNeoScriptBody(persisted, compiled) {
|
|
64357
|
+
const next = { ...persisted };
|
|
64358
|
+
const fields = compiled.kind === 10 ? ["getter", "setter"] : ["action"];
|
|
64359
|
+
for (const field of fields) {
|
|
64360
|
+
if (compiled[field] === void 0) {
|
|
64361
|
+
delete next[field];
|
|
64362
|
+
} else {
|
|
64363
|
+
next[field] = compiled[field];
|
|
64364
|
+
}
|
|
64365
|
+
}
|
|
64366
|
+
return next;
|
|
64367
|
+
}
|
|
64340
64368
|
function workspaceChangesRequireCompleteBodySweep(changes) {
|
|
64341
64369
|
for (const change of changes) {
|
|
64342
64370
|
if (change.recordKind === "class" || change.recordKind === "enum" || change.recordKind === "interface") {
|