@neocompose/cli 0.89.6 → 0.89.8
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 +19 -0
- package/dist/neo-runtime.mjs +818 -305
- package/dist/test-worker.mjs +657 -300
- package/package.json +1 -1
- package/skills/neocompose-cli/SKILL.md +1 -1
- package/skills/neocompose-cli/references/cli-development.md +10 -1
- package/skills/neocompose-cli/references/declarations/constructors.md +4 -0
- package/skills/neocompose-cli/references/declarations/initializers.md +9 -0
- package/skills/neocompose-cli/references/neoscript/collections.md +9 -1
package/package.json
CHANGED
|
@@ -118,6 +118,11 @@ codec reads when changing either projection. Class-generic results whose binding
|
|
|
118
118
|
is known only at runtime use the SDK generic reader, including recursive tuple,
|
|
119
119
|
collection, enum, and reference projections; scalar conversion alone is insufficient.
|
|
120
120
|
|
|
121
|
+
Direct class-constrained `Reference<T>` and `Set<Reference<T>>` fields emit concrete
|
|
122
|
+
accessors using the SDK generic reader, even while the declaring class leaves `T`
|
|
123
|
+
open. Only authored abstract declarations emit abstract members. Compile the
|
|
124
|
+
open class and exercise direct, inherited, closed, and read-only instances.
|
|
125
|
+
|
|
121
126
|
A stored `Reference<T>` implementing an inherited get-only `T` property emits a
|
|
122
127
|
value getter that reads the reference target. Keep its interface and field tokens
|
|
123
128
|
on the inherited type, and compile both open and closed generic overrides.
|
|
@@ -138,7 +143,7 @@ The marker near the top of `SKILL.md` must exactly match the package version,
|
|
|
138
143
|
and this quoted copy is checked too:
|
|
139
144
|
|
|
140
145
|
```html
|
|
141
|
-
<!-- reviewed-through-cli: 0.89.
|
|
146
|
+
<!-- reviewed-through-cli: 0.89.8 -->
|
|
142
147
|
```
|
|
143
148
|
|
|
144
149
|
Keep this skill on current behavior. Upgrade steps, rollout prerequisites,
|
|
@@ -178,3 +183,7 @@ affected full-project candidate; Vitest doesn't replace it. Run
|
|
|
178
183
|
formatted files.
|
|
179
184
|
|
|
180
185
|
Class collection assignment must validate all incoming owned entries before replacing a stored row or changing its aliases. Keep caught-rejection, late-entry failure, duplicate-row, and successful retry controls in `class-collection-assignment.test.ts`.
|
|
186
|
+
|
|
187
|
+
Nested insertion must reject duplicate or already-owned descendants before publishing rows or changing aliases. Keep partial-encoding retry and removed List/Set/Dictionary alias controls in `nested-collection-insertion.test.ts`; Reference entries continue to share targets, including unbacked local collection handles. Include local Set references, whose closed target can lower to Lookup. Check alternating shared targets and target writes as well as indexing costs, and preserve identity-based removal through generic bindings. Selection edges remain in the reference graph but must not supply a target's owned placement or generic environment. Keep backed Set payloads distinct from single-Reference cells; cover Dictionary, List and Set target mutations and owned attachment/removal when measuring incremental index work. Raw parent links preserve duplicate edges and insertion order; removing an actual owner must not scan unchanged selection parents. Preserve incremental indexing through target-list sorting and entry writes, including explicit per-entry row provenance. Include plain scalar List and Dictionary entry writes after assignment or Add, without rebuilding unrelated Reference cells. Indexed Reference assignment must preserve each selection cell and the closed stored entry contract, including removed generic aliases. Keep scalar Slot assignments distinct from backed Handle Reference assignments: a missing Dictionary key assigned a backed Handle needs its closed Lookup contract and an independent selection cell. Inline-to-backed Reference reassignment must create a selection cell rather than attach its target. Scalar field writes update only their exact raw edges while retaining write receipts and conservative fallback for unindexed or non-scalar values.
|
|
188
|
+
|
|
189
|
+
Closed collection Reference exports must include the physical target graph, including plain-string Set entries. Keep minimal target-only exports and existing-descriptor dependency completion in `reference-target-descriptors.test.ts` and `compiled-construction-types.test.ts`; do not seed unrelated constructions to satisfy export coverage.
|
|
@@ -142,6 +142,10 @@ class Child(string name) : Base {
|
|
|
142
142
|
explicitly when needed.
|
|
143
143
|
- Base-constructor arguments use the constructed class's concrete generic
|
|
144
144
|
bindings, including an `Item<T>` parameter forwarded through its base chain.
|
|
145
|
+
- Recording a constructor argument does not claim ownership. An initializer
|
|
146
|
+
may pass it to a nested constructor or attach it to a collection while
|
|
147
|
+
retaining its identity. Giving the same aggregate two owned fields or
|
|
148
|
+
collection positions still requires an explicit `Clone()`.
|
|
145
149
|
- Constraints may construct another generic from a sibling parameter:
|
|
146
150
|
|
|
147
151
|
```neo
|
|
@@ -3,6 +3,11 @@
|
|
|
3
3
|
Member defaults: what they may read, when they compute, generic and
|
|
4
4
|
Immutable construction, and edits to stored constructions.
|
|
5
5
|
|
|
6
|
+
Object initializer fields indent one level below the construction's header,
|
|
7
|
+
including inside call arguments. The opening brace may be on the header line
|
|
8
|
+
or the following line. Multiline argument lists retain their continuation
|
|
9
|
+
indentation, using the project's configured spaces or tabs.
|
|
10
|
+
|
|
6
11
|
## Initializer scope
|
|
7
12
|
|
|
8
13
|
- Field initializers may read their class's static members unqualified,
|
|
@@ -28,6 +33,10 @@ Immutable construction, and edits to stored constructions.
|
|
|
28
33
|
|
|
29
34
|
## Computed initializers
|
|
30
35
|
|
|
36
|
+
The editor checks computed defaults with the same expression resolver as push.
|
|
37
|
+
Unknown names, missing members, invalid type arguments, and expression type
|
|
38
|
+
errors appear at the offending initializer expression, including nested defaults.
|
|
39
|
+
|
|
31
40
|
A default that isn't a closed literal stores as a computed initializer and
|
|
32
41
|
replays for omitted members in push, web, and SDK. A stored override stays
|
|
33
42
|
pinned until reset.
|
|
@@ -4,6 +4,10 @@ Queries and mutations on `List`, `Set`, and `Dictionary` values. Collection
|
|
|
4
4
|
declarations and storage live in
|
|
5
5
|
[member kinds](../declarations/member-kinds.md).
|
|
6
6
|
|
|
7
|
+
Collections have no constructors. Initialize List and Set members with `[]`
|
|
8
|
+
and Dictionary members with `{}`, including static members. Writing `new()`
|
|
9
|
+
reports an editor diagnostic with the appropriate empty literal before push.
|
|
10
|
+
|
|
7
11
|
## Counting and matching
|
|
8
12
|
|
|
9
13
|
- `items.Count` and `items.Count()` give the size; `items.Count(pred)` counts
|
|
@@ -43,7 +47,9 @@ return this.Beds
|
|
|
43
47
|
snapshot through a writable alias makes `ThenBy` throw until a new `OrderBy`.
|
|
44
48
|
- Negative skip/take counts behave as zero.
|
|
45
49
|
- Read-only results keep entry identity and grant no extra write access to
|
|
46
|
-
entries.
|
|
50
|
+
entries. Declared index lookups (`items.Index.Name[key]`) preserve the source
|
|
51
|
+
entries' write permissions: writable fields can be updated through unique
|
|
52
|
+
results or a bucket's entries, while bucket membership stays read-only.
|
|
47
53
|
|
|
48
54
|
## Reductions
|
|
49
55
|
|
|
@@ -69,6 +75,8 @@ return this.Beds
|
|
|
69
75
|
|
|
70
76
|
These apply to writable collections and are statements:
|
|
71
77
|
|
|
78
|
+
- String-keyed dictionaries accept any string, including `__proto__` and
|
|
79
|
+
`constructor`, in both indexed assignment and `Add(key, value)`.
|
|
72
80
|
- `items.Add(value)` appends an entry. An aggregate already owned by another
|
|
73
81
|
entry or field can't be added again. Add a new value, or `Clone()` a class
|
|
74
82
|
instance.
|