@ryanstark24/sfgraph-core 1.4.0 → 1.6.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/apex-platform.d.ts +23 -0
- package/dist/analyze/apex-platform.d.ts.map +1 -0
- package/dist/analyze/apex-platform.js +112 -0
- package/dist/analyze/apex-platform.js.map +1 -0
- package/dist/analyze/audit-graph.d.ts +34 -10
- package/dist/analyze/audit-graph.d.ts.map +1 -1
- package/dist/analyze/audit-graph.js +360 -39
- package/dist/analyze/audit-graph.js.map +1 -1
- package/dist/analyze/component-scope.d.ts +82 -0
- package/dist/analyze/component-scope.d.ts.map +1 -0
- package/dist/analyze/component-scope.js +207 -0
- package/dist/analyze/component-scope.js.map +1 -0
- package/dist/analyze/containment.d.ts +91 -0
- package/dist/analyze/containment.d.ts.map +1 -0
- package/dist/analyze/containment.js +175 -0
- package/dist/analyze/containment.js.map +1 -0
- package/dist/analyze/cross-org.d.ts +35 -0
- package/dist/analyze/cross-org.d.ts.map +1 -1
- package/dist/analyze/cross-org.js +102 -3
- package/dist/analyze/cross-org.js.map +1 -1
- package/dist/analyze/dead-code.d.ts +99 -3
- package/dist/analyze/dead-code.d.ts.map +1 -1
- package/dist/analyze/dead-code.js +282 -10
- package/dist/analyze/dead-code.js.map +1 -1
- package/dist/analyze/dependencies.d.ts +20 -1
- package/dist/analyze/dependencies.d.ts.map +1 -1
- package/dist/analyze/dependencies.js +96 -12
- package/dist/analyze/dependencies.js.map +1 -1
- package/dist/analyze/dependents.d.ts +111 -1
- package/dist/analyze/dependents.d.ts.map +1 -1
- package/dist/analyze/dependents.js +282 -20
- package/dist/analyze/dependents.js.map +1 -1
- package/dist/analyze/deployment-manifest/generate.d.ts +24 -0
- package/dist/analyze/deployment-manifest/generate.d.ts.map +1 -1
- package/dist/analyze/deployment-manifest/generate.js +40 -12
- package/dist/analyze/deployment-manifest/generate.js.map +1 -1
- package/dist/analyze/deployment-manifest/member-name-formatters.d.ts.map +1 -1
- package/dist/analyze/deployment-manifest/member-name-formatters.js +1 -0
- package/dist/analyze/deployment-manifest/member-name-formatters.js.map +1 -1
- package/dist/analyze/deployment-manifest/member-types.d.ts.map +1 -1
- package/dist/analyze/deployment-manifest/member-types.js +2 -0
- package/dist/analyze/deployment-manifest/member-types.js.map +1 -1
- package/dist/analyze/diff-seeds.d.ts +33 -0
- package/dist/analyze/diff-seeds.d.ts.map +1 -0
- package/dist/analyze/diff-seeds.js +299 -0
- package/dist/analyze/diff-seeds.js.map +1 -0
- package/dist/analyze/edge-filters.d.ts +25 -0
- package/dist/analyze/edge-filters.d.ts.map +1 -1
- package/dist/analyze/edge-filters.js +78 -2
- package/dist/analyze/edge-filters.js.map +1 -1
- package/dist/analyze/field-scope.d.ts +25 -0
- package/dist/analyze/field-scope.d.ts.map +1 -0
- package/dist/analyze/field-scope.js +94 -0
- package/dist/analyze/field-scope.js.map +1 -0
- package/dist/analyze/find-nodes.d.ts +48 -12
- package/dist/analyze/find-nodes.d.ts.map +1 -1
- package/dist/analyze/find-nodes.js +323 -12
- package/dist/analyze/find-nodes.js.map +1 -1
- package/dist/analyze/findings.d.ts.map +1 -1
- package/dist/analyze/findings.js +14 -0
- package/dist/analyze/findings.js.map +1 -1
- package/dist/analyze/git-diff.d.ts +27 -1
- package/dist/analyze/git-diff.d.ts.map +1 -1
- package/dist/analyze/git-diff.js +198 -26
- package/dist/analyze/git-diff.js.map +1 -1
- package/dist/analyze/governor.d.ts +25 -4
- package/dist/analyze/governor.d.ts.map +1 -1
- package/dist/analyze/governor.js +82 -18
- package/dist/analyze/governor.js.map +1 -1
- package/dist/analyze/index.d.ts +6 -0
- package/dist/analyze/index.d.ts.map +1 -1
- package/dist/analyze/index.js +6 -0
- package/dist/analyze/index.js.map +1 -1
- package/dist/analyze/path-to-qname.d.ts +9 -0
- package/dist/analyze/path-to-qname.d.ts.map +1 -1
- package/dist/analyze/path-to-qname.js +58 -15
- package/dist/analyze/path-to-qname.js.map +1 -1
- package/dist/analyze/populate.d.ts +40 -0
- package/dist/analyze/populate.d.ts.map +1 -1
- package/dist/analyze/populate.js +148 -48
- package/dist/analyze/populate.js.map +1 -1
- package/dist/analyze/pseudo-endpoints.d.ts +67 -0
- package/dist/analyze/pseudo-endpoints.d.ts.map +1 -0
- package/dist/analyze/pseudo-endpoints.js +78 -0
- package/dist/analyze/pseudo-endpoints.js.map +1 -0
- package/dist/analyze/security.d.ts +2 -0
- package/dist/analyze/security.d.ts.map +1 -1
- package/dist/analyze/security.js +44 -15
- package/dist/analyze/security.js.map +1 -1
- package/dist/analyze/test-coverage.d.ts +48 -0
- package/dist/analyze/test-coverage.d.ts.map +1 -1
- package/dist/analyze/test-coverage.js +72 -1
- package/dist/analyze/test-coverage.js.map +1 -1
- package/dist/analyze/wip-changed-files.d.ts +88 -0
- package/dist/analyze/wip-changed-files.d.ts.map +1 -0
- package/dist/analyze/wip-changed-files.js +422 -0
- package/dist/analyze/wip-changed-files.js.map +1 -0
- package/dist/analyze/wip-impact.d.ts +59 -0
- package/dist/analyze/wip-impact.d.ts.map +1 -1
- package/dist/analyze/wip-impact.js +199 -126
- package/dist/analyze/wip-impact.js.map +1 -1
- package/dist/domain/apex-platform.d.ts +10 -0
- package/dist/domain/apex-platform.d.ts.map +1 -0
- package/dist/domain/apex-platform.js +231 -0
- package/dist/domain/apex-platform.js.map +1 -0
- package/dist/domain/index.d.ts +2 -0
- package/dist/domain/index.d.ts.map +1 -1
- package/dist/domain/index.js +2 -0
- package/dist/domain/index.js.map +1 -1
- package/dist/domain/rel-types.d.ts +7 -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/domain/standard-sobjects.d.ts +20 -0
- package/dist/domain/standard-sobjects.d.ts.map +1 -0
- package/dist/domain/standard-sobjects.js +183 -0
- package/dist/domain/standard-sobjects.js.map +1 -0
- package/dist/embedding/cache.d.ts +41 -0
- package/dist/embedding/cache.d.ts.map +1 -0
- package/dist/embedding/cache.js +69 -0
- package/dist/embedding/cache.js.map +1 -0
- package/dist/embedding/embed.d.ts +59 -0
- package/dist/embedding/embed.d.ts.map +1 -1
- package/dist/embedding/embed.js +193 -28
- package/dist/embedding/embed.js.map +1 -1
- package/dist/embedding/index.d.ts +7 -0
- package/dist/embedding/index.d.ts.map +1 -1
- package/dist/embedding/index.js +4 -0
- package/dist/embedding/index.js.map +1 -1
- package/dist/embedding/pool.d.ts +66 -6
- package/dist/embedding/pool.d.ts.map +1 -1
- package/dist/embedding/pool.js +156 -6
- package/dist/embedding/pool.js.map +1 -1
- package/dist/embedding/queue.d.ts +166 -9
- package/dist/embedding/queue.d.ts.map +1 -1
- package/dist/embedding/queue.js +397 -39
- package/dist/embedding/queue.js.map +1 -1
- package/dist/embedding/tokenize.d.ts +18 -0
- package/dist/embedding/tokenize.d.ts.map +1 -0
- package/dist/embedding/tokenize.js +43 -0
- package/dist/embedding/tokenize.js.map +1 -0
- package/dist/embedding/worker.d.ts +0 -5
- package/dist/embedding/worker.d.ts.map +1 -1
- package/dist/embedding/worker.js +27 -4
- package/dist/embedding/worker.js.map +1 -1
- package/dist/extractors/filesystem/index.d.ts +21 -1
- package/dist/extractors/filesystem/index.d.ts.map +1 -1
- package/dist/extractors/filesystem/index.js +195 -38
- package/dist/extractors/filesystem/index.js.map +1 -1
- package/dist/extractors/filesystem/vlocity-datapacks.d.ts +27 -0
- package/dist/extractors/filesystem/vlocity-datapacks.d.ts.map +1 -0
- package/dist/extractors/filesystem/vlocity-datapacks.js +201 -0
- package/dist/extractors/filesystem/vlocity-datapacks.js.map +1 -0
- package/dist/extractors/interfaces/metadata-source.d.ts +29 -0
- package/dist/extractors/interfaces/metadata-source.d.ts.map +1 -1
- package/dist/extractors/live-org/bulk-retrieve.d.ts +37 -1
- package/dist/extractors/live-org/bulk-retrieve.d.ts.map +1 -1
- package/dist/extractors/live-org/bulk-retrieve.js +233 -50
- package/dist/extractors/live-org/bulk-retrieve.js.map +1 -1
- package/dist/extractors/live-org/capabilities.d.ts +15 -0
- package/dist/extractors/live-org/capabilities.d.ts.map +1 -1
- package/dist/extractors/live-org/capabilities.js +54 -9
- package/dist/extractors/live-org/capabilities.js.map +1 -1
- package/dist/extractors/live-org/extractors/apex.d.ts +12 -2
- package/dist/extractors/live-org/extractors/apex.d.ts.map +1 -1
- package/dist/extractors/live-org/extractors/apex.js +151 -80
- package/dist/extractors/live-org/extractors/apex.js.map +1 -1
- package/dist/extractors/live-org/extractors/custom-settings.d.ts +2 -1
- package/dist/extractors/live-org/extractors/custom-settings.d.ts.map +1 -1
- package/dist/extractors/live-org/extractors/custom-settings.js +19 -9
- package/dist/extractors/live-org/extractors/custom-settings.js.map +1 -1
- package/dist/extractors/live-org/extractors/flow.d.ts +2 -1
- package/dist/extractors/live-org/extractors/flow.d.ts.map +1 -1
- package/dist/extractors/live-org/extractors/flow.js +12 -3
- package/dist/extractors/live-org/extractors/flow.js.map +1 -1
- package/dist/extractors/live-org/extractors/generic-metadata.d.ts +23 -3
- package/dist/extractors/live-org/extractors/generic-metadata.d.ts.map +1 -1
- package/dist/extractors/live-org/extractors/generic-metadata.js +110 -25
- package/dist/extractors/live-org/extractors/generic-metadata.js.map +1 -1
- package/dist/extractors/live-org/extractors/integration.d.ts +2 -1
- package/dist/extractors/live-org/extractors/integration.d.ts.map +1 -1
- package/dist/extractors/live-org/extractors/integration.js +14 -5
- package/dist/extractors/live-org/extractors/integration.js.map +1 -1
- package/dist/extractors/live-org/extractors/lwc.d.ts +2 -1
- package/dist/extractors/live-org/extractors/lwc.d.ts.map +1 -1
- package/dist/extractors/live-org/extractors/lwc.js +14 -6
- package/dist/extractors/live-org/extractors/lwc.js.map +1 -1
- package/dist/extractors/live-org/extractors/object.d.ts +2 -11
- package/dist/extractors/live-org/extractors/object.d.ts.map +1 -1
- package/dist/extractors/live-org/extractors/object.js +127 -226
- package/dist/extractors/live-org/extractors/object.js.map +1 -1
- package/dist/extractors/live-org/extractors/omnistudio.d.ts +3 -0
- package/dist/extractors/live-org/extractors/omnistudio.d.ts.map +1 -1
- package/dist/extractors/live-org/extractors/omnistudio.js +57 -22
- package/dist/extractors/live-org/extractors/omnistudio.js.map +1 -1
- package/dist/extractors/live-org/extractors/security.d.ts +12 -1
- package/dist/extractors/live-org/extractors/security.d.ts.map +1 -1
- package/dist/extractors/live-org/extractors/security.js +29 -7
- package/dist/extractors/live-org/extractors/security.js.map +1 -1
- package/dist/extractors/live-org/rate-limit.d.ts +7 -1
- package/dist/extractors/live-org/rate-limit.d.ts.map +1 -1
- package/dist/extractors/live-org/rate-limit.js +53 -10
- package/dist/extractors/live-org/rate-limit.js.map +1 -1
- package/dist/extractors/live-org/retry.d.ts +136 -0
- package/dist/extractors/live-org/retry.d.ts.map +1 -0
- package/dist/extractors/live-org/retry.js +416 -0
- package/dist/extractors/live-org/retry.js.map +1 -0
- package/dist/extractors/live-org/vlocity/runner.d.ts +2 -1
- package/dist/extractors/live-org/vlocity/runner.d.ts.map +1 -1
- package/dist/extractors/live-org/vlocity/runner.js +95 -67
- package/dist/extractors/live-org/vlocity/runner.js.map +1 -1
- package/dist/extractors/vlocity-shared/row.d.ts +19 -0
- package/dist/extractors/vlocity-shared/row.d.ts.map +1 -0
- package/dist/extractors/vlocity-shared/row.js +69 -0
- package/dist/extractors/vlocity-shared/row.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/ingest/delta.d.ts +70 -0
- package/dist/ingest/delta.d.ts.map +1 -0
- package/dist/ingest/delta.js +534 -0
- package/dist/ingest/delta.js.map +1 -0
- package/dist/ingest/detect-deletions-guard.d.ts +34 -0
- package/dist/ingest/detect-deletions-guard.d.ts.map +1 -1
- package/dist/ingest/detect-deletions-guard.js +59 -0
- package/dist/ingest/detect-deletions-guard.js.map +1 -1
- package/dist/ingest/index.d.ts +8 -1
- package/dist/ingest/index.d.ts.map +1 -1
- package/dist/ingest/index.js +4 -0
- package/dist/ingest/index.js.map +1 -1
- package/dist/ingest/live-ingest.d.ts +171 -7
- package/dist/ingest/live-ingest.d.ts.map +1 -1
- package/dist/ingest/live-ingest.js +1014 -249
- package/dist/ingest/live-ingest.js.map +1 -1
- package/dist/ingest/lock.d.ts +47 -0
- package/dist/ingest/lock.d.ts.map +1 -0
- package/dist/ingest/lock.js +222 -0
- package/dist/ingest/lock.js.map +1 -0
- package/dist/ingest/member-rows.d.ts +88 -0
- package/dist/ingest/member-rows.d.ts.map +1 -0
- package/dist/ingest/member-rows.js +152 -0
- package/dist/ingest/member-rows.js.map +1 -0
- package/dist/ingest/offline-org.d.ts +8 -0
- package/dist/ingest/offline-org.d.ts.map +1 -0
- package/dist/ingest/offline-org.js +41 -0
- package/dist/ingest/offline-org.js.map +1 -0
- package/dist/ingest/parse-member.d.ts +53 -0
- package/dist/ingest/parse-member.d.ts.map +1 -0
- package/dist/ingest/parse-member.js +276 -0
- package/dist/ingest/parse-member.js.map +1 -0
- package/dist/ingest/parse-pool.d.ts +139 -0
- package/dist/ingest/parse-pool.d.ts.map +1 -0
- package/dist/ingest/parse-pool.js +593 -0
- package/dist/ingest/parse-pool.js.map +1 -0
- package/dist/ingest/parse-worker.d.ts +3 -0
- package/dist/ingest/parse-worker.d.ts.map +1 -0
- package/dist/ingest/parse-worker.js +100 -0
- package/dist/ingest/parse-worker.js.map +1 -0
- package/dist/ingest/profile.d.ts +27 -0
- package/dist/ingest/profile.d.ts.map +1 -0
- package/dist/ingest/profile.js +48 -0
- package/dist/ingest/profile.js.map +1 -0
- package/dist/ingest/resolver-gates.d.ts +12 -0
- package/dist/ingest/resolver-gates.d.ts.map +1 -0
- package/dist/ingest/resolver-gates.js +53 -0
- package/dist/ingest/resolver-gates.js.map +1 -0
- package/dist/parsers/apex/arity-resolver.d.ts +16 -3
- package/dist/parsers/apex/arity-resolver.d.ts.map +1 -1
- package/dist/parsers/apex/arity-resolver.js +31 -2
- package/dist/parsers/apex/arity-resolver.js.map +1 -1
- package/dist/parsers/apex/ast-extractor.d.ts +4 -0
- package/dist/parsers/apex/ast-extractor.d.ts.map +1 -1
- package/dist/parsers/apex/ast-extractor.js +96 -29
- package/dist/parsers/apex/ast-extractor.js.map +1 -1
- package/dist/parsers/apex/class-refs.d.ts +78 -0
- package/dist/parsers/apex/class-refs.d.ts.map +1 -0
- package/dist/parsers/apex/class-refs.js +465 -0
- package/dist/parsers/apex/class-refs.js.map +1 -0
- package/dist/parsers/apex/class.d.ts +158 -0
- package/dist/parsers/apex/class.d.ts.map +1 -1
- package/dist/parsers/apex/class.js +1025 -183
- package/dist/parsers/apex/class.js.map +1 -1
- package/dist/parsers/apex/dynamic-soql.d.ts +52 -0
- package/dist/parsers/apex/dynamic-soql.d.ts.map +1 -0
- package/dist/parsers/apex/dynamic-soql.js +427 -0
- package/dist/parsers/apex/dynamic-soql.js.map +1 -0
- package/dist/parsers/apex/field-access.d.ts +65 -0
- package/dist/parsers/apex/field-access.d.ts.map +1 -0
- package/dist/parsers/apex/field-access.js +438 -0
- package/dist/parsers/apex/field-access.js.map +1 -0
- package/dist/parsers/apex/interface-ref-resolver.d.ts +32 -0
- package/dist/parsers/apex/interface-ref-resolver.d.ts.map +1 -0
- package/dist/parsers/apex/interface-ref-resolver.js +64 -0
- package/dist/parsers/apex/interface-ref-resolver.js.map +1 -0
- package/dist/parsers/apex/name-refs.d.ts +83 -0
- package/dist/parsers/apex/name-refs.d.ts.map +1 -0
- package/dist/parsers/apex/name-refs.js +465 -0
- package/dist/parsers/apex/name-refs.js.map +1 -0
- package/dist/parsers/apex/page-refs.d.ts +11 -0
- package/dist/parsers/apex/page-refs.d.ts.map +1 -0
- package/dist/parsers/apex/page-refs.js +34 -0
- package/dist/parsers/apex/page-refs.js.map +1 -0
- package/dist/parsers/apex/ref-resolver.d.ts +58 -0
- package/dist/parsers/apex/ref-resolver.d.ts.map +1 -0
- package/dist/parsers/apex/ref-resolver.js +348 -0
- package/dist/parsers/apex/ref-resolver.js.map +1 -0
- package/dist/parsers/apex/soql-fields.d.ts +75 -0
- package/dist/parsers/apex/soql-fields.d.ts.map +1 -0
- package/dist/parsers/apex/soql-fields.js +338 -0
- package/dist/parsers/apex/soql-fields.js.map +1 -0
- package/dist/parsers/apex/trigger.d.ts.map +1 -1
- package/dist/parsers/apex/trigger.js +90 -2
- package/dist/parsers/apex/trigger.js.map +1 -1
- package/dist/parsers/apex/vlocity-calls.d.ts +25 -0
- package/dist/parsers/apex/vlocity-calls.d.ts.map +1 -0
- package/dist/parsers/apex/vlocity-calls.js +225 -0
- package/dist/parsers/apex/vlocity-calls.js.map +1 -0
- package/dist/parsers/aura/bundle.d.ts +39 -0
- package/dist/parsers/aura/bundle.d.ts.map +1 -0
- package/dist/parsers/aura/bundle.js +269 -0
- package/dist/parsers/aura/bundle.js.map +1 -0
- package/dist/parsers/aura/embed-resolver.d.ts +17 -0
- package/dist/parsers/aura/embed-resolver.d.ts.map +1 -0
- package/dist/parsers/aura/embed-resolver.js +58 -0
- package/dist/parsers/aura/embed-resolver.js.map +1 -0
- package/dist/parsers/aura/index.d.ts +4 -0
- package/dist/parsers/aura/index.d.ts.map +1 -0
- package/dist/parsers/aura/index.js +6 -0
- package/dist/parsers/aura/index.js.map +1 -0
- package/dist/parsers/common.d.ts +9 -0
- package/dist/parsers/common.d.ts.map +1 -1
- package/dist/parsers/common.js +17 -0
- package/dist/parsers/common.js.map +1 -1
- package/dist/parsers/cross-flavor-resolver.js +8 -2
- package/dist/parsers/cross-flavor-resolver.js.map +1 -1
- package/dist/parsers/flow/invocable-resolver.d.ts.map +1 -1
- package/dist/parsers/flow/invocable-resolver.js +2 -0
- package/dist/parsers/flow/invocable-resolver.js.map +1 -1
- package/dist/parsers/flow/parser.d.ts +9 -0
- package/dist/parsers/flow/parser.d.ts.map +1 -1
- package/dist/parsers/flow/parser.js +327 -2
- package/dist/parsers/flow/parser.js.map +1 -1
- package/dist/parsers/flow/relationship-resolver.d.ts +34 -0
- package/dist/parsers/flow/relationship-resolver.d.ts.map +1 -0
- package/dist/parsers/flow/relationship-resolver.js +199 -0
- package/dist/parsers/flow/relationship-resolver.js.map +1 -0
- package/dist/parsers/generic/opaque-node-parser.d.ts +5 -1
- package/dist/parsers/generic/opaque-node-parser.d.ts.map +1 -1
- package/dist/parsers/generic/opaque-node-parser.js +37 -5
- package/dist/parsers/generic/opaque-node-parser.js.map +1 -1
- package/dist/parsers/generic/reflection-walker.d.ts +7 -0
- package/dist/parsers/generic/reflection-walker.d.ts.map +1 -1
- package/dist/parsers/generic/reflection-walker.js +37 -10
- package/dist/parsers/generic/reflection-walker.js.map +1 -1
- package/dist/parsers/hash-salts.d.ts +72 -0
- package/dist/parsers/hash-salts.d.ts.map +1 -0
- package/dist/parsers/hash-salts.js +91 -0
- package/dist/parsers/hash-salts.js.map +1 -0
- package/dist/parsers/index.d.ts +2 -0
- package/dist/parsers/index.d.ts.map +1 -1
- package/dist/parsers/index.js +2 -0
- package/dist/parsers/index.js.map +1 -1
- package/dist/parsers/lwc/bundle.d.ts +1 -0
- package/dist/parsers/lwc/bundle.d.ts.map +1 -1
- package/dist/parsers/lwc/bundle.js +37 -2
- package/dist/parsers/lwc/bundle.js.map +1 -1
- package/dist/parsers/lwc/field-key-resolver.d.ts +32 -0
- package/dist/parsers/lwc/field-key-resolver.d.ts.map +1 -0
- package/dist/parsers/lwc/field-key-resolver.js +92 -0
- package/dist/parsers/lwc/field-key-resolver.js.map +1 -0
- package/dist/parsers/lwc/html-visitor.d.ts +1 -1
- package/dist/parsers/lwc/html-visitor.d.ts.map +1 -1
- package/dist/parsers/lwc/html-visitor.js +78 -1
- package/dist/parsers/lwc/html-visitor.js.map +1 -1
- package/dist/parsers/lwc/js-visitor.d.ts +16 -0
- package/dist/parsers/lwc/js-visitor.d.ts.map +1 -1
- package/dist/parsers/lwc/js-visitor.js +348 -10
- package/dist/parsers/lwc/js-visitor.js.map +1 -1
- package/dist/parsers/lwc/omnidef.d.ts +10 -0
- package/dist/parsers/lwc/omnidef.d.ts.map +1 -0
- package/dist/parsers/lwc/omnidef.js +127 -0
- package/dist/parsers/lwc/omnidef.js.map +1 -0
- package/dist/parsers/lwc/xml-meta.d.ts.map +1 -1
- package/dist/parsers/lwc/xml-meta.js +16 -1
- package/dist/parsers/lwc/xml-meta.js.map +1 -1
- package/dist/parsers/object/formula-hop-resolver.d.ts +33 -0
- package/dist/parsers/object/formula-hop-resolver.d.ts.map +1 -0
- package/dist/parsers/object/formula-hop-resolver.js +60 -0
- package/dist/parsers/object/formula-hop-resolver.js.map +1 -0
- package/dist/parsers/object/formula-refs.d.ts +40 -0
- package/dist/parsers/object/formula-refs.d.ts.map +1 -0
- package/dist/parsers/object/formula-refs.js +129 -0
- package/dist/parsers/object/formula-refs.js.map +1 -0
- package/dist/parsers/object/object.d.ts +3 -0
- package/dist/parsers/object/object.d.ts.map +1 -1
- package/dist/parsers/object/object.js +53 -52
- 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 +2 -2
- 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 +4 -5
- package/dist/parsers/omnistudio/integration-procedure.js.map +1 -1
- package/dist/parsers/omnistudio/overlap-detector.d.ts.map +1 -1
- package/dist/parsers/omnistudio/overlap-detector.js +27 -2
- package/dist/parsers/omnistudio/overlap-detector.js.map +1 -1
- package/dist/parsers/omnistudio/process.d.ts.map +1 -1
- package/dist/parsers/omnistudio/process.js +4 -5
- package/dist/parsers/omnistudio/process.js.map +1 -1
- package/dist/parsers/omnistudio/remote-refs.d.ts +11 -0
- package/dist/parsers/omnistudio/remote-refs.d.ts.map +1 -0
- package/dist/parsers/omnistudio/remote-refs.js +17 -0
- package/dist/parsers/omnistudio/remote-refs.js.map +1 -0
- package/dist/parsers/omnistudio/ui-card.d.ts.map +1 -1
- package/dist/parsers/omnistudio/ui-card.js +4 -5
- package/dist/parsers/omnistudio/ui-card.js.map +1 -1
- package/dist/parsers/resolver-prune.d.ts +14 -0
- package/dist/parsers/resolver-prune.d.ts.map +1 -0
- package/dist/parsers/resolver-prune.js +29 -0
- package/dist/parsers/resolver-prune.js.map +1 -0
- package/dist/parsers/rules/_engine.d.ts.map +1 -1
- package/dist/parsers/rules/_engine.js +4 -0
- package/dist/parsers/rules/_engine.js.map +1 -1
- package/dist/parsers/rules/_engine.ts +3 -0
- package/dist/parsers/rules/_loader.d.ts +8 -0
- package/dist/parsers/rules/_loader.d.ts.map +1 -1
- package/dist/parsers/rules/_loader.js +17 -0
- package/dist/parsers/rules/_loader.js.map +1 -1
- package/dist/parsers/rules/_loader.ts +19 -0
- package/dist/parsers/rules/_schema.d.ts +12 -12
- package/dist/parsers/rules/_selectors.d.ts +1 -0
- package/dist/parsers/rules/_selectors.d.ts.map +1 -1
- package/dist/parsers/rules/_selectors.js +6 -0
- package/dist/parsers/rules/_selectors.js.map +1 -1
- package/dist/parsers/rules/_selectors.ts +6 -0
- package/dist/parsers/rules/apex-component.yml +49 -4
- package/dist/parsers/rules/apex-page.yml +49 -4
- package/dist/parsers/rules/approval-process.yml +25 -5
- package/dist/parsers/rules/custom-metadata-type.yml +7 -7
- package/dist/parsers/rules/custom-tab.yml +41 -0
- package/dist/parsers/rules/lightning-page.yml +4 -2
- package/dist/parsers/rules/workflow.yml +30 -10
- package/dist/parsers/vf/refs.d.ts +39 -0
- package/dist/parsers/vf/refs.d.ts.map +1 -0
- package/dist/parsers/vf/refs.js +152 -0
- package/dist/parsers/vf/refs.js.map +1 -0
- package/dist/parsers/vlocity/apex-resolver.d.ts +21 -0
- package/dist/parsers/vlocity/apex-resolver.d.ts.map +1 -0
- package/dist/parsers/vlocity/apex-resolver.js +115 -0
- package/dist/parsers/vlocity/apex-resolver.js.map +1 -0
- package/dist/parsers/vlocity/common.d.ts +56 -1
- package/dist/parsers/vlocity/common.d.ts.map +1 -1
- package/dist/parsers/vlocity/common.js +275 -7
- package/dist/parsers/vlocity/common.js.map +1 -1
- package/dist/parsers/vlocity/data-raptor.d.ts +9 -0
- package/dist/parsers/vlocity/data-raptor.d.ts.map +1 -1
- package/dist/parsers/vlocity/data-raptor.js +133 -31
- package/dist/parsers/vlocity/data-raptor.js.map +1 -1
- package/dist/parsers/vlocity/datapack-refs.d.ts +22 -0
- package/dist/parsers/vlocity/datapack-refs.d.ts.map +1 -0
- package/dist/parsers/vlocity/datapack-refs.js +126 -0
- package/dist/parsers/vlocity/datapack-refs.js.map +1 -0
- package/dist/parsers/vlocity/dr-relationship-resolver.d.ts +26 -0
- package/dist/parsers/vlocity/dr-relationship-resolver.d.ts.map +1 -0
- package/dist/parsers/vlocity/dr-relationship-resolver.js +137 -0
- package/dist/parsers/vlocity/dr-relationship-resolver.js.map +1 -0
- package/dist/parsers/vlocity/integration-procedure.d.ts.map +1 -1
- package/dist/parsers/vlocity/integration-procedure.js +15 -48
- package/dist/parsers/vlocity/integration-procedure.js.map +1 -1
- package/dist/parsers/vlocity/name-match-resolver.d.ts +21 -0
- package/dist/parsers/vlocity/name-match-resolver.d.ts.map +1 -0
- package/dist/parsers/vlocity/name-match-resolver.js +97 -0
- package/dist/parsers/vlocity/name-match-resolver.js.map +1 -0
- package/dist/parsers/vlocity/omni-script.d.ts.map +1 -1
- package/dist/parsers/vlocity/omni-script.js +18 -32
- package/dist/parsers/vlocity/omni-script.js.map +1 -1
- package/dist/parsers/vlocity/vlocity-card.d.ts.map +1 -1
- package/dist/parsers/vlocity/vlocity-card.js +30 -36
- package/dist/parsers/vlocity/vlocity-card.js.map +1 -1
- package/dist/render/mermaid/dependency-graph.d.ts.map +1 -1
- package/dist/render/mermaid/dependency-graph.js +13 -1
- package/dist/render/mermaid/dependency-graph.js.map +1 -1
- package/dist/render/mermaid/diff.d.ts.map +1 -1
- package/dist/render/mermaid/diff.js +4 -2
- package/dist/render/mermaid/diff.js.map +1 -1
- package/dist/render/mermaid/shared.d.ts +7 -0
- package/dist/render/mermaid/shared.d.ts.map +1 -1
- package/dist/render/mermaid/shared.js +15 -6
- package/dist/render/mermaid/shared.js.map +1 -1
- package/dist/storage/index.d.ts +3 -3
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +2 -2
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/interfaces.d.ts +155 -1
- package/dist/storage/interfaces.d.ts.map +1 -1
- package/dist/storage/sqlite/graph-store.d.ts +352 -3
- package/dist/storage/sqlite/graph-store.d.ts.map +1 -1
- package/dist/storage/sqlite/graph-store.js +1683 -74
- package/dist/storage/sqlite/graph-store.js.map +1 -1
- package/dist/storage/sqlite/migrations.d.ts +11 -0
- package/dist/storage/sqlite/migrations.d.ts.map +1 -1
- package/dist/storage/sqlite/migrations.js +226 -11
- package/dist/storage/sqlite/migrations.js.map +1 -1
- package/dist/storage/sqlite/snapshot-store.d.ts +79 -3
- package/dist/storage/sqlite/snapshot-store.d.ts.map +1 -1
- package/dist/storage/sqlite/snapshot-store.js +500 -100
- package/dist/storage/sqlite/snapshot-store.js.map +1 -1
- package/dist/storage/sqlite/snapshot-versions.d.ts +51 -0
- package/dist/storage/sqlite/snapshot-versions.d.ts.map +1 -0
- package/dist/storage/sqlite/snapshot-versions.js +209 -0
- package/dist/storage/sqlite/snapshot-versions.js.map +1 -0
- package/dist/storage/sqlite/vector-store.d.ts +12 -0
- package/dist/storage/sqlite/vector-store.d.ts.map +1 -1
- package/dist/storage/sqlite/vector-store.js +57 -14
- package/dist/storage/sqlite/vector-store.js.map +1 -1
- package/dist/util/process-owner.d.ts +35 -0
- package/dist/util/process-owner.d.ts.map +1 -0
- package/dist/util/process-owner.js +87 -0
- package/dist/util/process-owner.js.map +1 -0
- package/dist/util/worker-heap-cap.d.ts +10 -0
- package/dist/util/worker-heap-cap.d.ts.map +1 -0
- package/dist/util/worker-heap-cap.js +65 -0
- package/dist/util/worker-heap-cap.js.map +1 -0
- package/package.json +6 -7
- package/dist/analyze/__tests__/audit-graph.test.d.ts +0 -2
- package/dist/analyze/__tests__/audit-graph.test.d.ts.map +0 -1
- package/dist/analyze/__tests__/audit-graph.test.js +0 -201
- package/dist/analyze/__tests__/audit-graph.test.js.map +0 -1
- package/dist/analyze/__tests__/cross-org-two-store.test.d.ts +0 -2
- package/dist/analyze/__tests__/cross-org-two-store.test.d.ts.map +0 -1
- package/dist/analyze/__tests__/cross-org-two-store.test.js +0 -68
- package/dist/analyze/__tests__/cross-org-two-store.test.js.map +0 -1
- package/dist/analyze/__tests__/dead-code-confidence.test.d.ts +0 -2
- package/dist/analyze/__tests__/dead-code-confidence.test.d.ts.map +0 -1
- package/dist/analyze/__tests__/dead-code-confidence.test.js +0 -66
- package/dist/analyze/__tests__/dead-code-confidence.test.js.map +0 -1
- package/dist/analyze/__tests__/deployment-manifest.test.d.ts +0 -2
- package/dist/analyze/__tests__/deployment-manifest.test.d.ts.map +0 -1
- package/dist/analyze/__tests__/deployment-manifest.test.js +0 -66
- package/dist/analyze/__tests__/deployment-manifest.test.js.map +0 -1
- package/dist/analyze/__tests__/edge-filters.test.d.ts +0 -2
- package/dist/analyze/__tests__/edge-filters.test.d.ts.map +0 -1
- package/dist/analyze/__tests__/edge-filters.test.js +0 -66
- package/dist/analyze/__tests__/edge-filters.test.js.map +0 -1
- package/dist/analyze/__tests__/find-nodes.test.d.ts +0 -2
- package/dist/analyze/__tests__/find-nodes.test.d.ts.map +0 -1
- package/dist/analyze/__tests__/find-nodes.test.js +0 -129
- package/dist/analyze/__tests__/find-nodes.test.js.map +0 -1
- package/dist/analyze/__tests__/findings.test.d.ts +0 -2
- package/dist/analyze/__tests__/findings.test.d.ts.map +0 -1
- package/dist/analyze/__tests__/findings.test.js +0 -100
- package/dist/analyze/__tests__/findings.test.js.map +0 -1
- package/dist/analyze/__tests__/governor-risks-detection.test.d.ts +0 -2
- package/dist/analyze/__tests__/governor-risks-detection.test.d.ts.map +0 -1
- package/dist/analyze/__tests__/governor-risks-detection.test.js +0 -160
- package/dist/analyze/__tests__/governor-risks-detection.test.js.map +0 -1
- package/dist/analyze/__tests__/populate.test.d.ts +0 -2
- package/dist/analyze/__tests__/populate.test.d.ts.map +0 -1
- package/dist/analyze/__tests__/populate.test.js +0 -129
- package/dist/analyze/__tests__/populate.test.js.map +0 -1
- package/dist/analyze/__tests__/security-fls-filter.test.d.ts +0 -2
- package/dist/analyze/__tests__/security-fls-filter.test.d.ts.map +0 -1
- package/dist/analyze/__tests__/security-fls-filter.test.js +0 -23
- package/dist/analyze/__tests__/security-fls-filter.test.js.map +0 -1
- package/dist/analyze/__tests__/traversal-caps.test.d.ts +0 -2
- package/dist/analyze/__tests__/traversal-caps.test.d.ts.map +0 -1
- package/dist/analyze/__tests__/traversal-caps.test.js +0 -129
- package/dist/analyze/__tests__/traversal-caps.test.js.map +0 -1
- package/dist/analyze/__tests__/wip-impact.test.d.ts +0 -2
- package/dist/analyze/__tests__/wip-impact.test.d.ts.map +0 -1
- package/dist/analyze/__tests__/wip-impact.test.js +0 -134
- package/dist/analyze/__tests__/wip-impact.test.js.map +0 -1
- package/dist/embedding/__tests__/embed.test.d.ts +0 -2
- package/dist/embedding/__tests__/embed.test.d.ts.map +0 -1
- package/dist/embedding/__tests__/embed.test.js +0 -72
- package/dist/embedding/__tests__/embed.test.js.map +0 -1
- package/dist/embedding/__tests__/queue.test.d.ts +0 -2
- package/dist/embedding/__tests__/queue.test.d.ts.map +0 -1
- package/dist/embedding/__tests__/queue.test.js +0 -64
- package/dist/embedding/__tests__/queue.test.js.map +0 -1
- package/dist/extractors/__tests__/network-egress.test.d.ts +0 -2
- package/dist/extractors/__tests__/network-egress.test.d.ts.map +0 -1
- package/dist/extractors/__tests__/network-egress.test.js +0 -32
- package/dist/extractors/__tests__/network-egress.test.js.map +0 -1
- package/dist/extractors/filesystem/__tests__/filesystem.test.d.ts +0 -2
- package/dist/extractors/filesystem/__tests__/filesystem.test.d.ts.map +0 -1
- package/dist/extractors/filesystem/__tests__/filesystem.test.js +0 -96
- package/dist/extractors/filesystem/__tests__/filesystem.test.js.map +0 -1
- package/dist/extractors/live-org/__tests__/_jsforce-mock.d.ts +0 -38
- package/dist/extractors/live-org/__tests__/_jsforce-mock.d.ts.map +0 -1
- package/dist/extractors/live-org/__tests__/_jsforce-mock.js +0 -96
- package/dist/extractors/live-org/__tests__/_jsforce-mock.js.map +0 -1
- package/dist/extractors/live-org/__tests__/auth.test.d.ts +0 -2
- package/dist/extractors/live-org/__tests__/auth.test.d.ts.map +0 -1
- package/dist/extractors/live-org/__tests__/auth.test.js +0 -85
- package/dist/extractors/live-org/__tests__/auth.test.js.map +0 -1
- package/dist/extractors/live-org/__tests__/bulk-retrieve.test.d.ts +0 -2
- package/dist/extractors/live-org/__tests__/bulk-retrieve.test.d.ts.map +0 -1
- package/dist/extractors/live-org/__tests__/bulk-retrieve.test.js +0 -150
- package/dist/extractors/live-org/__tests__/bulk-retrieve.test.js.map +0 -1
- package/dist/extractors/live-org/__tests__/capabilities.test.d.ts +0 -2
- package/dist/extractors/live-org/__tests__/capabilities.test.d.ts.map +0 -1
- package/dist/extractors/live-org/__tests__/capabilities.test.js +0 -54
- package/dist/extractors/live-org/__tests__/capabilities.test.js.map +0 -1
- package/dist/extractors/live-org/__tests__/custom-settings.test.d.ts +0 -2
- package/dist/extractors/live-org/__tests__/custom-settings.test.d.ts.map +0 -1
- package/dist/extractors/live-org/__tests__/custom-settings.test.js +0 -79
- package/dist/extractors/live-org/__tests__/custom-settings.test.js.map +0 -1
- package/dist/extractors/live-org/__tests__/discovery.test.d.ts +0 -2
- package/dist/extractors/live-org/__tests__/discovery.test.d.ts.map +0 -1
- package/dist/extractors/live-org/__tests__/discovery.test.js +0 -55
- package/dist/extractors/live-org/__tests__/discovery.test.js.map +0 -1
- package/dist/extractors/live-org/__tests__/dispatch.test.d.ts +0 -2
- package/dist/extractors/live-org/__tests__/dispatch.test.d.ts.map +0 -1
- package/dist/extractors/live-org/__tests__/dispatch.test.js +0 -68
- package/dist/extractors/live-org/__tests__/dispatch.test.js.map +0 -1
- package/dist/extractors/live-org/__tests__/extractor-enrichment.test.d.ts +0 -2
- package/dist/extractors/live-org/__tests__/extractor-enrichment.test.d.ts.map +0 -1
- package/dist/extractors/live-org/__tests__/extractor-enrichment.test.js +0 -374
- package/dist/extractors/live-org/__tests__/extractor-enrichment.test.js.map +0 -1
- package/dist/extractors/live-org/__tests__/liveness.test.d.ts +0 -2
- package/dist/extractors/live-org/__tests__/liveness.test.d.ts.map +0 -1
- package/dist/extractors/live-org/__tests__/liveness.test.js +0 -148
- package/dist/extractors/live-org/__tests__/liveness.test.js.map +0 -1
- package/dist/extractors/live-org/__tests__/mcd-baseline.test.d.ts +0 -2
- package/dist/extractors/live-org/__tests__/mcd-baseline.test.d.ts.map +0 -1
- package/dist/extractors/live-org/__tests__/mcd-baseline.test.js +0 -177
- package/dist/extractors/live-org/__tests__/mcd-baseline.test.js.map +0 -1
- package/dist/extractors/live-org/__tests__/metadata-read-batch.test.d.ts +0 -2
- package/dist/extractors/live-org/__tests__/metadata-read-batch.test.d.ts.map +0 -1
- package/dist/extractors/live-org/__tests__/metadata-read-batch.test.js +0 -75
- package/dist/extractors/live-org/__tests__/metadata-read-batch.test.js.map +0 -1
- package/dist/extractors/live-org/__tests__/omnistudio-retrieve.test.d.ts +0 -2
- package/dist/extractors/live-org/__tests__/omnistudio-retrieve.test.d.ts.map +0 -1
- package/dist/extractors/live-org/__tests__/omnistudio-retrieve.test.js +0 -135
- package/dist/extractors/live-org/__tests__/omnistudio-retrieve.test.js.map +0 -1
- package/dist/extractors/live-org/__tests__/pools.test.d.ts +0 -2
- package/dist/extractors/live-org/__tests__/pools.test.d.ts.map +0 -1
- package/dist/extractors/live-org/__tests__/pools.test.js +0 -78
- package/dist/extractors/live-org/__tests__/pools.test.js.map +0 -1
- package/dist/extractors/live-org/__tests__/rate-limit.test.d.ts +0 -2
- package/dist/extractors/live-org/__tests__/rate-limit.test.d.ts.map +0 -1
- package/dist/extractors/live-org/__tests__/rate-limit.test.js +0 -73
- package/dist/extractors/live-org/__tests__/rate-limit.test.js.map +0 -1
- package/dist/extractors/live-org/__tests__/read-only-proxy.test.d.ts +0 -2
- package/dist/extractors/live-org/__tests__/read-only-proxy.test.d.ts.map +0 -1
- package/dist/extractors/live-org/__tests__/read-only-proxy.test.js +0 -376
- package/dist/extractors/live-org/__tests__/read-only-proxy.test.js.map +0 -1
- package/dist/extractors/live-org/__tests__/soql-rebatch.test.d.ts +0 -2
- package/dist/extractors/live-org/__tests__/soql-rebatch.test.d.ts.map +0 -1
- package/dist/extractors/live-org/__tests__/soql-rebatch.test.js +0 -118
- package/dist/extractors/live-org/__tests__/soql-rebatch.test.js.map +0 -1
- package/dist/extractors/live-org/__tests__/source-member.test.d.ts +0 -2
- package/dist/extractors/live-org/__tests__/source-member.test.d.ts.map +0 -1
- package/dist/extractors/live-org/__tests__/source-member.test.js +0 -84
- package/dist/extractors/live-org/__tests__/source-member.test.js.map +0 -1
- package/dist/extractors/live-org/__tests__/stop-waiting.test.d.ts +0 -2
- package/dist/extractors/live-org/__tests__/stop-waiting.test.d.ts.map +0 -1
- package/dist/extractors/live-org/__tests__/stop-waiting.test.js +0 -243
- package/dist/extractors/live-org/__tests__/stop-waiting.test.js.map +0 -1
- package/dist/extractors/live-org/__tests__/vlocity-runner.test.d.ts +0 -2
- package/dist/extractors/live-org/__tests__/vlocity-runner.test.d.ts.map +0 -1
- package/dist/extractors/live-org/__tests__/vlocity-runner.test.js +0 -115
- package/dist/extractors/live-org/__tests__/vlocity-runner.test.js.map +0 -1
- package/dist/extractors/live-org/__tests__/watchdog-budgets.test.d.ts +0 -2
- package/dist/extractors/live-org/__tests__/watchdog-budgets.test.d.ts.map +0 -1
- package/dist/extractors/live-org/__tests__/watchdog-budgets.test.js +0 -40
- package/dist/extractors/live-org/__tests__/watchdog-budgets.test.js.map +0 -1
- package/dist/extractors/live-org/__tests__/wedge-isolation.test.d.ts +0 -2
- package/dist/extractors/live-org/__tests__/wedge-isolation.test.d.ts.map +0 -1
- package/dist/extractors/live-org/__tests__/wedge-isolation.test.js +0 -270
- package/dist/extractors/live-org/__tests__/wedge-isolation.test.js.map +0 -1
- package/dist/extractors/live-org/extractors/__tests__/apex.test.d.ts +0 -2
- package/dist/extractors/live-org/extractors/__tests__/apex.test.d.ts.map +0 -1
- package/dist/extractors/live-org/extractors/__tests__/apex.test.js +0 -73
- package/dist/extractors/live-org/extractors/__tests__/apex.test.js.map +0 -1
- package/dist/extractors/live-org/extractors/__tests__/lwc.parallel.test.d.ts +0 -2
- package/dist/extractors/live-org/extractors/__tests__/lwc.parallel.test.d.ts.map +0 -1
- package/dist/extractors/live-org/extractors/__tests__/lwc.parallel.test.js +0 -183
- package/dist/extractors/live-org/extractors/__tests__/lwc.parallel.test.js.map +0 -1
- package/dist/ingest/__tests__/config-values.test.d.ts +0 -2
- package/dist/ingest/__tests__/config-values.test.d.ts.map +0 -1
- package/dist/ingest/__tests__/config-values.test.js +0 -65
- package/dist/ingest/__tests__/config-values.test.js.map +0 -1
- package/dist/ingest/__tests__/full-sync-deletion.test.d.ts +0 -2
- package/dist/ingest/__tests__/full-sync-deletion.test.d.ts.map +0 -1
- package/dist/ingest/__tests__/full-sync-deletion.test.js +0 -207
- package/dist/ingest/__tests__/full-sync-deletion.test.js.map +0 -1
- package/dist/ingest/__tests__/incremental-deletion.test.d.ts +0 -2
- package/dist/ingest/__tests__/incremental-deletion.test.d.ts.map +0 -1
- package/dist/ingest/__tests__/incremental-deletion.test.js +0 -92
- package/dist/ingest/__tests__/incremental-deletion.test.js.map +0 -1
- package/dist/ingest/__tests__/live-ingest.detect-deletions-guard.test.d.ts +0 -10
- package/dist/ingest/__tests__/live-ingest.detect-deletions-guard.test.d.ts.map +0 -1
- package/dist/ingest/__tests__/live-ingest.detect-deletions-guard.test.js +0 -251
- package/dist/ingest/__tests__/live-ingest.detect-deletions-guard.test.js.map +0 -1
- package/dist/ingest/__tests__/live-ingest.test.d.ts +0 -2
- package/dist/ingest/__tests__/live-ingest.test.d.ts.map +0 -1
- package/dist/ingest/__tests__/live-ingest.test.js +0 -155
- package/dist/ingest/__tests__/live-ingest.test.js.map +0 -1
- package/dist/ingest/__tests__/multi-org-orchestrator.test.d.ts +0 -2
- package/dist/ingest/__tests__/multi-org-orchestrator.test.d.ts.map +0 -1
- package/dist/ingest/__tests__/multi-org-orchestrator.test.js +0 -108
- package/dist/ingest/__tests__/multi-org-orchestrator.test.js.map +0 -1
- package/dist/ingest/__tests__/parser-dispatch.test.d.ts +0 -2
- package/dist/ingest/__tests__/parser-dispatch.test.d.ts.map +0 -1
- package/dist/ingest/__tests__/parser-dispatch.test.js +0 -55
- package/dist/ingest/__tests__/parser-dispatch.test.js.map +0 -1
- package/dist/ingest/__tests__/read-only-wrapping.test.d.ts +0 -2
- package/dist/ingest/__tests__/read-only-wrapping.test.d.ts.map +0 -1
- package/dist/ingest/__tests__/read-only-wrapping.test.js +0 -62
- package/dist/ingest/__tests__/read-only-wrapping.test.js.map +0 -1
- package/dist/ingest/__tests__/vlocity-dispatch-integration.test.d.ts +0 -2
- package/dist/ingest/__tests__/vlocity-dispatch-integration.test.d.ts.map +0 -1
- package/dist/ingest/__tests__/vlocity-dispatch-integration.test.js +0 -134
- package/dist/ingest/__tests__/vlocity-dispatch-integration.test.js.map +0 -1
- package/dist/parsers/__tests__/_harness.d.ts +0 -13
- package/dist/parsers/__tests__/_harness.d.ts.map +0 -1
- package/dist/parsers/__tests__/_harness.js +0 -84
- package/dist/parsers/__tests__/_harness.js.map +0 -1
- package/dist/parsers/__tests__/apex.golden.test.d.ts +0 -2
- package/dist/parsers/__tests__/apex.golden.test.d.ts.map +0 -1
- package/dist/parsers/__tests__/apex.golden.test.js +0 -28
- package/dist/parsers/__tests__/apex.golden.test.js.map +0 -1
- package/dist/parsers/__tests__/cross-flavor.test.d.ts +0 -2
- package/dist/parsers/__tests__/cross-flavor.test.d.ts.map +0 -1
- package/dist/parsers/__tests__/cross-flavor.test.js +0 -56
- package/dist/parsers/__tests__/cross-flavor.test.js.map +0 -1
- package/dist/parsers/__tests__/datatransform-structured.test.d.ts +0 -2
- package/dist/parsers/__tests__/datatransform-structured.test.d.ts.map +0 -1
- package/dist/parsers/__tests__/datatransform-structured.test.js +0 -147
- package/dist/parsers/__tests__/datatransform-structured.test.js.map +0 -1
- package/dist/parsers/__tests__/edge-provenance.test.d.ts +0 -2
- package/dist/parsers/__tests__/edge-provenance.test.d.ts.map +0 -1
- package/dist/parsers/__tests__/edge-provenance.test.js +0 -47
- package/dist/parsers/__tests__/edge-provenance.test.js.map +0 -1
- package/dist/parsers/__tests__/flow.golden.test.d.ts +0 -2
- package/dist/parsers/__tests__/flow.golden.test.d.ts.map +0 -1
- package/dist/parsers/__tests__/flow.golden.test.js +0 -17
- package/dist/parsers/__tests__/flow.golden.test.js.map +0 -1
- package/dist/parsers/__tests__/integration.golden.test.d.ts +0 -2
- package/dist/parsers/__tests__/integration.golden.test.d.ts.map +0 -1
- package/dist/parsers/__tests__/integration.golden.test.js +0 -31
- package/dist/parsers/__tests__/integration.golden.test.js.map +0 -1
- package/dist/parsers/__tests__/long-tail.golden.test.d.ts +0 -2
- package/dist/parsers/__tests__/long-tail.golden.test.d.ts.map +0 -1
- package/dist/parsers/__tests__/long-tail.golden.test.js +0 -115
- package/dist/parsers/__tests__/long-tail.golden.test.js.map +0 -1
- package/dist/parsers/__tests__/lwc-bindings.test.d.ts +0 -2
- package/dist/parsers/__tests__/lwc-bindings.test.d.ts.map +0 -1
- package/dist/parsers/__tests__/lwc-bindings.test.js +0 -149
- package/dist/parsers/__tests__/lwc-bindings.test.js.map +0 -1
- package/dist/parsers/__tests__/lwc.golden.test.d.ts +0 -2
- package/dist/parsers/__tests__/lwc.golden.test.d.ts.map +0 -1
- package/dist/parsers/__tests__/lwc.golden.test.js +0 -16
- package/dist/parsers/__tests__/lwc.golden.test.js.map +0 -1
- package/dist/parsers/__tests__/mcd-gap-fills.test.d.ts +0 -2
- package/dist/parsers/__tests__/mcd-gap-fills.test.d.ts.map +0 -1
- package/dist/parsers/__tests__/mcd-gap-fills.test.js +0 -75
- package/dist/parsers/__tests__/mcd-gap-fills.test.js.map +0 -1
- package/dist/parsers/__tests__/object-inline-fields.test.d.ts +0 -2
- package/dist/parsers/__tests__/object-inline-fields.test.d.ts.map +0 -1
- package/dist/parsers/__tests__/object-inline-fields.test.js +0 -115
- package/dist/parsers/__tests__/object-inline-fields.test.js.map +0 -1
- package/dist/parsers/__tests__/object.golden.test.d.ts +0 -2
- package/dist/parsers/__tests__/object.golden.test.d.ts.map +0 -1
- package/dist/parsers/__tests__/object.golden.test.js +0 -33
- package/dist/parsers/__tests__/object.golden.test.js.map +0 -1
- package/dist/parsers/__tests__/omnistudio-overlap.test.d.ts +0 -2
- package/dist/parsers/__tests__/omnistudio-overlap.test.d.ts.map +0 -1
- package/dist/parsers/__tests__/omnistudio-overlap.test.js +0 -163
- package/dist/parsers/__tests__/omnistudio-overlap.test.js.map +0 -1
- package/dist/parsers/__tests__/omnistudio.golden.test.d.ts +0 -2
- package/dist/parsers/__tests__/omnistudio.golden.test.d.ts.map +0 -1
- package/dist/parsers/__tests__/omnistudio.golden.test.js +0 -53
- package/dist/parsers/__tests__/omnistudio.golden.test.js.map +0 -1
- package/dist/parsers/__tests__/reflection-walker.test.d.ts +0 -2
- package/dist/parsers/__tests__/reflection-walker.test.d.ts.map +0 -1
- package/dist/parsers/__tests__/reflection-walker.test.js +0 -162
- package/dist/parsers/__tests__/reflection-walker.test.js.map +0 -1
- package/dist/parsers/__tests__/registry.test.d.ts +0 -2
- package/dist/parsers/__tests__/registry.test.d.ts.map +0 -1
- package/dist/parsers/__tests__/registry.test.js +0 -23
- package/dist/parsers/__tests__/registry.test.js.map +0 -1
- package/dist/parsers/__tests__/security.golden.test.d.ts +0 -2
- package/dist/parsers/__tests__/security.golden.test.d.ts.map +0 -1
- package/dist/parsers/__tests__/security.golden.test.js +0 -31
- package/dist/parsers/__tests__/security.golden.test.js.map +0 -1
- package/dist/parsers/__tests__/vlocity.golden.test.d.ts +0 -2
- package/dist/parsers/__tests__/vlocity.golden.test.d.ts.map +0 -1
- package/dist/parsers/__tests__/vlocity.golden.test.js +0 -105
- package/dist/parsers/__tests__/vlocity.golden.test.js.map +0 -1
- package/dist/parsers/__tests__/worker-pool.test.d.ts +0 -2
- package/dist/parsers/__tests__/worker-pool.test.d.ts.map +0 -1
- package/dist/parsers/__tests__/worker-pool.test.js +0 -48
- package/dist/parsers/__tests__/worker-pool.test.js.map +0 -1
- package/dist/parsers/apex/__tests__/arity-resolver.test.d.ts +0 -2
- package/dist/parsers/apex/__tests__/arity-resolver.test.d.ts.map +0 -1
- package/dist/parsers/apex/__tests__/arity-resolver.test.js +0 -135
- package/dist/parsers/apex/__tests__/arity-resolver.test.js.map +0 -1
- package/dist/parsers/apex/__tests__/ast-extractor.test.d.ts +0 -2
- package/dist/parsers/apex/__tests__/ast-extractor.test.d.ts.map +0 -1
- package/dist/parsers/apex/__tests__/ast-extractor.test.js +0 -206
- package/dist/parsers/apex/__tests__/ast-extractor.test.js.map +0 -1
- package/dist/parsers/apex/__tests__/empty-body.test.d.ts +0 -2
- package/dist/parsers/apex/__tests__/empty-body.test.d.ts.map +0 -1
- package/dist/parsers/apex/__tests__/empty-body.test.js +0 -40
- package/dist/parsers/apex/__tests__/empty-body.test.js.map +0 -1
- package/dist/parsers/apex/__tests__/is-test-attribute.test.d.ts +0 -2
- package/dist/parsers/apex/__tests__/is-test-attribute.test.d.ts.map +0 -1
- package/dist/parsers/apex/__tests__/is-test-attribute.test.js +0 -56
- package/dist/parsers/apex/__tests__/is-test-attribute.test.js.map +0 -1
- package/dist/parsers/apex/__tests__/regex-arg-count.test.d.ts +0 -2
- package/dist/parsers/apex/__tests__/regex-arg-count.test.d.ts.map +0 -1
- package/dist/parsers/apex/__tests__/regex-arg-count.test.js +0 -82
- package/dist/parsers/apex/__tests__/regex-arg-count.test.js.map +0 -1
- package/dist/parsers/apex/__tests__/regex-inloop.test.d.ts +0 -2
- package/dist/parsers/apex/__tests__/regex-inloop.test.d.ts.map +0 -1
- package/dist/parsers/apex/__tests__/regex-inloop.test.js +0 -70
- package/dist/parsers/apex/__tests__/regex-inloop.test.js.map +0 -1
- package/dist/parsers/flow/__tests__/invocable-resolver.test.d.ts +0 -2
- package/dist/parsers/flow/__tests__/invocable-resolver.test.d.ts.map +0 -1
- package/dist/parsers/flow/__tests__/invocable-resolver.test.js +0 -91
- package/dist/parsers/flow/__tests__/invocable-resolver.test.js.map +0 -1
- package/dist/parsers/rules/__tests__/applies-to.test.d.ts +0 -2
- package/dist/parsers/rules/__tests__/applies-to.test.d.ts.map +0 -1
- package/dist/parsers/rules/__tests__/applies-to.test.js +0 -31
- package/dist/parsers/rules/__tests__/applies-to.test.js.map +0 -1
- package/dist/parsers/rules/__tests__/applies-to.test.ts +0 -40
- package/dist/parsers/rules/__tests__/engine.test.d.ts +0 -2
- package/dist/parsers/rules/__tests__/engine.test.d.ts.map +0 -1
- package/dist/parsers/rules/__tests__/engine.test.js +0 -127
- package/dist/parsers/rules/__tests__/engine.test.js.map +0 -1
- package/dist/parsers/rules/__tests__/engine.test.ts +0 -138
- package/dist/parsers/rules/__tests__/loader.test.d.ts +0 -2
- package/dist/parsers/rules/__tests__/loader.test.d.ts.map +0 -1
- package/dist/parsers/rules/__tests__/loader.test.js +0 -31
- package/dist/parsers/rules/__tests__/loader.test.js.map +0 -1
- package/dist/parsers/rules/__tests__/loader.test.ts +0 -37
- package/dist/parsers/rules/__tests__/schema.test.d.ts +0 -2
- package/dist/parsers/rules/__tests__/schema.test.d.ts.map +0 -1
- package/dist/parsers/rules/__tests__/schema.test.js +0 -33
- package/dist/parsers/rules/__tests__/schema.test.js.map +0 -1
- package/dist/parsers/rules/__tests__/schema.test.ts +0 -37
- package/dist/parsers/rules/__tests__/selectors.test.d.ts +0 -2
- package/dist/parsers/rules/__tests__/selectors.test.d.ts.map +0 -1
- package/dist/parsers/rules/__tests__/selectors.test.js +0 -51
- package/dist/parsers/rules/__tests__/selectors.test.js.map +0 -1
- package/dist/parsers/rules/__tests__/selectors.test.ts +0 -62
- package/dist/render/__tests__/sarif.test.d.ts +0 -2
- package/dist/render/__tests__/sarif.test.d.ts.map +0 -1
- package/dist/render/__tests__/sarif.test.js +0 -126
- package/dist/render/__tests__/sarif.test.js.map +0 -1
- package/dist/render/mermaid/__tests__/mermaid.test.d.ts +0 -2
- package/dist/render/mermaid/__tests__/mermaid.test.d.ts.map +0 -1
- package/dist/render/mermaid/__tests__/mermaid.test.js +0 -74
- package/dist/render/mermaid/__tests__/mermaid.test.js.map +0 -1
- package/dist/storage/__tests__/analysis-tables-migration.test.d.ts +0 -2
- package/dist/storage/__tests__/analysis-tables-migration.test.d.ts.map +0 -1
- package/dist/storage/__tests__/analysis-tables-migration.test.js +0 -44
- package/dist/storage/__tests__/analysis-tables-migration.test.js.map +0 -1
- package/dist/storage/__tests__/graph-store.test.d.ts +0 -2
- package/dist/storage/__tests__/graph-store.test.d.ts.map +0 -1
- package/dist/storage/__tests__/graph-store.test.js +0 -145
- package/dist/storage/__tests__/graph-store.test.js.map +0 -1
- package/dist/storage/__tests__/identifier.test.d.ts +0 -2
- package/dist/storage/__tests__/identifier.test.d.ts.map +0 -1
- package/dist/storage/__tests__/identifier.test.js +0 -35
- package/dist/storage/__tests__/identifier.test.js.map +0 -1
- package/dist/storage/__tests__/load-better-sqlite3.test.d.ts +0 -2
- package/dist/storage/__tests__/load-better-sqlite3.test.d.ts.map +0 -1
- package/dist/storage/__tests__/load-better-sqlite3.test.js +0 -65
- package/dist/storage/__tests__/load-better-sqlite3.test.js.map +0 -1
- package/dist/storage/__tests__/migrations.test.d.ts +0 -2
- package/dist/storage/__tests__/migrations.test.d.ts.map +0 -1
- package/dist/storage/__tests__/migrations.test.js +0 -93
- package/dist/storage/__tests__/migrations.test.js.map +0 -1
- package/dist/storage/__tests__/perf-50k.test.d.ts +0 -2
- package/dist/storage/__tests__/perf-50k.test.d.ts.map +0 -1
- package/dist/storage/__tests__/perf-50k.test.js +0 -67
- package/dist/storage/__tests__/perf-50k.test.js.map +0 -1
- package/dist/storage/__tests__/rename-stability.test.d.ts +0 -2
- package/dist/storage/__tests__/rename-stability.test.d.ts.map +0 -1
- package/dist/storage/__tests__/rename-stability.test.js +0 -135
- package/dist/storage/__tests__/rename-stability.test.js.map +0 -1
- package/dist/storage/__tests__/snapshot-store.test.d.ts +0 -2
- package/dist/storage/__tests__/snapshot-store.test.d.ts.map +0 -1
- package/dist/storage/__tests__/snapshot-store.test.js +0 -117
- package/dist/storage/__tests__/snapshot-store.test.js.map +0 -1
- package/dist/storage/__tests__/snippets.test.d.ts +0 -2
- package/dist/storage/__tests__/snippets.test.d.ts.map +0 -1
- package/dist/storage/__tests__/snippets.test.js +0 -88
- package/dist/storage/__tests__/snippets.test.js.map +0 -1
- package/dist/storage/__tests__/sync-generation.test.d.ts +0 -2
- package/dist/storage/__tests__/sync-generation.test.d.ts.map +0 -1
- package/dist/storage/__tests__/sync-generation.test.js +0 -159
- package/dist/storage/__tests__/sync-generation.test.js.map +0 -1
- package/dist/storage/__tests__/vector-store-load-failure.test.d.ts +0 -2
- package/dist/storage/__tests__/vector-store-load-failure.test.d.ts.map +0 -1
- package/dist/storage/__tests__/vector-store-load-failure.test.js +0 -42
- package/dist/storage/__tests__/vector-store-load-failure.test.js.map +0 -1
- package/dist/storage/__tests__/vector-store.test.d.ts +0 -2
- package/dist/storage/__tests__/vector-store.test.d.ts.map +0 -1
- package/dist/storage/__tests__/vector-store.test.js +0 -87
- package/dist/storage/__tests__/vector-store.test.js.map +0 -1
- package/dist/telemetry/__tests__/event-schema.test.d.ts +0 -2
- package/dist/telemetry/__tests__/event-schema.test.d.ts.map +0 -1
- package/dist/telemetry/__tests__/event-schema.test.js +0 -56
- package/dist/telemetry/__tests__/event-schema.test.js.map +0 -1
- package/dist/telemetry/__tests__/machine-id.test.d.ts +0 -2
- package/dist/telemetry/__tests__/machine-id.test.d.ts.map +0 -1
- package/dist/telemetry/__tests__/machine-id.test.js +0 -33
- package/dist/telemetry/__tests__/machine-id.test.js.map +0 -1
- package/dist/telemetry/__tests__/pipeline.test.d.ts +0 -2
- package/dist/telemetry/__tests__/pipeline.test.d.ts.map +0 -1
- package/dist/telemetry/__tests__/pipeline.test.js +0 -68
- package/dist/telemetry/__tests__/pipeline.test.js.map +0 -1
- package/dist/telemetry/__tests__/sanitizer.test.d.ts +0 -2
- package/dist/telemetry/__tests__/sanitizer.test.d.ts.map +0 -1
- package/dist/telemetry/__tests__/sanitizer.test.js +0 -143
- package/dist/telemetry/__tests__/sanitizer.test.js.map +0 -1
|
@@ -14,6 +14,13 @@ export interface CrossOrgDiff {
|
|
|
14
14
|
* narrow the scope or paginate before drawing conclusions.
|
|
15
15
|
*/
|
|
16
16
|
truncated?: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Set when a named `category` matches no label in either store (compared without case), so
|
|
19
|
+
* the empty result means "neither org has any", not "no differences".
|
|
20
|
+
*/
|
|
21
|
+
unknownCategory?: boolean;
|
|
22
|
+
/** The stored label(s) a named `category` resolved to (case-insensitive match). */
|
|
23
|
+
resolvedCategory?: string[];
|
|
17
24
|
}
|
|
18
25
|
/**
|
|
19
26
|
* Per-label cap on cross-org node scans. Exported so callers can surface it
|
|
@@ -39,4 +46,32 @@ export interface DiffOrgsArgs {
|
|
|
39
46
|
*/
|
|
40
47
|
export declare function diffOrgs(args: DiffOrgsArgs): CrossOrgDiff;
|
|
41
48
|
export declare function diffOrgs(store: GraphStore, orgA: OrgId, orgB: OrgId, category?: string | "all"): CrossOrgDiff;
|
|
49
|
+
/**
|
|
50
|
+
* True for a managed-package item: its own name carries a namespace prefix by the API-name
|
|
51
|
+
* grammar (`namespaceOfApiName`: `acme__Invoice__c`, `acme__Loc__Latitude__s`), or it is Apex
|
|
52
|
+
* whose code the org does not show. The org returns managed Apex with an empty body, which the
|
|
53
|
+
* class parser stores as a stub marked `bodyUnavailable`. Graphs built before that marker hold the
|
|
54
|
+
* same stub as a class with no modifiers and no parse failure (a parsed top-level class or enum
|
|
55
|
+
* always declares an access modifier); a trigger stub has no object and no events.
|
|
56
|
+
*/
|
|
57
|
+
export declare function isManagedItem(n: NodeFact): boolean;
|
|
58
|
+
/** True for a standard Salesforce object or field: one without a custom suffix. */
|
|
59
|
+
export declare function isStandardItem(n: NodeFact): boolean;
|
|
60
|
+
export interface HiddenCounts {
|
|
61
|
+
managed: number;
|
|
62
|
+
standard: number;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Drop managed-package and standard items that are in one org only. Such an item
|
|
66
|
+
* is almost always a difference in what was installed or retrieved (every org has
|
|
67
|
+
* the standard objects; a package brings its own pieces), not work someone did.
|
|
68
|
+
* The same items in both orgs with different source stay: that is a real change.
|
|
69
|
+
* A managed item that is also standard counts once, as managed.
|
|
70
|
+
*/
|
|
71
|
+
export declare function hideOneSided(diff: CrossOrgDiff, opts: {
|
|
72
|
+
includeManaged: boolean;
|
|
73
|
+
includeStandard: boolean;
|
|
74
|
+
}): CrossOrgDiff & {
|
|
75
|
+
hidden: HiddenCounts;
|
|
76
|
+
};
|
|
42
77
|
//# sourceMappingURL=cross-org.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cross-org.d.ts","sourceRoot":"","sources":["../../src/analyze/cross-org.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"cross-org.d.ts","sourceRoot":"","sources":["../../src/analyze/cross-org.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAG3D,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,OAAO,EAAE,KAAK,CAAC;QAAE,CAAC,EAAE,QAAQ,CAAC;QAAC,CAAC,EAAE,QAAQ,CAAA;KAAE,CAAC,CAAC;IAC7C;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,mFAAmF;IACnF,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAkB7C,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,KAAK,CAAC;IACZ,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,KAAK,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,CAAC;AAC3D,wBAAgB,QAAQ,CACtB,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,KAAK,EACX,IAAI,EAAE,KAAK,EACX,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,GACxB,YAAY,CAAC;AAwFhB;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO,CAgBlD;AAED,mFAAmF;AACnF,wBAAgB,cAAc,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO,CAGnD;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE;IAAE,cAAc,EAAE,OAAO,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAAE,GAC1D,YAAY,GAAG;IAAE,MAAM,EAAE,YAAY,CAAA;CAAE,CAmBzC"}
|
|
@@ -1,10 +1,25 @@
|
|
|
1
1
|
import { METADATA_CATEGORY } from "../domain/metadata-category.js";
|
|
2
|
+
import { namespaceOfApiName } from "./field-scope.js";
|
|
2
3
|
/**
|
|
3
4
|
* Per-label cap on cross-org node scans. Exported so callers can surface it
|
|
4
5
|
* verbatim in user-facing summaries.
|
|
5
6
|
*/
|
|
6
7
|
export const CROSS_ORG_PER_LABEL_CAP = 10000;
|
|
7
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Labels `category: "all"` covers: every label stored in either graph (parsers
|
|
10
|
+
* emit labels such as LWC, ApexMethod, DataRaptor or OmniScript that are not
|
|
11
|
+
* METADATA_CATEGORY values), plus the category names for stores that predate
|
|
12
|
+
* the label cache.
|
|
13
|
+
*/
|
|
14
|
+
function allLabels(storeA, storeB) {
|
|
15
|
+
return [
|
|
16
|
+
...new Set([
|
|
17
|
+
...storeA.listAllLabels(),
|
|
18
|
+
...storeB.listAllLabels(),
|
|
19
|
+
...Object.values(METADATA_CATEGORY),
|
|
20
|
+
]),
|
|
21
|
+
];
|
|
22
|
+
}
|
|
8
23
|
export function diffOrgs(storeOrArgs, maybeOrgA, maybeOrgB, maybeCategory = "all") {
|
|
9
24
|
let storeA;
|
|
10
25
|
let storeB;
|
|
@@ -29,7 +44,17 @@ export function diffOrgs(storeOrArgs, maybeOrgA, maybeOrgB, maybeCategory = "all
|
|
|
29
44
|
orgB = maybeOrgB;
|
|
30
45
|
category = maybeCategory;
|
|
31
46
|
}
|
|
32
|
-
|
|
47
|
+
// `all` in any case means every label; a named category matches stored labels without case
|
|
48
|
+
// (`apexclass` finds `ApexClass`), so a casing slip does not read as "no differences".
|
|
49
|
+
const isAll = category.toLowerCase() === "all";
|
|
50
|
+
const wanted = category.toLowerCase();
|
|
51
|
+
const resolved = isAll
|
|
52
|
+
? []
|
|
53
|
+
: [
|
|
54
|
+
...new Set([...storeA.listAllLabels(), ...storeB.listAllLabels()].filter((l) => l.toLowerCase() === wanted)),
|
|
55
|
+
];
|
|
56
|
+
// No stored label matches: still query the name as given (a store without the label cache).
|
|
57
|
+
const labels = isAll ? allLabels(storeA, storeB) : resolved.length ? resolved : [category];
|
|
33
58
|
const aMap = new Map();
|
|
34
59
|
const bMap = new Map();
|
|
35
60
|
let truncated = false;
|
|
@@ -59,6 +84,80 @@ export function diffOrgs(storeOrArgs, maybeOrgA, maybeOrgB, maybeCategory = "all
|
|
|
59
84
|
if (!aMap.has(k))
|
|
60
85
|
onlyInB.push(b);
|
|
61
86
|
}
|
|
62
|
-
|
|
87
|
+
if (isAll)
|
|
88
|
+
return { onlyInA, onlyInB, changed, truncated };
|
|
89
|
+
if (resolved.length > 0 || aMap.size > 0 || bMap.size > 0)
|
|
90
|
+
return {
|
|
91
|
+
onlyInA,
|
|
92
|
+
onlyInB,
|
|
93
|
+
changed,
|
|
94
|
+
truncated,
|
|
95
|
+
resolvedCategory: resolved.length ? resolved : [category],
|
|
96
|
+
};
|
|
97
|
+
return { onlyInA, onlyInB, changed, truncated, unknownCategory: true, resolvedCategory: [] };
|
|
98
|
+
}
|
|
99
|
+
/** The item's own name: the last dotted part of the qname (`Tier__c` for `CustomField:Account.Tier__c`). */
|
|
100
|
+
function ownName(n) {
|
|
101
|
+
const q = String(n.qualifiedName);
|
|
102
|
+
const local = q.slice(q.indexOf(":") + 1);
|
|
103
|
+
return local.slice(local.lastIndexOf(".") + 1);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* True for a managed-package item: its own name carries a namespace prefix by the API-name
|
|
107
|
+
* grammar (`namespaceOfApiName`: `acme__Invoice__c`, `acme__Loc__Latitude__s`), or it is Apex
|
|
108
|
+
* whose code the org does not show. The org returns managed Apex with an empty body, which the
|
|
109
|
+
* class parser stores as a stub marked `bodyUnavailable`. Graphs built before that marker hold the
|
|
110
|
+
* same stub as a class with no modifiers and no parse failure (a parsed top-level class or enum
|
|
111
|
+
* always declares an access modifier); a trigger stub has no object and no events.
|
|
112
|
+
*/
|
|
113
|
+
export function isManagedItem(n) {
|
|
114
|
+
if (namespaceOfApiName(ownName(n)) !== null)
|
|
115
|
+
return true;
|
|
116
|
+
const a = n.attributes ?? {};
|
|
117
|
+
if (n.label === "ApexClass") {
|
|
118
|
+
if (a.bodyUnavailable === true)
|
|
119
|
+
return true;
|
|
120
|
+
return (a.bodyUnavailable === undefined &&
|
|
121
|
+
Array.isArray(a.modifiers) &&
|
|
122
|
+
a.modifiers.length === 0 &&
|
|
123
|
+
!a.parseFailed &&
|
|
124
|
+
!a.isTest);
|
|
125
|
+
}
|
|
126
|
+
if (n.label === "ApexTrigger")
|
|
127
|
+
return Array.isArray(a.events) && a.events.length === 0 && a.object == null;
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
/** True for a standard Salesforce object or field: one without a custom suffix. */
|
|
131
|
+
export function isStandardItem(n) {
|
|
132
|
+
if (n.label !== "CustomObject" && n.label !== "CustomField")
|
|
133
|
+
return false;
|
|
134
|
+
return !ownName(n).includes("__");
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Drop managed-package and standard items that are in one org only. Such an item
|
|
138
|
+
* is almost always a difference in what was installed or retrieved (every org has
|
|
139
|
+
* the standard objects; a package brings its own pieces), not work someone did.
|
|
140
|
+
* The same items in both orgs with different source stay: that is a real change.
|
|
141
|
+
* A managed item that is also standard counts once, as managed.
|
|
142
|
+
*/
|
|
143
|
+
export function hideOneSided(diff, opts) {
|
|
144
|
+
const hidden = { managed: 0, standard: 0 };
|
|
145
|
+
const keep = (n) => {
|
|
146
|
+
if (!opts.includeManaged && isManagedItem(n)) {
|
|
147
|
+
hidden.managed++;
|
|
148
|
+
return false;
|
|
149
|
+
}
|
|
150
|
+
if (!opts.includeStandard && isStandardItem(n)) {
|
|
151
|
+
hidden.standard++;
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
return true;
|
|
155
|
+
};
|
|
156
|
+
return {
|
|
157
|
+
...diff,
|
|
158
|
+
onlyInA: diff.onlyInA.filter(keep),
|
|
159
|
+
onlyInB: diff.onlyInB.filter(keep),
|
|
160
|
+
hidden,
|
|
161
|
+
};
|
|
63
162
|
}
|
|
64
163
|
//# sourceMappingURL=cross-org.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cross-org.js","sourceRoot":"","sources":["../../src/analyze/cross-org.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"cross-org.js","sourceRoot":"","sources":["../../src/analyze/cross-org.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,104 @@
|
|
|
1
|
-
import type { OrgId } from "@ryanstark24/sfgraph-shared";
|
|
2
|
-
import type
|
|
1
|
+
import type { OrgId, QualifiedName } from "@ryanstark24/sfgraph-shared";
|
|
2
|
+
import { type NodeFact } from "../domain/index.js";
|
|
3
3
|
import type { GraphStore } from "../storage/interfaces.js";
|
|
4
|
+
/** The LWC parser (filesystem and live-org ingest alike) labels component
|
|
5
|
+
* nodes "LWC"; `METADATA_CATEGORY.LWC` is the member type
|
|
6
|
+
* "LightningComponentBundle", kept in case an older store uses it. */
|
|
7
|
+
export declare const LWC_NODE_LABEL = "LWC";
|
|
8
|
+
/** Labels the dead-code audit covers. One list for `findDeadCode` and the
|
|
9
|
+
* `_sfgraph_dead_code_scores` cache, so both produce the same candidates. */
|
|
10
|
+
export declare const DEAD_CODE_LABELS: readonly string[];
|
|
11
|
+
/** Is the edge's source test code? Memoised per audit run. */
|
|
12
|
+
export type TestSourceCheck = (src: QualifiedName) => boolean;
|
|
4
13
|
/**
|
|
5
|
-
*
|
|
14
|
+
* A source is test code when its node is `@isTest` (an @isTest class, a
|
|
15
|
+
* TestMethod) or it is a member of an @isTest class (an untagged helper method
|
|
16
|
+
* inside a test class).
|
|
6
17
|
*/
|
|
18
|
+
export declare function makeTestSourceCheck(store: GraphStore, orgId: OrgId): TestSourceCheck;
|
|
19
|
+
export interface IncomingRefs {
|
|
20
|
+
/** Real usage references from production code. */
|
|
21
|
+
real: number;
|
|
22
|
+
/** References that would be real but come from test code (or IS_TEST_FOR). */
|
|
23
|
+
testOnly: number;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Count incoming edges that represent a REAL usage reference. Excludes:
|
|
27
|
+
* - permission grants (`GRANTS_*`) — being readable by a profile is not usage;
|
|
28
|
+
* - reflection-sourced edges (`attributes.source === 'reflection'`) — these are
|
|
29
|
+
* low-confidence, pattern-matched guesses, not proof the node is invoked;
|
|
30
|
+
* - the component's own bundle `CONTAINS_COMPONENT` (every LWC has one);
|
|
31
|
+
* - member containment (`CONTAINS_METHOD`): a method's own class is structure;
|
|
32
|
+
* - an object's own structure (`DEFINES_FIELD`, `HAS_VALIDATION_RULE`,
|
|
33
|
+
* `HAS_RECORD_TYPE`): a field is not used by the object that defines it.
|
|
34
|
+
* Counting any of these as a reference kept genuinely dead code "alive" in the audit.
|
|
35
|
+
*
|
|
36
|
+
* References from test code (`IS_TEST_FOR`, @isTest classes, test methods and
|
|
37
|
+
* members of @isTest classes) are counted apart in `testOnly`. They are
|
|
38
|
+
* references too (`deadCodeKind`): a class with test references only is not
|
|
39
|
+
* dead but `referenced-only-by-tests`, listed apart from the dead code.
|
|
40
|
+
*
|
|
41
|
+
* A reference to a member is a reference to its owner (containment.ts): edges
|
|
42
|
+
* into an ApexClass's methods count for the class. Edges from the node itself
|
|
43
|
+
* or its own members (internal calls) do not.
|
|
44
|
+
*
|
|
45
|
+
* The compiled-LWC → OmniScript edge is not usage by itself: it counts only
|
|
46
|
+
* when that LWC is itself launched by something real (same rules, and not
|
|
47
|
+
* the OmniScript itself), so liveness follows the launch path.
|
|
48
|
+
*/
|
|
49
|
+
export declare function incomingRefs(store: GraphStore, orgId: OrgId, qname: QualifiedName, isTestSource?: TestSourceCheck): IncomingRefs;
|
|
50
|
+
/** Real (production) incoming references; see `incomingRefs`. */
|
|
51
|
+
export declare function realIncomingRefCount(store: GraphStore, orgId: OrgId, qname: QualifiedName): number;
|
|
52
|
+
/** An `@isTest` class (or test method) node. */
|
|
53
|
+
export declare function isTestClass(n: NodeFact): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* `dead`: nothing references the node, test code included.
|
|
56
|
+
* `referenced-only-by-tests`: production code whose only references come
|
|
57
|
+
* from test code (delete-safety view: it goes together with its tests).
|
|
58
|
+
*/
|
|
59
|
+
export type DeadCodeKind = "dead" | "referenced-only-by-tests";
|
|
60
|
+
export interface DeadCodeCandidate {
|
|
61
|
+
node: NodeFact;
|
|
62
|
+
kind: DeadCodeKind;
|
|
63
|
+
/** The node is an `@isTest` class. */
|
|
64
|
+
isTest: boolean;
|
|
65
|
+
/** References from test code (> 0 only for `referenced-only-by-tests`). */
|
|
66
|
+
testOnlyRefs: number;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* The kind of a node with these incoming references, or null when it is in
|
|
70
|
+
* use. Test references count as references (catalog contract: "test classes
|
|
71
|
+
* do count as references"), so a class a test uses is not dead; an `@isTest`
|
|
72
|
+
* class nothing references is dead like any other node (flagged `isTest`). A
|
|
73
|
+
* production node referenced by tests only is listed apart; test code
|
|
74
|
+
* referenced by other tests (a test utility) is in use.
|
|
75
|
+
*/
|
|
76
|
+
export declare function deadCodeKind(refs: IncomingRefs, isTest: boolean): DeadCodeKind | null;
|
|
77
|
+
/**
|
|
78
|
+
* Dead-code candidates of DEAD_CODE_LABELS, both kinds (`deadCodeKind`):
|
|
79
|
+
* the score cache holds both and readers keep them apart. Freshness does not
|
|
80
|
+
* decide membership; it grades confidence in the score cache
|
|
81
|
+
* (`populateDeadCodeScores`: stale = high, recently modified = low). A
|
|
82
|
+
* filesystem ingest stamps every node with its checkout mtime, so a freshness
|
|
83
|
+
* gate here would hide every unreferenced node.
|
|
84
|
+
*/
|
|
85
|
+
export declare function deadCodeCandidates(store: GraphStore, orgId: OrgId): DeadCodeCandidate[];
|
|
86
|
+
/** The dead nodes of `deadCodeCandidates` (no inbound reference of any kind). */
|
|
7
87
|
export declare function findDeadCode(store: GraphStore, orgId: OrgId): NodeFact[];
|
|
88
|
+
export type DeadCodeConfidence = "high" | "medium" | "low";
|
|
89
|
+
export interface DeadCodeScore {
|
|
90
|
+
score: number;
|
|
91
|
+
confidence: DeadCodeConfidence;
|
|
92
|
+
reasons: string[];
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Score a dead-code candidate (a node `findDeadCode` returned). Lower = more
|
|
96
|
+
* dead. With zero inbound the incoming term (0.4 weight) is 0, so the score is
|
|
97
|
+
* 0.6 * freshness: older than 180 days = high, 31-180 days or no timestamp =
|
|
98
|
+
* medium, 30 days or newer = low. Shared by the score cache and the live path.
|
|
99
|
+
* `testOnlyRefs` > 0 (a `deadCodeCandidates` count) gives the reason
|
|
100
|
+
* `referenced_only_by_tests` in place of `no_incoming_edges`; `isTest` adds
|
|
101
|
+
* `test_class` (an unreferenced `@isTest` class).
|
|
102
|
+
*/
|
|
103
|
+
export declare function scoreDeadCode(node: NodeFact, now?: number, testOnlyRefs?: number, isTest?: boolean): DeadCodeScore;
|
|
8
104
|
//# sourceMappingURL=dead-code.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dead-code.d.ts","sourceRoot":"","sources":["../../src/analyze/dead-code.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"dead-code.d.ts","sourceRoot":"","sources":["../../src/analyze/dead-code.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAiB,KAAK,QAAQ,EAAa,MAAM,oBAAoB,CAAC;AAE7E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAI3D;;uEAEuE;AACvE,eAAO,MAAM,cAAc,QAAQ,CAAC;AAEpC;8EAC8E;AAC9E,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAO7C,CAAC;AAyFF,8DAA8D;AAC9D,MAAM,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC;AAE9D;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,GAAG,eAAe,CAwCpF;AAED,MAAM,WAAW,YAAY;IAC3B,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,aAAa,EACpB,YAAY,GAAE,eAAmD,GAChE,YAAY,CASd;AAsCD,iEAAiE;AACjE,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,aAAa,GACnB,MAAM,CAER;AAED,gDAAgD;AAChD,wBAAgB,WAAW,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO,CAEhD;AAED;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,0BAA0B,CAAC;AAE/D,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,YAAY,CAAC;IACnB,sCAAsC;IACtC,MAAM,EAAE,OAAO,CAAC;IAChB,2EAA2E;IAC3E,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CAIrF;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,GAAG,iBAAiB,EAAE,CA8BvF;AA6BD,iFAAiF;AACjF,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,GAAG,QAAQ,EAAE,CAIxE;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE3D,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,kBAAkB,CAAC;IAC/B,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,QAAQ,EACd,GAAG,SAAa,EAChB,YAAY,SAAI,EAChB,MAAM,UAAQ,GACb,aAAa,CAUf"}
|
|
@@ -1,21 +1,293 @@
|
|
|
1
|
+
import { REL_TYPES } from "../domain/index.js";
|
|
1
2
|
import { METADATA_CATEGORY } from "../domain/metadata-category.js";
|
|
3
|
+
import { isMemberContainmentEdge, listMembers, membersReader, ownerOf } from "./containment.js";
|
|
2
4
|
import { freshnessScore } from "./freshness.js";
|
|
3
|
-
|
|
5
|
+
/** The LWC parser (filesystem and live-org ingest alike) labels component
|
|
6
|
+
* nodes "LWC"; `METADATA_CATEGORY.LWC` is the member type
|
|
7
|
+
* "LightningComponentBundle", kept in case an older store uses it. */
|
|
8
|
+
export const LWC_NODE_LABEL = "LWC";
|
|
9
|
+
/** Labels the dead-code audit covers. One list for `findDeadCode` and the
|
|
10
|
+
* `_sfgraph_dead_code_scores` cache, so both produce the same candidates. */
|
|
11
|
+
export const DEAD_CODE_LABELS = [
|
|
12
|
+
METADATA_CATEGORY.APEX_CLASS,
|
|
13
|
+
LWC_NODE_LABEL,
|
|
14
|
+
METADATA_CATEGORY.LWC,
|
|
15
|
+
METADATA_CATEGORY.FLOW,
|
|
16
|
+
METADATA_CATEGORY.APEX_PAGE,
|
|
17
|
+
METADATA_CATEGORY.APEX_COMPONENT,
|
|
18
|
+
];
|
|
19
|
+
const DEAD_CODE_NODE_CAP = 10000;
|
|
20
|
+
/** Bundle container label -> the component label it contains. */
|
|
21
|
+
const BUNDLE_COMPONENT_LABEL = {
|
|
22
|
+
LWCBundle: LWC_NODE_LABEL,
|
|
23
|
+
};
|
|
24
|
+
const nameOf = (q) => {
|
|
25
|
+
const s = String(q);
|
|
26
|
+
return s.slice(s.indexOf(":") + 1);
|
|
27
|
+
};
|
|
28
|
+
/** ASCII-only lowercase: what the store's NOCASE qname columns fold. */
|
|
29
|
+
const nocase = (s) => s.replace(/[A-Z]/g, (c) => c.toLowerCase());
|
|
30
|
+
const labelOf = (q) => {
|
|
31
|
+
const s = String(q);
|
|
32
|
+
return s.slice(0, Math.max(0, s.indexOf(":")));
|
|
33
|
+
};
|
|
34
|
+
/** A component's own bundle container, e.g. `LWCBundle:x -CONTAINS_COMPONENT-> LWC:x`
|
|
35
|
+
* (paired labels from BUNDLE_COMPONENT_LABEL, same name). Structural, never usage.
|
|
36
|
+
* Any other bundle label containing the node is a real reference. */
|
|
37
|
+
function isOwnBundleEdge(e) {
|
|
38
|
+
if (String(e.relType) !== "CONTAINS_COMPONENT")
|
|
39
|
+
return false;
|
|
40
|
+
const component = BUNDLE_COMPONENT_LABEL[labelOf(e.srcQualifiedName)];
|
|
41
|
+
return (component !== undefined &&
|
|
42
|
+
component === labelOf(e.dstQualifiedName) &&
|
|
43
|
+
nameOf(e.srcQualifiedName) === nameOf(e.dstQualifiedName));
|
|
44
|
+
}
|
|
4
45
|
/**
|
|
5
|
-
*
|
|
46
|
+
* A Custom Metadata record field naming exactly one Apex class
|
|
47
|
+
* (`Handler__c = 'MyHandler'`) is how metadata-driven dispatch
|
|
48
|
+
* (`Type.forName(record.Handler__c)`) wires that class: the reflection
|
|
49
|
+
* walker's unambiguous CustomMetadataRecord -> ApexClass edge is usage.
|
|
6
50
|
*/
|
|
7
|
-
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
51
|
+
function isCmdtClassReflection(e) {
|
|
52
|
+
const a = e.attributes ?? {};
|
|
53
|
+
return (a.ambiguous !== true &&
|
|
54
|
+
labelOf(e.srcQualifiedName) === "CustomMetadataRecord" &&
|
|
55
|
+
labelOf(e.dstQualifiedName) === "ApexClass");
|
|
56
|
+
}
|
|
57
|
+
/** An object's edges to its own parts: the field, validation rule or record type exists on the
|
|
58
|
+
* object; nothing uses it through these. Counting them kept every field "in use". */
|
|
59
|
+
const OWNER_STRUCTURE_RELTYPES = new Set([
|
|
60
|
+
REL_TYPES.DEFINES_FIELD,
|
|
61
|
+
REL_TYPES.HAS_VALIDATION_RULE,
|
|
62
|
+
REL_TYPES.HAS_RECORD_TYPE,
|
|
63
|
+
]);
|
|
64
|
+
/** Grants, reflection guesses (bar CMDT-named classes), own-bundle and member
|
|
65
|
+
* containment, and an object's own structure are never usage. */
|
|
66
|
+
function isRealRef(e) {
|
|
67
|
+
if (String(e.relType).startsWith("GRANTS_"))
|
|
68
|
+
return false;
|
|
69
|
+
if (OWNER_STRUCTURE_RELTYPES.has(String(e.relType)))
|
|
70
|
+
return false;
|
|
71
|
+
if (e.attributes?.source === "reflection" &&
|
|
72
|
+
!isCmdtClassReflection(e))
|
|
73
|
+
return false;
|
|
74
|
+
if (isOwnBundleEdge(e))
|
|
75
|
+
return false;
|
|
76
|
+
if (isMemberContainmentEdge(e))
|
|
77
|
+
return false;
|
|
78
|
+
return true;
|
|
79
|
+
}
|
|
80
|
+
/** `LWC:x -REFERENCES{via:compiled-omniscript}-> OmniScript:…`: the compiled
|
|
81
|
+
* runtime of the OmniScript (LWC parser, `_def.js`). */
|
|
82
|
+
function isCompileEdge(e) {
|
|
83
|
+
return (String(e.relType) === "REFERENCES" &&
|
|
84
|
+
e.attributes?.via === "compiled-omniscript");
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* A source is test code when its node is `@isTest` (an @isTest class, a
|
|
88
|
+
* TestMethod) or it is a member of an @isTest class (an untagged helper method
|
|
89
|
+
* inside a test class).
|
|
90
|
+
*/
|
|
91
|
+
export function makeTestSourceCheck(store, orgId) {
|
|
92
|
+
const memo = new Map();
|
|
93
|
+
// Memoised too: every method of a class asks about the same owner.
|
|
94
|
+
const taggedMemo = new Map();
|
|
95
|
+
// Every `isTest: true` node of the org, read once (NOCASE keys, like
|
|
96
|
+
// getNode's lookup). Null: the store cannot list them (or the read failed),
|
|
97
|
+
// so each node is read on its own.
|
|
98
|
+
let testTagged;
|
|
99
|
+
const tagged = (q) => {
|
|
100
|
+
const key = String(q);
|
|
101
|
+
let v = taggedMemo.get(key);
|
|
102
|
+
if (v === undefined) {
|
|
103
|
+
if (testTagged === undefined) {
|
|
104
|
+
try {
|
|
105
|
+
const s = store.listNodesWithTrueAttribute?.(orgId, "isTest");
|
|
106
|
+
testTagged = s ? new Set([...s].map(nocase)) : null;
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
testTagged = null;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
if (testTagged) {
|
|
113
|
+
v = testTagged.has(nocase(key));
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
const n = store.getNode(orgId, q);
|
|
117
|
+
v = n !== null && isTestClass(n);
|
|
118
|
+
}
|
|
119
|
+
taggedMemo.set(key, v);
|
|
120
|
+
}
|
|
121
|
+
return v;
|
|
122
|
+
};
|
|
123
|
+
return (src) => {
|
|
124
|
+
const key = String(src);
|
|
125
|
+
let v = memo.get(key);
|
|
126
|
+
if (v === undefined) {
|
|
127
|
+
const owner = tagged(src) ? null : ownerOf(store, orgId, src);
|
|
128
|
+
v = owner === null ? tagged(src) : tagged(owner);
|
|
129
|
+
memo.set(key, v);
|
|
130
|
+
}
|
|
131
|
+
return v;
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Count incoming edges that represent a REAL usage reference. Excludes:
|
|
136
|
+
* - permission grants (`GRANTS_*`) — being readable by a profile is not usage;
|
|
137
|
+
* - reflection-sourced edges (`attributes.source === 'reflection'`) — these are
|
|
138
|
+
* low-confidence, pattern-matched guesses, not proof the node is invoked;
|
|
139
|
+
* - the component's own bundle `CONTAINS_COMPONENT` (every LWC has one);
|
|
140
|
+
* - member containment (`CONTAINS_METHOD`): a method's own class is structure;
|
|
141
|
+
* - an object's own structure (`DEFINES_FIELD`, `HAS_VALIDATION_RULE`,
|
|
142
|
+
* `HAS_RECORD_TYPE`): a field is not used by the object that defines it.
|
|
143
|
+
* Counting any of these as a reference kept genuinely dead code "alive" in the audit.
|
|
144
|
+
*
|
|
145
|
+
* References from test code (`IS_TEST_FOR`, @isTest classes, test methods and
|
|
146
|
+
* members of @isTest classes) are counted apart in `testOnly`. They are
|
|
147
|
+
* references too (`deadCodeKind`): a class with test references only is not
|
|
148
|
+
* dead but `referenced-only-by-tests`, listed apart from the dead code.
|
|
149
|
+
*
|
|
150
|
+
* A reference to a member is a reference to its owner (containment.ts): edges
|
|
151
|
+
* into an ApexClass's methods count for the class. Edges from the node itself
|
|
152
|
+
* or its own members (internal calls) do not.
|
|
153
|
+
*
|
|
154
|
+
* The compiled-LWC → OmniScript edge is not usage by itself: it counts only
|
|
155
|
+
* when that LWC is itself launched by something real (same rules, and not
|
|
156
|
+
* the OmniScript itself), so liveness follows the launch path.
|
|
157
|
+
*/
|
|
158
|
+
export function incomingRefs(store, orgId, qname, isTestSource = makeTestSourceCheck(store, orgId)) {
|
|
159
|
+
return countIncomingRefs(store, orgId, qname, [qname, ...listMembers(store, orgId, qname)], (target) => store.listEdgesTo(orgId, target), isTestSource);
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* incomingRefs over given `targets` (the node and its members), with every
|
|
163
|
+
* target's incoming edges from `edgesTo` (the rows `listEdgesTo` returns,
|
|
164
|
+
* in any order: only counts come out).
|
|
165
|
+
*/
|
|
166
|
+
function countIncomingRefs(store, orgId, qname, targets, edgesTo, isTestSource) {
|
|
167
|
+
const self = new Set(targets);
|
|
168
|
+
const out = { real: 0, testOnly: 0 };
|
|
169
|
+
const fromTest = (e) => String(e.relType) === REL_TYPES.IS_TEST_FOR || isTestSource(e.srcQualifiedName);
|
|
170
|
+
for (const target of targets) {
|
|
171
|
+
for (const e of edgesTo(target)) {
|
|
172
|
+
if (self.has(String(e.srcQualifiedName)))
|
|
173
|
+
continue;
|
|
174
|
+
if (!isRealRef(e))
|
|
175
|
+
continue;
|
|
176
|
+
if (isCompileEdge(e) &&
|
|
177
|
+
!store
|
|
178
|
+
.listEdgesTo(orgId, e.srcQualifiedName)
|
|
179
|
+
.some((x) => isRealRef(x) && String(x.srcQualifiedName) !== String(qname) && !fromTest(x))) {
|
|
13
180
|
continue;
|
|
14
|
-
if (store.listEdgesTo(orgId, n.qualifiedName).length === 0) {
|
|
15
|
-
out.push(n);
|
|
16
181
|
}
|
|
182
|
+
if (fromTest(e))
|
|
183
|
+
out.testOnly += 1;
|
|
184
|
+
else
|
|
185
|
+
out.real += 1;
|
|
17
186
|
}
|
|
18
187
|
}
|
|
19
188
|
return out;
|
|
20
189
|
}
|
|
190
|
+
/** Real (production) incoming references; see `incomingRefs`. */
|
|
191
|
+
export function realIncomingRefCount(store, orgId, qname) {
|
|
192
|
+
return incomingRefs(store, orgId, qname).real;
|
|
193
|
+
}
|
|
194
|
+
/** An `@isTest` class (or test method) node. */
|
|
195
|
+
export function isTestClass(n) {
|
|
196
|
+
return n.attributes?.isTest === true;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* The kind of a node with these incoming references, or null when it is in
|
|
200
|
+
* use. Test references count as references (catalog contract: "test classes
|
|
201
|
+
* do count as references"), so a class a test uses is not dead; an `@isTest`
|
|
202
|
+
* class nothing references is dead like any other node (flagged `isTest`). A
|
|
203
|
+
* production node referenced by tests only is listed apart; test code
|
|
204
|
+
* referenced by other tests (a test utility) is in use.
|
|
205
|
+
*/
|
|
206
|
+
export function deadCodeKind(refs, isTest) {
|
|
207
|
+
if (refs.real + refs.testOnly === 0)
|
|
208
|
+
return "dead";
|
|
209
|
+
if (refs.real === 0 && !isTest)
|
|
210
|
+
return "referenced-only-by-tests";
|
|
211
|
+
return null;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Dead-code candidates of DEAD_CODE_LABELS, both kinds (`deadCodeKind`):
|
|
215
|
+
* the score cache holds both and readers keep them apart. Freshness does not
|
|
216
|
+
* decide membership; it grades confidence in the score cache
|
|
217
|
+
* (`populateDeadCodeScores`: stale = high, recently modified = low). A
|
|
218
|
+
* filesystem ingest stamps every node with its checkout mtime, so a freshness
|
|
219
|
+
* gate here would hide every unreferenced node.
|
|
220
|
+
*/
|
|
221
|
+
export function deadCodeCandidates(store, orgId) {
|
|
222
|
+
const isTestSource = makeTestSourceCheck(store, orgId);
|
|
223
|
+
const out = [];
|
|
224
|
+
for (const lbl of DEAD_CODE_LABELS) {
|
|
225
|
+
const nodes = store.listNodesByLabel(orgId, lbl, DEAD_CODE_NODE_CAP);
|
|
226
|
+
for (let i = 0; i < nodes.length; i += INCOMING_CHUNK) {
|
|
227
|
+
const chunk = nodes.slice(i, i + INCOMING_CHUNK);
|
|
228
|
+
const membersOf = membersReader(store, orgId, chunk.map((n) => n.qualifiedName));
|
|
229
|
+
const targetsOf = chunk.map((n) => [n.qualifiedName, ...membersOf(n.qualifiedName)]);
|
|
230
|
+
const edgesTo = incomingEdgeReader(store, orgId, targetsOf.flat());
|
|
231
|
+
chunk.forEach((n, j) => {
|
|
232
|
+
const isTest = isTestClass(n);
|
|
233
|
+
const refs = countIncomingRefs(store, orgId, n.qualifiedName, targetsOf[j], edgesTo, isTestSource);
|
|
234
|
+
const kind = deadCodeKind(refs, isTest);
|
|
235
|
+
if (kind)
|
|
236
|
+
out.push({ node: n, kind, isTest, testOnlyRefs: refs.testOnly });
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
return out;
|
|
241
|
+
}
|
|
242
|
+
/** Candidates whose incoming edges are read together (one read per edge table). */
|
|
243
|
+
const INCOMING_CHUNK = 256;
|
|
244
|
+
/**
|
|
245
|
+
* `target -> listEdgesTo(target)` for a set of targets, from one batched read
|
|
246
|
+
* (`listEdgesToAny`: `dst IN (...)`, NOCASE like `dst = ?`) grouped by the
|
|
247
|
+
* NOCASE dst, so each target gets exactly the rows its own `listEdgesTo`
|
|
248
|
+
* would. Stores without the batched read fall back to per-target reads.
|
|
249
|
+
*/
|
|
250
|
+
function incomingEdgeReader(store, orgId, targets) {
|
|
251
|
+
if (typeof store.listEdgesToAny !== "function") {
|
|
252
|
+
return (target) => store.listEdgesTo(orgId, target);
|
|
253
|
+
}
|
|
254
|
+
const byDst = new Map();
|
|
255
|
+
for (const e of store.listEdgesToAny(orgId, new Set(targets.map(String)))) {
|
|
256
|
+
const k = nocase(String(e.dstQualifiedName));
|
|
257
|
+
const list = byDst.get(k);
|
|
258
|
+
if (list)
|
|
259
|
+
list.push(e);
|
|
260
|
+
else
|
|
261
|
+
byDst.set(k, [e]);
|
|
262
|
+
}
|
|
263
|
+
return (target) => byDst.get(nocase(String(target))) ?? [];
|
|
264
|
+
}
|
|
265
|
+
/** The dead nodes of `deadCodeCandidates` (no inbound reference of any kind). */
|
|
266
|
+
export function findDeadCode(store, orgId) {
|
|
267
|
+
return deadCodeCandidates(store, orgId)
|
|
268
|
+
.filter((c) => c.kind === "dead")
|
|
269
|
+
.map((c) => c.node);
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Score a dead-code candidate (a node `findDeadCode` returned). Lower = more
|
|
273
|
+
* dead. With zero inbound the incoming term (0.4 weight) is 0, so the score is
|
|
274
|
+
* 0.6 * freshness: older than 180 days = high, 31-180 days or no timestamp =
|
|
275
|
+
* medium, 30 days or newer = low. Shared by the score cache and the live path.
|
|
276
|
+
* `testOnlyRefs` > 0 (a `deadCodeCandidates` count) gives the reason
|
|
277
|
+
* `referenced_only_by_tests` in place of `no_incoming_edges`; `isTest` adds
|
|
278
|
+
* `test_class` (an unreferenced `@isTest` class).
|
|
279
|
+
*/
|
|
280
|
+
export function scoreDeadCode(node, now = Date.now(), testOnlyRefs = 0, isTest = false) {
|
|
281
|
+
const fresh = freshnessScore(node, now);
|
|
282
|
+
// A class with only test references has incoming edges, so it is
|
|
283
|
+
// `referenced_only_by_tests`, never `no_incoming_edges`.
|
|
284
|
+
const reasons = [testOnlyRefs > 0 ? "referenced_only_by_tests" : "no_incoming_edges"];
|
|
285
|
+
if (isTest)
|
|
286
|
+
reasons.push("test_class");
|
|
287
|
+
if (fresh < 0.4)
|
|
288
|
+
reasons.push("stale_freshness");
|
|
289
|
+
const score = 0.6 * fresh;
|
|
290
|
+
const confidence = score < 0.2 ? "high" : score < 0.45 ? "medium" : "low";
|
|
291
|
+
return { score, confidence, reasons };
|
|
292
|
+
}
|
|
21
293
|
//# sourceMappingURL=dead-code.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dead-code.js","sourceRoot":"","sources":["../../src/analyze/dead-code.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dead-code.js","sourceRoot":"","sources":["../../src/analyze/dead-code.ts"],"names":[],"mappings":"AACA,OAAO,EAAgC,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChG,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;uEAEuE;AACvE,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC;AAEpC;8EAC8E;AAC9E,MAAM,CAAC,MAAM,gBAAgB,GAAsB;IACjD,iBAAiB,CAAC,UAAU;IAC5B,cAAc;IACd,iBAAiB,CAAC,GAAG;IACrB,iBAAiB,CAAC,IAAI;IACtB,iBAAiB,CAAC,SAAS;IAC3B,iBAAiB,CAAC,cAAc;CACjC,CAAC;AAEF,MAAM,kBAAkB,GAAG,KAAK,CAAC;AAEjC,iEAAiE;AACjE,MAAM,sBAAsB,GAAqC;IAC/D,SAAS,EAAE,cAAc;CAC1B,CAAC;AASF,MAAM,MAAM,GAAG,CAAC,CAAU,EAAU,EAAE;IACpC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACpB,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACrC,CAAC,CAAC;AAEF,wEAAwE;AACxE,MAAM,MAAM,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAElF,MAAM,OAAO,GAAG,CAAC,CAAU,EAAU,EAAE;IACrC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACpB,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACjD,CAAC,CAAC;AAEF;;sEAEsE;AACtE,SAAS,eAAe,CAAC,CAAW;IAClC,IAAI,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,oBAAoB;QAAE,OAAO,KAAK,CAAC;IAC7D,MAAM,SAAS,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACtE,OAAO,CACL,SAAS,KAAK,SAAS;QACvB,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC;QACzC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAC1D,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,qBAAqB,CAAC,CAAW;IACxC,MAAM,CAAC,GAAI,CAAC,CAAC,UAAsC,IAAI,EAAE,CAAC;IAC1D,OAAO,CACL,CAAC,CAAC,SAAS,KAAK,IAAI;QACpB,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,sBAAsB;QACtD,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,WAAW,CAC5C,CAAC;AACJ,CAAC;AAED;sFACsF;AACtF,MAAM,wBAAwB,GAAwB,IAAI,GAAG,CAAC;IAC5D,SAAS,CAAC,aAAa;IACvB,SAAS,CAAC,mBAAmB;IAC7B,SAAS,CAAC,eAAe;CAC1B,CAAC,CAAC;AAEH;kEACkE;AAClE,SAAS,SAAS,CAAC,CAAW;IAC5B,IAAI,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1D,IAAI,wBAAwB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAClE,IACG,CAAC,CAAC,UAAsC,EAAE,MAAM,KAAK,YAAY;QAClE,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAEzB,OAAO,KAAK,CAAC;IACf,IAAI,eAAe,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrC,IAAI,uBAAuB,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7C,OAAO,IAAI,CAAC;AACd,CAAC;AAED;yDACyD;AACzD,SAAS,aAAa,CAAC,CAAW;IAChC,OAAO,CACL,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,YAAY;QACjC,CAAC,CAAC,UAAsC,EAAE,GAAG,KAAK,qBAAqB,CACzE,CAAC;AACJ,CAAC;AAKD;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAiB,EAAE,KAAY;IACjE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAmB,CAAC;IACxC,mEAAmE;IACnE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC9C,qEAAqE;IACrE,4EAA4E;IAC5E,mCAAmC;IACnC,IAAI,UAA0C,CAAC;IAC/C,MAAM,MAAM,GAAG,CAAC,CAAgB,EAAW,EAAE;QAC3C,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACpB,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,IAAI,CAAC;oBACH,MAAM,CAAC,GAAG,KAAK,CAAC,0BAA0B,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;oBAC9D,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACtD,CAAC;gBAAC,MAAM,CAAC;oBACP,UAAU,GAAG,IAAI,CAAC;gBACpB,CAAC;YACH,CAAC;YACD,IAAI,UAAU,EAAE,CAAC;gBACf,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAClC,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;YACnC,CAAC;YACD,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IACF,OAAO,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACpB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAC9D,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACjD,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACnB,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;AACJ,CAAC;AASD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAiB,EACjB,KAAY,EACZ,KAAoB,EACpB,eAAgC,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC;IAEjE,OAAO,iBAAiB,CACtB,KAAK,EACL,KAAK,EACL,KAAK,EACL,CAAC,KAAK,EAAE,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,EAC5C,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,EAC5C,YAAY,CACb,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CACxB,KAAiB,EACjB,KAAY,EACZ,KAAoB,EACpB,OAAiC,EACjC,OAAuD,EACvD,YAA6B;IAE7B,MAAM,IAAI,GAAG,IAAI,GAAG,CAAS,OAAO,CAAC,CAAC;IACtC,MAAM,GAAG,GAAiB,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IACnD,MAAM,QAAQ,GAAG,CAAC,CAAiD,EAAE,EAAE,CACrE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC,WAAW,IAAI,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAClF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAChC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;gBAAE,SAAS;YACnD,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gBAAE,SAAS;YAC5B,IACE,aAAa,CAAC,CAAC,CAAC;gBAChB,CAAC,KAAK;qBACH,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,gBAAgB,CAAC;qBACtC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAC5F,CAAC;gBACD,SAAS;YACX,CAAC;YACD,IAAI,QAAQ,CAAC,CAAC,CAAC;gBAAE,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC;;gBAC9B,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,oBAAoB,CAClC,KAAiB,EACjB,KAAY,EACZ,KAAoB;IAEpB,OAAO,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC;AAChD,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,WAAW,CAAC,CAAW;IACrC,OAAQ,CAAC,CAAC,UAAkD,EAAE,MAAM,KAAK,IAAI,CAAC;AAChF,CAAC;AAkBD;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,IAAkB,EAAE,MAAe;IAC9D,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IACnD,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,0BAA0B,CAAC;IAClE,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAiB,EAAE,KAAY;IAChE,MAAM,YAAY,GAAG,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACvD,MAAM,GAAG,GAAwB,EAAE,CAAC;IACpC,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,KAAK,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,kBAAkB,CAAC,CAAC;QACrE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,cAAc,EAAE,CAAC;YACtD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC;YACjD,MAAM,SAAS,GAAG,aAAa,CAC7B,KAAK,EACL,KAAK,EACL,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAClC,CAAC;YACF,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YACrF,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;YACnE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACrB,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;gBAC9B,MAAM,IAAI,GAAG,iBAAiB,CAC5B,KAAK,EACL,KAAK,EACL,CAAC,CAAC,aAAa,EACf,SAAS,CAAC,CAAC,CAAoB,EAC/B,OAAO,EACP,YAAY,CACb,CAAC;gBACF,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBACxC,IAAI,IAAI;oBAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC7E,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,mFAAmF;AACnF,MAAM,cAAc,GAAG,GAAG,CAAC;AAE3B;;;;;GAKG;AACH,SAAS,kBAAkB,CACzB,KAAiB,EACjB,KAAY,EACZ,OAAiC;IAEjC,IAAI,OAAO,KAAK,CAAC,cAAc,KAAK,UAAU,EAAE,CAAC;QAC/C,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;YAClB,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC7D,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,YAAY,CAAC,KAAiB,EAAE,KAAY;IAC1D,OAAO,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC;SACpC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;SAChC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC;AAUD;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAC3B,IAAc,EACd,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,EAChB,YAAY,GAAG,CAAC,EAChB,MAAM,GAAG,KAAK;IAEd,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACxC,iEAAiE;IACjE,yDAAyD;IACzD,MAAM,OAAO,GAAG,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IACtF,IAAI,MAAM;QAAE,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACvC,IAAI,KAAK,GAAG,GAAG;QAAE,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC;IAC1B,MAAM,UAAU,GAAuB,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;IAC9F,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AACxC,CAAC"}
|