@mcp-abap-adt/adt-clients 23.0.0 → 23.0.2
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 +1 -0
- package/dist/core/include/AdtInclude.d.ts +9 -18
- package/dist/core/include/AdtInclude.d.ts.map +1 -1
- package/dist/core/include/AdtInclude.js +10 -21
- package/dist/core/messageClass/AdtMessageClass.d.ts.map +1 -1
- package/dist/core/messageClass/AdtMessageClass.js +5 -3
- package/dist/core/package/AdtPackage.d.ts +13 -45
- package/dist/core/package/AdtPackage.d.ts.map +1 -1
- package/dist/core/package/AdtPackage.js +13 -45
- package/dist/core/package/types.d.ts +3 -4
- package/dist/core/package/types.d.ts.map +1 -1
- package/dist/core/package/update.js +4 -4
- package/dist/core/service/AdtService.d.ts.map +1 -1
- package/dist/core/service/AdtService.js +4 -8
- package/docs/README.md +4 -1
- package/docs/usage/ANSWER_SHAPES.md +2 -0
- package/docs/usage/OBJECT_LIFECYCLE.md +28 -74
- package/docs/usage/RFC_CONNECTION.md +6 -10
- package/docs/usage/STATEFUL_SESSION_GUIDE.md +20 -11
- package/docs/usage/TROUBLESHOOTING.md +27 -89
- package/docs/usage/WORKAROUNDS.md +764 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -940,6 +940,7 @@ member uses it on your behalf; `create()` and `update()` issue one request each.
|
|
|
940
940
|
- **[Documentation index](docs/README.md)**
|
|
941
941
|
- **[Migrating to 23.0.0](docs/usage/MIGRATION-23.md)** – the replacing code for every removed behaviour
|
|
942
942
|
- **[Client API reference](docs/usage/CLIENT_API_REFERENCE.md)** – every client, member and result set
|
|
943
|
+
- **[Workarounds](docs/usage/WORKAROUNDS.md)** – SAP-side behaviour a consumer has to work around, with the evidence for each
|
|
943
944
|
- **[Architecture](docs/architecture/ARCHITECTURE.md)** – package structure and design decisions
|
|
944
945
|
- **[Decisions](docs/architecture/DECISIONS.md)** – the choices that could have gone the other way, and why
|
|
945
946
|
- **[Operation Delays](docs/usage/OPERATION_DELAYS.md)** – configurable delays for SAP operations in tests
|
|
@@ -80,26 +80,17 @@ export declare class AdtInclude<R extends IIncludeResults = typeof includeDocume
|
|
|
80
80
|
* caller's `analyse` to say.
|
|
81
81
|
*/
|
|
82
82
|
lock<E extends IAdtError = IAdtError>(config: Partial<IIncludeConfig>, options?: IAdtAnalyseOptions<E>): Promise<IAdtResponse<string, E>>;
|
|
83
|
-
/** Unlock the include, and go back to stateless either way. */
|
|
84
83
|
/**
|
|
85
|
-
*
|
|
84
|
+
* Release the lock: one `UNLOCK`, sent stateful, and stateless again after.
|
|
86
85
|
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
* lives as long as the connection — hours, in a test run — where the same
|
|
96
|
-
* activation sent statelessly leaves nothing behind. Eclipse holds a stateful
|
|
97
|
-
* session for the lock alone: its `LOCK` and `UNLOCK` are on one session and
|
|
98
|
-
* every other request, the source `PUT` included, goes stateless on a session
|
|
99
|
-
* of its own.
|
|
100
|
-
*
|
|
101
|
-
* Cleared after the request, not before: the unlock itself belongs to the
|
|
102
|
-
* window it is closing.
|
|
86
|
+
* The lock lives in the stateful context the `LOCK` opened, and only a
|
|
87
|
+
* request that reaches that context releases it. The connector sends the
|
|
88
|
+
* context cookie with stateful requests only, so an `UNLOCK` sent stateless
|
|
89
|
+
* runs in a fresh context, answers 200 and releases nothing — measured on
|
|
90
|
+
* an on-premise system 2026-09-27: the activation after it answered 403 `EU/510` "currently
|
|
91
|
+
* editing", and the delete was refused the same way. Both the `LOCK` and the
|
|
92
|
+
* `UNLOCK` are stateful for their own request only; everything between them,
|
|
93
|
+
* the source `PUT` included, goes stateless, as Eclipse sends it.
|
|
103
94
|
*/
|
|
104
95
|
unlock<E extends IAdtError = IAdtError>(config: Partial<IIncludeConfig>, lockHandle: string, options?: IAdtAnalyseOptions<E>): Promise<IAdtResponse<void, E>>;
|
|
105
96
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdtInclude.d.ts","sourceRoot":"","sources":["../../../src/core/include/AdtInclude.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"AdtInclude.d.ts","sourceRoot":"","sources":["../../../src/core/include/AdtInclude.ts"],"names":[],"mappings":"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"}
|
|
@@ -178,32 +178,21 @@ class AdtInclude {
|
|
|
178
178
|
}
|
|
179
179
|
return answer;
|
|
180
180
|
}
|
|
181
|
-
/** Unlock the include, and go back to stateless either way. */
|
|
182
181
|
/**
|
|
183
|
-
*
|
|
182
|
+
* Release the lock: one `UNLOCK`, sent stateful, and stateless again after.
|
|
184
183
|
*
|
|
185
|
-
*
|
|
186
|
-
*
|
|
187
|
-
*
|
|
188
|
-
*
|
|
189
|
-
*
|
|
190
|
-
*
|
|
191
|
-
*
|
|
192
|
-
*
|
|
193
|
-
* lives as long as the connection — hours, in a test run — where the same
|
|
194
|
-
* activation sent statelessly leaves nothing behind. Eclipse holds a stateful
|
|
195
|
-
* session for the lock alone: its `LOCK` and `UNLOCK` are on one session and
|
|
196
|
-
* every other request, the source `PUT` included, goes stateless on a session
|
|
197
|
-
* of its own.
|
|
198
|
-
*
|
|
199
|
-
* Cleared after the request, not before: the unlock itself belongs to the
|
|
200
|
-
* window it is closing.
|
|
184
|
+
* The lock lives in the stateful context the `LOCK` opened, and only a
|
|
185
|
+
* request that reaches that context releases it. The connector sends the
|
|
186
|
+
* context cookie with stateful requests only, so an `UNLOCK` sent stateless
|
|
187
|
+
* runs in a fresh context, answers 200 and releases nothing — measured on
|
|
188
|
+
* an on-premise system 2026-09-27: the activation after it answered 403 `EU/510` "currently
|
|
189
|
+
* editing", and the delete was refused the same way. Both the `LOCK` and the
|
|
190
|
+
* `UNLOCK` are stateful for their own request only; everything between them,
|
|
191
|
+
* the source `PUT` included, goes stateless, as Eclipse sends it.
|
|
201
192
|
*/
|
|
202
193
|
async unlock(config, lockHandle, options) {
|
|
203
194
|
const includeName = requireName(config);
|
|
204
|
-
|
|
205
|
-
this.connection.setSessionType?.('stateless');
|
|
206
|
-
return answer;
|
|
195
|
+
return (0, adtResponse_1.answering)(() => (0, statefulSession_1.inStatefulSession)(this.connection, () => (0, unlock_1.unlockInclude)(this.connection, includeName, lockHandle)), resultStrategy_1.nothing, options?.analyse);
|
|
207
196
|
}
|
|
208
197
|
}
|
|
209
198
|
exports.AdtInclude = AdtInclude;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdtMessageClass.d.ts","sourceRoot":"","sources":["../../../src/core/messageClass/AdtMessageClass.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"AdtMessageClass.d.ts","sourceRoot":"","sources":["../../../src/core/messageClass/AdtMessageClass.ts"],"names":[],"mappings":"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"}
|
|
@@ -172,12 +172,14 @@ class AdtMessageClass {
|
|
|
172
172
|
/** Unlock the message class. */
|
|
173
173
|
async unlock(config, lockHandle, options) {
|
|
174
174
|
const name = this.name(config);
|
|
175
|
-
return (0, adtResponse_1.answering)(
|
|
175
|
+
return (0, adtResponse_1.answering)(
|
|
176
|
+
// The UNLOCK reaches the context the LOCK opened only if it is sent
|
|
177
|
+
// stateful; stateless, it releases nothing and still answers 200.
|
|
178
|
+
async () => {
|
|
176
179
|
try {
|
|
177
|
-
return await (0, unlock_1.unlockMessageClass)(this.connection, name, lockHandle);
|
|
180
|
+
return await (0, statefulSession_1.inStatefulSession)(this.connection, () => (0, unlock_1.unlockMessageClass)(this.connection, name, lockHandle));
|
|
178
181
|
}
|
|
179
182
|
finally {
|
|
180
|
-
this.connection.setSessionType('stateless');
|
|
181
183
|
this.lockTracker.untrack(name);
|
|
182
184
|
}
|
|
183
185
|
}, resultStrategy_1.nothing, options?.analyse);
|
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
* Every member answers `IAdtResponse<T>`, where T is what the result set given
|
|
8
8
|
* at construction makes of that endpoint's answer.
|
|
9
9
|
*
|
|
10
|
-
*
|
|
10
|
+
* The sequences Eclipse follows — each step is its own member here, one
|
|
11
|
+
* request each, and the caller composes them:
|
|
11
12
|
* - Create: validate → create → check
|
|
12
13
|
* - Update: lock → check → update → unlock
|
|
13
14
|
* - Delete: check(deletion) → delete
|
|
@@ -38,12 +39,16 @@ export declare class AdtPackage<R extends IPackageResults = typeof packageDocume
|
|
|
38
39
|
/** Validate the package's configuration before creating it. */
|
|
39
40
|
validate<E extends IAdtError = IAdtError>(config: Partial<IPackageConfig>, options?: IAdtOperationOptions<E>): Promise<IAdtResponse<ReturnType<R['validation']>, E>>;
|
|
40
41
|
/**
|
|
41
|
-
* Create the package:
|
|
42
|
+
* Create the package: one POST. Eclipse validates before it and runs a
|
|
43
|
+
* check after it; both are members of their own here.
|
|
42
44
|
*
|
|
43
|
-
*
|
|
45
|
+
* That check is a checkrun on the new object, the way Eclipse does it, not a
|
|
44
46
|
* second call to the validation endpoint — captured 2026-08-31, which
|
|
45
47
|
* validates, creates, then posts `/sap/bc/adt/checkruns` on the created
|
|
46
48
|
* package before it is ever locked.
|
|
49
|
+
*
|
|
50
|
+
* A package can be saved only once per ABAP session: PAK/058 — see
|
|
51
|
+
* docs/usage/WORKAROUNDS.md. Over RFC the create counts as that save.
|
|
47
52
|
*/
|
|
48
53
|
create<E extends IAdtError = IAdtError>(config: Omit<IPackageConfig, 'source'> & {
|
|
49
54
|
source?: never;
|
|
@@ -57,40 +62,8 @@ export declare class AdtPackage<R extends IPackageResults = typeof packageDocume
|
|
|
57
62
|
/**
|
|
58
63
|
* Update the package's metadata.
|
|
59
64
|
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
* call". Measured 2026-08-31, that is wrong: the PUT reads the
|
|
63
|
-
* parameter, validates the handle, and accepts ours. Four answers from the
|
|
64
|
-
* same endpoint, same session, same package, over rfc:
|
|
65
|
-
*
|
|
66
|
-
* PUT with no lockHandle 400 ExceptionParameterNotFound
|
|
67
|
-
* SADT_RESOURCE/017 "Parameter lockHandle
|
|
68
|
-
* could not be found"
|
|
69
|
-
* PUT with a made-up handle 423 ExceptionResourceInvalidLockHandle
|
|
70
|
-
* SADT_RESOURCE/026 "is not locked
|
|
71
|
-
* (invalid lock handle: DEADBEEF…)"
|
|
72
|
-
* a second _action=LOCK 403 ExceptionResourceNoAccess
|
|
73
|
-
* EU/510 "User … is currently editing"
|
|
74
|
-
* PUT with OUR handle 400 ExceptionResourceAlreadyExists
|
|
75
|
-
* PAK/058 "Package … is already locked"
|
|
76
|
-
*
|
|
77
|
-
* The first two say the lock handle is read and checked, and ours passes both
|
|
78
|
-
* checks — a PUT that could not see the lock would answer 423, exactly as the
|
|
79
|
-
* made-up handle does. The third says the ADT resource lock is ours and is
|
|
80
|
-
* recognised as ours.
|
|
81
|
-
*
|
|
82
|
-
* So the refusal comes from a layer past the ADT lock. PAK is the package
|
|
83
|
-
* framework's own message class, and PAK/058 is what it answers when its own
|
|
84
|
-
* lock cannot be taken. That state does not survive the hop between internal
|
|
85
|
-
* contexts that SADT_REST_RFC_ENDPOINT makes per call; the enqueue handle
|
|
86
|
-
* does, which is why UNLOCK afterwards answers 200.
|
|
87
|
-
*
|
|
88
|
-
* It is packages alone. In the same rfc run 31 other updates pass — classes,
|
|
89
|
-
* interfaces, domains, data elements, tables, structures, DDL, behaviour
|
|
90
|
-
* definitions — and no PAK message appears anywhere else in the log. Not
|
|
91
|
-
* critical for release: http is the primary transport for modern on-premise
|
|
92
|
-
* systems, and rfc exists for BASIS < 7.50, where package CRUD is not
|
|
93
|
-
* supported regardless.
|
|
65
|
+
* A package can be saved only once per ABAP session: PAK/058 — see
|
|
66
|
+
* docs/usage/WORKAROUNDS.md. Opening a new session is the caller's.
|
|
94
67
|
*
|
|
95
68
|
* **The whole content, every time.** This is a replace, never a merge. Read
|
|
96
69
|
* what the object holds, change what you mean to change, and pass the result:
|
|
@@ -108,14 +81,9 @@ export declare class AdtPackage<R extends IPackageResults = typeof packageDocume
|
|
|
108
81
|
/**
|
|
109
82
|
* Delete the package.
|
|
110
83
|
*
|
|
111
|
-
* A package
|
|
112
|
-
*
|
|
113
|
-
*
|
|
114
|
-
* PAK/058, "package is already locked", even though the UNLOCK moments
|
|
115
|
-
* earlier answered 200. It is not a delay: retried for 30 seconds inside the
|
|
116
|
-
* run it never succeeds, and the same request one second after the run ends
|
|
117
|
-
* deletes it on the first attempt. The PAK lock belongs to the ABAP session
|
|
118
|
-
* and goes with it.
|
|
84
|
+
* A package can be saved only once per ABAP session: PAK/058 — see
|
|
85
|
+
* docs/usage/WORKAROUNDS.md. A delete from a session that saved the package
|
|
86
|
+
* is refused; from a new session it succeeds.
|
|
119
87
|
*
|
|
120
88
|
* The answer is a 200 either way, and `isDeleted="false"` is in its body: a
|
|
121
89
|
* caller who wants that read as a failure passes `analyseDeletion` (from
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdtPackage.d.ts","sourceRoot":"","sources":["../../../src/core/package/AdtPackage.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"AdtPackage.d.ts","sourceRoot":"","sources":["../../../src/core/package/AdtPackage.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
* Every member answers `IAdtResponse<T>`, where T is what the result set given
|
|
9
9
|
* at construction makes of that endpoint's answer.
|
|
10
10
|
*
|
|
11
|
-
*
|
|
11
|
+
* The sequences Eclipse follows — each step is its own member here, one
|
|
12
|
+
* request each, and the caller composes them:
|
|
12
13
|
* - Create: validate → create → check
|
|
13
14
|
* - Update: lock → check → update → unlock
|
|
14
15
|
* - Delete: check(deletion) → delete
|
|
@@ -76,12 +77,16 @@ class AdtPackage {
|
|
|
76
77
|
}), this.results.validation, options?.analyse);
|
|
77
78
|
}
|
|
78
79
|
/**
|
|
79
|
-
* Create the package:
|
|
80
|
+
* Create the package: one POST. Eclipse validates before it and runs a
|
|
81
|
+
* check after it; both are members of their own here.
|
|
80
82
|
*
|
|
81
|
-
*
|
|
83
|
+
* That check is a checkrun on the new object, the way Eclipse does it, not a
|
|
82
84
|
* second call to the validation endpoint — captured 2026-08-31, which
|
|
83
85
|
* validates, creates, then posts `/sap/bc/adt/checkruns` on the created
|
|
84
86
|
* package before it is ever locked.
|
|
87
|
+
*
|
|
88
|
+
* A package can be saved only once per ABAP session: PAK/058 — see
|
|
89
|
+
* docs/usage/WORKAROUNDS.md. Over RFC the create counts as that save.
|
|
85
90
|
*/
|
|
86
91
|
async create(config, options) {
|
|
87
92
|
// **No guard here, unlike every other create.**
|
|
@@ -128,40 +133,8 @@ class AdtPackage {
|
|
|
128
133
|
/**
|
|
129
134
|
* Update the package's metadata.
|
|
130
135
|
*
|
|
131
|
-
*
|
|
132
|
-
*
|
|
133
|
-
* call". Measured 2026-08-31, that is wrong: the PUT reads the
|
|
134
|
-
* parameter, validates the handle, and accepts ours. Four answers from the
|
|
135
|
-
* same endpoint, same session, same package, over rfc:
|
|
136
|
-
*
|
|
137
|
-
* PUT with no lockHandle 400 ExceptionParameterNotFound
|
|
138
|
-
* SADT_RESOURCE/017 "Parameter lockHandle
|
|
139
|
-
* could not be found"
|
|
140
|
-
* PUT with a made-up handle 423 ExceptionResourceInvalidLockHandle
|
|
141
|
-
* SADT_RESOURCE/026 "is not locked
|
|
142
|
-
* (invalid lock handle: DEADBEEF…)"
|
|
143
|
-
* a second _action=LOCK 403 ExceptionResourceNoAccess
|
|
144
|
-
* EU/510 "User … is currently editing"
|
|
145
|
-
* PUT with OUR handle 400 ExceptionResourceAlreadyExists
|
|
146
|
-
* PAK/058 "Package … is already locked"
|
|
147
|
-
*
|
|
148
|
-
* The first two say the lock handle is read and checked, and ours passes both
|
|
149
|
-
* checks — a PUT that could not see the lock would answer 423, exactly as the
|
|
150
|
-
* made-up handle does. The third says the ADT resource lock is ours and is
|
|
151
|
-
* recognised as ours.
|
|
152
|
-
*
|
|
153
|
-
* So the refusal comes from a layer past the ADT lock. PAK is the package
|
|
154
|
-
* framework's own message class, and PAK/058 is what it answers when its own
|
|
155
|
-
* lock cannot be taken. That state does not survive the hop between internal
|
|
156
|
-
* contexts that SADT_REST_RFC_ENDPOINT makes per call; the enqueue handle
|
|
157
|
-
* does, which is why UNLOCK afterwards answers 200.
|
|
158
|
-
*
|
|
159
|
-
* It is packages alone. In the same rfc run 31 other updates pass — classes,
|
|
160
|
-
* interfaces, domains, data elements, tables, structures, DDL, behaviour
|
|
161
|
-
* definitions — and no PAK message appears anywhere else in the log. Not
|
|
162
|
-
* critical for release: http is the primary transport for modern on-premise
|
|
163
|
-
* systems, and rfc exists for BASIS < 7.50, where package CRUD is not
|
|
164
|
-
* supported regardless.
|
|
136
|
+
* A package can be saved only once per ABAP session: PAK/058 — see
|
|
137
|
+
* docs/usage/WORKAROUNDS.md. Opening a new session is the caller's.
|
|
165
138
|
*
|
|
166
139
|
* **The whole content, every time.** This is a replace, never a merge. Read
|
|
167
140
|
* what the object holds, change what you mean to change, and pass the result:
|
|
@@ -215,14 +188,9 @@ class AdtPackage {
|
|
|
215
188
|
/**
|
|
216
189
|
* Delete the package.
|
|
217
190
|
*
|
|
218
|
-
* A package
|
|
219
|
-
*
|
|
220
|
-
*
|
|
221
|
-
* PAK/058, "package is already locked", even though the UNLOCK moments
|
|
222
|
-
* earlier answered 200. It is not a delay: retried for 30 seconds inside the
|
|
223
|
-
* run it never succeeds, and the same request one second after the run ends
|
|
224
|
-
* deletes it on the first attempt. The PAK lock belongs to the ABAP session
|
|
225
|
-
* and goes with it.
|
|
191
|
+
* A package can be saved only once per ABAP session: PAK/058 — see
|
|
192
|
+
* docs/usage/WORKAROUNDS.md. A delete from a session that saved the package
|
|
193
|
+
* is refused; from a new session it succeeds.
|
|
226
194
|
*
|
|
227
195
|
* The answer is a 200 either way, and `isDeleted="false"` is in its body: a
|
|
228
196
|
* caller who wants that read as a failure passes `analyseDeletion` (from
|
|
@@ -41,10 +41,9 @@ export type PackageValidationResult = string;
|
|
|
41
41
|
/**
|
|
42
42
|
* What the deletion answers.
|
|
43
43
|
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
* "package is already locked" — so the document, not the status, is the verdict.
|
|
44
|
+
* A refusal arrives as **200** carrying `isDeleted="false"`, so the document,
|
|
45
|
+
* not the status, is the verdict. A package can be saved only once per ABAP
|
|
46
|
+
* session: PAK/058 — see docs/usage/WORKAROUNDS.md.
|
|
48
47
|
*/
|
|
49
48
|
export type PackageDeletionResult = string;
|
|
50
49
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/package/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAIpE,YAAY,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC;AAEpC;;;;;;;;GAQG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC;AAEnC;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC;AAErC;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAExC;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAE7C
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/package/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAIpE,YAAY,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC;AAEpC;;;;;;;;GAQG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC;AAEnC;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC;AAErC;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAExC;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAE7C;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAE3C;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC;AAEpC;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEtC,gFAAgF;AAChF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IAC3C,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IAC5C,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IAC9C,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IAC5C,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IACnD,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IAC7C,0DAA0D;IAC1D,QAAQ,CAAC,aAAa,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;CAClD;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;CAUF,CAAC;AAE5B;;;;;;;;;GASG;AAEH,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6EAA6E;IAC7E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B"}
|
|
@@ -22,10 +22,10 @@ const timeouts_1 = require("../../utils/timeouts");
|
|
|
22
22
|
*/
|
|
23
23
|
async function updatePackage(connection, params, document, lockHandle) {
|
|
24
24
|
const encodedName = (0, internalUtils_1.encodeSapObjectName)(params.package_name.toLowerCase());
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
const url = `/sap/bc/adt/packages/${encodedName}
|
|
25
|
+
// `writeQuery`, like every other write: interpolating the handle directly
|
|
26
|
+
// sent `?lockHandle=undefined` when there was none, and SAP answered a
|
|
27
|
+
// refusal about a handle nobody passed.
|
|
28
|
+
const url = `/sap/bc/adt/packages/${encodedName}${(0, internalUtils_1.writeQuery)(lockHandle, params.transport_request)}`;
|
|
29
29
|
return connection.makeAdtRequest({
|
|
30
30
|
url,
|
|
31
31
|
method: 'PUT',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdtService.d.ts","sourceRoot":"","sources":["../../../src/core/service/AdtService.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"AdtService.d.ts","sourceRoot":"","sources":["../../../src/core/service/AdtService.ts"],"names":[],"mappings":"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"}
|
|
@@ -329,14 +329,10 @@ class AdtServiceBinding {
|
|
|
329
329
|
*/
|
|
330
330
|
async unlock(config, lockHandle, options) {
|
|
331
331
|
const name = this.name(config);
|
|
332
|
-
return (0, adtResponse_1.answering)(
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
finally {
|
|
337
|
-
this.connection.setSessionType?.('stateless');
|
|
338
|
-
}
|
|
339
|
-
}, resultStrategy_1.nothing, options?.analyse);
|
|
332
|
+
return (0, adtResponse_1.answering)(
|
|
333
|
+
// The UNLOCK reaches the context the LOCK opened only if it is sent
|
|
334
|
+
// stateful; stateless, it releases nothing and still answers 200.
|
|
335
|
+
() => (0, statefulSession_1.inStatefulSession)(this.connection, () => (0, lock_1.unlockServiceBinding)(this.connection, name, lockHandle)), resultStrategy_1.nothing, options?.analyse);
|
|
340
336
|
}
|
|
341
337
|
/**
|
|
342
338
|
* Delete the binding.
|
package/docs/README.md
CHANGED
|
@@ -25,6 +25,7 @@ Complete documentation for the `@mcp-abap-adt/adt-clients` package.
|
|
|
25
25
|
- [**STATEFUL_SESSION_GUIDE.md**](usage/STATEFUL_SESSION_GUIDE.md) - Guide for stateful session management
|
|
26
26
|
- [**CHECK_LOCAL_TEST_CLASS.md**](usage/CHECK_LOCAL_TEST_CLASS.md) - Guide for validating ABAP Unit test classes
|
|
27
27
|
- [**DEBUG.md**](usage/DEBUG.md) - Debugging and troubleshooting guide
|
|
28
|
+
- [**WORKAROUNDS.md**](usage/WORKAROUNDS.md) — SAP-side behaviour a consumer has to work around (PAK/058, refusals inside a `200`, empty `200` reads, activation flags, transport search, …): symptom, cause, rule, workaround and evidence for each
|
|
28
29
|
- [TROUBLESHOOTING.md](usage/TROUBLESHOOTING.md) — what ADT answers when it refuses, and why the message is often accurate about the wrong thing
|
|
29
30
|
- [**OPERATION_DELAYS.md**](usage/OPERATION_DELAYS.md) - Detailed guide on operation delays and timing
|
|
30
31
|
- [**OPERATION_DELAYS_SUMMARY.md**](usage/OPERATION_DELAYS_SUMMARY.md) - Quick reference for operation delays
|
|
@@ -54,6 +55,8 @@ docs/
|
|
|
54
55
|
│ ├── OBJECT_LIFECYCLE.md # The create → … → activate flow and its exceptions
|
|
55
56
|
│ ├── CLIENT_API_REFERENCE.md # Client API reference
|
|
56
57
|
│ ├── STATEFUL_SESSION_GUIDE.md # Session management
|
|
58
|
+
│ ├── WORKAROUNDS.md # SAP-side behaviour and its workarounds
|
|
59
|
+
│ ├── TROUBLESHOOTING.md # Refusals that name the wrong cause
|
|
57
60
|
│ ├── CHECK_LOCAL_TEST_CLASS.md # Local test class validation
|
|
58
61
|
│ ├── DEBUG.md # Debugging guide
|
|
59
62
|
│ ├── OPERATION_DELAYS.md # Operation delays (detailed)
|
|
@@ -115,7 +118,7 @@ See [ARCHITECTURE.md](architecture/ARCHITECTURE.md#type-system-organization) for
|
|
|
115
118
|
|
|
116
119
|
### Session Management
|
|
117
120
|
|
|
118
|
-
`
|
|
121
|
+
Only the `LOCK` and the `UNLOCK` request are stateful — `lock` and `unlock` each switch for their own request and back; everything between them goes stateless. The handle is what `lock` answers, and the sequence between them is yours.
|
|
119
122
|
|
|
120
123
|
See [STATEFUL_SESSION_GUIDE.md](usage/STATEFUL_SESSION_GUIDE.md) for implementation details.
|
|
121
124
|
|
|
@@ -126,6 +126,8 @@ caller who asks for those shapes rather than the document.
|
|
|
126
126
|
- [`MIGRATION-23.md`](MIGRATION-23.md) — the readings and verdicts that moved
|
|
127
127
|
to `@mcp-abap-adt/adt-strategies` in 23.0.0
|
|
128
128
|
- [`MIGRATION-19.md`](MIGRATION-19.md) — what moved to the consumer in 19.0.0
|
|
129
|
+
- [`WORKAROUNDS.md`](WORKAROUNDS.md) — the SAP-side behaviour behind several of
|
|
130
|
+
these answers, and what a consumer does about it
|
|
129
131
|
- [`TROUBLESHOOTING.md`](TROUBLESHOOTING.md) — answers that are accurate about
|
|
130
132
|
the wrong thing, including the `S_ABPLNGVS` language-version refusal
|
|
131
133
|
- [`../../examples`](../../examples) — the sequences, written out
|