arc-1 1.5.2 → 1.7.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/README.md +26 -16
- package/bin/arc1-source.js +83 -0
- package/dist/adt/accept-fallback.d.ts +4 -0
- package/dist/adt/accept-fallback.d.ts.map +1 -0
- package/dist/adt/accept-fallback.js +27 -0
- package/dist/adt/accept-fallback.js.map +1 -0
- package/dist/adt/api-release.d.ts +40 -0
- package/dist/adt/api-release.d.ts.map +1 -0
- package/dist/adt/api-release.js +224 -0
- package/dist/adt/api-release.js.map +1 -0
- package/dist/adt/application-log.d.ts +36 -0
- package/dist/adt/application-log.d.ts.map +1 -0
- package/dist/adt/application-log.js +143 -0
- package/dist/adt/application-log.js.map +1 -0
- package/dist/adt/authorization-trace.d.ts.map +1 -1
- package/dist/adt/authorization-trace.js +2 -1
- package/dist/adt/authorization-trace.js.map +1 -1
- package/dist/adt/class-structure.d.ts +2 -1
- package/dist/adt/class-structure.d.ts.map +1 -1
- package/dist/adt/class-structure.js +28 -10
- package/dist/adt/class-structure.js.map +1 -1
- package/dist/adt/client.d.ts +12 -6
- package/dist/adt/client.d.ts.map +1 -1
- package/dist/adt/client.js +32 -49
- package/dist/adt/client.js.map +1 -1
- package/dist/adt/codeintel.d.ts +9 -23
- package/dist/adt/codeintel.d.ts.map +1 -1
- package/dist/adt/codeintel.js +14 -34
- package/dist/adt/codeintel.js.map +1 -1
- package/dist/adt/ddic-xml.d.ts +5 -3
- package/dist/adt/ddic-xml.d.ts.map +1 -1
- package/dist/adt/ddic-xml.js +14 -0
- package/dist/adt/ddic-xml.js.map +1 -1
- package/dist/adt/devtools.d.ts +8 -1
- package/dist/adt/devtools.d.ts.map +1 -1
- package/dist/adt/devtools.js +94 -40
- package/dist/adt/devtools.js.map +1 -1
- package/dist/adt/diagnostics.d.ts +2 -0
- package/dist/adt/diagnostics.d.ts.map +1 -1
- package/dist/adt/diagnostics.js +10 -8
- package/dist/adt/diagnostics.js.map +1 -1
- package/dist/adt/enhancement-impl.d.ts +125 -0
- package/dist/adt/enhancement-impl.d.ts.map +1 -0
- package/dist/adt/enhancement-impl.js +408 -0
- package/dist/adt/enhancement-impl.js.map +1 -0
- package/dist/adt/enhancements.d.ts.map +1 -1
- package/dist/adt/enhancements.js +4 -2
- package/dist/adt/enhancements.js.map +1 -1
- package/dist/adt/enho-filter.d.ts +49 -0
- package/dist/adt/enho-filter.d.ts.map +1 -0
- package/dist/adt/enho-filter.js +229 -0
- package/dist/adt/enho-filter.js.map +1 -0
- package/dist/adt/errors.d.ts +5 -1
- package/dist/adt/errors.d.ts.map +1 -1
- package/dist/adt/errors.js +32 -8
- package/dist/adt/errors.js.map +1 -1
- package/dist/adt/features.d.ts +3 -9
- package/dist/adt/features.d.ts.map +1 -1
- package/dist/adt/features.js +24 -8
- package/dist/adt/features.js.map +1 -1
- package/dist/adt/feed-schema.d.ts +32 -0
- package/dist/adt/feed-schema.d.ts.map +1 -0
- package/dist/adt/feed-schema.js +123 -0
- package/dist/adt/feed-schema.js.map +1 -0
- package/dist/adt/fm-parameter-docs.d.ts +7 -0
- package/dist/adt/fm-parameter-docs.d.ts.map +1 -0
- package/dist/adt/fm-parameter-docs.js +134 -0
- package/dist/adt/fm-parameter-docs.js.map +1 -0
- package/dist/adt/fm-signature.d.ts +8 -1
- package/dist/adt/fm-signature.d.ts.map +1 -1
- package/dist/adt/fm-signature.js +37 -28
- package/dist/adt/fm-signature.js.map +1 -1
- package/dist/adt/http-deadline.d.ts.map +1 -1
- package/dist/adt/http-deadline.js +4 -1
- package/dist/adt/http-deadline.js.map +1 -1
- package/dist/adt/http-retry-after.d.ts +20 -0
- package/dist/adt/http-retry-after.d.ts.map +1 -0
- package/dist/adt/http-retry-after.js +37 -0
- package/dist/adt/http-retry-after.js.map +1 -0
- package/dist/adt/http.d.ts +7 -20
- package/dist/adt/http.d.ts.map +1 -1
- package/dist/adt/http.js +112 -135
- package/dist/adt/http.js.map +1 -1
- package/dist/adt/include-expansion.d.ts +143 -0
- package/dist/adt/include-expansion.d.ts.map +1 -0
- package/dist/adt/include-expansion.js +475 -0
- package/dist/adt/include-expansion.js.map +1 -0
- package/dist/adt/internal-data-operations.d.ts +3 -3
- package/dist/adt/internal-data-operations.d.ts.map +1 -1
- package/dist/adt/internal-data-operations.js +9 -2
- package/dist/adt/internal-data-operations.js.map +1 -1
- package/dist/adt/legacy-content-handler.d.ts +2 -0
- package/dist/adt/legacy-content-handler.d.ts.map +1 -1
- package/dist/adt/legacy-content-handler.js +13 -1
- package/dist/adt/legacy-content-handler.js.map +1 -1
- package/dist/adt/package-contents.d.ts +5 -0
- package/dist/adt/package-contents.d.ts.map +1 -1
- package/dist/adt/package-contents.js +31 -0
- package/dist/adt/package-contents.js.map +1 -1
- package/dist/adt/rap-generate.d.ts +2 -4
- package/dist/adt/rap-generate.d.ts.map +1 -1
- package/dist/adt/rap-generate.js +2 -4
- package/dist/adt/rap-generate.js.map +1 -1
- package/dist/adt/revision-feed.d.ts +8 -0
- package/dist/adt/revision-feed.d.ts.map +1 -0
- package/dist/adt/revision-feed.js +108 -0
- package/dist/adt/revision-feed.js.map +1 -0
- package/dist/adt/security-session-gate.d.ts +23 -0
- package/dist/adt/security-session-gate.d.ts.map +1 -0
- package/dist/adt/security-session-gate.js +56 -0
- package/dist/adt/security-session-gate.js.map +1 -0
- package/dist/adt/server-driven.d.ts +12 -1
- package/dist/adt/server-driven.d.ts.map +1 -1
- package/dist/adt/server-driven.js +22 -4
- package/dist/adt/server-driven.js.map +1 -1
- package/dist/adt/source-diff.d.ts +4 -1
- package/dist/adt/source-diff.d.ts.map +1 -1
- package/dist/adt/source-diff.js +5 -3
- package/dist/adt/source-diff.js.map +1 -1
- package/dist/adt/stored-text/chunks.d.ts +8 -0
- package/dist/adt/stored-text/chunks.d.ts.map +1 -0
- package/dist/adt/stored-text/chunks.js +55 -0
- package/dist/adt/stored-text/chunks.js.map +1 -0
- package/dist/adt/stored-text/decoder.d.ts +31 -0
- package/dist/adt/stored-text/decoder.d.ts.map +1 -0
- package/dist/adt/stored-text/decoder.js +319 -0
- package/dist/adt/stored-text/decoder.js.map +1 -0
- package/dist/adt/stored-text/errors.d.ts +10 -0
- package/dist/adt/stored-text/errors.d.ts.map +1 -0
- package/dist/adt/stored-text/errors.js +10 -0
- package/dist/adt/stored-text/errors.js.map +1 -0
- package/dist/adt/stored-text/index.d.ts +7 -0
- package/dist/adt/stored-text/index.d.ts.map +1 -0
- package/dist/adt/stored-text/index.js +6 -0
- package/dist/adt/stored-text/index.js.map +1 -0
- package/dist/adt/stored-text/key.d.ts +3 -0
- package/dist/adt/stored-text/key.d.ts.map +1 -0
- package/dist/adt/stored-text/key.js +23 -0
- package/dist/adt/stored-text/key.js.map +1 -0
- package/dist/adt/stored-text/reader.d.ts +52 -0
- package/dist/adt/stored-text/reader.d.ts.map +1 -0
- package/dist/adt/stored-text/reader.js +142 -0
- package/dist/adt/stored-text/reader.js.map +1 -0
- package/dist/adt/stored-text/source.d.ts +5 -0
- package/dist/adt/stored-text/source.d.ts.map +1 -0
- package/dist/adt/stored-text/source.js +284 -0
- package/dist/adt/stored-text/source.js.map +1 -0
- package/dist/adt/stored-text/types.d.ts +38 -0
- package/dist/adt/stored-text/types.d.ts.map +1 -0
- package/dist/adt/stored-text/types.js +2 -0
- package/dist/adt/stored-text/types.js.map +1 -0
- package/dist/adt/structure-hierarchy.d.ts.map +1 -1
- package/dist/adt/structure-hierarchy.js +11 -27
- package/dist/adt/structure-hierarchy.js.map +1 -1
- package/dist/adt/syntax-batch.d.ts +66 -0
- package/dist/adt/syntax-batch.d.ts.map +1 -0
- package/dist/adt/syntax-batch.js +115 -0
- package/dist/adt/syntax-batch.js.map +1 -0
- package/dist/adt/table-index.d.ts +23 -0
- package/dist/adt/table-index.d.ts.map +1 -0
- package/dist/adt/table-index.js +69 -0
- package/dist/adt/table-index.js.map +1 -0
- package/dist/adt/table-query.d.ts +4 -2
- package/dist/adt/table-query.d.ts.map +1 -1
- package/dist/adt/table-query.js +37 -10
- package/dist/adt/table-query.js.map +1 -1
- package/dist/adt/table-settings.d.ts +67 -0
- package/dist/adt/table-settings.d.ts.map +1 -0
- package/dist/adt/table-settings.js +207 -0
- package/dist/adt/table-settings.js.map +1 -0
- package/dist/adt/text-elements.d.ts +7 -1
- package/dist/adt/text-elements.d.ts.map +1 -1
- package/dist/adt/text-elements.js +67 -25
- package/dist/adt/text-elements.js.map +1 -1
- package/dist/adt/text-part-changes.d.ts +4 -0
- package/dist/adt/text-part-changes.d.ts.map +1 -0
- package/dist/adt/text-part-changes.js +43 -0
- package/dist/adt/text-part-changes.js.map +1 -0
- package/dist/adt/transport-diff.d.ts +16 -25
- package/dist/adt/transport-diff.d.ts.map +1 -1
- package/dist/adt/transport-diff.js +201 -103
- package/dist/adt/transport-diff.js.map +1 -1
- package/dist/adt/transport-review-budget.d.ts +15 -0
- package/dist/adt/transport-review-budget.d.ts.map +1 -0
- package/dist/adt/transport-review-budget.js +57 -0
- package/dist/adt/transport-review-budget.js.map +1 -0
- package/dist/adt/transport.d.ts +1 -1
- package/dist/adt/transport.d.ts.map +1 -1
- package/dist/adt/transport.js +4 -3
- package/dist/adt/transport.js.map +1 -1
- package/dist/adt/types.d.ts +10 -4
- package/dist/adt/types.d.ts.map +1 -1
- package/dist/adt/user-agent.d.ts +1 -1
- package/dist/adt/where-used-native.d.ts +22 -0
- package/dist/adt/where-used-native.d.ts.map +1 -0
- package/dist/adt/where-used-native.js +111 -0
- package/dist/adt/where-used-native.js.map +1 -0
- package/dist/adt/xml-parser.d.ts +6 -36
- package/dist/adt/xml-parser.d.ts.map +1 -1
- package/dist/adt/xml-parser.js +28 -235
- package/dist/adt/xml-parser.js.map +1 -1
- package/dist/aff/validator.d.ts.map +1 -1
- package/dist/aff/validator.js +8 -2
- package/dist/aff/validator.js.map +1 -1
- package/dist/authz/policy.d.ts.map +1 -1
- package/dist/authz/policy.js +10 -2
- package/dist/authz/policy.js.map +1 -1
- package/dist/cache/sqlite-driver.d.ts +24 -0
- package/dist/cache/sqlite-driver.d.ts.map +1 -0
- package/dist/cache/sqlite-driver.js +59 -0
- package/dist/cache/sqlite-driver.js.map +1 -0
- package/dist/cache/sqlite.d.ts +4 -2
- package/dist/cache/sqlite.d.ts.map +1 -1
- package/dist/cache/sqlite.js +5 -4
- package/dist/cache/sqlite.js.map +1 -1
- package/dist/cli.js +4 -1
- package/dist/cli.js.map +1 -1
- package/dist/context/grep.d.ts +2 -0
- package/dist/context/grep.d.ts.map +1 -1
- package/dist/context/grep.js +8 -7
- package/dist/context/grep.js.map +1 -1
- package/dist/context/line-range.d.ts +6 -0
- package/dist/context/line-range.d.ts.map +1 -0
- package/dist/context/line-range.js +23 -0
- package/dist/context/line-range.js.map +1 -0
- package/dist/extract-sap-cookies.js +1 -0
- package/dist/extract-sap-cookies.js.map +1 -1
- package/dist/handlers/activate.d.ts.map +1 -1
- package/dist/handlers/activate.js +69 -7
- package/dist/handlers/activate.js.map +1 -1
- package/dist/handlers/activation-results.d.ts.map +1 -1
- package/dist/handlers/activation-results.js +9 -1
- package/dist/handlers/activation-results.js.map +1 -1
- package/dist/handlers/api-release-fields.d.ts +23 -0
- package/dist/handlers/api-release-fields.d.ts.map +1 -0
- package/dist/handlers/api-release-fields.js +21 -0
- package/dist/handlers/api-release-fields.js.map +1 -0
- package/dist/handlers/application-log-input.d.ts +32 -0
- package/dist/handlers/application-log-input.d.ts.map +1 -0
- package/dist/handlers/application-log-input.js +34 -0
- package/dist/handlers/application-log-input.js.map +1 -0
- package/dist/handlers/application-log.d.ts +4 -0
- package/dist/handlers/application-log.d.ts.map +1 -0
- package/dist/handlers/application-log.js +14 -0
- package/dist/handlers/application-log.js.map +1 -0
- package/dist/handlers/cds-hints.d.ts +2 -2
- package/dist/handlers/cds-hints.d.ts.map +1 -1
- package/dist/handlers/cds-hints.js +21 -63
- package/dist/handlers/cds-hints.js.map +1 -1
- package/dist/handlers/context.d.ts.map +1 -1
- package/dist/handlers/context.js +7 -3
- package/dist/handlers/context.js.map +1 -1
- package/dist/handlers/diagnose.d.ts.map +1 -1
- package/dist/handlers/diagnose.js +10 -1
- package/dist/handlers/diagnose.js.map +1 -1
- package/dist/handlers/dispatch.d.ts.map +1 -1
- package/dist/handlers/dispatch.js +54 -9
- package/dist/handlers/dispatch.js.map +1 -1
- package/dist/handlers/dump-filter-inputs.d.ts +38 -0
- package/dist/handlers/dump-filter-inputs.d.ts.map +1 -0
- package/dist/handlers/dump-filter-inputs.js +44 -0
- package/dist/handlers/dump-filter-inputs.js.map +1 -0
- package/dist/handlers/expanded-read.d.ts +24 -0
- package/dist/handlers/expanded-read.d.ts.map +1 -0
- package/dist/handlers/expanded-read.js +56 -0
- package/dist/handlers/expanded-read.js.map +1 -0
- package/dist/handlers/feature-cache.d.ts +11 -3
- package/dist/handlers/feature-cache.d.ts.map +1 -1
- package/dist/handlers/feature-cache.js +57 -3
- package/dist/handlers/feature-cache.js.map +1 -1
- package/dist/handlers/function-parameter-language.d.ts +5 -0
- package/dist/handlers/function-parameter-language.d.ts.map +1 -0
- package/dist/handlers/function-parameter-language.js +19 -0
- package/dist/handlers/function-parameter-language.js.map +1 -0
- package/dist/handlers/function-processing.d.ts +5 -0
- package/dist/handlers/function-processing.d.ts.map +1 -1
- package/dist/handlers/function-processing.js +5 -0
- package/dist/handlers/function-processing.js.map +1 -1
- package/dist/handlers/hyperfocused.d.ts +1 -1
- package/dist/handlers/hyperfocused.d.ts.map +1 -1
- package/dist/handlers/hyperfocused.js +2 -1
- package/dist/handlers/hyperfocused.js.map +1 -1
- package/dist/handlers/long-text-input.d.ts +113 -0
- package/dist/handlers/long-text-input.d.ts.map +1 -0
- package/dist/handlers/long-text-input.js +113 -0
- package/dist/handlers/long-text-input.js.map +1 -0
- package/dist/handlers/long-text.d.ts +5 -0
- package/dist/handlers/long-text.d.ts.map +1 -0
- package/dist/handlers/long-text.js +122 -0
- package/dist/handlers/long-text.js.map +1 -0
- package/dist/handlers/manage.d.ts.map +1 -1
- package/dist/handlers/manage.js +7 -23
- package/dist/handlers/manage.js.map +1 -1
- package/dist/handlers/navigate.d.ts.map +1 -1
- package/dist/handlers/navigate.js +8 -3
- package/dist/handlers/navigate.js.map +1 -1
- package/dist/handlers/object-types.d.ts.map +1 -1
- package/dist/handlers/object-types.js +31 -7
- package/dist/handlers/object-types.js.map +1 -1
- package/dist/handlers/query-input.d.ts +50 -0
- package/dist/handlers/query-input.d.ts.map +1 -0
- package/dist/handlers/query-input.js +59 -0
- package/dist/handlers/query-input.js.map +1 -0
- package/dist/handlers/query-tool.d.ts +11 -0
- package/dist/handlers/query-tool.d.ts.map +1 -0
- package/dist/handlers/query-tool.js +99 -0
- package/dist/handlers/query-tool.js.map +1 -0
- package/dist/handlers/query.d.ts +1 -1
- package/dist/handlers/query.d.ts.map +1 -1
- package/dist/handlers/query.js +7 -1
- package/dist/handlers/query.js.map +1 -1
- package/dist/handlers/read.d.ts +1 -0
- package/dist/handlers/read.d.ts.map +1 -1
- package/dist/handlers/read.js +119 -14
- package/dist/handlers/read.js.map +1 -1
- package/dist/handlers/schemas.d.ts +57 -4
- package/dist/handlers/schemas.d.ts.map +1 -1
- package/dist/handlers/schemas.js +140 -17
- package/dist/handlers/schemas.js.map +1 -1
- package/dist/handlers/search.d.ts.map +1 -1
- package/dist/handlers/search.js +10 -6
- package/dist/handlers/search.js.map +1 -1
- package/dist/handlers/syntax.d.ts.map +1 -1
- package/dist/handlers/syntax.js +8 -0
- package/dist/handlers/syntax.js.map +1 -1
- package/dist/handlers/table-type-fields.d.ts +33 -0
- package/dist/handlers/table-type-fields.d.ts.map +1 -0
- package/dist/handlers/table-type-fields.js +22 -0
- package/dist/handlers/table-type-fields.js.map +1 -0
- package/dist/handlers/tool-descriptions.d.ts.map +1 -1
- package/dist/handlers/tool-descriptions.js +8 -3
- package/dist/handlers/tool-descriptions.js.map +1 -1
- package/dist/handlers/tool-registry.d.ts +5 -5
- package/dist/handlers/tool-registry.d.ts.map +1 -1
- package/dist/handlers/tool-registry.js +10 -7
- package/dist/handlers/tool-registry.js.map +1 -1
- package/dist/handlers/tools.d.ts +1 -1
- package/dist/handlers/tools.d.ts.map +1 -1
- package/dist/handlers/tools.js +99 -101
- package/dist/handlers/tools.js.map +1 -1
- package/dist/handlers/transport-review.d.ts +5 -0
- package/dist/handlers/transport-review.d.ts.map +1 -0
- package/dist/handlers/transport-review.js +108 -0
- package/dist/handlers/transport-review.js.map +1 -0
- package/dist/handlers/transport.d.ts.map +1 -1
- package/dist/handlers/transport.js +3 -58
- package/dist/handlers/transport.js.map +1 -1
- package/dist/handlers/where-used-details.d.ts +28 -0
- package/dist/handlers/where-used-details.d.ts.map +1 -0
- package/dist/handlers/where-used-details.js +67 -0
- package/dist/handlers/where-used-details.js.map +1 -0
- package/dist/handlers/where-used.d.ts +8 -3
- package/dist/handlers/where-used.d.ts.map +1 -1
- package/dist/handlers/where-used.js +40 -18
- package/dist/handlers/where-used.js.map +1 -1
- package/dist/handlers/write/create.d.ts.map +1 -1
- package/dist/handlers/write/create.js +69 -27
- package/dist/handlers/write/create.js.map +1 -1
- package/dist/handlers/write/rap.d.ts.map +1 -1
- package/dist/handlers/write/rap.js +2 -4
- package/dist/handlers/write/rap.js.map +1 -1
- package/dist/handlers/write/table-settings.d.ts +5 -0
- package/dist/handlers/write/table-settings.d.ts.map +1 -0
- package/dist/handlers/write/table-settings.js +27 -0
- package/dist/handlers/write/table-settings.js.map +1 -0
- package/dist/handlers/write/update-delete.d.ts +1 -1
- package/dist/handlers/write/update-delete.d.ts.map +1 -1
- package/dist/handlers/write/update-delete.js +32 -12
- package/dist/handlers/write/update-delete.js.map +1 -1
- package/dist/handlers/write-helpers.d.ts +4 -1
- package/dist/handlers/write-helpers.d.ts.map +1 -1
- package/dist/handlers/write-helpers.js +68 -8
- package/dist/handlers/write-helpers.js.map +1 -1
- package/dist/handlers/write.d.ts.map +1 -1
- package/dist/handlers/write.js +6 -10
- package/dist/handlers/write.js.map +1 -1
- package/dist/server/audit.d.ts +4 -0
- package/dist/server/audit.d.ts.map +1 -1
- package/dist/server/audit.js +49 -2
- package/dist/server/audit.js.map +1 -1
- package/dist/server/config.d.ts.map +1 -1
- package/dist/server/config.js +43 -2
- package/dist/server/config.js.map +1 -1
- package/dist/server/destination-discovery.d.ts +12 -2
- package/dist/server/destination-discovery.d.ts.map +1 -1
- package/dist/server/destination-discovery.js +33 -7
- package/dist/server/destination-discovery.js.map +1 -1
- package/dist/server/destination-registry.d.ts +10 -6
- package/dist/server/destination-registry.d.ts.map +1 -1
- package/dist/server/destination-registry.js +38 -15
- package/dist/server/destination-registry.js.map +1 -1
- package/dist/server/http-request-body.d.ts +4 -0
- package/dist/server/http-request-body.d.ts.map +1 -0
- package/dist/server/http-request-body.js +65 -0
- package/dist/server/http-request-body.js.map +1 -0
- package/dist/server/http.d.ts +5 -2
- package/dist/server/http.d.ts.map +1 -1
- package/dist/server/http.js +71 -9
- package/dist/server/http.js.map +1 -1
- package/dist/server/multi-target-authorization-audit.d.ts +5 -0
- package/dist/server/multi-target-authorization-audit.d.ts.map +1 -0
- package/dist/server/multi-target-authorization-audit.js +18 -0
- package/dist/server/multi-target-authorization-audit.js.map +1 -0
- package/dist/server/multi-target-authorization-startup.d.ts +8 -0
- package/dist/server/multi-target-authorization-startup.d.ts.map +1 -0
- package/dist/server/multi-target-authorization-startup.js +38 -0
- package/dist/server/multi-target-authorization-startup.js.map +1 -0
- package/dist/server/multi-target-authorization.d.ts +29 -0
- package/dist/server/multi-target-authorization.d.ts.map +1 -0
- package/dist/server/multi-target-authorization.js +97 -0
- package/dist/server/multi-target-authorization.js.map +1 -0
- package/dist/server/multi-target-bearer-auth.d.ts +5 -0
- package/dist/server/multi-target-bearer-auth.d.ts.map +1 -0
- package/dist/server/multi-target-bearer-auth.js +39 -0
- package/dist/server/multi-target-bearer-auth.js.map +1 -0
- package/dist/server/multi-target-catalog-enforced.d.ts +29 -0
- package/dist/server/multi-target-catalog-enforced.d.ts.map +1 -0
- package/dist/server/multi-target-catalog-enforced.js +142 -0
- package/dist/server/multi-target-catalog-enforced.js.map +1 -0
- package/dist/server/multi-target-catalog-projection.d.ts +7 -0
- package/dist/server/multi-target-catalog-projection.d.ts.map +1 -0
- package/dist/server/multi-target-catalog-projection.js +52 -0
- package/dist/server/multi-target-catalog-projection.js.map +1 -0
- package/dist/server/multi-target-feature-state.d.ts +0 -2
- package/dist/server/multi-target-feature-state.d.ts.map +1 -1
- package/dist/server/multi-target-feature-state.js +0 -19
- package/dist/server/multi-target-feature-state.js.map +1 -1
- package/dist/server/multi-target-identity.d.ts +3 -0
- package/dist/server/multi-target-identity.d.ts.map +1 -1
- package/dist/server/multi-target-identity.js +9 -0
- package/dist/server/multi-target-identity.js.map +1 -1
- package/dist/server/multi-target-request-projection.d.ts +14 -0
- package/dist/server/multi-target-request-projection.d.ts.map +1 -0
- package/dist/server/multi-target-request-projection.js +16 -0
- package/dist/server/multi-target-request-projection.js.map +1 -0
- package/dist/server/multi-target-runtime.d.ts.map +1 -1
- package/dist/server/multi-target-runtime.js +1 -0
- package/dist/server/multi-target-runtime.js.map +1 -1
- package/dist/server/multi-target-server.d.ts +4 -1
- package/dist/server/multi-target-server.d.ts.map +1 -1
- package/dist/server/multi-target-server.js +111 -11
- package/dist/server/multi-target-server.js.map +1 -1
- package/dist/server/multi-target-tools.d.ts +1 -1
- package/dist/server/multi-target-tools.d.ts.map +1 -1
- package/dist/server/multi-target-tools.js +22 -15
- package/dist/server/multi-target-tools.js.map +1 -1
- package/dist/server/private-mcp-response.d.ts +4 -0
- package/dist/server/private-mcp-response.d.ts.map +1 -0
- package/dist/server/private-mcp-response.js +14 -0
- package/dist/server/private-mcp-response.js.map +1 -0
- package/dist/server/server-cache.d.ts +5 -0
- package/dist/server/server-cache.d.ts.map +1 -0
- package/dist/server/server-cache.js +30 -0
- package/dist/server/server-cache.js.map +1 -0
- package/dist/server/server.d.ts +7 -21
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +60 -89
- package/dist/server/server.js.map +1 -1
- package/dist/server/sinks/btp-auditlog.d.ts.map +1 -1
- package/dist/server/sinks/btp-auditlog.js +4 -1
- package/dist/server/sinks/btp-auditlog.js.map +1 -1
- package/dist/server/tool-auth.d.ts +1 -1
- package/dist/server/tool-auth.d.ts.map +1 -1
- package/dist/server/tool-auth.js +24 -4
- package/dist/server/tool-auth.js.map +1 -1
- package/dist/server/types.d.ts +7 -0
- package/dist/server/types.d.ts.map +1 -1
- package/dist/server/types.js +4 -0
- package/dist/server/types.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +21 -13
|
@@ -0,0 +1,475 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bounded include expansion for `SAPRead expand_includes` on programs and includes (PROG, INCL).
|
|
3
|
+
* Function groups keep their own walk in `AdtClient.getFunctionGroupExpanded`.
|
|
4
|
+
*
|
|
5
|
+
* INCLUDE statements are recognized by abaplint (`Statements.Include`): chains, `IF FOUND`,
|
|
6
|
+
* comments and literals are handled by the parser, and `INCLUDE TYPE`/`INCLUDE STRUCTURE` are
|
|
7
|
+
* type includes. abaplint's structure pass grows faster than linearly with one file (measured on
|
|
8
|
+
* 2.120.71: 10k lines of code ≈ 0.8 s, 100k ≈ 108 s; 40k INCLUDE statements ≈ 3.4 s), so only the
|
|
9
|
+
* statements that mention INCLUDE are handed to it, at their original line numbers and in blocks of
|
|
10
|
+
* at most `PARSE_BLOCK_STATEMENTS`; every other line is blanked. That pre-filter never decides what
|
|
11
|
+
* an include is — it only removes statements that do not contain the keyword.
|
|
12
|
+
*
|
|
13
|
+
* Customer includes are always expanded; SAP includes only under an SAP program, includes of a
|
|
14
|
+
* namespace only under a program of that namespace, and `<...>` system includes never. Customer
|
|
15
|
+
* includes are read first, also those found inside an SAP include; within each group the walk is
|
|
16
|
+
* breadth-first, so a limit cuts deep includes before shallow ones. Every block names the source and
|
|
17
|
+
* line that include it. All reads share one deadline and the request's cancel signal. Every include
|
|
18
|
+
* that is not shown in full is reported, customer code first.
|
|
19
|
+
*/
|
|
20
|
+
import { Expressions, MemoryFile, Registry, Statements } from '@abaplint/core';
|
|
21
|
+
import { getDefaultAbaplintConfig } from '../lint/abaplint-config-cache.js';
|
|
22
|
+
import { getCurrentContext } from '../server/context.js';
|
|
23
|
+
import { AdtApiError, AdtNetworkError, AdtSafetyError, isNotFoundError } from './errors.js';
|
|
24
|
+
import { ABAPLINT_MAX_RELEASE, mapSapReleaseToAbaplintVersion } from './features.js';
|
|
25
|
+
/**
|
|
26
|
+
* Time for reading the program and its includes. 80 sources took about 4 s on SAP_BASIS 7.50 and 7.58,
|
|
27
|
+
* so 20 s leaves room for slower systems and still ends far below the 120 s timeout of one request. It is
|
|
28
|
+
* set on its own; `REVIEW_DEADLINE_MS` bounds one transport-review page with the same value.
|
|
29
|
+
*/
|
|
30
|
+
export const EXPANSION_DEADLINE_MS = 20_000;
|
|
31
|
+
/**
|
|
32
|
+
* Text output must fit what MCP clients show inline: a client with a 25,000-token result limit refused
|
|
33
|
+
* an 81,000-character SAPMV45A expansion and saved a 62 KB one to a file, because comment-heavy SAP code
|
|
34
|
+
* tokenizes far below 4 characters per token. 40,000 characters stayed inline in the live tests.
|
|
35
|
+
*/
|
|
36
|
+
export const EXPANSION_TEXT_LIMITS = {
|
|
37
|
+
maxBlocks: 80,
|
|
38
|
+
maxDepth: 5,
|
|
39
|
+
maxChars: 40_000,
|
|
40
|
+
maxMs: EXPANSION_DEADLINE_MS,
|
|
41
|
+
};
|
|
42
|
+
/** grep reads more than it returns; the character limit only bounds memory and SAP work. */
|
|
43
|
+
export const EXPANSION_SEARCH_LIMITS = { ...EXPANSION_TEXT_LIMITS, maxChars: 4_000_000 };
|
|
44
|
+
const LIMIT_REASONS = new Set(['depth', 'blocks', 'size', 'time']);
|
|
45
|
+
const KEYWORD = 'INCLUDE';
|
|
46
|
+
const MAX_NAME_LENGTH = 40;
|
|
47
|
+
const MAX_LISTED = 20;
|
|
48
|
+
// SAP names module includes after their field, e.g. MV45AO0R_RV45A-KEDATU_AUSGABE.
|
|
49
|
+
const FETCHABLE_NAME = /^(?:\/[A-Z0-9_]+\/)?[A-Z0-9_%#]+(?:-[A-Z0-9_]+)*$/i;
|
|
50
|
+
const DEFAULT_VERSION = mapSapReleaseToAbaplintVersion(String(ABAPLINT_MAX_RELEASE));
|
|
51
|
+
function isWordChar(code) {
|
|
52
|
+
return (code >= 48 && code <= 57) || (code >= 65 && code <= 90) || (code >= 97 && code <= 122) || code === 95;
|
|
53
|
+
}
|
|
54
|
+
/** INCLUDE statements per abaplint parse; its structure pass grows faster than linearly with them. */
|
|
55
|
+
const PARSE_BLOCK_STATEMENTS = 2_000;
|
|
56
|
+
/**
|
|
57
|
+
* Row ranges, in order and without overlap, of the statements that contain the INCLUDE keyword
|
|
58
|
+
* outside comments and literals. Statement boundaries are the ABAP periods outside literals; a range
|
|
59
|
+
* ends at a line whose last statement is complete, so no fragment can merge into a following INCLUDE
|
|
60
|
+
* statement and the ranges can be parsed in separate blocks.
|
|
61
|
+
*/
|
|
62
|
+
function includeStatementRanges(lines) {
|
|
63
|
+
const pendingAtEnd = new Array(lines.length).fill(false);
|
|
64
|
+
const ranges = [];
|
|
65
|
+
let pending = false;
|
|
66
|
+
let mentions = false;
|
|
67
|
+
let start = 0;
|
|
68
|
+
let templateText = false;
|
|
69
|
+
let templateDepth = 0;
|
|
70
|
+
const open = (row) => {
|
|
71
|
+
if (!pending)
|
|
72
|
+
start = row;
|
|
73
|
+
pending = true;
|
|
74
|
+
};
|
|
75
|
+
for (let row = 0; row < lines.length; row++) {
|
|
76
|
+
const line = lines[row];
|
|
77
|
+
// A later INCLUDE on this line must keep the prefix of a multiline statement too.
|
|
78
|
+
const rowStart = pending ? start : row;
|
|
79
|
+
if (!templateText && line.startsWith('*')) {
|
|
80
|
+
pendingAtEnd[row] = pending;
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
let i = 0;
|
|
84
|
+
while (i < line.length) {
|
|
85
|
+
const char = line[i];
|
|
86
|
+
// Keep template state across rows; { resumes code and } resumes text, including nested templates.
|
|
87
|
+
if (templateText) {
|
|
88
|
+
if (char === '\\')
|
|
89
|
+
i += 2;
|
|
90
|
+
else {
|
|
91
|
+
if (char === '|')
|
|
92
|
+
templateDepth--;
|
|
93
|
+
if (char === '|' || char === '{')
|
|
94
|
+
templateText = false;
|
|
95
|
+
i++;
|
|
96
|
+
}
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
if (char === '"')
|
|
100
|
+
break;
|
|
101
|
+
if (char === '|' || (char === '}' && templateDepth > 0)) {
|
|
102
|
+
open(rowStart);
|
|
103
|
+
if (char === '|')
|
|
104
|
+
templateDepth++;
|
|
105
|
+
templateText = true;
|
|
106
|
+
i++;
|
|
107
|
+
}
|
|
108
|
+
else if (char === "'" || char === '`') {
|
|
109
|
+
open(rowStart);
|
|
110
|
+
let j = i + 1;
|
|
111
|
+
while (j < line.length && line[j] !== char)
|
|
112
|
+
j++;
|
|
113
|
+
i = j + 1;
|
|
114
|
+
}
|
|
115
|
+
else if (char === '.') {
|
|
116
|
+
if (pending && mentions)
|
|
117
|
+
ranges.push([start, row]);
|
|
118
|
+
pending = false;
|
|
119
|
+
mentions = false;
|
|
120
|
+
i++;
|
|
121
|
+
}
|
|
122
|
+
else if (isWordChar(line.charCodeAt(i))) {
|
|
123
|
+
open(rowStart);
|
|
124
|
+
let j = i + 1;
|
|
125
|
+
while (j < line.length && isWordChar(line.charCodeAt(j)))
|
|
126
|
+
j++;
|
|
127
|
+
if (j - i === KEYWORD.length && line.slice(i, j).toUpperCase() === KEYWORD)
|
|
128
|
+
mentions = true;
|
|
129
|
+
i = j;
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
if (char !== ' ' && char !== '\t' && char !== '\r')
|
|
133
|
+
open(rowStart);
|
|
134
|
+
i++;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
pendingAtEnd[row] = pending;
|
|
138
|
+
}
|
|
139
|
+
if (pending && mentions)
|
|
140
|
+
ranges.push([start, lines.length - 1]);
|
|
141
|
+
const merged = [];
|
|
142
|
+
for (const [from, to] of ranges) {
|
|
143
|
+
let end = to;
|
|
144
|
+
while (pendingAtEnd[end] && end + 1 < lines.length)
|
|
145
|
+
end++;
|
|
146
|
+
const last = merged.at(-1);
|
|
147
|
+
if (last && from <= last[1])
|
|
148
|
+
last[1] = Math.max(last[1], end);
|
|
149
|
+
else
|
|
150
|
+
merged.push([from, end]);
|
|
151
|
+
}
|
|
152
|
+
return merged;
|
|
153
|
+
}
|
|
154
|
+
/** INCLUDE statements of an ABAP source in source order (type includes excluded). */
|
|
155
|
+
export function findIncludeStatements(source) {
|
|
156
|
+
if (!/include/i.test(source))
|
|
157
|
+
return [];
|
|
158
|
+
const lines = source.replace(/\r\n/g, '\n').split('\n');
|
|
159
|
+
const ranges = includeStatementRanges(lines);
|
|
160
|
+
const statements = [];
|
|
161
|
+
for (let first = 0; first < ranges.length; first += PARSE_BLOCK_STATEMENTS) {
|
|
162
|
+
const block = ranges.slice(first, first + PARSE_BLOCK_STATEMENTS);
|
|
163
|
+
const offset = block[0][0];
|
|
164
|
+
const rows = new Array(block.at(-1)[1] - offset + 1).fill('');
|
|
165
|
+
for (const [from, to] of block)
|
|
166
|
+
for (let row = from; row <= to; row++)
|
|
167
|
+
rows[row - offset] = lines[row];
|
|
168
|
+
statements.push(...parseIncludeStatements(rows.join('\n'), offset));
|
|
169
|
+
}
|
|
170
|
+
return statements;
|
|
171
|
+
}
|
|
172
|
+
/** abaplint's INCLUDE statements in `text`, with their lines moved down by `offset` rows. */
|
|
173
|
+
function parseIncludeStatements(text, offset) {
|
|
174
|
+
const registry = new Registry(getDefaultAbaplintConfig(DEFAULT_VERSION));
|
|
175
|
+
registry.addFile(new MemoryFile('zarc1_include_scan.prog.abap', text));
|
|
176
|
+
registry.parse();
|
|
177
|
+
const statements = [];
|
|
178
|
+
for (const object of registry.getObjects()) {
|
|
179
|
+
const file = object.getMainABAPFile?.();
|
|
180
|
+
for (const statement of file?.getStatements() ?? []) {
|
|
181
|
+
if (!(statement.get() instanceof Statements.Include))
|
|
182
|
+
continue;
|
|
183
|
+
const name = statement.findFirstExpression(Expressions.IncludeName);
|
|
184
|
+
if (!name)
|
|
185
|
+
continue;
|
|
186
|
+
const words = statement.getTokens().map((token) => token.getStr().toUpperCase());
|
|
187
|
+
statements.push({
|
|
188
|
+
name: name.concatTokens(),
|
|
189
|
+
line: name.getFirstToken().getRow() + offset,
|
|
190
|
+
ifFound: words.some((word, index) => word === 'IF' && words[index + 1] === 'FOUND'),
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
return statements;
|
|
195
|
+
}
|
|
196
|
+
/** `system` (`<...>`), `customer`, a `/NAMESPACE/`, or `sap`. */
|
|
197
|
+
export function includeOwner(name) {
|
|
198
|
+
const upper = name.toUpperCase();
|
|
199
|
+
if (upper.startsWith('<'))
|
|
200
|
+
return 'system';
|
|
201
|
+
const namespace = /^\/[^/]+\//.exec(upper);
|
|
202
|
+
if (namespace)
|
|
203
|
+
return namespace[0];
|
|
204
|
+
// Customer name ranges: Z*/Y*, module pools SAPMZ*/MZ*, function groups SAPLZ*/LZ*.
|
|
205
|
+
return /^(?:SAP[LM]|[LM])?[YZ]/.test(upper) ? 'customer' : 'sap';
|
|
206
|
+
}
|
|
207
|
+
function skipReason(include, rootOwner) {
|
|
208
|
+
const owner = includeOwner(include);
|
|
209
|
+
if (owner === 'system')
|
|
210
|
+
return 'system';
|
|
211
|
+
if (owner !== 'customer' && owner !== rootOwner)
|
|
212
|
+
return owner === 'sap' ? 'sap' : 'namespace';
|
|
213
|
+
if (include.length > MAX_NAME_LENGTH || !FETCHABLE_NAME.test(include))
|
|
214
|
+
return 'name';
|
|
215
|
+
return undefined;
|
|
216
|
+
}
|
|
217
|
+
/** The expansion of `root` reads `include`, limits aside (owner and name rules). */
|
|
218
|
+
export function expandsInclude(include, root) {
|
|
219
|
+
return skipReason(include, includeOwner(root)) === undefined;
|
|
220
|
+
}
|
|
221
|
+
/** Lines of `source` that fit `maxChars`, or undefined when only blank lines would be left out. */
|
|
222
|
+
function shortenSource(source, maxChars) {
|
|
223
|
+
const lines = source.split('\n');
|
|
224
|
+
let used = 0;
|
|
225
|
+
let shownLines = 0;
|
|
226
|
+
while (shownLines < lines.length && used + lines[shownLines].length + 1 <= maxChars) {
|
|
227
|
+
used += lines[shownLines].length + 1;
|
|
228
|
+
shownLines++;
|
|
229
|
+
}
|
|
230
|
+
if (lines.slice(shownLines).every((line) => line.trim() === ''))
|
|
231
|
+
return undefined;
|
|
232
|
+
return { text: lines.slice(0, shownLines).join('\n'), shownLines, totalLines: lines.length };
|
|
233
|
+
}
|
|
234
|
+
/** The read was cut off by its deadline (an `AbortSignal.timeout`), detected as in the transport review. */
|
|
235
|
+
function isDeadlineError(err) {
|
|
236
|
+
return err instanceof AdtNetworkError && err.cause?.name === 'TimeoutError';
|
|
237
|
+
}
|
|
238
|
+
/** Customer includes first, then the others; each group breadth-first in the order found. */
|
|
239
|
+
function byPriority(a, b) {
|
|
240
|
+
return Number(b.customer) - Number(a.customer) || a.depth - b.depth || a.order - b.order;
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Walk the include graph of `root`, customer includes first: one found inside an SAP include goes
|
|
244
|
+
* ahead of the SAP includes still waiting. A read that fails because the deadline passed ends the
|
|
245
|
+
* walk with the rest listed under the time limit; other failures except safety refusals and
|
|
246
|
+
* cancellation become placeholder blocks, and a 404 for `INCLUDE … IF FOUND` is reported as absent.
|
|
247
|
+
*/
|
|
248
|
+
export async function expandIncludes(root, read, options = {}) {
|
|
249
|
+
const limits = { ...EXPANSION_SEARCH_LIMITS, ...options.limits };
|
|
250
|
+
const deadline = options.deadline ?? Date.now() + limits.maxMs;
|
|
251
|
+
const request = { deadline, ...(options.signal ? { signal: options.signal } : {}) };
|
|
252
|
+
const timeUp = () => Date.now() >= deadline;
|
|
253
|
+
const rootOwner = includeOwner(root.owner);
|
|
254
|
+
const blocks = [];
|
|
255
|
+
const issues = [];
|
|
256
|
+
const rootKey = root.ref.toUpperCase();
|
|
257
|
+
const seen = new Set([rootKey]);
|
|
258
|
+
const cycles = new Set();
|
|
259
|
+
const pending = [];
|
|
260
|
+
let found = 0;
|
|
261
|
+
/** `IF FOUND` includes that do not exist: no block, but a read like any other. */
|
|
262
|
+
let absent = 0;
|
|
263
|
+
let chars = 0;
|
|
264
|
+
let stop;
|
|
265
|
+
/** Add a block; false when not even the first line of an include fits, which is then listed instead. */
|
|
266
|
+
const add = (name, source, at) => {
|
|
267
|
+
const cut = options.shorten && chars + source.length > limits.maxChars
|
|
268
|
+
? shortenSource(source, limits.maxChars - chars)
|
|
269
|
+
: undefined;
|
|
270
|
+
if (cut?.shownLines === 0 && at) {
|
|
271
|
+
issues.push({ kind: 'skipped', reason: 'size', include: name, ...at });
|
|
272
|
+
stop = 'size';
|
|
273
|
+
return false;
|
|
274
|
+
}
|
|
275
|
+
const includedAt = at ? { includedAt: at } : {};
|
|
276
|
+
if (!cut) {
|
|
277
|
+
blocks.push({ name, source, ...includedAt });
|
|
278
|
+
}
|
|
279
|
+
else {
|
|
280
|
+
const rest = `lines ${cut.shownLines + 1}-${cut.totalLines} not shown (character limit)`;
|
|
281
|
+
blocks.push({ name, source: `${cut.text}${cut.text ? '\n' : ''}[... ${rest}]`, ...includedAt });
|
|
282
|
+
issues.push({
|
|
283
|
+
kind: 'shortened',
|
|
284
|
+
include: name,
|
|
285
|
+
parent: at?.parent ?? '',
|
|
286
|
+
line: at?.line ?? 0,
|
|
287
|
+
shownLines: cut.shownLines,
|
|
288
|
+
totalLines: cut.totalLines,
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
chars += source.length;
|
|
292
|
+
if (chars >= limits.maxChars)
|
|
293
|
+
stop = 'size';
|
|
294
|
+
return true;
|
|
295
|
+
};
|
|
296
|
+
/** Queue the includes that `source` names, or report why one is not read. */
|
|
297
|
+
const discover = (ref, source, depth, ancestors) => {
|
|
298
|
+
for (const statement of findIncludeStatements(source)) {
|
|
299
|
+
const key = statement.name.toUpperCase();
|
|
300
|
+
const at = { parent: ref, line: statement.line };
|
|
301
|
+
if (ancestors.has(key)) {
|
|
302
|
+
if (!cycles.has(`${ref.toUpperCase()} ${key}`))
|
|
303
|
+
issues.push({ kind: 'cycle', include: statement.name, ...at });
|
|
304
|
+
cycles.add(`${ref.toUpperCase()} ${key}`);
|
|
305
|
+
continue;
|
|
306
|
+
}
|
|
307
|
+
if (seen.has(key))
|
|
308
|
+
continue;
|
|
309
|
+
seen.add(key);
|
|
310
|
+
const reason = skipReason(statement.name, rootOwner) ?? stop ?? (depth >= limits.maxDepth ? 'depth' : undefined);
|
|
311
|
+
if (reason) {
|
|
312
|
+
issues.push({ kind: 'skipped', reason, include: statement.name, ...at });
|
|
313
|
+
continue;
|
|
314
|
+
}
|
|
315
|
+
const customer = includeOwner(statement.name) === 'customer';
|
|
316
|
+
pending.push({
|
|
317
|
+
statement,
|
|
318
|
+
at,
|
|
319
|
+
depth: depth + 1,
|
|
320
|
+
ancestors: new Set([...ancestors, key]),
|
|
321
|
+
customer,
|
|
322
|
+
order: found++,
|
|
323
|
+
});
|
|
324
|
+
}
|
|
325
|
+
};
|
|
326
|
+
add(root.label, root.source);
|
|
327
|
+
discover(root.ref, root.source, 0, new Set([rootKey]));
|
|
328
|
+
while (pending.length > 0) {
|
|
329
|
+
let first = 0;
|
|
330
|
+
for (let i = 1; i < pending.length; i++)
|
|
331
|
+
if (byPriority(pending[i], pending[first]) < 0)
|
|
332
|
+
first = i;
|
|
333
|
+
const next = pending.splice(first, 1)[0];
|
|
334
|
+
const { statement, at } = next;
|
|
335
|
+
if (!stop && timeUp())
|
|
336
|
+
stop = 'time';
|
|
337
|
+
const reason = stop ?? (blocks.length + absent >= limits.maxBlocks ? 'blocks' : undefined);
|
|
338
|
+
if (reason) {
|
|
339
|
+
// Nothing more is read: list the rest once, in the order it would have been read.
|
|
340
|
+
for (const left of [next, ...pending.sort(byPriority)]) {
|
|
341
|
+
issues.push({ kind: 'skipped', reason, include: left.statement.name, ...left.at });
|
|
342
|
+
}
|
|
343
|
+
break;
|
|
344
|
+
}
|
|
345
|
+
let source;
|
|
346
|
+
try {
|
|
347
|
+
source = await read(statement.name, statement.ifFound, request);
|
|
348
|
+
}
|
|
349
|
+
catch (err) {
|
|
350
|
+
if (err instanceof AdtSafetyError || options.signal?.aborted)
|
|
351
|
+
throw err;
|
|
352
|
+
if (isDeadlineError(err)) {
|
|
353
|
+
stop = 'time';
|
|
354
|
+
issues.push({ kind: 'skipped', reason: 'time', include: statement.name, ...at });
|
|
355
|
+
}
|
|
356
|
+
else if (statement.ifFound && isNotFoundError(err)) {
|
|
357
|
+
absent++;
|
|
358
|
+
issues.push({ kind: 'absent', include: statement.name, ...at });
|
|
359
|
+
}
|
|
360
|
+
else {
|
|
361
|
+
blocks.push({
|
|
362
|
+
name: statement.name,
|
|
363
|
+
source: `[Could not read include "${statement.name}"]`,
|
|
364
|
+
includedAt: at,
|
|
365
|
+
unreadable: true,
|
|
366
|
+
});
|
|
367
|
+
const detail = err instanceof AdtApiError ? `HTTP ${err.statusCode}` : err?.name || 'error';
|
|
368
|
+
issues.push({ kind: 'unreadable', detail, include: statement.name, ...at });
|
|
369
|
+
}
|
|
370
|
+
continue;
|
|
371
|
+
}
|
|
372
|
+
if (add(statement.name, source, at))
|
|
373
|
+
discover(statement.name, source, next.depth, next.ancestors);
|
|
374
|
+
}
|
|
375
|
+
const truncated = issues.some((issue) => issue.kind === 'shortened' || (issue.kind === 'skipped' && LIMIT_REASONS.has(issue.reason)));
|
|
376
|
+
return { blocks, issues, truncated, limits };
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* Read a program or include and every include it names, customer includes first, within one deadline.
|
|
380
|
+
* Blocks read from the user's drafts are marked `draft`.
|
|
381
|
+
*/
|
|
382
|
+
export async function readProgramExpanded(client, type, name, versions, options = {}) {
|
|
383
|
+
const limits = { ...EXPANSION_SEARCH_LIMITS, ...options.limits };
|
|
384
|
+
const signal = getCurrentContext()?.signal;
|
|
385
|
+
const deadline = Date.now() + limits.maxMs;
|
|
386
|
+
const rootRead = { deadline, ...(signal ? { signal } : {}), version: versions.root };
|
|
387
|
+
const { source } = type === 'PROG' ? await client.getProgram(name, rootRead) : await client.getInclude(name, rootRead);
|
|
388
|
+
const versionOf = (include) => versions.include?.(include) ?? { version: versions.root, draft: false };
|
|
389
|
+
const read = async (include, optional, request) => (await client.getInclude(include, {
|
|
390
|
+
...request,
|
|
391
|
+
version: versionOf(include).version,
|
|
392
|
+
suppressNotFoundLog: optional,
|
|
393
|
+
})).source;
|
|
394
|
+
const root = { label: `${type} ${name}`, ref: name, owner: name, source };
|
|
395
|
+
const result = await expandIncludes(root, read, { ...options, limits, deadline, signal });
|
|
396
|
+
const blocks = result.blocks.map((block, index) => {
|
|
397
|
+
const draft = index === 0 ? versions.rootDraft === true : !block.unreadable && versionOf(block.name).draft;
|
|
398
|
+
return draft ? { ...block, draft: true } : block;
|
|
399
|
+
});
|
|
400
|
+
return { ...result, blocks };
|
|
401
|
+
}
|
|
402
|
+
/** Customer includes first, then other namespaces, SAP and system includes. */
|
|
403
|
+
function ownerRank(include) {
|
|
404
|
+
const owner = includeOwner(include);
|
|
405
|
+
return owner === 'customer' ? 0 : owner.startsWith('/') ? 1 : owner === 'sap' ? 2 : 3;
|
|
406
|
+
}
|
|
407
|
+
function listed(issues) {
|
|
408
|
+
const ordered = [...issues].sort((a, b) => ownerRank(a.include) - ownerRank(b.include));
|
|
409
|
+
const names = ordered
|
|
410
|
+
.slice(0, MAX_LISTED)
|
|
411
|
+
.map((issue) => `${issue.include} (${issue.parent} line ${issue.line}${issue.detail ? `, ${issue.detail}` : ''})`);
|
|
412
|
+
if (issues.length > MAX_LISTED)
|
|
413
|
+
names.push(`${issues.length - MAX_LISTED} more`);
|
|
414
|
+
return names.join(', ');
|
|
415
|
+
}
|
|
416
|
+
/**
|
|
417
|
+
* Explain every include that is not shown (or searched) in full, customer code first, or undefined
|
|
418
|
+
* when there is none. `searched` words the notes for grep output.
|
|
419
|
+
*/
|
|
420
|
+
export function expansionNotes(result, searched) {
|
|
421
|
+
const verb = searched ? 'searched' : 'expanded';
|
|
422
|
+
const of = (predicate) => result.issues.filter(predicate);
|
|
423
|
+
const lines = [];
|
|
424
|
+
const shortened = of((issue) => issue.kind === 'shortened');
|
|
425
|
+
if (result.truncated) {
|
|
426
|
+
const { maxBlocks, maxDepth, maxChars, maxMs } = result.limits;
|
|
427
|
+
const unread = of((issue) => issue.kind === 'skipped' && LIMIT_REASONS.has(issue.reason));
|
|
428
|
+
const hit = new Set(unread.map((issue) => issue.reason));
|
|
429
|
+
if (shortened.length)
|
|
430
|
+
hit.add('size');
|
|
431
|
+
const phrases = {
|
|
432
|
+
blocks: `${maxBlocks} sources`,
|
|
433
|
+
depth: `${maxDepth} levels`,
|
|
434
|
+
size: `${maxChars.toLocaleString('en-US')} characters`,
|
|
435
|
+
time: `${maxMs / 1000} s`,
|
|
436
|
+
};
|
|
437
|
+
const reached = ['blocks', 'depth', 'size', 'time'].filter((reason) => hit.has(reason));
|
|
438
|
+
lines.push(`Limit reached (${reached.map((reason) => phrases[reason]).join(', ')}).` +
|
|
439
|
+
(shortened.length
|
|
440
|
+
? ` ${shortened.map((issue) => `${issue.include} shows lines 1-${issue.shownLines} of ${issue.totalLines}`).join('; ')}.`
|
|
441
|
+
: '') +
|
|
442
|
+
(unread.length ? ` Not ${verb}: ${listed(unread)}; includes inside them are not listed.` : ''));
|
|
443
|
+
}
|
|
444
|
+
const unreadable = of((issue) => issue.kind === 'unreadable');
|
|
445
|
+
if (unreadable.length)
|
|
446
|
+
lines.push(`Could not be read: ${listed(unreadable)}.`);
|
|
447
|
+
const absent = of((issue) => issue.kind === 'absent');
|
|
448
|
+
if (absent.length)
|
|
449
|
+
lines.push(`Not present (INCLUDE ... IF FOUND): ${listed(absent)}.`);
|
|
450
|
+
const cycle = of((issue) => issue.kind === 'cycle');
|
|
451
|
+
if (cycle.length)
|
|
452
|
+
lines.push(`Cycle (includes an enclosing include again; read once): ${listed(cycle)}.`);
|
|
453
|
+
const namespace = of((issue) => issue.reason === 'namespace');
|
|
454
|
+
if (namespace.length)
|
|
455
|
+
lines.push(`Not ${verb} (other namespace; may be customer code): ${listed(namespace)}.`);
|
|
456
|
+
const sap = of((issue) => issue.reason === 'sap');
|
|
457
|
+
if (sap.length)
|
|
458
|
+
lines.push(`Not ${verb} (SAP include): ${listed(sap)}.`);
|
|
459
|
+
const system = of((issue) => issue.reason === 'system');
|
|
460
|
+
if (system.length)
|
|
461
|
+
lines.push(`Not ${verb} (system include): ${listed(system)}.`);
|
|
462
|
+
const name = of((issue) => issue.reason === 'name');
|
|
463
|
+
if (name.length)
|
|
464
|
+
lines.push(`Not ${verb} (unsupported include name): ${listed(name)}.`);
|
|
465
|
+
if (lines.length === 0)
|
|
466
|
+
return undefined;
|
|
467
|
+
if (searched)
|
|
468
|
+
lines.push('Search one include with SAPRead(type="INCL", name="...", grep="...").');
|
|
469
|
+
else if (shortened.length === 0)
|
|
470
|
+
lines.push('Read one include with SAPRead(type="INCL", name="...").');
|
|
471
|
+
else
|
|
472
|
+
lines.push('Read one include with SAPRead(type="INCL", name="..."); lineStart/lineEnd read the rest of a shortened one.');
|
|
473
|
+
return `=== [include expansion] ===\n${lines.join('\n')}`;
|
|
474
|
+
}
|
|
475
|
+
//# sourceMappingURL=include-expansion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"include-expansion.js","sourceRoot":"","sources":["../../src/adt/include-expansion.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Private registry of ARC-1's own fixed data reads.
|
|
3
3
|
*
|
|
4
|
-
* Some features read SAP
|
|
5
|
-
* class hierarchy, transaction enrichment, BOR method resolution
|
|
4
|
+
* Some features read SAP tables with statements ARC-1 builds itself: repository lookup,
|
|
5
|
+
* class hierarchy, transaction enrichment, BOR method resolution, authorization-trace decoding and stored text.
|
|
6
6
|
* They are declared here so that code, tests and operator documentation cannot drift apart, and so
|
|
7
7
|
* that "which feature breaks if I block this table?" has one answer.
|
|
8
8
|
*
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
* registry exists to prevent.
|
|
23
23
|
*/
|
|
24
24
|
import type { DataSourcePolicyError } from './data-source-policy.js';
|
|
25
|
-
export type InternalDataOperationId = 'replacement_lineage' | 'tadir_lookup_db' | 'tran_program_enrichment' | 'class_hierarchy' | 'interface_implementers' | 'bor_method_lookup' | 'authorization_trace';
|
|
25
|
+
export type InternalDataOperationId = 'replacement_lineage' | 'tadir_lookup_db' | 'tran_program_enrichment' | 'class_hierarchy' | 'interface_implementers' | 'bor_method_lookup' | 'authorization_trace' | 'stored_text';
|
|
26
26
|
export interface InternalDataOperation {
|
|
27
27
|
/** Exact canonical sources this server-owned operation reads. */
|
|
28
28
|
readonly sources: readonly string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal-data-operations.d.ts","sourceRoot":"","sources":["../../src/adt/internal-data-operations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAErE,MAAM,MAAM,uBAAuB,GAC/B,qBAAqB,GACrB,iBAAiB,GACjB,yBAAyB,GACzB,iBAAiB,GACjB,wBAAwB,GACxB,mBAAmB,GACnB,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"internal-data-operations.d.ts","sourceRoot":"","sources":["../../src/adt/internal-data-operations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAErE,MAAM,MAAM,uBAAuB,GAC/B,qBAAqB,GACrB,iBAAiB,GACjB,yBAAyB,GACzB,iBAAiB,GACjB,wBAAwB,GACxB,mBAAmB,GACnB,qBAAqB,GACrB,aAAa,CAAC;AAElB,MAAM,WAAW,qBAAqB;IACpC,iEAAiE;IACjE,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,kDAAkD;IAClD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,CAAC;IAC1C,kEAAkE;IAClE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,uBAAuB,EAAE,qBAAqB,CA6D3F,CAAC;AAEF,6FAA6F;AAC7F,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAE9C;AAED,uEAAuE;AACvE,wBAAgB,2BAA2B,CACzC,kBAAkB,EAAE,SAAS,MAAM,EAAE,GACpC,KAAK,CAAC;IAAE,EAAE,EAAE,uBAAuB,CAAC;IAAC,SAAS,EAAE,qBAAqB,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAU7F;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,uBAAuB,EAC3B,KAAK,EAAE,qBAAqB,EAC5B,aAAa,EAAE,OAAO,GACrB,MAAM,CAGR;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,uBAAuB,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAG5F"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Private registry of ARC-1's own fixed data reads.
|
|
3
3
|
*
|
|
4
|
-
* Some features read SAP
|
|
5
|
-
* class hierarchy, transaction enrichment, BOR method resolution
|
|
4
|
+
* Some features read SAP tables with statements ARC-1 builds itself: repository lookup,
|
|
5
|
+
* class hierarchy, transaction enrichment, BOR method resolution, authorization-trace decoding and stored text.
|
|
6
6
|
* They are declared here so that code, tests and operator documentation cannot drift apart, and so
|
|
7
7
|
* that "which feature breaks if I block this table?" has one answer.
|
|
8
8
|
*
|
|
@@ -67,6 +67,13 @@ export const INTERNAL_DATA_OPERATIONS = {
|
|
|
67
67
|
guidance: 'The authorization trace needs SUAUTHVALTRC for the trace rows and TOBJ to decode field names. ' +
|
|
68
68
|
'Both are required: returning positional values without their field names would be ambiguous and misleading, so the action is denied rather than partially answered.',
|
|
69
69
|
},
|
|
70
|
+
stored_text: {
|
|
71
|
+
sources: ['STXH', 'STXL', 'TTXOB', 'TTXID', 'T002'],
|
|
72
|
+
consumer: 'SAPQuery(action="long_text")',
|
|
73
|
+
criticality: 'core',
|
|
74
|
+
guidance: 'Classic stored text requires STXH/STXL and the TTXOB/TTXID/T002 configuration. ' +
|
|
75
|
+
'Use an application-specific released API when these reads are not permitted; do not bypass the policy with RFC, helpers, or free SQL.',
|
|
76
|
+
},
|
|
70
77
|
};
|
|
71
78
|
/** Every distinct source ARC-1 reads for its own features, for docs and operator tooling. */
|
|
72
79
|
export function internalDataSources() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal-data-operations.js","sourceRoot":"","sources":["../../src/adt/internal-data-operations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;
|
|
1
|
+
{"version":3,"file":"internal-data-operations.js","sourceRoot":"","sources":["../../src/adt/internal-data-operations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
/** NW 7.40 reports missing wildcard handlers as a structured 400, not 406/415 (#907). */
|
|
2
2
|
export declare function legacyContentHandlerFallback(status: number, body: string, method: string, negotiationKey: string, headers: Record<string, string>): Record<string, string> | undefined;
|
|
3
|
+
/** Old handlers can return empty HTML for unmapped ADT paths (#996). Do not infer data or write success. */
|
|
4
|
+
export declare function rejectEmptyAdtHtmlResponse(status: number, contentType: string | undefined, body: string, path: string): void;
|
|
3
5
|
//# sourceMappingURL=legacy-content-handler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legacy-content-handler.d.ts","sourceRoot":"","sources":["../../src/adt/legacy-content-handler.ts"],"names":[],"mappings":"AAEA,yFAAyF;AACzF,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAkBpC"}
|
|
1
|
+
{"version":3,"file":"legacy-content-handler.d.ts","sourceRoot":"","sources":["../../src/adt/legacy-content-handler.ts"],"names":[],"mappings":"AAEA,yFAAyF;AACzF,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAkBpC;AAED,4GAA4G;AAC5G,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,IAAI,CAYN"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { extractExceptionType } from './errors.js';
|
|
1
|
+
import { AdtApiError, extractExceptionType } from './errors.js';
|
|
2
2
|
/** NW 7.40 reports missing wildcard handlers as a structured 400, not 406/415 (#907). */
|
|
3
3
|
export function legacyContentHandlerFallback(status, body, method, negotiationKey, headers) {
|
|
4
4
|
if (status !== 400 || extractExceptionType(body) !== 'ExceptionContentHandlerNotFound')
|
|
@@ -18,4 +18,16 @@ export function legacyContentHandlerFallback(status, body, method, negotiationKe
|
|
|
18
18
|
}
|
|
19
19
|
return undefined;
|
|
20
20
|
}
|
|
21
|
+
/** Old handlers can return empty HTML for unmapped ADT paths (#996). Do not infer data or write success. */
|
|
22
|
+
export function rejectEmptyAdtHtmlResponse(status, contentType, body, path) {
|
|
23
|
+
if (status !== 200 ||
|
|
24
|
+
!path.startsWith('/sap/bc/adt/') ||
|
|
25
|
+
contentType?.split(';', 1)[0]?.trim() !== 'text/html' ||
|
|
26
|
+
body.trim() !== '')
|
|
27
|
+
return;
|
|
28
|
+
const error = new AdtApiError('Unexpected empty HTML response from ADT.', status, path, body);
|
|
29
|
+
error.extraHint =
|
|
30
|
+
'No ADT result was returned. This does not establish an empty result, a missing object, or a successful write. Verify the endpoint and read back any attempted changes before retrying.';
|
|
31
|
+
throw error;
|
|
32
|
+
}
|
|
21
33
|
//# sourceMappingURL=legacy-content-handler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legacy-content-handler.js","sourceRoot":"","sources":["../../src/adt/legacy-content-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"legacy-content-handler.js","sourceRoot":"","sources":["../../src/adt/legacy-content-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEhE,yFAAyF;AACzF,MAAM,UAAU,4BAA4B,CAC1C,MAAc,EACd,IAAY,EACZ,MAAc,EACd,cAAsB,EACtB,OAA+B;IAE/B,IAAI,MAAM,KAAK,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,KAAK,iCAAiC;QAAE,OAAO,SAAS,CAAC;IAEzG,oEAAoE;IACpE,IAAI,MAAM,KAAK,KAAK,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,sCAAsC,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;QAChH,OAAO,EAAE,MAAM,EAAE,wCAAwC,EAAE,CAAC;IAC9D,CAAC;IAED,wFAAwF;IACxF,IAAI,MAAM,KAAK,MAAM,IAAI,OAAO,CAAC,cAAc,CAAC,KAAK,eAAe,EAAE,CAAC;QACrE,IAAI,cAAc,KAAK,wBAAwB,EAAE,CAAC;YAChD,OAAO,EAAE,cAAc,EAAE,wCAAwC,EAAE,CAAC;QACtE,CAAC;QACD,IAAI,cAAc,KAAK,+BAA+B,EAAE,CAAC;YACvD,OAAO,EAAE,cAAc,EAAE,+CAA+C,EAAE,CAAC;QAC7E,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,4GAA4G;AAC5G,MAAM,UAAU,0BAA0B,CACxC,MAAc,EACd,WAA+B,EAC/B,IAAY,EACZ,IAAY;IAEZ,IACE,MAAM,KAAK,GAAG;QACd,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;QAChC,WAAW,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,WAAW;QACrD,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;QAElB,OAAO;IACT,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,0CAA0C,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9F,KAAK,CAAC,SAAS;QACb,wLAAwL,CAAC;IAC3L,MAAM,KAAK,CAAC;AACd,CAAC"}
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import type { AdtHttpClient } from './http.js';
|
|
2
|
+
/** Require SAP's advertised filter for getPackageContents' request (no objectType/useSearchProvider).
|
|
3
|
+
* Slash-typed objectType or useSearchProvider overrides can select classic search, which ignores packageName. */
|
|
4
|
+
export declare function supportsPackageFilteredSearch(xml: string): boolean;
|
|
5
|
+
export declare function requirePackageFilteredSearch(http: AdtHttpClient): Promise<void>;
|
|
1
6
|
/** ADT quick search provides neither a total nor proof of full package coverage. */
|
|
2
7
|
export declare function describePackageListing(returned: number, requested: number | undefined): {
|
|
3
8
|
returned: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-contents.d.ts","sourceRoot":"","sources":["../../src/adt/package-contents.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"package-contents.d.ts","sourceRoot":"","sources":["../../src/adt/package-contents.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAI/C;kHACkH;AAClH,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAelE;AAED,wBAAsB,4BAA4B,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAQrF;AAED,oFAAoF;AACpF,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS;;;;;kBAQpE,SAAS;;cAEb,YAAY;;EAMzB"}
|