@ryanstark24/sfgraph-core 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/analyze/__tests__/cross-org-two-store.test.d.ts +2 -0
- package/dist/analyze/__tests__/cross-org-two-store.test.d.ts.map +1 -0
- package/dist/analyze/__tests__/cross-org-two-store.test.js +68 -0
- package/dist/analyze/__tests__/cross-org-two-store.test.js.map +1 -0
- package/dist/analyze/__tests__/dead-code-confidence.test.d.ts +2 -0
- package/dist/analyze/__tests__/dead-code-confidence.test.d.ts.map +1 -0
- package/dist/analyze/__tests__/dead-code-confidence.test.js +66 -0
- package/dist/analyze/__tests__/dead-code-confidence.test.js.map +1 -0
- package/dist/analyze/__tests__/deployment-manifest.test.d.ts +2 -0
- package/dist/analyze/__tests__/deployment-manifest.test.d.ts.map +1 -0
- package/dist/analyze/__tests__/deployment-manifest.test.js +66 -0
- package/dist/analyze/__tests__/deployment-manifest.test.js.map +1 -0
- package/dist/analyze/__tests__/governor-risks-detection.test.d.ts +2 -0
- package/dist/analyze/__tests__/governor-risks-detection.test.d.ts.map +1 -0
- package/dist/analyze/__tests__/governor-risks-detection.test.js +70 -0
- package/dist/analyze/__tests__/governor-risks-detection.test.js.map +1 -0
- package/dist/analyze/__tests__/populate.test.d.ts +2 -0
- package/dist/analyze/__tests__/populate.test.d.ts.map +1 -0
- package/dist/analyze/__tests__/populate.test.js +129 -0
- package/dist/analyze/__tests__/populate.test.js.map +1 -0
- package/dist/analyze/__tests__/traversal-caps.test.d.ts +2 -0
- package/dist/analyze/__tests__/traversal-caps.test.d.ts.map +1 -0
- package/dist/analyze/__tests__/traversal-caps.test.js +129 -0
- package/dist/analyze/__tests__/traversal-caps.test.js.map +1 -0
- package/dist/analyze/__tests__/wip-impact.test.d.ts +2 -0
- package/dist/analyze/__tests__/wip-impact.test.d.ts.map +1 -0
- package/dist/analyze/__tests__/wip-impact.test.js +134 -0
- package/dist/analyze/__tests__/wip-impact.test.js.map +1 -0
- package/dist/analyze/cross-org.d.ts +42 -0
- package/dist/analyze/cross-org.d.ts.map +1 -0
- package/dist/analyze/cross-org.js +64 -0
- package/dist/analyze/cross-org.js.map +1 -0
- package/dist/analyze/dead-code.d.ts +8 -0
- package/dist/analyze/dead-code.d.ts.map +1 -0
- package/dist/analyze/dead-code.js +21 -0
- package/dist/analyze/dead-code.js.map +1 -0
- package/dist/analyze/dependencies.d.ts +5 -0
- package/dist/analyze/dependencies.d.ts.map +1 -0
- package/dist/analyze/dependencies.js +40 -0
- package/dist/analyze/dependencies.js.map +1 -0
- package/dist/analyze/dependents.d.ts +19 -0
- package/dist/analyze/dependents.d.ts.map +1 -0
- package/dist/analyze/dependents.js +47 -0
- package/dist/analyze/dependents.js.map +1 -0
- package/dist/analyze/deployment-manifest/generate.d.ts +22 -0
- package/dist/analyze/deployment-manifest/generate.d.ts.map +1 -0
- package/dist/analyze/deployment-manifest/generate.js +91 -0
- package/dist/analyze/deployment-manifest/generate.js.map +1 -0
- package/dist/analyze/deployment-manifest/member-name-formatters.d.ts +8 -0
- package/dist/analyze/deployment-manifest/member-name-formatters.d.ts.map +1 -0
- package/dist/analyze/deployment-manifest/member-name-formatters.js +57 -0
- package/dist/analyze/deployment-manifest/member-name-formatters.js.map +1 -0
- package/dist/analyze/deployment-manifest/member-types.d.ts +6 -0
- package/dist/analyze/deployment-manifest/member-types.d.ts.map +1 -0
- package/dist/analyze/deployment-manifest/member-types.js +47 -0
- package/dist/analyze/deployment-manifest/member-types.js.map +1 -0
- package/dist/analyze/freshness.d.ts +9 -0
- package/dist/analyze/freshness.d.ts.map +1 -0
- package/dist/analyze/freshness.js +31 -0
- package/dist/analyze/freshness.js.map +1 -0
- package/dist/analyze/git-diff.d.ts +6 -0
- package/dist/analyze/git-diff.d.ts.map +1 -0
- package/dist/analyze/git-diff.js +38 -0
- package/dist/analyze/git-diff.js.map +1 -0
- package/dist/analyze/governor.d.ts +14 -0
- package/dist/analyze/governor.d.ts.map +1 -0
- package/dist/analyze/governor.js +28 -0
- package/dist/analyze/governor.js.map +1 -0
- package/dist/analyze/index.d.ts +14 -0
- package/dist/analyze/index.d.ts.map +1 -0
- package/dist/analyze/index.js +14 -0
- package/dist/analyze/index.js.map +1 -0
- package/dist/analyze/path-to-qname.d.ts +3 -0
- package/dist/analyze/path-to-qname.d.ts.map +1 -0
- package/dist/analyze/path-to-qname.js +32 -0
- package/dist/analyze/path-to-qname.js.map +1 -0
- package/dist/analyze/populate.d.ts +15 -0
- package/dist/analyze/populate.d.ts.map +1 -0
- package/dist/analyze/populate.js +188 -0
- package/dist/analyze/populate.js.map +1 -0
- package/dist/analyze/security.d.ts +25 -0
- package/dist/analyze/security.d.ts.map +1 -0
- package/dist/analyze/security.js +70 -0
- package/dist/analyze/security.js.map +1 -0
- package/dist/analyze/test-coverage.d.ts +6 -0
- package/dist/analyze/test-coverage.d.ts.map +1 -0
- package/dist/analyze/test-coverage.js +15 -0
- package/dist/analyze/test-coverage.js.map +1 -0
- package/dist/analyze/wip-impact.d.ts +30 -0
- package/dist/analyze/wip-impact.d.ts.map +1 -0
- package/dist/analyze/wip-impact.js +314 -0
- package/dist/analyze/wip-impact.js.map +1 -0
- package/dist/domain/edge-fact.d.ts +12 -0
- package/dist/domain/edge-fact.d.ts.map +1 -0
- package/dist/domain/edge-fact.js +2 -0
- package/dist/domain/edge-fact.js.map +1 -0
- package/dist/domain/index.d.ts +7 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +7 -0
- package/dist/domain/index.js.map +1 -0
- package/dist/domain/metadata-category.d.ts +57 -0
- package/dist/domain/metadata-category.d.ts.map +1 -0
- package/dist/domain/metadata-category.js +57 -0
- package/dist/domain/metadata-category.js.map +1 -0
- package/dist/domain/node-fact.d.ts +12 -0
- package/dist/domain/node-fact.d.ts.map +1 -0
- package/dist/domain/node-fact.js +2 -0
- package/dist/domain/node-fact.js.map +1 -0
- package/dist/domain/org.d.ts +10 -0
- package/dist/domain/org.d.ts.map +1 -0
- package/dist/domain/org.js +2 -0
- package/dist/domain/org.js.map +1 -0
- package/dist/domain/rel-types.d.ts +89 -0
- package/dist/domain/rel-types.d.ts.map +1 -0
- package/dist/domain/rel-types.js +99 -0
- package/dist/domain/rel-types.js.map +1 -0
- package/dist/domain/snapshot.d.ts +9 -0
- package/dist/domain/snapshot.d.ts.map +1 -0
- package/dist/domain/snapshot.js +2 -0
- package/dist/domain/snapshot.js.map +1 -0
- package/dist/embedding/__tests__/queue.test.d.ts +2 -0
- package/dist/embedding/__tests__/queue.test.d.ts.map +1 -0
- package/dist/embedding/__tests__/queue.test.js +64 -0
- package/dist/embedding/__tests__/queue.test.js.map +1 -0
- package/dist/embedding/index.d.ts +4 -0
- package/dist/embedding/index.d.ts.map +1 -0
- package/dist/embedding/index.js +3 -0
- package/dist/embedding/index.js.map +1 -0
- package/dist/embedding/pool.d.ts +10 -0
- package/dist/embedding/pool.d.ts.map +1 -0
- package/dist/embedding/pool.js +10 -0
- package/dist/embedding/pool.js.map +1 -0
- package/dist/embedding/queue.d.ts +39 -0
- package/dist/embedding/queue.d.ts.map +1 -0
- package/dist/embedding/queue.js +122 -0
- package/dist/embedding/queue.js.map +1 -0
- package/dist/embedding/worker.d.ts +7 -0
- package/dist/embedding/worker.d.ts.map +1 -0
- package/dist/embedding/worker.js +7 -0
- package/dist/embedding/worker.js.map +1 -0
- package/dist/extractors/__tests__/network-egress.test.d.ts +2 -0
- package/dist/extractors/__tests__/network-egress.test.d.ts.map +1 -0
- package/dist/extractors/__tests__/network-egress.test.js +32 -0
- package/dist/extractors/__tests__/network-egress.test.js.map +1 -0
- package/dist/extractors/filesystem/__tests__/filesystem.test.d.ts +2 -0
- package/dist/extractors/filesystem/__tests__/filesystem.test.d.ts.map +1 -0
- package/dist/extractors/filesystem/__tests__/filesystem.test.js +96 -0
- package/dist/extractors/filesystem/__tests__/filesystem.test.js.map +1 -0
- package/dist/extractors/filesystem/index.d.ts +20 -0
- package/dist/extractors/filesystem/index.d.ts.map +1 -0
- package/dist/extractors/filesystem/index.js +378 -0
- package/dist/extractors/filesystem/index.js.map +1 -0
- package/dist/extractors/interfaces/metadata-source.d.ts +21 -0
- package/dist/extractors/interfaces/metadata-source.d.ts.map +1 -0
- package/dist/extractors/interfaces/metadata-source.js +2 -0
- package/dist/extractors/interfaces/metadata-source.js.map +1 -0
- package/dist/extractors/live-org/__tests__/_jsforce-mock.d.ts +38 -0
- package/dist/extractors/live-org/__tests__/_jsforce-mock.d.ts.map +1 -0
- package/dist/extractors/live-org/__tests__/_jsforce-mock.js +96 -0
- package/dist/extractors/live-org/__tests__/_jsforce-mock.js.map +1 -0
- package/dist/extractors/live-org/__tests__/auth.test.d.ts +2 -0
- package/dist/extractors/live-org/__tests__/auth.test.d.ts.map +1 -0
- package/dist/extractors/live-org/__tests__/auth.test.js +85 -0
- package/dist/extractors/live-org/__tests__/auth.test.js.map +1 -0
- package/dist/extractors/live-org/__tests__/bulk-retrieve.test.d.ts +2 -0
- package/dist/extractors/live-org/__tests__/bulk-retrieve.test.d.ts.map +1 -0
- package/dist/extractors/live-org/__tests__/bulk-retrieve.test.js +150 -0
- package/dist/extractors/live-org/__tests__/bulk-retrieve.test.js.map +1 -0
- package/dist/extractors/live-org/__tests__/capabilities.test.d.ts +2 -0
- package/dist/extractors/live-org/__tests__/capabilities.test.d.ts.map +1 -0
- package/dist/extractors/live-org/__tests__/capabilities.test.js +54 -0
- package/dist/extractors/live-org/__tests__/capabilities.test.js.map +1 -0
- package/dist/extractors/live-org/__tests__/discovery.test.d.ts +2 -0
- package/dist/extractors/live-org/__tests__/discovery.test.d.ts.map +1 -0
- package/dist/extractors/live-org/__tests__/discovery.test.js +55 -0
- package/dist/extractors/live-org/__tests__/discovery.test.js.map +1 -0
- package/dist/extractors/live-org/__tests__/dispatch.test.d.ts +2 -0
- package/dist/extractors/live-org/__tests__/dispatch.test.d.ts.map +1 -0
- package/dist/extractors/live-org/__tests__/dispatch.test.js +68 -0
- package/dist/extractors/live-org/__tests__/dispatch.test.js.map +1 -0
- package/dist/extractors/live-org/__tests__/extractor-enrichment.test.d.ts +2 -0
- package/dist/extractors/live-org/__tests__/extractor-enrichment.test.d.ts.map +1 -0
- package/dist/extractors/live-org/__tests__/extractor-enrichment.test.js +312 -0
- package/dist/extractors/live-org/__tests__/extractor-enrichment.test.js.map +1 -0
- package/dist/extractors/live-org/__tests__/pools.test.d.ts +2 -0
- package/dist/extractors/live-org/__tests__/pools.test.d.ts.map +1 -0
- package/dist/extractors/live-org/__tests__/pools.test.js +75 -0
- package/dist/extractors/live-org/__tests__/pools.test.js.map +1 -0
- package/dist/extractors/live-org/__tests__/rate-limit.test.d.ts +2 -0
- package/dist/extractors/live-org/__tests__/rate-limit.test.d.ts.map +1 -0
- package/dist/extractors/live-org/__tests__/rate-limit.test.js +33 -0
- package/dist/extractors/live-org/__tests__/rate-limit.test.js.map +1 -0
- package/dist/extractors/live-org/__tests__/read-only-proxy.test.d.ts +2 -0
- package/dist/extractors/live-org/__tests__/read-only-proxy.test.d.ts.map +1 -0
- package/dist/extractors/live-org/__tests__/read-only-proxy.test.js +376 -0
- package/dist/extractors/live-org/__tests__/read-only-proxy.test.js.map +1 -0
- package/dist/extractors/live-org/__tests__/source-member.test.d.ts +2 -0
- package/dist/extractors/live-org/__tests__/source-member.test.d.ts.map +1 -0
- package/dist/extractors/live-org/__tests__/source-member.test.js +84 -0
- package/dist/extractors/live-org/__tests__/source-member.test.js.map +1 -0
- package/dist/extractors/live-org/__tests__/vlocity-runner.test.d.ts +2 -0
- package/dist/extractors/live-org/__tests__/vlocity-runner.test.d.ts.map +1 -0
- package/dist/extractors/live-org/__tests__/vlocity-runner.test.js +88 -0
- package/dist/extractors/live-org/__tests__/vlocity-runner.test.js.map +1 -0
- package/dist/extractors/live-org/auth.d.ts +37 -0
- package/dist/extractors/live-org/auth.d.ts.map +1 -0
- package/dist/extractors/live-org/auth.js +124 -0
- package/dist/extractors/live-org/auth.js.map +1 -0
- package/dist/extractors/live-org/bulk-retrieve.d.ts +51 -0
- package/dist/extractors/live-org/bulk-retrieve.d.ts.map +1 -0
- package/dist/extractors/live-org/bulk-retrieve.js +416 -0
- package/dist/extractors/live-org/bulk-retrieve.js.map +1 -0
- package/dist/extractors/live-org/capabilities.d.ts +18 -0
- package/dist/extractors/live-org/capabilities.d.ts.map +1 -0
- package/dist/extractors/live-org/capabilities.js +72 -0
- package/dist/extractors/live-org/capabilities.js.map +1 -0
- package/dist/extractors/live-org/discovery.d.ts +14 -0
- package/dist/extractors/live-org/discovery.d.ts.map +1 -0
- package/dist/extractors/live-org/discovery.js +22 -0
- package/dist/extractors/live-org/discovery.js.map +1 -0
- package/dist/extractors/live-org/dispatch.d.ts +20 -0
- package/dist/extractors/live-org/dispatch.d.ts.map +1 -0
- package/dist/extractors/live-org/dispatch.js +52 -0
- package/dist/extractors/live-org/dispatch.js.map +1 -0
- package/dist/extractors/live-org/errors.d.ts +2 -0
- package/dist/extractors/live-org/errors.d.ts.map +1 -0
- package/dist/extractors/live-org/errors.js +2 -0
- package/dist/extractors/live-org/errors.js.map +1 -0
- package/dist/extractors/live-org/extractors/apex.d.ts +5 -0
- package/dist/extractors/live-org/extractors/apex.d.ts.map +1 -0
- package/dist/extractors/live-org/extractors/apex.js +105 -0
- package/dist/extractors/live-org/extractors/apex.js.map +1 -0
- package/dist/extractors/live-org/extractors/flow.d.ts +9 -0
- package/dist/extractors/live-org/extractors/flow.d.ts.map +1 -0
- package/dist/extractors/live-org/extractors/flow.js +65 -0
- package/dist/extractors/live-org/extractors/flow.js.map +1 -0
- package/dist/extractors/live-org/extractors/generic-metadata.d.ts +20 -0
- package/dist/extractors/live-org/extractors/generic-metadata.d.ts.map +1 -0
- package/dist/extractors/live-org/extractors/generic-metadata.js +114 -0
- package/dist/extractors/live-org/extractors/generic-metadata.js.map +1 -0
- package/dist/extractors/live-org/extractors/generic-sobject.d.ts +7 -0
- package/dist/extractors/live-org/extractors/generic-sobject.d.ts.map +1 -0
- package/dist/extractors/live-org/extractors/generic-sobject.js +31 -0
- package/dist/extractors/live-org/extractors/generic-sobject.js.map +1 -0
- package/dist/extractors/live-org/extractors/integration.d.ts +3 -0
- package/dist/extractors/live-org/extractors/integration.d.ts.map +1 -0
- package/dist/extractors/live-org/extractors/integration.js +65 -0
- package/dist/extractors/live-org/extractors/integration.js.map +1 -0
- package/dist/extractors/live-org/extractors/lwc.d.ts +3 -0
- package/dist/extractors/live-org/extractors/lwc.d.ts.map +1 -0
- package/dist/extractors/live-org/extractors/lwc.js +107 -0
- package/dist/extractors/live-org/extractors/lwc.js.map +1 -0
- package/dist/extractors/live-org/extractors/object.d.ts +13 -0
- package/dist/extractors/live-org/extractors/object.d.ts.map +1 -0
- package/dist/extractors/live-org/extractors/object.js +617 -0
- package/dist/extractors/live-org/extractors/object.js.map +1 -0
- package/dist/extractors/live-org/extractors/omnistudio.d.ts +3 -0
- package/dist/extractors/live-org/extractors/omnistudio.d.ts.map +1 -0
- package/dist/extractors/live-org/extractors/omnistudio.js +141 -0
- package/dist/extractors/live-org/extractors/omnistudio.js.map +1 -0
- package/dist/extractors/live-org/extractors/security.d.ts +3 -0
- package/dist/extractors/live-org/extractors/security.d.ts.map +1 -0
- package/dist/extractors/live-org/extractors/security.js +76 -0
- package/dist/extractors/live-org/extractors/security.js.map +1 -0
- package/dist/extractors/live-org/extractors/vlocity.d.ts +2 -0
- package/dist/extractors/live-org/extractors/vlocity.d.ts.map +1 -0
- package/dist/extractors/live-org/extractors/vlocity.js +2 -0
- package/dist/extractors/live-org/extractors/vlocity.js.map +1 -0
- package/dist/extractors/live-org/index.d.ts +21 -0
- package/dist/extractors/live-org/index.d.ts.map +1 -0
- package/dist/extractors/live-org/index.js +17 -0
- package/dist/extractors/live-org/index.js.map +1 -0
- package/dist/extractors/live-org/rate-limit.d.ts +114 -0
- package/dist/extractors/live-org/rate-limit.d.ts.map +1 -0
- package/dist/extractors/live-org/rate-limit.js +251 -0
- package/dist/extractors/live-org/rate-limit.js.map +1 -0
- package/dist/extractors/live-org/read-only-proxy.d.ts +2 -0
- package/dist/extractors/live-org/read-only-proxy.d.ts.map +1 -0
- package/dist/extractors/live-org/read-only-proxy.js +299 -0
- package/dist/extractors/live-org/read-only-proxy.js.map +1 -0
- package/dist/extractors/live-org/reports.d.ts +4 -0
- package/dist/extractors/live-org/reports.d.ts.map +1 -0
- package/dist/extractors/live-org/reports.js +10 -0
- package/dist/extractors/live-org/reports.js.map +1 -0
- package/dist/extractors/live-org/source-member.d.ts +8 -0
- package/dist/extractors/live-org/source-member.d.ts.map +1 -0
- package/dist/extractors/live-org/source-member.js +47 -0
- package/dist/extractors/live-org/source-member.js.map +1 -0
- package/dist/extractors/live-org/vlocity/query-definitions.yml +153 -0
- package/dist/extractors/live-org/vlocity/runner.d.ts +21 -0
- package/dist/extractors/live-org/vlocity/runner.d.ts.map +1 -0
- package/dist/extractors/live-org/vlocity/runner.js +214 -0
- package/dist/extractors/live-org/vlocity/runner.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/ingest/__tests__/full-sync-deletion.test.d.ts +2 -0
- package/dist/ingest/__tests__/full-sync-deletion.test.d.ts.map +1 -0
- package/dist/ingest/__tests__/full-sync-deletion.test.js +200 -0
- package/dist/ingest/__tests__/full-sync-deletion.test.js.map +1 -0
- package/dist/ingest/__tests__/incremental-deletion.test.d.ts +2 -0
- package/dist/ingest/__tests__/incremental-deletion.test.d.ts.map +1 -0
- package/dist/ingest/__tests__/incremental-deletion.test.js +92 -0
- package/dist/ingest/__tests__/incremental-deletion.test.js.map +1 -0
- package/dist/ingest/__tests__/live-ingest.test.d.ts +2 -0
- package/dist/ingest/__tests__/live-ingest.test.d.ts.map +1 -0
- package/dist/ingest/__tests__/live-ingest.test.js +155 -0
- package/dist/ingest/__tests__/live-ingest.test.js.map +1 -0
- package/dist/ingest/__tests__/multi-org-orchestrator.test.d.ts +2 -0
- package/dist/ingest/__tests__/multi-org-orchestrator.test.d.ts.map +1 -0
- package/dist/ingest/__tests__/multi-org-orchestrator.test.js +101 -0
- package/dist/ingest/__tests__/multi-org-orchestrator.test.js.map +1 -0
- package/dist/ingest/__tests__/read-only-wrapping.test.d.ts +2 -0
- package/dist/ingest/__tests__/read-only-wrapping.test.d.ts.map +1 -0
- package/dist/ingest/__tests__/read-only-wrapping.test.js +62 -0
- package/dist/ingest/__tests__/read-only-wrapping.test.js.map +1 -0
- package/dist/ingest/index.d.ts +5 -0
- package/dist/ingest/index.d.ts.map +1 -0
- package/dist/ingest/index.js +3 -0
- package/dist/ingest/index.js.map +1 -0
- package/dist/ingest/live-ingest.d.ts +59 -0
- package/dist/ingest/live-ingest.d.ts.map +1 -0
- package/dist/ingest/live-ingest.js +611 -0
- package/dist/ingest/live-ingest.js.map +1 -0
- package/dist/ingest/multi-org.d.ts +43 -0
- package/dist/ingest/multi-org.d.ts.map +1 -0
- package/dist/ingest/multi-org.js +93 -0
- package/dist/ingest/multi-org.js.map +1 -0
- package/dist/parsers/__tests__/_harness.d.ts +13 -0
- package/dist/parsers/__tests__/_harness.d.ts.map +1 -0
- package/dist/parsers/__tests__/_harness.js +84 -0
- package/dist/parsers/__tests__/_harness.js.map +1 -0
- package/dist/parsers/__tests__/apex.golden.test.d.ts +2 -0
- package/dist/parsers/__tests__/apex.golden.test.d.ts.map +1 -0
- package/dist/parsers/__tests__/apex.golden.test.js +28 -0
- package/dist/parsers/__tests__/apex.golden.test.js.map +1 -0
- package/dist/parsers/__tests__/cross-flavor.test.d.ts +2 -0
- package/dist/parsers/__tests__/cross-flavor.test.d.ts.map +1 -0
- package/dist/parsers/__tests__/cross-flavor.test.js +56 -0
- package/dist/parsers/__tests__/cross-flavor.test.js.map +1 -0
- package/dist/parsers/__tests__/flow.golden.test.d.ts +2 -0
- package/dist/parsers/__tests__/flow.golden.test.d.ts.map +1 -0
- package/dist/parsers/__tests__/flow.golden.test.js +17 -0
- package/dist/parsers/__tests__/flow.golden.test.js.map +1 -0
- package/dist/parsers/__tests__/integration.golden.test.d.ts +2 -0
- package/dist/parsers/__tests__/integration.golden.test.d.ts.map +1 -0
- package/dist/parsers/__tests__/integration.golden.test.js +31 -0
- package/dist/parsers/__tests__/integration.golden.test.js.map +1 -0
- package/dist/parsers/__tests__/long-tail.golden.test.d.ts +2 -0
- package/dist/parsers/__tests__/long-tail.golden.test.d.ts.map +1 -0
- package/dist/parsers/__tests__/long-tail.golden.test.js +115 -0
- package/dist/parsers/__tests__/long-tail.golden.test.js.map +1 -0
- package/dist/parsers/__tests__/lwc.golden.test.d.ts +2 -0
- package/dist/parsers/__tests__/lwc.golden.test.d.ts.map +1 -0
- package/dist/parsers/__tests__/lwc.golden.test.js +16 -0
- package/dist/parsers/__tests__/lwc.golden.test.js.map +1 -0
- package/dist/parsers/__tests__/object-inline-fields.test.d.ts +2 -0
- package/dist/parsers/__tests__/object-inline-fields.test.d.ts.map +1 -0
- package/dist/parsers/__tests__/object-inline-fields.test.js +115 -0
- package/dist/parsers/__tests__/object-inline-fields.test.js.map +1 -0
- package/dist/parsers/__tests__/object.golden.test.d.ts +2 -0
- package/dist/parsers/__tests__/object.golden.test.d.ts.map +1 -0
- package/dist/parsers/__tests__/object.golden.test.js +33 -0
- package/dist/parsers/__tests__/object.golden.test.js.map +1 -0
- package/dist/parsers/__tests__/omnistudio.golden.test.d.ts +2 -0
- package/dist/parsers/__tests__/omnistudio.golden.test.d.ts.map +1 -0
- package/dist/parsers/__tests__/omnistudio.golden.test.js +6 -0
- package/dist/parsers/__tests__/omnistudio.golden.test.js.map +1 -0
- package/dist/parsers/__tests__/registry.test.d.ts +2 -0
- package/dist/parsers/__tests__/registry.test.d.ts.map +1 -0
- package/dist/parsers/__tests__/registry.test.js +23 -0
- package/dist/parsers/__tests__/registry.test.js.map +1 -0
- package/dist/parsers/__tests__/security.golden.test.d.ts +2 -0
- package/dist/parsers/__tests__/security.golden.test.d.ts.map +1 -0
- package/dist/parsers/__tests__/security.golden.test.js +31 -0
- package/dist/parsers/__tests__/security.golden.test.js.map +1 -0
- package/dist/parsers/__tests__/vlocity.golden.test.d.ts +2 -0
- package/dist/parsers/__tests__/vlocity.golden.test.d.ts.map +1 -0
- package/dist/parsers/__tests__/vlocity.golden.test.js +8 -0
- package/dist/parsers/__tests__/vlocity.golden.test.js.map +1 -0
- package/dist/parsers/__tests__/worker-pool.test.d.ts +2 -0
- package/dist/parsers/__tests__/worker-pool.test.d.ts.map +1 -0
- package/dist/parsers/__tests__/worker-pool.test.js +48 -0
- package/dist/parsers/__tests__/worker-pool.test.js.map +1 -0
- package/dist/parsers/_xml-helpers.d.ts +5 -0
- package/dist/parsers/_xml-helpers.d.ts.map +1 -0
- package/dist/parsers/_xml-helpers.js +12 -0
- package/dist/parsers/_xml-helpers.js.map +1 -0
- package/dist/parsers/apex/class.d.ts +13 -0
- package/dist/parsers/apex/class.d.ts.map +1 -0
- package/dist/parsers/apex/class.js +325 -0
- package/dist/parsers/apex/class.js.map +1 -0
- package/dist/parsers/apex/common.d.ts +11 -0
- package/dist/parsers/apex/common.d.ts.map +1 -0
- package/dist/parsers/apex/common.js +55 -0
- package/dist/parsers/apex/common.js.map +1 -0
- package/dist/parsers/apex/index.d.ts +6 -0
- package/dist/parsers/apex/index.d.ts.map +1 -0
- package/dist/parsers/apex/index.js +9 -0
- package/dist/parsers/apex/index.js.map +1 -0
- package/dist/parsers/apex/trigger.d.ts +12 -0
- package/dist/parsers/apex/trigger.d.ts.map +1 -0
- package/dist/parsers/apex/trigger.js +36 -0
- package/dist/parsers/apex/trigger.js.map +1 -0
- package/dist/parsers/apex/visitor.d.ts +2 -0
- package/dist/parsers/apex/visitor.d.ts.map +1 -0
- package/dist/parsers/apex/visitor.js +4 -0
- package/dist/parsers/apex/visitor.js.map +1 -0
- package/dist/parsers/common.d.ts +7 -0
- package/dist/parsers/common.d.ts.map +1 -0
- package/dist/parsers/common.js +37 -0
- package/dist/parsers/common.js.map +1 -0
- package/dist/parsers/contract.d.ts +31 -0
- package/dist/parsers/contract.d.ts.map +1 -0
- package/dist/parsers/contract.js +18 -0
- package/dist/parsers/contract.js.map +1 -0
- package/dist/parsers/cross-flavor-resolver.d.ts +18 -0
- package/dist/parsers/cross-flavor-resolver.d.ts.map +1 -0
- package/dist/parsers/cross-flavor-resolver.js +73 -0
- package/dist/parsers/cross-flavor-resolver.js.map +1 -0
- package/dist/parsers/experience/index.d.ts +2 -0
- package/dist/parsers/experience/index.d.ts.map +1 -0
- package/dist/parsers/experience/index.js +3 -0
- package/dist/parsers/experience/index.js.map +1 -0
- package/dist/parsers/flow/element-visitors.d.ts +2 -0
- package/dist/parsers/flow/element-visitors.d.ts.map +1 -0
- package/dist/parsers/flow/element-visitors.js +3 -0
- package/dist/parsers/flow/element-visitors.js.map +1 -0
- package/dist/parsers/flow/index.d.ts +4 -0
- package/dist/parsers/flow/index.d.ts.map +1 -0
- package/dist/parsers/flow/index.js +6 -0
- package/dist/parsers/flow/index.js.map +1 -0
- package/dist/parsers/flow/parser.d.ts +11 -0
- package/dist/parsers/flow/parser.d.ts.map +1 -0
- package/dist/parsers/flow/parser.js +101 -0
- package/dist/parsers/flow/parser.js.map +1 -0
- package/dist/parsers/genai/index.d.ts +2 -0
- package/dist/parsers/genai/index.d.ts.map +1 -0
- package/dist/parsers/genai/index.js +3 -0
- package/dist/parsers/genai/index.js.map +1 -0
- package/dist/parsers/generic/index.d.ts +4 -0
- package/dist/parsers/generic/index.d.ts.map +1 -0
- package/dist/parsers/generic/index.js +6 -0
- package/dist/parsers/generic/index.js.map +1 -0
- package/dist/parsers/generic/opaque-node-parser.d.ts +16 -0
- package/dist/parsers/generic/opaque-node-parser.d.ts.map +1 -0
- package/dist/parsers/generic/opaque-node-parser.js +18 -0
- package/dist/parsers/generic/opaque-node-parser.js.map +1 -0
- package/dist/parsers/index.d.ts +22 -0
- package/dist/parsers/index.d.ts.map +1 -0
- package/dist/parsers/index.js +23 -0
- package/dist/parsers/index.js.map +1 -0
- package/dist/parsers/integration/index.d.ts +2 -0
- package/dist/parsers/integration/index.d.ts.map +1 -0
- package/dist/parsers/integration/index.js +3 -0
- package/dist/parsers/integration/index.js.map +1 -0
- package/dist/parsers/lwc/bundle.d.ts +11 -0
- package/dist/parsers/lwc/bundle.d.ts.map +1 -0
- package/dist/parsers/lwc/bundle.js +54 -0
- package/dist/parsers/lwc/bundle.js.map +1 -0
- package/dist/parsers/lwc/html-visitor.d.ts +8 -0
- package/dist/parsers/lwc/html-visitor.d.ts.map +1 -0
- package/dist/parsers/lwc/html-visitor.js +57 -0
- package/dist/parsers/lwc/html-visitor.js.map +1 -0
- package/dist/parsers/lwc/index.d.ts +4 -0
- package/dist/parsers/lwc/index.d.ts.map +1 -0
- package/dist/parsers/lwc/index.js +6 -0
- package/dist/parsers/lwc/index.js.map +1 -0
- package/dist/parsers/lwc/js-visitor.d.ts +8 -0
- package/dist/parsers/lwc/js-visitor.d.ts.map +1 -0
- package/dist/parsers/lwc/js-visitor.js +93 -0
- package/dist/parsers/lwc/js-visitor.js.map +1 -0
- package/dist/parsers/lwc/xml-meta.d.ts +2 -0
- package/dist/parsers/lwc/xml-meta.d.ts.map +1 -0
- package/dist/parsers/lwc/xml-meta.js +21 -0
- package/dist/parsers/lwc/xml-meta.js.map +1 -0
- package/dist/parsers/object/field.d.ts +9 -0
- package/dist/parsers/object/field.d.ts.map +1 -0
- package/dist/parsers/object/field.js +14 -0
- package/dist/parsers/object/field.js.map +1 -0
- package/dist/parsers/object/index.d.ts +7 -0
- package/dist/parsers/object/index.d.ts.map +1 -0
- package/dist/parsers/object/index.js +9 -0
- package/dist/parsers/object/index.js.map +1 -0
- package/dist/parsers/object/object.d.ts +14 -0
- package/dist/parsers/object/object.d.ts.map +1 -0
- package/dist/parsers/object/object.js +188 -0
- package/dist/parsers/object/object.js.map +1 -0
- package/dist/parsers/object/record-type.d.ts +7 -0
- package/dist/parsers/object/record-type.d.ts.map +1 -0
- package/dist/parsers/object/record-type.js +12 -0
- package/dist/parsers/object/record-type.js.map +1 -0
- package/dist/parsers/object/validation-rule.d.ts +8 -0
- package/dist/parsers/object/validation-rule.d.ts.map +1 -0
- package/dist/parsers/object/validation-rule.js +13 -0
- package/dist/parsers/object/validation-rule.js.map +1 -0
- package/dist/parsers/omnistudio/data-transform.d.ts +11 -0
- package/dist/parsers/omnistudio/data-transform.d.ts.map +1 -0
- package/dist/parsers/omnistudio/data-transform.js +29 -0
- package/dist/parsers/omnistudio/data-transform.js.map +1 -0
- package/dist/parsers/omnistudio/index.d.ts +10 -0
- package/dist/parsers/omnistudio/index.d.ts.map +1 -0
- package/dist/parsers/omnistudio/index.js +15 -0
- package/dist/parsers/omnistudio/index.js.map +1 -0
- package/dist/parsers/omnistudio/integration-procedure.d.ts +11 -0
- package/dist/parsers/omnistudio/integration-procedure.d.ts.map +1 -0
- package/dist/parsers/omnistudio/integration-procedure.js +44 -0
- package/dist/parsers/omnistudio/integration-procedure.js.map +1 -0
- package/dist/parsers/omnistudio/process.d.ts +11 -0
- package/dist/parsers/omnistudio/process.d.ts.map +1 -0
- package/dist/parsers/omnistudio/process.js +49 -0
- package/dist/parsers/omnistudio/process.js.map +1 -0
- package/dist/parsers/omnistudio/ui-card.d.ts +11 -0
- package/dist/parsers/omnistudio/ui-card.d.ts.map +1 -0
- package/dist/parsers/omnistudio/ui-card.js +44 -0
- package/dist/parsers/omnistudio/ui-card.js.map +1 -0
- package/dist/parsers/presentation/index.d.ts +2 -0
- package/dist/parsers/presentation/index.d.ts.map +1 -0
- package/dist/parsers/presentation/index.js +3 -0
- package/dist/parsers/presentation/index.js.map +1 -0
- package/dist/parsers/registry.d.ts +13 -0
- package/dist/parsers/registry.d.ts.map +1 -0
- package/dist/parsers/registry.js +25 -0
- package/dist/parsers/registry.js.map +1 -0
- package/dist/parsers/reporting/index.d.ts +2 -0
- package/dist/parsers/reporting/index.d.ts.map +1 -0
- package/dist/parsers/reporting/index.js +3 -0
- package/dist/parsers/reporting/index.js.map +1 -0
- package/dist/parsers/rules/__tests__/applies-to.test.d.ts +2 -0
- package/dist/parsers/rules/__tests__/applies-to.test.d.ts.map +1 -0
- package/dist/parsers/rules/__tests__/applies-to.test.js +31 -0
- package/dist/parsers/rules/__tests__/applies-to.test.js.map +1 -0
- package/dist/parsers/rules/__tests__/applies-to.test.ts +40 -0
- package/dist/parsers/rules/__tests__/engine.test.d.ts +2 -0
- package/dist/parsers/rules/__tests__/engine.test.d.ts.map +1 -0
- package/dist/parsers/rules/__tests__/engine.test.js +127 -0
- package/dist/parsers/rules/__tests__/engine.test.js.map +1 -0
- package/dist/parsers/rules/__tests__/engine.test.ts +138 -0
- package/dist/parsers/rules/__tests__/loader.test.d.ts +2 -0
- package/dist/parsers/rules/__tests__/loader.test.d.ts.map +1 -0
- package/dist/parsers/rules/__tests__/loader.test.js +31 -0
- package/dist/parsers/rules/__tests__/loader.test.js.map +1 -0
- package/dist/parsers/rules/__tests__/loader.test.ts +37 -0
- package/dist/parsers/rules/__tests__/schema.test.d.ts +2 -0
- package/dist/parsers/rules/__tests__/schema.test.d.ts.map +1 -0
- package/dist/parsers/rules/__tests__/schema.test.js +33 -0
- package/dist/parsers/rules/__tests__/schema.test.js.map +1 -0
- package/dist/parsers/rules/__tests__/schema.test.ts +37 -0
- package/dist/parsers/rules/__tests__/selectors.test.d.ts +2 -0
- package/dist/parsers/rules/__tests__/selectors.test.d.ts.map +1 -0
- package/dist/parsers/rules/__tests__/selectors.test.js +51 -0
- package/dist/parsers/rules/__tests__/selectors.test.js.map +1 -0
- package/dist/parsers/rules/__tests__/selectors.test.ts +62 -0
- package/dist/parsers/rules/_engine.d.ts +18 -0
- package/dist/parsers/rules/_engine.d.ts.map +1 -0
- package/dist/parsers/rules/_engine.js +159 -0
- package/dist/parsers/rules/_engine.js.map +1 -0
- package/dist/parsers/rules/_engine.ts +171 -0
- package/dist/parsers/rules/_generic-opaque.d.ts +13 -0
- package/dist/parsers/rules/_generic-opaque.d.ts.map +1 -0
- package/dist/parsers/rules/_generic-opaque.js +15 -0
- package/dist/parsers/rules/_generic-opaque.js.map +1 -0
- package/dist/parsers/rules/_generic-opaque.ts +16 -0
- package/dist/parsers/rules/_loader.d.ts +17 -0
- package/dist/parsers/rules/_loader.d.ts.map +1 -0
- package/dist/parsers/rules/_loader.js +58 -0
- package/dist/parsers/rules/_loader.js.map +1 -0
- package/dist/parsers/rules/_loader.ts +65 -0
- package/dist/parsers/rules/_schema.d.ts +143 -0
- package/dist/parsers/rules/_schema.d.ts.map +1 -0
- package/dist/parsers/rules/_schema.js +44 -0
- package/dist/parsers/rules/_schema.js.map +1 -0
- package/dist/parsers/rules/_schema.ts +54 -0
- package/dist/parsers/rules/_selectors.d.ts +37 -0
- package/dist/parsers/rules/_selectors.d.ts.map +1 -0
- package/dist/parsers/rules/_selectors.js +445 -0
- package/dist/parsers/rules/_selectors.js.map +1 -0
- package/dist/parsers/rules/_selectors.ts +416 -0
- package/dist/parsers/rules/apex-component.yml +26 -0
- package/dist/parsers/rules/apex-page.yml +32 -0
- package/dist/parsers/rules/approval-process.yml +25 -0
- package/dist/parsers/rules/custom-labels.yml +16 -0
- package/dist/parsers/rules/custom-metadata-type.yml +26 -0
- package/dist/parsers/rules/dashboard.yml +20 -0
- package/dist/parsers/rules/duplicate-rule.yml +20 -0
- package/dist/parsers/rules/external-service-registration.yml +20 -0
- package/dist/parsers/rules/gen-ai-planner.yml +19 -0
- package/dist/parsers/rules/gen-ai-plugin.yml +19 -0
- package/dist/parsers/rules/layout.yml +20 -0
- package/dist/parsers/rules/lightning-page.yml +21 -0
- package/dist/parsers/rules/named-credential.yml +15 -0
- package/dist/parsers/rules/network.yml +26 -0
- package/dist/parsers/rules/permission-set-group.yml +20 -0
- package/dist/parsers/rules/permission-set.yml +40 -0
- package/dist/parsers/rules/platform-event.yml +15 -0
- package/dist/parsers/rules/profile.yml +55 -0
- package/dist/parsers/rules/report.yml +25 -0
- package/dist/parsers/rules/sharing-rule.yml +78 -0
- package/dist/parsers/rules/workflow.yml +37 -0
- package/dist/parsers/security/index.d.ts +2 -0
- package/dist/parsers/security/index.d.ts.map +1 -0
- package/dist/parsers/security/index.js +5 -0
- package/dist/parsers/security/index.js.map +1 -0
- package/dist/parsers/sf-misc/index.d.ts +4 -0
- package/dist/parsers/sf-misc/index.d.ts.map +1 -0
- package/dist/parsers/sf-misc/index.js +6 -0
- package/dist/parsers/sf-misc/index.js.map +1 -0
- package/dist/parsers/sf-misc/matching-rule.d.ts +11 -0
- package/dist/parsers/sf-misc/matching-rule.d.ts.map +1 -0
- package/dist/parsers/sf-misc/matching-rule.js +17 -0
- package/dist/parsers/sf-misc/matching-rule.js.map +1 -0
- package/dist/parsers/vf/index.d.ts +2 -0
- package/dist/parsers/vf/index.d.ts.map +1 -0
- package/dist/parsers/vf/index.js +3 -0
- package/dist/parsers/vf/index.js.map +1 -0
- package/dist/parsers/vlocity/common.d.ts +26 -0
- package/dist/parsers/vlocity/common.d.ts.map +1 -0
- package/dist/parsers/vlocity/common.js +66 -0
- package/dist/parsers/vlocity/common.js.map +1 -0
- package/dist/parsers/vlocity/data-raptor.d.ts +11 -0
- package/dist/parsers/vlocity/data-raptor.d.ts.map +1 -0
- package/dist/parsers/vlocity/data-raptor.js +46 -0
- package/dist/parsers/vlocity/data-raptor.js.map +1 -0
- package/dist/parsers/vlocity/fallback.d.ts +7 -0
- package/dist/parsers/vlocity/fallback.d.ts.map +1 -0
- package/dist/parsers/vlocity/fallback.js +8 -0
- package/dist/parsers/vlocity/fallback.js.map +1 -0
- package/dist/parsers/vlocity/index.d.ts +7 -0
- package/dist/parsers/vlocity/index.d.ts.map +1 -0
- package/dist/parsers/vlocity/index.js +10 -0
- package/dist/parsers/vlocity/index.js.map +1 -0
- package/dist/parsers/vlocity/integration-procedure.d.ts +11 -0
- package/dist/parsers/vlocity/integration-procedure.d.ts.map +1 -0
- package/dist/parsers/vlocity/integration-procedure.js +53 -0
- package/dist/parsers/vlocity/integration-procedure.js.map +1 -0
- package/dist/parsers/vlocity/omni-script.d.ts +11 -0
- package/dist/parsers/vlocity/omni-script.d.ts.map +1 -0
- package/dist/parsers/vlocity/omni-script.js +50 -0
- package/dist/parsers/vlocity/omni-script.js.map +1 -0
- package/dist/parsers/vlocity/registry.d.ts +3 -0
- package/dist/parsers/vlocity/registry.d.ts.map +1 -0
- package/dist/parsers/vlocity/registry.js +11 -0
- package/dist/parsers/vlocity/registry.js.map +1 -0
- package/dist/parsers/vlocity/vlocity-card.d.ts +11 -0
- package/dist/parsers/vlocity/vlocity-card.d.ts.map +1 -0
- package/dist/parsers/vlocity/vlocity-card.js +55 -0
- package/dist/parsers/vlocity/vlocity-card.js.map +1 -0
- package/dist/parsers/worker-pool.d.ts +30 -0
- package/dist/parsers/worker-pool.d.ts.map +1 -0
- package/dist/parsers/worker-pool.js +57 -0
- package/dist/parsers/worker-pool.js.map +1 -0
- package/dist/render/mermaid/__tests__/mermaid.test.d.ts +2 -0
- package/dist/render/mermaid/__tests__/mermaid.test.d.ts.map +1 -0
- package/dist/render/mermaid/__tests__/mermaid.test.js +74 -0
- package/dist/render/mermaid/__tests__/mermaid.test.js.map +1 -0
- package/dist/render/mermaid/dependency-graph.d.ts +15 -0
- package/dist/render/mermaid/dependency-graph.d.ts.map +1 -0
- package/dist/render/mermaid/dependency-graph.js +43 -0
- package/dist/render/mermaid/dependency-graph.js.map +1 -0
- package/dist/render/mermaid/diff.d.ts +12 -0
- package/dist/render/mermaid/diff.d.ts.map +1 -0
- package/dist/render/mermaid/diff.js +22 -0
- package/dist/render/mermaid/diff.js.map +1 -0
- package/dist/render/mermaid/flow.d.ts +18 -0
- package/dist/render/mermaid/flow.d.ts.map +1 -0
- package/dist/render/mermaid/flow.js +23 -0
- package/dist/render/mermaid/flow.js.map +1 -0
- package/dist/render/mermaid/index.d.ts +6 -0
- package/dist/render/mermaid/index.d.ts.map +1 -0
- package/dist/render/mermaid/index.js +6 -0
- package/dist/render/mermaid/index.js.map +1 -0
- package/dist/render/mermaid/sequence.d.ts +16 -0
- package/dist/render/mermaid/sequence.d.ts.map +1 -0
- package/dist/render/mermaid/sequence.js +20 -0
- package/dist/render/mermaid/sequence.js.map +1 -0
- package/dist/render/mermaid/shared.d.ts +22 -0
- package/dist/render/mermaid/shared.d.ts.map +1 -0
- package/dist/render/mermaid/shared.js +47 -0
- package/dist/render/mermaid/shared.js.map +1 -0
- package/dist/storage/__tests__/analysis-tables-migration.test.d.ts +2 -0
- package/dist/storage/__tests__/analysis-tables-migration.test.d.ts.map +1 -0
- package/dist/storage/__tests__/analysis-tables-migration.test.js +44 -0
- package/dist/storage/__tests__/analysis-tables-migration.test.js.map +1 -0
- package/dist/storage/__tests__/graph-store.test.d.ts +2 -0
- package/dist/storage/__tests__/graph-store.test.d.ts.map +1 -0
- package/dist/storage/__tests__/graph-store.test.js +132 -0
- package/dist/storage/__tests__/graph-store.test.js.map +1 -0
- package/dist/storage/__tests__/identifier.test.d.ts +2 -0
- package/dist/storage/__tests__/identifier.test.d.ts.map +1 -0
- package/dist/storage/__tests__/identifier.test.js +35 -0
- package/dist/storage/__tests__/identifier.test.js.map +1 -0
- package/dist/storage/__tests__/load-better-sqlite3.test.d.ts +2 -0
- package/dist/storage/__tests__/load-better-sqlite3.test.d.ts.map +1 -0
- package/dist/storage/__tests__/load-better-sqlite3.test.js +65 -0
- package/dist/storage/__tests__/load-better-sqlite3.test.js.map +1 -0
- package/dist/storage/__tests__/migrations.test.d.ts +2 -0
- package/dist/storage/__tests__/migrations.test.d.ts.map +1 -0
- package/dist/storage/__tests__/migrations.test.js +93 -0
- package/dist/storage/__tests__/migrations.test.js.map +1 -0
- package/dist/storage/__tests__/perf-50k.test.d.ts +2 -0
- package/dist/storage/__tests__/perf-50k.test.d.ts.map +1 -0
- package/dist/storage/__tests__/perf-50k.test.js +67 -0
- package/dist/storage/__tests__/perf-50k.test.js.map +1 -0
- package/dist/storage/__tests__/snapshot-store.test.d.ts +2 -0
- package/dist/storage/__tests__/snapshot-store.test.d.ts.map +1 -0
- package/dist/storage/__tests__/snapshot-store.test.js +117 -0
- package/dist/storage/__tests__/snapshot-store.test.js.map +1 -0
- package/dist/storage/__tests__/snippets.test.d.ts +2 -0
- package/dist/storage/__tests__/snippets.test.d.ts.map +1 -0
- package/dist/storage/__tests__/snippets.test.js +88 -0
- package/dist/storage/__tests__/snippets.test.js.map +1 -0
- package/dist/storage/__tests__/vector-store-load-failure.test.d.ts +2 -0
- package/dist/storage/__tests__/vector-store-load-failure.test.d.ts.map +1 -0
- package/dist/storage/__tests__/vector-store-load-failure.test.js +42 -0
- package/dist/storage/__tests__/vector-store-load-failure.test.js.map +1 -0
- package/dist/storage/__tests__/vector-store.test.d.ts +2 -0
- package/dist/storage/__tests__/vector-store.test.d.ts.map +1 -0
- package/dist/storage/__tests__/vector-store.test.js +87 -0
- package/dist/storage/__tests__/vector-store.test.js.map +1 -0
- package/dist/storage/identifier.d.ts +5 -0
- package/dist/storage/identifier.d.ts.map +1 -0
- package/dist/storage/identifier.js +21 -0
- package/dist/storage/identifier.js.map +1 -0
- package/dist/storage/index.d.ts +12 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +8 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/interfaces.d.ts +101 -0
- package/dist/storage/interfaces.d.ts.map +1 -0
- package/dist/storage/interfaces.js +2 -0
- package/dist/storage/interfaces.js.map +1 -0
- package/dist/storage/sqlite/graph-store.d.ts +62 -0
- package/dist/storage/sqlite/graph-store.d.ts.map +1 -0
- package/dist/storage/sqlite/graph-store.js +533 -0
- package/dist/storage/sqlite/graph-store.js.map +1 -0
- package/dist/storage/sqlite/load-better-sqlite3.d.ts +50 -0
- package/dist/storage/sqlite/load-better-sqlite3.d.ts.map +1 -0
- package/dist/storage/sqlite/load-better-sqlite3.js +188 -0
- package/dist/storage/sqlite/load-better-sqlite3.js.map +1 -0
- package/dist/storage/sqlite/migrations.d.ts +18 -0
- package/dist/storage/sqlite/migrations.d.ts.map +1 -0
- package/dist/storage/sqlite/migrations.js +291 -0
- package/dist/storage/sqlite/migrations.js.map +1 -0
- package/dist/storage/sqlite/snapshot-store.d.ts +31 -0
- package/dist/storage/sqlite/snapshot-store.d.ts.map +1 -0
- package/dist/storage/sqlite/snapshot-store.js +255 -0
- package/dist/storage/sqlite/snapshot-store.js.map +1 -0
- package/dist/storage/sqlite/vector-store.d.ts +28 -0
- package/dist/storage/sqlite/vector-store.d.ts.map +1 -0
- package/dist/storage/sqlite/vector-store.js +174 -0
- package/dist/storage/sqlite/vector-store.js.map +1 -0
- package/dist/telemetry/__tests__/event-schema.test.d.ts +2 -0
- package/dist/telemetry/__tests__/event-schema.test.d.ts.map +1 -0
- package/dist/telemetry/__tests__/event-schema.test.js +56 -0
- package/dist/telemetry/__tests__/event-schema.test.js.map +1 -0
- package/dist/telemetry/__tests__/machine-id.test.d.ts +2 -0
- package/dist/telemetry/__tests__/machine-id.test.d.ts.map +1 -0
- package/dist/telemetry/__tests__/machine-id.test.js +33 -0
- package/dist/telemetry/__tests__/machine-id.test.js.map +1 -0
- package/dist/telemetry/__tests__/pipeline.test.d.ts +2 -0
- package/dist/telemetry/__tests__/pipeline.test.d.ts.map +1 -0
- package/dist/telemetry/__tests__/pipeline.test.js +68 -0
- package/dist/telemetry/__tests__/pipeline.test.js.map +1 -0
- package/dist/telemetry/__tests__/sanitizer.test.d.ts +2 -0
- package/dist/telemetry/__tests__/sanitizer.test.d.ts.map +1 -0
- package/dist/telemetry/__tests__/sanitizer.test.js +143 -0
- package/dist/telemetry/__tests__/sanitizer.test.js.map +1 -0
- package/dist/telemetry/event-schema.d.ts +47 -0
- package/dist/telemetry/event-schema.d.ts.map +1 -0
- package/dist/telemetry/event-schema.js +64 -0
- package/dist/telemetry/event-schema.js.map +1 -0
- package/dist/telemetry/index.d.ts +6 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +6 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/machine-id.d.ts +7 -0
- package/dist/telemetry/machine-id.d.ts.map +1 -0
- package/dist/telemetry/machine-id.js +30 -0
- package/dist/telemetry/machine-id.js.map +1 -0
- package/dist/telemetry/pipeline.d.ts +17 -0
- package/dist/telemetry/pipeline.d.ts.map +1 -0
- package/dist/telemetry/pipeline.js +33 -0
- package/dist/telemetry/pipeline.js.map +1 -0
- package/dist/telemetry/sanitizer.d.ts +9 -0
- package/dist/telemetry/sanitizer.d.ts.map +1 -0
- package/dist/telemetry/sanitizer.js +87 -0
- package/dist/telemetry/sanitizer.js.map +1 -0
- package/dist/telemetry/sinks.d.ts +22 -0
- package/dist/telemetry/sinks.d.ts.map +1 -0
- package/dist/telemetry/sinks.js +40 -0
- package/dist/telemetry/sinks.js.map +1 -0
- package/dist/tools/types.d.ts +7 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +2 -0
- package/dist/tools/types.js.map +1 -0
- package/package.json +89 -0
|
@@ -0,0 +1,611 @@
|
|
|
1
|
+
import { ErrorCode, SfgraphError, asQualifiedName } from "@ryanstark24/sfgraph-shared";
|
|
2
|
+
import { parserRegistry } from "../parsers/registry.js";
|
|
3
|
+
// Ensure all parsers are registered before we look them up.
|
|
4
|
+
import "../parsers/index.js";
|
|
5
|
+
import { populateAnalysisTables } from "../analyze/populate.js";
|
|
6
|
+
import { EmbeddingQueue } from "../embedding/index.js";
|
|
7
|
+
import { resolveOrg } from "../extractors/live-org/auth.js";
|
|
8
|
+
import { bulkRetrieve } from "../extractors/live-org/bulk-retrieve.js";
|
|
9
|
+
import { probeCapabilities } from "../extractors/live-org/capabilities.js";
|
|
10
|
+
import { iterChanges } from "../extractors/live-org/source-member.js";
|
|
11
|
+
import { dataPool, metadataPool, toolingPool } from "../extractors/live-org/rate-limit.js";
|
|
12
|
+
import { loadAllRules } from "../parsers/rules/_loader.js";
|
|
13
|
+
const NOOP_LOG = {
|
|
14
|
+
debug: () => { },
|
|
15
|
+
info: () => { },
|
|
16
|
+
warn: () => { },
|
|
17
|
+
error: () => { },
|
|
18
|
+
};
|
|
19
|
+
/** Print a consolidated end-of-run summary of metadata types that were
|
|
20
|
+
* skipped during ingest, grouped by failure category, with a targeted
|
|
21
|
+
* remediation block per category. */
|
|
22
|
+
function printSkipSummary(report, orgAlias) {
|
|
23
|
+
const byCategory = new Map();
|
|
24
|
+
for (const s of report.skips) {
|
|
25
|
+
const arr = byCategory.get(s.category) ?? [];
|
|
26
|
+
arr.push({ label: s.label, reason: s.reason });
|
|
27
|
+
byCategory.set(s.category, arr);
|
|
28
|
+
}
|
|
29
|
+
const total = report.skips.length;
|
|
30
|
+
console.log("");
|
|
31
|
+
console.log(`⚠ ${total} metadata ${total === 1 ? "type was" : "types were"} skipped during this ingest.`);
|
|
32
|
+
console.log(" The rest of the graph completed successfully — these types are simply absent.");
|
|
33
|
+
if (byCategory.has("insufficient_access")) {
|
|
34
|
+
const list = byCategory.get("insufficient_access") ?? [];
|
|
35
|
+
console.log("");
|
|
36
|
+
console.log(` Insufficient access (${list.length}):`);
|
|
37
|
+
for (const s of list)
|
|
38
|
+
console.log(` • ${s.label}: ${s.reason}`);
|
|
39
|
+
console.log("");
|
|
40
|
+
console.log(" How to fix permanently:");
|
|
41
|
+
console.log(" 1. Have an admin assign your user a permission set with:");
|
|
42
|
+
console.log(" - 'Modify Metadata Through Metadata API Functions'");
|
|
43
|
+
console.log(" - 'View All Data' (or assign the System Administrator profile)");
|
|
44
|
+
console.log(" 2. Re-run with --rebuild to pick up the now-accessible types:");
|
|
45
|
+
console.log(` sfgraph ingest --org ${orgAlias} --rebuild`);
|
|
46
|
+
console.log(" Note: if you ARE already an admin and still see this, it usually means the");
|
|
47
|
+
console.log(" extractor is hitting a system entity that doesn't expose CustomObject metadata.");
|
|
48
|
+
console.log(" File an issue with the error text above so we can deny-list the entity.");
|
|
49
|
+
}
|
|
50
|
+
if (byCategory.has("rate_limit")) {
|
|
51
|
+
const list = byCategory.get("rate_limit") ?? [];
|
|
52
|
+
console.log("");
|
|
53
|
+
console.log(` Rate-limited (${list.length}):`);
|
|
54
|
+
for (const s of list)
|
|
55
|
+
console.log(` • ${s.label}`);
|
|
56
|
+
console.log(" How to fix: wait for the API quota to refresh, then re-fetch ONLY these");
|
|
57
|
+
console.log(" sources (no full rebuild needed):");
|
|
58
|
+
console.log(` sfgraph ingest --org ${orgAlias} --retry-skipped`);
|
|
59
|
+
console.log(" The previous skip report is persisted at <dataDir>/<orgId>.skips.json.");
|
|
60
|
+
}
|
|
61
|
+
if (byCategory.has("not_found")) {
|
|
62
|
+
const list = byCategory.get("not_found") ?? [];
|
|
63
|
+
console.log("");
|
|
64
|
+
console.log(` Not retrievable in this org (${list.length}):`);
|
|
65
|
+
for (const s of list)
|
|
66
|
+
console.log(` • ${s.label}`);
|
|
67
|
+
console.log(" These types were advertised by describeMetadata() but the org refuses to");
|
|
68
|
+
console.log(" return data for them — usually deprecated or feature-gated. Safe to ignore.");
|
|
69
|
+
}
|
|
70
|
+
if (byCategory.has("network")) {
|
|
71
|
+
const list = byCategory.get("network") ?? [];
|
|
72
|
+
console.log("");
|
|
73
|
+
console.log(` Network errors (${list.length}):`);
|
|
74
|
+
for (const s of list)
|
|
75
|
+
console.log(` • ${s.label}: ${s.reason}`);
|
|
76
|
+
console.log(" How to fix: check connectivity to your org and re-run.");
|
|
77
|
+
}
|
|
78
|
+
if (byCategory.has("unknown")) {
|
|
79
|
+
const list = byCategory.get("unknown") ?? [];
|
|
80
|
+
console.log("");
|
|
81
|
+
console.log(` Other (${list.length}):`);
|
|
82
|
+
for (const s of list)
|
|
83
|
+
console.log(` • ${s.label}: ${s.reason}`);
|
|
84
|
+
}
|
|
85
|
+
console.log("");
|
|
86
|
+
}
|
|
87
|
+
/** Live-org Apex extractor wraps body in a `{body, metaXml}` JSON envelope
|
|
88
|
+
* so we can forward Tooling-row ApiVersion/Status to the parser. Filesystem
|
|
89
|
+
* extractor still passes raw body. Detect by trying JSON.parse — if it
|
|
90
|
+
* yields an object with `body`, unwrap; otherwise treat as raw body. */
|
|
91
|
+
function unwrapApexEnvelope(content) {
|
|
92
|
+
if (!content)
|
|
93
|
+
return { body: "" };
|
|
94
|
+
if (content[0] !== "{")
|
|
95
|
+
return { body: content };
|
|
96
|
+
try {
|
|
97
|
+
const parsed = JSON.parse(content);
|
|
98
|
+
if (parsed && typeof parsed === "object" && typeof parsed.body === "string") {
|
|
99
|
+
const out = { body: parsed.body };
|
|
100
|
+
if (typeof parsed.metaXml === "string")
|
|
101
|
+
out.metaXml = parsed.metaXml;
|
|
102
|
+
return out;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
/* fallthrough — raw body */
|
|
107
|
+
}
|
|
108
|
+
return { body: content };
|
|
109
|
+
}
|
|
110
|
+
function adaptParserInput(ref, content) {
|
|
111
|
+
switch (ref.memberType) {
|
|
112
|
+
case "ApexClass": {
|
|
113
|
+
const { body, metaXml } = unwrapApexEnvelope(content);
|
|
114
|
+
return {
|
|
115
|
+
type: "ApexClass",
|
|
116
|
+
input: { className: ref.memberName, body, ...(metaXml ? { metaXml } : {}) },
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
case "ApexTrigger": {
|
|
120
|
+
const { body, metaXml } = unwrapApexEnvelope(content);
|
|
121
|
+
return {
|
|
122
|
+
type: "ApexTrigger",
|
|
123
|
+
input: { triggerName: ref.memberName, body, ...(metaXml ? { metaXml } : {}) },
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
case "LightningComponentBundle": {
|
|
127
|
+
try {
|
|
128
|
+
const parsed = JSON.parse(content || "{}");
|
|
129
|
+
return {
|
|
130
|
+
type: "LightningComponentBundle",
|
|
131
|
+
input: { bundleName: parsed.bundleName ?? ref.memberName, files: parsed.files ?? {} },
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
case "Flow":
|
|
139
|
+
return { type: "Flow", input: { fullName: ref.memberName, xml: content } };
|
|
140
|
+
case "CustomObject":
|
|
141
|
+
return { type: "CustomObject", input: { apiName: ref.memberName, objectXml: content } };
|
|
142
|
+
case "Profile":
|
|
143
|
+
return { type: "Profile", input: { name: ref.memberName, xml: content } };
|
|
144
|
+
case "PermissionSet":
|
|
145
|
+
return { type: "PermissionSet", input: { name: ref.memberName, xml: content } };
|
|
146
|
+
case "SharingRules":
|
|
147
|
+
return { type: "SharingRules", input: { object: ref.memberName, xml: content } };
|
|
148
|
+
case "NamedCredential":
|
|
149
|
+
return { type: "NamedCredential", input: { name: ref.memberName, xml: content } };
|
|
150
|
+
case "ExternalServiceRegistration":
|
|
151
|
+
return { type: "ExternalServiceRegistration", input: { name: ref.memberName, xml: content } };
|
|
152
|
+
case "OmniProcess":
|
|
153
|
+
case "OmniUiCard":
|
|
154
|
+
case "OmniDataTransform":
|
|
155
|
+
case "OmniIntegrationProcedure": {
|
|
156
|
+
let metadata = content;
|
|
157
|
+
try {
|
|
158
|
+
metadata = JSON.parse(content);
|
|
159
|
+
}
|
|
160
|
+
catch {
|
|
161
|
+
/* keep raw */
|
|
162
|
+
}
|
|
163
|
+
return { type: ref.memberType, input: { name: ref.memberName, metadata } };
|
|
164
|
+
}
|
|
165
|
+
case "VlocityDataRaptor":
|
|
166
|
+
case "VlocityIntegrationProcedure":
|
|
167
|
+
case "VlocityCard":
|
|
168
|
+
case "VlocityOmniScript": {
|
|
169
|
+
let datapack = content;
|
|
170
|
+
try {
|
|
171
|
+
datapack = JSON.parse(content);
|
|
172
|
+
}
|
|
173
|
+
catch {
|
|
174
|
+
/* keep raw */
|
|
175
|
+
}
|
|
176
|
+
return { type: ref.memberType, input: { name: ref.memberName, datapack } };
|
|
177
|
+
}
|
|
178
|
+
default:
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
export async function liveIngest(opts) {
|
|
183
|
+
const logger = opts.logger ?? NOOP_LOG;
|
|
184
|
+
// Load declarative rule parsers (idempotent).
|
|
185
|
+
try {
|
|
186
|
+
await loadAllRules();
|
|
187
|
+
}
|
|
188
|
+
catch (e) {
|
|
189
|
+
logger.warn("live-ingest: rule load failed", { err: e.message });
|
|
190
|
+
}
|
|
191
|
+
const startedAt = Date.now();
|
|
192
|
+
const resolved = opts.preResolved ?? (await resolveOrg(opts.alias, opts.resolveDeps));
|
|
193
|
+
logger.info("live-ingest: resolved org", { alias: resolved.alias, orgId: resolved.orgId });
|
|
194
|
+
const graph = opts.graphStore;
|
|
195
|
+
const now = Date.now();
|
|
196
|
+
const apiVersion = resolved.apiVersion;
|
|
197
|
+
graph.upsertOrg({
|
|
198
|
+
id: resolved.orgId,
|
|
199
|
+
alias: resolved.alias,
|
|
200
|
+
instanceUrl: resolved.instanceUrl,
|
|
201
|
+
apiVersion,
|
|
202
|
+
createdAt: now,
|
|
203
|
+
});
|
|
204
|
+
const caps = await probeCapabilities(resolved.conn);
|
|
205
|
+
logger.info("live-ingest: probed capabilities", { caps });
|
|
206
|
+
// Discovery is also invoked implicitly inside bulkRetrieve, but logging the
|
|
207
|
+
// type-count up-front gives operators a quick coverage signal.
|
|
208
|
+
try {
|
|
209
|
+
const { discoverMetadataTypes } = await import("../extractors/live-org/discovery.js");
|
|
210
|
+
const discovered = await discoverMetadataTypes(resolved.conn, apiVersion);
|
|
211
|
+
logger.info("live-ingest: discovered metadata types", { count: discovered.length });
|
|
212
|
+
}
|
|
213
|
+
catch (e) {
|
|
214
|
+
logger.warn("live-ingest: metadata.describe failed", { err: e.message });
|
|
215
|
+
}
|
|
216
|
+
const existing = graph.getOrg(resolved.orgId);
|
|
217
|
+
const requestedMode = opts.mode ?? "auto";
|
|
218
|
+
let mode;
|
|
219
|
+
if (requestedMode === "auto") {
|
|
220
|
+
mode = existing?.lastSyncedAt && caps.sourceTracking ? "incremental" : "full";
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
mode = requestedMode;
|
|
224
|
+
}
|
|
225
|
+
if (!opts.skipSnapshot && opts.snapshotStore) {
|
|
226
|
+
try {
|
|
227
|
+
opts.snapshotStore.createSnapshot(resolved.orgId, `pre-sync-${new Date(now).toISOString()}`, true);
|
|
228
|
+
}
|
|
229
|
+
catch (e) {
|
|
230
|
+
logger.warn("live-ingest: snapshot failed", { err: e.message });
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
let membersProcessed = 0;
|
|
234
|
+
let parseErrors = 0;
|
|
235
|
+
let deletions = 0;
|
|
236
|
+
// Set in the full-sync branch if the bulkRetrieve stream itself throws.
|
|
237
|
+
// Detect-deletions reads it post-fan-out to bail out instead of mass-
|
|
238
|
+
// wiping nodes that were never visited due to the abort.
|
|
239
|
+
let streamAborted = false;
|
|
240
|
+
const touchedQnames = new Set();
|
|
241
|
+
const parseCtxBase = {
|
|
242
|
+
orgId: resolved.orgId,
|
|
243
|
+
parseTimestamp: new Date(now).toISOString(),
|
|
244
|
+
namespace: null,
|
|
245
|
+
logger,
|
|
246
|
+
};
|
|
247
|
+
const embedQueue = opts.vectorStore
|
|
248
|
+
? new EmbeddingQueue({
|
|
249
|
+
vectorStore: opts.vectorStore,
|
|
250
|
+
onError: (err) => logger.warn("live-ingest: embedding batch failed", { err: err.message }),
|
|
251
|
+
})
|
|
252
|
+
: null;
|
|
253
|
+
const handleParsed = (parsed) => {
|
|
254
|
+
if (parsed.nodes.length) {
|
|
255
|
+
graph.mergeNodes(parsed.nodes);
|
|
256
|
+
for (const n of parsed.nodes)
|
|
257
|
+
touchedQnames.add(String(n.qualifiedName));
|
|
258
|
+
}
|
|
259
|
+
if (parsed.edges.length)
|
|
260
|
+
graph.mergeEdges(parsed.edges);
|
|
261
|
+
if (parsed.snippets?.length) {
|
|
262
|
+
graph.transaction(() => {
|
|
263
|
+
for (const s of parsed.snippets ?? []) {
|
|
264
|
+
graph.upsertSnippet(s);
|
|
265
|
+
}
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
if (embedQueue) {
|
|
269
|
+
for (const n of parsed.nodes) {
|
|
270
|
+
const desc = n.attributes?.description;
|
|
271
|
+
const text = `${n.label}: ${n.qualifiedName}\n${typeof desc === "string" ? desc : ""}`;
|
|
272
|
+
embedQueue.push({
|
|
273
|
+
qname: String(n.qualifiedName),
|
|
274
|
+
text,
|
|
275
|
+
orgId: String(n.orgId),
|
|
276
|
+
label: n.label,
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
};
|
|
281
|
+
const debugProcess = process.env.SFGRAPH_DEBUG_INGEST === "1";
|
|
282
|
+
const processOne = async (ref, content) => {
|
|
283
|
+
const qnameForLog = `${ref.memberType}:${ref.memberName}`;
|
|
284
|
+
if (ref.obsolete) {
|
|
285
|
+
// Build the qualified name same way parsers would: best-effort by member name.
|
|
286
|
+
const qname = asQualifiedName(`${ref.memberType}:${ref.memberName}`);
|
|
287
|
+
if (debugProcess)
|
|
288
|
+
console.log(`ingest: [trace] delete ← ${qnameForLog}`);
|
|
289
|
+
graph.deleteEdgesFor(resolved.orgId, qname);
|
|
290
|
+
graph.deleteNode(resolved.orgId, qname);
|
|
291
|
+
if (debugProcess)
|
|
292
|
+
console.log(`ingest: [trace] delete ✓ ${qnameForLog}`);
|
|
293
|
+
deletions += 1;
|
|
294
|
+
return;
|
|
295
|
+
}
|
|
296
|
+
const adapted = adaptParserInput(ref, content);
|
|
297
|
+
if (!adapted)
|
|
298
|
+
return;
|
|
299
|
+
const parser = parserRegistry.for(adapted.type);
|
|
300
|
+
if (!parser)
|
|
301
|
+
return;
|
|
302
|
+
try {
|
|
303
|
+
const ctx = {
|
|
304
|
+
...parseCtxBase,
|
|
305
|
+
sourceUri: ref.sourceUri,
|
|
306
|
+
namespace: ref.namespace ?? null,
|
|
307
|
+
};
|
|
308
|
+
if (debugProcess)
|
|
309
|
+
console.log(`ingest: [trace] parse ← ${qnameForLog}`);
|
|
310
|
+
const result = await parser.parse(adapted.input, ctx);
|
|
311
|
+
if (debugProcess)
|
|
312
|
+
console.log(`ingest: [trace] parse ✓ ${qnameForLog} (nodes=${result.nodes.length} edges=${result.edges.length})`);
|
|
313
|
+
if (debugProcess)
|
|
314
|
+
console.log(`ingest: [trace] graph-merge ← ${qnameForLog}`);
|
|
315
|
+
handleParsed(result);
|
|
316
|
+
if (debugProcess)
|
|
317
|
+
console.log(`ingest: [trace] graph-merge ✓ ${qnameForLog}`);
|
|
318
|
+
membersProcessed += 1;
|
|
319
|
+
}
|
|
320
|
+
catch (e) {
|
|
321
|
+
parseErrors += 1;
|
|
322
|
+
logger.warn("live-ingest: parser failure", {
|
|
323
|
+
type: ref.memberType,
|
|
324
|
+
name: ref.memberName,
|
|
325
|
+
err: e.message,
|
|
326
|
+
});
|
|
327
|
+
if (debugProcess) {
|
|
328
|
+
console.error(`ingest: [trace] FAILURE ${qnameForLog}: ${e.message}\n${e.stack}`);
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
};
|
|
332
|
+
if (mode === "incremental") {
|
|
333
|
+
const sinceIso = existing?.lastSyncedAt
|
|
334
|
+
? new Date(existing.lastSyncedAt).toISOString()
|
|
335
|
+
: new Date(now - 24 * 3600 * 1000).toISOString();
|
|
336
|
+
for await (const ref of iterChanges(resolved.conn, resolved.orgId, sinceIso)) {
|
|
337
|
+
// For incremental, content is best fetched on-demand; for deletions we skip content.
|
|
338
|
+
await processOne(ref, "");
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
else {
|
|
342
|
+
// The outer iteration is also wrapped: bulkRetrieve uses fail-soft per
|
|
343
|
+
// source, but a top-level catch protects against any iterator-protocol
|
|
344
|
+
// surprises (e.g. generator throws during `next()` before yielding).
|
|
345
|
+
// Read live pool caps so the log reflects --tooling-pool/--metadata-pool/
|
|
346
|
+
// --data-pool overrides or SFGRAPH_*_POOL env vars rather than hardcoded
|
|
347
|
+
// defaults.
|
|
348
|
+
const { toolingPool, metadataPool, dataPool } = await import("../extractors/live-org/rate-limit.js");
|
|
349
|
+
const tCap = toolingPool._store
|
|
350
|
+
.storeOptions.maxConcurrent;
|
|
351
|
+
const mCap = metadataPool._store
|
|
352
|
+
.storeOptions.maxConcurrent;
|
|
353
|
+
const dCap = dataPool._store
|
|
354
|
+
.storeOptions.maxConcurrent;
|
|
355
|
+
console.log(`ingest: starting full sync (Tooling pool ${tCap} / Metadata pool ${mCap} / Data pool ${dCap} concurrent)`);
|
|
356
|
+
const fanOutStart = Date.now();
|
|
357
|
+
let progressCount = 0;
|
|
358
|
+
let lastTickAt = Date.now();
|
|
359
|
+
let lastActivityAt = Date.now();
|
|
360
|
+
let lastMemberLabel = "(none)";
|
|
361
|
+
const PROGRESS_TICK_MS = 5000; // emit a heartbeat at least every 5s
|
|
362
|
+
const skipReport = { skips: [] };
|
|
363
|
+
if (opts.onlyLabels && opts.onlyLabels.size > 0) {
|
|
364
|
+
console.log(`ingest: --only filter active (${opts.onlyLabels.size} source${opts.onlyLabels.size === 1 ? "" : "s"}): ${[...opts.onlyLabels].join(", ")}`);
|
|
365
|
+
}
|
|
366
|
+
// Debug mode: SFGRAPH_DEBUG_INGEST=1 enables a heartbeat timer that
|
|
367
|
+
// prints heap usage + seconds-since-last-activity every 10s. Critical
|
|
368
|
+
// for diagnosing silent ingest deaths (OOM, native segfault, hung SF
|
|
369
|
+
// call) where the normal progress log just stops without an error.
|
|
370
|
+
const debug = process.env.SFGRAPH_DEBUG_INGEST === "1";
|
|
371
|
+
let heartbeatTimer = null;
|
|
372
|
+
let keepAlive = null;
|
|
373
|
+
// Track signal handlers we register so we can remove them in finally.
|
|
374
|
+
// Without this, every invocation of liveIngest in debug mode leaked one
|
|
375
|
+
// listener per signal (SIGTERM/SIGINT/SIGUSR2), eventually triggering
|
|
376
|
+
// MaxListenersExceededWarning and N-fold handler firing on first ^C in
|
|
377
|
+
// multi-org / programmatic flows. (Audit finding C2.)
|
|
378
|
+
const installedSignalHandlers = [];
|
|
379
|
+
// streamAborted (hoisted at function scope) gates the post-fan-out
|
|
380
|
+
// detect-deletions block. If the bulkRetrieve stream itself throws
|
|
381
|
+
// (vs individual sources fail-softing), we've only seen a fraction of
|
|
382
|
+
// the org and the `touchedQnames` set is not safe to use for stale-
|
|
383
|
+
// qname computation — without this guard a transient SF error would
|
|
384
|
+
// mass-delete the untouched 70% of the graph. (Audit finding C1.)
|
|
385
|
+
try {
|
|
386
|
+
// Keep-alive sentinel: a ref'd timer that exists purely to prevent the
|
|
387
|
+
// event loop from draining while we're awaiting Bottleneck-scheduled
|
|
388
|
+
// work. Bottleneck's local-datastore reservoir-refresh timer is unref'd
|
|
389
|
+
// internally, jsforce's HTTP keep-alive sockets idle between requests,
|
|
390
|
+
// and Node will happily exit(0) on a perfectly healthy pending Promise
|
|
391
|
+
// if no ref'd handle is left.
|
|
392
|
+
keepAlive = setInterval(() => { }, 60_000);
|
|
393
|
+
// Wall-clock heartbeat — always on. Without this, silent phases (where
|
|
394
|
+
// all in-window sources are awaiting Bottleneck-queued metadata reads
|
|
395
|
+
// without yielding) look indistinguishable from a hung process. The
|
|
396
|
+
// per-record progress tick at the bottom of the fan-out loop only
|
|
397
|
+
// fires when a record arrives; this fires on a real timer regardless.
|
|
398
|
+
// Debug mode adds heap/rss; baseline shows processed/lastSource/idle.
|
|
399
|
+
const showPoolCounters = debug || process.env.SFGRAPH_DEBUG_POOLS === "1";
|
|
400
|
+
heartbeatTimer = setInterval(() => {
|
|
401
|
+
const idleSec = Math.round((Date.now() - lastActivityAt) / 1000);
|
|
402
|
+
if (idleSec < 10)
|
|
403
|
+
return; // suppress chatter when records are flowing
|
|
404
|
+
if (debug) {
|
|
405
|
+
const mem = process.memoryUsage();
|
|
406
|
+
const heapMb = Math.round(mem.heapUsed / 1024 / 1024);
|
|
407
|
+
const rssMb = Math.round(mem.rss / 1024 / 1024);
|
|
408
|
+
const externalMb = Math.round(mem.external / 1024 / 1024);
|
|
409
|
+
console.log(`ingest: [heartbeat] processed=${progressCount} lastSource=${lastMemberLabel} idle=${idleSec}s heap=${heapMb}MB rss=${rssMb}MB ext=${externalMb}MB`);
|
|
410
|
+
}
|
|
411
|
+
else {
|
|
412
|
+
console.log(`ingest: …still working — processed=${progressCount} idle=${idleSec}s lastSource=${lastMemberLabel}`);
|
|
413
|
+
}
|
|
414
|
+
// Pool diagnostics: snapshot Bottleneck state so a wedge can be
|
|
415
|
+
// attributed concretely to reservoir starvation vs. stuck-in-flight
|
|
416
|
+
// jobs vs. pre-yield iterator hangs. Counts are synchronous; the
|
|
417
|
+
// reservoir read is async but fire-and-forget — by the time it
|
|
418
|
+
// resolves we just log it.
|
|
419
|
+
if (showPoolCounters) {
|
|
420
|
+
const snapshot = [
|
|
421
|
+
["tool", toolingPool],
|
|
422
|
+
["meta", metadataPool],
|
|
423
|
+
["data", dataPool],
|
|
424
|
+
];
|
|
425
|
+
for (const [name, p] of snapshot) {
|
|
426
|
+
const c = p.counts();
|
|
427
|
+
p.currentReservoir().then((reservoir) => {
|
|
428
|
+
console.log(`ingest: [pool ${name}] running=${c.RUNNING} executing=${c.EXECUTING} queued=${c.QUEUED} received=${c.RECEIVED} reservoir=${reservoir}`);
|
|
429
|
+
}, () => {
|
|
430
|
+
/* swallow — never let a diag failure kill ingest */
|
|
431
|
+
});
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
}, 10_000);
|
|
435
|
+
if (debug) {
|
|
436
|
+
console.log("ingest: [debug] SFGRAPH_DEBUG_INGEST=1 active — heartbeat every 10s");
|
|
437
|
+
// Signal handlers — surface what was running when the user (or OS)
|
|
438
|
+
// sends a kill so silent terminations have at least one breadcrumb.
|
|
439
|
+
const onSig = (sig) => () => {
|
|
440
|
+
console.error(`ingest: [debug] received ${sig} after ${Math.round((Date.now() - fanOutStart) / 1000)}s — processed=${progressCount} lastSource=${lastMemberLabel}`);
|
|
441
|
+
console.error(new Error(`signal:${sig}`).stack);
|
|
442
|
+
process.exitCode = 130;
|
|
443
|
+
};
|
|
444
|
+
const onUsr2 = () => {
|
|
445
|
+
const mem = process.memoryUsage();
|
|
446
|
+
console.error(`ingest: [debug] SIGUSR2 — heap=${Math.round(mem.heapUsed / 1024 / 1024)}MB rss=${Math.round(mem.rss / 1024 / 1024)}MB lastSource=${lastMemberLabel}`);
|
|
447
|
+
};
|
|
448
|
+
installedSignalHandlers.push({ sig: "SIGTERM", fn: onSig("SIGTERM") });
|
|
449
|
+
installedSignalHandlers.push({ sig: "SIGINT", fn: onSig("SIGINT") });
|
|
450
|
+
installedSignalHandlers.push({ sig: "SIGUSR2", fn: onUsr2 });
|
|
451
|
+
for (const h of installedSignalHandlers)
|
|
452
|
+
process.on(h.sig, h.fn);
|
|
453
|
+
}
|
|
454
|
+
try {
|
|
455
|
+
for await (const member of bulkRetrieve(resolved.conn, caps, resolved.orgId, {
|
|
456
|
+
skipReport,
|
|
457
|
+
...(opts.onlyLabels ? { onlyLabels: opts.onlyLabels } : {}),
|
|
458
|
+
})) {
|
|
459
|
+
try {
|
|
460
|
+
await processOne(member.ref, member.content);
|
|
461
|
+
}
|
|
462
|
+
catch (e) {
|
|
463
|
+
parseErrors += 1;
|
|
464
|
+
logger.warn("live-ingest: processOne failed", {
|
|
465
|
+
qname: `${member.ref.memberType}:${member.ref.memberName}`,
|
|
466
|
+
error: e.message,
|
|
467
|
+
});
|
|
468
|
+
}
|
|
469
|
+
progressCount += 1;
|
|
470
|
+
lastActivityAt = Date.now();
|
|
471
|
+
lastMemberLabel = `${member.ref.memberType}:${member.ref.memberName}`;
|
|
472
|
+
if (progressCount % 200 === 0 || Date.now() - lastTickAt > PROGRESS_TICK_MS) {
|
|
473
|
+
const elapsedSec = Math.round((Date.now() - fanOutStart) / 1000);
|
|
474
|
+
const memSuffix = debug
|
|
475
|
+
? ` heap=${Math.round(process.memoryUsage().heapUsed / 1024 / 1024)}MB`
|
|
476
|
+
: "";
|
|
477
|
+
console.log(`ingest: …${progressCount} members processed so far (${elapsedSec}s elapsed)${memSuffix}`);
|
|
478
|
+
lastTickAt = Date.now();
|
|
479
|
+
}
|
|
480
|
+
if (progressCount % 500 === 0) {
|
|
481
|
+
const gs = graph;
|
|
482
|
+
if (typeof gs.checkpoint === "function")
|
|
483
|
+
gs.checkpoint();
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
console.log(`ingest: fan-out complete (${progressCount} members in ${Math.round((Date.now() - fanOutStart) / 1000)}s)`);
|
|
487
|
+
const gs = graph;
|
|
488
|
+
if (typeof gs.checkpoint === "function")
|
|
489
|
+
gs.checkpoint();
|
|
490
|
+
}
|
|
491
|
+
catch (e) {
|
|
492
|
+
// The stream itself threw (not an individual source — those are
|
|
493
|
+
// captured by failSoft). Mark so detect-deletions stays its hand.
|
|
494
|
+
streamAborted = true;
|
|
495
|
+
logger.warn("live-ingest: bulkRetrieve stream aborted", {
|
|
496
|
+
error: e.message,
|
|
497
|
+
});
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
finally {
|
|
501
|
+
if (heartbeatTimer)
|
|
502
|
+
clearInterval(heartbeatTimer);
|
|
503
|
+
if (keepAlive)
|
|
504
|
+
clearInterval(keepAlive);
|
|
505
|
+
for (const h of installedSignalHandlers)
|
|
506
|
+
process.off(h.sig, h.fn);
|
|
507
|
+
}
|
|
508
|
+
// End-of-run skip summary. Grouped by category so the remediation is
|
|
509
|
+
// targeted to the specific class of failure.
|
|
510
|
+
if (skipReport.skips.length > 0) {
|
|
511
|
+
printSkipSummary(skipReport, resolved.alias);
|
|
512
|
+
}
|
|
513
|
+
// Persist the skip report so --retry-skipped can read it next run.
|
|
514
|
+
// Always written (even when empty) so users can tell whether the last
|
|
515
|
+
// run had skips or just hasn't recorded any yet.
|
|
516
|
+
if (opts.skipReportPath) {
|
|
517
|
+
try {
|
|
518
|
+
const { writeFileSync, mkdirSync } = await import("node:fs");
|
|
519
|
+
const { dirname } = await import("node:path");
|
|
520
|
+
mkdirSync(dirname(opts.skipReportPath), { recursive: true });
|
|
521
|
+
writeFileSync(opts.skipReportPath, JSON.stringify({ recordedAt: Date.now(), orgId: resolved.orgId, ...skipReport }, null, 2), "utf8");
|
|
522
|
+
}
|
|
523
|
+
catch (e) {
|
|
524
|
+
logger.warn("live-ingest: skip report write failed", { err: e.message });
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
if (embedQueue) {
|
|
529
|
+
try {
|
|
530
|
+
await embedQueue.drain();
|
|
531
|
+
}
|
|
532
|
+
catch (e) {
|
|
533
|
+
logger.warn("live-ingest: embed drain failed", { err: e.message });
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
// Full-sync deletion detection: compute previously-known minus touched and
|
|
537
|
+
// delete the difference. Skipped on incremental (SourceMember handles it),
|
|
538
|
+
// skipped if any parse error occurred this run (avoid mass-wipe on
|
|
539
|
+
// transient SF errors).
|
|
540
|
+
if (opts.detectDeletions && mode === "full") {
|
|
541
|
+
if (streamAborted) {
|
|
542
|
+
logger.warn("live-ingest: detect-deletions skipped because bulkRetrieve stream aborted — touchedQnames is incomplete and a full deletion sweep would wrongly wipe untouched-but-still-present nodes");
|
|
543
|
+
}
|
|
544
|
+
else if (parseErrors > 0) {
|
|
545
|
+
logger.warn("live-ingest: detect-deletions skipped due to parseErrors", { parseErrors });
|
|
546
|
+
}
|
|
547
|
+
else {
|
|
548
|
+
try {
|
|
549
|
+
const persisted = graph.listAllQnames(resolved.orgId);
|
|
550
|
+
const stale = [];
|
|
551
|
+
for (const q of persisted) {
|
|
552
|
+
if (!touchedQnames.has(String(q)))
|
|
553
|
+
stale.push(String(q));
|
|
554
|
+
}
|
|
555
|
+
for (const q of stale) {
|
|
556
|
+
graph.deleteEdgesFor(resolved.orgId, asQualifiedName(q));
|
|
557
|
+
graph.deleteNode(resolved.orgId, asQualifiedName(q));
|
|
558
|
+
deletions += 1;
|
|
559
|
+
}
|
|
560
|
+
if (stale.length > 0) {
|
|
561
|
+
logger.info("live-ingest: detect-deletions removed stale qnames", {
|
|
562
|
+
count: stale.length,
|
|
563
|
+
});
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
catch (e) {
|
|
567
|
+
logger.warn("live-ingest: detect-deletions failed", { err: e.message });
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
const completedIso = new Date().toISOString();
|
|
572
|
+
try {
|
|
573
|
+
graph.touchSync(resolved.orgId, completedIso);
|
|
574
|
+
}
|
|
575
|
+
catch (e) {
|
|
576
|
+
logger.warn("live-ingest: touchSync failed", { err: e.message });
|
|
577
|
+
}
|
|
578
|
+
if (opts.analysisDb) {
|
|
579
|
+
try {
|
|
580
|
+
await populateAnalysisTables(graph, resolved.orgId, opts.analysisDb);
|
|
581
|
+
}
|
|
582
|
+
catch (e) {
|
|
583
|
+
logger.warn("live-ingest: populate analysis tables failed", {
|
|
584
|
+
err: e.message,
|
|
585
|
+
});
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
if (opts.snapshotStore) {
|
|
589
|
+
try {
|
|
590
|
+
opts.snapshotStore.prune(resolved.orgId, opts.snapshotRetentionDays ?? 30);
|
|
591
|
+
}
|
|
592
|
+
catch (e) {
|
|
593
|
+
logger.warn("live-ingest: snapshot prune failed", { err: e.message });
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
return {
|
|
597
|
+
orgId: resolved.orgId,
|
|
598
|
+
capabilities: caps,
|
|
599
|
+
mode,
|
|
600
|
+
membersProcessed,
|
|
601
|
+
parseErrors,
|
|
602
|
+
deletions,
|
|
603
|
+
durationMs: Date.now() - startedAt,
|
|
604
|
+
};
|
|
605
|
+
}
|
|
606
|
+
export function rethrowAsIngestError(e, ctx) {
|
|
607
|
+
if (e instanceof SfgraphError)
|
|
608
|
+
throw e;
|
|
609
|
+
throw new SfgraphError(ErrorCode.E_SF_INGEST, `${ctx}: ${e.message ?? String(e)}`);
|
|
610
|
+
}
|
|
611
|
+
//# sourceMappingURL=live-ingest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-ingest.js","sourceRoot":"","sources":["../../src/ingest/live-ingest.ts"],"names":[],"mappings":"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"}
|