arc-1 1.2.0 → 1.4.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 +8 -6
- package/dist/adt/atc-batch.d.ts +71 -0
- package/dist/adt/atc-batch.d.ts.map +1 -0
- package/dist/adt/atc-batch.js +182 -0
- package/dist/adt/atc-batch.js.map +1 -0
- package/dist/adt/atc.d.ts +34 -0
- package/dist/adt/atc.d.ts.map +1 -1
- package/dist/adt/atc.js +58 -12
- package/dist/adt/atc.js.map +1 -1
- package/dist/adt/aunit.d.ts.map +1 -1
- package/dist/adt/aunit.js +50 -7
- package/dist/adt/aunit.js.map +1 -1
- package/dist/adt/bounded-response.d.ts +4 -1
- package/dist/adt/bounded-response.d.ts.map +1 -1
- package/dist/adt/bounded-response.js +33 -7
- package/dist/adt/bounded-response.js.map +1 -1
- package/dist/adt/ci-quality-xml.d.ts +44 -0
- package/dist/adt/ci-quality-xml.d.ts.map +1 -0
- package/dist/adt/ci-quality-xml.js +98 -0
- package/dist/adt/ci-quality-xml.js.map +1 -0
- package/dist/adt/ci-quality.d.ts +64 -0
- package/dist/adt/ci-quality.d.ts.map +1 -0
- package/dist/adt/ci-quality.js +132 -0
- package/dist/adt/ci-quality.js.map +1 -0
- package/dist/adt/client.d.ts +20 -16
- package/dist/adt/client.d.ts.map +1 -1
- package/dist/adt/client.js +35 -70
- package/dist/adt/client.js.map +1 -1
- package/dist/adt/create-request.d.ts +4 -0
- package/dist/adt/create-request.d.ts.map +1 -0
- package/dist/adt/create-request.js +16 -0
- package/dist/adt/create-request.js.map +1 -0
- package/dist/adt/crud.d.ts.map +1 -1
- package/dist/adt/crud.js +7 -3
- package/dist/adt/crud.js.map +1 -1
- package/dist/adt/data-source-policy.d.ts +6 -15
- package/dist/adt/data-source-policy.d.ts.map +1 -1
- package/dist/adt/data-source-policy.js +18 -11
- package/dist/adt/data-source-policy.js.map +1 -1
- package/dist/adt/ddic-xml.d.ts +78 -4
- package/dist/adt/ddic-xml.d.ts.map +1 -1
- package/dist/adt/ddic-xml.js +647 -54
- package/dist/adt/ddic-xml.js.map +1 -1
- package/dist/adt/devtools.d.ts +1 -0
- package/dist/adt/devtools.d.ts.map +1 -1
- package/dist/adt/devtools.js +31 -8
- package/dist/adt/devtools.js.map +1 -1
- package/dist/adt/diagnostics.d.ts +11 -9
- package/dist/adt/diagnostics.d.ts.map +1 -1
- package/dist/adt/diagnostics.js +84 -10
- package/dist/adt/diagnostics.js.map +1 -1
- package/dist/adt/errors.d.ts +2 -0
- package/dist/adt/errors.d.ts.map +1 -1
- package/dist/adt/errors.js +3 -1
- package/dist/adt/errors.js.map +1 -1
- package/dist/adt/features.d.ts.map +1 -1
- package/dist/adt/features.js +2 -0
- package/dist/adt/features.js.map +1 -1
- package/dist/adt/flp.d.ts.map +1 -1
- package/dist/adt/flp.js +5 -4
- package/dist/adt/flp.js.map +1 -1
- package/dist/adt/http-deadline.d.ts +7 -0
- package/dist/adt/http-deadline.d.ts.map +1 -1
- package/dist/adt/http-deadline.js +2 -2
- package/dist/adt/http-deadline.js.map +1 -1
- package/dist/adt/http.d.ts +11 -5
- package/dist/adt/http.d.ts.map +1 -1
- package/dist/adt/http.js +136 -82
- package/dist/adt/http.js.map +1 -1
- package/dist/adt/internal-data-operations.d.ts +9 -4
- package/dist/adt/internal-data-operations.d.ts.map +1 -1
- package/dist/adt/internal-data-operations.js +11 -7
- package/dist/adt/internal-data-operations.js.map +1 -1
- package/dist/adt/package-contents.d.ts +12 -0
- package/dist/adt/package-contents.d.ts.map +1 -0
- package/dist/adt/package-contents.js +19 -0
- package/dist/adt/package-contents.js.map +1 -0
- package/dist/adt/publish-state.d.ts +4 -0
- package/dist/adt/publish-state.d.ts.map +1 -0
- package/dist/adt/publish-state.js +61 -0
- package/dist/adt/publish-state.js.map +1 -0
- package/dist/adt/relation-objects.d.ts +385 -0
- package/dist/adt/relation-objects.d.ts.map +1 -0
- package/dist/adt/relation-objects.js +262 -0
- package/dist/adt/relation-objects.js.map +1 -0
- package/dist/adt/repository-relations.d.ts +41 -0
- package/dist/adt/repository-relations.d.ts.map +1 -0
- package/dist/adt/repository-relations.js +246 -0
- package/dist/adt/repository-relations.js.map +1 -0
- package/dist/adt/request-attempt-budget.d.ts +26 -0
- package/dist/adt/request-attempt-budget.d.ts.map +1 -0
- package/dist/adt/request-attempt-budget.js +63 -0
- package/dist/adt/request-attempt-budget.js.map +1 -0
- package/dist/adt/result-limits.d.ts +3 -0
- package/dist/adt/result-limits.d.ts.map +1 -0
- package/dist/adt/result-limits.js +7 -0
- package/dist/adt/result-limits.js.map +1 -0
- package/dist/adt/server-driven.d.ts +21 -5
- package/dist/adt/server-driven.d.ts.map +1 -1
- package/dist/adt/server-driven.js +41 -26
- package/dist/adt/server-driven.js.map +1 -1
- package/dist/adt/table-query.d.ts +2 -0
- package/dist/adt/table-query.d.ts.map +1 -1
- package/dist/adt/table-query.js +61 -0
- package/dist/adt/table-query.js.map +1 -1
- package/dist/adt/text-elements.d.ts +48 -0
- package/dist/adt/text-elements.d.ts.map +1 -0
- package/dist/adt/text-elements.js +116 -0
- package/dist/adt/text-elements.js.map +1 -0
- package/dist/adt/transport.d.ts +1 -2
- package/dist/adt/transport.d.ts.map +1 -1
- package/dist/adt/transport.js +17 -12
- package/dist/adt/transport.js.map +1 -1
- package/dist/adt/types.d.ts +18 -0
- package/dist/adt/types.d.ts.map +1 -1
- package/dist/adt/uiad.d.ts +19 -0
- package/dist/adt/uiad.d.ts.map +1 -0
- package/dist/adt/uiad.js +173 -0
- package/dist/adt/uiad.js.map +1 -0
- package/dist/adt/xml-parser.d.ts +2 -0
- package/dist/adt/xml-parser.d.ts.map +1 -1
- package/dist/adt/xml-parser.js +20 -1
- package/dist/adt/xml-parser.js.map +1 -1
- package/dist/authz/policy.d.ts.map +1 -1
- package/dist/authz/policy.js +4 -1
- package/dist/authz/policy.js.map +1 -1
- package/dist/cache/cache.d.ts +3 -23
- package/dist/cache/cache.d.ts.map +1 -1
- package/dist/cache/cache.js +2 -3
- package/dist/cache/cache.js.map +1 -1
- package/dist/cache/caching-layer.d.ts +6 -25
- package/dist/cache/caching-layer.d.ts.map +1 -1
- package/dist/cache/caching-layer.js +3 -45
- package/dist/cache/caching-layer.js.map +1 -1
- package/dist/cache/memory.d.ts +1 -4
- package/dist/cache/memory.d.ts.map +1 -1
- package/dist/cache/memory.js +1 -10
- package/dist/cache/memory.js.map +1 -1
- package/dist/cache/sqlite.d.ts +1 -3
- package/dist/cache/sqlite.d.ts.map +1 -1
- package/dist/cache/sqlite.js +2 -17
- package/dist/cache/sqlite.js.map +1 -1
- package/dist/cli-checks.d.ts +3 -0
- package/dist/cli-checks.d.ts.map +1 -1
- package/dist/cli-checks.js +16 -0
- package/dist/cli-checks.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +5 -2
- package/dist/cli.js.map +1 -1
- package/dist/context/compressor.d.ts +2 -3
- package/dist/context/compressor.d.ts.map +1 -1
- package/dist/context/compressor.js +30 -49
- package/dist/context/compressor.js.map +1 -1
- package/dist/context/contract.d.ts +5 -0
- package/dist/context/contract.d.ts.map +1 -1
- package/dist/context/contract.js +2 -2
- package/dist/context/contract.js.map +1 -1
- package/dist/context/deps.d.ts +11 -0
- package/dist/context/deps.d.ts.map +1 -1
- package/dist/context/deps.js +2 -2
- package/dist/context/deps.js.map +1 -1
- package/dist/context/parse-cache.d.ts +23 -0
- package/dist/context/parse-cache.d.ts.map +1 -0
- package/dist/context/parse-cache.js +71 -0
- package/dist/context/parse-cache.js.map +1 -0
- package/dist/context/relation-walk.d.ts +48 -0
- package/dist/context/relation-walk.d.ts.map +1 -0
- package/dist/context/relation-walk.js +137 -0
- package/dist/context/relation-walk.js.map +1 -0
- package/dist/context/types.d.ts +4 -4
- package/dist/context/types.d.ts.map +1 -1
- package/dist/context/unit-surgery.d.ts +1 -1
- package/dist/context/unit-surgery.d.ts.map +1 -1
- package/dist/context/unit-surgery.js +3 -2
- package/dist/context/unit-surgery.js.map +1 -1
- package/dist/handlers/activate.d.ts +1 -1
- package/dist/handlers/activate.d.ts.map +1 -1
- package/dist/handlers/activate.js +37 -56
- package/dist/handlers/activate.js.map +1 -1
- package/dist/handlers/activation-results.d.ts +3 -0
- package/dist/handlers/activation-results.d.ts.map +1 -0
- package/dist/handlers/activation-results.js +8 -0
- package/dist/handlers/activation-results.js.map +1 -0
- package/dist/handlers/context.d.ts.map +1 -1
- package/dist/handlers/context.js +8 -32
- package/dist/handlers/context.js.map +1 -1
- package/dist/handlers/data-element-fields.d.ts +26 -0
- package/dist/handlers/data-element-fields.d.ts.map +1 -0
- package/dist/handlers/data-element-fields.js +27 -0
- package/dist/handlers/data-element-fields.js.map +1 -0
- package/dist/handlers/diagnose-ci.d.ts +9 -0
- package/dist/handlers/diagnose-ci.d.ts.map +1 -0
- package/dist/handlers/diagnose-ci.js +120 -0
- package/dist/handlers/diagnose-ci.js.map +1 -0
- package/dist/handlers/diagnose-fields.d.ts +51 -0
- package/dist/handlers/diagnose-fields.d.ts.map +1 -0
- package/dist/handlers/diagnose-fields.js +48 -0
- package/dist/handlers/diagnose-fields.js.map +1 -0
- package/dist/handlers/diagnose.d.ts +4 -1
- package/dist/handlers/diagnose.d.ts.map +1 -1
- package/dist/handlers/diagnose.js +31 -7
- package/dist/handlers/diagnose.js.map +1 -1
- package/dist/handlers/dispatch.d.ts.map +1 -1
- package/dist/handlers/dispatch.js +65 -9
- package/dist/handlers/dispatch.js.map +1 -1
- package/dist/handlers/feature-cache.d.ts +4 -3
- package/dist/handlers/feature-cache.d.ts.map +1 -1
- package/dist/handlers/feature-cache.js +4 -3
- package/dist/handlers/feature-cache.js.map +1 -1
- package/dist/handlers/hyperfocused.js +1 -1
- package/dist/handlers/lint.d.ts.map +1 -1
- package/dist/handlers/lint.js +12 -3
- package/dist/handlers/lint.js.map +1 -1
- package/dist/handlers/live-relations.d.ts +5 -0
- package/dist/handlers/live-relations.d.ts.map +1 -0
- package/dist/handlers/live-relations.js +89 -0
- package/dist/handlers/live-relations.js.map +1 -0
- package/dist/handlers/manage.d.ts.map +1 -1
- package/dist/handlers/manage.js +7 -4
- package/dist/handlers/manage.js.map +1 -1
- package/dist/handlers/navigate.d.ts +1 -1
- package/dist/handlers/navigate.d.ts.map +1 -1
- package/dist/handlers/navigate.js +11 -5
- package/dist/handlers/navigate.js.map +1 -1
- package/dist/handlers/object-types.d.ts +2 -0
- package/dist/handlers/object-types.d.ts.map +1 -1
- package/dist/handlers/object-types.js +41 -6
- package/dist/handlers/object-types.js.map +1 -1
- package/dist/handlers/publish-failure.d.ts +7 -0
- package/dist/handlers/publish-failure.d.ts.map +1 -0
- package/dist/handlers/publish-failure.js +42 -0
- package/dist/handlers/publish-failure.js.map +1 -0
- package/dist/handlers/query-errors.d.ts +9 -1
- package/dist/handlers/query-errors.d.ts.map +1 -1
- package/dist/handlers/query-errors.js +40 -28
- package/dist/handlers/query-errors.js.map +1 -1
- package/dist/handlers/query.d.ts +1 -1
- package/dist/handlers/query.d.ts.map +1 -1
- package/dist/handlers/query.js +2 -2
- package/dist/handlers/query.js.map +1 -1
- package/dist/handlers/read.d.ts +1 -1
- package/dist/handlers/read.d.ts.map +1 -1
- package/dist/handlers/read.js +51 -19
- package/dist/handlers/read.js.map +1 -1
- package/dist/handlers/relation-input.d.ts +42 -0
- package/dist/handlers/relation-input.d.ts.map +1 -0
- package/dist/handlers/relation-input.js +22 -0
- package/dist/handlers/relation-input.js.map +1 -0
- package/dist/handlers/relation-tool.d.ts +5 -0
- package/dist/handlers/relation-tool.d.ts.map +1 -0
- package/dist/handlers/relation-tool.js +36 -0
- package/dist/handlers/relation-tool.js.map +1 -0
- package/dist/handlers/schemas.d.ts +125 -62
- package/dist/handlers/schemas.d.ts.map +1 -1
- package/dist/handlers/schemas.js +150 -13
- package/dist/handlers/schemas.js.map +1 -1
- package/dist/handlers/search.d.ts +1 -1
- package/dist/handlers/search.d.ts.map +1 -1
- package/dist/handlers/search.js +18 -5
- package/dist/handlers/search.js.map +1 -1
- package/dist/handlers/tool-descriptions.d.ts.map +1 -1
- package/dist/handlers/tool-descriptions.js +14 -15
- package/dist/handlers/tool-descriptions.js.map +1 -1
- package/dist/handlers/tool-registry.d.ts +5 -4
- package/dist/handlers/tool-registry.d.ts.map +1 -1
- package/dist/handlers/tool-registry.js +4 -0
- package/dist/handlers/tool-registry.js.map +1 -1
- package/dist/handlers/tools.d.ts +2 -3
- package/dist/handlers/tools.d.ts.map +1 -1
- package/dist/handlers/tools.js +130 -75
- package/dist/handlers/tools.js.map +1 -1
- package/dist/handlers/where-used.d.ts.map +1 -1
- package/dist/handlers/where-used.js +5 -0
- package/dist/handlers/where-used.js.map +1 -1
- package/dist/handlers/write/batch-results.d.ts +28 -0
- package/dist/handlers/write/batch-results.d.ts.map +1 -0
- package/dist/handlers/write/batch-results.js +106 -0
- package/dist/handlers/write/batch-results.js.map +1 -0
- package/dist/handlers/write/create-transport.d.ts +7 -0
- package/dist/handlers/write/create-transport.d.ts.map +1 -0
- package/dist/handlers/write/create-transport.js +38 -0
- package/dist/handlers/write/create-transport.js.map +1 -0
- package/dist/handlers/write/create.d.ts.map +1 -1
- package/dist/handlers/write/create.js +276 -413
- package/dist/handlers/write/create.js.map +1 -1
- package/dist/handlers/write/uiad.d.ts +8 -0
- package/dist/handlers/write/uiad.d.ts.map +1 -0
- package/dist/handlers/write/uiad.js +115 -0
- package/dist/handlers/write/uiad.js.map +1 -0
- package/dist/handlers/write/unit-surgery.d.ts.map +1 -1
- package/dist/handlers/write/unit-surgery.js +46 -28
- package/dist/handlers/write/unit-surgery.js.map +1 -1
- package/dist/handlers/write/update-delete.d.ts +6 -6
- package/dist/handlers/write/update-delete.d.ts.map +1 -1
- package/dist/handlers/write/update-delete.js +46 -15
- package/dist/handlers/write/update-delete.js.map +1 -1
- package/dist/handlers/write-helpers.d.ts +1 -7
- package/dist/handlers/write-helpers.d.ts.map +1 -1
- package/dist/handlers/write-helpers.js +105 -86
- package/dist/handlers/write-helpers.js.map +1 -1
- package/dist/handlers/write.d.ts.map +1 -1
- package/dist/handlers/write.js +7 -6
- package/dist/handlers/write.js.map +1 -1
- package/dist/lint/config-builder.d.ts +10 -1
- package/dist/lint/config-builder.d.ts.map +1 -1
- package/dist/lint/config-builder.js +4 -0
- package/dist/lint/config-builder.js.map +1 -1
- package/dist/lint/lint.d.ts +3 -1
- package/dist/lint/lint.d.ts.map +1 -1
- package/dist/lint/lint.js +2 -1
- package/dist/lint/lint.js.map +1 -1
- package/dist/public/testing.d.ts +4 -0
- package/dist/public/testing.d.ts.map +1 -1
- package/dist/public/testing.js +6 -0
- package/dist/public/testing.js.map +1 -1
- package/dist/public/types.d.ts +12 -2
- package/dist/public/types.d.ts.map +1 -1
- package/dist/public/ui/app.js +0 -2
- package/dist/server/audit.d.ts +1 -1
- package/dist/server/audit.d.ts.map +1 -1
- package/dist/server/config.d.ts.map +1 -1
- package/dist/server/config.js +6 -2
- package/dist/server/config.js.map +1 -1
- package/dist/server/http.d.ts +1 -1
- package/dist/server/http.d.ts.map +1 -1
- package/dist/server/http.js +8 -5
- package/dist/server/http.js.map +1 -1
- package/dist/server/logger.d.ts.map +1 -1
- package/dist/server/logger.js +4 -1
- package/dist/server/logger.js.map +1 -1
- package/dist/server/multi-target-tools.d.ts.map +1 -1
- package/dist/server/multi-target-tools.js +3 -1
- package/dist/server/multi-target-tools.js.map +1 -1
- package/dist/server/oauth-redirect-policy.d.ts +13 -0
- package/dist/server/oauth-redirect-policy.d.ts.map +1 -0
- package/dist/server/oauth-redirect-policy.js +21 -0
- package/dist/server/oauth-redirect-policy.js.map +1 -0
- package/dist/server/safe-http-client.d.ts +2 -2
- package/dist/server/safe-http-client.d.ts.map +1 -1
- package/dist/server/safe-http-client.js +24 -11
- package/dist/server/safe-http-client.js.map +1 -1
- package/dist/server/server-instructions.d.ts.map +1 -1
- package/dist/server/server-instructions.js +11 -5
- package/dist/server/server-instructions.js.map +1 -1
- package/dist/server/server.d.ts +1 -1
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +24 -48
- package/dist/server/server.js.map +1 -1
- package/dist/server/shutdown.d.ts +6 -0
- package/dist/server/shutdown.d.ts.map +1 -0
- package/dist/server/shutdown.js +52 -0
- package/dist/server/shutdown.js.map +1 -0
- package/dist/server/sinks/btp-auditlog.d.ts +10 -8
- package/dist/server/sinks/btp-auditlog.d.ts.map +1 -1
- package/dist/server/sinks/btp-auditlog.js +76 -68
- package/dist/server/sinks/btp-auditlog.js.map +1 -1
- package/dist/server/sinks/file.d.ts +1 -1
- package/dist/server/sinks/file.d.ts.map +1 -1
- package/dist/server/sinks/file.js +12 -21
- package/dist/server/sinks/file.js.map +1 -1
- package/dist/server/types.d.ts +5 -4
- package/dist/server/types.d.ts.map +1 -1
- package/dist/server/types.js.map +1 -1
- package/dist/server/ui.js +0 -2
- package/dist/server/ui.js.map +1 -1
- package/package.json +19 -17
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { fetch, getGlobalDispatcher } from 'undici';
|
|
2
|
+
import { AdtNetworkError } from './errors.js';
|
|
3
|
+
/** Typed, non-retryable exhaustion; never carries SAP response data. */
|
|
4
|
+
export class AdtRequestBudgetError extends AdtNetworkError {
|
|
5
|
+
limit;
|
|
6
|
+
constructor(limit) {
|
|
7
|
+
super(`SAP HTTP attempt limit (${limit}) reached. Narrow the requested analysis.`);
|
|
8
|
+
this.limit = limit;
|
|
9
|
+
this.name = 'AdtRequestBudgetError';
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
/** Analysis admission/work allowance, not a failure to reach SAP. */
|
|
13
|
+
export class AdtAnalysisDeadlineError extends AdtNetworkError {
|
|
14
|
+
constructor() {
|
|
15
|
+
super('The live analysis time limit was reached. Narrow the analysis or wait for other analyses to finish.');
|
|
16
|
+
this.name = 'AdtAnalysisDeadlineError';
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
/** A time boundary may yield partial evidence; cancellation, auth and send exhaustion may not masquerade as it. */
|
|
20
|
+
export function isDeadlineFailure(error, options) {
|
|
21
|
+
return (error instanceof AdtNetworkError &&
|
|
22
|
+
!(error instanceof AdtRequestBudgetError) &&
|
|
23
|
+
options.deadline !== undefined &&
|
|
24
|
+
Date.now() >= options.deadline &&
|
|
25
|
+
!options.signal?.aborted &&
|
|
26
|
+
!options.attemptBudget?.authorizationFailureObserved);
|
|
27
|
+
}
|
|
28
|
+
/** Request-local allowance, charged immediately before each direct/proxy SAP send. */
|
|
29
|
+
export class RequestAttemptBudget {
|
|
30
|
+
limit;
|
|
31
|
+
used = 0;
|
|
32
|
+
/** Unresolved auth evidence; only a validated native expansion may clear it after retry recovery. */
|
|
33
|
+
authorizationFailureObserved = false;
|
|
34
|
+
constructor(limit) {
|
|
35
|
+
this.limit = limit;
|
|
36
|
+
if (!Number.isSafeInteger(limit) || limit < 1)
|
|
37
|
+
throw new RangeError('Request limit must be a positive integer.');
|
|
38
|
+
}
|
|
39
|
+
consume() {
|
|
40
|
+
if (this.used >= this.limit)
|
|
41
|
+
throw new AdtRequestBudgetError(this.limit);
|
|
42
|
+
this.used++;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/** Count below Fetch's internal 421 replay; preserve the existing dispatcher/TLS configuration. */
|
|
46
|
+
export async function fetchWithAttemptBudget(url, init, budget) {
|
|
47
|
+
if (!budget)
|
|
48
|
+
return fetch(url, init);
|
|
49
|
+
const dispatcher = (init.dispatcher ?? getGlobalDispatcher()).compose((dispatch) => (options, handler) => {
|
|
50
|
+
budget.consume();
|
|
51
|
+
return dispatch(options, handler);
|
|
52
|
+
});
|
|
53
|
+
try {
|
|
54
|
+
return await fetch(url, { ...init, dispatcher });
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
// Fetch wraps dispatcher errors. Keep exhaustion typed and non-retryable for partial-result policy.
|
|
58
|
+
if (error instanceof TypeError && error.cause instanceof AdtRequestBudgetError)
|
|
59
|
+
throw error.cause;
|
|
60
|
+
throw error;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=request-attempt-budget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-attempt-budget.js","sourceRoot":"","sources":["../../src/adt/request-attempt-budget.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAoB,MAAM,QAAQ,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,wEAAwE;AACxE,MAAM,OAAO,qBAAsB,SAAQ,eAAe;IACnC,KAAK;IAA1B,YAAqB,KAAa;QAChC,KAAK,CAAC,2BAA2B,KAAK,2CAA2C,CAAC,CAAC;qBADhE,KAAK;QAExB,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAED,qEAAqE;AACrE,MAAM,OAAO,wBAAyB,SAAQ,eAAe;IAC3D;QACE,KAAK,CAAC,qGAAqG,CAAC,CAAC;QAC7G,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AAED,mHAAmH;AACnH,MAAM,UAAU,iBAAiB,CAAC,KAAc,EAAE,OAA0B;IAC1E,OAAO,CACL,KAAK,YAAY,eAAe;QAChC,CAAC,CAAC,KAAK,YAAY,qBAAqB,CAAC;QACzC,OAAO,CAAC,QAAQ,KAAK,SAAS;QAC9B,IAAI,CAAC,GAAG,EAAE,IAAI,OAAO,CAAC,QAAQ;QAC9B,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO;QACxB,CAAC,OAAO,CAAC,aAAa,EAAE,4BAA4B,CACrD,CAAC;AACJ,CAAC;AAED,sFAAsF;AACtF,MAAM,OAAO,oBAAoB;IAIV,KAAK;IAH1B,IAAI,GAAG,CAAC,CAAC;IACT,qGAAqG;IACrG,4BAA4B,GAAG,KAAK,CAAC;IACrC,YAAqB,KAAa;qBAAb,KAAK;QACxB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;YAAE,MAAM,IAAI,UAAU,CAAC,2CAA2C,CAAC,CAAC;IACnH,CAAC;IACD,OAAO;QACL,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzE,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;CACF;AAED,mGAAmG;AACnG,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,GAAW,EAAE,IAAiB,EAAE,MAA6B;IACxG,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,mBAAmB,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;QACvG,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IACH,IAAI,CAAC;QACH,OAAO,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,oGAAoG;QACpG,IAAI,KAAK,YAAY,SAAS,IAAI,KAAK,CAAC,KAAK,YAAY,qBAAqB;YAAE,MAAM,KAAK,CAAC,KAAK,CAAC;QAClG,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result-limits.d.ts","sourceRoot":"","sources":["../../src/adt/result-limits.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGrF"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Keep URL limits and response metadata consistent; finite values clamp to [1, 1000]. */
|
|
2
|
+
export function clampUrlLimit(requested, fallback) {
|
|
3
|
+
if (requested === undefined || !Number.isFinite(requested))
|
|
4
|
+
return fallback;
|
|
5
|
+
return Math.max(1, Math.min(1000, Math.floor(requested)));
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=result-limits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result-limits.js","sourceRoot":"","sources":["../../src/adt/result-limits.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,MAAM,UAAU,aAAa,CAAC,SAA6B,EAAE,QAAgB;IAC3E,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC5E,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC"}
|
|
@@ -14,7 +14,7 @@ export interface SdoRegistryEntry {
|
|
|
14
14
|
createType: string;
|
|
15
15
|
/**
|
|
16
16
|
* Metadata content-type for BOTH the metadata GET (Accept) and the create POST (Content-Type).
|
|
17
|
-
* Most types use `application/vnd.sap.adt.blues.vN+xml` (
|
|
17
|
+
* Most types use `application/vnd.sap.adt.blues.vN+xml` (version set per entry); DTDC uses its
|
|
18
18
|
* own `application/vnd.sap.adt.ddic.dtdc.v1+xml`. Matched by `discoveryMarker` in the gate.
|
|
19
19
|
*/
|
|
20
20
|
metadataContentType: string;
|
|
@@ -38,7 +38,7 @@ export interface SdoRegistryEntry {
|
|
|
38
38
|
discoveryMarker: string;
|
|
39
39
|
/**
|
|
40
40
|
* Source flavor — drives BOTH the client-side validation and the PUT Content-Type. NOT uniform:
|
|
41
|
-
* the AFF-JSON types 415 on text/plain, and the DDL-text types
|
|
41
|
+
* the AFF-JSON types 415 on text/plain, and the DDL-text types 415 on
|
|
42
42
|
* application/json. Live-verified per type on 816.
|
|
43
43
|
*/
|
|
44
44
|
sourceFormat: SdoSourceFormat;
|
|
@@ -55,7 +55,7 @@ export declare function serverDrivenSourceFormat(code: string): SdoSourceFormat;
|
|
|
55
55
|
* here is the ONLY step needed to expose it — `btp: true` by construction (runtime availability is
|
|
56
56
|
* discovery-gated per system, so a type absent on a release degrades cleanly).
|
|
57
57
|
*/
|
|
58
|
-
export declare const SDO_TYPES: readonly ['DESD', 'DTSC', 'CSNM', 'EVTB', 'EVTO', 'COTA', 'DSFD', 'DTDC', 'UIAD'];
|
|
58
|
+
export declare const SDO_TYPES: readonly ['DESD', 'DTSC', 'CSNM', 'EVTB', 'EVTO', 'COTA', 'DSFD', 'DTDC', 'UIAD', 'DRTY'];
|
|
59
59
|
/** Curated registry of high-value server-driven object types — keys are exactly SDO_TYPES. */
|
|
60
60
|
export declare const SDO_REGISTRY: {
|
|
61
61
|
DESD: {
|
|
@@ -157,6 +157,17 @@ export declare const SDO_REGISTRY: {
|
|
|
157
157
|
metadataContentType: string;
|
|
158
158
|
sourceFormat: "json";
|
|
159
159
|
};
|
|
160
|
+
DRTY: {
|
|
161
|
+
metadataRootLocalName: 'blueSource';
|
|
162
|
+
metadataRootQName: 'blue:blueSource';
|
|
163
|
+
metadataNamespace: 'http://www.sap.com/wbobj/blue';
|
|
164
|
+
discoveryMarker: 'blues';
|
|
165
|
+
href: string;
|
|
166
|
+
label: string;
|
|
167
|
+
createType: string;
|
|
168
|
+
metadataContentType: string;
|
|
169
|
+
sourceFormat: "text";
|
|
170
|
+
};
|
|
160
171
|
};
|
|
161
172
|
/** True when `code` is one of the registered server-driven object types. */
|
|
162
173
|
export declare function isServerDrivenObjectType(code: string): boolean;
|
|
@@ -217,10 +228,14 @@ export declare function getServerDrivenObject(http: AdtHttpClient, safety: Safet
|
|
|
217
228
|
* it would be an ADT-ignored attribute — so the body here is exactly the form proven to create every
|
|
218
229
|
* registered type.
|
|
219
230
|
*/
|
|
220
|
-
export
|
|
231
|
+
export type UiadLanguageVersion = 'standard' | 'keyUser' | 'cloudDevelopment';
|
|
232
|
+
export declare function buildServerDrivenMetadataXml(code: string, name: string, pkg: string, description: string, uiadLanguageVersion?: UiadLanguageVersion): string;
|
|
221
233
|
/** Options shared by the SDO write operations. */
|
|
222
234
|
export interface ServerDrivenWriteOptions {
|
|
223
235
|
transport?: string;
|
|
236
|
+
/** Internal mutation accounting; never a tool input. */
|
|
237
|
+
onSourceWrite?: (state: 'attempted' | 'confirmed') => void;
|
|
238
|
+
onUnlockFailure?: () => void;
|
|
224
239
|
}
|
|
225
240
|
/**
|
|
226
241
|
* Create a server-driven object (metadata only — POST the <blue:blueSource> body to the collection
|
|
@@ -231,11 +246,12 @@ export declare function createServerDrivenObject(http: AdtHttpClient, safety: Sa
|
|
|
231
246
|
package: string;
|
|
232
247
|
description: string;
|
|
233
248
|
transport?: string;
|
|
249
|
+
uiadLanguageVersion?: UiadLanguageVersion;
|
|
234
250
|
}): Promise<string>;
|
|
235
251
|
/**
|
|
236
252
|
* Write the source of a server-driven object: lock → PUT …/source/main → unlock (guaranteed via
|
|
237
253
|
* try-finally). The Content-Type comes from the type's declared sourceFormat — AFF-JSON types take
|
|
238
|
-
* application/json,
|
|
254
|
+
* application/json, entries with sourceFormat='text' take text/plain; the wrong one is a 415.
|
|
239
255
|
* Auto-propagates the lock's corrNr when no explicit transport is supplied (same contract as
|
|
240
256
|
* crud.ts safeUpdateSource).
|
|
241
257
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-driven.d.ts","sourceRoot":"","sources":["../../src/adt/server-driven.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server-driven.d.ts","sourceRoot":"","sources":["../../src/adt/server-driven.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Generic "server-driven object" (SDO) read/write path. Most SDO types need ABAP Platform 2025
|
|
3
|
-
* (SAP_BASIS 8.16+), but some (DTDC, DSFD, EVTB) also ship on S/4HANA 2023 (758) — availability is
|
|
3
|
+
* (SAP_BASIS 8.16+), but some (DTDC, DSFD, DRTY, EVTB) also ship on S/4HANA 2023 (758) — availability is
|
|
4
4
|
* discovery-gated per type, never a hardcoded release.
|
|
5
5
|
*
|
|
6
6
|
* These repository object types share ONE AFF generic-object contract:
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* metadata body (blue:blueSource / dtdc:dtdcSource; adtcore:type/name/description + packageRef) → 201.
|
|
15
15
|
* - SOURCE = lock (crud.ts) → PUT <url>/source/main?lockHandle=… → unlock. The Content-Type is
|
|
16
16
|
* per-type (registry `sourceFormat`): application/json for the AFF-JSON types,
|
|
17
|
-
* text/plain for
|
|
17
|
+
* text/plain for entries with sourceFormat='text'. The wrong one is a hard 415.
|
|
18
18
|
* - DELETE = lock → http.delete(<url>?lockHandle=…) → unlock.
|
|
19
19
|
* - ACTIVATE is the generic devtools activate() against the object URL (callers use SAPActivate).
|
|
20
20
|
* Create leaves the object inactive — callers follow with SAPActivate (never auto-activated).
|
|
@@ -23,13 +23,15 @@
|
|
|
23
23
|
* the metadata content-type varies (blues v1, EVTO=blues v2, DTDC=ddic.dtdc.v1) — all stored per
|
|
24
24
|
* registry entry, verified live: the blue family on 816, DTDC create→activate on 758 + 816.
|
|
25
25
|
*/
|
|
26
|
+
import { logger } from '../server/logger.js';
|
|
27
|
+
import { postCreate } from './create-request.js';
|
|
26
28
|
import { lockObject, unlockObject } from './crud.js';
|
|
27
29
|
import { fetchDiscoveryDocument, resolveAcceptType } from './discovery.js';
|
|
28
30
|
import { AdtApiError } from './errors.js';
|
|
29
31
|
import { checkOperation, OperationType } from './safety.js';
|
|
30
32
|
import { escapeXmlAttr, parseServerDrivenMetadata } from './xml-parser.js';
|
|
31
33
|
/**
|
|
32
|
-
* Shared metadata-format fields for the "blue" family
|
|
34
|
+
* Shared metadata-format fields for registry entries using the "blue" family — every
|
|
33
35
|
* blue type has the identical root element/namespace/discovery marker; only its content-type version
|
|
34
36
|
* (v1/v2) and source flavor differ. Spread into each blue entry so the shape can't drift.
|
|
35
37
|
*/
|
|
@@ -67,7 +69,7 @@ export function serverDrivenSourceFormat(code) {
|
|
|
67
69
|
* here is the ONLY step needed to expose it — `btp: true` by construction (runtime availability is
|
|
68
70
|
* discovery-gated per system, so a type absent on a release degrades cleanly).
|
|
69
71
|
*/
|
|
70
|
-
export const SDO_TYPES = ['DESD', 'DTSC', 'CSNM', 'EVTB', 'EVTO', 'COTA', 'DSFD', 'DTDC', 'UIAD'];
|
|
72
|
+
export const SDO_TYPES = ['DESD', 'DTSC', 'CSNM', 'EVTB', 'EVTO', 'COTA', 'DSFD', 'DTDC', 'UIAD', 'DRTY'];
|
|
71
73
|
/** Curated registry of high-value server-driven object types — keys are exactly SDO_TYPES. */
|
|
72
74
|
export const SDO_REGISTRY = {
|
|
73
75
|
DESD: {
|
|
@@ -141,9 +143,8 @@ export const SDO_REGISTRY = {
|
|
|
141
143
|
},
|
|
142
144
|
// Launchpad content: the LADI replaces the deprecated tile/target-mapping model and is the
|
|
143
145
|
// developer-owned unit on ABAP Cloud. blues.v2 (v1 -> 406, verified on 816).
|
|
144
|
-
//
|
|
145
|
-
//
|
|
146
|
-
// clear and also covers read-only manifest-generated items, so no client-side guard.
|
|
146
|
+
// Manual Cloud-language items are editable, including on-prem 816. Generated items and Standard
|
|
147
|
+
// language items can be readonly. The UIAD writer probes the object's root configuration flag.
|
|
147
148
|
UIAD: {
|
|
148
149
|
href: '/sap/bc/adt/fiori/uiad',
|
|
149
150
|
label: 'Launchpad App Descriptor Item (LADI)',
|
|
@@ -152,6 +153,16 @@ export const SDO_REGISTRY = {
|
|
|
152
153
|
...BLUE_METADATA,
|
|
153
154
|
sourceFormat: 'json',
|
|
154
155
|
},
|
|
156
|
+
// Plain blue sibling of DSFD. DRTY/STY covers scalar types AND enums, so create needs no subtype
|
|
157
|
+
// routing. DDL-text source (JSON PUT = 415). Verified 758/816: docs/research/2026-09-18-drty-cds-type-adt-contract.md
|
|
158
|
+
DRTY: {
|
|
159
|
+
href: '/sap/bc/adt/ddic/drty/sources',
|
|
160
|
+
label: 'CDS Type (scalar type / enum)',
|
|
161
|
+
createType: 'DRTY/STY',
|
|
162
|
+
metadataContentType: BLUES_V1,
|
|
163
|
+
...BLUE_METADATA,
|
|
164
|
+
sourceFormat: 'text',
|
|
165
|
+
},
|
|
155
166
|
};
|
|
156
167
|
// String-indexed view of the registry for the unknown-code lookups below (the satisfies-typed
|
|
157
168
|
// object has exactly the SDO_TYPES keys, which a plain `string` cannot index).
|
|
@@ -233,7 +244,7 @@ export async function ensureServerDrivenSupport(http, safety, code) {
|
|
|
233
244
|
export function serverDrivenUnavailableMessage(tool, code) {
|
|
234
245
|
return (`${tool} type=${code} (server-driven object): this system does not advertise ADT support for it. ` +
|
|
235
246
|
'These types are discovery-gated and depend on the SAP release / support package ' +
|
|
236
|
-
'(e.g. DTSC/CSNM/EVTO
|
|
247
|
+
'(e.g. DTSC/CSNM/EVTO ship on ABAP Platform 2025 / SAP_BASIS 8.16+, while DTDC/DSFD/EVTB and UIAD backports also ship on S/4HANA 2023 / 758).');
|
|
237
248
|
}
|
|
238
249
|
/**
|
|
239
250
|
* Read a server-driven object: its metadata (blue:blueSource or dtdc:dtdcSource) + source (AFF JSON
|
|
@@ -256,23 +267,11 @@ export async function getServerDrivenObject(http, safety, code, name) {
|
|
|
256
267
|
}
|
|
257
268
|
return { ...metadata, source };
|
|
258
269
|
}
|
|
259
|
-
|
|
260
|
-
* Build the minimal metadata create body for a server-driven object — the per-type root element
|
|
261
|
-
* (blue:blueSource or dtdc:dtdcSource) with the verified `createType` for `adtcore:type`
|
|
262
|
-
* (e.g. DESD/TYP, EVTB/EVB, DTDC/DF) + the package ref.
|
|
263
|
-
*
|
|
264
|
-
* NOTE — no `adtcore:masterLanguage`: live-verified on a4h-2025 (816) that ADT *silently ignores*
|
|
265
|
-
* that attribute for these objects (create with masterLanguage="DE" → object still read back as the
|
|
266
|
-
* session language). The object's master language comes from the `sap-language` request param (the
|
|
267
|
-
* session = `config.language` / SAP_LANGUAGE), as with other source-based objects (cf. #343). Emitting
|
|
268
|
-
* it would be an ADT-ignored attribute — so the body here is exactly the form proven to create every
|
|
269
|
-
* registered type.
|
|
270
|
-
*/
|
|
271
|
-
export function buildServerDrivenMetadataXml(code, name, pkg, description) {
|
|
270
|
+
export function buildServerDrivenMetadataXml(code, name, pkg, description, uiadLanguageVersion) {
|
|
272
271
|
const entry = sdoEntry(code);
|
|
273
272
|
const [prefix] = entry.metadataRootQName.split(':');
|
|
274
273
|
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
275
|
-
<${entry.metadataRootQName} xmlns:${prefix}="${entry.metadataNamespace}" xmlns:adtcore="http://www.sap.com/adt/core" adtcore:type="${escapeXmlAttr(entry.createType)}" adtcore:name="${escapeXmlAttr(name)}" adtcore:description="${escapeXmlAttr(description)}">
|
|
274
|
+
<${entry.metadataRootQName} xmlns:${prefix}="${entry.metadataNamespace}" xmlns:adtcore="http://www.sap.com/adt/core" adtcore:type="${escapeXmlAttr(entry.createType)}" adtcore:name="${escapeXmlAttr(name)}" adtcore:description="${escapeXmlAttr(description)}"${code === 'UIAD' && uiadLanguageVersion ? ` adtcore:abapLanguageVersion="${escapeXmlAttr(uiadLanguageVersion)}"` : ''}>
|
|
276
275
|
<adtcore:packageRef adtcore:name="${escapeXmlAttr(pkg)}"/>
|
|
277
276
|
</${entry.metadataRootQName}>`;
|
|
278
277
|
}
|
|
@@ -284,15 +283,15 @@ export function buildServerDrivenMetadataXml(code, name, pkg, description) {
|
|
|
284
283
|
export async function createServerDrivenObject(http, safety, code, name, opts) {
|
|
285
284
|
checkOperation(safety, OperationType.Create, 'CreateServerDrivenObject');
|
|
286
285
|
const entry = sdoEntry(code);
|
|
287
|
-
const body = buildServerDrivenMetadataXml(code, name, opts.package, opts.description);
|
|
286
|
+
const body = buildServerDrivenMetadataXml(code, name, opts.package, opts.description, opts.uiadLanguageVersion);
|
|
288
287
|
const url = opts.transport ? `${entry.href}?corrNr=${encodeURIComponent(opts.transport)}` : entry.href;
|
|
289
|
-
const resp = await http
|
|
288
|
+
const resp = await postCreate(http, url, body, entry.metadataContentType);
|
|
290
289
|
return resp.body;
|
|
291
290
|
}
|
|
292
291
|
/**
|
|
293
292
|
* Write the source of a server-driven object: lock → PUT …/source/main → unlock (guaranteed via
|
|
294
293
|
* try-finally). The Content-Type comes from the type's declared sourceFormat — AFF-JSON types take
|
|
295
|
-
* application/json,
|
|
294
|
+
* application/json, entries with sourceFormat='text' take text/plain; the wrong one is a 415.
|
|
296
295
|
* Auto-propagates the lock's corrNr when no explicit transport is supplied (same contract as
|
|
297
296
|
* crud.ts safeUpdateSource).
|
|
298
297
|
*/
|
|
@@ -302,15 +301,31 @@ export async function updateServerDrivenObjectSource(http, safety, code, name, s
|
|
|
302
301
|
await http.withStatefulSession(async (session) => {
|
|
303
302
|
const lock = await lockObject(session, safety, objUrl, 'MODIFY');
|
|
304
303
|
const transport = opts.transport ?? (lock.corrNr || undefined);
|
|
304
|
+
let unlockError;
|
|
305
305
|
try {
|
|
306
306
|
const params = [`lockHandle=${encodeURIComponent(lock.lockHandle)}`];
|
|
307
307
|
if (transport)
|
|
308
308
|
params.push(`corrNr=${encodeURIComponent(transport)}`);
|
|
309
|
+
opts.onSourceWrite?.('attempted');
|
|
309
310
|
await session.put(`${objUrl}/source/main?${params.join('&')}`, source, serverDrivenSourceContentType(code));
|
|
311
|
+
opts.onSourceWrite?.('confirmed');
|
|
310
312
|
}
|
|
311
313
|
finally {
|
|
312
|
-
|
|
314
|
+
try {
|
|
315
|
+
await unlockObject(session, objUrl, lock.lockHandle);
|
|
316
|
+
}
|
|
317
|
+
catch (error) {
|
|
318
|
+
unlockError = error;
|
|
319
|
+
logger.warn('Server-driven object unlock failed; a SAP lock may remain.', {
|
|
320
|
+
objectUrl: objUrl,
|
|
321
|
+
...(error instanceof AdtApiError ? { statusCode: error.statusCode } : {}),
|
|
322
|
+
});
|
|
323
|
+
opts.onUnlockFailure?.();
|
|
324
|
+
}
|
|
313
325
|
}
|
|
326
|
+
// Reached only when the PUT succeeded. A failed PUT keeps its original exception.
|
|
327
|
+
if (unlockError !== undefined)
|
|
328
|
+
throw unlockError;
|
|
314
329
|
});
|
|
315
330
|
}
|
|
316
331
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-driven.js","sourceRoot":"","sources":["../../src/adt/server-driven.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAE,aAAa,EAAqB,MAAM,aAAa,CAAC;AAE/E,OAAO,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAgD3E;;;;GAIG;AACH,MAAM,aAAa,GAAG;IACpB,qBAAqB,EAAE,YAAY;IACnC,iBAAiB,EAAE,iBAAiB;IACpC,iBAAiB,EAAE,+BAA+B;IAClD,eAAe,EAAE,OAAO;CAChB,CAAC;AAEX,MAAM,QAAQ,GAAG,sCAAsC,CAAC;AACxD,MAAM,QAAQ,GAAG,sCAAsC,CAAC;AAExD,uFAAuF;AACvF,MAAM,UAAU,6BAA6B,CAAC,IAAY;IACxD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC;IAC3C,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM;YACT,OAAO,kBAAkB,CAAC;QAC5B,KAAK,MAAM;YACT,OAAO,YAAY,CAAC;QACtB,SAAS,CAAC;YACR,qFAAqF;YACrF,oFAAoF;YACpF,MAAM,SAAS,GAAU,MAAM,CAAC;YAChC,MAAM,IAAI,WAAW,CAAC,0CAA0C,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QAClG,CAAC;IACH,CAAC;AACH,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,wBAAwB,CAAC,IAAY;IACnD,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC;AACrC,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"server-driven.js","sourceRoot":"","sources":["../../src/adt/server-driven.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAE,aAAa,EAAqB,MAAM,aAAa,CAAC;AAE/E,OAAO,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAgD3E;;;;GAIG;AACH,MAAM,aAAa,GAAG;IACpB,qBAAqB,EAAE,YAAY;IACnC,iBAAiB,EAAE,iBAAiB;IACpC,iBAAiB,EAAE,+BAA+B;IAClD,eAAe,EAAE,OAAO;CAChB,CAAC;AAEX,MAAM,QAAQ,GAAG,sCAAsC,CAAC;AACxD,MAAM,QAAQ,GAAG,sCAAsC,CAAC;AAExD,uFAAuF;AACvF,MAAM,UAAU,6BAA6B,CAAC,IAAY;IACxD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC;IAC3C,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM;YACT,OAAO,kBAAkB,CAAC;QAC5B,KAAK,MAAM;YACT,OAAO,YAAY,CAAC;QACtB,SAAS,CAAC;YACR,qFAAqF;YACrF,oFAAoF;YACpF,MAAM,SAAS,GAAU,MAAM,CAAC;YAChC,MAAM,IAAI,WAAW,CAAC,0CAA0C,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QAClG,CAAC;IACH,CAAC;AACH,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,wBAAwB,CAAC,IAAY;IACnD,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC;AACrC,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAU,CAAC;AAEnH,8FAA8F;AAC9F,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE;QACJ,IAAI,EAAE,uBAAuB;QAC7B,KAAK,EAAE,6BAA6B;QACpC,UAAU,EAAE,UAAU;QACtB,mBAAmB,EAAE,QAAQ;QAC7B,GAAG,aAAa;QAChB,YAAY,EAAE,MAAM;KACrB;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,+BAA+B;QACrC,KAAK,EAAE,wCAAwC;QAC/C,UAAU,EAAE,UAAU;QACtB,mBAAmB,EAAE,QAAQ;QAC7B,GAAG,aAAa;QAChB,YAAY,EAAE,MAAM;KACrB;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,sBAAsB;QAC5B,KAAK,EAAE,kCAAkC;QACzC,UAAU,EAAE,UAAU;QACtB,mBAAmB,EAAE,QAAQ;QAC7B,GAAG,aAAa;QAChB,YAAY,EAAE,MAAM;KACrB;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,sCAAsC;QAC5C,KAAK,EAAE,mBAAmB;QAC1B,UAAU,EAAE,UAAU;QACtB,mBAAmB,EAAE,QAAQ;QAC7B,GAAG,aAAa;QAChB,YAAY,EAAE,MAAM;KACrB;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,sCAAsC;QAC5C,KAAK,EAAE,kBAAkB;QACzB,UAAU,EAAE,UAAU;QACtB,mBAAmB,EAAE,QAAQ;QAC7B,GAAG,aAAa;QAChB,YAAY,EAAE,MAAM;KACrB;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,8BAA8B;QACpC,KAAK,EAAE,sBAAsB;QAC7B,UAAU,EAAE,UAAU;QACtB,mBAAmB,EAAE,QAAQ;QAC7B,GAAG,aAAa;QAChB,YAAY,EAAE,MAAM;KACrB;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,+BAA+B;QACrC,KAAK,EAAE,gCAAgC;QACvC,UAAU,EAAE,UAAU;QACtB,mBAAmB,EAAE,QAAQ;QAC7B,GAAG,aAAa;QAChB,YAAY,EAAE,MAAM;KACrB;IACD,8FAA8F;IAC9F,sFAAsF;IACtF,IAAI,EAAE;QACJ,IAAI,EAAE,+BAA+B;QACrC,KAAK,EAAE,mBAAmB;QAC1B,UAAU,EAAE,SAAS;QACrB,mBAAmB,EAAE,0CAA0C;QAC/D,qBAAqB,EAAE,YAAY;QACnC,iBAAiB,EAAE,iBAAiB;QACpC,iBAAiB,EAAE,yCAAyC;QAC5D,eAAe,EAAE,MAAM;QACvB,YAAY,EAAE,MAAM;KACrB;IACD,2FAA2F;IAC3F,6EAA6E;IAC7E,gGAAgG;IAChG,+FAA+F;IAC/F,IAAI,EAAE;QACJ,IAAI,EAAE,wBAAwB;QAC9B,KAAK,EAAE,sCAAsC;QAC7C,UAAU,EAAE,UAAU;QACtB,mBAAmB,EAAE,QAAQ;QAC7B,GAAG,aAAa;QAChB,YAAY,EAAE,MAAM;KACrB;IACD,iGAAiG;IACjG,sHAAsH;IACtH,IAAI,EAAE;QACJ,IAAI,EAAE,+BAA+B;QACrC,KAAK,EAAE,+BAA+B;QACtC,UAAU,EAAE,UAAU;QACtB,mBAAmB,EAAE,QAAQ;QAC7B,GAAG,aAAa;QAChB,YAAY,EAAE,MAAM;KACrB;CAC6D,CAAC;AAEjE,8FAA8F;AAC9F,+EAA+E;AAC/E,MAAM,gBAAgB,GAAiD,YAAY,CAAC;AAEpF,4EAA4E;AAC5E,MAAM,UAAU,wBAAwB,CAAC,IAAY;IACnD,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AAC3C,CAAC;AAED,+FAA+F;AAC/F,SAAS,QAAQ,CAAC,IAAY;IAC5B,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,WAAW,CAAC,sCAAsC,IAAI,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IAC3F,OAAO,KAAK,CAAC;AACf,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,qBAAqB,CAAC,IAAY,EAAE,IAAY;IAC9D,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;AAC9D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,+BAA+B,CAAC,IAAY;IAC1D,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,mBAAmB,CAAC;AAC5C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,0BAA0B,CAAC,IAAmB,EAAE,IAAY;IAC1E,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;QAAE,OAAO,SAAS,CAAC;IAC/C,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;AACrF,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,IAAmB,EACnB,MAAoB,EACpB,IAAY;IAEZ,MAAM,KAAK,GAAG,0BAA0B,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACrD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACtC,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IAC7D,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe;IACnE,iGAAiG;IACjG,oGAAoG;IACpG,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAChC,OAAO,CAAC,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;AACpF,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,8BAA8B,CAAC,IAAY,EAAE,IAAY;IACvE,OAAO,CACL,GAAG,IAAI,SAAS,IAAI,8EAA8E;QAClG,kFAAkF;QAClF,8IAA8I,CAC/I,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAAmB,EACnB,MAAoB,EACpB,IAAY,EACZ,IAAY;IAEZ,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC;IACpE,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAG,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAEjD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC/E,MAAM,QAAQ,GAAG,yBAAyB,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAEvF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,cAAc,EAAE,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAC,CAAC;IAC7F,IAAI,MAAM,GAAY,OAAO,CAAC,IAAI,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,uCAAuC;IACzC,CAAC;IACD,OAAO,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,CAAC;AACjC,CAAC;AAgBD,MAAM,UAAU,4BAA4B,CAC1C,IAAY,EACZ,IAAY,EACZ,GAAW,EACX,WAAmB,EACnB,mBAAyC;IAEzC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpD,OAAO;GACN,KAAK,CAAC,iBAAiB,UAAU,MAAM,KAAK,KAAK,CAAC,iBAAiB,+DAA+D,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,mBAAmB,aAAa,CAAC,IAAI,CAAC,0BAA0B,aAAa,CAAC,WAAW,CAAC,IAAI,IAAI,KAAK,MAAM,IAAI,mBAAmB,CAAC,CAAC,CAAC,iCAAiC,aAAa,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;sCAChV,aAAa,CAAC,GAAG,CAAC;IACpD,KAAK,CAAC,iBAAiB,GAAG,CAAC;AAC/B,CAAC;AAUD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,IAAmB,EACnB,MAAoB,EACpB,IAAY,EACZ,IAAY,EACZ,IAA6G;IAE7G,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IACzE,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,4BAA4B,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAChH,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,WAAW,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;IACvG,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAC1E,OAAO,IAAI,CAAC,IAAI,CAAC;AACnB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,IAAmB,EACnB,MAAoB,EACpB,IAAY,EACZ,IAAY,EACZ,MAAc,EACd,IAAI,GAA6B,EAAE;IAEnC,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,gCAAgC,CAAC,CAAC;IAC/E,MAAM,MAAM,GAAG,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACjD,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QAC/C,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QACjE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC;QAC/D,IAAI,WAAoB,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,CAAC,cAAc,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YACrE,IAAI,SAAS;gBAAE,MAAM,CAAC,IAAI,CAAC,UAAU,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACtE,IAAI,CAAC,aAAa,EAAE,CAAC,WAAW,CAAC,CAAC;YAClC,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,gBAAgB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,6BAA6B,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5G,IAAI,CAAC,aAAa,EAAE,CAAC,WAAW,CAAC,CAAC;QACpC,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC;gBACH,MAAM,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YACvD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,WAAW,GAAG,KAAK,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,4DAA4D,EAAE;oBACxE,SAAS,EAAE,MAAM;oBACjB,GAAG,CAAC,KAAK,YAAY,WAAW,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC1E,CAAC,CAAC;gBACH,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC;QACD,kFAAkF;QAClF,IAAI,WAAW,KAAK,SAAS;YAAE,MAAM,WAAW,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,IAAmB,EACnB,MAAoB,EACpB,IAAY,EACZ,IAAY,EACZ,IAAI,GAA6B,EAAE;IAEnC,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IACzE,MAAM,MAAM,GAAG,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACjD,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QAC/C,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QACjE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC;QAC/D,IAAI,CAAC;YACH,IAAI,GAAG,GAAG,GAAG,MAAM,eAAe,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACxE,IAAI,SAAS;gBAAE,GAAG,IAAI,WAAW,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;YACjE,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC;gBACH,MAAM,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YACvD,CAAC;YAAC,MAAM,CAAC;gBACP,uDAAuD;YACzD,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
/** Safe SQL builder and row-limit helpers for ADT data-preview requests. */
|
|
2
|
+
/** Replace only whitespace outside literals, preserving tokens and existing comment boundaries. */
|
|
3
|
+
export declare function fitFreestyleSqlLines(sql: string): string;
|
|
2
4
|
/** Coerce a caller-supplied row limit into [1, MAX_TABLE_QUERY_ROWS]. */
|
|
3
5
|
export declare function clampPreviewRows(requested: number | undefined, fallback?: number): number;
|
|
4
6
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-query.d.ts","sourceRoot":"","sources":["../../src/adt/table-query.ts"],"names":[],"mappings":"AAAA,4EAA4E;
|
|
1
|
+
{"version":3,"file":"table-query.d.ts","sourceRoot":"","sources":["../../src/adt/table-query.ts"],"names":[],"mappings":"AAAA,4EAA4E;AA4C5E,mGAAmG;AACnG,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAqBxD;AAkCD,yEAAyE;AACzE,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,SAAM,GAAG,MAAM,CAGtF;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAE1F;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,EAAE,EAClB,KAAK,CAAC,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAC3D,MAAM,CAmBR;AAED;;;;;;GAMG;AACH,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,EACxD,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAA;CAAE,EAC9E,UAAU,EAAE,MAAM,EAAE,EACpB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAA;CAAE,CAAC,CAWhE"}
|
package/dist/adt/table-query.js
CHANGED
|
@@ -1,5 +1,66 @@
|
|
|
1
1
|
/** Safe SQL builder and row-limit helpers for ADT data-preview requests. */
|
|
2
2
|
import { canonicalDataSourceName } from './data-source-name.js';
|
|
3
|
+
/** ADT's freestyle handler cuts each input line here (verified on 7.58 and 8.16). */
|
|
4
|
+
const FREESTYLE_SQL_LINE_MAX = 255;
|
|
5
|
+
const LINE_WRAP_REFUSAL = "Cannot fit freestyle SQL into SAP's 255-character lines. Add line breaks between tokens; long literals, comments, and templates cannot be split safely.";
|
|
6
|
+
/** Find a break that advances the line without splitting a literal or creating a comment. */
|
|
7
|
+
function findSafeLineBreak(line, segmentStart) {
|
|
8
|
+
let lastSafeBreak;
|
|
9
|
+
// Each segment starts outside a literal: the preceding break was outside one too.
|
|
10
|
+
let quoteDelimiter;
|
|
11
|
+
const lineLimit = segmentStart + FREESTYLE_SQL_LINE_MAX;
|
|
12
|
+
for (let index = segmentStart; index <= lineLimit; index++) {
|
|
13
|
+
const char = line[index];
|
|
14
|
+
if (quoteDelimiter !== undefined) {
|
|
15
|
+
if (char !== quoteDelimiter)
|
|
16
|
+
continue;
|
|
17
|
+
if (line[index + 1] === quoteDelimiter) {
|
|
18
|
+
index++; // Doubled delimiters belong to the literal.
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
quoteDelimiter = undefined;
|
|
22
|
+
}
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
if (char === "'" || char === '`') {
|
|
26
|
+
quoteDelimiter = char;
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
if (char === '"' || char === '|') {
|
|
30
|
+
break; // Do not wrap inside an inline comment or attempt to parse a template.
|
|
31
|
+
}
|
|
32
|
+
const isWhitespace = char === ' ' || char === '\t';
|
|
33
|
+
if (isWhitespace && index > segmentStart && line[index + 1] !== '*') {
|
|
34
|
+
lastSafeBreak = index; // A column-one '*' would turn the new line into a comment.
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return lastSafeBreak;
|
|
38
|
+
}
|
|
39
|
+
/** Replace only whitespace outside literals, preserving tokens and existing comment boundaries. */
|
|
40
|
+
export function fitFreestyleSqlLines(sql) {
|
|
41
|
+
return sql
|
|
42
|
+
.split('\n')
|
|
43
|
+
.map((line) => {
|
|
44
|
+
// CRLF's carriage return is not part of the SQL line; preserve it in the final slice.
|
|
45
|
+
const lineLength = line.endsWith('\r') ? line.length - 1 : line.length;
|
|
46
|
+
if (lineLength <= FREESTYLE_SQL_LINE_MAX)
|
|
47
|
+
return line;
|
|
48
|
+
if (line.startsWith('*'))
|
|
49
|
+
throw new Error(LINE_WRAP_REFUSAL);
|
|
50
|
+
const parts = [];
|
|
51
|
+
let segmentStart = 0;
|
|
52
|
+
while (lineLength - segmentStart > FREESTYLE_SQL_LINE_MAX) {
|
|
53
|
+
const breakAt = findSafeLineBreak(line, segmentStart);
|
|
54
|
+
if (breakAt === undefined)
|
|
55
|
+
throw new Error(LINE_WRAP_REFUSAL);
|
|
56
|
+
parts.push(line.slice(segmentStart, breakAt));
|
|
57
|
+
segmentStart = breakAt + 1;
|
|
58
|
+
}
|
|
59
|
+
parts.push(line.slice(segmentStart));
|
|
60
|
+
return parts.join('\n');
|
|
61
|
+
})
|
|
62
|
+
.join('\n');
|
|
63
|
+
}
|
|
3
64
|
/** Allowed SQL comparison operators for TABLE_QUERY where conditions. */
|
|
4
65
|
const ALLOWED_OPS = new Set([
|
|
5
66
|
'=',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-query.js","sourceRoot":"","sources":["../../src/adt/table-query.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"table-query.js","sourceRoot":"","sources":["../../src/adt/table-query.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ADT textelements service — an object's text pool.
|
|
3
|
+
*
|
|
4
|
+
* Three collections (`classes`, `programs`, `functiongroups`), each exposing three subobjects that
|
|
5
|
+
* carry their own media type: `symbols` (the numbered `'Text'(001)` literals), `selections` (a
|
|
6
|
+
* report's selection texts — the labels beside PARAMETERS/SELECT-OPTIONS) and `headings` (list
|
|
7
|
+
* header and column headers). Class writes support only `symbols`. Explicit class reads return
|
|
8
|
+
* SAP's raw response, including empty selections and heading placeholders on verified systems.
|
|
9
|
+
*
|
|
10
|
+
* Split out of client.ts, which keeps only the thin delegating methods.
|
|
11
|
+
*/
|
|
12
|
+
import type { AdtHttpClient } from './http.js';
|
|
13
|
+
import { type SafetyConfig } from './safety.js';
|
|
14
|
+
/** Media type per subobject. Each is used as BOTH Content-Type and Accept on the write PUT (SAP
|
|
15
|
+
* returns 400 "Accept header missing" otherwise). */
|
|
16
|
+
declare const TEXT_ELEMENT_CT: {
|
|
17
|
+
readonly symbols: 'application/vnd.sap.adt.textelements.symbols.v1';
|
|
18
|
+
readonly selections: 'application/vnd.sap.adt.textelements.selections.v1';
|
|
19
|
+
readonly headings: 'application/vnd.sap.adt.textelements.headings.v1';
|
|
20
|
+
};
|
|
21
|
+
/** ADT textelements collections, keyed by the SAPRead/SAPWrite object type they serve. */
|
|
22
|
+
declare const TEXT_ELEMENT_COLLECTIONS: {
|
|
23
|
+
readonly CLAS: 'classes';
|
|
24
|
+
readonly PROG: 'programs';
|
|
25
|
+
readonly FUGR: 'functiongroups';
|
|
26
|
+
};
|
|
27
|
+
/** Which subobject of a text pool to read or write. */
|
|
28
|
+
export type TextElementPart = keyof typeof TEXT_ELEMENT_CT;
|
|
29
|
+
/** Object types that have a text pool on the textelements service. */
|
|
30
|
+
export type TextElementObjectType = keyof typeof TEXT_ELEMENT_COLLECTIONS;
|
|
31
|
+
export declare const TEXT_ELEMENT_PARTS: TextElementPart[];
|
|
32
|
+
export declare const TEXT_ELEMENT_OBJECT_TYPES: TextElementObjectType[];
|
|
33
|
+
export declare function isTextElementObjectType(type: string): type is TextElementObjectType;
|
|
34
|
+
/** Read one subobject. Returns the raw properties-style body: `@MaxLength:NN` then `NNN=text` for
|
|
35
|
+
* symbols, `PARAM=text` lines for selections, `listHeader=`/`columnHeader_N=` for headings. */
|
|
36
|
+
export declare function readTextElementPart(http: AdtHttpClient, safety: SafetyConfig, objectType: TextElementObjectType, name: string, part: TextElementPart): Promise<string>;
|
|
37
|
+
/** Read supported parts under `=== part ===` markers. Preserve raw bodies and propagate failures:
|
|
38
|
+
* HTTP 406 can indicate a source parse/consistency error, not just an unsupported part. */
|
|
39
|
+
export declare function readTextElements(http: AdtHttpClient, safety: SafetyConfig, name: string, options?: {
|
|
40
|
+
objectType?: string;
|
|
41
|
+
part?: TextElementPart;
|
|
42
|
+
}): Promise<string>;
|
|
43
|
+
/** Write one subobject. Locks the textelements object (not the class/program), PUTs the body with
|
|
44
|
+
* that subobject's media type as BOTH Content-Type and Accept, then unlocks. Immediately active —
|
|
45
|
+
* no SAPActivate needed. */
|
|
46
|
+
export declare function writeTextElementPart(http: AdtHttpClient, safety: SafetyConfig, objectType: TextElementObjectType, name: string, part: TextElementPart, source: string, transport?: string): Promise<void>;
|
|
47
|
+
export {};
|
|
48
|
+
//# sourceMappingURL=text-elements.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-elements.d.ts","sourceRoot":"","sources":["../../src/adt/text-elements.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAiC,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAE/E;sDACsD;AACtD,QAAA,MAAM,eAAe;aACnB,OAAO,EAAE,iDAAiD;aAC1D,UAAU,EAAE,oDAAoD;aAChE,QAAQ,EAAE,kDAAkD;CACpD,CAAC;AAEX,0FAA0F;AAC1F,QAAA,MAAM,wBAAwB;aAC5B,IAAI,EAAE,SAAS;aACf,IAAI,EAAE,UAAU;aAChB,IAAI,EAAE,gBAAgB;CACd,CAAC;AAEX,uDAAuD;AACvD,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,eAAe,CAAC;AAE3D,sEAAsE;AACtE,MAAM,MAAM,qBAAqB,GAAG,MAAM,OAAO,wBAAwB,CAAC;AAE1E,eAAO,MAAM,kBAAkB,EAAmC,eAAe,EAAE,CAAC;AAEpF,eAAO,MAAM,yBAAyB,EAA4C,qBAAqB,EAAE,CAAC;AAE1G,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,qBAAqB,CAEnF;AAiCD;gGACgG;AAChG,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,qBAAqB,EACjC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,MAAM,CAAC,CAQjB;AAED;4FAC4F;AAC5F,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,eAAe,CAAA;CAAE,GACxD,OAAO,CAAC,MAAM,CAAC,CAyBjB;AAED;;6BAE6B;AAC7B,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,qBAAqB,EACjC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,eAAe,EACrB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAuBf"}
|