@neocompose/cli 0.68.0 → 0.68.2
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 +11 -0
- package/dist/neo.mjs +8780 -8096
- package/dist/test-worker.mjs +38 -25
- package/package.json +1 -1
- package/skills/neocompose-cli/SKILL.md +1 -1
- package/skills/neocompose-cli/references/cli-development.md +2 -2
- package/skills/neocompose-cli/references/values-identities-and-references.md +11 -0
package/dist/test-worker.mjs
CHANGED
|
@@ -7975,30 +7975,36 @@ function substituteMember(member, env, members, preResolvedMember) {
|
|
|
7975
7975
|
return resolved;
|
|
7976
7976
|
}
|
|
7977
7977
|
function substituteNestedTypeInfo(typeInfo, env, members) {
|
|
7978
|
-
|
|
7979
|
-
const entry = env.get(
|
|
7978
|
+
return mapGenericTypeInfo(typeInfo, (generic) => {
|
|
7979
|
+
const entry = env.get(generic.genericParamId);
|
|
7980
7980
|
if (entry === void 0) {
|
|
7981
7981
|
throw new Error(
|
|
7982
|
-
`substituteMember: callable type references generic param "${
|
|
7982
|
+
`substituteMember: callable type references generic param "${generic.genericParamId}", which is not present in the binding environment.`
|
|
7983
7983
|
);
|
|
7984
7984
|
}
|
|
7985
|
-
if (entry.kind === "unbound") return
|
|
7986
|
-
|
|
7987
|
-
|
|
7988
|
-
|
|
7989
|
-
|
|
7990
|
-
|
|
7991
|
-
|
|
7992
|
-
|
|
7985
|
+
if (entry.kind === "unbound") return generic;
|
|
7986
|
+
return genericBindingTypeInfo(
|
|
7987
|
+
callableBindingMember(entry.memberId, generic.genericParamId, members),
|
|
7988
|
+
env,
|
|
7989
|
+
members
|
|
7990
|
+
);
|
|
7991
|
+
});
|
|
7992
|
+
}
|
|
7993
|
+
function callableBindingMember(memberId, slotName, members) {
|
|
7994
|
+
const binding = memberIndexFor(members).get(memberId);
|
|
7995
|
+
if (binding === void 0) {
|
|
7996
|
+
throw new Error(
|
|
7997
|
+
`substituteMember: callable type binding member "${memberId}" for "${slotName}" does not exist in the document.`
|
|
7998
|
+
);
|
|
7993
7999
|
}
|
|
8000
|
+
return binding;
|
|
8001
|
+
}
|
|
8002
|
+
function mapGenericTypeInfo(typeInfo, close) {
|
|
8003
|
+
if (typeInfo.type === 21 /* Generic */) return close(typeInfo);
|
|
7994
8004
|
if (typeInfo.type === 6 /* List */ || typeInfo.type === 5 /* Dictionary */ || typeInfo.type === 9 /* Lookup */) {
|
|
7995
8005
|
return {
|
|
7996
8006
|
...typeInfo,
|
|
7997
|
-
entryTypeInfo:
|
|
7998
|
-
typeInfo.entryTypeInfo,
|
|
7999
|
-
env,
|
|
8000
|
-
members
|
|
8001
|
-
)
|
|
8007
|
+
entryTypeInfo: mapGenericTypeInfo(typeInfo.entryTypeInfo, close)
|
|
8002
8008
|
};
|
|
8003
8009
|
}
|
|
8004
8010
|
if (typeInfo.type === 7 /* Class */) {
|
|
@@ -8009,7 +8015,7 @@ function substituteNestedTypeInfo(typeInfo, env, members) {
|
|
|
8009
8015
|
typeArguments: Object.fromEntries(
|
|
8010
8016
|
Object.entries(typeArguments).map(([parameterId, argument2]) => [
|
|
8011
8017
|
parameterId,
|
|
8012
|
-
|
|
8018
|
+
mapGenericTypeInfo(argument2, close)
|
|
8013
8019
|
])
|
|
8014
8020
|
)
|
|
8015
8021
|
};
|
|
@@ -8017,13 +8023,9 @@ function substituteNestedTypeInfo(typeInfo, env, members) {
|
|
|
8017
8023
|
if (typeInfo.type === 25 /* NSDelegate */) {
|
|
8018
8024
|
return {
|
|
8019
8025
|
...typeInfo,
|
|
8020
|
-
returnTypeInfo:
|
|
8021
|
-
typeInfo.returnTypeInfo,
|
|
8022
|
-
env,
|
|
8023
|
-
members
|
|
8024
|
-
),
|
|
8026
|
+
returnTypeInfo: mapGenericTypeInfo(typeInfo.returnTypeInfo, close),
|
|
8025
8027
|
argumentTypes: typeInfo.argumentTypes.map(
|
|
8026
|
-
(argument2) =>
|
|
8028
|
+
(argument2) => mapGenericTypeInfo(argument2, close)
|
|
8027
8029
|
)
|
|
8028
8030
|
};
|
|
8029
8031
|
}
|
|
@@ -8031,7 +8033,7 @@ function substituteNestedTypeInfo(typeInfo, env, members) {
|
|
|
8031
8033
|
return {
|
|
8032
8034
|
...typeInfo,
|
|
8033
8035
|
argumentTypes: typeInfo.argumentTypes.map(
|
|
8034
|
-
(argument2) =>
|
|
8036
|
+
(argument2) => mapGenericTypeInfo(argument2, close)
|
|
8035
8037
|
)
|
|
8036
8038
|
};
|
|
8037
8039
|
}
|
|
@@ -8063,11 +8065,16 @@ function typeInfoFromArgumentSignature(signature) {
|
|
|
8063
8065
|
}
|
|
8064
8066
|
if (signature.type === 8 /* Enum */) {
|
|
8065
8067
|
const enumSignature = signature;
|
|
8066
|
-
|
|
8068
|
+
const enumTypeInfo = {
|
|
8067
8069
|
type: 8 /* Enum */,
|
|
8068
8070
|
required: enumSignature.required,
|
|
8069
8071
|
enumId: enumSignature.enumId
|
|
8070
8072
|
};
|
|
8073
|
+
return enumSignature.multiselect ? {
|
|
8074
|
+
type: 9 /* Lookup */,
|
|
8075
|
+
required: enumSignature.required,
|
|
8076
|
+
entryTypeInfo: { ...enumTypeInfo, required: true }
|
|
8077
|
+
} : enumTypeInfo;
|
|
8071
8078
|
}
|
|
8072
8079
|
if (signature.type === 6 /* List */) {
|
|
8073
8080
|
const listSignature = signature;
|
|
@@ -49542,6 +49549,12 @@ var SOURCE_TYPE_NAME_BY_MEMBER_KIND_NUMBER = new Map(
|
|
|
49542
49549
|
])
|
|
49543
49550
|
);
|
|
49544
49551
|
|
|
49552
|
+
// src/project-source/value-sources.ts
|
|
49553
|
+
var INITIALIZER_KEY_PLACEHOLDER = new RegExp(
|
|
49554
|
+
`${PENDING_ID_PREFIX}reference-key:init:\\d+`,
|
|
49555
|
+
"g"
|
|
49556
|
+
);
|
|
49557
|
+
|
|
49545
49558
|
// src/project-manifest/record-adapters/enum.ts
|
|
49546
49559
|
var ENUM_SCHEMA_RECORD_ADAPTER = {
|
|
49547
49560
|
recordKind: "enum",
|
package/package.json
CHANGED
|
@@ -78,7 +78,7 @@ run with `npm run lint:architecture`.
|
|
|
78
78
|
|
|
79
79
|
Keep project context refreshable without accumulating stale Monaco providers or
|
|
80
80
|
LSP state. Preserve diagnostics, completion, hover, signatures, definition,
|
|
81
|
-
references, rename, symbols, semantic tokens, code actions, and formatting
|
|
81
|
+
references, implementations, rename, symbols, semantic tokens, code actions, and formatting
|
|
82
82
|
parity for `.neo` and `.neoflow`.
|
|
83
83
|
|
|
84
84
|
The CLI prepares every push with the server's own preparation code: it
|
|
@@ -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.68.
|
|
113
|
+
<!-- reviewed-through-cli: 0.68.2 -->
|
|
114
114
|
```
|
|
115
115
|
|
|
116
116
|
The quoted version above is checked too, so this instruction cannot go stale
|
|
@@ -63,6 +63,17 @@ cannot place one stored row in two collection positions. For a new ordinary reco
|
|
|
63
63
|
`@id` and let a successful real push assign and insert it. Dry-run and failed pushes
|
|
64
64
|
leave tracked source unchanged.
|
|
65
65
|
|
|
66
|
+
A local initializer's existing row ID may precede its variable declaration:
|
|
67
|
+
|
|
68
|
+
```neo
|
|
69
|
+
@id("existing-quest-row-id")
|
|
70
|
+
Quest HardAsStone = new Quest() { Name = "Hard as stone" };
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
This names the initializer row. It does not create a stored global. The inline
|
|
74
|
+
`Quest HardAsStone = @id("...") new Quest();` spelling is also accepted, and
|
|
75
|
+
formatting moves its ID above the declaration. Do not put an ID in both places.
|
|
76
|
+
|
|
66
77
|
Nested class/list rows remain independently addressable and keep inline IDs:
|
|
67
78
|
|
|
68
79
|
```neo
|