@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,37 @@
|
|
|
1
|
+
import type { OrgId } from "@ryanstark24/sfgraph-shared";
|
|
2
|
+
import { wrapConnectionReadOnly } from "./read-only-proxy.js";
|
|
3
|
+
export interface ResolvedOrg {
|
|
4
|
+
orgId: OrgId;
|
|
5
|
+
alias: string;
|
|
6
|
+
username: string;
|
|
7
|
+
instanceUrl: string;
|
|
8
|
+
apiVersion: string;
|
|
9
|
+
conn: any;
|
|
10
|
+
}
|
|
11
|
+
/** Strip secrets from anything that might be logged/persisted. */
|
|
12
|
+
export declare function safeOrgInfo<T extends Record<string, unknown>>(info: T): Omit<T, "accessToken">;
|
|
13
|
+
export interface ResolveOrgDeps {
|
|
14
|
+
AuthInfo?: any;
|
|
15
|
+
Connection?: any;
|
|
16
|
+
StateAggregator?: any;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Resolve a Salesforce org by alias/username using @salesforce/core. Returns a
|
|
20
|
+
* read-only-wrapped jsforce Connection.
|
|
21
|
+
*
|
|
22
|
+
* @throws SfgraphError with code E_SF_AUTH on authentication failures.
|
|
23
|
+
*/
|
|
24
|
+
export declare function resolveOrg(alias: string, deps?: ResolveOrgDeps): Promise<ResolvedOrg>;
|
|
25
|
+
export { wrapConnectionReadOnly };
|
|
26
|
+
/**
|
|
27
|
+
* Resolve the default org alias for the current process. Reads `target-org`
|
|
28
|
+
* (sfdx-style `defaultusername` is also accepted) from the @salesforce/core
|
|
29
|
+
* ConfigAggregator, which transparently merges local `.sf/config.json`,
|
|
30
|
+
* project `sfdx-project.json`, and global `~/.sf/config.json`.
|
|
31
|
+
*
|
|
32
|
+
* @returns the resolved alias/username string, or `null` if none configured.
|
|
33
|
+
*/
|
|
34
|
+
export declare function resolveDefaultOrgAlias(deps?: {
|
|
35
|
+
ConfigAggregator?: any;
|
|
36
|
+
}): Promise<string | null>;
|
|
37
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/extractors/live-org/auth.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,GAAG,CAAC;CACX;AAED,kEAAkE;AAClE,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,aAAa,CAAC,CAG9F;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,eAAe,CAAC,EAAE,GAAG,CAAC;CACvB;AA+BD;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,WAAW,CAAC,CA8D/F;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAElC;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,GAAE;IACJ,gBAAgB,CAAC,EAAE,GAAG,CAAC;CACnB,GACL,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAoBxB"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { ErrorCode, SfgraphError, asOrgId } from "@ryanstark24/sfgraph-shared";
|
|
2
|
+
import { wrapConnectionReadOnly } from "./read-only-proxy.js";
|
|
3
|
+
/** Strip secrets from anything that might be logged/persisted. */
|
|
4
|
+
export function safeOrgInfo(info) {
|
|
5
|
+
const { accessToken: _ignored, ...rest } = info;
|
|
6
|
+
return rest;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Resolve an alias to its underlying username via @salesforce/core's
|
|
10
|
+
* StateAggregator. Returns the alias unchanged when no binding exists OR
|
|
11
|
+
* when the aggregator can't be loaded (we let AuthInfo.create error
|
|
12
|
+
* naturally in that case so the user gets a clear "not authenticated"
|
|
13
|
+
* message instead of a swallowed lookup failure).
|
|
14
|
+
*/
|
|
15
|
+
async function resolveAliasToUsername(alias, StateAggregator) {
|
|
16
|
+
let SA = StateAggregator;
|
|
17
|
+
if (!SA) {
|
|
18
|
+
try {
|
|
19
|
+
const mod = await import("@salesforce/core");
|
|
20
|
+
SA = mod.StateAggregator;
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return alias;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
try {
|
|
27
|
+
const agg = await SA.create();
|
|
28
|
+
const resolved = agg?.aliases?.getUsername?.(alias);
|
|
29
|
+
return typeof resolved === "string" && resolved.length > 0 ? resolved : alias;
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return alias;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Resolve a Salesforce org by alias/username using @salesforce/core. Returns a
|
|
37
|
+
* read-only-wrapped jsforce Connection.
|
|
38
|
+
*
|
|
39
|
+
* @throws SfgraphError with code E_SF_AUTH on authentication failures.
|
|
40
|
+
*/
|
|
41
|
+
export async function resolveOrg(alias, deps = {}) {
|
|
42
|
+
if (!alias || typeof alias !== "string") {
|
|
43
|
+
throw new SfgraphError(ErrorCode.E_SF_AUTH, `resolveOrg: invalid alias ${JSON.stringify(alias)}`);
|
|
44
|
+
}
|
|
45
|
+
let AuthInfo = deps.AuthInfo;
|
|
46
|
+
let Connection = deps.Connection;
|
|
47
|
+
if (!AuthInfo || !Connection) {
|
|
48
|
+
try {
|
|
49
|
+
const sfCore = await import("@salesforce/core");
|
|
50
|
+
AuthInfo = AuthInfo ?? sfCore.AuthInfo;
|
|
51
|
+
Connection = Connection ?? sfCore.Connection;
|
|
52
|
+
}
|
|
53
|
+
catch (e) {
|
|
54
|
+
throw new SfgraphError(ErrorCode.E_SF_AUTH, `resolveOrg: failed to load @salesforce/core for alias '${alias}': ${e.message}`, { cause: e });
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// Resolve alias -> username FIRST. AuthInfo.create({ username }) does not
|
|
58
|
+
// reliably accept aliases in every @salesforce/core version / project
|
|
59
|
+
// context; using the alias name as the username key fails with
|
|
60
|
+
// "No authorization information found for X" even when the alias is
|
|
61
|
+
// properly registered and connected per `sf org list`.
|
|
62
|
+
const username = await resolveAliasToUsername(alias, deps.StateAggregator);
|
|
63
|
+
let authInfo;
|
|
64
|
+
try {
|
|
65
|
+
authInfo = await AuthInfo.create({ username });
|
|
66
|
+
}
|
|
67
|
+
catch (e) {
|
|
68
|
+
throw new SfgraphError(ErrorCode.E_SF_AUTH, `resolveOrg: AuthInfo.create failed for alias '${alias}' (resolved username '${username}'). Run 'sf org login web --alias ${alias}' to authenticate. Cause: ${e.message}`, { cause: e });
|
|
69
|
+
}
|
|
70
|
+
let rawConn;
|
|
71
|
+
try {
|
|
72
|
+
rawConn = await Connection.create({ authInfo });
|
|
73
|
+
}
|
|
74
|
+
catch (e) {
|
|
75
|
+
throw new SfgraphError(ErrorCode.E_SF_AUTH, `resolveOrg: Connection.create failed for alias '${alias}': ${e.message}`, { cause: e });
|
|
76
|
+
}
|
|
77
|
+
const fields = typeof authInfo.getFields === "function" ? authInfo.getFields() : {};
|
|
78
|
+
const resolvedUsername = fields.username ?? username;
|
|
79
|
+
const orgIdRaw = fields.orgId ?? rawConn.userInfo?.organizationId ?? `unknown_${alias}`;
|
|
80
|
+
const instanceUrl = rawConn.instanceUrl ?? fields.instanceUrl ?? "";
|
|
81
|
+
const apiVersion = rawConn.version ?? rawConn.getApiVersion?.() ?? "60.0";
|
|
82
|
+
const conn = wrapConnectionReadOnly(rawConn);
|
|
83
|
+
return {
|
|
84
|
+
orgId: asOrgId(orgIdRaw),
|
|
85
|
+
alias,
|
|
86
|
+
username: resolvedUsername,
|
|
87
|
+
instanceUrl,
|
|
88
|
+
apiVersion,
|
|
89
|
+
conn,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
export { wrapConnectionReadOnly };
|
|
93
|
+
/**
|
|
94
|
+
* Resolve the default org alias for the current process. Reads `target-org`
|
|
95
|
+
* (sfdx-style `defaultusername` is also accepted) from the @salesforce/core
|
|
96
|
+
* ConfigAggregator, which transparently merges local `.sf/config.json`,
|
|
97
|
+
* project `sfdx-project.json`, and global `~/.sf/config.json`.
|
|
98
|
+
*
|
|
99
|
+
* @returns the resolved alias/username string, or `null` if none configured.
|
|
100
|
+
*/
|
|
101
|
+
export async function resolveDefaultOrgAlias(deps = {}) {
|
|
102
|
+
let ConfigAggregator = deps.ConfigAggregator;
|
|
103
|
+
if (!ConfigAggregator) {
|
|
104
|
+
try {
|
|
105
|
+
const sfCore = await import("@salesforce/core");
|
|
106
|
+
ConfigAggregator = sfCore.ConfigAggregator;
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
try {
|
|
113
|
+
const aggregator = await ConfigAggregator.create();
|
|
114
|
+
const info = aggregator.getInfo?.("target-org") ?? aggregator.getInfo?.("defaultusername") ?? null;
|
|
115
|
+
const value = info?.value;
|
|
116
|
+
if (typeof value === "string" && value.length > 0)
|
|
117
|
+
return value;
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/extractors/live-org/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { OrgId } from "@ryanstark24/sfgraph-shared";
|
|
2
|
+
import type { RawMember } from "../interfaces/metadata-source.js";
|
|
3
|
+
import type { OrgCapabilities } from "./capabilities.js";
|
|
4
|
+
/** Aggregate of every source that errored during a bulkRetrieve run.
|
|
5
|
+
* bulkRetrieve mutates this in-place via onError; live-ingest reads it at
|
|
6
|
+
* end of run to print a consolidated summary instead of warning per-source
|
|
7
|
+
* in the middle of progress output. */
|
|
8
|
+
export interface IngestSkipReport {
|
|
9
|
+
skips: Array<{
|
|
10
|
+
label: string;
|
|
11
|
+
reason: string;
|
|
12
|
+
category: SkipCategory;
|
|
13
|
+
}>;
|
|
14
|
+
}
|
|
15
|
+
export type SkipCategory = "insufficient_access" | "not_found" | "rate_limit" | "network" | "unknown";
|
|
16
|
+
/** Naive sequential merge — predictable order, simpler back-pressure semantics.
|
|
17
|
+
* Kept for back-compat and tests; production ingest uses
|
|
18
|
+
* {@link mergeAsyncIterablesParallel} so different pools (Tooling/Metadata/
|
|
19
|
+
* Data) can saturate simultaneously instead of one extractor at a time. */
|
|
20
|
+
export declare function mergeAsyncIterables<T>(...iters: Array<AsyncIterable<T>>): AsyncIterable<T>;
|
|
21
|
+
/**
|
|
22
|
+
* Sliding-window parallel merge. Keeps exactly `concurrency` iterators
|
|
23
|
+
* live at any moment — when one completes (done:true), the next queued
|
|
24
|
+
* iterator is started in its slot. Within the window, iterators race via
|
|
25
|
+
* `Promise.race` for max throughput.
|
|
26
|
+
*
|
|
27
|
+
* Replaces the previous wave-based merger, which had a synchronisation
|
|
28
|
+
* barrier at each wave boundary: all 6 iterators in a wave had to finish
|
|
29
|
+
* before any of wave 2 could start. One hung source (very common for
|
|
30
|
+
* `generic:Layout` on managed-package-heavy orgs) parked the whole wave
|
|
31
|
+
* indefinitely with zero observable progress.
|
|
32
|
+
*
|
|
33
|
+
* Default concurrency = 8: enough to saturate the three rate-limit pools
|
|
34
|
+
* (Tooling 5 / Metadata 5 / Data 10) with headroom for one slot to be
|
|
35
|
+
* blocked on a slow source without starving the others. Override via
|
|
36
|
+
* `SFGRAPH_SOURCE_CONCURRENCY=<n>` (1 = strictly sequential).
|
|
37
|
+
*
|
|
38
|
+
* Output ordering is non-deterministic. `live-ingest`'s processOne is
|
|
39
|
+
* order-independent (idempotent per-record upserts), so this is safe.
|
|
40
|
+
*/
|
|
41
|
+
export declare function mergeAsyncIterablesParallel<T>(...iters: Array<AsyncIterable<T>>): AsyncIterable<T>;
|
|
42
|
+
export interface BulkRetrieveOpts {
|
|
43
|
+
skipReport?: IngestSkipReport;
|
|
44
|
+
/** When set, only invoke source labels in this set. Labels are the same
|
|
45
|
+
* source-keys used by the dispatch table: 'apex', 'lwc', 'flow', 'object',
|
|
46
|
+
* 'security', 'integration', 'vlocity', 'omnistudio', or
|
|
47
|
+
* 'generic:<MetadataType>' for the long tail. */
|
|
48
|
+
onlyLabels?: Set<string>;
|
|
49
|
+
}
|
|
50
|
+
export declare function bulkRetrieve(conn: any, caps: OrgCapabilities, orgId: OrgId, opts?: BulkRetrieveOpts | IngestSkipReport): AsyncIterable<RawMember>;
|
|
51
|
+
//# sourceMappingURL=bulk-retrieve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bulk-retrieve.d.ts","sourceRoot":"","sources":["../../../src/extractors/live-org/bulk-retrieve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAazD;;;wCAGwC;AACxC,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE,CAAC,CAAC;CACzE;AAED,MAAM,MAAM,YAAY,GACpB,qBAAqB,GACrB,WAAW,GACX,YAAY,GACZ,SAAS,GACT,SAAS,CAAC;AAgBd;;;4EAG4E;AAC5E,wBAAuB,mBAAmB,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAIjG;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAuB,2BAA2B,CAAC,CAAC,EAClD,GAAG,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAChC,aAAa,CAAC,CAAC,CAAC,CA+ClB;AAuND,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B;;;sDAGkD;IAClD,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC1B;AAED,wBAAuB,YAAY,CACjC,IAAI,EAAE,GAAG,EACT,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,KAAK,EACZ,IAAI,GAAE,gBAAgB,GAAG,gBAAqB,GAC7C,aAAa,CAAC,SAAS,CAAC,CAiH1B"}
|
|
@@ -0,0 +1,416 @@
|
|
|
1
|
+
import { discoverMetadataTypes } from "./discovery.js";
|
|
2
|
+
import { buildDispatchTable } from "./dispatch.js";
|
|
3
|
+
import { iterApex } from "./extractors/apex.js";
|
|
4
|
+
import { iterFlow } from "./extractors/flow.js";
|
|
5
|
+
import { iterGenericMetadata } from "./extractors/generic-metadata.js";
|
|
6
|
+
import { iterIntegration } from "./extractors/integration.js";
|
|
7
|
+
import { iterLwc } from "./extractors/lwc.js";
|
|
8
|
+
import { iterObject } from "./extractors/object.js";
|
|
9
|
+
import { iterOmnistudio } from "./extractors/omnistudio.js";
|
|
10
|
+
import { iterSecurity } from "./extractors/security.js";
|
|
11
|
+
import { iterVlocity } from "./extractors/vlocity.js";
|
|
12
|
+
/** Best-effort classification so the end-of-run recommendation is targeted. */
|
|
13
|
+
function classifySkip(msg) {
|
|
14
|
+
const m = msg.toUpperCase();
|
|
15
|
+
if (m.includes("INSUFFICIENT_ACCESS") || m.includes("INSUFFICIENT") || m.includes("FORBIDDEN")) {
|
|
16
|
+
return "insufficient_access";
|
|
17
|
+
}
|
|
18
|
+
if (m.includes("NOT_FOUND") || m.includes("INVALID_TYPE"))
|
|
19
|
+
return "not_found";
|
|
20
|
+
if (m.includes("REQUEST_LIMIT_EXCEEDED") || m.includes("RATE_LIMIT"))
|
|
21
|
+
return "rate_limit";
|
|
22
|
+
if (m.includes("ECONNREFUSED") || m.includes("ENOTFOUND") || m.includes("ETIMEDOUT")) {
|
|
23
|
+
return "network";
|
|
24
|
+
}
|
|
25
|
+
return "unknown";
|
|
26
|
+
}
|
|
27
|
+
/** Naive sequential merge — predictable order, simpler back-pressure semantics.
|
|
28
|
+
* Kept for back-compat and tests; production ingest uses
|
|
29
|
+
* {@link mergeAsyncIterablesParallel} so different pools (Tooling/Metadata/
|
|
30
|
+
* Data) can saturate simultaneously instead of one extractor at a time. */
|
|
31
|
+
export async function* mergeAsyncIterables(...iters) {
|
|
32
|
+
for (const it of iters) {
|
|
33
|
+
for await (const v of it)
|
|
34
|
+
yield v;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Sliding-window parallel merge. Keeps exactly `concurrency` iterators
|
|
39
|
+
* live at any moment — when one completes (done:true), the next queued
|
|
40
|
+
* iterator is started in its slot. Within the window, iterators race via
|
|
41
|
+
* `Promise.race` for max throughput.
|
|
42
|
+
*
|
|
43
|
+
* Replaces the previous wave-based merger, which had a synchronisation
|
|
44
|
+
* barrier at each wave boundary: all 6 iterators in a wave had to finish
|
|
45
|
+
* before any of wave 2 could start. One hung source (very common for
|
|
46
|
+
* `generic:Layout` on managed-package-heavy orgs) parked the whole wave
|
|
47
|
+
* indefinitely with zero observable progress.
|
|
48
|
+
*
|
|
49
|
+
* Default concurrency = 8: enough to saturate the three rate-limit pools
|
|
50
|
+
* (Tooling 5 / Metadata 5 / Data 10) with headroom for one slot to be
|
|
51
|
+
* blocked on a slow source without starving the others. Override via
|
|
52
|
+
* `SFGRAPH_SOURCE_CONCURRENCY=<n>` (1 = strictly sequential).
|
|
53
|
+
*
|
|
54
|
+
* Output ordering is non-deterministic. `live-ingest`'s processOne is
|
|
55
|
+
* order-independent (idempotent per-record upserts), so this is safe.
|
|
56
|
+
*/
|
|
57
|
+
export async function* mergeAsyncIterablesParallel(...iters) {
|
|
58
|
+
const envConcurrency = Number.parseInt(process.env.SFGRAPH_SOURCE_CONCURRENCY ?? "", 10);
|
|
59
|
+
// Raised 8 -> 12: a wider window lets Tooling-backed sources (apex, lwc)
|
|
60
|
+
// start immediately rather than wait behind the cohort of metadata-pool
|
|
61
|
+
// sources (security, flow, integration, generic:Layout/Workflow/etc.)
|
|
62
|
+
// which spend most of their time queued in Bottleneck. Per-pool concurrency
|
|
63
|
+
// still caps total HTTP fan-out, so this only opens up parallelism that
|
|
64
|
+
// was being throttled at the wrong layer.
|
|
65
|
+
const concurrency = Number.isFinite(envConcurrency) && envConcurrency > 0 ? envConcurrency : 12;
|
|
66
|
+
const iterators = iters.map((it) => it[Symbol.asyncIterator]());
|
|
67
|
+
const pending = new Map();
|
|
68
|
+
let nextIterIdx = 0;
|
|
69
|
+
const advance = (idx) => {
|
|
70
|
+
const it = iterators[idx];
|
|
71
|
+
if (!it)
|
|
72
|
+
return;
|
|
73
|
+
pending.set(idx, it.next().then((result) => ({ idx, result }),
|
|
74
|
+
// Per-iter rejections are handled by the failSoft() wrapper one
|
|
75
|
+
// level up. Anything that reaches here is unexpected; mark the
|
|
76
|
+
// iter done so the outer race makes forward progress.
|
|
77
|
+
() => ({
|
|
78
|
+
idx,
|
|
79
|
+
result: { value: undefined, done: true },
|
|
80
|
+
})));
|
|
81
|
+
};
|
|
82
|
+
// Prime the window with the first `concurrency` iterators.
|
|
83
|
+
while (pending.size < concurrency && nextIterIdx < iterators.length) {
|
|
84
|
+
advance(nextIterIdx++);
|
|
85
|
+
}
|
|
86
|
+
while (pending.size > 0) {
|
|
87
|
+
const { idx, result } = await Promise.race(pending.values());
|
|
88
|
+
if (result.done) {
|
|
89
|
+
pending.delete(idx);
|
|
90
|
+
// A slot opened — start the next queued iterator immediately. A slow
|
|
91
|
+
// / hung source still holds its slot, but its peers keep advancing.
|
|
92
|
+
if (nextIterIdx < iterators.length)
|
|
93
|
+
advance(nextIterIdx++);
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
yield result.value;
|
|
97
|
+
advance(idx);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/** Wrap an iterable so a thrown error is captured + the stream ends cleanly
|
|
101
|
+
* instead of aborting the whole ingest. The error is recorded into a
|
|
102
|
+
* shared skip report (consumed at end-of-run) and a compact ✗ line is
|
|
103
|
+
* printed so the user sees something happened without the full error
|
|
104
|
+
* message scrolling past during the run. */
|
|
105
|
+
async function* failSoft(label, factory, onError) {
|
|
106
|
+
const debug = process.env.SFGRAPH_DEBUG_INGEST === "1";
|
|
107
|
+
const startedAt = Date.now();
|
|
108
|
+
let count = 0;
|
|
109
|
+
let started = false;
|
|
110
|
+
// Watchdog at 5 minutes. Per-call withTimeouts (120s) catch hung HTTP;
|
|
111
|
+
// this catches the case where every call ALSO times out and the source
|
|
112
|
+
// never yields a single record. 5 min = ~2.5× the per-call budget,
|
|
113
|
+
// generous for queued-but-healthy, tight enough that a genuinely
|
|
114
|
+
// wedged source surfaces fast and doesn't park its sliding-window slot
|
|
115
|
+
// for half an hour. With the no-retry-on-timeout fix in
|
|
116
|
+
// readMetadataBatchAdaptive, the inner loop also can't balloon, so 5
|
|
117
|
+
// minutes is a real ceiling now.
|
|
118
|
+
const inactivityMs = 5 * 60_000;
|
|
119
|
+
// Tighter deadline for the FIRST record. The 5-min inactivity watchdog
|
|
120
|
+
// is for healthy-but-slow sources that have already started yielding;
|
|
121
|
+
// a source that hasn't yielded a single record in 90s is almost
|
|
122
|
+
// certainly parked on a pre-yield setup call (metadata.list, describe,
|
|
123
|
+
// EntityDefinition pagination) and won't recover. Killing it fast frees
|
|
124
|
+
// the sliding-window slot for queued peers.
|
|
125
|
+
const firstYieldMs = 90_000;
|
|
126
|
+
try {
|
|
127
|
+
if (debug)
|
|
128
|
+
console.log(`ingest: [debug] ${label} ← invoked at ${startedAt}`);
|
|
129
|
+
const it = factory()[Symbol.asyncIterator]();
|
|
130
|
+
while (true) {
|
|
131
|
+
const remainingFirstYield = started
|
|
132
|
+
? Number.POSITIVE_INFINITY
|
|
133
|
+
: startedAt + firstYieldMs - Date.now();
|
|
134
|
+
const watchdogMs = Math.min(inactivityMs, remainingFirstYield);
|
|
135
|
+
if (watchdogMs <= 0) {
|
|
136
|
+
throw new Error(`source watchdog (first-yield ${firstYieldMs / 1000}s): no record yielded — pre-yield setup wedged`);
|
|
137
|
+
}
|
|
138
|
+
const watchdogLabel = started
|
|
139
|
+
? `${inactivityMs / 60_000}m inactivity`
|
|
140
|
+
: `first-yield ${firstYieldMs / 1000}s`;
|
|
141
|
+
const next = await Promise.race([
|
|
142
|
+
it.next(),
|
|
143
|
+
new Promise((_resolve, reject) => {
|
|
144
|
+
setTimeout(() => reject(new Error(`source watchdog (${watchdogLabel}): no record yielded — pool jammed or call wedged`)), watchdogMs);
|
|
145
|
+
}),
|
|
146
|
+
]);
|
|
147
|
+
if (next.done)
|
|
148
|
+
break;
|
|
149
|
+
if (!started) {
|
|
150
|
+
started = true;
|
|
151
|
+
console.log(`ingest: ${label} → starting…`);
|
|
152
|
+
}
|
|
153
|
+
count += 1;
|
|
154
|
+
yield next.value;
|
|
155
|
+
}
|
|
156
|
+
if (started) {
|
|
157
|
+
console.log(`ingest: ${label} ✓ ${count} records (${Date.now() - startedAt}ms)`);
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
console.log(`ingest: ${label} ✓ 0 records (${Date.now() - startedAt}ms)`);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
catch (e) {
|
|
164
|
+
const err = e;
|
|
165
|
+
onError?.(label, err);
|
|
166
|
+
console.log(`ingest: ${label} ✗ skipped (${err?.message?.slice(0, 80) ?? "unknown"})`);
|
|
167
|
+
if (debug) {
|
|
168
|
+
console.error(`ingest: [debug] ${label} failure detail: ${err?.message ?? String(err)}`);
|
|
169
|
+
if (err?.stack)
|
|
170
|
+
console.error(err.stack);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
finally {
|
|
174
|
+
if (debug) {
|
|
175
|
+
console.log(`ingest: [debug] ${label} → finalised (${count} records, ${Date.now() - startedAt}ms)`);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
/** Typed-extractor ownership map: which XML type names a dedicated extractor covers. */
|
|
180
|
+
const APEX_TYPES = new Set(["ApexClass", "ApexTrigger"]);
|
|
181
|
+
const LWC_TYPES = new Set(["LightningComponentBundle"]);
|
|
182
|
+
const FLOW_TYPES = new Set(["Flow"]);
|
|
183
|
+
const OBJECT_TYPES = new Set(["CustomObject"]);
|
|
184
|
+
const SECURITY_TYPES = new Set(["Profile", "PermissionSet", "SharingRules"]);
|
|
185
|
+
const INTEGRATION_TYPES = new Set(["NamedCredential", "ExternalServiceRegistration"]);
|
|
186
|
+
/**
|
|
187
|
+
* High-value generic metadata types we'll route to `iterGenericMetadata` by
|
|
188
|
+
* default. Salesforce's `describeMetadata()` returns 400+ types on modern
|
|
189
|
+
* orgs — most of them platform internals, industry-cloud scaffolding,
|
|
190
|
+
* Setup-internal stuff that returns 0 records or has no graph value AND
|
|
191
|
+
* adds queued HTTP requests to Bottleneck (each one a closure + socket
|
|
192
|
+
* state). Scheduling all 400 at once was causing silent process exits
|
|
193
|
+
* post-object-phase on the user's cleanDemoOrg — too many pending
|
|
194
|
+
* metadata.list calls in the metadata pool's queue.
|
|
195
|
+
*
|
|
196
|
+
* This list is curated for "does user code typically reference this?" /
|
|
197
|
+
* "does it carry graph-relevant edges?". Add types to it as you discover
|
|
198
|
+
* value in them. Override via `SFGRAPH_INCLUDE_ALL_GENERIC=1` to invoke
|
|
199
|
+
* every discovered type (useful for industry-cloud-specific ingest).
|
|
200
|
+
*/
|
|
201
|
+
const GENERIC_TYPE_WHITELIST = new Set([
|
|
202
|
+
// UI / pages — typically referenced from FlexiPages / Lightning App Builder
|
|
203
|
+
"FlexiPage",
|
|
204
|
+
"Layout",
|
|
205
|
+
"QuickAction",
|
|
206
|
+
"CustomTab",
|
|
207
|
+
"CustomApplication",
|
|
208
|
+
"HomePageLayout",
|
|
209
|
+
"CustomPageWebLink",
|
|
210
|
+
"WebLink",
|
|
211
|
+
// Apex / VF surfaces routed here (not in core extractors)
|
|
212
|
+
"ApexPage",
|
|
213
|
+
"ApexComponent",
|
|
214
|
+
"AuraDefinitionBundle",
|
|
215
|
+
// Process automation
|
|
216
|
+
"Workflow",
|
|
217
|
+
"ApprovalProcess",
|
|
218
|
+
"AssignmentRules",
|
|
219
|
+
"AutoResponseRules",
|
|
220
|
+
"EscalationRules",
|
|
221
|
+
"FlowDefinition",
|
|
222
|
+
// Data quality
|
|
223
|
+
"DuplicateRule",
|
|
224
|
+
"MatchingRule",
|
|
225
|
+
// Custom Metadata + labels
|
|
226
|
+
"CustomMetadata",
|
|
227
|
+
"CustomLabels",
|
|
228
|
+
"CustomLabel",
|
|
229
|
+
"GlobalValueSet",
|
|
230
|
+
"StandardValueSet",
|
|
231
|
+
"CustomPermission",
|
|
232
|
+
// Custom Notification + Settings
|
|
233
|
+
"CustomNotificationType",
|
|
234
|
+
"CustomSite",
|
|
235
|
+
// Reports / Dashboards / Analytics
|
|
236
|
+
"Report",
|
|
237
|
+
"Dashboard",
|
|
238
|
+
"ReportType",
|
|
239
|
+
// Networks / Communities
|
|
240
|
+
"Network",
|
|
241
|
+
"NetworkBranding",
|
|
242
|
+
"NavigationMenu",
|
|
243
|
+
"Community",
|
|
244
|
+
"ExperienceBundle",
|
|
245
|
+
"DigitalExperienceBundle",
|
|
246
|
+
// Identity / Access
|
|
247
|
+
// NOTE: Profile, PermissionSet, SharingRules intentionally NOT here —
|
|
248
|
+
// they route to iterSecurity (see SECURITY_TYPES + dispatch below).
|
|
249
|
+
// NamedCredential routes to iterIntegration. Listing them here would be
|
|
250
|
+
// dead today (the dispatch checks SECURITY/INTEGRATION_TYPES first) and
|
|
251
|
+
// a trap if dispatch ordering ever changes.
|
|
252
|
+
"ConnectedApp",
|
|
253
|
+
"PermissionSetGroup",
|
|
254
|
+
"MutingPermissionSet",
|
|
255
|
+
"ProfilePasswordPolicy",
|
|
256
|
+
"ProfileSessionSetting",
|
|
257
|
+
"SamlSsoConfig",
|
|
258
|
+
// Sharing
|
|
259
|
+
"SharingSet",
|
|
260
|
+
"GroupMember",
|
|
261
|
+
// Platform Events / CDC
|
|
262
|
+
"PlatformEventChannel",
|
|
263
|
+
"PlatformEventChannelMember",
|
|
264
|
+
"PlatformEventSubscriberConfig",
|
|
265
|
+
// Integrations
|
|
266
|
+
"RemoteSiteSetting",
|
|
267
|
+
"CspTrustedSite",
|
|
268
|
+
// NamedCredential routes to iterIntegration (see INTEGRATION_TYPES).
|
|
269
|
+
"ExternalCredential",
|
|
270
|
+
// Email
|
|
271
|
+
"EmailTemplate",
|
|
272
|
+
"EmailServicesFunction",
|
|
273
|
+
// Misc commonly-used
|
|
274
|
+
"StaticResource",
|
|
275
|
+
"LightningComponentBundle",
|
|
276
|
+
"LightningMessageChannel",
|
|
277
|
+
"RecordActionDeployment",
|
|
278
|
+
"PathAssistant",
|
|
279
|
+
"GenAiPromptTemplate",
|
|
280
|
+
"GenAiFunction",
|
|
281
|
+
"GenAiPlugin",
|
|
282
|
+
// Bot / Einstein
|
|
283
|
+
"Bot",
|
|
284
|
+
"GenAiPlannerBundle",
|
|
285
|
+
// OmniStudio on-Core — exposed via Metadata API, not SObject SOQL.
|
|
286
|
+
// The on-core SObject (OmniProcess) is the storage backing but real
|
|
287
|
+
// metadata access goes through metadata.list/read of these type names.
|
|
288
|
+
"OmniScript",
|
|
289
|
+
"OmniIntegrationProcedure",
|
|
290
|
+
"OmniDataTransform",
|
|
291
|
+
"OmniUiCard",
|
|
292
|
+
"OmniProcess",
|
|
293
|
+
]);
|
|
294
|
+
function shouldRouteGeneric(type) {
|
|
295
|
+
if (process.env.SFGRAPH_INCLUDE_ALL_GENERIC === "1")
|
|
296
|
+
return true;
|
|
297
|
+
return GENERIC_TYPE_WHITELIST.has(type);
|
|
298
|
+
}
|
|
299
|
+
export async function* bulkRetrieve(conn, caps, orgId, opts = {}) {
|
|
300
|
+
// Back-compat: callers used to pass IngestSkipReport directly as the 4th arg.
|
|
301
|
+
// Accept both shapes.
|
|
302
|
+
const normalized = opts && typeof opts === "object" && "skips" in opts
|
|
303
|
+
? { skipReport: opts }
|
|
304
|
+
: opts;
|
|
305
|
+
const skipReport = normalized.skipReport;
|
|
306
|
+
const onlyLabels = normalized.onlyLabels;
|
|
307
|
+
// Discover the type list this org actually supports. If discovery fails or
|
|
308
|
+
// returns nothing usable, fall back to invoking every known extractor —
|
|
309
|
+
// preserves Commit-A behavior for mocks that don't implement describe.
|
|
310
|
+
let types = [];
|
|
311
|
+
try {
|
|
312
|
+
types = await discoverMetadataTypes(conn);
|
|
313
|
+
}
|
|
314
|
+
catch {
|
|
315
|
+
types = [];
|
|
316
|
+
}
|
|
317
|
+
const sources = [];
|
|
318
|
+
const invoked = new Set(); // source-key dedup
|
|
319
|
+
const onSkip = skipReport
|
|
320
|
+
? (label, err) => {
|
|
321
|
+
const reason = err?.message ?? String(err);
|
|
322
|
+
skipReport.skips.push({ label, reason, category: classifySkip(reason) });
|
|
323
|
+
}
|
|
324
|
+
: undefined;
|
|
325
|
+
const invoke = (key, factory) => {
|
|
326
|
+
if (invoked.has(key))
|
|
327
|
+
return;
|
|
328
|
+
invoked.add(key);
|
|
329
|
+
// --only filter: when onlyLabels is set, skip any source not in the set.
|
|
330
|
+
// Filter applies to the exact source key ('apex', 'generic:Profile', etc.)
|
|
331
|
+
// for precise targeting of retry/partial-refresh flows.
|
|
332
|
+
if (onlyLabels && !onlyLabels.has(key))
|
|
333
|
+
return;
|
|
334
|
+
// Each source is wrapped fail-soft so one failing type (e.g. a metadata
|
|
335
|
+
// category the user's profile lacks access to) doesn't abort the whole
|
|
336
|
+
// ingest. The wrapper records the source label + error into skipReport
|
|
337
|
+
// (consumed at end of run for a consolidated summary) and ends the
|
|
338
|
+
// stream cleanly.
|
|
339
|
+
sources.push(failSoft(key, factory, onSkip));
|
|
340
|
+
};
|
|
341
|
+
if (types.length === 0) {
|
|
342
|
+
// Discovery unavailable: invoke every dedicated extractor once.
|
|
343
|
+
invoke("apex", () => iterApex(conn));
|
|
344
|
+
invoke("lwc", () => iterLwc(conn));
|
|
345
|
+
invoke("flow", () => iterFlow(conn));
|
|
346
|
+
invoke("object", () => iterObject(conn));
|
|
347
|
+
invoke("security", () => iterSecurity(conn));
|
|
348
|
+
invoke("integration", () => iterIntegration(conn));
|
|
349
|
+
}
|
|
350
|
+
else {
|
|
351
|
+
const dispatch = buildDispatchTable(types, caps);
|
|
352
|
+
let routedGeneric = 0;
|
|
353
|
+
let skippedGeneric = 0;
|
|
354
|
+
for (const [type, route] of dispatch.entries()) {
|
|
355
|
+
switch (route.strategy) {
|
|
356
|
+
case "toolingSoql":
|
|
357
|
+
if (APEX_TYPES.has(type))
|
|
358
|
+
invoke("apex", () => iterApex(conn));
|
|
359
|
+
else if (LWC_TYPES.has(type))
|
|
360
|
+
invoke("lwc", () => iterLwc(conn));
|
|
361
|
+
else if (shouldRouteGeneric(type)) {
|
|
362
|
+
routedGeneric += 1;
|
|
363
|
+
invoke(`generic:${type}`, () => iterGenericMetadata(conn, String(orgId), type));
|
|
364
|
+
}
|
|
365
|
+
else {
|
|
366
|
+
skippedGeneric += 1;
|
|
367
|
+
}
|
|
368
|
+
break;
|
|
369
|
+
case "metadataReadList":
|
|
370
|
+
if (FLOW_TYPES.has(type))
|
|
371
|
+
invoke("flow", () => iterFlow(conn));
|
|
372
|
+
else if (OBJECT_TYPES.has(type))
|
|
373
|
+
invoke("object", () => iterObject(conn));
|
|
374
|
+
else if (SECURITY_TYPES.has(type))
|
|
375
|
+
invoke("security", () => iterSecurity(conn));
|
|
376
|
+
else if (INTEGRATION_TYPES.has(type))
|
|
377
|
+
invoke("integration", () => iterIntegration(conn));
|
|
378
|
+
else if (shouldRouteGeneric(type)) {
|
|
379
|
+
routedGeneric += 1;
|
|
380
|
+
invoke(`generic:${type}`, () => iterGenericMetadata(conn, String(orgId), type));
|
|
381
|
+
}
|
|
382
|
+
else {
|
|
383
|
+
skippedGeneric += 1;
|
|
384
|
+
}
|
|
385
|
+
break;
|
|
386
|
+
case "vlocityRunner":
|
|
387
|
+
// Single invocation handled below.
|
|
388
|
+
break;
|
|
389
|
+
case "sobjectSoql":
|
|
390
|
+
// Reserved for future CMDT/etc. — none routed here in Commit B.
|
|
391
|
+
break;
|
|
392
|
+
case "genericOpaque":
|
|
393
|
+
// No-op for now: we don't pollute the graph with sentinel-only nodes.
|
|
394
|
+
break;
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
if (caps.vlocityLegacy) {
|
|
399
|
+
invoke("vlocity", () => iterVlocity(conn, caps, String(orgId)));
|
|
400
|
+
}
|
|
401
|
+
if (caps.omnistudioOncore) {
|
|
402
|
+
invoke("omnistudio", () => iterOmnistudio(conn));
|
|
403
|
+
}
|
|
404
|
+
// Log the generic-type filter summary once at fan-out start — makes the
|
|
405
|
+
// skip-vs-route decision visible without --debug.
|
|
406
|
+
if (types.length > 0) {
|
|
407
|
+
console.log(`ingest: dispatch routed=${sources.length} sources (${types.length} discovered metadata types; generic-type whitelist active — set SFGRAPH_INCLUDE_ALL_GENERIC=1 to invoke all)`);
|
|
408
|
+
}
|
|
409
|
+
// Parallel by default: fan out across all source iterators so different
|
|
410
|
+
// pools (Tooling/Metadata/Data) saturate simultaneously. Escape hatch:
|
|
411
|
+
// SFGRAPH_SEQUENTIAL_SOURCES=1 falls back to the legacy serial merge for
|
|
412
|
+
// anyone who hits an ordering bug or wants the old log layout.
|
|
413
|
+
const sequential = process.env.SFGRAPH_SEQUENTIAL_SOURCES === "1";
|
|
414
|
+
yield* sequential ? mergeAsyncIterables(...sources) : mergeAsyncIterablesParallel(...sources);
|
|
415
|
+
}
|
|
416
|
+
//# sourceMappingURL=bulk-retrieve.js.map
|