@telorun/analyzer 0.21.0 → 0.23.0
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/README.md +9 -17
- package/dist/alias-resolver.d.ts +7 -0
- package/dist/alias-resolver.d.ts.map +1 -1
- package/dist/alias-resolver.js +14 -0
- package/dist/analyzer.d.ts.map +1 -1
- package/dist/analyzer.js +59 -15
- package/dist/builtins.d.ts.map +1 -1
- package/dist/builtins.js +10 -9
- package/dist/cel-environment.d.ts +8 -0
- package/dist/cel-environment.d.ts.map +1 -1
- package/dist/cel-environment.js +48 -0
- package/dist/flatten-for-analyzer.d.ts +52 -0
- package/dist/flatten-for-analyzer.d.ts.map +1 -1
- package/dist/flatten-for-analyzer.js +192 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/resolve-ref-sentinels.d.ts +22 -7
- package/dist/resolve-ref-sentinels.d.ts.map +1 -1
- package/dist/resolve-ref-sentinels.js +46 -136
- package/dist/schema-compat.d.ts.map +1 -1
- package/dist/schema-compat.js +28 -8
- package/dist/validate-cel-context.d.ts.map +1 -1
- package/dist/validate-cel-context.js +5 -0
- package/dist/validate-reference-forms.d.ts +28 -0
- package/dist/validate-reference-forms.d.ts.map +1 -0
- package/dist/validate-reference-forms.js +91 -0
- package/dist/validate-references.d.ts.map +1 -1
- package/dist/validate-references.js +4 -37
- package/package.json +2 -2
- package/src/alias-resolver.ts +14 -0
- package/src/analyzer.ts +69 -19
- package/src/builtins.ts +10 -9
- package/src/cel-environment.ts +57 -0
- package/src/flatten-for-analyzer.ts +217 -4
- package/src/index.ts +7 -0
- package/src/resolve-ref-sentinels.ts +39 -133
- package/src/schema-compat.ts +27 -8
- package/src/validate-cel-context.ts +5 -0
- package/src/validate-reference-forms.ts +110 -0
- package/src/validate-references.ts +4 -39
|
@@ -289,45 +289,10 @@ export function validateReferences(
|
|
|
289
289
|
return;
|
|
290
290
|
}
|
|
291
291
|
|
|
292
|
-
//
|
|
293
|
-
//
|
|
294
|
-
//
|
|
295
|
-
|
|
296
|
-
const lastDot = val.lastIndexOf(".");
|
|
297
|
-
const refName = lastDot > 0 ? val.slice(lastDot + 1) : val;
|
|
298
|
-
const refKindPrefix = lastDot > 0 ? val.slice(0, lastDot) : undefined;
|
|
299
|
-
const target =
|
|
300
|
-
byName.get(refName) ?? visibleScopeManifests.find((m) => m.metadata?.name === refName);
|
|
301
|
-
if (!target) {
|
|
302
|
-
// Cross-module reference: "Alias.ResourceName" (single dot, bare alias prefix).
|
|
303
|
-
// The resource lives in the imported module's scope and can't be validated here.
|
|
304
|
-
// Multi-dot prefixes like "Alias.Kind.Name" are local resources with qualified
|
|
305
|
-
// kinds — those must be validated.
|
|
306
|
-
if (refKindPrefix && !refKindPrefix.includes(".") && aliases.hasAlias(refKindPrefix)) {
|
|
307
|
-
return;
|
|
308
|
-
}
|
|
309
|
-
diagnostics.push({
|
|
310
|
-
severity: DiagnosticSeverity.Error,
|
|
311
|
-
code: "UNRESOLVED_REFERENCE",
|
|
312
|
-
source: SOURCE,
|
|
313
|
-
message: `${resourceLabel}: reference at '${concretePath}' → resource '${val}' not found`,
|
|
314
|
-
data: { resource: resourceData, filePath, path: concretePath },
|
|
315
|
-
});
|
|
316
|
-
return;
|
|
317
|
-
}
|
|
318
|
-
const kindErrors = checkKind(target.kind as string, entry, registry, aliases);
|
|
319
|
-
if (kindErrors.length > 0) {
|
|
320
|
-
diagnostics.push({
|
|
321
|
-
severity: DiagnosticSeverity.Error,
|
|
322
|
-
code: "REFERENCE_KIND_MISMATCH",
|
|
323
|
-
source: SOURCE,
|
|
324
|
-
message: `${resourceLabel}: reference at '${concretePath}' → ${kindErrors.join("; ")}`,
|
|
325
|
-
data: { resource: resourceData, filePath, path: concretePath },
|
|
326
|
-
});
|
|
327
|
-
}
|
|
328
|
-
return;
|
|
329
|
-
}
|
|
330
|
-
|
|
292
|
+
// Bare strings are no longer a reference shape — `validateReferenceForms`
|
|
293
|
+
// rejects an author-written string at a ref slot before this pass runs,
|
|
294
|
+
// and a `${{ }}` reference flowed through CEL is resolved/typed
|
|
295
|
+
// elsewhere. Anything still a string here is not a reference to resolve.
|
|
331
296
|
if (typeof val !== "object") return;
|
|
332
297
|
const refVal = val as Record<string, unknown>;
|
|
333
298
|
|