@ryanstark24/sfgraph-core 1.1.8 → 1.4.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/dist/analyze/__tests__/audit-graph.test.js +79 -0
- package/dist/analyze/__tests__/audit-graph.test.js.map +1 -1
- package/dist/analyze/__tests__/edge-filters.test.d.ts +2 -0
- package/dist/analyze/__tests__/edge-filters.test.d.ts.map +1 -0
- package/dist/analyze/__tests__/edge-filters.test.js +66 -0
- package/dist/analyze/__tests__/edge-filters.test.js.map +1 -0
- package/dist/analyze/__tests__/find-nodes.test.d.ts +2 -0
- package/dist/analyze/__tests__/find-nodes.test.d.ts.map +1 -0
- package/dist/analyze/__tests__/find-nodes.test.js +129 -0
- package/dist/analyze/__tests__/find-nodes.test.js.map +1 -0
- package/dist/analyze/__tests__/findings.test.d.ts +2 -0
- package/dist/analyze/__tests__/findings.test.d.ts.map +1 -0
- package/dist/analyze/__tests__/findings.test.js +100 -0
- package/dist/analyze/__tests__/findings.test.js.map +1 -0
- package/dist/analyze/__tests__/governor-risks-detection.test.js +90 -0
- package/dist/analyze/__tests__/governor-risks-detection.test.js.map +1 -1
- package/dist/analyze/__tests__/security-fls-filter.test.d.ts +2 -0
- package/dist/analyze/__tests__/security-fls-filter.test.d.ts.map +1 -0
- package/dist/analyze/__tests__/security-fls-filter.test.js +23 -0
- package/dist/analyze/__tests__/security-fls-filter.test.js.map +1 -0
- package/dist/analyze/audit-graph.d.ts +26 -2
- package/dist/analyze/audit-graph.d.ts.map +1 -1
- package/dist/analyze/audit-graph.js +52 -5
- package/dist/analyze/audit-graph.js.map +1 -1
- package/dist/analyze/dependencies.d.ts +2 -2
- package/dist/analyze/dependencies.d.ts.map +1 -1
- package/dist/analyze/dependencies.js +9 -3
- package/dist/analyze/dependencies.js.map +1 -1
- package/dist/analyze/dependents.d.ts +6 -1
- package/dist/analyze/dependents.d.ts.map +1 -1
- package/dist/analyze/dependents.js +12 -2
- package/dist/analyze/dependents.js.map +1 -1
- package/dist/analyze/edge-filters.d.ts +37 -0
- package/dist/analyze/edge-filters.d.ts.map +1 -0
- package/dist/analyze/edge-filters.js +51 -0
- package/dist/analyze/edge-filters.js.map +1 -0
- package/dist/analyze/find-nodes.d.ts +38 -0
- package/dist/analyze/find-nodes.d.ts.map +1 -0
- package/dist/analyze/find-nodes.js +51 -0
- package/dist/analyze/find-nodes.js.map +1 -0
- package/dist/analyze/findings.d.ts +86 -0
- package/dist/analyze/findings.d.ts.map +1 -0
- package/dist/analyze/findings.js +141 -0
- package/dist/analyze/findings.js.map +1 -0
- package/dist/analyze/index.d.ts +2 -0
- package/dist/analyze/index.d.ts.map +1 -1
- package/dist/analyze/index.js +2 -0
- package/dist/analyze/index.js.map +1 -1
- package/dist/analyze/populate.d.ts.map +1 -1
- package/dist/analyze/populate.js +55 -10
- package/dist/analyze/populate.js.map +1 -1
- package/dist/analyze/security.d.ts +15 -0
- package/dist/analyze/security.d.ts.map +1 -1
- package/dist/analyze/security.js +59 -3
- package/dist/analyze/security.js.map +1 -1
- package/dist/analyze/wip-impact.d.ts.map +1 -1
- package/dist/analyze/wip-impact.js +12 -2
- package/dist/analyze/wip-impact.js.map +1 -1
- package/dist/domain/edge-fact.d.ts +25 -0
- package/dist/domain/edge-fact.d.ts.map +1 -1
- package/dist/domain/metadata-category.d.ts +1 -0
- package/dist/domain/metadata-category.d.ts.map +1 -1
- package/dist/domain/metadata-category.js +1 -0
- package/dist/domain/metadata-category.js.map +1 -1
- package/dist/domain/rel-types.d.ts +4 -0
- package/dist/domain/rel-types.d.ts.map +1 -1
- package/dist/domain/rel-types.js +7 -0
- package/dist/domain/rel-types.js.map +1 -1
- package/dist/embedding/__tests__/embed.test.d.ts +2 -0
- package/dist/embedding/__tests__/embed.test.d.ts.map +1 -0
- package/dist/embedding/__tests__/embed.test.js +72 -0
- package/dist/embedding/__tests__/embed.test.js.map +1 -0
- package/dist/embedding/embed.d.ts.map +1 -1
- package/dist/embedding/embed.js +14 -1
- package/dist/embedding/embed.js.map +1 -1
- package/dist/extractors/interfaces/metadata-source.d.ts +11 -0
- package/dist/extractors/interfaces/metadata-source.d.ts.map +1 -1
- package/dist/extractors/live-org/__tests__/bulk-retrieve.test.js.map +1 -1
- package/dist/extractors/live-org/__tests__/custom-settings.test.d.ts +2 -0
- package/dist/extractors/live-org/__tests__/custom-settings.test.d.ts.map +1 -0
- package/dist/extractors/live-org/__tests__/custom-settings.test.js +79 -0
- package/dist/extractors/live-org/__tests__/custom-settings.test.js.map +1 -0
- package/dist/extractors/live-org/__tests__/extractor-enrichment.test.js +70 -8
- package/dist/extractors/live-org/__tests__/extractor-enrichment.test.js.map +1 -1
- package/dist/extractors/live-org/__tests__/liveness.test.d.ts +2 -0
- package/dist/extractors/live-org/__tests__/liveness.test.d.ts.map +1 -0
- package/dist/extractors/live-org/__tests__/liveness.test.js +148 -0
- package/dist/extractors/live-org/__tests__/liveness.test.js.map +1 -0
- package/dist/extractors/live-org/__tests__/mcd-baseline.test.d.ts +2 -0
- package/dist/extractors/live-org/__tests__/mcd-baseline.test.d.ts.map +1 -0
- package/dist/extractors/live-org/__tests__/mcd-baseline.test.js +177 -0
- package/dist/extractors/live-org/__tests__/mcd-baseline.test.js.map +1 -0
- package/dist/extractors/live-org/__tests__/metadata-read-batch.test.d.ts +2 -0
- package/dist/extractors/live-org/__tests__/metadata-read-batch.test.d.ts.map +1 -0
- package/dist/extractors/live-org/__tests__/metadata-read-batch.test.js +75 -0
- package/dist/extractors/live-org/__tests__/metadata-read-batch.test.js.map +1 -0
- package/dist/extractors/live-org/__tests__/omnistudio-retrieve.test.d.ts +2 -0
- package/dist/extractors/live-org/__tests__/omnistudio-retrieve.test.d.ts.map +1 -0
- package/dist/extractors/live-org/__tests__/omnistudio-retrieve.test.js +135 -0
- package/dist/extractors/live-org/__tests__/omnistudio-retrieve.test.js.map +1 -0
- package/dist/extractors/live-org/__tests__/pools.test.js +4 -1
- package/dist/extractors/live-org/__tests__/pools.test.js.map +1 -1
- package/dist/extractors/live-org/__tests__/rate-limit.test.js +1 -6
- package/dist/extractors/live-org/__tests__/rate-limit.test.js.map +1 -1
- package/dist/extractors/live-org/__tests__/soql-rebatch.test.d.ts +2 -0
- package/dist/extractors/live-org/__tests__/soql-rebatch.test.d.ts.map +1 -0
- package/dist/extractors/live-org/__tests__/soql-rebatch.test.js +118 -0
- package/dist/extractors/live-org/__tests__/soql-rebatch.test.js.map +1 -0
- package/dist/extractors/live-org/__tests__/stop-waiting.test.d.ts +2 -0
- package/dist/extractors/live-org/__tests__/stop-waiting.test.d.ts.map +1 -0
- package/dist/extractors/live-org/__tests__/stop-waiting.test.js +243 -0
- package/dist/extractors/live-org/__tests__/stop-waiting.test.js.map +1 -0
- package/dist/extractors/live-org/__tests__/vlocity-runner.test.js +27 -0
- package/dist/extractors/live-org/__tests__/vlocity-runner.test.js.map +1 -1
- package/dist/extractors/live-org/__tests__/watchdog-budgets.test.d.ts +2 -0
- package/dist/extractors/live-org/__tests__/watchdog-budgets.test.d.ts.map +1 -0
- package/dist/extractors/live-org/__tests__/watchdog-budgets.test.js +40 -0
- package/dist/extractors/live-org/__tests__/watchdog-budgets.test.js.map +1 -0
- package/dist/extractors/live-org/__tests__/wedge-isolation.test.d.ts +2 -0
- package/dist/extractors/live-org/__tests__/wedge-isolation.test.d.ts.map +1 -0
- package/dist/extractors/live-org/__tests__/wedge-isolation.test.js +270 -0
- package/dist/extractors/live-org/__tests__/wedge-isolation.test.js.map +1 -0
- package/dist/extractors/live-org/bulk-retrieve.d.ts +176 -0
- package/dist/extractors/live-org/bulk-retrieve.d.ts.map +1 -1
- package/dist/extractors/live-org/bulk-retrieve.js +509 -71
- package/dist/extractors/live-org/bulk-retrieve.js.map +1 -1
- package/dist/extractors/live-org/capabilities.d.ts.map +1 -1
- package/dist/extractors/live-org/capabilities.js.map +1 -1
- package/dist/extractors/live-org/extractors/__tests__/apex.test.d.ts +2 -0
- package/dist/extractors/live-org/extractors/__tests__/apex.test.d.ts.map +1 -0
- package/dist/extractors/live-org/extractors/__tests__/apex.test.js +73 -0
- package/dist/extractors/live-org/extractors/__tests__/apex.test.js.map +1 -0
- package/dist/extractors/live-org/extractors/__tests__/lwc.parallel.test.d.ts +2 -0
- package/dist/extractors/live-org/extractors/__tests__/lwc.parallel.test.d.ts.map +1 -0
- package/dist/extractors/live-org/extractors/__tests__/lwc.parallel.test.js +183 -0
- package/dist/extractors/live-org/extractors/__tests__/lwc.parallel.test.js.map +1 -0
- package/dist/extractors/live-org/extractors/apex.d.ts.map +1 -1
- package/dist/extractors/live-org/extractors/apex.js +76 -51
- package/dist/extractors/live-org/extractors/apex.js.map +1 -1
- package/dist/extractors/live-org/extractors/custom-settings.d.ts +3 -0
- package/dist/extractors/live-org/extractors/custom-settings.d.ts.map +1 -0
- package/dist/extractors/live-org/extractors/custom-settings.js +66 -0
- package/dist/extractors/live-org/extractors/custom-settings.js.map +1 -0
- package/dist/extractors/live-org/extractors/flow.d.ts.map +1 -1
- package/dist/extractors/live-org/extractors/flow.js.map +1 -1
- package/dist/extractors/live-org/extractors/generic-metadata.d.ts.map +1 -1
- package/dist/extractors/live-org/extractors/generic-metadata.js.map +1 -1
- package/dist/extractors/live-org/extractors/generic-sobject.js.map +1 -1
- package/dist/extractors/live-org/extractors/lwc.d.ts.map +1 -1
- package/dist/extractors/live-org/extractors/lwc.js +81 -41
- package/dist/extractors/live-org/extractors/lwc.js.map +1 -1
- package/dist/extractors/live-org/extractors/mcd-baseline.d.ts +60 -0
- package/dist/extractors/live-org/extractors/mcd-baseline.d.ts.map +1 -0
- package/dist/extractors/live-org/extractors/mcd-baseline.js +118 -0
- package/dist/extractors/live-org/extractors/mcd-baseline.js.map +1 -0
- package/dist/extractors/live-org/extractors/object.d.ts.map +1 -1
- package/dist/extractors/live-org/extractors/object.js.map +1 -1
- package/dist/extractors/live-org/extractors/omnistudio-retrieve.d.ts +23 -0
- package/dist/extractors/live-org/extractors/omnistudio-retrieve.d.ts.map +1 -0
- package/dist/extractors/live-org/extractors/omnistudio-retrieve.js +172 -0
- package/dist/extractors/live-org/extractors/omnistudio-retrieve.js.map +1 -0
- package/dist/extractors/live-org/extractors/omnistudio.d.ts +8 -1
- package/dist/extractors/live-org/extractors/omnistudio.d.ts.map +1 -1
- package/dist/extractors/live-org/extractors/omnistudio.js +59 -6
- package/dist/extractors/live-org/extractors/omnistudio.js.map +1 -1
- package/dist/extractors/live-org/rate-limit.d.ts +98 -15
- package/dist/extractors/live-org/rate-limit.d.ts.map +1 -1
- package/dist/extractors/live-org/rate-limit.js +278 -41
- package/dist/extractors/live-org/rate-limit.js.map +1 -1
- package/dist/extractors/live-org/vlocity/runner.d.ts +1 -1
- package/dist/extractors/live-org/vlocity/runner.d.ts.map +1 -1
- package/dist/extractors/live-org/vlocity/runner.js +49 -14
- package/dist/extractors/live-org/vlocity/runner.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/ingest/__tests__/config-values.test.d.ts +2 -0
- package/dist/ingest/__tests__/config-values.test.d.ts.map +1 -0
- package/dist/ingest/__tests__/config-values.test.js +65 -0
- package/dist/ingest/__tests__/config-values.test.js.map +1 -0
- package/dist/ingest/__tests__/full-sync-deletion.test.js +11 -4
- package/dist/ingest/__tests__/full-sync-deletion.test.js.map +1 -1
- package/dist/ingest/__tests__/live-ingest.detect-deletions-guard.test.d.ts +10 -0
- package/dist/ingest/__tests__/live-ingest.detect-deletions-guard.test.d.ts.map +1 -0
- package/dist/ingest/__tests__/live-ingest.detect-deletions-guard.test.js +251 -0
- package/dist/ingest/__tests__/live-ingest.detect-deletions-guard.test.js.map +1 -0
- package/dist/ingest/__tests__/live-ingest.test.js.map +1 -1
- package/dist/ingest/__tests__/multi-org-orchestrator.test.js +3 -0
- package/dist/ingest/__tests__/multi-org-orchestrator.test.js.map +1 -1
- package/dist/ingest/__tests__/parser-dispatch.test.d.ts +2 -0
- package/dist/ingest/__tests__/parser-dispatch.test.d.ts.map +1 -0
- package/dist/ingest/__tests__/parser-dispatch.test.js +55 -0
- package/dist/ingest/__tests__/parser-dispatch.test.js.map +1 -0
- package/dist/ingest/__tests__/vlocity-dispatch-integration.test.d.ts +2 -0
- package/dist/ingest/__tests__/vlocity-dispatch-integration.test.d.ts.map +1 -0
- package/dist/ingest/__tests__/vlocity-dispatch-integration.test.js +134 -0
- package/dist/ingest/__tests__/vlocity-dispatch-integration.test.js.map +1 -0
- package/dist/ingest/detect-deletions-guard.d.ts +45 -0
- package/dist/ingest/detect-deletions-guard.d.ts.map +1 -0
- package/dist/ingest/detect-deletions-guard.js +63 -0
- package/dist/ingest/detect-deletions-guard.js.map +1 -0
- package/dist/ingest/live-ingest.d.ts +86 -0
- package/dist/ingest/live-ingest.d.ts.map +1 -1
- package/dist/ingest/live-ingest.js +783 -449
- package/dist/ingest/live-ingest.js.map +1 -1
- package/dist/parsers/__tests__/datatransform-structured.test.d.ts +2 -0
- package/dist/parsers/__tests__/datatransform-structured.test.d.ts.map +1 -0
- package/dist/parsers/__tests__/datatransform-structured.test.js +147 -0
- package/dist/parsers/__tests__/datatransform-structured.test.js.map +1 -0
- package/dist/parsers/__tests__/edge-provenance.test.d.ts +2 -0
- package/dist/parsers/__tests__/edge-provenance.test.d.ts.map +1 -0
- package/dist/parsers/__tests__/edge-provenance.test.js +47 -0
- package/dist/parsers/__tests__/edge-provenance.test.js.map +1 -0
- package/dist/parsers/__tests__/lwc-bindings.test.js +78 -3
- package/dist/parsers/__tests__/lwc-bindings.test.js.map +1 -1
- package/dist/parsers/__tests__/mcd-gap-fills.test.d.ts +2 -0
- package/dist/parsers/__tests__/mcd-gap-fills.test.d.ts.map +1 -0
- package/dist/parsers/__tests__/mcd-gap-fills.test.js +75 -0
- package/dist/parsers/__tests__/mcd-gap-fills.test.js.map +1 -0
- package/dist/parsers/__tests__/object-inline-fields.test.js +2 -2
- package/dist/parsers/__tests__/object-inline-fields.test.js.map +1 -1
- package/dist/parsers/__tests__/omnistudio-overlap.test.d.ts +2 -0
- package/dist/parsers/__tests__/omnistudio-overlap.test.d.ts.map +1 -0
- package/dist/parsers/__tests__/omnistudio-overlap.test.js +163 -0
- package/dist/parsers/__tests__/omnistudio-overlap.test.js.map +1 -0
- package/dist/parsers/__tests__/omnistudio.golden.test.js +5 -6
- package/dist/parsers/__tests__/omnistudio.golden.test.js.map +1 -1
- package/dist/parsers/__tests__/reflection-walker.test.d.ts +2 -0
- package/dist/parsers/__tests__/reflection-walker.test.d.ts.map +1 -0
- package/dist/parsers/__tests__/reflection-walker.test.js +162 -0
- package/dist/parsers/__tests__/reflection-walker.test.js.map +1 -0
- package/dist/parsers/__tests__/vlocity.golden.test.js +9 -13
- package/dist/parsers/__tests__/vlocity.golden.test.js.map +1 -1
- package/dist/parsers/apex/__tests__/ast-extractor.test.js +64 -4
- package/dist/parsers/apex/__tests__/ast-extractor.test.js.map +1 -1
- package/dist/parsers/apex/__tests__/empty-body.test.d.ts +2 -0
- package/dist/parsers/apex/__tests__/empty-body.test.d.ts.map +1 -0
- package/dist/parsers/apex/__tests__/empty-body.test.js +40 -0
- package/dist/parsers/apex/__tests__/empty-body.test.js.map +1 -0
- package/dist/parsers/apex/__tests__/is-test-attribute.test.d.ts +2 -0
- package/dist/parsers/apex/__tests__/is-test-attribute.test.d.ts.map +1 -0
- package/dist/parsers/apex/__tests__/is-test-attribute.test.js +56 -0
- package/dist/parsers/apex/__tests__/is-test-attribute.test.js.map +1 -0
- package/dist/parsers/apex/__tests__/regex-arg-count.test.d.ts +2 -0
- package/dist/parsers/apex/__tests__/regex-arg-count.test.d.ts.map +1 -0
- package/dist/parsers/apex/__tests__/regex-arg-count.test.js +82 -0
- package/dist/parsers/apex/__tests__/regex-arg-count.test.js.map +1 -0
- package/dist/parsers/apex/__tests__/regex-inloop.test.d.ts +2 -0
- package/dist/parsers/apex/__tests__/regex-inloop.test.d.ts.map +1 -0
- package/dist/parsers/apex/__tests__/regex-inloop.test.js +70 -0
- package/dist/parsers/apex/__tests__/regex-inloop.test.js.map +1 -0
- package/dist/parsers/apex/arity-resolver.d.ts.map +1 -1
- package/dist/parsers/apex/arity-resolver.js.map +1 -1
- package/dist/parsers/apex/ast-extractor.d.ts.map +1 -1
- package/dist/parsers/apex/ast-extractor.js +33 -1
- package/dist/parsers/apex/ast-extractor.js.map +1 -1
- package/dist/parsers/apex/class.d.ts.map +1 -1
- package/dist/parsers/apex/class.js +162 -5
- package/dist/parsers/apex/class.js.map +1 -1
- package/dist/parsers/apex/trigger.d.ts.map +1 -1
- package/dist/parsers/apex/trigger.js +10 -0
- package/dist/parsers/apex/trigger.js.map +1 -1
- package/dist/parsers/common.d.ts +4 -1
- package/dist/parsers/common.d.ts.map +1 -1
- package/dist/parsers/common.js +15 -2
- package/dist/parsers/common.js.map +1 -1
- package/dist/parsers/flow/__tests__/invocable-resolver.test.js.map +1 -1
- package/dist/parsers/flow/invocable-resolver.d.ts.map +1 -1
- package/dist/parsers/flow/invocable-resolver.js.map +1 -1
- package/dist/parsers/generic/reflection-walker.d.ts +90 -0
- package/dist/parsers/generic/reflection-walker.d.ts.map +1 -0
- package/dist/parsers/generic/reflection-walker.js +193 -0
- package/dist/parsers/generic/reflection-walker.js.map +1 -0
- package/dist/parsers/lwc/html-visitor.d.ts.map +1 -1
- package/dist/parsers/lwc/html-visitor.js +82 -3
- package/dist/parsers/lwc/html-visitor.js.map +1 -1
- package/dist/parsers/lwc/js-visitor.d.ts.map +1 -1
- package/dist/parsers/lwc/js-visitor.js +6 -2
- package/dist/parsers/lwc/js-visitor.js.map +1 -1
- package/dist/parsers/object/object.d.ts.map +1 -1
- package/dist/parsers/object/object.js +35 -5
- package/dist/parsers/object/object.js.map +1 -1
- package/dist/parsers/omnistudio/data-transform.d.ts.map +1 -1
- package/dist/parsers/omnistudio/data-transform.js +39 -6
- package/dist/parsers/omnistudio/data-transform.js.map +1 -1
- package/dist/parsers/omnistudio/integration-procedure.d.ts.map +1 -1
- package/dist/parsers/omnistudio/integration-procedure.js +3 -2
- package/dist/parsers/omnistudio/integration-procedure.js.map +1 -1
- package/dist/parsers/omnistudio/overlap-detector.d.ts +50 -0
- package/dist/parsers/omnistudio/overlap-detector.d.ts.map +1 -0
- package/dist/parsers/omnistudio/overlap-detector.js +122 -0
- package/dist/parsers/omnistudio/overlap-detector.js.map +1 -0
- package/dist/parsers/omnistudio/process.d.ts.map +1 -1
- package/dist/parsers/omnistudio/process.js +3 -2
- package/dist/parsers/omnistudio/process.js.map +1 -1
- package/dist/parsers/omnistudio/ui-card.d.ts.map +1 -1
- package/dist/parsers/omnistudio/ui-card.js +3 -2
- package/dist/parsers/omnistudio/ui-card.js.map +1 -1
- package/dist/parsers/rules/custom-metadata-type.yml +7 -0
- package/dist/parsers/rules/custom-setting.yml +24 -0
- package/dist/parsers/vlocity/common.d.ts +16 -0
- package/dist/parsers/vlocity/common.d.ts.map +1 -1
- package/dist/parsers/vlocity/common.js +62 -0
- package/dist/parsers/vlocity/common.js.map +1 -1
- package/dist/parsers/vlocity/data-raptor.d.ts.map +1 -1
- package/dist/parsers/vlocity/data-raptor.js +43 -14
- package/dist/parsers/vlocity/data-raptor.js.map +1 -1
- package/dist/render/__tests__/sarif.test.d.ts +2 -0
- package/dist/render/__tests__/sarif.test.d.ts.map +1 -0
- package/dist/render/__tests__/sarif.test.js +126 -0
- package/dist/render/__tests__/sarif.test.js.map +1 -0
- package/dist/render/sarif.d.ts +94 -0
- package/dist/render/sarif.d.ts.map +1 -0
- package/dist/render/sarif.js +131 -0
- package/dist/render/sarif.js.map +1 -0
- package/dist/storage/__tests__/analysis-tables-migration.test.js +1 -1
- package/dist/storage/__tests__/graph-store.test.js +13 -0
- package/dist/storage/__tests__/graph-store.test.js.map +1 -1
- package/dist/storage/__tests__/migrations.test.js +4 -4
- package/dist/storage/__tests__/rename-stability.test.d.ts +2 -0
- package/dist/storage/__tests__/rename-stability.test.d.ts.map +1 -0
- package/dist/storage/__tests__/rename-stability.test.js +135 -0
- package/dist/storage/__tests__/rename-stability.test.js.map +1 -0
- package/dist/storage/__tests__/sync-generation.test.d.ts +2 -0
- package/dist/storage/__tests__/sync-generation.test.d.ts.map +1 -0
- package/dist/storage/__tests__/sync-generation.test.js +159 -0
- package/dist/storage/__tests__/sync-generation.test.js.map +1 -0
- package/dist/storage/index.d.ts +1 -0
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +1 -0
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/interfaces.d.ts +60 -0
- package/dist/storage/interfaces.d.ts.map +1 -1
- package/dist/storage/sqlite/graph-store.d.ts +21 -1
- package/dist/storage/sqlite/graph-store.d.ts.map +1 -1
- package/dist/storage/sqlite/graph-store.js +86 -0
- package/dist/storage/sqlite/graph-store.js.map +1 -1
- package/dist/storage/sqlite/migrations.d.ts.map +1 -1
- package/dist/storage/sqlite/migrations.js +38 -0
- package/dist/storage/sqlite/migrations.js.map +1 -1
- package/dist/storage/sqlite/rename-stability.d.ts +94 -0
- package/dist/storage/sqlite/rename-stability.d.ts.map +1 -0
- package/dist/storage/sqlite/rename-stability.js +92 -0
- package/dist/storage/sqlite/rename-stability.js.map +1 -0
- package/package.json +4 -1
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { METADATA_CATEGORY, REL_TYPES } from "../../domain/index.js";
|
|
2
2
|
import { makeEdge, stripNs } from "../common.js";
|
|
3
|
-
import {
|
|
3
|
+
import { asStructured, buildBaseNode, sha256, walk } from "../vlocity/common.js";
|
|
4
4
|
export class OmniIntegrationProcedureParser {
|
|
5
5
|
category = METADATA_CATEGORY.OMNI_INTEGRATION_PROCEDURE;
|
|
6
6
|
type = "OmniIntegrationProcedure";
|
|
7
7
|
async parse(input, ctx) {
|
|
8
8
|
const nodes = [];
|
|
9
9
|
const edges = [];
|
|
10
|
-
|
|
10
|
+
// SOQL path yields JSON; Metadata-API retrieve path yields raw XML.
|
|
11
|
+
const md = asStructured(input.metadata);
|
|
11
12
|
const hash = sha256(JSON.stringify(md));
|
|
12
13
|
const node = buildBaseNode({
|
|
13
14
|
ctx,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integration-procedure.js","sourceRoot":"","sources":["../../../src/parsers/omnistudio/integration-procedure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,iBAAiB,EAAiB,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACnG,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"integration-procedure.js","sourceRoot":"","sources":["../../../src/parsers/omnistudio/integration-procedure.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,CA+FrB"}
|
|
@@ -0,0 +1,122 @@
|
|
|
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 = ["DataRaptor", "IntegrationProcedure", "OmniScript", "VlocityCard"];
|
|
57
|
+
// Cache outgoing edges per node so we don't re-fetch them when a node
|
|
58
|
+
// appears in multiple CANONICAL_OF pairs (rare but possible if a name
|
|
59
|
+
// collides across flavours).
|
|
60
|
+
const outgoingCache = new Map();
|
|
61
|
+
const outgoingOf = (qname) => {
|
|
62
|
+
const key = String(qname);
|
|
63
|
+
const hit = outgoingCache.get(key);
|
|
64
|
+
if (hit)
|
|
65
|
+
return hit;
|
|
66
|
+
const all = store.listEdgesFrom(orgId, qname);
|
|
67
|
+
outgoingCache.set(key, all);
|
|
68
|
+
return all;
|
|
69
|
+
};
|
|
70
|
+
// Pairs we've already inspected (both directions of the same logical pair
|
|
71
|
+
// produce two CANONICAL_OF edges — annotate both but only count once).
|
|
72
|
+
const seenPairs = new Set();
|
|
73
|
+
const pendingEdges = [];
|
|
74
|
+
for (const label of FLAVOR_LABELS) {
|
|
75
|
+
const nodes = store.listNodesByLabel(orgId, label);
|
|
76
|
+
for (const n of nodes) {
|
|
77
|
+
const canonEdges = store
|
|
78
|
+
.listEdgesFrom(orgId, n.qualifiedName, REL_TYPES.CANONICAL_OF)
|
|
79
|
+
.filter((e) => e.relType === REL_TYPES.CANONICAL_OF);
|
|
80
|
+
for (const ce of canonEdges) {
|
|
81
|
+
const pairKey = [String(ce.srcQualifiedName), String(ce.dstQualifiedName)].sort().join("|");
|
|
82
|
+
const alreadySeen = seenPairs.has(pairKey);
|
|
83
|
+
const sigA = buildSignature(outgoingOf(ce.srcQualifiedName));
|
|
84
|
+
const sigB = buildSignature(outgoingOf(ce.dstQualifiedName));
|
|
85
|
+
const divergence = diffSignatures(sigA, sigB);
|
|
86
|
+
const signaturesMatch = divergence.length === 0;
|
|
87
|
+
const isEmpty = sigA.size === 0 && sigB.size === 0;
|
|
88
|
+
if (!alreadySeen) {
|
|
89
|
+
seenPairs.add(pairKey);
|
|
90
|
+
if (isEmpty)
|
|
91
|
+
result.empty += 1;
|
|
92
|
+
else if (signaturesMatch)
|
|
93
|
+
result.matched += 1;
|
|
94
|
+
else
|
|
95
|
+
result.diverged += 1;
|
|
96
|
+
}
|
|
97
|
+
// Re-emit the same CANONICAL_OF edge with the new attributes in
|
|
98
|
+
// BOTH directions. mergeEdges is idempotent on (orgId, src, dst,
|
|
99
|
+
// relType), so this updates the existing rows' attributes in
|
|
100
|
+
// place. We iterate Vlocity-side labels only (the FLAVOR_LABELS
|
|
101
|
+
// list above is intentionally one-sided), so without this both-
|
|
102
|
+
// direction emit the Omni→Vlocity edge would never be annotated.
|
|
103
|
+
const annotationAttrs = {
|
|
104
|
+
...ce.attributes,
|
|
105
|
+
signaturesMatch,
|
|
106
|
+
divergencePoints: divergence,
|
|
107
|
+
overlapEvaluatedAt: opts.ctx.parseTimestamp,
|
|
108
|
+
};
|
|
109
|
+
pendingEdges.push(makeEdge(opts.ctx, String(ce.srcQualifiedName), REL_TYPES.CANONICAL_OF, String(ce.dstQualifiedName), annotationAttrs));
|
|
110
|
+
pendingEdges.push(makeEdge(opts.ctx, String(ce.dstQualifiedName), REL_TYPES.CANONICAL_OF, String(ce.srcQualifiedName), annotationAttrs));
|
|
111
|
+
result.annotated += 2;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
if (!opts.dryRun && pendingEdges.length > 0) {
|
|
116
|
+
store.transaction(() => {
|
|
117
|
+
store.mergeEdges(pendingEdges);
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
return result;
|
|
121
|
+
}
|
|
122
|
+
//# 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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../../src/parsers/omnistudio/process.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAGxE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,iBAAkB,YAAW,MAAM,CAAC,gBAAgB,CAAC;IAChE,QAAQ,CAAC,QAAQ,gBAAkC;IACnD,QAAQ,CAAC,IAAI,iBAAiB;IAExB,KAAK,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../../src/parsers/omnistudio/process.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAGxE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,iBAAkB,YAAW,MAAM,CAAC,gBAAgB,CAAC;IAChE,QAAQ,CAAC,QAAQ,gBAAkC;IACnD,QAAQ,CAAC,IAAI,iBAAiB;IAExB,KAAK,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;CAyE9E"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { METADATA_CATEGORY, REL_TYPES } from "../../domain/index.js";
|
|
2
2
|
import { makeEdge, stripNs } from "../common.js";
|
|
3
|
-
import {
|
|
3
|
+
import { asStructured, buildBaseNode, sha256, walk } from "../vlocity/common.js";
|
|
4
4
|
export class OmniProcessParser {
|
|
5
5
|
category = METADATA_CATEGORY.OMNI_PROCESS;
|
|
6
6
|
type = "OmniProcess";
|
|
7
7
|
async parse(input, ctx) {
|
|
8
8
|
const nodes = [];
|
|
9
9
|
const edges = [];
|
|
10
|
-
|
|
10
|
+
// SOQL path yields JSON; Metadata-API retrieve path yields raw XML.
|
|
11
|
+
const md = asStructured(input.metadata);
|
|
11
12
|
const hash = sha256(JSON.stringify(md));
|
|
12
13
|
const node = buildBaseNode({
|
|
13
14
|
ctx,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../../src/parsers/omnistudio/process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,iBAAiB,EAAiB,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACnG,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../../src/parsers/omnistudio/process.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-card.d.ts","sourceRoot":"","sources":["../../../src/parsers/omnistudio/ui-card.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAGxE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,gBAAiB,YAAW,MAAM,CAAC,eAAe,CAAC;IAC9D,QAAQ,CAAC,QAAQ,eAAkC;IACnD,QAAQ,CAAC,IAAI,gBAAgB;IAEvB,KAAK,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"ui-card.d.ts","sourceRoot":"","sources":["../../../src/parsers/omnistudio/ui-card.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAGxE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,gBAAiB,YAAW,MAAM,CAAC,eAAe,CAAC;IAC9D,QAAQ,CAAC,QAAQ,eAAkC;IACnD,QAAQ,CAAC,IAAI,gBAAgB;IAEvB,KAAK,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;CAkD7E"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { METADATA_CATEGORY, REL_TYPES } from "../../domain/index.js";
|
|
2
2
|
import { makeEdge, stripNs } from "../common.js";
|
|
3
|
-
import {
|
|
3
|
+
import { asStructured, buildBaseNode, sha256, walk } from "../vlocity/common.js";
|
|
4
4
|
export class OmniUiCardParser {
|
|
5
5
|
category = METADATA_CATEGORY.OMNI_UI_CARD;
|
|
6
6
|
type = "OmniUiCard";
|
|
7
7
|
async parse(input, ctx) {
|
|
8
8
|
const nodes = [];
|
|
9
9
|
const edges = [];
|
|
10
|
-
|
|
10
|
+
// SOQL path yields JSON; Metadata-API retrieve path yields raw XML.
|
|
11
|
+
const md = asStructured(input.metadata);
|
|
11
12
|
const hash = sha256(JSON.stringify(md));
|
|
12
13
|
const node = buildBaseNode({
|
|
13
14
|
ctx,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-card.js","sourceRoot":"","sources":["../../../src/parsers/omnistudio/ui-card.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,iBAAiB,EAAiB,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACnG,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ui-card.js","sourceRoot":"","sources":["../../../src/parsers/omnistudio/ui-card.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,13 @@ nodes:
|
|
|
11
11
|
qname: "CustomMetadataRecord:${record.name}"
|
|
12
12
|
props:
|
|
13
13
|
name: "${record.name}"
|
|
14
|
+
# Capture the record's field VALUES (metadata.read returns a <values>
|
|
15
|
+
# array of {field,value}) so the graph shows what the config resolves to
|
|
16
|
+
# — endpoints, matching keys, toggles — not just that the record exists.
|
|
17
|
+
# buildEmbedText (live-ingest) folds these into the node's embedding so
|
|
18
|
+
# find_similar matches on the values, and they're inspectable via
|
|
19
|
+
# find_nodes/analyze. `| raw` returns the array unmodified.
|
|
20
|
+
values: "${record.values | raw}"
|
|
14
21
|
|
|
15
22
|
- label: CustomMetadataType
|
|
16
23
|
when: "${record.kind != 'record' && !split(toString(record.name),'.')[1]}"
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
type: CustomSetting
|
|
2
|
+
category: CustomSetting
|
|
3
|
+
input: json
|
|
4
|
+
applies_when:
|
|
5
|
+
always: true
|
|
6
|
+
|
|
7
|
+
nodes:
|
|
8
|
+
- label: CustomSetting
|
|
9
|
+
when: "${record.name}"
|
|
10
|
+
qname: "CustomSetting:${record.name}"
|
|
11
|
+
props:
|
|
12
|
+
name: "${record.name}"
|
|
13
|
+
rowCount: "${record.rowCount | raw}"
|
|
14
|
+
# The actual setting ROWS (org-default + hierarchy values). buildEmbedText
|
|
15
|
+
# folds these into the node embedding so find_similar matches on setting
|
|
16
|
+
# values (e.g. "integration endpoint setting"); inspectable via find_nodes.
|
|
17
|
+
customSettingRows: "${record.rows | raw}"
|
|
18
|
+
|
|
19
|
+
edges:
|
|
20
|
+
# Link the setting's data node to its schema (CustomObject) node.
|
|
21
|
+
- relType: INSTANCE_OF
|
|
22
|
+
when: "${record.name}"
|
|
23
|
+
src: "CustomSetting:${record.name}"
|
|
24
|
+
dst: "CustomObject:${record.name}"
|
|
@@ -3,6 +3,22 @@ import { REL_TYPES } from "../../domain/index.js";
|
|
|
3
3
|
import type { ParseContext } from "../contract.js";
|
|
4
4
|
export declare function sha256(s: string): string;
|
|
5
5
|
export declare function asJson(input: unknown): any;
|
|
6
|
+
/**
|
|
7
|
+
* Like asJson but also accepts Metadata-API XML payloads (the OmniStudio
|
|
8
|
+
* retrieve path yields raw XML strings; the SOQL path yields JSON). For XML
|
|
9
|
+
* the single root element is unwrapped so callers see the same top-level
|
|
10
|
+
* shape regardless of source.
|
|
11
|
+
*/
|
|
12
|
+
export declare function asStructured(input: unknown): any;
|
|
13
|
+
/** True when a DataRaptor / DataTransform mapping side names a real
|
|
14
|
+
* Salesforce SObject rather than the JSON/XML/custom payload side. */
|
|
15
|
+
export declare function isSObjectName(name: unknown): name is string;
|
|
16
|
+
/** True when a mapping-side field name is a plain field API name (JSON-path
|
|
17
|
+
* sides use colon-separated paths like `Details:AccountNumber`). */
|
|
18
|
+
export declare function isPlainFieldName(name: unknown): name is string;
|
|
19
|
+
/** Case-tolerant property lookup: SOQL rows use UpperCamel field names
|
|
20
|
+
* (`InputFieldName`), Metadata-API XML uses lowerCamel (`inputFieldName`). */
|
|
21
|
+
export declare function pickProp(obj: any, name: string): unknown;
|
|
6
22
|
/**
|
|
7
23
|
* Walk an arbitrary object tree and invoke `visit` on every value (objects/arrays/scalars).
|
|
8
24
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/parsers/vlocity/common.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAY,QAAQ,EAAW,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/parsers/vlocity/common.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAY,QAAQ,EAAW,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGlD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAExC;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,GAAG,CAS1C;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,GAAG,CAuBhD;AAKD;uEACuE;AACvE,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,MAAM,CAI3D;AAED;qEACqE;AACrE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,MAAM,CAI9D;AAED;+EAC+E;AAC/E,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAKxD;AAED;;GAEG;AACH,wBAAgB,IAAI,CAClB,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,IAAI,GAChE,IAAI,CAaN;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAID,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,EAAE,CAgBzD;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,YAAY,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,GAAG,CAAC;IACT,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,QAAQ,CAWvD;AAED,OAAO,EAAE,SAAS,EAAE,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
2
|
import { REL_TYPES } from "../../domain/index.js";
|
|
3
|
+
import { xmlParser } from "../_xml-helpers.js";
|
|
3
4
|
import { makeEdge, makeNode, stripNs } from "../common.js";
|
|
4
5
|
export function sha256(s) {
|
|
5
6
|
return createHash("sha256").update(s).digest("hex");
|
|
@@ -15,6 +16,67 @@ export function asJson(input) {
|
|
|
15
16
|
}
|
|
16
17
|
return input ?? {};
|
|
17
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Like asJson but also accepts Metadata-API XML payloads (the OmniStudio
|
|
21
|
+
* retrieve path yields raw XML strings; the SOQL path yields JSON). For XML
|
|
22
|
+
* the single root element is unwrapped so callers see the same top-level
|
|
23
|
+
* shape regardless of source.
|
|
24
|
+
*/
|
|
25
|
+
export function asStructured(input) {
|
|
26
|
+
if (typeof input === "string") {
|
|
27
|
+
const s = input.trim();
|
|
28
|
+
if (s.startsWith("{") || s.startsWith("[")) {
|
|
29
|
+
try {
|
|
30
|
+
return JSON.parse(s);
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return {};
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
if (s.startsWith("<")) {
|
|
37
|
+
try {
|
|
38
|
+
const doc = xmlParser.parse(s);
|
|
39
|
+
const roots = Object.keys(doc).filter((k) => k !== "?xml");
|
|
40
|
+
if (roots.length === 1)
|
|
41
|
+
return doc[roots[0]] ?? {};
|
|
42
|
+
return doc;
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return {};
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return {};
|
|
49
|
+
}
|
|
50
|
+
return input ?? {};
|
|
51
|
+
}
|
|
52
|
+
const NON_SOBJECT_SIDES = new Set(["", "json", "xml", "custom", "none", "null"]);
|
|
53
|
+
const SOBJECT_NAME_RE = /^[A-Za-z][A-Za-z0-9_]*(?:__(?:c|mdt|e|b|x))?$/;
|
|
54
|
+
/** True when a DataRaptor / DataTransform mapping side names a real
|
|
55
|
+
* Salesforce SObject rather than the JSON/XML/custom payload side. */
|
|
56
|
+
export function isSObjectName(name) {
|
|
57
|
+
if (typeof name !== "string")
|
|
58
|
+
return false;
|
|
59
|
+
const n = name.trim();
|
|
60
|
+
return !NON_SOBJECT_SIDES.has(n.toLowerCase()) && SOBJECT_NAME_RE.test(n);
|
|
61
|
+
}
|
|
62
|
+
/** True when a mapping-side field name is a plain field API name (JSON-path
|
|
63
|
+
* sides use colon-separated paths like `Details:AccountNumber`). */
|
|
64
|
+
export function isPlainFieldName(name) {
|
|
65
|
+
if (typeof name !== "string")
|
|
66
|
+
return false;
|
|
67
|
+
const n = name.trim();
|
|
68
|
+
return n.length > 0 && SOBJECT_NAME_RE.test(n);
|
|
69
|
+
}
|
|
70
|
+
/** Case-tolerant property lookup: SOQL rows use UpperCamel field names
|
|
71
|
+
* (`InputFieldName`), Metadata-API XML uses lowerCamel (`inputFieldName`). */
|
|
72
|
+
export function pickProp(obj, name) {
|
|
73
|
+
if (!obj || typeof obj !== "object")
|
|
74
|
+
return undefined;
|
|
75
|
+
if (name in obj)
|
|
76
|
+
return obj[name];
|
|
77
|
+
const lower = name.charAt(0).toLowerCase() + name.slice(1);
|
|
78
|
+
return obj[lower];
|
|
79
|
+
}
|
|
18
80
|
/**
|
|
19
81
|
* Walk an arbitrary object tree and invoke `visit` on every value (objects/arrays/scalars).
|
|
20
82
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/parsers/vlocity/common.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/parsers/vlocity/common.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-raptor.d.ts","sourceRoot":"","sources":["../../../src/parsers/vlocity/data-raptor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"data-raptor.d.ts","sourceRoot":"","sources":["../../../src/parsers/vlocity/data-raptor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAWxE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,gBAAiB,YAAW,MAAM,CAAC,eAAe,CAAC;IAC9D,QAAQ,CAAC,QAAQ,sBAAwC;IACzD,QAAQ,CAAC,IAAI,uBAAuB;IAE9B,KAAK,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;CAoE7E"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { METADATA_CATEGORY, REL_TYPES } from "../../domain/index.js";
|
|
2
2
|
import { makeEdge } from "../common.js";
|
|
3
|
-
import { asJson, buildBaseNode, extractFieldRefs, sha256 } from "./common.js";
|
|
3
|
+
import { asJson, buildBaseNode, extractFieldRefs, isPlainFieldName, isSObjectName, pickProp, sha256, } from "./common.js";
|
|
4
4
|
export class DataRaptorParser {
|
|
5
5
|
category = METADATA_CATEGORY.VLOCITY_DATARAPTOR;
|
|
6
6
|
type = "VlocityDataRaptor";
|
|
@@ -20,26 +20,55 @@ export class DataRaptorParser {
|
|
|
20
20
|
nodes.push(node);
|
|
21
21
|
const src = node.qualifiedName;
|
|
22
22
|
const type = String(dp.Type ?? dp.type ?? "");
|
|
23
|
-
const inputSObject = String(dp.InputSObjectType ?? dp.inputSObjectType ?? "");
|
|
24
|
-
const outputSObject = String(dp.OutputSObjectType ?? dp.outputSObjectType ?? "");
|
|
25
|
-
// Extract source/destination field refs
|
|
26
|
-
const json = JSON.stringify(dp);
|
|
27
|
-
const refs = extractFieldRefs(json);
|
|
28
|
-
const readType = type === "Extract" || type === "Turbo";
|
|
29
23
|
const writeType = type === "Load";
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
24
|
+
const fieldRel = writeType ? REL_TYPES.DR_WRITES_FIELD : REL_TYPES.DR_READS_FIELD;
|
|
25
|
+
// DRMapItem children (attached as `elements` by the Vlocity runner's
|
|
26
|
+
// child fetch) carry the mapping structurally: one side names a real
|
|
27
|
+
// SObject + field, the other side is a JSON/XML path (colon-separated,
|
|
28
|
+
// e.g. `Details:AccountNumber`). For Extract/Turbo the Salesforce side
|
|
29
|
+
// is the Interface pair; for Load it is the Domain pair — but checking
|
|
30
|
+
// both sides independently is direction-agnostic and survives map
|
|
31
|
+
// variants, because the payload side never passes isSObjectName.
|
|
32
|
+
const seenFields = new Set();
|
|
33
|
+
const seenObjects = new Set();
|
|
34
|
+
const elements = Array.isArray(dp.elements) ? dp.elements : [];
|
|
35
|
+
for (const el of elements) {
|
|
36
|
+
const sides = [
|
|
37
|
+
[pickProp(el, "InterfaceObjectName"), pickProp(el, "InterfaceFieldAPIName")],
|
|
38
|
+
[pickProp(el, "DomainObjectAPIName"), pickProp(el, "DomainObjectFieldAPIName")],
|
|
39
|
+
[pickProp(el, "LookupDomainObjectName"), pickProp(el, "LookupDomainObjectFieldName")],
|
|
40
|
+
];
|
|
41
|
+
for (const [obj, field] of sides) {
|
|
42
|
+
if (!isSObjectName(obj) || !isPlainFieldName(field))
|
|
43
|
+
continue;
|
|
44
|
+
seenObjects.add(obj);
|
|
45
|
+
const key = `${obj}.${field}`;
|
|
46
|
+
if (seenFields.has(key))
|
|
47
|
+
continue;
|
|
48
|
+
seenFields.add(key);
|
|
49
|
+
edges.push(makeEdge(ctx, src, fieldRel, `CustomField:${key}`));
|
|
33
50
|
}
|
|
34
|
-
|
|
35
|
-
|
|
51
|
+
// Formula expressions reference fields as `Object.Field` text — the
|
|
52
|
+
// one place the regex extractor is still the right tool.
|
|
53
|
+
for (const fkey of ["Formula", "FormulaConverted", "TransformValuesMap"]) {
|
|
54
|
+
const fv = pickProp(el, fkey);
|
|
55
|
+
if (typeof fv !== "string" || fv.length === 0)
|
|
56
|
+
continue;
|
|
57
|
+
for (const r of extractFieldRefs(fv)) {
|
|
58
|
+
const key = `${r.object}.${r.field}`;
|
|
59
|
+
if (seenFields.has(key))
|
|
60
|
+
continue;
|
|
61
|
+
seenFields.add(key);
|
|
62
|
+
edges.push(makeEdge(ctx, src, REL_TYPES.DR_READS_FIELD, `CustomField:${key}`));
|
|
63
|
+
}
|
|
36
64
|
}
|
|
37
65
|
}
|
|
66
|
+
for (const obj of seenObjects) {
|
|
67
|
+
edges.push(makeEdge(ctx, src, REL_TYPES.REFERENCES_OBJECT, `CustomObject:${obj}`));
|
|
68
|
+
}
|
|
38
69
|
if (type === "Transform") {
|
|
39
70
|
edges.push(makeEdge(ctx, src, REL_TYPES.DR_TRANSFORMS, `Transform:${input.name}`));
|
|
40
71
|
}
|
|
41
|
-
void inputSObject;
|
|
42
|
-
void outputSObject;
|
|
43
72
|
return { nodes, edges };
|
|
44
73
|
}
|
|
45
74
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-raptor.js","sourceRoot":"","sources":["../../../src/parsers/vlocity/data-raptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,iBAAiB,EAAiB,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACnG,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,OAAO,
|
|
1
|
+
{"version":3,"file":"data-raptor.js","sourceRoot":"","sources":["../../../src/parsers/vlocity/data-raptor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sarif.test.d.ts","sourceRoot":"","sources":["../../../src/render/__tests__/sarif.test.ts"],"names":[],"mappings":""}
|