@component-compass/reference-graph 0.1.15 → 0.1.18

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 (36) hide show
  1. package/dist/engine/argument-map.d.ts +4 -0
  2. package/dist/engine/argument-map.js +7 -4
  3. package/dist/engine/argument-map.js.map +1 -1
  4. package/dist/engine/assert-never.d.ts +7 -0
  5. package/dist/engine/assert-never.js +10 -0
  6. package/dist/engine/assert-never.js.map +1 -0
  7. package/dist/engine/component-shape.d.ts +38 -0
  8. package/dist/engine/component-shape.js +177 -0
  9. package/dist/engine/component-shape.js.map +1 -0
  10. package/dist/engine/helper-callers.d.ts +31 -29
  11. package/dist/engine/helper-callers.js +98 -78
  12. package/dist/engine/helper-callers.js.map +1 -1
  13. package/dist/engine/index.d.ts +4 -0
  14. package/dist/engine/index.js +239 -99
  15. package/dist/engine/index.js.map +1 -1
  16. package/dist/engine/library-stubs.d.ts +2 -0
  17. package/dist/engine/library-stubs.js +42 -0
  18. package/dist/engine/library-stubs.js.map +1 -0
  19. package/dist/engine/member-identity.d.ts +24 -4
  20. package/dist/engine/member-identity.js +28 -4
  21. package/dist/engine/member-identity.js.map +1 -1
  22. package/dist/engine/registry.d.ts +74 -0
  23. package/dist/engine/registry.js +226 -0
  24. package/dist/engine/registry.js.map +1 -0
  25. package/dist/engine/resolve-reference.js +7 -0
  26. package/dist/engine/resolve-reference.js.map +1 -1
  27. package/dist/engine/resolve-type.js +54 -1
  28. package/dist/engine/resolve-type.js.map +1 -1
  29. package/dist/engine/wrapper-folding.d.ts +21 -3
  30. package/dist/engine/wrapper-folding.js +386 -91
  31. package/dist/engine/wrapper-folding.js.map +1 -1
  32. package/dist/index.d.ts +5 -1
  33. package/dist/index.js +3 -1
  34. package/dist/index.js.map +1 -1
  35. package/dist/types/file-graph.d.ts +0 -10
  36. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"helper-callers.js","sourceRoot":"","sources":["../../src/engine/helper-callers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAmB,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAI3D;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAAiB,EACjB,KAAY,EACZ,UAAmB;IAEnB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,SAAS,CAAC;IACrD,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;IACjC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACnC,IAAI,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC;YAAE,OAAO,WAAW,CAAC;IAC9D,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,MAAM,CACpB,CAAe,EACf,KAAY,EACZ,UAA8B,EAC9B,KAAiB;IAEjB,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,KAAK;YACR,OAAO,IAAI,CAAC;QACd,KAAK,OAAO;YACV,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;QAClE,KAAK,cAAc;YACjB,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QACpD,KAAK,UAAU;YACb,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;QACpE,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,aAAa,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,IAAI,UAAU,CAAC;YACrD,IAAI,CAAC,aAAa;gBAAE,OAAO,KAAK,CAAC;YACjC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAC5C,IAAI,CAAC,IAAI;gBAAE,OAAO,KAAK,CAAC;YACxB,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACnD,IAAI,EAAE,KAAK,IAAI;gBAAE,OAAO,KAAK,CAAC;YAC9B,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC7D,OAAO,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;YACvD,CAAC;oBAAS,CAAC;gBACT,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;QACD,KAAK,UAAU;YACb,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QACjD;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAYD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAY;IAC7C,2EAA2E;IAC3E,2EAA2E;IAC3E,wEAAwE;IACxE,0DAA0D;IAC1D,MAAM,KAAK,GAAG,IAAI,GAAG,EAA0B,CAAC;IAChD,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC1D,MAAM,cAAc,GAAG,IAAI,GAAG,EAAuB,CAAC;IAEtD,sDAAsD;IACtD,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAA0B,CAAC;IAC9D,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAsD,CAAC;IAEzF,SAAS,gBAAgB,CACvB,GAAc,EACd,UAAkB,EAClB,WAAsB;QAEtB,MAAM,GAAG,GAAG,GAAG,UAAU,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC;QAC3C,IAAI,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,OAAO,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;QAC7C,CAAC;QACD,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;QACrE,kBAAkB,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACpC,OAAO,MAAM,CAAC;IAChB,CAAC;IAOD,MAAM,gBAAgB,GAAsB,EAAE,CAAC;IAE/C,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC5C,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;YACnD,IAAI,IAAI,CAAC,KAAK,KAAK,YAAY;gBAAE,SAAS;YAC1C,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU;gBAAE,SAAS;YAC7C,MAAM,IAAI,GAAgB,EAAE,CAAC;YAC7B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO;gBAAE,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC/D,KAAK,MAAM,EAAE,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;gBACrC,IAAI,EAAE,CAAC,WAAW,KAAK,IAAI,CAAC,MAAM;oBAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;YAC3D,CAAC;YACD,MAAM,SAAS,GAAc,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YAE3D,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;gBACtD,IAAI,CAAC,MAAM;oBAAE,SAAS;gBACtB,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;gBACrD,MAAM,SAAS,GAAG,GAAG,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC1D,IAAI,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAChD,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;oBACxB,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;gBAC7C,CAAC;gBACD,WAAW,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;IACH,CAAC;IAWD,MAAM,eAAe,GAAqB,EAAE,CAAC;IAC7C,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEnD,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpD,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACrC,IAAI,CAAC,KAAK;gBAAE,SAAS;YACrB,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YAC5D,IAAI,CAAC,MAAM;gBAAE,SAAS;YAEtB,MAAM,SAAS,GAAG,GAAG,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAC1D,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAE5E,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACzC,IAAI,CAAC,SAAS,EAAE,cAAc;gBAAE,SAAS;YACzC,MAAM,YAAY,GAAG,gBAAgB,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YACjF,IAAI,CAAC,YAAY;gBAAE,SAAS;YAC5B,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,KAAK,YAAY;gBAAE,SAAS;YACvD,eAAe,CAAC,IAAI,CAAC;gBACnB,MAAM;gBACN,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE;aACtE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,2EAA2E;IAC3E,yEAAyE;IACzE,yEAAyE;IACzE,SAAS,WAAW,CAAC,IAAY,EAAE,IAAiB;QAClD,MAAM,GAAG,GAAG,GAAG,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,GAAG,CAAC;QAClC,IAAI,MAAM,GAAG,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QACpD,IACE,MAAM,KAAK,WAAW;eACnB,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;eACtC,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,EAC3C,CAAC;YACD,MAAM,GAAG,QAAQ,CAAC;QACpB,CAAC;QACD,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACrC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,2EAA2E;IAC3E,0EAA0E;IAC1E,4BAA4B;IAC5B,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC5C,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;YACnD,IAAI,IAAI,CAAC,KAAK,KAAK,YAAY;gBAAE,SAAS;YAC1C,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU;gBAAE,SAAS;YAC7C,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,2EAA2E;IAC3E,SAAS,gBAAgB,CACvB,MAA2C,EAC3C,SAAoB;QAEpB,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACvD,MAAM,YAAY,GAAG,GAAG,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;QAC9D,IAAI,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;YACjB,kBAAkB,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YAAE,OAAO;QACnC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACvB,IAAI,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;YACpB,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,gBAAgB,EAAE,CAAC;QAClD,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,QAAQ;YAAE,SAAS;QACjE,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IACD,KAAK,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC;QACjD,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,QAAQ;YAAE,SAAS;QACjE,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,OAAO;QACL,GAAG,CAAC,GAAG;YACL,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,cAAc,CAAC,IAAI,EAAE,MAAM;YACzB,OAAO,mBAAmB,CAAC,GAAG,CAAC,GAAG,IAAI,KAAK,MAAM,EAAE,CAAC,IAAI,SAAS,CAAC;QACpE,CAAC;KACF,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,SAAS,iBAAiB,CAAC,CAAe,EAAE,GAAgB;IAC1D,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,QAAQ;YACX,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAChB,OAAO;QACT,KAAK,OAAO;YACV,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK;gBAAE,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACnD,OAAO;QACT,KAAK,cAAc;YACjB,iBAAiB,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACjC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI;gBAAE,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAClD,OAAO;QACT,KAAK,UAAU;YACb,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO;gBAAE,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACrD,OAAO;QACT,KAAK,QAAQ;YACX,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;gBAAE,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAClE,OAAO;QACT,KAAK,OAAO;YACV,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ;gBAAE,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACtD,OAAO;QACT,KAAK,UAAU;YACb,iBAAiB,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC9B,OAAO;QACT,KAAK,aAAa;YAChB,kEAAkE;YAClE,OAAO;QACT;YACE,qDAAqD;YACrD,OAAO;IACX,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,gBAAgB,CACvB,GAAc,EACd,UAAkB,EAClB,WAAsB,EACtB,KAAY;IAEZ,sCAAsC;IACtC,MAAM,QAAQ,GAAG,GAAG,YAAY,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC;IAClD,MAAM,SAAS,GAAG,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACzD,IAAI,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAE5D,sBAAsB;IACtB,MAAM,GAAG,GAAG,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvD,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IAEtB,MAAM,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,UAAU,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IACpE,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,iBAAiB;QACxC,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC;QACvD,CAAC,CAAC,WAAW,CAAC;IAChB,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAChD,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAE9B,wEAAwE;IACxE,yEAAyE;IACzE,2EAA2E;IAC3E,wEAAwE;IACxE,wEAAwE;IACxE,yCAAyC;IACzC,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrE,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;YACtF,IAAI,IAAI;gBAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;QAChD,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,uEAAuE;IACvE,sEAAsE;IACtE,4EAA4E;IAC5E,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;QACtC,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC9E,MAAM,IAAI,GAAG,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;YAC3E,IAAI,IAAI;gBAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAC9C,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3E,MAAM,IAAI,GAAG,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;YAC3E,IAAI,IAAI;gBAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAC9C,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"helper-callers.js","sourceRoot":"","sources":["../../src/engine/helper-callers.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { Graph } from "../index.js";
2
2
  import type { OccurrenceVia, ComponentId, PropValueState, DiagnosticCollector } from "@component-compass/plugin-core";
3
+ import { type ComponentRegistry } from "./registry.js";
3
4
  /** Full occurrence shape produced by the engine.
4
5
  *
5
6
  * `rawComponentId` carries the structured `ComponentId` (same type as in
@@ -63,6 +64,9 @@ export type EngineOccurrence = {
63
64
  };
64
65
  export type ResolvedGraph = {
65
66
  occurrences: EngineOccurrence[];
67
+ /** The component registry this resolution admitted identities against
68
+ * (spec D1). The CLI's roster join (`buildComponentSeeds`) reads it. */
69
+ registry: ComponentRegistry;
66
70
  };
67
71
  /**
68
72
  * Project-wide tag → identity lookup. Supplied by the host so the engine can
@@ -1,24 +1,66 @@
1
+ import { asTagName, computeOccurrenceId, serialiseComponentId, projectPropUsages, parseCompoundExport } from "@component-compass/plugin-core";
1
2
  import { MODULE_SCOPE } from "../index.js";
2
- import { asTagName, computeOccurrenceId, serialiseComponentId, projectPropUsages } from "@component-compass/plugin-core";
3
3
  import { createArgumentMap } from "./argument-map.js";
4
4
  import { resolveReference } from "./resolve-reference.js";
5
- import { walkWithFolding } from "./wrapper-folding.js";
5
+ import { walkWithFolding, argumentProvenance } from "./wrapper-folding.js";
6
6
  import { packageNameFromSpecifier, externalSubpath } from "./specifier.js";
7
7
  import { followReExportChain } from "./re-export-chain.js";
8
- import { buildHelperCallers } from "./helper-callers.js";
8
+ import { buildHelperCallers, findLocalDeclaration } from "./helper-callers.js";
9
9
  import { resolveOwnerChain } from "./owner-resolution.js";
10
10
  import { createCycleGuard } from "./cycle-detection.js";
11
- import { unparsedMemberDefinition, effectiveExportName } from "./member-identity.js";
11
+ import { unparsedMemberDefinition, effectiveExportName, residualMemberChain, compoundExportName } from "./member-identity.js";
12
+ import { buildComponentRegistry, excludeFoldedHolders, entryKey } from "./registry.js";
13
+ /**
14
+ * JSX treats a bare, lowercase-initial element name as a host element
15
+ * (`div`, `svg`, `web-button`) — it never names a binding, so it is not an
16
+ * unresolved reference. A member chain (`motion.div`) or a capitalised name
17
+ * is a component reference and IS reported when unbound (#518 D7).
18
+ */
19
+ function isHostElementRoot(ref) {
20
+ return ref.memberChain.length === 0 && /^[a-z]/.test(ref.symbol);
21
+ }
12
22
  export function resolve(graph, opts) {
13
23
  const occurrences = [];
14
24
  const argMap = createArgumentMap();
15
25
  const helperIndex = buildHelperCallers(graph);
26
+ const registry = buildComponentRegistry(graph);
27
+ // THE admission rule (spec D1/D12, ruling 14: shape-only). A local
28
+ // react-component identity must be component-shaped; consumption is the
29
+ // usage itself (a JSX usage that resolves to a local declaration IS that
30
+ // declaration's consumption — the engine's own alias/union/dynamic-map/
31
+ // re-export/wrapper-fold resolution already did that work, so admission
32
+ // never re-derives it). Everything the registry does not type (externals,
33
+ // custom elements, vue-dialect declarations, workspace-member definitions
34
+ // outside the graph) is admitted as before — except a non-code file, which
35
+ // is never a component.
36
+ //
37
+ // Ruling 17: a workspace-member path outside the graph (the bounded
38
+ // resolver pins it but never parses it — a lazy `import("./PhoneInput")`
39
+ // whose target file wasn't walked) is rejected only when its path HAS an
40
+ // extension that is provably not code (`hero.png`, `.SVG`). An
41
+ // extensionless path (`./PhoneInput` resolved without a suffix — the
42
+ // resolver's own concern, not this rule's) is admitted: it's far more
43
+ // likely an unwalked source file than a non-code asset, and this rule has
44
+ // no way to tell without walking it.
45
+ const CODE_EXT = /\.(?:[cm]?[jt]sx?|vue)$/i;
46
+ const HAS_EXT = /\.[^./\\]+$/;
47
+ const admit = (id) => {
48
+ if (id.kind !== "react-component" || id.source.type !== "local")
49
+ return true;
50
+ const { filePath } = id.source;
51
+ const declaring = graph.files.get(filePath);
52
+ if (declaring === undefined)
53
+ return !HAS_EXT.test(filePath) || CODE_EXT.test(filePath);
54
+ if (declaring.dialect === "vue")
55
+ return true;
56
+ return registry.isComponentShaped(filePath, id.export);
57
+ };
16
58
  // Parallel sidecar holding the per-file usage index, kind, and (pre-resolved)
17
59
  // parent-usage index for each emitted occurrence. Used in pass 2 to resolve
18
60
  // `parentRef`. Held off-band (not on `EngineOccurrence`) so the public type
19
- // stays clean and scratch state can't leak into output. `null` slots
20
- // correspond to occurrences that have no composition source (defensive
21
- // every push path stamps a value today). Pre-capturing `parentUsageIdx` at
61
+ // stays clean and scratch state can't leak into output. `null` slots mean
62
+ // the occurrence has no lexical JSX parent the argument-site seeding pass
63
+ // stamps nothing for its occurrences. Pre-capturing `parentUsageIdx` at
22
64
  // stamp time lets pass 2 do an O(1) lookup per occurrence instead of an
23
65
  // O(ownership) `.find()` — matters on large files (hundreds of usages).
24
66
  const composition = [];
@@ -39,19 +81,28 @@ export function resolve(graph, opts) {
39
81
  // same identity AND same owner — always a spurious duplicate. The
40
82
  // `composition` sidecar isn't populated for this slice until the stamp loop
41
83
  // below, so the compaction only touches `occurrences`.
42
- const stampComposition = (lengthBefore, kind, fileUsageIdx, depth, parentUsageIdx) => {
84
+ // THE per-slice compaction seam (admission + #248 dedup). Every emission
85
+ // path — a usage's slice via `stampComposition`, a holder's argument-site
86
+ // slice below — routes through it; never re-derive admission or dedup at a
87
+ // push site.
88
+ const compactSlice = (lengthBefore) => {
43
89
  const seenOccurrenceIds = new Set();
44
90
  let write = lengthBefore;
45
91
  for (let read = lengthBefore; read < occurrences.length; read++) {
46
92
  const occ = occurrences[read];
47
93
  if (occ === undefined)
48
94
  continue;
95
+ if (!admit(occ.rawComponentId))
96
+ continue;
49
97
  if (seenOccurrenceIds.has(occ.occurrenceId))
50
98
  continue;
51
99
  seenOccurrenceIds.add(occ.occurrenceId);
52
100
  occurrences[write++] = occ;
53
101
  }
54
102
  occurrences.length = write;
103
+ };
104
+ const stampComposition = (lengthBefore, kind, fileUsageIdx, depth, parentUsageIdx) => {
105
+ compactSlice(lengthBefore);
55
106
  for (let i = lengthBefore; i < occurrences.length; i++) {
56
107
  const occ = occurrences[i];
57
108
  if (!occ)
@@ -80,8 +131,24 @@ export function resolve(graph, opts) {
80
131
  if (!matchedImport) {
81
132
  // Symbol is locally declared (no import) — emit local identity.
82
133
  const decl = findLocalDeclaration(fileGraph, usage.ref);
83
- if (!decl)
134
+ if (!decl) {
135
+ if (!isHostElementRoot(usage.ref)) {
136
+ // No import record and no declaration in scope: the engine cannot
137
+ // attribute this usage. Surface it (#518 D7 / #111) instead of
138
+ // dropping it silently — `info`, because the usual cause is a
139
+ // global or macro-provided binding the scan cannot see.
140
+ opts?.collector?.emit({
141
+ code: "unresolved-reference",
142
+ severity: "info",
143
+ filePath,
144
+ line: usage.loc.line,
145
+ column: usage.loc.column,
146
+ symbol: usage.ref.symbol,
147
+ memberChain: [...usage.ref.memberChain],
148
+ });
149
+ }
84
150
  continue;
151
+ }
85
152
  pushLocalOccurrence(occurrences, filePath, usage, decl, graph, fileGraph, argMap, ownerRef, helperIndex, opts, viaOverride);
86
153
  stampComposition(jsxLengthBefore, "jsx", usageIdx, jsxDepth, jsxParentUsageIdx);
87
154
  continue;
@@ -91,6 +158,11 @@ export function resolve(graph, opts) {
91
158
  // every export-name / re-export lookup below keys on this, not the raw
92
159
  // `imported` (#362). `via.import` keeps the raw `imported` (provenance).
93
160
  const effectiveImported = effectiveExportName(matchedImport.imported, usage.ref.memberChain);
161
+ // #518 D4: lookups below key on `effectiveImported` (the ROOT); the
162
+ // identity stamped on a fallback is the root plus the residual chain.
163
+ // A member the walker resolves to its own declaration never reaches a
164
+ // fallback, so this only names members with no declaration of their own.
165
+ const residual = residualMemberChain(matchedImport.imported, usage.ref.memberChain);
94
166
  if (!packageName) {
95
167
  // Relative / absolute specifier — always a local file reference.
96
168
  // Resolve the target path; normalize absolute → graph-relative if possible.
@@ -152,7 +224,7 @@ export function resolve(graph, opts) {
152
224
  };
153
225
  const fallbackComponentId = {
154
226
  kind: componentKindFor(fileGraph.dialect),
155
- export: exportName,
227
+ export: compoundExportName(exportName, residual),
156
228
  source: { type: "local", filePath: canonicalFile },
157
229
  };
158
230
  if (viaOverride !== undefined) {
@@ -235,9 +307,12 @@ export function resolve(graph, opts) {
235
307
  const jsxTerminals = foldedTerminals.filter((t) => t.type.kind === "JSX");
236
308
  if (jsxTerminals.length === 0)
237
309
  continue;
238
- const localFallback = workspaceSiblingFallback(graph, resolvedNormTarget, matchedImport, effectiveImported, fileGraph.dialect);
310
+ const siblingFallback = workspaceSiblingFallback(graph, resolvedNormTarget, matchedImport, effectiveImported, fileGraph.dialect);
311
+ const localFallback = siblingFallback !== undefined && siblingFallback.kind !== "custom-element"
312
+ ? { ...siblingFallback, export: compoundExportName(siblingFallback.export, residual) }
313
+ : siblingFallback;
239
314
  for (const ft of jsxTerminals) {
240
- pushOccurrence(occurrences, filePath, usage, matchedImport, effectiveImported, packageName, graph, fileGraph, ft, ownerRef, helperIndex, opts, localFallback, viaOverride);
315
+ pushOccurrence(occurrences, filePath, usage, matchedImport, compoundExportName(effectiveImported, residual), packageName, graph, fileGraph, ft, ownerRef, helperIndex, opts, localFallback, viaOverride);
241
316
  }
242
317
  }
243
318
  else {
@@ -255,13 +330,13 @@ export function resolve(graph, opts) {
255
330
  if (member !== null) {
256
331
  const localFallback = {
257
332
  kind: componentKindFor(fileGraph.dialect),
258
- export: member.exportName,
333
+ export: compoundExportName(member.exportName, residual),
259
334
  source: { type: "local", filePath: member.absFile },
260
335
  };
261
- pushOccurrence(occurrences, filePath, usage, matchedImport, effectiveImported, packageName, graph, fileGraph, sentinelFt, ownerRef, helperIndex, opts, localFallback, viaOverride);
336
+ pushOccurrence(occurrences, filePath, usage, matchedImport, compoundExportName(effectiveImported, residual), packageName, graph, fileGraph, sentinelFt, ownerRef, helperIndex, opts, localFallback, viaOverride);
262
337
  }
263
338
  else {
264
- pushOccurrence(occurrences, filePath, usage, matchedImport, effectiveImported, packageName, graph, fileGraph, sentinelFt, ownerRef, helperIndex, opts, undefined, viaOverride);
339
+ pushOccurrence(occurrences, filePath, usage, matchedImport, compoundExportName(effectiveImported, residual), packageName, graph, fileGraph, sentinelFt, ownerRef, helperIndex, opts, undefined, viaOverride);
265
340
  }
266
341
  }
267
342
  stampComposition(jsxLengthBefore, "jsx", usageIdx, jsxDepth, jsxParentUsageIdx);
@@ -319,6 +394,43 @@ export function resolve(graph, opts) {
319
394
  stampComposition(tagLengthBefore, "tag", i, tagDepth, tagParentUsageIdx);
320
395
  }
321
396
  }
397
+ // Argument-site seeding (spec §4, D4/D5; PR 2 rulings R1–R3). A module-
398
+ // scope registry member whose value is a call — a wrapper product — is a
399
+ // *holder*. Its own fold decides everything: when the fold reaches JSX and
400
+ // every terminal carries neither an identity nor a `hoc-wrapper` hop, the
401
+ // holder is its own identity
402
+ // (D9 arm 2: the callee was visible and built a new function) and credited
403
+ // none of its arguments, so each identifier argument of the OUTERMOST call
404
+ // that resolves to a component gets one occurrence at the argument's own
405
+ // position, owned by the holder. A fold that carried an identity credited
406
+ // an argument already (arm 1 / arm 3) and seeds nothing — a site is never
407
+ // counted twice. The registry gate keeps an unused, unexported holder from
408
+ // owning anything (no phantom owner by construction). Runs after the usage
409
+ // loops so a holder's slice never interleaves with a usage's; there is no
410
+ // composition sidecar entry because an argument site has no lexical JSX
411
+ // parent.
412
+ // #539 D1/D2: the SAME fold answers membership. A holder whose every JSX
413
+ // terminal carries an identity has credited another identity for every
414
+ // render — it is the route to that identity, not a member. Collected here,
415
+ // applied once through `excludeFoldedHolders` at the return below.
416
+ const folded = new Map();
417
+ for (const [filePath, fileGraph] of graph.files) {
418
+ if (fileGraph.dialect === "vue")
419
+ continue;
420
+ for (const decl of fileGraph.declarations.values()) {
421
+ if (decl.scope !== MODULE_SCOPE || decl.value.kind !== "ReturnTypeOf")
422
+ continue;
423
+ if (!registry.hasLocal(filePath, decl.symbol))
424
+ continue;
425
+ const holderJsx = walkWithFolding(graph, fileGraph, decl.value, argMap).filter((t) => t.type.kind === "JSX");
426
+ const foldedAway = foldedHolder(holderJsx, filePath);
427
+ if (foldedAway !== null)
428
+ folded.set(entryKey(filePath, decl.symbol), foldedAway);
429
+ const lengthBefore = occurrences.length;
430
+ pushArgumentSiteOccurrences(occurrences, filePath, decl, decl.value, holderJsx, graph, fileGraph, argMap, opts);
431
+ compactSlice(lengthBefore);
432
+ }
433
+ }
322
434
  // Pass 2: resolve `parentRef` from per-file `parentUsageIdx` ownership data.
323
435
  // Pass 1 populated the `composition` sidecar with `(fileUsageIdx, kind)` per
324
436
  // emitted occurrence, which lets us build a `(filePath, kind, fileUsageIdx)
@@ -343,25 +455,7 @@ export function resolve(graph, opts) {
343
455
  if (parentIdx !== undefined)
344
456
  occ.parentRef = parentIdx;
345
457
  }
346
- return { occurrences };
347
- }
348
- /**
349
- * Walk the scope chain for `ref.symbol` in `fileGraph.declarations` and
350
- * return the first matching BindingDecl, or null if not found.
351
- */
352
- function findLocalDeclaration(fileGraph, ref) {
353
- let scope = ref.scope;
354
- while (true) {
355
- const decl = fileGraph.declarations.get(`${scope}::${ref.symbol}`);
356
- if (decl)
357
- return decl;
358
- if (scope === MODULE_SCOPE)
359
- return null;
360
- const parent = fileGraph.scopes.get(scope)?.parent;
361
- if (parent === null || parent === undefined)
362
- return null;
363
- scope = parent;
364
- }
458
+ return { occurrences, registry: excludeFoldedHolders(registry, folded) };
365
459
  }
366
460
  /**
367
461
  * Build a local-scope ComponentId for a symbol declared in `filePath`.
@@ -389,8 +483,8 @@ function dialectForFile(graph, filePath) {
389
483
  }
390
484
  /**
391
485
  * Owner ComponentId for a parser-pre-decided owner reference (#151
392
- * prop-forward and dynamic-binding paths). `fallbackFile` is the consuming
393
- * file, used when the ref carries no originFile.
486
+ * prop-forward path). `fallbackFile` is the consuming file, used when the ref
487
+ * carries no originFile.
394
488
  *
395
489
  * This and `ownerIdFromResolution` are the ONLY places an occurrence's
396
490
  * `rawOwnerComponentId` may be built — the dialect must come from the
@@ -503,12 +597,16 @@ function relabelExternalLeaf(rawComponentId, filePath, specifier, resolveExterna
503
597
  rawComponentId.source.type !== "external") {
504
598
  return rawComponentId;
505
599
  }
506
- const hit = resolveExternalLeaf(filePath, specifier, rawComponentId.export);
600
+ // A compound export (#518) names a member of the package's ROOT export;
601
+ // the leaf walk resolves the root and the member chain is re-joined onto
602
+ // whatever export the leaf calls it.
603
+ const { root, path } = parseCompoundExport(rawComponentId.export);
604
+ const hit = resolveExternalLeaf(filePath, specifier, root);
507
605
  if (!hit || hit.leafPackage === rawComponentId.source.package)
508
606
  return rawComponentId;
509
607
  return {
510
608
  kind: rawComponentId.kind,
511
- export: hit.exportName,
609
+ export: compoundExportName(hit.exportName, path),
512
610
  source: externalSource(hit.leafPackage, `${hit.leafPackage}/${hit.modulePath}`),
513
611
  };
514
612
  }
@@ -571,9 +669,10 @@ function computeWraps(rawComponentId, wrapCallback) {
571
669
  return { kind: "custom-element", tagName: hit.tagName, packageName: hit.packageName };
572
670
  }
573
671
  function pushOccurrence(occurrences, filePath, usage, matchedImport,
574
- /** Export name for the fallback identity — namespace members already
575
- * resolved via `effectiveExportName` (#362). Distinct from
576
- * `matchedImport.imported`, which stays raw for `via` provenance. */
672
+ /** Export name for the fallback identity — the root export resolved via
673
+ * `effectiveExportName` (#362) joined with the residual member chain via
674
+ * `compoundExportName` (#518). Distinct from `matchedImport.imported`,
675
+ * which stays raw for `via` provenance. */
577
676
  effectiveImported, packageName, graph, fileGraph, ft, ownerRef, helperIndex, opts, fallbackOverride, viaOverride) {
578
677
  const fallback = fallbackOverride ?? {
579
678
  kind: componentKindFor(fileGraph.dialect),
@@ -646,17 +745,20 @@ effectiveImported, packageName, graph, fileGraph, ft, ownerRef, helperIndex, opt
646
745
  * Walks the decl's value via walkWithFolding and fans out per JSX terminal.
647
746
  */
648
747
  function pushLocalOccurrence(occurrences, filePath, usage, decl, graph, fileGraph, argMap, ownerRef, helperIndex, opts, viaOverride) {
649
- const folded = walkWithFolding(graph, fileGraph, decl.value, argMap);
748
+ // A member access on a same-file binding (`<LocalNS.Leaf/>`) walks the
749
+ // MEMBER, not the whole object — `resolveReference` applies the usage's
750
+ // member chain exactly as the import path already gets it (#520 shape 4,
751
+ // the same static-MemberOf arm as #512). A bare reference is unchanged:
752
+ // `decl.value` is what `resolveReference` returns for an empty chain.
753
+ const value = usage.ref.memberChain.length > 0 ? resolveReference(graph, fileGraph, usage.ref) : decl.value;
754
+ const folded = walkWithFolding(graph, fileGraph, value, argMap);
650
755
  const jsxTerminals = folded.filter((t) => t.type.kind === "JSX");
651
- if (jsxTerminals.length === 0) {
652
- if (decl.dynamicSource) {
653
- // For dynamic-binding occurrences, derive a single owner (no fanout needed —
654
- // dynamic bindings are not the target of helper-call reclassification).
655
- const rawOwnerComponentId = ownerIdFromRef(graph, ownerRef, fileGraph.filePath);
656
- pushDynamicBindingOccurrence(occurrences, filePath, usage, decl.dynamicSource, fileGraph.dialect, rawOwnerComponentId);
657
- }
756
+ // A reference that resolves to no JSX terminal — a function parameter
757
+ // (`<Component/>` inside a factory body), a hook-return destructure, or an
758
+ // unresolvable alias emits nothing (spec D4/D7). The old dynamic-binding
759
+ // phantom (`{ packageName: null, exportName: "Component" }`) is gone.
760
+ if (jsxTerminals.length === 0)
658
761
  return;
659
- }
660
762
  const outerVia = viaOverride ?? { kind: "local-component" };
661
763
  if (viaOverride !== undefined) {
662
764
  // #151 prop-forward: parser has pre-decided the owner — single-occurrence path.
@@ -664,7 +766,7 @@ function pushLocalOccurrence(occurrences, filePath, usage, decl, graph, fileGrap
664
766
  for (const ft of jsxTerminals) {
665
767
  const fallback = {
666
768
  kind: componentKindFor(fileGraph.dialect),
667
- export: usage.ref.symbol,
769
+ export: compoundExportName(usage.ref.symbol, usage.ref.memberChain),
668
770
  source: { type: "local", filePath },
669
771
  };
670
772
  const rawComponentId = componentIdFromIdentity(ft.identity, fallback, fileGraph.dialect, {
@@ -696,7 +798,7 @@ function pushLocalOccurrence(occurrences, filePath, usage, decl, graph, fileGrap
696
798
  for (const ft of jsxTerminals) {
697
799
  const fallback = {
698
800
  kind: componentKindFor(fileGraph.dialect),
699
- export: usage.ref.symbol,
801
+ export: compoundExportName(usage.ref.symbol, usage.ref.memberChain),
700
802
  source: { type: "local", filePath },
701
803
  };
702
804
  const rawComponentId = componentIdFromIdentity(ft.identity, fallback, fileGraph.dialect, {
@@ -726,55 +828,93 @@ function pushLocalOccurrence(occurrences, filePath, usage, decl, graph, fileGrap
726
828
  }
727
829
  }
728
830
  /**
729
- * Emit a single occurrence for a JSX root that resolves to a dynamic binding
730
- * (function parameter or destructure of a CallExpression return). The runtime
731
- * identity is genuinely indeterminate, so:
732
- * - componentId.source = { type: "unknown" }
733
- * - componentId.export = the binding's local name
734
- * - via.kind = "dynamic-binding" with bindingName + bindingSource
735
- *
736
- * memberChain on the usage is intentionally dropped — claiming `.Foo` of an
737
- * unknown adds noise without information.
738
- *
739
- * `definition` is intentionally absent: the declaration site of a parameter
740
- * is the function signature, which doesn't represent a component definition
741
- * in the local-component aggregation sense.
831
+ * #539 D1: a holder is folded away iff its fold reaches JSX and EVERY JSX
832
+ * terminal carries an identity the fold credited someone else for every
833
+ * render. Any identity-less terminal means the holder is its own identity
834
+ * (spec D9 arm 2: `memo(createField(Base))`, `forwardRef((p, r) => <b/>)`).
835
+ * D4: the target is reported only when all terminals name ONE local member of
836
+ * the holder's own file; that member inherits `isDefault` in the seam.
837
+ * Returns `null` when the holder is not folded.
742
838
  */
743
- function pushDynamicBindingOccurrence(occurrences, filePath, usage, bindingSource, fileDialect, rawOwnerComponentId) {
744
- // Skip intrinsic HTML/SVG elements. React's convention: JSX whose root
745
- // identifier starts with a lowercase letter is always an intrinsic
746
- // (`<div>`, `<title>`, `<label>`, …), never a component. Without this
747
- // guard, auto-generated icon components like `function Icon({ title }) {
748
- // return <svg><title>{title}</title></svg>; }` produce a noisy
749
- // dynamic-binding occurrence for the `<title>` intrinsic — a false
750
- // positive that swamps the real signal.
751
- const first = usage.ref.symbol.charCodeAt(0);
752
- if (first >= 97 && first <= 122)
753
- return; // ASCII 'a'–'z'
754
- const rawComponentId = {
755
- kind: componentKindFor(fileDialect),
756
- export: usage.ref.symbol,
757
- source: { type: "unknown" },
758
- };
759
- const via = {
760
- kind: "dynamic-binding",
761
- bindingName: usage.ref.symbol,
762
- bindingSource,
839
+ function foldedHolder(holderJsx, filePath) {
840
+ if (holderJsx.length === 0 || holderJsx.some((t) => t.identity === null))
841
+ return null;
842
+ const first = holderJsx[0]?.identity;
843
+ const sameFileSingle = first !== undefined &&
844
+ first !== null &&
845
+ first.kind === "local" &&
846
+ first.filePath === filePath &&
847
+ holderJsx.every((t) => t.identity !== null && t.identity.kind === "local" && t.identity.filePath === filePath && t.identity.export === first.export);
848
+ return { target: sameFileSingle ? { filePath, export: first.export } : null };
849
+ }
850
+ /**
851
+ * Argument-site seeding for one holder (spec §4; PR 2 rulings R1–R3) over the
852
+ * fold the caller already ran (#539 D2) — the rule is stated at the call site
853
+ * in `resolve`. Identity goes through `componentIdFromIdentity` (the
854
+ * external-leaf relabel seam) and the owner through `ownerIdFromRef`, exactly
855
+ * as every other push path; the binding is named through `argumentProvenance`,
856
+ * the same helper `hoc-wrapper` uses. The caller compacts the slice
857
+ * (admission + dedup).
858
+ */
859
+ function pushArgumentSiteOccurrences(occurrences, filePath, holder, call, holderJsx, graph, fileGraph, argMap, opts) {
860
+ // R1: the holder is its own identity iff its fold reaches JSX and no
861
+ // terminal carries an identity of its own OR a `hoc-wrapper` hop — the hop
862
+ // is the fold's own record that it credited an argument (arm 1 / arm 3),
863
+ // even when that argument was anonymous (`forwardRef((p, r) => <b/>, x)`),
864
+ // so the holder is a wrapper of it and its other arguments are
865
+ // configuration, not wrapped components.
866
+ if (holderJsx.length === 0 ||
867
+ holderJsx.some((t) => t.identity !== null || t.viaTrail.some((v) => v.kind === "hoc-wrapper"))) {
868
+ return;
869
+ }
870
+ const holderRef = {
871
+ symbol: holder.symbol,
872
+ scope: MODULE_SCOPE,
873
+ memberChain: [],
874
+ loc: holder.loc,
875
+ originFile: filePath,
763
876
  };
764
- const provisionalId = serialiseComponentId(rawComponentId);
765
- const occurrenceId = computeOccurrenceId(provisionalId, filePath, usage.loc.line, usage.loc.column, rawOwnerComponentId !== undefined ? serialiseComponentId(rawOwnerComponentId) : undefined);
766
- occurrences.push({
767
- rawComponentId,
768
- filePath,
769
- line: usage.loc.line,
770
- column: usage.loc.column,
771
- via,
772
- viaChain: [via],
773
- props: projectPropUsages(usage.props),
774
- events: usage.events ?? [],
775
- occurrenceId,
776
- depth: 0,
777
- ...(rawOwnerComponentId !== undefined ? { rawOwnerComponentId } : {}),
877
+ const rawOwnerComponentId = ownerIdFromRef(graph, holderRef, filePath);
878
+ const ownerKey = rawOwnerComponentId !== undefined ? serialiseComponentId(rawOwnerComponentId) : undefined;
879
+ // R2: the outermost call's arguments only — an inner call's arguments
880
+ // configure the wrapper, they are not wrapped. R3: identifier arguments
881
+ // only, each resolved through the walker so aliases, re-exports and
882
+ // import-backed leaves take the same path a render site does; a null
883
+ // identity is skipped, never invented.
884
+ call.args.forEach((arg, index) => {
885
+ if (arg.kind !== "TypeOf")
886
+ return;
887
+ const outerVia = { kind: "passed-as-argument", index, ...argumentProvenance(call, arg, fileGraph) };
888
+ const argDecl = findLocalDeclaration(fileGraph, arg.ref);
889
+ // Never applied: every terminal used below carries a non-null identity,
890
+ // and `buildComponentId` returns the fallback only for a null one. The
891
+ // relabel seam's signature requires a fallback all the same.
892
+ const unusedFallback = makeLocalComponentId(filePath, arg.ref.symbol, fileGraph.dialect);
893
+ for (const ft of walkWithFolding(graph, fileGraph, arg, argMap)) {
894
+ if (ft.type.kind !== "JSX" || ft.identity === null)
895
+ continue;
896
+ const rawComponentId = componentIdFromIdentity(ft.identity, unusedFallback, fileGraph.dialect, {
897
+ filePath,
898
+ resolveExternalLeaf: opts?.resolveExternalLeaf,
899
+ });
900
+ const wraps = computeWraps(rawComponentId, opts?.wrapCallback);
901
+ const occurrenceId = computeOccurrenceId(serialiseComponentId(rawComponentId), filePath, arg.ref.loc.line, arg.ref.loc.column, ownerKey);
902
+ occurrences.push({
903
+ rawComponentId,
904
+ filePath,
905
+ line: arg.ref.loc.line,
906
+ column: arg.ref.loc.column,
907
+ via: outerVia,
908
+ viaChain: [outerVia, ...ft.viaTrail],
909
+ props: {},
910
+ events: [],
911
+ occurrenceId,
912
+ depth: 0,
913
+ ...(argDecl !== null ? { definition: { line: argDecl.loc.line, column: argDecl.loc.column } } : {}),
914
+ ...(rawOwnerComponentId !== undefined ? { rawOwnerComponentId } : {}),
915
+ ...(wraps !== undefined ? { wraps } : {}),
916
+ });
917
+ }
778
918
  });
779
919
  }
780
920
  /**