@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.
Files changed (41) hide show
  1. package/README.md +9 -17
  2. package/dist/alias-resolver.d.ts +7 -0
  3. package/dist/alias-resolver.d.ts.map +1 -1
  4. package/dist/alias-resolver.js +14 -0
  5. package/dist/analyzer.d.ts.map +1 -1
  6. package/dist/analyzer.js +59 -15
  7. package/dist/builtins.d.ts.map +1 -1
  8. package/dist/builtins.js +10 -9
  9. package/dist/cel-environment.d.ts +8 -0
  10. package/dist/cel-environment.d.ts.map +1 -1
  11. package/dist/cel-environment.js +48 -0
  12. package/dist/flatten-for-analyzer.d.ts +52 -0
  13. package/dist/flatten-for-analyzer.d.ts.map +1 -1
  14. package/dist/flatten-for-analyzer.js +192 -1
  15. package/dist/index.d.ts +1 -1
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +1 -1
  18. package/dist/resolve-ref-sentinels.d.ts +22 -7
  19. package/dist/resolve-ref-sentinels.d.ts.map +1 -1
  20. package/dist/resolve-ref-sentinels.js +46 -136
  21. package/dist/schema-compat.d.ts.map +1 -1
  22. package/dist/schema-compat.js +28 -8
  23. package/dist/validate-cel-context.d.ts.map +1 -1
  24. package/dist/validate-cel-context.js +5 -0
  25. package/dist/validate-reference-forms.d.ts +28 -0
  26. package/dist/validate-reference-forms.d.ts.map +1 -0
  27. package/dist/validate-reference-forms.js +91 -0
  28. package/dist/validate-references.d.ts.map +1 -1
  29. package/dist/validate-references.js +4 -37
  30. package/package.json +2 -2
  31. package/src/alias-resolver.ts +14 -0
  32. package/src/analyzer.ts +69 -19
  33. package/src/builtins.ts +10 -9
  34. package/src/cel-environment.ts +57 -0
  35. package/src/flatten-for-analyzer.ts +217 -4
  36. package/src/index.ts +7 -0
  37. package/src/resolve-ref-sentinels.ts +39 -133
  38. package/src/schema-compat.ts +27 -8
  39. package/src/validate-cel-context.ts +5 -0
  40. package/src/validate-reference-forms.ts +110 -0
  41. package/src/validate-references.ts +4 -39
@@ -289,45 +289,10 @@ export function validateReferences(
289
289
  return;
290
290
  }
291
291
 
292
- // Name-only reference (plain string) look up by name to validate.
293
- // Qualified references use "Kind.Name" format (e.g. "Http.Api.PaymentApi");
294
- // extract the resource name from the last dot segment.
295
- if (typeof val === "string") {
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