@ryanstark24/sfgraph-core 1.1.8 → 1.2.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 (161) hide show
  1. package/dist/analyze/__tests__/find-nodes.test.d.ts +2 -0
  2. package/dist/analyze/__tests__/find-nodes.test.d.ts.map +1 -0
  3. package/dist/analyze/__tests__/find-nodes.test.js +129 -0
  4. package/dist/analyze/__tests__/find-nodes.test.js.map +1 -0
  5. package/dist/analyze/__tests__/findings.test.d.ts +2 -0
  6. package/dist/analyze/__tests__/findings.test.d.ts.map +1 -0
  7. package/dist/analyze/__tests__/findings.test.js +90 -0
  8. package/dist/analyze/__tests__/findings.test.js.map +1 -0
  9. package/dist/analyze/find-nodes.d.ts +38 -0
  10. package/dist/analyze/find-nodes.d.ts.map +1 -0
  11. package/dist/analyze/find-nodes.js +51 -0
  12. package/dist/analyze/find-nodes.js.map +1 -0
  13. package/dist/analyze/findings.d.ts +86 -0
  14. package/dist/analyze/findings.d.ts.map +1 -0
  15. package/dist/analyze/findings.js +143 -0
  16. package/dist/analyze/findings.js.map +1 -0
  17. package/dist/analyze/index.d.ts +2 -0
  18. package/dist/analyze/index.d.ts.map +1 -1
  19. package/dist/analyze/index.js +2 -0
  20. package/dist/analyze/index.js.map +1 -1
  21. package/dist/domain/edge-fact.d.ts +25 -0
  22. package/dist/domain/edge-fact.d.ts.map +1 -1
  23. package/dist/domain/rel-types.d.ts +4 -0
  24. package/dist/domain/rel-types.d.ts.map +1 -1
  25. package/dist/domain/rel-types.js +7 -0
  26. package/dist/domain/rel-types.js.map +1 -1
  27. package/dist/embedding/__tests__/embed.test.d.ts +2 -0
  28. package/dist/embedding/__tests__/embed.test.d.ts.map +1 -0
  29. package/dist/embedding/__tests__/embed.test.js +72 -0
  30. package/dist/embedding/__tests__/embed.test.js.map +1 -0
  31. package/dist/extractors/live-org/__tests__/liveness.test.d.ts +2 -0
  32. package/dist/extractors/live-org/__tests__/liveness.test.d.ts.map +1 -0
  33. package/dist/extractors/live-org/__tests__/liveness.test.js +148 -0
  34. package/dist/extractors/live-org/__tests__/liveness.test.js.map +1 -0
  35. package/dist/extractors/live-org/__tests__/mcd-baseline.test.d.ts +2 -0
  36. package/dist/extractors/live-org/__tests__/mcd-baseline.test.d.ts.map +1 -0
  37. package/dist/extractors/live-org/__tests__/mcd-baseline.test.js +174 -0
  38. package/dist/extractors/live-org/__tests__/mcd-baseline.test.js.map +1 -0
  39. package/dist/extractors/live-org/__tests__/metadata-read-batch.test.d.ts +2 -0
  40. package/dist/extractors/live-org/__tests__/metadata-read-batch.test.d.ts.map +1 -0
  41. package/dist/extractors/live-org/__tests__/metadata-read-batch.test.js +75 -0
  42. package/dist/extractors/live-org/__tests__/metadata-read-batch.test.js.map +1 -0
  43. package/dist/extractors/live-org/__tests__/omnistudio-retrieve.test.d.ts +2 -0
  44. package/dist/extractors/live-org/__tests__/omnistudio-retrieve.test.d.ts.map +1 -0
  45. package/dist/extractors/live-org/__tests__/omnistudio-retrieve.test.js +135 -0
  46. package/dist/extractors/live-org/__tests__/omnistudio-retrieve.test.js.map +1 -0
  47. package/dist/extractors/live-org/__tests__/soql-rebatch.test.d.ts +2 -0
  48. package/dist/extractors/live-org/__tests__/soql-rebatch.test.d.ts.map +1 -0
  49. package/dist/extractors/live-org/__tests__/soql-rebatch.test.js +118 -0
  50. package/dist/extractors/live-org/__tests__/soql-rebatch.test.js.map +1 -0
  51. package/dist/extractors/live-org/__tests__/vlocity-runner.test.js +27 -0
  52. package/dist/extractors/live-org/__tests__/vlocity-runner.test.js.map +1 -1
  53. package/dist/extractors/live-org/bulk-retrieve.d.ts +7 -0
  54. package/dist/extractors/live-org/bulk-retrieve.d.ts.map +1 -1
  55. package/dist/extractors/live-org/bulk-retrieve.js +10 -1
  56. package/dist/extractors/live-org/bulk-retrieve.js.map +1 -1
  57. package/dist/extractors/live-org/extractors/mcd-baseline.d.ts +60 -0
  58. package/dist/extractors/live-org/extractors/mcd-baseline.d.ts.map +1 -0
  59. package/dist/extractors/live-org/extractors/mcd-baseline.js +120 -0
  60. package/dist/extractors/live-org/extractors/mcd-baseline.js.map +1 -0
  61. package/dist/extractors/live-org/extractors/omnistudio-retrieve.d.ts +23 -0
  62. package/dist/extractors/live-org/extractors/omnistudio-retrieve.d.ts.map +1 -0
  63. package/dist/extractors/live-org/extractors/omnistudio-retrieve.js +172 -0
  64. package/dist/extractors/live-org/extractors/omnistudio-retrieve.js.map +1 -0
  65. package/dist/extractors/live-org/rate-limit.d.ts +57 -0
  66. package/dist/extractors/live-org/rate-limit.d.ts.map +1 -1
  67. package/dist/extractors/live-org/rate-limit.js +93 -8
  68. package/dist/extractors/live-org/rate-limit.js.map +1 -1
  69. package/dist/extractors/live-org/vlocity/runner.d.ts +1 -1
  70. package/dist/extractors/live-org/vlocity/runner.d.ts.map +1 -1
  71. package/dist/extractors/live-org/vlocity/runner.js +20 -9
  72. package/dist/extractors/live-org/vlocity/runner.js.map +1 -1
  73. package/dist/index.d.ts +1 -0
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/index.js +1 -0
  76. package/dist/index.js.map +1 -1
  77. package/dist/ingest/__tests__/multi-org-orchestrator.test.js +3 -0
  78. package/dist/ingest/__tests__/multi-org-orchestrator.test.js.map +1 -1
  79. package/dist/ingest/live-ingest.d.ts +70 -0
  80. package/dist/ingest/live-ingest.d.ts.map +1 -1
  81. package/dist/ingest/live-ingest.js +108 -1
  82. package/dist/ingest/live-ingest.js.map +1 -1
  83. package/dist/parsers/__tests__/edge-provenance.test.d.ts +2 -0
  84. package/dist/parsers/__tests__/edge-provenance.test.d.ts.map +1 -0
  85. package/dist/parsers/__tests__/edge-provenance.test.js +44 -0
  86. package/dist/parsers/__tests__/edge-provenance.test.js.map +1 -0
  87. package/dist/parsers/__tests__/lwc-bindings.test.js +72 -0
  88. package/dist/parsers/__tests__/lwc-bindings.test.js.map +1 -1
  89. package/dist/parsers/__tests__/mcd-gap-fills.test.d.ts +2 -0
  90. package/dist/parsers/__tests__/mcd-gap-fills.test.d.ts.map +1 -0
  91. package/dist/parsers/__tests__/mcd-gap-fills.test.js +75 -0
  92. package/dist/parsers/__tests__/mcd-gap-fills.test.js.map +1 -0
  93. package/dist/parsers/__tests__/omnistudio-overlap.test.d.ts +2 -0
  94. package/dist/parsers/__tests__/omnistudio-overlap.test.d.ts.map +1 -0
  95. package/dist/parsers/__tests__/omnistudio-overlap.test.js +163 -0
  96. package/dist/parsers/__tests__/omnistudio-overlap.test.js.map +1 -0
  97. package/dist/parsers/__tests__/reflection-walker.test.d.ts +2 -0
  98. package/dist/parsers/__tests__/reflection-walker.test.d.ts.map +1 -0
  99. package/dist/parsers/__tests__/reflection-walker.test.js +162 -0
  100. package/dist/parsers/__tests__/reflection-walker.test.js.map +1 -0
  101. package/dist/parsers/apex/__tests__/is-test-attribute.test.d.ts +2 -0
  102. package/dist/parsers/apex/__tests__/is-test-attribute.test.d.ts.map +1 -0
  103. package/dist/parsers/apex/__tests__/is-test-attribute.test.js +54 -0
  104. package/dist/parsers/apex/__tests__/is-test-attribute.test.js.map +1 -0
  105. package/dist/parsers/apex/__tests__/regex-arg-count.test.d.ts +2 -0
  106. package/dist/parsers/apex/__tests__/regex-arg-count.test.d.ts.map +1 -0
  107. package/dist/parsers/apex/__tests__/regex-arg-count.test.js +82 -0
  108. package/dist/parsers/apex/__tests__/regex-arg-count.test.js.map +1 -0
  109. package/dist/parsers/apex/class.d.ts.map +1 -1
  110. package/dist/parsers/apex/class.js +103 -5
  111. package/dist/parsers/apex/class.js.map +1 -1
  112. package/dist/parsers/common.d.ts +4 -1
  113. package/dist/parsers/common.d.ts.map +1 -1
  114. package/dist/parsers/common.js +15 -2
  115. package/dist/parsers/common.js.map +1 -1
  116. package/dist/parsers/generic/reflection-walker.d.ts +90 -0
  117. package/dist/parsers/generic/reflection-walker.d.ts.map +1 -0
  118. package/dist/parsers/generic/reflection-walker.js +195 -0
  119. package/dist/parsers/generic/reflection-walker.js.map +1 -0
  120. package/dist/parsers/lwc/html-visitor.d.ts.map +1 -1
  121. package/dist/parsers/lwc/html-visitor.js +81 -3
  122. package/dist/parsers/lwc/html-visitor.js.map +1 -1
  123. package/dist/parsers/object/object.d.ts.map +1 -1
  124. package/dist/parsers/object/object.js +34 -0
  125. package/dist/parsers/object/object.js.map +1 -1
  126. package/dist/parsers/omnistudio/overlap-detector.d.ts +50 -0
  127. package/dist/parsers/omnistudio/overlap-detector.d.ts.map +1 -0
  128. package/dist/parsers/omnistudio/overlap-detector.js +129 -0
  129. package/dist/parsers/omnistudio/overlap-detector.js.map +1 -0
  130. package/dist/render/__tests__/sarif.test.d.ts +2 -0
  131. package/dist/render/__tests__/sarif.test.d.ts.map +1 -0
  132. package/dist/render/__tests__/sarif.test.js +129 -0
  133. package/dist/render/__tests__/sarif.test.js.map +1 -0
  134. package/dist/render/sarif.d.ts +94 -0
  135. package/dist/render/sarif.d.ts.map +1 -0
  136. package/dist/render/sarif.js +133 -0
  137. package/dist/render/sarif.js.map +1 -0
  138. package/dist/storage/__tests__/analysis-tables-migration.test.js +1 -1
  139. package/dist/storage/__tests__/migrations.test.js +4 -4
  140. package/dist/storage/__tests__/rename-stability.test.d.ts +2 -0
  141. package/dist/storage/__tests__/rename-stability.test.d.ts.map +1 -0
  142. package/dist/storage/__tests__/rename-stability.test.js +135 -0
  143. package/dist/storage/__tests__/rename-stability.test.js.map +1 -0
  144. package/dist/storage/index.d.ts +1 -0
  145. package/dist/storage/index.d.ts.map +1 -1
  146. package/dist/storage/index.js +1 -0
  147. package/dist/storage/index.js.map +1 -1
  148. package/dist/storage/interfaces.d.ts +3 -0
  149. package/dist/storage/interfaces.d.ts.map +1 -1
  150. package/dist/storage/sqlite/graph-store.d.ts +6 -0
  151. package/dist/storage/sqlite/graph-store.d.ts.map +1 -1
  152. package/dist/storage/sqlite/graph-store.js +8 -0
  153. package/dist/storage/sqlite/graph-store.js.map +1 -1
  154. package/dist/storage/sqlite/migrations.d.ts.map +1 -1
  155. package/dist/storage/sqlite/migrations.js +19 -0
  156. package/dist/storage/sqlite/migrations.js.map +1 -1
  157. package/dist/storage/sqlite/rename-stability.d.ts +94 -0
  158. package/dist/storage/sqlite/rename-stability.d.ts.map +1 -0
  159. package/dist/storage/sqlite/rename-stability.js +96 -0
  160. package/dist/storage/sqlite/rename-stability.js.map +1 -0
  161. package/package.json +4 -1
@@ -20,6 +20,41 @@ export function extractHtmlEdges(source, lwcQname, ctx, bindings) {
20
20
  const seenEvt = new Set();
21
21
  const seenField = new Set();
22
22
  const seenProperty = new Set();
23
+ // Directive attribute names — both the modern `lwc:*` family and the
24
+ // legacy template:1 forms. Each maps to a label recorded on the emitted
25
+ // edge's `attributes.directive` so consumers can distinguish "conditional"
26
+ // bindings from regular property reads.
27
+ //
28
+ // `lwc:for:each` and legacy `for:each` carry an iterable expression; the
29
+ // companion `for:item` / `lwc:for:item` attributes name an alias used by
30
+ // child bindings (e.g. `{card.title}` where `card` aliases `items[i]`).
31
+ // We record the iterable as a property bind with `directive: 'lwc:for:each'`
32
+ // plus `forItem: '<alias>'` when the sibling attribute is present.
33
+ // Alias-resolution of child bindings is intentionally out of scope here —
34
+ // see W2 follow-ups.
35
+ const CONDITIONAL_DIRECTIVES = new Map([
36
+ ["lwc:if", "lwc:if"],
37
+ ["lwc:elseif", "lwc:elseif"],
38
+ ["if:true", "if:true"],
39
+ ["if:false", "if:false"],
40
+ ]);
41
+ const FOR_EACH_DIRECTIVES = new Set(["lwc:for:each", "for:each", "lwc:iterator:each"]);
42
+ const FOR_ITEM_ATTRS = new Set(["lwc:for:item", "for:item", "iterator:item"]);
43
+ const emitDirectiveBinding = (expr, directive, extra) => {
44
+ // Pull the head identifier out of `{user.isAdmin}` → `user.isAdmin` →
45
+ // head = `user`. Mirrors emitBinding's split for consistency, but we
46
+ // always emit as LWC_BINDS_PROPERTY because directive bindings are
47
+ // imperative property reads (not field reads on a @wire'd sObject).
48
+ const dst = `LWCProperty:${expr}`;
49
+ if (seenProperty.has(dst))
50
+ return;
51
+ seenProperty.add(dst);
52
+ extraEdges.push(makeEdge(ctx, lwcQname, REL_TYPES.LWC_BINDS_PROPERTY, dst, {
53
+ binding: expr,
54
+ directive,
55
+ ...extra,
56
+ }));
57
+ };
23
58
  const emitBinding = (expr) => {
24
59
  // `record.Name` → split into [record, Name]; `record.fields.Account.Name`
25
60
  // is unusual in templates and falls through to property.
@@ -100,10 +135,53 @@ export function extractHtmlEdges(source, lwcQname, ctx, bindings) {
100
135
  extraEdges.push(makeEdge(ctx, lwcQname, REL_TYPES.EMBEDS_AURA, dst, { tag }));
101
136
  }
102
137
  }
138
+ // Two-pass attribute scan. First pass picks up directive attributes
139
+ // (lwc:if / lwc:for:each / legacy if:true / for:each) so the binding
140
+ // gets emitted with `attributes.directive` set. Second pass runs the
141
+ // general onevent / value-binding logic and skips bindings the
142
+ // directive pass already recorded.
143
+ const attrs = (n?.attrs ?? []).map((a) => ({ name: a?.name ?? "", value: a?.value ?? "" }));
144
+ // Resolve for:item alias up front so the for:each directive can record it.
145
+ let forItemAlias;
146
+ for (const a of attrs) {
147
+ if (FOR_ITEM_ATTRS.has(a.name)) {
148
+ forItemAlias = a.value || undefined;
149
+ break;
150
+ }
151
+ }
152
+ for (const a of attrs) {
153
+ const directive = CONDITIONAL_DIRECTIVES.get(a.name);
154
+ if (directive) {
155
+ // Conditional directive: `lwc:if={isShown}` / `if:true={state.ready}`
156
+ // The value is a single bound expression wrapped in braces (or
157
+ // sometimes bare for legacy if:true). Strip braces defensively.
158
+ const raw = a.value.trim();
159
+ const expr = raw.startsWith("{") && raw.endsWith("}") ? raw.slice(1, -1) : raw;
160
+ if (expr)
161
+ emitDirectiveBinding(expr, directive, {});
162
+ continue;
163
+ }
164
+ if (FOR_EACH_DIRECTIVES.has(a.name)) {
165
+ const raw = a.value.trim();
166
+ const expr = raw.startsWith("{") && raw.endsWith("}") ? raw.slice(1, -1) : raw;
167
+ if (expr) {
168
+ const extra = {};
169
+ if (forItemAlias)
170
+ extra.forItem = forItemAlias;
171
+ emitDirectiveBinding(expr, a.name, extra);
172
+ }
173
+ continue;
174
+ }
175
+ }
103
176
  // Attributes that look like onevent listeners + mustache bindings in
104
177
  // attribute values (e.g. `<lightning-input value={record.Name}>`).
105
- for (const a of n?.attrs ?? []) {
106
- const name = a?.name ?? "";
178
+ // Directive attributes already handled above are skipped via the
179
+ // `seenProperty` set populated by emitDirectiveBinding.
180
+ for (const a of attrs) {
181
+ const name = a.name;
182
+ if (CONDITIONAL_DIRECTIVES.has(name) || FOR_EACH_DIRECTIVES.has(name) || FOR_ITEM_ATTRS.has(name)) {
183
+ continue;
184
+ }
107
185
  if (name.startsWith("on") && name.length > 2) {
108
186
  const evtName = name.slice(2);
109
187
  if (!seenEvt.has(evtName)) {
@@ -111,7 +189,7 @@ export function extractHtmlEdges(source, lwcQname, ctx, bindings) {
111
189
  extraEdges.push(makeEdge(ctx, lwcQname, REL_TYPES.LISTENS_TO_EVENT, `LWCEvent:${evtName}`));
112
190
  }
113
191
  }
114
- const val = a?.value;
192
+ const val = a.value;
115
193
  if (typeof val === "string")
116
194
  scanText(val);
117
195
  }
@@ -1 +1 @@
1
- {"version":3,"file":"html-visitor.js","sourceRoot":"","sources":["../../../src/parsers/lwc/html-visitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,QAAQ,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AASjD,SAAS,IAAI,CAAC,IAAS,EAAE,KAAuB;IAC9C,KAAK,CAAC,IAAI,CAAC,CAAC;IACZ,yFAAyF;IACzF,MAAM,UAAU,GAAG,IAAI,EAAE,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC;IACnD,KAAK,MAAM,CAAC,IAAI,UAAU;QAAE,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,IAAI,EAAE,UAAU,IAAI,EAAE,CAAC;IACpC,KAAK,MAAM,CAAC,IAAI,IAAI;QAAE,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,GAAG,4CAA4C,CAAC;AAEhE,MAAM,UAAU,gBAAgB,CAC9B,MAAc,EACd,QAAgB,EAChB,GAAiB,EACjB,QAAsB;IAEtB,MAAM,UAAU,GAAe,EAAE,CAAC;IAClC,MAAM,UAAU,GAAe,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAC/B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IAEvC,MAAM,WAAW,GAAG,CAAC,IAAY,EAAQ,EAAE;QACzC,0EAA0E;QAC1E,yDAAyD;QACzD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,QAAQ,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACjD,IAAI,OAAO,EAAE,CAAC;gBACZ,yEAAyE;gBACzE,4EAA4E;gBAC5E,4EAA4E;gBAC5E,6EAA6E;gBAC7E,kEAAkE;gBAClE,4CAA4C;gBAC5C,sEAAsE;gBACtE,sEAAsE;gBACtE,sDAAsD;gBACtD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC5B,IAAI,KAAK,GAAG,EAAE,CAAC;gBACf,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;oBACzB,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACxB,CAAC;qBAAM,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC7B,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACxB,CAAC;gBACD,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,GAAG,GAAG,eAAe,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC9F,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;wBACxB,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBACnB,UAAU,CAAC,IAAI,CACb,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,eAAe,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAC3E,CAAC;oBACJ,CAAC;oBACD,OAAO;gBACT,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,GAAG,GAAG,eAAe,IAAI,EAAE,CAAC;QAClC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACtB,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,kBAAkB,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACjG,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAQ,EAAE;QACtC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO;QAC3C,UAAU,CAAC,SAAS,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,GAA2B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtD,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;YAClB,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAClB,IAAI,IAAI;gBAAE,WAAW,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,CAAC,IAAI,EAAE,CAAC,CAAM,EAAE,EAAE;QACpB,wEAAwE;QACxE,IAAI,CAAC,EAAE,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC,EAAE,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5D,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;QACD,MAAM,GAAG,GAAuB,CAAC,EAAE,OAAO,CAAC;QAC3C,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,mFAAmF;QACnF,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QACpD,IAAI,CAAC,EAAE,CAAC;YACN,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAChB,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACxB,4CAA4C;YAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YACpF,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,WAAW,EAAE,CAAC;gBACrC,MAAM,GAAG,GAAG,OAAO,UAAU,EAAE,CAAC;gBAChC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACjB,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,UAAU,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;gBAC/E,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,GAAG,iBAAiB,EAAE,IAAI,IAAI,EAAE,CAAC;gBAC1C,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,WAAW,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YAChF,CAAC;QACH,CAAC;QACD,qEAAqE;QACrE,mEAAmE;QACnE,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,EAAE,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAW,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;YACnC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC9B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC1B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBACrB,UAAU,CAAC,IAAI,CACb,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,gBAAgB,EAAE,YAAY,OAAO,EAAE,CAAC,CAC3E,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,MAAM,GAAG,GAAuB,CAAC,EAAE,KAAK,CAAC;YACzC,IAAI,OAAO,GAAG,KAAK,QAAQ;gBAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;AACpC,CAAC"}
1
+ {"version":3,"file":"html-visitor.js","sourceRoot":"","sources":["../../../src/parsers/lwc/html-visitor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../../src/parsers/object/object.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAKxE,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C;AAUD,qBAAa,kBAAmB,YAAW,MAAM,CAAC,cAAc,CAAC;IAC/D,QAAQ,CAAC,QAAQ,iBAA4B;IAC7C,QAAQ,CAAC,IAAI,kBAAkB;IAEzB,KAAK,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;CAoP5E"}
1
+ {"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../../src/parsers/object/object.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAKxE,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C;AAUD,qBAAa,kBAAmB,YAAW,MAAM,CAAC,cAAc,CAAC;IAC/D,QAAQ,CAAC,QAAQ,iBAA4B;IAC7C,QAAQ,CAAC,IAAI,kBAAkB;IAEzB,KAAK,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;CAuT5E"}
@@ -96,6 +96,25 @@ export class CustomObjectParser {
96
96
  ...(fieldType ? { fieldType } : {}),
97
97
  }));
98
98
  }
99
+ // W2-04: MCD gap-fill edges. The platform's
100
+ // MetadataComponentDependency SObject omits picklist→GlobalValueSet
101
+ // and dependent-picklist→controlling-field references; synthesise
102
+ // them from the field's describe payload. The valueSet structure
103
+ // is fast-xml-parser's nested form: `{ valueSetName: 'X' }` or
104
+ // `{ controllingField: 'Status__c', valueSettings: [...] }`.
105
+ const valueSet = f.valueSet;
106
+ if (valueSet && typeof valueSet === "object") {
107
+ const valueSetName = valueSet.valueSetName;
108
+ if (typeof valueSetName === "string" && valueSetName.length > 0) {
109
+ edges.push(makeEdge(ctx, fieldQname, REL_TYPES.USES_GLOBAL_VALUE_SET, `GlobalValueSet:${valueSetName}`, { ...(fieldType ? { fieldType } : {}) }));
110
+ }
111
+ const controllingField = valueSet.controllingField;
112
+ if (typeof controllingField === "string" && controllingField.length > 0) {
113
+ // Controlling field is named on the SAME object as this dependent
114
+ // picklist (Salesforce only supports same-object controllers).
115
+ edges.push(makeEdge(ctx, fieldQname, REL_TYPES.DEPENDS_ON_FIELD, `CustomField:${apiName}.${controllingField}`, { reason: "dependent-picklist" }));
116
+ }
117
+ }
99
118
  // Formula refs on inline-fields path too (same regex pattern the
100
119
  // separate-file branch uses).
101
120
  if (formula) {
@@ -147,6 +166,21 @@ export class CustomObjectParser {
147
166
  m = re.exec(f.formula);
148
167
  }
149
168
  }
169
+ // W2-04 MCD gap-fill on the filesystem path (mirrors the inline path
170
+ // above). parseField exposes the unparsed XML as `raw`, which we
171
+ // probe for valueSet.valueSetName / valueSet.controllingField.
172
+ const rawField = f.raw;
173
+ const fsValueSet = rawField?.valueSet;
174
+ if (fsValueSet && typeof fsValueSet === "object") {
175
+ const valueSetName = fsValueSet.valueSetName;
176
+ if (typeof valueSetName === "string" && valueSetName.length > 0) {
177
+ edges.push(makeEdge(ctx, fieldQname, REL_TYPES.USES_GLOBAL_VALUE_SET, `GlobalValueSet:${valueSetName}`, { ...(f.type ? { fieldType: f.type } : {}) }));
178
+ }
179
+ const controllingField = fsValueSet.controllingField;
180
+ if (typeof controllingField === "string" && controllingField.length > 0) {
181
+ edges.push(makeEdge(ctx, fieldQname, REL_TYPES.DEPENDS_ON_FIELD, `CustomField:${apiName}.${controllingField}`, { reason: "dependent-picklist" }));
182
+ }
183
+ }
150
184
  }
151
185
  // Record types
152
186
  for (const [rtApi, rxml] of Object.entries(input.recordTypes ?? {})) {
@@ -1 +1 @@
1
- {"version":3,"file":"object.js","sourceRoot":"","sources":["../../../src/parsers/object/object.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"object.js","sourceRoot":"","sources":["../../../src/parsers/object/object.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import type { OrgId } from "@ryanstark24/sfgraph-shared";
2
+ import type { GraphStore } from "../../storage/interfaces.js";
3
+ import type { ParseContext } from "../contract.js";
4
+ /**
5
+ * Post-merge pass that annotates CANONICAL_OF pairs with a structural
6
+ * comparison. The cross-flavor resolver (cross-flavor-resolver.ts) tells us
7
+ * that `DataRaptor:Foo` and `OmniDataTransform:Foo` share a name; this pass
8
+ * tells us whether they actually *do the same thing* — useful when an org
9
+ * is mid-migration from Vlocity-CMT to OmniStudio-on-Core and a stakeholder
10
+ * needs to know which "same-named pair" is a true duplicate (cleanup
11
+ * candidate) versus a diverged implementation (needs manual reconciliation).
12
+ *
13
+ * Signature shape per node = sorted multiset of `(relType, normalisedDstLabel)`
14
+ * across the node's *outgoing* edges, with CANONICAL_OF self-edges excluded.
15
+ * Normalised dst label strips the `OmniDataTransform:` vs `DataRaptor:` etc.
16
+ * prefix family so the same downstream link is treated as the same in both
17
+ * flavours. We don't bake dst qname into the signature — that would treat
18
+ * "calls DR_Foo" and "calls OmniDataTransform:Foo" as different even when
19
+ * those two are themselves a CANONICAL_OF pair.
20
+ *
21
+ * Output: same CANONICAL_OF edges, but with `signaturesMatch:boolean` and
22
+ * `divergencePoints:string[]` attributes added. The edge identity
23
+ * (src/dst/relType) is unchanged, so mergeEdges idempotently updates the
24
+ * attributes in place.
25
+ *
26
+ * Runs on every ingest by default; disable via `disableOverlapDetect:
27
+ * true` in LiveIngestOpts if the false-positive recovery cost (a wrong
28
+ * "diverged" label sends an engineer chasing a non-issue) outweighs the
29
+ * migration-audit visibility for your use case.
30
+ */
31
+ export interface OverlapDetectOpts {
32
+ orgId: OrgId | string;
33
+ ctx: ParseContext;
34
+ /** When true, do not write annotated edges back to the store. */
35
+ dryRun?: boolean;
36
+ }
37
+ export interface OverlapDetectResult {
38
+ /** CANONICAL_OF pairs whose endpoints share an identical signature. */
39
+ matched: number;
40
+ /** CANONICAL_OF pairs whose signatures diverge. */
41
+ diverged: number;
42
+ /** CANONICAL_OF pairs whose endpoint nodes have no outgoing non-canonical
43
+ * edges on either side — comparison is vacuous, treated neither as
44
+ * matched nor diverged. */
45
+ empty: number;
46
+ /** Total edges annotated (one per CANONICAL_OF edge inspected). */
47
+ annotated: number;
48
+ }
49
+ export declare function detectOmnistudioOverlap(store: GraphStore, opts: OverlapDetectOpts): OverlapDetectResult;
50
+ //# sourceMappingURL=overlap-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overlap-detector.d.ts","sourceRoot":"","sources":["../../../src/parsers/omnistudio/overlap-detector.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAiB,MAAM,6BAA6B,CAAC;AAGxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGnD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC;IACtB,GAAG,EAAE,YAAY,CAAC;IAClB,iEAAiE;IACjE,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB;;gCAE4B;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;CACnB;AA6CD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,iBAAiB,GACtB,mBAAmB,CAsGrB"}
@@ -0,0 +1,129 @@
1
+ import { asOrgId } from "@ryanstark24/sfgraph-shared";
2
+ import { REL_TYPES } from "../../domain/index.js";
3
+ import { makeEdge } from "../common.js";
4
+ import { normalizeKey } from "../cross-flavor-resolver.js";
5
+ const FLAVOR_LABEL_PREFIXES = [
6
+ // Group the four pairs the cross-flavor resolver matches so they collapse
7
+ // to a single canonical token in the signature multiset.
8
+ [/^DataRaptor:|^OmniDataTransform:/i, "dr_or_odt"],
9
+ [/^IntegrationProcedure:|^OmniIntegrationProcedure:/i, "ip_or_oip"],
10
+ [/^OmniScript:|^OmniProcess:/i, "os_or_op"],
11
+ [/^VlocityCard:|^OmniUiCard:/i, "vc_or_ouc"],
12
+ ];
13
+ function normaliseLabel(dstQname) {
14
+ for (const [re, token] of FLAVOR_LABEL_PREFIXES) {
15
+ if (re.test(dstQname))
16
+ return token;
17
+ }
18
+ // Fall back to the raw label prefix (everything before the first `:`),
19
+ // lowercased. We do NOT include the dst's qualified name because two
20
+ // different OmniScripts that both happen to call a DataRaptor named "X"
21
+ // should produce the same signature shape if they call the same number of
22
+ // DataRaptors and the same number of other things.
23
+ const colon = dstQname.indexOf(":");
24
+ return (colon >= 0 ? dstQname.slice(0, colon) : dstQname).toLowerCase();
25
+ }
26
+ function buildSignature(edges) {
27
+ const counts = new Map();
28
+ for (const e of edges) {
29
+ if (e.relType === REL_TYPES.CANONICAL_OF)
30
+ continue;
31
+ const key = `${e.relType}|${normaliseLabel(String(e.dstQualifiedName))}`;
32
+ counts.set(key, (counts.get(key) ?? 0) + 1);
33
+ }
34
+ return counts;
35
+ }
36
+ function diffSignatures(a, b) {
37
+ const out = [];
38
+ const keys = new Set([...a.keys(), ...b.keys()]);
39
+ for (const k of [...keys].sort()) {
40
+ const av = a.get(k) ?? 0;
41
+ const bv = b.get(k) ?? 0;
42
+ if (av !== bv)
43
+ out.push(`${k}: ${av} vs ${bv}`);
44
+ }
45
+ return out;
46
+ }
47
+ export function detectOmnistudioOverlap(store, opts) {
48
+ const orgId = typeof opts.orgId === "string" ? asOrgId(opts.orgId) : opts.orgId;
49
+ const result = { matched: 0, diverged: 0, empty: 0, annotated: 0 };
50
+ // Walk every CANONICAL_OF edge. We deliberately read them via the
51
+ // listNodesByLabel + listEdgesFrom path rather than a wildcard scan —
52
+ // we already know the canonical pairs come from the four flavour
53
+ // labels listed in cross-flavor-resolver.PAIRS, so we iterate those
54
+ // and read each node's outgoing CANONICAL_OF edges to find the pair.
55
+ // This avoids scanning the whole edge table.
56
+ const FLAVOR_LABELS = [
57
+ "DataRaptor",
58
+ "IntegrationProcedure",
59
+ "OmniScript",
60
+ "VlocityCard",
61
+ ];
62
+ // Cache outgoing edges per node so we don't re-fetch them when a node
63
+ // appears in multiple CANONICAL_OF pairs (rare but possible if a name
64
+ // collides across flavours).
65
+ const outgoingCache = new Map();
66
+ const outgoingOf = (qname) => {
67
+ const key = String(qname);
68
+ const hit = outgoingCache.get(key);
69
+ if (hit)
70
+ return hit;
71
+ const all = store.listEdgesFrom(orgId, qname);
72
+ outgoingCache.set(key, all);
73
+ return all;
74
+ };
75
+ // Pairs we've already inspected (both directions of the same logical pair
76
+ // produce two CANONICAL_OF edges — annotate both but only count once).
77
+ const seenPairs = new Set();
78
+ const pendingEdges = [];
79
+ for (const label of FLAVOR_LABELS) {
80
+ const nodes = store.listNodesByLabel(orgId, label);
81
+ for (const n of nodes) {
82
+ const canonEdges = store
83
+ .listEdgesFrom(orgId, n.qualifiedName, REL_TYPES.CANONICAL_OF)
84
+ .filter((e) => e.relType === REL_TYPES.CANONICAL_OF);
85
+ for (const ce of canonEdges) {
86
+ const pairKey = [String(ce.srcQualifiedName), String(ce.dstQualifiedName)]
87
+ .sort()
88
+ .join("|");
89
+ const alreadySeen = seenPairs.has(pairKey);
90
+ const sigA = buildSignature(outgoingOf(ce.srcQualifiedName));
91
+ const sigB = buildSignature(outgoingOf(ce.dstQualifiedName));
92
+ const divergence = diffSignatures(sigA, sigB);
93
+ const signaturesMatch = divergence.length === 0;
94
+ const isEmpty = sigA.size === 0 && sigB.size === 0;
95
+ if (!alreadySeen) {
96
+ seenPairs.add(pairKey);
97
+ if (isEmpty)
98
+ result.empty += 1;
99
+ else if (signaturesMatch)
100
+ result.matched += 1;
101
+ else
102
+ result.diverged += 1;
103
+ }
104
+ // Re-emit the same CANONICAL_OF edge with the new attributes in
105
+ // BOTH directions. mergeEdges is idempotent on (orgId, src, dst,
106
+ // relType), so this updates the existing rows' attributes in
107
+ // place. We iterate Vlocity-side labels only (the FLAVOR_LABELS
108
+ // list above is intentionally one-sided), so without this both-
109
+ // direction emit the Omni→Vlocity edge would never be annotated.
110
+ const annotationAttrs = {
111
+ ...ce.attributes,
112
+ signaturesMatch,
113
+ divergencePoints: divergence,
114
+ overlapEvaluatedAt: opts.ctx.parseTimestamp,
115
+ };
116
+ pendingEdges.push(makeEdge(opts.ctx, String(ce.srcQualifiedName), REL_TYPES.CANONICAL_OF, String(ce.dstQualifiedName), annotationAttrs));
117
+ pendingEdges.push(makeEdge(opts.ctx, String(ce.dstQualifiedName), REL_TYPES.CANONICAL_OF, String(ce.srcQualifiedName), annotationAttrs));
118
+ result.annotated += 2;
119
+ }
120
+ }
121
+ }
122
+ if (!opts.dryRun && pendingEdges.length > 0) {
123
+ store.transaction(() => {
124
+ store.mergeEdges(pendingEdges);
125
+ });
126
+ }
127
+ return result;
128
+ }
129
+ //# sourceMappingURL=overlap-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overlap-detector.js","sourceRoot":"","sources":["../../../src/parsers/omnistudio/overlap-detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sarif.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sarif.test.d.ts","sourceRoot":"","sources":["../../../src/render/__tests__/sarif.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,129 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { emitSarif, lintSarifReport } from "../sarif.js";
3
+ describe("W3-01/W3-02: SARIF 2.1.0 emitter", () => {
4
+ it("emits a valid empty report when there are no findings", () => {
5
+ const report = emitSarif({ version: "1.1.8", findings: [] });
6
+ expect(report.version).toBe("2.1.0");
7
+ expect(report.runs.length).toBe(1);
8
+ expect(report.runs[0]?.tool.driver.rules).toEqual([]);
9
+ expect(report.runs[0]?.results).toEqual([]);
10
+ expect(lintSarifReport(report)).toEqual([]);
11
+ });
12
+ it("includes a rule definition only for ruleIds referenced by results", () => {
13
+ const findings = [
14
+ {
15
+ ruleId: "governor.soql-in-loop",
16
+ message: "Foo: SOQL inside loop",
17
+ level: "error",
18
+ location: { qualifiedName: "ApexClass:Foo" },
19
+ },
20
+ {
21
+ ruleId: "security.fls-gap",
22
+ message: "Bar: no FLS grants",
23
+ level: "warning",
24
+ location: { qualifiedName: "CustomField:Account.Bar__c" },
25
+ },
26
+ ];
27
+ const report = emitSarif({ version: "1.1.8", findings });
28
+ const rules = report.runs[0]?.tool.driver.rules ?? [];
29
+ expect(rules.map((r) => r.id).sort()).toEqual([
30
+ "governor.soql-in-loop",
31
+ "security.fls-gap",
32
+ ]);
33
+ // Other rules in the catalog (e.g. dead-code.unreferenced) NOT emitted
34
+ expect(rules.find((r) => r.id === "dead-code.unreferenced")).toBeUndefined();
35
+ });
36
+ it("populates physicalLocation when the finding has a sourceUri + line", () => {
37
+ const finding = {
38
+ ruleId: "governor.soql-in-loop",
39
+ message: "Foo: SOQL inside loop",
40
+ level: "error",
41
+ location: {
42
+ qualifiedName: "ApexClass:Foo",
43
+ sourceUri: "sf://org/ApexClass/Foo.cls",
44
+ line: 42,
45
+ column: 8,
46
+ },
47
+ };
48
+ const report = emitSarif({ version: "1.1.8", findings: [finding] });
49
+ const loc = report.runs[0]?.results[0]?.locations[0];
50
+ expect(loc?.physicalLocation?.artifactLocation.uri).toBe("sf://org/ApexClass/Foo.cls");
51
+ expect(loc?.physicalLocation?.region?.startLine).toBe(42);
52
+ expect(loc?.physicalLocation?.region?.startColumn).toBe(8);
53
+ expect(loc?.logicalLocations?.[0]?.fullyQualifiedName).toBe("ApexClass:Foo");
54
+ });
55
+ it("emits only logicalLocation when the finding has no source URI (graph-only finding)", () => {
56
+ const finding = {
57
+ ruleId: "graph.dangling-edge",
58
+ message: "missing dst",
59
+ level: "note",
60
+ location: { qualifiedName: "ApexClass:Caller" },
61
+ };
62
+ const report = emitSarif({ version: "1.1.8", findings: [finding] });
63
+ const loc = report.runs[0]?.results[0]?.locations[0];
64
+ expect(loc?.physicalLocation).toBeUndefined();
65
+ expect(loc?.logicalLocations?.[0]?.fullyQualifiedName).toBe("ApexClass:Caller");
66
+ // Still SARIF-valid: every result has at least one location entry.
67
+ expect(lintSarifReport(report)).toEqual([]);
68
+ });
69
+ it("emits a stub rule definition for unknown ruleIds (doesn't drop the result)", () => {
70
+ const finding = {
71
+ ruleId: "future.experimental",
72
+ message: "TBD",
73
+ level: "note",
74
+ location: { qualifiedName: "X:Y" },
75
+ };
76
+ const report = emitSarif({ version: "1.1.8", findings: [finding] });
77
+ const rule = report.runs[0]?.tool.driver.rules.find((r) => r.id === "future.experimental");
78
+ expect(rule).toBeDefined();
79
+ expect(rule?.fullDescription.text).toMatch(/No catalog entry/);
80
+ // No lint errors — the stub keeps the report valid.
81
+ expect(lintSarifReport(report)).toEqual([]);
82
+ });
83
+ it("preserves Finding.properties on SARIF result properties bag", () => {
84
+ const finding = {
85
+ ruleId: "governor.soql-in-loop",
86
+ message: "Foo: SOQL inside loop",
87
+ level: "error",
88
+ location: { qualifiedName: "ApexClass:Foo" },
89
+ properties: { evidence: "attribute hasSoqlInLoop=true", count: 3 },
90
+ };
91
+ const report = emitSarif({ version: "1.1.8", findings: [finding] });
92
+ expect(report.runs[0]?.results[0]?.properties).toEqual({
93
+ evidence: "attribute hasSoqlInLoop=true",
94
+ count: 3,
95
+ });
96
+ });
97
+ it("lintSarifReport flags results that reference an undefined ruleId", () => {
98
+ // Manually construct an invalid report (bypassing emitSarif which fixes
99
+ // this for us) to exercise the lint check.
100
+ const report = {
101
+ $schema: "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json",
102
+ version: "2.1.0",
103
+ runs: [
104
+ {
105
+ tool: {
106
+ driver: {
107
+ name: "sfgraph",
108
+ version: "1.1.8",
109
+ informationUri: "https://example.test",
110
+ rules: [], // empty
111
+ },
112
+ },
113
+ results: [
114
+ {
115
+ ruleId: "governor.soql-in-loop",
116
+ level: "error",
117
+ message: { text: "x" },
118
+ locations: [{ logicalLocations: [{ fullyQualifiedName: "X", kind: "module" }] }],
119
+ },
120
+ ],
121
+ },
122
+ ],
123
+ };
124
+ const errors = lintSarifReport(report);
125
+ expect(errors.length).toBeGreaterThan(0);
126
+ expect(errors.some((e) => e.includes("governor.soql-in-loop"))).toBe(true);
127
+ });
128
+ });
129
+ //# sourceMappingURL=sarif.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sarif.test.js","sourceRoot":"","sources":["../../../src/render/__tests__/sarif.test.ts"],"names":[],"mappings":"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"}