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
package/dist/adt/xml-parser.d.ts
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* This decouples the XML format from our internal types, making it
|
|
14
14
|
* easier to handle SAP's inconsistent XML across different endpoints.
|
|
15
15
|
*/
|
|
16
|
-
import type { AdtSearchResult,
|
|
16
|
+
import type { AdtSearchResult, AuthorizationFieldInfo, BspAppInfo, BspFileNode, ClassMetadata, ClassStructure, DataElementInfo, DomainInfo, EnhancementImplementationInfo, FeatureToggleInfo, FunctionGroupStructure, FunctionModuleProperties, InactiveObject, MessageClassInfo, ServerDrivenObjectMetadata, TransactionInfo } from './types.js';
|
|
17
17
|
/**
|
|
18
18
|
* Escape the five predefined XML entities (`& < > " '`) for safe interpolation into XML.
|
|
19
19
|
*
|
|
@@ -26,8 +26,9 @@ export declare function escapeXmlAttr(s: string): string;
|
|
|
26
26
|
/**
|
|
27
27
|
* Parse raw XML string to a JS object. Every attribute and text value is entity-DECODED
|
|
28
28
|
* (`R&D` → `R&D`): never decode a parsed value again, and `escapeXmlAttr` it on the way back.
|
|
29
|
+
* Set preserveWhitespace to retain leading/trailing text whitespace, e.g. in quick-fix deltas.
|
|
29
30
|
*/
|
|
30
|
-
export declare function parseXml(xml: string): Record<string, unknown>;
|
|
31
|
+
export declare function parseXml(xml: string, preserveWhitespace?: boolean): Record<string, unknown>;
|
|
31
32
|
/**
|
|
32
33
|
* Parse ADT search results XML.
|
|
33
34
|
*
|
|
@@ -80,7 +81,7 @@ export interface DataPreviewMeta {
|
|
|
80
81
|
totalRows?: number;
|
|
81
82
|
/** Server-side execution time in milliseconds (ADT `queryExecutionTime`, as shown by Eclipse Data Preview). */
|
|
82
83
|
queryExecutionTimeMs?: number;
|
|
83
|
-
/** The
|
|
84
|
+
/** The OpenSQL echo returned by SAP, without client-side whitespace normalization. */
|
|
84
85
|
executedQueryString?: string;
|
|
85
86
|
}
|
|
86
87
|
export interface DataPreviewResult extends DataPreviewMeta {
|
|
@@ -243,37 +244,6 @@ export declare function parseEnhancementImplementation(xml: string): Enhancement
|
|
|
243
244
|
* Expected root: <adtcore:mainObject>.
|
|
244
245
|
*/
|
|
245
246
|
export declare function parseTransactionMetadata(xml: string): TransactionInfo;
|
|
246
|
-
/**
|
|
247
|
-
* Parse API release state XML from /sap/bc/adt/apireleases/{encoded-uri}.
|
|
248
|
-
*
|
|
249
|
-
* Returns structured release info with per-contract states (C0–C4),
|
|
250
|
-
* successor information, and catalog metadata.
|
|
251
|
-
*
|
|
252
|
-
* Expected root: element with releasableObject, c0Release–c4Release, apiCatalogData.
|
|
253
|
-
*/
|
|
254
|
-
export declare function parseApiReleaseState(xml: string): ApiReleaseStateInfo;
|
|
255
|
-
export declare function assertApiReleaseStateConfirmed(info: ApiReleaseStateInfo, contract: string, expectedState: string, expectedVisibility?: {
|
|
256
|
-
useInSAPCloudPlatform: boolean;
|
|
257
|
-
useInKeyUserApps: boolean;
|
|
258
|
-
}): void;
|
|
259
|
-
/**
|
|
260
|
-
* Build the PUT body that sets an object's API release contract `state` (RELEASED / NOT_RELEASED).
|
|
261
|
-
*
|
|
262
|
-
* The apireleases GET (v10) returns a rich document, but the PUT to `…/apireleases/{uri}/{contract}`
|
|
263
|
-
* accepts only a NARROW, strictly-ordered subset — live reverse-engineered on a4h 758 + 816: the
|
|
264
|
-
* standalone contract block (`ars:contract="C1"`) carrying `status` + the successor scaffold, plus
|
|
265
|
-
* a sibling `apiCatalogData`/`ApiCatalogs` envelope. Response-only nodes (`atom:link`,
|
|
266
|
-
* `stateTransitions`, `transportObject`, `authValueObject`) are rejected with HTTP 400.
|
|
267
|
-
*
|
|
268
|
-
* Visibility on a RELEASED contract is taken VERBATIM from that contract's behaviour DEFAULT flags
|
|
269
|
-
* (`useInSAPCloudPlatformDefault` / `useInKeyUserAppsDefault`) — never broadened. We deliberately do
|
|
270
|
-
* NOT pre-judge whether visibility is even required: that varies by contract (C0/C1 demand ≥1
|
|
271
|
-
* visibility — ARS_STATE_HANDLER/119 — but e.g. C4 has entirely different rules, like "must be an AMDP
|
|
272
|
-
* method"). So if both defaults are false we send both false and let SAP return the contract-accurate
|
|
273
|
-
* error, rather than guessing it's a visibility problem. Crucially this still never INVENTS visibility
|
|
274
|
-
* the contract didn't warrant (the original over-exposure bug). For NOT_RELEASED visibility is untouched.
|
|
275
|
-
*/
|
|
276
|
-
export declare function buildApiReleasePutBody(getXml: string, contract: string, state: string): string;
|
|
277
247
|
/**
|
|
278
248
|
* Parse service binding metadata XML into a human-readable summary.
|
|
279
249
|
*
|
|
@@ -351,6 +321,7 @@ export declare function parseClassMetadata(xml: string): ClassMetadata;
|
|
|
351
321
|
* `dtdcSource`). The attribute shape is identical across formats. Optional fields omitted when empty.
|
|
352
322
|
*/
|
|
353
323
|
export declare function parseServerDrivenMetadata(xml: string, rootLocalName: string): ServerDrivenObjectMetadata;
|
|
324
|
+
export declare function toRecordArray(value: unknown): Array<Record<string, unknown>>;
|
|
354
325
|
/** Parse inactive objects response from /sap/bc/adt/activation/inactiveobjects.
|
|
355
326
|
* Supports three response shapes (all live-verified):
|
|
356
327
|
* - Rich `<ioc:object>` (vendor MIME on every supported release, includes user/transport/deleted metadata):
|
|
@@ -367,8 +338,7 @@ export declare function parseServerDrivenMetadata(xml: string, rootLocalName: st
|
|
|
367
338
|
* Detection: rich shape if any <entry><object> has a nested <ref>; otherwise flat.
|
|
368
339
|
*/
|
|
369
340
|
export declare function parseInactiveObjects(xml: string): InactiveObject[];
|
|
370
|
-
|
|
371
|
-
export declare function parseRevisionFeed(xml: string): RevisionListResult;
|
|
341
|
+
export { parseRevisionFeed } from './revision-feed.js';
|
|
372
342
|
/**
|
|
373
343
|
* Parse `/sap/bc/adt/oo/classes/{name}/objectstructure` XML into a `ClassStructure`.
|
|
374
344
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xml-parser.d.ts","sourceRoot":"","sources":["../../src/adt/xml-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,EACV,eAAe,EAEf,
|
|
1
|
+
{"version":3,"file":"xml-parser.d.ts","sourceRoot":"","sources":["../../src/adt/xml-parser.ts"],"names":[],"mappings":"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"}
|
package/dist/adt/xml-parser.js
CHANGED
|
@@ -76,8 +76,8 @@ const ARRAY_TAGS = new Set([
|
|
|
76
76
|
'orglvlinfo',
|
|
77
77
|
'badiImplementation',
|
|
78
78
|
]);
|
|
79
|
-
/**
|
|
80
|
-
const
|
|
79
|
+
/** Common ADT conventions; data-preview cells additionally retain their exact text. */
|
|
80
|
+
const parserOptions = {
|
|
81
81
|
ignoreAttributes: false,
|
|
82
82
|
attributeNamePrefix: '@_',
|
|
83
83
|
removeNSPrefix: true, // Strip adtcore:, asx:, etc.
|
|
@@ -93,13 +93,16 @@ const parser = new XMLParser({
|
|
|
93
93
|
setXmlVersion: () => { },
|
|
94
94
|
reset: () => { },
|
|
95
95
|
},
|
|
96
|
-
}
|
|
96
|
+
};
|
|
97
|
+
const parser = new XMLParser(parserOptions);
|
|
98
|
+
const whitespacePreservingParser = new XMLParser({ ...parserOptions, trimValues: false });
|
|
97
99
|
/**
|
|
98
100
|
* Parse raw XML string to a JS object. Every attribute and text value is entity-DECODED
|
|
99
101
|
* (`R&D` → `R&D`): never decode a parsed value again, and `escapeXmlAttr` it on the way back.
|
|
102
|
+
* Set preserveWhitespace to retain leading/trailing text whitespace, e.g. in quick-fix deltas.
|
|
100
103
|
*/
|
|
101
|
-
export function parseXml(xml) {
|
|
102
|
-
return parser.parse(xml);
|
|
104
|
+
export function parseXml(xml, preserveWhitespace = false) {
|
|
105
|
+
return (preserveWhitespace ? whitespacePreservingParser : parser).parse(xml);
|
|
103
106
|
}
|
|
104
107
|
/**
|
|
105
108
|
* Parse ADT search results XML.
|
|
@@ -114,12 +117,25 @@ export function parseSearchResults(xml) {
|
|
|
114
117
|
const refs = getNestedArray(parsed, 'objectReferences', 'objectReference');
|
|
115
118
|
return refs.map((ref) => ({
|
|
116
119
|
objectType: String(ref['@_type'] ?? ''),
|
|
117
|
-
objectName: String(ref['@_name'] ?? ''),
|
|
120
|
+
objectName: canonicalSearchName(String(ref['@_name'] ?? ''), String(ref['@_uri'] ?? '')),
|
|
118
121
|
description: String(ref['@_description'] ?? ''),
|
|
119
122
|
packageName: String(ref['@_packageName'] ?? ''),
|
|
120
123
|
uri: String(ref['@_uri'] ?? ''),
|
|
121
124
|
}));
|
|
122
125
|
}
|
|
126
|
+
/** Legacy quickSearch decorates names with localized type labels; require URI identity proof. */
|
|
127
|
+
function canonicalSearchName(displayName, uri) {
|
|
128
|
+
const name = /^([^\s()]+) \([^()]+\)$/.exec(displayName)?.[1];
|
|
129
|
+
if (!name)
|
|
130
|
+
return displayName;
|
|
131
|
+
const segment = /^\/sap\/bc\/adt\/(?:[^/?#]+\/)*([^/?#]+)$/i.exec(uri)?.[1];
|
|
132
|
+
try {
|
|
133
|
+
return segment && decodeURIComponent(segment).toUpperCase() === name.toUpperCase() ? name : displayName;
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
return displayName;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
123
139
|
/**
|
|
124
140
|
* Parse ADT package contents (nodestructure response).
|
|
125
141
|
*
|
|
@@ -257,7 +273,7 @@ function parseDataPreviewMetaObject(parsed) {
|
|
|
257
273
|
}
|
|
258
274
|
const executed = td.executedQueryString;
|
|
259
275
|
if (typeof executed === 'string' && executed.trim()) {
|
|
260
|
-
meta.executedQueryString = executed
|
|
276
|
+
meta.executedQueryString = executed;
|
|
261
277
|
}
|
|
262
278
|
return meta;
|
|
263
279
|
}
|
|
@@ -265,13 +281,13 @@ function parseDataPreviewMetaObject(parsed) {
|
|
|
265
281
|
export function parseDataPreviewResult(xml) {
|
|
266
282
|
if (!xml || xml.trim().length === 0)
|
|
267
283
|
return { columns: [], rows: [] };
|
|
268
|
-
const parsed =
|
|
284
|
+
const parsed = whitespacePreservingParser.parse(xml);
|
|
269
285
|
return { ...parseTableContentsObject(parsed), ...parseDataPreviewMetaObject(parsed) };
|
|
270
286
|
}
|
|
271
287
|
export function parseTableContents(xml) {
|
|
272
288
|
if (!xml || xml.trim().length === 0)
|
|
273
289
|
return { columns: [], rows: [] };
|
|
274
|
-
return parseTableContentsObject(
|
|
290
|
+
return parseTableContentsObject(whitespacePreservingParser.parse(xml));
|
|
275
291
|
}
|
|
276
292
|
/**
|
|
277
293
|
* Parse the scalar metrics from a datapreview response — `totalRows`, `queryExecutionTime`,
|
|
@@ -281,7 +297,7 @@ export function parseTableContents(xml) {
|
|
|
281
297
|
export function parseDataPreviewMeta(xml) {
|
|
282
298
|
if (!xml || xml.trim().length === 0)
|
|
283
299
|
return {};
|
|
284
|
-
return parseDataPreviewMetaObject(
|
|
300
|
+
return parseDataPreviewMetaObject(whitespacePreservingParser.parse(xml));
|
|
285
301
|
}
|
|
286
302
|
/**
|
|
287
303
|
* Parse installed components response.
|
|
@@ -780,139 +796,6 @@ export function parseTransactionMetadata(xml) {
|
|
|
780
796
|
package: String(pkgRef['@_name'] ?? ''),
|
|
781
797
|
};
|
|
782
798
|
}
|
|
783
|
-
/**
|
|
784
|
-
* Parse API release state XML from /sap/bc/adt/apireleases/{encoded-uri}.
|
|
785
|
-
*
|
|
786
|
-
* Returns structured release info with per-contract states (C0–C4),
|
|
787
|
-
* successor information, and catalog metadata.
|
|
788
|
-
*
|
|
789
|
-
* Expected root: element with releasableObject, c0Release–c4Release, apiCatalogData.
|
|
790
|
-
*/
|
|
791
|
-
export function parseApiReleaseState(xml) {
|
|
792
|
-
const parsed = parseXml(xml);
|
|
793
|
-
// The root element name varies — find the first non-declaration key
|
|
794
|
-
const rootKey = Object.keys(parsed).find((k) => !k.startsWith('?'));
|
|
795
|
-
const root = (rootKey ? parsed[rootKey] : parsed);
|
|
796
|
-
// releasableObject attrs
|
|
797
|
-
const relObj = (root.releasableObject ?? {});
|
|
798
|
-
// Parse C0–C4 contract releases
|
|
799
|
-
const contracts = [];
|
|
800
|
-
for (const key of ['c0Release', 'c1Release', 'c2Release', 'c3Release', 'c4Release']) {
|
|
801
|
-
const release = root[key];
|
|
802
|
-
if (!release)
|
|
803
|
-
continue;
|
|
804
|
-
const status = (release.status ?? {});
|
|
805
|
-
const successorsContainer = release.successors;
|
|
806
|
-
const successorArr = [];
|
|
807
|
-
if (successorsContainer) {
|
|
808
|
-
const succs = Array.isArray(successorsContainer.successor)
|
|
809
|
-
? successorsContainer.successor
|
|
810
|
-
: successorsContainer.successor
|
|
811
|
-
? [successorsContainer.successor]
|
|
812
|
-
: [];
|
|
813
|
-
for (const s of succs) {
|
|
814
|
-
successorArr.push({
|
|
815
|
-
uri: String(s['@_uri'] ?? ''),
|
|
816
|
-
type: String(s['@_type'] ?? ''),
|
|
817
|
-
name: String(s['@_name'] ?? ''),
|
|
818
|
-
});
|
|
819
|
-
}
|
|
820
|
-
}
|
|
821
|
-
contracts.push({
|
|
822
|
-
contract: String(release['@_contract'] ?? key.replace('Release', '').toUpperCase()),
|
|
823
|
-
state: String(status['@_state'] ?? ''),
|
|
824
|
-
stateDescription: String(status['@_stateDescription'] ?? ''),
|
|
825
|
-
useInKeyUserApps: String(release['@_useInKeyUserApps'] ?? 'false') === 'true',
|
|
826
|
-
useInSAPCloudPlatform: String(release['@_useInSAPCloudPlatform'] ?? 'false') === 'true',
|
|
827
|
-
successors: successorArr,
|
|
828
|
-
});
|
|
829
|
-
}
|
|
830
|
-
// apiCatalogData attrs
|
|
831
|
-
const catalog = (root.apiCatalogData ?? {});
|
|
832
|
-
return {
|
|
833
|
-
objectUri: String(relObj['@_uri'] ?? ''),
|
|
834
|
-
objectType: String(relObj['@_type'] ?? ''),
|
|
835
|
-
objectName: String(relObj['@_name'] ?? ''),
|
|
836
|
-
contracts,
|
|
837
|
-
isAnyContractReleased: String(catalog['@_isAnyContractReleased'] ?? 'false') === 'true',
|
|
838
|
-
isAnyAssignmentPossible: String(catalog['@_isAnyAssignmentPossible'] ?? 'false') === 'true',
|
|
839
|
-
};
|
|
840
|
-
}
|
|
841
|
-
export function assertApiReleaseStateConfirmed(info, contract, expectedState, expectedVisibility) {
|
|
842
|
-
const c = contract.toUpperCase();
|
|
843
|
-
const confirmedContract = info.contracts.find((release) => release.contract.toUpperCase() === c);
|
|
844
|
-
if (!confirmedContract) {
|
|
845
|
-
throw new Error(`API release contract ${c} read-back did not include the contract after PUT.`);
|
|
846
|
-
}
|
|
847
|
-
if (confirmedContract.state !== expectedState) {
|
|
848
|
-
throw new Error(`API release contract ${c} read-back state is ${confirmedContract.state || '(missing)'}, expected ${expectedState}.`);
|
|
849
|
-
}
|
|
850
|
-
if (expectedState === 'RELEASED' &&
|
|
851
|
-
expectedVisibility &&
|
|
852
|
-
(confirmedContract.useInSAPCloudPlatform !== expectedVisibility.useInSAPCloudPlatform ||
|
|
853
|
-
confirmedContract.useInKeyUserApps !== expectedVisibility.useInKeyUserApps)) {
|
|
854
|
-
throw new Error(`API release contract ${c} read-back visibility does not match the requested visibility.`);
|
|
855
|
-
}
|
|
856
|
-
}
|
|
857
|
-
/**
|
|
858
|
-
* Build the PUT body that sets an object's API release contract `state` (RELEASED / NOT_RELEASED).
|
|
859
|
-
*
|
|
860
|
-
* The apireleases GET (v10) returns a rich document, but the PUT to `…/apireleases/{uri}/{contract}`
|
|
861
|
-
* accepts only a NARROW, strictly-ordered subset — live reverse-engineered on a4h 758 + 816: the
|
|
862
|
-
* standalone contract block (`ars:contract="C1"`) carrying `status` + the successor scaffold, plus
|
|
863
|
-
* a sibling `apiCatalogData`/`ApiCatalogs` envelope. Response-only nodes (`atom:link`,
|
|
864
|
-
* `stateTransitions`, `transportObject`, `authValueObject`) are rejected with HTTP 400.
|
|
865
|
-
*
|
|
866
|
-
* Visibility on a RELEASED contract is taken VERBATIM from that contract's behaviour DEFAULT flags
|
|
867
|
-
* (`useInSAPCloudPlatformDefault` / `useInKeyUserAppsDefault`) — never broadened. We deliberately do
|
|
868
|
-
* NOT pre-judge whether visibility is even required: that varies by contract (C0/C1 demand ≥1
|
|
869
|
-
* visibility — ARS_STATE_HANDLER/119 — but e.g. C4 has entirely different rules, like "must be an AMDP
|
|
870
|
-
* method"). So if both defaults are false we send both false and let SAP return the contract-accurate
|
|
871
|
-
* error, rather than guessing it's a visibility problem. Crucially this still never INVENTS visibility
|
|
872
|
-
* the contract didn't warrant (the original over-exposure bug). For NOT_RELEASED visibility is untouched.
|
|
873
|
-
*/
|
|
874
|
-
export function buildApiReleasePutBody(getXml, contract, state) {
|
|
875
|
-
const c = contract.toUpperCase();
|
|
876
|
-
const targetState = state.toUpperCase();
|
|
877
|
-
if (targetState !== 'RELEASED' && targetState !== 'NOT_RELEASED') {
|
|
878
|
-
throw new Error(`API release state must be RELEASED or NOT_RELEASED, got ${state}.`);
|
|
879
|
-
}
|
|
880
|
-
const tag = `c${c.slice(1)}Release`; // 'C1' -> 'c1Release'
|
|
881
|
-
// The behaviour block lists the *Default visibility flags (self-closing element with "Default" attrs).
|
|
882
|
-
const behaviour = new RegExp(`<ars:${tag}\\b([^>]*Default[^>]*)/>`).exec(getXml)?.[1] ?? '';
|
|
883
|
-
const cloudDefault = /useInSAPCloudPlatformDefault="true"/.test(behaviour);
|
|
884
|
-
const keyUserDefault = /useInKeyUserAppsDefault="true"/.test(behaviour);
|
|
885
|
-
// The standalone contract block's opening tag (has ars:contract="<C>").
|
|
886
|
-
const openTagMatch = new RegExp(`<ars:${tag}\\b[^>]*\\bars:contract="${c}"[^>]*>`).exec(getXml);
|
|
887
|
-
if (!openTagMatch) {
|
|
888
|
-
// Only the contracts the object type supports appear as settable `ars:contract="Cn"` blocks
|
|
889
|
-
// (e.g. SRVD supports only C0, classic VIEW only C3) — list them so the caller can retry.
|
|
890
|
-
const supported = [...new Set([...getXml.matchAll(/ars:contract="(C\d)"/g)].map((m) => m[1]))];
|
|
891
|
-
const hint = supported.length ? ` This object supports: ${supported.join(', ')}.` : '';
|
|
892
|
-
throw new Error(`API release contract ${c} is not available for this object.${hint}`);
|
|
893
|
-
}
|
|
894
|
-
let openTag = openTagMatch[0];
|
|
895
|
-
if (targetState === 'RELEASED') {
|
|
896
|
-
// Set both visibility flags from the contract's own defaults — both-false stays both-false (no
|
|
897
|
-
// invented exposure); SAP decides whether that's acceptable for this contract.
|
|
898
|
-
const setAttr = (tagText, attr, value) => {
|
|
899
|
-
const rendered = `${attr}="${value}"`;
|
|
900
|
-
return new RegExp(`\\b${attr}="[^"]*"`).test(tagText)
|
|
901
|
-
? tagText.replace(new RegExp(`\\b${attr}="[^"]*"`), rendered)
|
|
902
|
-
: tagText.replace(/>$/, ` ${rendered}>`);
|
|
903
|
-
};
|
|
904
|
-
openTag = setAttr(openTag, 'ars:useInSAPCloudPlatform', cloudDefault);
|
|
905
|
-
openTag = setAttr(openTag, 'ars:useInKeyUserApps', keyUserDefault);
|
|
906
|
-
}
|
|
907
|
-
const contractBlock = `${openTag}<ars:status ars:state="${targetState}"/>` +
|
|
908
|
-
'<ars:useConceptAsSuccessor>false</ars:useConceptAsSuccessor><ars:successors/><ars:successorConceptName/>' +
|
|
909
|
-
`</ars:${tag}>`;
|
|
910
|
-
return ('<?xml version="1.0" encoding="utf-8"?>' +
|
|
911
|
-
'<ars:apiRelease xmlns:ars="http://www.sap.com/adt/ars" xmlns:adtcore="http://www.sap.com/adt/core">' +
|
|
912
|
-
contractBlock +
|
|
913
|
-
'<ars:apiCatalogData ars:isAnyAssignmentPossible="true" ars:isAnyContractReleased="true"><ars:ApiCatalogs/></ars:apiCatalogData>' +
|
|
914
|
-
'</ars:apiRelease>');
|
|
915
|
-
}
|
|
916
799
|
/**
|
|
917
800
|
* Parse service binding metadata XML into a human-readable summary.
|
|
918
801
|
*
|
|
@@ -1229,7 +1112,7 @@ function getDeepArray(obj, path) {
|
|
|
1229
1112
|
}
|
|
1230
1113
|
return [];
|
|
1231
1114
|
}
|
|
1232
|
-
function toRecordArray(value) {
|
|
1115
|
+
export function toRecordArray(value) {
|
|
1233
1116
|
if (Array.isArray(value)) {
|
|
1234
1117
|
return value.filter((item) => Boolean(item) && typeof item === 'object');
|
|
1235
1118
|
}
|
|
@@ -1311,97 +1194,7 @@ export function parseInactiveObjects(xml) {
|
|
|
1311
1194
|
}
|
|
1312
1195
|
return flatResults;
|
|
1313
1196
|
}
|
|
1314
|
-
|
|
1315
|
-
'http://www.sap.com/adt/relations/transport/request', // live shape (a4h 758)
|
|
1316
|
-
'http://www.sap.com/adt/relations/transports', // legacy — kept for older releases
|
|
1317
|
-
]);
|
|
1318
|
-
/** CTS request/task id: 3-char system + K/T/… + 6 alphanumerics, e.g. A4HK906291. */
|
|
1319
|
-
const CTS_ID_RE = /^[A-Z0-9]{3}[A-Z][A-Z0-9]{6}$/;
|
|
1320
|
-
/** Decode a URI component, returning the raw value rather than throwing on a malformed `%` escape. */
|
|
1321
|
-
function safeDecode(value) {
|
|
1322
|
-
try {
|
|
1323
|
-
return decodeURIComponent(value);
|
|
1324
|
-
}
|
|
1325
|
-
catch {
|
|
1326
|
-
return value;
|
|
1327
|
-
}
|
|
1328
|
-
}
|
|
1329
|
-
/**
|
|
1330
|
-
* CTS request id of a revision, from its transport link.
|
|
1331
|
-
*
|
|
1332
|
-
* `adtcore:name` carries the id; `@_title` is the transport DESCRIPTION (only used as a last
|
|
1333
|
-
* resort, for releases that put the id there). The href tail is accepted ONLY when it looks
|
|
1334
|
-
* like a CTS id — ADT also emits hrefs ending in `reference?obj_name=…`, and returning
|
|
1335
|
-
* `"reference"` for every revision would silently break attribution everywhere.
|
|
1336
|
-
* Evidence: docs/plans/2026-08-03-transport-diff.md §1.
|
|
1337
|
-
*/
|
|
1338
|
-
function revisionTransportId(links) {
|
|
1339
|
-
for (const link of links) {
|
|
1340
|
-
if (!TRANSPORT_RELS.has(String(link['@_rel'] ?? '')))
|
|
1341
|
-
continue;
|
|
1342
|
-
const name = String(link['@_name'] ?? '').trim();
|
|
1343
|
-
if (name)
|
|
1344
|
-
return name;
|
|
1345
|
-
const tail = safeDecode(String(link['@_href'] ?? '')
|
|
1346
|
-
.split('/')
|
|
1347
|
-
.pop()
|
|
1348
|
-
?.split('?')[0] ?? '')
|
|
1349
|
-
.trim()
|
|
1350
|
-
.toUpperCase();
|
|
1351
|
-
if (CTS_ID_RE.test(tail))
|
|
1352
|
-
return tail;
|
|
1353
|
-
// `@_title`/`@_version` are last resorts for older releases that put the id there; both
|
|
1354
|
-
// go through the shape guard, so a description can never be mistaken for a transport.
|
|
1355
|
-
for (const attr of ['@_title', '@_version']) {
|
|
1356
|
-
const value = String(link[attr] ?? '')
|
|
1357
|
-
.trim()
|
|
1358
|
-
.toUpperCase();
|
|
1359
|
-
if (CTS_ID_RE.test(value))
|
|
1360
|
-
return value;
|
|
1361
|
-
}
|
|
1362
|
-
}
|
|
1363
|
-
return '';
|
|
1364
|
-
}
|
|
1365
|
-
/** Parse source revision history feed from /source/main/versions */
|
|
1366
|
-
export function parseRevisionFeed(xml) {
|
|
1367
|
-
const empty = {
|
|
1368
|
-
object: { name: '', type: '' },
|
|
1369
|
-
revisions: [],
|
|
1370
|
-
};
|
|
1371
|
-
if (!xml.trim())
|
|
1372
|
-
return empty;
|
|
1373
|
-
try {
|
|
1374
|
-
const parsed = parseXml(xml);
|
|
1375
|
-
const feed = (parsed.feed ?? {});
|
|
1376
|
-
const title = String(feed.title ?? '');
|
|
1377
|
-
const match = title.match(/^Version List of (\S+) \(([A-Z]+)\)/);
|
|
1378
|
-
const object = {
|
|
1379
|
-
name: String(match?.[1] ?? ''),
|
|
1380
|
-
type: String(match?.[2] ?? ''),
|
|
1381
|
-
};
|
|
1382
|
-
const revisions = [];
|
|
1383
|
-
const entries = findDeepNodes(parsed, 'entry');
|
|
1384
|
-
for (const entry of entries) {
|
|
1385
|
-
const authorNode = toRecordArray(entry.author)[0] ?? {};
|
|
1386
|
-
const contentNode = toRecordArray(entry.content)[0] ?? {};
|
|
1387
|
-
const links = toRecordArray(entry.link);
|
|
1388
|
-
const transport = revisionTransportId(links);
|
|
1389
|
-
const versionTitle = String(entry.title ?? '');
|
|
1390
|
-
revisions.push({
|
|
1391
|
-
id: String(entry.id ?? ''),
|
|
1392
|
-
author: String(authorNode.name ?? ''),
|
|
1393
|
-
timestamp: String(entry.updated ?? ''),
|
|
1394
|
-
...(versionTitle ? { versionTitle } : {}),
|
|
1395
|
-
...(transport ? { transport } : {}),
|
|
1396
|
-
uri: String(contentNode['@_src'] ?? ''),
|
|
1397
|
-
});
|
|
1398
|
-
}
|
|
1399
|
-
return { object, revisions };
|
|
1400
|
-
}
|
|
1401
|
-
catch {
|
|
1402
|
-
return empty;
|
|
1403
|
-
}
|
|
1404
|
-
}
|
|
1197
|
+
export { parseRevisionFeed } from './revision-feed.js';
|
|
1405
1198
|
// ─── parseClassStructure (issue #303) ─────────────────────────────────────
|
|
1406
1199
|
/**
|
|
1407
1200
|
* Parse a `#start=L,C;end=L,C` fragment from an `<atom:link>` href into a `LineRange`.
|