@neocompose/cli 0.53.4 → 0.53.7
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.53.7] - 2026-09-22
|
|
4
|
+
|
|
5
|
+
- Adding a value under a row that stores packed children, such as a new list on an item whose sprite is packed, keeps those children readable in `neo test`, `neo status`, and `neo push --dry-run`. A constructed instance replayed from that row used to receive the child's id instead of its value and fail with "NSFunction argument 1 does not match its declared runtime type."
|
|
6
|
+
- Editing a function's or property's source drops its stale compiled body before local verification. Changing a function's parameters while keeping its `@id` no longer fails with 'Convex project document field "members" has an invalid shape'.
|
|
7
|
+
|
|
8
|
+
## [0.53.6] - 2026-09-19
|
|
9
|
+
|
|
10
|
+
- Full project reads, including initial pulls and resyncs, fetch published snapshots directly in bounded pages, reducing Convex requests and duplicate database reads. Normal incremental pulls keep their existing delta transport.
|
|
11
|
+
|
|
12
|
+
## [0.53.5] - 2026-09-19
|
|
13
|
+
|
|
14
|
+
- `neo test` and `neo push --dry-run` compile pending member initializers and their newly authored callable dependencies when a deletion replays a surviving constructed instance. Adding a computed default and deleting an owned row in one push no longer fails with "has no compiled body".
|
|
15
|
+
- Clearing a stored list, dictionary, or nested object override, or resetting a scalar to its declared default, preserves its stored binding during source verification. `neo test` and `neo push --dry-run` no longer reject these edits as omitted parent changes.
|
|
16
|
+
|
|
3
17
|
## [0.53.4] - 2026-09-19
|
|
4
18
|
|
|
5
19
|
- `neo test` preserves runtime types and getter overrides for nested save objects after writes rebuild the evaluator ownership index. Virtual children reuse their known owning graph when no stored parent link exists.
|
package/dist/neo.mjs
CHANGED
|
@@ -38465,16 +38465,26 @@ function composeDocumentRecord(recordKind, recordId, authoredFields, baseRecord)
|
|
|
38465
38465
|
}
|
|
38466
38466
|
assertKnownDocumentFields(recordKind, baseRecord.data);
|
|
38467
38467
|
const base = partitionDocumentFields(recordKind, baseRecord.data);
|
|
38468
|
-
const
|
|
38468
|
+
const derived = Object.entries(base.derived);
|
|
38469
|
+
const authoredEdited = derived.length > 0 && !schemaDocumentAuthoredSemanticallyEqual(
|
|
38469
38470
|
recordKind,
|
|
38470
38471
|
baseRecord.data,
|
|
38471
38472
|
normalizedAuthored
|
|
38472
38473
|
);
|
|
38473
|
-
|
|
38474
|
+
for (const [field, value] of derived) {
|
|
38475
|
+
if (authoredEdited && compiledFromAuthoredBody(recordKind, field)) {
|
|
38476
|
+
continue;
|
|
38477
|
+
}
|
|
38478
|
+
data[field] = value;
|
|
38479
|
+
}
|
|
38474
38480
|
Object.assign(data, base.volatile);
|
|
38475
38481
|
}
|
|
38476
38482
|
return { recordKind, recordId, data };
|
|
38477
38483
|
}
|
|
38484
|
+
function compiledFromAuthoredBody(recordKind, field) {
|
|
38485
|
+
if (recordKind === "constructor") return true;
|
|
38486
|
+
return recordKind === "member" && field !== "valueId";
|
|
38487
|
+
}
|
|
38478
38488
|
function assertOnlyAuthoredFields(recordKind, fields) {
|
|
38479
38489
|
for (const field of Object.keys(fields)) {
|
|
38480
38490
|
const disposition = fieldDisposition(recordKind, field);
|
|
@@ -85700,6 +85710,171 @@ var init_init_source = __esm({
|
|
|
85700
85710
|
}
|
|
85701
85711
|
});
|
|
85702
85712
|
|
|
85713
|
+
// ../src/database/document-initializer-compiler.ts
|
|
85714
|
+
function initializerCompilerState(document, compilationProject) {
|
|
85715
|
+
const existing = documentInitializerCompilerStates.get(document);
|
|
85716
|
+
if (existing !== void 0) {
|
|
85717
|
+
if (compilationProject !== void 0) {
|
|
85718
|
+
existing.compilationProject = compilationProject;
|
|
85719
|
+
}
|
|
85720
|
+
return existing;
|
|
85721
|
+
}
|
|
85722
|
+
const created = {
|
|
85723
|
+
compilationProject: compilationProject ?? null
|
|
85724
|
+
};
|
|
85725
|
+
documentInitializerCompilerStates.set(document, created);
|
|
85726
|
+
return created;
|
|
85727
|
+
}
|
|
85728
|
+
function compilationProjectForDocument(document, state) {
|
|
85729
|
+
state.compilationProject ??= createNeoScriptCompilationProject({
|
|
85730
|
+
project: document.project,
|
|
85731
|
+
projectFiles: document.projectFiles,
|
|
85732
|
+
members: document.members,
|
|
85733
|
+
classes: document.classes,
|
|
85734
|
+
enums: document.enums,
|
|
85735
|
+
interfaces: document.interfaces,
|
|
85736
|
+
constructors: document.constructors ?? []
|
|
85737
|
+
});
|
|
85738
|
+
return state.compilationProject;
|
|
85739
|
+
}
|
|
85740
|
+
function documentMemberCompilationIndex(document) {
|
|
85741
|
+
const existing = documentMemberCompilationIndexes.get(document);
|
|
85742
|
+
if (existing !== void 0) return existing;
|
|
85743
|
+
const created = {
|
|
85744
|
+
membersById: new Map(
|
|
85745
|
+
document.members.map((member) => [member.id, member])
|
|
85746
|
+
),
|
|
85747
|
+
ownerClassesByMemberId: new Map(
|
|
85748
|
+
document.classes.flatMap(
|
|
85749
|
+
(schemaClass2) => Object.values(schemaClass2.schema).map(
|
|
85750
|
+
(memberId) => [memberId, schemaClass2]
|
|
85751
|
+
)
|
|
85752
|
+
)
|
|
85753
|
+
)
|
|
85754
|
+
};
|
|
85755
|
+
documentMemberCompilationIndexes.set(document, created);
|
|
85756
|
+
return created;
|
|
85757
|
+
}
|
|
85758
|
+
function documentInitializerCompiler(document, compilationProject) {
|
|
85759
|
+
const state = initializerCompilerState(document, compilationProject);
|
|
85760
|
+
return (site) => {
|
|
85761
|
+
if (site.sourceValueId !== null) {
|
|
85762
|
+
compileValueInitializerDependency(
|
|
85763
|
+
document,
|
|
85764
|
+
site.sourceValueId,
|
|
85765
|
+
compilationProjectForDocument(document, state)
|
|
85766
|
+
);
|
|
85767
|
+
return;
|
|
85768
|
+
}
|
|
85769
|
+
if (site.memberId === null) return;
|
|
85770
|
+
compileMemberInitializerDependency(
|
|
85771
|
+
document,
|
|
85772
|
+
site.memberId,
|
|
85773
|
+
compilationProjectForDocument(document, state)
|
|
85774
|
+
);
|
|
85775
|
+
};
|
|
85776
|
+
}
|
|
85777
|
+
function valueInitializerCompilationSites(document) {
|
|
85778
|
+
const cached = documentValueInitializerCompilationSites.get(document);
|
|
85779
|
+
if (cached !== void 0) return cached;
|
|
85780
|
+
const rows = document.values.filter(isInitValueContent);
|
|
85781
|
+
const valuesById = new Map(
|
|
85782
|
+
document.values.map((value) => [value.id, value])
|
|
85783
|
+
);
|
|
85784
|
+
const ownershipTargetIds = valueIdsWithSourceChains(
|
|
85785
|
+
new Set(rows.map((row) => row.id)),
|
|
85786
|
+
valuesById
|
|
85787
|
+
);
|
|
85788
|
+
const rootOwners = /* @__PURE__ */ new Map();
|
|
85789
|
+
const owners = resolveOwnerMembersForValues(
|
|
85790
|
+
document,
|
|
85791
|
+
ownershipTargetIds,
|
|
85792
|
+
void 0,
|
|
85793
|
+
rootOwners
|
|
85794
|
+
);
|
|
85795
|
+
const sites = /* @__PURE__ */ new Map();
|
|
85796
|
+
for (const row of rows) {
|
|
85797
|
+
const member = owners.get(row.id);
|
|
85798
|
+
if (member === void 0) continue;
|
|
85799
|
+
const ownerContext = initializerOwnerContext(
|
|
85800
|
+
document,
|
|
85801
|
+
row.id,
|
|
85802
|
+
rootOwners,
|
|
85803
|
+
valuesById
|
|
85804
|
+
);
|
|
85805
|
+
sites.set(row.id, {
|
|
85806
|
+
row,
|
|
85807
|
+
member,
|
|
85808
|
+
ownerClass: ownerContext.ownerClass,
|
|
85809
|
+
lexicalThisClass: ownerContext.lexicalThisClass
|
|
85810
|
+
});
|
|
85811
|
+
}
|
|
85812
|
+
documentValueInitializerCompilationSites.set(document, sites);
|
|
85813
|
+
return sites;
|
|
85814
|
+
}
|
|
85815
|
+
function compileValueInitializerDependency(document, valueId, compilationProject) {
|
|
85816
|
+
const site = valueInitializerCompilationSites(document).get(valueId);
|
|
85817
|
+
if (site === void 0) {
|
|
85818
|
+
throw new Error(
|
|
85819
|
+
"Cannot compile initializer dependency because its source value row is unresolved."
|
|
85820
|
+
);
|
|
85821
|
+
}
|
|
85822
|
+
compileValueRowInitializerBody({
|
|
85823
|
+
project: document.project,
|
|
85824
|
+
projectFiles: document.projectFiles,
|
|
85825
|
+
members: document.members,
|
|
85826
|
+
classes: document.classes,
|
|
85827
|
+
enums: document.enums,
|
|
85828
|
+
interfaces: document.interfaces,
|
|
85829
|
+
constructors: document.constructors ?? [],
|
|
85830
|
+
member: site.member,
|
|
85831
|
+
valueRow: { ...site.row },
|
|
85832
|
+
valueId: site.row.id,
|
|
85833
|
+
initializerOwnerClass: site.ownerClass,
|
|
85834
|
+
lexicalThisClass: site.lexicalThisClass,
|
|
85835
|
+
storedConstructionReplay: true,
|
|
85836
|
+
...compilationProject === void 0 ? {} : { compilationProject }
|
|
85837
|
+
});
|
|
85838
|
+
}
|
|
85839
|
+
function compileMemberInitializerDependency(document, memberId, compilationProject) {
|
|
85840
|
+
const compileArgs = {
|
|
85841
|
+
project: document.project,
|
|
85842
|
+
projectFiles: document.projectFiles,
|
|
85843
|
+
members: document.members,
|
|
85844
|
+
classes: document.classes,
|
|
85845
|
+
enums: document.enums,
|
|
85846
|
+
interfaces: document.interfaces,
|
|
85847
|
+
constructors: document.constructors ?? []
|
|
85848
|
+
};
|
|
85849
|
+
const memberIndex = documentMemberCompilationIndex(document);
|
|
85850
|
+
const member = memberIndex.membersById.get(memberId);
|
|
85851
|
+
if (member === void 0) {
|
|
85852
|
+
throw new Error(
|
|
85853
|
+
`Cannot compile initializer dependency for missing member "${memberId}".`
|
|
85854
|
+
);
|
|
85855
|
+
}
|
|
85856
|
+
const thisClass = memberIndex.ownerClassesByMemberId.get(memberId) ?? null;
|
|
85857
|
+
compileMemberInitializerBody({
|
|
85858
|
+
...compileArgs,
|
|
85859
|
+
member,
|
|
85860
|
+
thisClass,
|
|
85861
|
+
...compilationProject === void 0 ? {} : { compilationProject }
|
|
85862
|
+
});
|
|
85863
|
+
}
|
|
85864
|
+
var documentInitializerCompilerStates, documentMemberCompilationIndexes, documentValueInitializerCompilationSites;
|
|
85865
|
+
var init_document_initializer_compiler = __esm({
|
|
85866
|
+
"../src/database/document-initializer-compiler.ts"() {
|
|
85867
|
+
"use strict";
|
|
85868
|
+
init_members();
|
|
85869
|
+
init_compile_ns_property();
|
|
85870
|
+
init_compiler_adapter();
|
|
85871
|
+
init_value_row_owner_members();
|
|
85872
|
+
documentInitializerCompilerStates = /* @__PURE__ */ new WeakMap();
|
|
85873
|
+
documentMemberCompilationIndexes = /* @__PURE__ */ new WeakMap();
|
|
85874
|
+
documentValueInitializerCompilationSites = /* @__PURE__ */ new WeakMap();
|
|
85875
|
+
}
|
|
85876
|
+
});
|
|
85877
|
+
|
|
85703
85878
|
// ../src/runtime/materialize-values.ts
|
|
85704
85879
|
function materializeInitializerValue2(args) {
|
|
85705
85880
|
return materializeInitializerValue({
|
|
@@ -86040,8 +86215,8 @@ __export(project_document_read_exports, {
|
|
|
86040
86215
|
readArrayField: () => readArrayField,
|
|
86041
86216
|
readProjectDocument: () => readProjectDocument,
|
|
86042
86217
|
readProjectDocumentContentHashHeads: () => readProjectDocumentContentHashHeads,
|
|
86043
|
-
readProjectDocumentManifestPage: () => readProjectDocumentManifestPage,
|
|
86044
86218
|
readProjectDocumentManifestPageRecords: () => readProjectDocumentManifestPageRecords,
|
|
86219
|
+
readProjectDocumentPage: () => readProjectDocumentPage,
|
|
86045
86220
|
readProjectDocumentRevisionMarker: () => readProjectDocumentRevisionMarker,
|
|
86046
86221
|
withStoredValueBase: () => withStoredValueBase
|
|
86047
86222
|
});
|
|
@@ -86059,7 +86234,7 @@ async function fetchProjectDocumentRawChunkedOnce(runner, options = {}) {
|
|
|
86059
86234
|
"Chunked project document read received an empty partition key."
|
|
86060
86235
|
);
|
|
86061
86236
|
}
|
|
86062
|
-
const firstPageResult = await runner.
|
|
86237
|
+
const firstPageResult = await runner.fetchPage(
|
|
86063
86238
|
{
|
|
86064
86239
|
numItems: DOCUMENT_MANIFEST_PAGE_SIZE,
|
|
86065
86240
|
cursor: null
|
|
@@ -86067,7 +86242,7 @@ async function fetchProjectDocumentRawChunkedOnce(runner, options = {}) {
|
|
|
86067
86242
|
firstMapKey
|
|
86068
86243
|
);
|
|
86069
86244
|
if (firstPageResult === null) return null;
|
|
86070
|
-
const firstPage =
|
|
86245
|
+
const firstPage = readProjectDocumentPage(firstPageResult);
|
|
86071
86246
|
if (firstPage.metadata === null) {
|
|
86072
86247
|
throw new Error(
|
|
86073
86248
|
"Convex project document manifest first page is missing version metadata."
|
|
@@ -86079,18 +86254,20 @@ async function fetchProjectDocumentRawChunkedOnce(runner, options = {}) {
|
|
|
86079
86254
|
const snapshots = createProjectDocumentSnapshotLoader(
|
|
86080
86255
|
(ids) => fetchScopedSnapshotBatch(runner, ids, readBase)
|
|
86081
86256
|
);
|
|
86082
|
-
const rememberRecords = async (
|
|
86257
|
+
const rememberRecords = async (page) => {
|
|
86258
|
+
if (page.snapshots !== void 0) snapshots.seed(page.snapshots);
|
|
86259
|
+
const records2 = page.records;
|
|
86083
86260
|
for (const record6 of records2) {
|
|
86084
86261
|
recordsByKey.set(`${record6.recordKind} ${record6.recordId}`, record6);
|
|
86085
86262
|
}
|
|
86086
86263
|
await snapshots.enqueue(records2.map((record6) => record6.snapshotId));
|
|
86087
86264
|
};
|
|
86088
86265
|
try {
|
|
86089
|
-
await rememberRecords(firstPage
|
|
86266
|
+
await rememberRecords(firstPage);
|
|
86090
86267
|
const fetchRemainingPages = async (mapKey, initialCursor) => {
|
|
86091
86268
|
let cursor = initialCursor;
|
|
86092
86269
|
while (cursor !== null) {
|
|
86093
|
-
const pageResult = await runner.
|
|
86270
|
+
const pageResult = await runner.fetchPage(
|
|
86094
86271
|
{
|
|
86095
86272
|
numItems: DOCUMENT_MANIFEST_PAGE_SIZE,
|
|
86096
86273
|
cursor
|
|
@@ -86103,15 +86280,15 @@ async function fetchProjectDocumentRawChunkedOnce(runner, options = {}) {
|
|
|
86103
86280
|
"Convex project document manifest returned null for a continuation page."
|
|
86104
86281
|
);
|
|
86105
86282
|
}
|
|
86106
|
-
const page =
|
|
86283
|
+
const page = readProjectDocumentPage(pageResult);
|
|
86107
86284
|
assertProjectReadBase(readBase, page.readBase);
|
|
86108
|
-
await rememberRecords(page
|
|
86285
|
+
await rememberRecords(page);
|
|
86109
86286
|
cursor = page.continueCursor;
|
|
86110
86287
|
}
|
|
86111
86288
|
};
|
|
86112
86289
|
await fetchRemainingPages(firstMapKey, firstPage.continueCursor);
|
|
86113
86290
|
for (const mapKey of mapKeys.slice(1)) {
|
|
86114
|
-
const pageResult = await runner.
|
|
86291
|
+
const pageResult = await runner.fetchPage(
|
|
86115
86292
|
{ numItems: DOCUMENT_MANIFEST_PAGE_SIZE, cursor: null },
|
|
86116
86293
|
mapKey,
|
|
86117
86294
|
readBase,
|
|
@@ -86122,9 +86299,9 @@ async function fetchProjectDocumentRawChunkedOnce(runner, options = {}) {
|
|
|
86122
86299
|
`Convex project document manifest returned null for partition "${mapKey ?? "all"}".`
|
|
86123
86300
|
);
|
|
86124
86301
|
}
|
|
86125
|
-
const page =
|
|
86302
|
+
const page = readProjectDocumentPage(pageResult);
|
|
86126
86303
|
assertProjectReadBase(readBase, page.readBase);
|
|
86127
|
-
await rememberRecords(page
|
|
86304
|
+
await rememberRecords(page);
|
|
86128
86305
|
await fetchRemainingPages(mapKey, page.continueCursor);
|
|
86129
86306
|
}
|
|
86130
86307
|
const snapshotsById = await snapshots.finish();
|
|
@@ -86155,7 +86332,8 @@ async function fetchProjectDocumentRawChunkedOnce(runner, options = {}) {
|
|
|
86155
86332
|
}
|
|
86156
86333
|
}
|
|
86157
86334
|
const records2 = [...recordsByKey.values()];
|
|
86158
|
-
|
|
86335
|
+
if (options.revisionValidation !== "live-subscription")
|
|
86336
|
+
await runner.validateReadBase(readBase);
|
|
86159
86337
|
return assembleProjectDocumentRaw({
|
|
86160
86338
|
version: metadata.version,
|
|
86161
86339
|
versions: metadata.versions,
|
|
@@ -86187,7 +86365,7 @@ async function fetchProjectDocumentPartitionRecords(runner, mapKey, readBase) {
|
|
|
86187
86365
|
try {
|
|
86188
86366
|
let cursor = null;
|
|
86189
86367
|
do {
|
|
86190
|
-
const pageResult = await runner.
|
|
86368
|
+
const pageResult = await runner.fetchPage(
|
|
86191
86369
|
{ numItems: DOCUMENT_MANIFEST_PAGE_SIZE, cursor },
|
|
86192
86370
|
mapKey,
|
|
86193
86371
|
readBase,
|
|
@@ -86198,11 +86376,12 @@ async function fetchProjectDocumentPartitionRecords(runner, mapKey, readBase) {
|
|
|
86198
86376
|
`Convex project document manifest returned null for partition "${mapKey}".`
|
|
86199
86377
|
);
|
|
86200
86378
|
}
|
|
86201
|
-
const page =
|
|
86379
|
+
const page = readProjectDocumentPage(pageResult);
|
|
86202
86380
|
assertProjectReadBase(readBase, page.readBase);
|
|
86203
86381
|
for (const record6 of page.records) {
|
|
86204
86382
|
recordsByKey.set(`${record6.recordKind} ${record6.recordId}`, record6);
|
|
86205
86383
|
}
|
|
86384
|
+
if (page.snapshots !== void 0) snapshots.seed(page.snapshots);
|
|
86206
86385
|
await snapshots.enqueue(page.records.map((record6) => record6.snapshotId));
|
|
86207
86386
|
cursor = page.continueCursor;
|
|
86208
86387
|
} while (cursor !== null);
|
|
@@ -86228,42 +86407,30 @@ async function fetchProjectDocumentPartitionRecords(runner, mapKey, readBase) {
|
|
|
86228
86407
|
}
|
|
86229
86408
|
}
|
|
86230
86409
|
async function fetchProjectDocumentValueRecords(runner, valueIds, readBase) {
|
|
86231
|
-
if (runner.
|
|
86410
|
+
if (runner.fetchValueSnapshotsPage === void 0) {
|
|
86232
86411
|
throw new Error(
|
|
86233
|
-
"Partition-scoped document reads require a value-
|
|
86412
|
+
"Partition-scoped document reads require a value-snapshot reader for member defaults."
|
|
86234
86413
|
);
|
|
86235
86414
|
}
|
|
86236
86415
|
const values = /* @__PURE__ */ new Map();
|
|
86237
86416
|
let cursor = null;
|
|
86238
86417
|
do {
|
|
86239
|
-
const page =
|
|
86240
|
-
|
|
86241
|
-
|
|
86242
|
-
|
|
86243
|
-
|
|
86244
|
-
|
|
86245
|
-
|
|
86246
|
-
|
|
86247
|
-
|
|
86248
|
-
throw new Error(
|
|
86249
|
-
"Value-head page snapshotIds must be an array of strings."
|
|
86250
|
-
);
|
|
86251
|
-
if (page.continueCursor !== null && typeof page.continueCursor !== "string")
|
|
86252
|
-
throw new Error(
|
|
86253
|
-
"Value-head page continueCursor must be a string or null."
|
|
86254
|
-
);
|
|
86255
|
-
const loaded = await fetchProjectDocumentSnapshots(
|
|
86256
|
-
(ids) => fetchScopedSnapshotBatch(runner, ids, readBase),
|
|
86257
|
-
page.snapshotIds
|
|
86258
|
-
);
|
|
86259
|
-
for (const snapshot of loaded.values()) {
|
|
86418
|
+
const page = readProjectDocumentPage(
|
|
86419
|
+
await runner.fetchValueSnapshotsPage(valueIds, cursor, readBase)
|
|
86420
|
+
);
|
|
86421
|
+
assertProjectReadBase(readBase, page.readBase);
|
|
86422
|
+
if (page.snapshots === void 0)
|
|
86423
|
+
throw new Error("Value snapshot page is missing snapshots.");
|
|
86424
|
+
if (page.continueCursor !== null && page.continueCursor === cursor)
|
|
86425
|
+
throw new Error("Value snapshot page cursor made no progress.");
|
|
86426
|
+
for (const snapshot of page.snapshots) {
|
|
86260
86427
|
if (snapshot.recordKind !== "value")
|
|
86261
|
-
throw new Error("Value
|
|
86428
|
+
throw new Error("Value snapshot page returned a non-value snapshot.");
|
|
86262
86429
|
if (snapshot.deleted)
|
|
86263
|
-
throw new Error("Value
|
|
86430
|
+
throw new Error("Value snapshot page returned a deleted snapshot.");
|
|
86264
86431
|
if (!valueIds.includes(snapshot.recordId))
|
|
86265
86432
|
throw new Error(
|
|
86266
|
-
`Value
|
|
86433
|
+
`Value snapshot page returned unrequested value "${snapshot.recordId}".`
|
|
86267
86434
|
);
|
|
86268
86435
|
values.set(snapshot.recordId, snapshot);
|
|
86269
86436
|
}
|
|
@@ -86281,10 +86448,23 @@ async function fetchScopedSnapshotBatch(runner, ids, readBase) {
|
|
|
86281
86448
|
assertProjectReadBase(readBase, readProjectReadBase(result.readBase));
|
|
86282
86449
|
return result;
|
|
86283
86450
|
}
|
|
86284
|
-
function
|
|
86451
|
+
function readProjectDocumentPage(value) {
|
|
86285
86452
|
if (!isObject4(value)) {
|
|
86286
86453
|
throw new Error("Convex project document manifest page must be an object.");
|
|
86287
86454
|
}
|
|
86455
|
+
let snapshots;
|
|
86456
|
+
if (value.snapshots !== void 0) {
|
|
86457
|
+
if (!Array.isArray(value.snapshots))
|
|
86458
|
+
throw new Error("Snapshot page snapshots must be an array.");
|
|
86459
|
+
const ids = value.snapshots.map((snapshot) => {
|
|
86460
|
+
if (!isObject4(snapshot))
|
|
86461
|
+
throw new Error("Snapshot page entry must be an object.");
|
|
86462
|
+
if (typeof snapshot.id !== "string")
|
|
86463
|
+
throw new Error("Snapshot page entry is missing an id.");
|
|
86464
|
+
return snapshot.id;
|
|
86465
|
+
});
|
|
86466
|
+
snapshots = ids.length === 0 ? [] : readProjectDocumentSnapshotBatch(value, ids);
|
|
86467
|
+
}
|
|
86288
86468
|
const continueCursor = value.continueCursor;
|
|
86289
86469
|
if (continueCursor !== null && typeof continueCursor !== "string") {
|
|
86290
86470
|
throw new Error(
|
|
@@ -86307,7 +86487,12 @@ function readProjectDocumentManifestPage(value) {
|
|
|
86307
86487
|
releaseChannels: metadata.releaseChannels,
|
|
86308
86488
|
documentRevision: metadata.documentRevision
|
|
86309
86489
|
},
|
|
86310
|
-
|
|
86490
|
+
...snapshots === void 0 ? {} : { snapshots },
|
|
86491
|
+
records: snapshots === void 0 ? readProjectDocumentManifestRecords(value.records) : snapshots.map((snapshot) => ({
|
|
86492
|
+
recordKind: snapshot.recordKind,
|
|
86493
|
+
recordId: snapshot.recordId,
|
|
86494
|
+
snapshotId: snapshot.id
|
|
86495
|
+
})),
|
|
86311
86496
|
continueCursor
|
|
86312
86497
|
};
|
|
86313
86498
|
}
|
|
@@ -86355,7 +86540,7 @@ function readProjectDocumentManifestPageRecords(value) {
|
|
|
86355
86540
|
if (!isObject4(value)) {
|
|
86356
86541
|
throw new Error("Convex project document manifest page must be an object.");
|
|
86357
86542
|
}
|
|
86358
|
-
return
|
|
86543
|
+
return readProjectDocumentPage(value).records;
|
|
86359
86544
|
}
|
|
86360
86545
|
async function fetchProjectDocumentSnapshots(fetchBatch, snapshotIds) {
|
|
86361
86546
|
const loader = createProjectDocumentSnapshotLoader(fetchBatch);
|
|
@@ -86401,6 +86586,12 @@ function createProjectDocumentSnapshotLoader(fetchBatch) {
|
|
|
86401
86586
|
active.add(work);
|
|
86402
86587
|
};
|
|
86403
86588
|
return {
|
|
86589
|
+
seed(snapshots) {
|
|
86590
|
+
for (const snapshot of snapshots) {
|
|
86591
|
+
seen.add(snapshot.id);
|
|
86592
|
+
snapshotsById.set(snapshot.id, snapshot);
|
|
86593
|
+
}
|
|
86594
|
+
},
|
|
86404
86595
|
async enqueue(snapshotIds) {
|
|
86405
86596
|
checkFailure();
|
|
86406
86597
|
for (const id2 of snapshotIds) {
|
|
@@ -96596,9 +96787,42 @@ function appendAuthoredOwnedValueCascadeDeletes(args) {
|
|
|
96596
96787
|
}
|
|
96597
96788
|
}
|
|
96598
96789
|
if (survivingConstructionIds.size > 0) {
|
|
96790
|
+
const replayMembers = documentMemberCompilationIndex(postScope.document);
|
|
96791
|
+
const replayConstructors = indexRecordsById(
|
|
96792
|
+
postScope.document.constructors ?? []
|
|
96793
|
+
);
|
|
96794
|
+
let compilationProject;
|
|
96795
|
+
for (const change of args.authoredChanges) {
|
|
96796
|
+
if (change.operation === "delete") continue;
|
|
96797
|
+
const member = change.recordKind === "member" ? replayMembers.membersById.get(change.recordId) : void 0;
|
|
96798
|
+
const constructor2 = change.recordKind === "constructor" ? replayConstructors.get(change.recordId) : void 0;
|
|
96799
|
+
const callable2 = member !== void 0 && (member.kind === 23 /* NSFunction */ || member.kind === 10 /* NSProperty */ || member.kind === 26 /* NSAction */);
|
|
96800
|
+
if (constructor2 === void 0 && !callable2) continue;
|
|
96801
|
+
compilationProject ??= cachedServerCompilationProject(postScope.document);
|
|
96802
|
+
const compileArgs = { ...postScope.document, compilationProject };
|
|
96803
|
+
if (constructor2 !== void 0)
|
|
96804
|
+
compileConstructorRecord({
|
|
96805
|
+
...compileArgs,
|
|
96806
|
+
constructors: postScope.document.constructors ?? [],
|
|
96807
|
+
constructor: constructor2
|
|
96808
|
+
});
|
|
96809
|
+
if (callable2)
|
|
96810
|
+
compileAuthoredMemberBodies({
|
|
96811
|
+
...compileArgs,
|
|
96812
|
+
member,
|
|
96813
|
+
thisClass: replayMembers.ownerClassesByMemberId.get(member.id) ?? null
|
|
96814
|
+
});
|
|
96815
|
+
}
|
|
96816
|
+
const replayDocument = {
|
|
96817
|
+
...postScope.document,
|
|
96818
|
+
initializerCompiler: documentInitializerCompiler(
|
|
96819
|
+
postScope.document,
|
|
96820
|
+
compilationProject
|
|
96821
|
+
)
|
|
96822
|
+
};
|
|
96599
96823
|
const resolverDocument = composeResolverDocument(
|
|
96600
|
-
|
|
96601
|
-
initializerEvaluatorLookups(
|
|
96824
|
+
replayDocument,
|
|
96825
|
+
initializerEvaluatorLookups(replayDocument)
|
|
96602
96826
|
);
|
|
96603
96827
|
const materializedIndex = buildVirtualInstanceMaterializedIndex({
|
|
96604
96828
|
document: resolverDocument
|
|
@@ -100831,6 +101055,7 @@ var SERVER_COMPILATION_PROJECT_CACHE_LIMIT, serverCompilationProjectCache, READ_
|
|
|
100831
101055
|
var init_project_version_schema_commit = __esm({
|
|
100832
101056
|
"../src/database/project-version-schema-commit.ts"() {
|
|
100833
101057
|
"use strict";
|
|
101058
|
+
init_document_initializer_compiler();
|
|
100834
101059
|
init_effective_value_comparison();
|
|
100835
101060
|
init_classes();
|
|
100836
101061
|
init_constructor_parameter_settlement();
|
|
@@ -114574,7 +114799,7 @@ var init_stored_value_placements = __esm({
|
|
|
114574
114799
|
});
|
|
114575
114800
|
|
|
114576
114801
|
// src/project-source/root-source.ts
|
|
114577
|
-
function emitProjectRootSourceV4(records2, manifest, materializedConstructors, localValues) {
|
|
114802
|
+
function emitProjectRootSourceV4(records2, manifest, materializedConstructors, localValues, options = {}) {
|
|
114578
114803
|
const project = [...records2.values()].find(
|
|
114579
114804
|
(record6) => !record6.deleted && record6.recordKind === "project"
|
|
114580
114805
|
);
|
|
@@ -114586,6 +114811,7 @@ function emitProjectRootSourceV4(records2, manifest, materializedConstructors, l
|
|
|
114586
114811
|
);
|
|
114587
114812
|
const classes = new Map(manifest.classes.map((entry) => [entry.id, entry]));
|
|
114588
114813
|
const values = emitStoredValueBindingSourcesV4(records2, memberIds, {
|
|
114814
|
+
...options,
|
|
114589
114815
|
manifest,
|
|
114590
114816
|
targetTypedRoot: true,
|
|
114591
114817
|
localValues
|
|
@@ -115159,7 +115385,7 @@ function cliEvaluatorLookups(document, options = {}) {
|
|
|
115159
115385
|
return cliEvaluatorRuntime(document, options).databaseVM;
|
|
115160
115386
|
}
|
|
115161
115387
|
function cliEvaluatorRuntime(document, options = {}) {
|
|
115162
|
-
const initializerCompiler = isPulledInitializerCompilationDocumentV4(document) ?
|
|
115388
|
+
const initializerCompiler = isPulledInitializerCompilationDocumentV4(document) ? documentInitializerCompiler(document) : void 0;
|
|
115163
115389
|
const databaseVM = headlessVirtualInstanceLookups(document, {
|
|
115164
115390
|
...options,
|
|
115165
115391
|
...initializerCompiler === void 0 ? {} : { initializerCompiler }
|
|
@@ -115845,36 +116071,59 @@ function prospectiveInitializerRecordsV4(args) {
|
|
|
115845
116071
|
}
|
|
115846
116072
|
for (const seed of args.authoredValueSeeds) {
|
|
115847
116073
|
if (seed.valueId === void 0) continue;
|
|
115848
|
-
records2
|
|
115849
|
-
|
|
115850
|
-
|
|
115851
|
-
|
|
115852
|
-
|
|
115853
|
-
|
|
115854
|
-
|
|
116074
|
+
setSeedValueRecord(records2, {
|
|
116075
|
+
id: seed.valueId,
|
|
116076
|
+
projectId: args.workspace.config.projectId,
|
|
116077
|
+
...encodeStoredValueNode(seed),
|
|
116078
|
+
createdAt: 0,
|
|
116079
|
+
updatedAt: 0
|
|
116080
|
+
});
|
|
116081
|
+
for (const row of seed.values ?? []) {
|
|
116082
|
+
setSeedValueRecord(records2, {
|
|
116083
|
+
id: row.id,
|
|
115855
116084
|
projectId: args.workspace.config.projectId,
|
|
115856
|
-
...
|
|
116085
|
+
...encodeStoredValueRowFields(row),
|
|
115857
116086
|
createdAt: 0,
|
|
115858
116087
|
updatedAt: 0
|
|
115859
|
-
}
|
|
115860
|
-
}
|
|
115861
|
-
|
|
115862
|
-
|
|
116088
|
+
});
|
|
116089
|
+
}
|
|
116090
|
+
}
|
|
116091
|
+
return records2;
|
|
116092
|
+
}
|
|
116093
|
+
function setSeedValueRecord(records2, data) {
|
|
116094
|
+
const key = `value:${data.id}`;
|
|
116095
|
+
const physical = records2.get(key)?.data;
|
|
116096
|
+
if (isObjectRecord2(physical) && rowCarriesPackedValueContent(physical)) {
|
|
116097
|
+
const row = {
|
|
116098
|
+
projectId: data.projectId,
|
|
116099
|
+
createdAt: 0,
|
|
116100
|
+
updatedAt: 0,
|
|
116101
|
+
...physical
|
|
116102
|
+
};
|
|
116103
|
+
if (!isMemberValue(row)) {
|
|
116104
|
+
throw new PackedValueEncodingError(
|
|
116105
|
+
`Seeded row "${key}" replaces a row that packs a child but is not a well-formed value row, so its packed children cannot be kept.`
|
|
116106
|
+
);
|
|
116107
|
+
}
|
|
116108
|
+
for (const child of decodePackedValueRow(row).children) {
|
|
116109
|
+
const childKey = `value:${child.id}`;
|
|
116110
|
+
if (records2.has(childKey)) continue;
|
|
116111
|
+
records2.set(childKey, {
|
|
115863
116112
|
recordKind: "value",
|
|
115864
|
-
recordId:
|
|
116113
|
+
recordId: child.id,
|
|
115865
116114
|
contentHash: "local-seed",
|
|
115866
116115
|
deleted: false,
|
|
115867
|
-
data:
|
|
115868
|
-
id: row.id,
|
|
115869
|
-
projectId: args.workspace.config.projectId,
|
|
115870
|
-
...encodeStoredValueRowFields(row),
|
|
115871
|
-
createdAt: 0,
|
|
115872
|
-
updatedAt: 0
|
|
115873
|
-
}
|
|
116116
|
+
data: child
|
|
115874
116117
|
});
|
|
115875
116118
|
}
|
|
115876
116119
|
}
|
|
115877
|
-
|
|
116120
|
+
records2.set(key, {
|
|
116121
|
+
recordKind: "value",
|
|
116122
|
+
recordId: data.id,
|
|
116123
|
+
contentHash: "local-seed",
|
|
116124
|
+
deleted: false,
|
|
116125
|
+
data
|
|
116126
|
+
});
|
|
115878
116127
|
}
|
|
115879
116128
|
function initializerCode(records2, valueId) {
|
|
115880
116129
|
const row = records2.get(`value:${valueId}`)?.data;
|
|
@@ -117245,7 +117494,7 @@ function collapseLocalizedSourceRevertsV4(args) {
|
|
|
117245
117494
|
document: comparison,
|
|
117246
117495
|
changes: normalized,
|
|
117247
117496
|
editedValueIds: new Set(edited.map((change) => change.recordId)),
|
|
117248
|
-
initializerCompiler:
|
|
117497
|
+
initializerCompiler: documentInitializerCompiler(comparison)
|
|
117249
117498
|
});
|
|
117250
117499
|
const normalizedById = new Map(
|
|
117251
117500
|
normalized.map((change) => [change.recordId, change])
|
|
@@ -119031,69 +119280,6 @@ function createPulledConstructionReplayContext(args) {
|
|
|
119031
119280
|
valuesById: new Map(args.document.values.map((value) => [value.id, value]))
|
|
119032
119281
|
};
|
|
119033
119282
|
}
|
|
119034
|
-
function pulledInitializerCompilerStateV4(document, compilationProject) {
|
|
119035
|
-
const existing = pulledInitializerCompilerStates.get(document);
|
|
119036
|
-
if (existing !== void 0) {
|
|
119037
|
-
if (compilationProject !== void 0) {
|
|
119038
|
-
existing.compilationProject = compilationProject;
|
|
119039
|
-
}
|
|
119040
|
-
return existing;
|
|
119041
|
-
}
|
|
119042
|
-
const created = {
|
|
119043
|
-
compilationProject: compilationProject ?? null
|
|
119044
|
-
};
|
|
119045
|
-
pulledInitializerCompilerStates.set(document, created);
|
|
119046
|
-
return created;
|
|
119047
|
-
}
|
|
119048
|
-
function compilationProjectForPulledDocumentV4(document, state) {
|
|
119049
|
-
state.compilationProject ??= createNeoScriptCompilationProject({
|
|
119050
|
-
project: document.project,
|
|
119051
|
-
projectFiles: document.projectFiles,
|
|
119052
|
-
members: document.members,
|
|
119053
|
-
classes: document.classes,
|
|
119054
|
-
enums: document.enums,
|
|
119055
|
-
interfaces: document.interfaces,
|
|
119056
|
-
constructors: document.constructors ?? []
|
|
119057
|
-
});
|
|
119058
|
-
return state.compilationProject;
|
|
119059
|
-
}
|
|
119060
|
-
function memberCompilationIndexV4(document) {
|
|
119061
|
-
const existing = pulledMemberCompilationIndexes.get(document);
|
|
119062
|
-
if (existing !== void 0) return existing;
|
|
119063
|
-
const created = {
|
|
119064
|
-
membersById: new Map(
|
|
119065
|
-
document.members.map((member) => [member.id, member])
|
|
119066
|
-
),
|
|
119067
|
-
ownerClassesByMemberId: new Map(
|
|
119068
|
-
document.classes.flatMap(
|
|
119069
|
-
(schemaClass2) => Object.values(schemaClass2.schema).map(
|
|
119070
|
-
(memberId) => [memberId, schemaClass2]
|
|
119071
|
-
)
|
|
119072
|
-
)
|
|
119073
|
-
)
|
|
119074
|
-
};
|
|
119075
|
-
pulledMemberCompilationIndexes.set(document, created);
|
|
119076
|
-
return created;
|
|
119077
|
-
}
|
|
119078
|
-
function pulledInitializerCompilerV4(document, compilationProject) {
|
|
119079
|
-
const state = pulledInitializerCompilerStateV4(document, compilationProject);
|
|
119080
|
-
return (site) => {
|
|
119081
|
-
if (site.sourceValueId !== null) {
|
|
119082
|
-
compilePulledValueInitializerBodyV4(
|
|
119083
|
-
document,
|
|
119084
|
-
site.sourceValueId,
|
|
119085
|
-
compilationProjectForPulledDocumentV4(document, state)
|
|
119086
|
-
);
|
|
119087
|
-
return;
|
|
119088
|
-
}
|
|
119089
|
-
if (site.memberId === null) return;
|
|
119090
|
-
compilePulledMemberInitializerBodyV4(
|
|
119091
|
-
document,
|
|
119092
|
-
site.memberId,
|
|
119093
|
-
compilationProjectForPulledDocumentV4(document, state)
|
|
119094
|
-
);
|
|
119095
|
-
};
|
|
119096
|
-
}
|
|
119097
119283
|
function describePulledProjectBodyCompileError(error) {
|
|
119098
119284
|
const fallback = error instanceof Error ? error.message : String(error);
|
|
119099
119285
|
if (!(error instanceof CompileError)) return fallback;
|
|
@@ -119210,7 +119396,7 @@ function replayStoredConstructionV4(args) {
|
|
|
119210
119396
|
// Replays need distinct compiler closures but read one immutable
|
|
119211
119397
|
// member/value graph. Share its project-sized evaluator indexes.
|
|
119212
119398
|
evaluatorCache: { key: document, revision: void 0 },
|
|
119213
|
-
initializerCompiler:
|
|
119399
|
+
initializerCompiler: documentInitializerCompiler(
|
|
119214
119400
|
document,
|
|
119215
119401
|
compilationProject
|
|
119216
119402
|
)
|
|
@@ -119264,68 +119450,6 @@ function compilePulledUncompiledConstructorsV4(document, compilationProject, rep
|
|
|
119264
119450
|
}
|
|
119265
119451
|
assertPulledConstructorsCompiled(document, replayContext);
|
|
119266
119452
|
}
|
|
119267
|
-
function valueInitializerCompilationSites(document) {
|
|
119268
|
-
const cached = pulledValueInitializerCompilationSites.get(document);
|
|
119269
|
-
if (cached !== void 0) return cached;
|
|
119270
|
-
const rows = document.values.filter(isInitValueContent);
|
|
119271
|
-
const valuesById = new Map(
|
|
119272
|
-
document.values.map((value) => [value.id, value])
|
|
119273
|
-
);
|
|
119274
|
-
const ownershipTargetIds = valueIdsWithSourceChains(
|
|
119275
|
-
new Set(rows.map((row) => row.id)),
|
|
119276
|
-
valuesById
|
|
119277
|
-
);
|
|
119278
|
-
const rootOwners = /* @__PURE__ */ new Map();
|
|
119279
|
-
const owners = resolveOwnerMembersForValues(
|
|
119280
|
-
document,
|
|
119281
|
-
ownershipTargetIds,
|
|
119282
|
-
void 0,
|
|
119283
|
-
rootOwners
|
|
119284
|
-
);
|
|
119285
|
-
const sites = /* @__PURE__ */ new Map();
|
|
119286
|
-
for (const row of rows) {
|
|
119287
|
-
const member = owners.get(row.id);
|
|
119288
|
-
if (member === void 0) continue;
|
|
119289
|
-
const ownerContext = initializerOwnerContext(
|
|
119290
|
-
document,
|
|
119291
|
-
row.id,
|
|
119292
|
-
rootOwners,
|
|
119293
|
-
valuesById
|
|
119294
|
-
);
|
|
119295
|
-
sites.set(row.id, {
|
|
119296
|
-
row,
|
|
119297
|
-
member,
|
|
119298
|
-
ownerClass: ownerContext.ownerClass,
|
|
119299
|
-
lexicalThisClass: ownerContext.lexicalThisClass
|
|
119300
|
-
});
|
|
119301
|
-
}
|
|
119302
|
-
pulledValueInitializerCompilationSites.set(document, sites);
|
|
119303
|
-
return sites;
|
|
119304
|
-
}
|
|
119305
|
-
function compilePulledValueInitializerBodyV4(document, valueId, compilationProject) {
|
|
119306
|
-
const site = valueInitializerCompilationSites(document).get(valueId);
|
|
119307
|
-
if (site === void 0) {
|
|
119308
|
-
throw new Error(
|
|
119309
|
-
"Cannot compile initializer dependency because its source value row is unresolved."
|
|
119310
|
-
);
|
|
119311
|
-
}
|
|
119312
|
-
compileValueRowInitializerBody({
|
|
119313
|
-
project: document.project,
|
|
119314
|
-
projectFiles: document.projectFiles,
|
|
119315
|
-
members: document.members,
|
|
119316
|
-
classes: document.classes,
|
|
119317
|
-
enums: document.enums,
|
|
119318
|
-
interfaces: document.interfaces,
|
|
119319
|
-
constructors: document.constructors ?? [],
|
|
119320
|
-
member: site.member,
|
|
119321
|
-
valueRow: site.row,
|
|
119322
|
-
valueId: String(Reflect.get(site.row, "id")),
|
|
119323
|
-
initializerOwnerClass: site.ownerClass,
|
|
119324
|
-
lexicalThisClass: site.lexicalThisClass,
|
|
119325
|
-
storedConstructionReplay: true,
|
|
119326
|
-
...compilationProject === void 0 ? {} : { compilationProject }
|
|
119327
|
-
});
|
|
119328
|
-
}
|
|
119329
119453
|
function compilePulledProjectDocumentForEvaluationV4(document, compilationProject) {
|
|
119330
119454
|
const sharedCompilationProject = compilationProject ?? createNeoScriptCompilationProject({
|
|
119331
119455
|
project: document.project,
|
|
@@ -119336,7 +119460,7 @@ function compilePulledProjectDocumentForEvaluationV4(document, compilationProjec
|
|
|
119336
119460
|
interfaces: document.interfaces,
|
|
119337
119461
|
constructors: document.constructors ?? []
|
|
119338
119462
|
});
|
|
119339
|
-
|
|
119463
|
+
documentInitializerCompiler(document, sharedCompilationProject);
|
|
119340
119464
|
const compileArgs = {
|
|
119341
119465
|
project: document.project,
|
|
119342
119466
|
projectFiles: document.projectFiles,
|
|
@@ -119351,7 +119475,7 @@ function compilePulledProjectDocumentForEvaluationV4(document, compilationProjec
|
|
|
119351
119475
|
compileConstructorRecord({ ...compileArgs, constructor: constructor2 });
|
|
119352
119476
|
}
|
|
119353
119477
|
assertPulledConstructorsCompiled(document);
|
|
119354
|
-
const memberIndex =
|
|
119478
|
+
const memberIndex = documentMemberCompilationIndex(document);
|
|
119355
119479
|
for (const member of compileArgs.members) {
|
|
119356
119480
|
try {
|
|
119357
119481
|
compileAuthoredMemberBodies({
|
|
@@ -119387,31 +119511,6 @@ function assertPulledConstructorsCompiled(document, replayContext) {
|
|
|
119387
119511
|
}
|
|
119388
119512
|
if (replayContext !== void 0) replayContext.constructorsValidated = true;
|
|
119389
119513
|
}
|
|
119390
|
-
function compilePulledMemberInitializerBodyV4(document, memberId, compilationProject) {
|
|
119391
|
-
const compileArgs = {
|
|
119392
|
-
project: document.project,
|
|
119393
|
-
projectFiles: document.projectFiles,
|
|
119394
|
-
members: document.members,
|
|
119395
|
-
classes: document.classes,
|
|
119396
|
-
enums: document.enums,
|
|
119397
|
-
interfaces: document.interfaces,
|
|
119398
|
-
constructors: document.constructors ?? []
|
|
119399
|
-
};
|
|
119400
|
-
const memberIndex = memberCompilationIndexV4(document);
|
|
119401
|
-
const member = memberIndex.membersById.get(memberId);
|
|
119402
|
-
if (member === void 0) {
|
|
119403
|
-
throw new Error(
|
|
119404
|
-
`Cannot compile initializer dependency for missing member "${memberId}".`
|
|
119405
|
-
);
|
|
119406
|
-
}
|
|
119407
|
-
const thisClass = memberIndex.ownerClassesByMemberId.get(memberId) ?? null;
|
|
119408
|
-
compileMemberInitializerBody({
|
|
119409
|
-
...compileArgs,
|
|
119410
|
-
member,
|
|
119411
|
-
thisClass,
|
|
119412
|
-
...compilationProject === void 0 ? {} : { compilationProject }
|
|
119413
|
-
});
|
|
119414
|
-
}
|
|
119415
119514
|
function samePulledRecords(left, right) {
|
|
119416
119515
|
if (left === right) return true;
|
|
119417
119516
|
if (left.size !== right.size) return false;
|
|
@@ -119549,10 +119648,11 @@ function replayWorkspace(records2) {
|
|
|
119549
119648
|
state: { records: stateRecords }
|
|
119550
119649
|
};
|
|
119551
119650
|
}
|
|
119552
|
-
var pulledBodyCompileSites,
|
|
119651
|
+
var pulledBodyCompileSites, recentPulledDocuments, RECENT_PULLED_DOCUMENT_LIMIT;
|
|
119553
119652
|
var init_initializer_replay = __esm({
|
|
119554
119653
|
"src/project-source/initializer-replay.ts"() {
|
|
119555
119654
|
"use strict";
|
|
119655
|
+
init_document_initializer_compiler();
|
|
119556
119656
|
init_members();
|
|
119557
119657
|
init_compile_ns_property();
|
|
119558
119658
|
init_materialize_values();
|
|
@@ -119565,9 +119665,6 @@ var init_initializer_replay = __esm({
|
|
|
119565
119665
|
init_constructors2();
|
|
119566
119666
|
init_compiler_adapter();
|
|
119567
119667
|
pulledBodyCompileSites = /* @__PURE__ */ new WeakMap();
|
|
119568
|
-
pulledInitializerCompilerStates = /* @__PURE__ */ new WeakMap();
|
|
119569
|
-
pulledMemberCompilationIndexes = /* @__PURE__ */ new WeakMap();
|
|
119570
|
-
pulledValueInitializerCompilationSites = /* @__PURE__ */ new WeakMap();
|
|
119571
119668
|
recentPulledDocuments = [];
|
|
119572
119669
|
RECENT_PULLED_DOCUMENT_LIMIT = 4;
|
|
119573
119670
|
}
|
|
@@ -119580,18 +119677,19 @@ function inferredGenericClassBinding(classId) {
|
|
|
119580
119677
|
function inferredGenericClassId(binding) {
|
|
119581
119678
|
return binding?.startsWith(INFERRED_GENERIC_CLASS_PREFIX) ? binding.slice(INFERRED_GENERIC_CLASS_PREFIX.length) : null;
|
|
119582
119679
|
}
|
|
119583
|
-
function emitStaticValueSourcesV4(records2, manifest, localValues) {
|
|
119680
|
+
function emitStaticValueSourcesV4(records2, manifest, localValues, options = {}) {
|
|
119584
119681
|
const memberIds = [];
|
|
119585
119682
|
for (const record6 of records2.values()) {
|
|
119586
119683
|
if (record6.recordKind === "member" && !record6.deleted && isObjectRecord2(record6.data) && record6.data.modifier === 3 && typeof record6.data.valueId === "string")
|
|
119587
119684
|
memberIds.push(record6.recordId);
|
|
119588
119685
|
}
|
|
119589
119686
|
return emitStoredValueBindingSourcesV4(records2, memberIds, {
|
|
119687
|
+
...options,
|
|
119590
119688
|
manifest,
|
|
119591
119689
|
localValues
|
|
119592
119690
|
});
|
|
119593
119691
|
}
|
|
119594
|
-
function buildValueEmitContext(records2, manifest) {
|
|
119692
|
+
function buildValueEmitContext(records2, manifest, options = {}) {
|
|
119595
119693
|
const rawMembers = dataById(records2, "member");
|
|
119596
119694
|
const manifestMembers = new Map(
|
|
119597
119695
|
manifest.members.map((member) => [member.id, member])
|
|
@@ -119622,6 +119720,7 @@ function buildValueEmitContext(records2, manifest) {
|
|
|
119622
119720
|
let materializedGraph;
|
|
119623
119721
|
let effectiveValues;
|
|
119624
119722
|
return {
|
|
119723
|
+
storedValueBase: options.storedValueBase,
|
|
119625
119724
|
records: records2,
|
|
119626
119725
|
readDocument,
|
|
119627
119726
|
readCompilationProject,
|
|
@@ -119629,7 +119728,7 @@ function buildValueEmitContext(records2, manifest) {
|
|
|
119629
119728
|
readEffectiveValues: () => effectiveValues ??= new EffectiveValueReader({
|
|
119630
119729
|
...readDocument(),
|
|
119631
119730
|
evaluatorCache: { key: readDocument(), revision: void 0 },
|
|
119632
|
-
initializerCompiler:
|
|
119731
|
+
initializerCompiler: documentInitializerCompiler(
|
|
119633
119732
|
readDocument(),
|
|
119634
119733
|
readCompilationProject()
|
|
119635
119734
|
)
|
|
@@ -119685,7 +119784,7 @@ function buildValueEmitContext(records2, manifest) {
|
|
|
119685
119784
|
}
|
|
119686
119785
|
function emitStoredValueBindingSourcesV4(records2, memberIds, options) {
|
|
119687
119786
|
const context = {
|
|
119688
|
-
...buildValueEmitContext(records2, options.manifest),
|
|
119787
|
+
...buildValueEmitContext(records2, options.manifest, options),
|
|
119689
119788
|
localValues: options.localValues
|
|
119690
119789
|
};
|
|
119691
119790
|
const members = context.members;
|
|
@@ -119734,13 +119833,13 @@ function targetTypedVariantConstruction(code) {
|
|
|
119734
119833
|
if (!prefix.test(code)) return code;
|
|
119735
119834
|
return code.replace(prefix, "new(");
|
|
119736
119835
|
}
|
|
119737
|
-
function emitVariantValueSourcesV4(records2, manifest) {
|
|
119836
|
+
function emitVariantValueSourcesV4(records2, manifest, options = {}) {
|
|
119738
119837
|
const initializers = /* @__PURE__ */ new Map();
|
|
119739
119838
|
const recordKeysByVariant = /* @__PURE__ */ new Map();
|
|
119740
119839
|
if (manifest.variants.length === 0) {
|
|
119741
119840
|
return { initializers, recordKeysByVariant };
|
|
119742
119841
|
}
|
|
119743
|
-
const context = buildValueEmitContext(records2, manifest);
|
|
119842
|
+
const context = buildValueEmitContext(records2, manifest, options);
|
|
119744
119843
|
const variantClass = [...manifest.classes].find(
|
|
119745
119844
|
(entry) => entry.name === NEO_VARIANT_TYPE_NAME
|
|
119746
119845
|
);
|
|
@@ -120026,8 +120125,8 @@ function rowBackedDefaultMemberIdsV4(state) {
|
|
|
120026
120125
|
}
|
|
120027
120126
|
return result;
|
|
120028
120127
|
}
|
|
120029
|
-
function emitMemberDefaultSourcesV4(records2, manifest) {
|
|
120030
|
-
const context = buildValueEmitContext(records2, manifest);
|
|
120128
|
+
function emitMemberDefaultSourcesV4(records2, manifest, options = {}) {
|
|
120129
|
+
const context = buildValueEmitContext(records2, manifest, options);
|
|
120031
120130
|
const initializers = /* @__PURE__ */ new Map();
|
|
120032
120131
|
const recordKeysByMember = /* @__PURE__ */ new Map();
|
|
120033
120132
|
for (const record6 of records2.values()) {
|
|
@@ -125339,11 +125438,13 @@ function classValueBody(context, member, value, visited, targetTyped, outerEnvir
|
|
|
125339
125438
|
if (childMember === void 0)
|
|
125340
125439
|
throw new Error(`Class ${name}.${key} has no member record.`);
|
|
125341
125440
|
const preservesExternalBinding = context.collectionBindingValueIds.has(childId);
|
|
125342
|
-
|
|
125441
|
+
const baseChildBody = context.storedValueBase?.get(childId)?.value;
|
|
125442
|
+
const clearedStoredClassOverrides = isObjectRecord2(baseChildBody) && Object.keys(baseChildBody).length > 0;
|
|
125443
|
+
if (!preservesExternalBinding && !clearedStoredClassOverrides && emitsAsMemberDefaultDerivedAbsence(context, childMember, childId)) {
|
|
125343
125444
|
continue;
|
|
125344
125445
|
}
|
|
125345
125446
|
const replayChildId = replayBody[key];
|
|
125346
|
-
if (!preservesExternalBinding && replayGraph !== null && typeof replayChildId === "string" && materializedValueSubgraphsEqual(
|
|
125447
|
+
if (!preservesExternalBinding && !context.storedValueBase?.has(childId) && replayGraph !== null && typeof replayChildId === "string" && materializedValueSubgraphsEqual(
|
|
125347
125448
|
context,
|
|
125348
125449
|
context.readEffectiveValues(),
|
|
125349
125450
|
replayGraph,
|
|
@@ -127126,9 +127227,14 @@ function emitProjectDocumentFilesV4(records2, options = {}) {
|
|
|
127126
127227
|
onInvalidStaticMemberOwnership: (recovery) => staticMemberOwnershipRecoveries.push(recovery)
|
|
127127
127228
|
});
|
|
127128
127229
|
const localValues = new LocalValueEmissionV4(options.localValues ?? []);
|
|
127129
|
-
const staticValues = emitStaticValueSourcesV4(
|
|
127130
|
-
|
|
127131
|
-
|
|
127230
|
+
const staticValues = emitStaticValueSourcesV4(
|
|
127231
|
+
records2,
|
|
127232
|
+
manifest,
|
|
127233
|
+
localValues,
|
|
127234
|
+
options
|
|
127235
|
+
);
|
|
127236
|
+
const memberDefaults = emitMemberDefaultSourcesV4(records2, manifest, options);
|
|
127237
|
+
const variantValues = emitVariantValueSourcesV4(records2, manifest, options);
|
|
127132
127238
|
const baseSource = emitProjectSourcesV4(manifest, {
|
|
127133
127239
|
staticInitializers: staticValues.initializers,
|
|
127134
127240
|
defaultInitializers: memberDefaults.initializers,
|
|
@@ -127198,7 +127304,8 @@ function emitProjectDocumentFilesV4(records2, options = {}) {
|
|
|
127198
127304
|
records2,
|
|
127199
127305
|
manifest,
|
|
127200
127306
|
materializedConstructors,
|
|
127201
|
-
localValues
|
|
127307
|
+
localValues,
|
|
127308
|
+
options
|
|
127202
127309
|
);
|
|
127203
127310
|
const dialogueFiles = emitDialogueProjectSourcesV4(records2);
|
|
127204
127311
|
const localFiles = localValues.files();
|
|
@@ -131995,6 +132102,9 @@ function createPendingProjectSourceIdentityV4(workspace, status, authoredValueSe
|
|
|
131995
132102
|
}
|
|
131996
132103
|
materializePendingSourceLocalization(records2, status);
|
|
131997
132104
|
const emission = emitProjectDocumentFilesV4(records2, {
|
|
132105
|
+
storedValueBase: storedValueRowsByIdV4(
|
|
132106
|
+
Object.values(workspace.state.records)
|
|
132107
|
+
),
|
|
131998
132108
|
recordFiles: projectRecordFilesV4(
|
|
131999
132109
|
Object.values(workspace.state.records),
|
|
132000
132110
|
status.reconstructed.values()
|
|
@@ -133445,6 +133555,7 @@ var init_push = __esm({
|
|
|
133445
133555
|
"src/commands/push.ts"() {
|
|
133446
133556
|
"use strict";
|
|
133447
133557
|
init_packed_value_parity();
|
|
133558
|
+
init_stored_value_placements();
|
|
133448
133559
|
init_push_recovery();
|
|
133449
133560
|
init_project_version_transaction_result();
|
|
133450
133561
|
init_performance();
|
|
@@ -133556,7 +133667,7 @@ function readRawSingleton(raw, key) {
|
|
|
133556
133667
|
async function fetchProjectDocument(workspace) {
|
|
133557
133668
|
const convex = await createConvexClient(workspace);
|
|
133558
133669
|
const raw = await fetchProjectDocumentRawChunked2({
|
|
133559
|
-
|
|
133670
|
+
fetchPage: (paginationOpts, mapKey, readBase) => convex.query(api2.projectDocuments.getDocumentSnapshotPage, {
|
|
133560
133671
|
projectId: workspace.config.projectId,
|
|
133561
133672
|
versionId: workspace.config.versionId,
|
|
133562
133673
|
paginationOpts,
|
|
@@ -138725,7 +138836,7 @@ var init_registry2 = __esm({
|
|
|
138725
138836
|
"schema-contract/registry.mjs"() {
|
|
138726
138837
|
"use strict";
|
|
138727
138838
|
PROJECT_SCHEMA_CONTRACT = Object.freeze({
|
|
138728
|
-
cliVersion: "0.53.
|
|
138839
|
+
cliVersion: "0.53.7",
|
|
138729
138840
|
projectFileUploadBatchSize: 32,
|
|
138730
138841
|
documentRecords: {
|
|
138731
138842
|
member: {
|
|
@@ -146546,7 +146657,7 @@ There is no --keep-current: preserving current semantic state defines flatten.
|
|
|
146546
146657
|
async function main() {
|
|
146547
146658
|
const args = parseArgs(process.argv.slice(2));
|
|
146548
146659
|
if (args.command === "--version") {
|
|
146549
|
-
console.log("0.53.
|
|
146660
|
+
console.log("0.53.7");
|
|
146550
146661
|
return;
|
|
146551
146662
|
}
|
|
146552
146663
|
if (args.command === null || args.command === "help" || args.command === "--help" || args.command === "-h") {
|
package/package.json
CHANGED
|
@@ -97,7 +97,7 @@ wrappers.
|
|
|
97
97
|
The marker near the top of `SKILL.md` must exactly match the package version:
|
|
98
98
|
|
|
99
99
|
```html
|
|
100
|
-
<!-- reviewed-through-cli: 0.53.
|
|
100
|
+
<!-- reviewed-through-cli: 0.53.7 -->
|
|
101
101
|
```
|
|
102
102
|
|
|
103
103
|
The quoted version above is checked too, so this instruction cannot go stale
|