arc-1 0.7.2 → 0.9.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 +32 -6
- package/dist/adt/btp.d.ts +14 -3
- package/dist/adt/btp.d.ts.map +1 -1
- package/dist/adt/btp.js +18 -3
- package/dist/adt/btp.js.map +1 -1
- package/dist/adt/client.d.ts +30 -1
- package/dist/adt/client.d.ts.map +1 -1
- package/dist/adt/client.js +72 -2
- package/dist/adt/client.js.map +1 -1
- package/dist/adt/codeintel.d.ts +23 -0
- package/dist/adt/codeintel.d.ts.map +1 -1
- package/dist/adt/codeintel.js +39 -0
- package/dist/adt/codeintel.js.map +1 -1
- package/dist/adt/config.d.ts +4 -0
- package/dist/adt/config.d.ts.map +1 -1
- package/dist/adt/config.js.map +1 -1
- package/dist/adt/crud.d.ts +28 -4
- package/dist/adt/crud.d.ts.map +1 -1
- package/dist/adt/crud.js +74 -28
- package/dist/adt/crud.js.map +1 -1
- package/dist/adt/diagnostics.d.ts +7 -1
- package/dist/adt/diagnostics.d.ts.map +1 -1
- package/dist/adt/diagnostics.js +38 -9
- package/dist/adt/diagnostics.js.map +1 -1
- package/dist/adt/errors.d.ts +1 -1
- package/dist/adt/errors.d.ts.map +1 -1
- package/dist/adt/errors.js +47 -2
- package/dist/adt/errors.js.map +1 -1
- package/dist/adt/http.d.ts +43 -0
- package/dist/adt/http.d.ts.map +1 -1
- package/dist/adt/http.js +93 -0
- package/dist/adt/http.js.map +1 -1
- package/dist/adt/transport.d.ts +22 -2
- package/dist/adt/transport.d.ts.map +1 -1
- package/dist/adt/transport.js +41 -13
- package/dist/adt/transport.js.map +1 -1
- package/dist/adt/xml-parser.d.ts +4 -0
- package/dist/adt/xml-parser.d.ts.map +1 -1
- package/dist/adt/xml-parser.js +6 -2
- package/dist/adt/xml-parser.js.map +1 -1
- package/dist/cli.js +13 -0
- package/dist/cli.js.map +1 -1
- package/dist/context/compressor.d.ts +1 -1
- package/dist/context/compressor.js +7 -11
- package/dist/context/compressor.js.map +1 -1
- package/dist/handlers/intent.d.ts +21 -0
- package/dist/handlers/intent.d.ts.map +1 -1
- package/dist/handlers/intent.js +378 -78
- package/dist/handlers/intent.js.map +1 -1
- package/dist/handlers/schemas.d.ts +5 -2
- package/dist/handlers/schemas.d.ts.map +1 -1
- package/dist/handlers/schemas.js +14 -4
- package/dist/handlers/schemas.js.map +1 -1
- package/dist/handlers/tools.d.ts.map +1 -1
- package/dist/handlers/tools.js +42 -10
- package/dist/handlers/tools.js.map +1 -1
- package/dist/probe/catalog.d.ts.map +1 -1
- package/dist/probe/catalog.js +19 -11
- package/dist/probe/catalog.js.map +1 -1
- package/dist/server/audit.d.ts +41 -1
- package/dist/server/audit.d.ts.map +1 -1
- package/dist/server/audit.js.map +1 -1
- package/dist/server/config.d.ts.map +1 -1
- package/dist/server/config.js +32 -0
- package/dist/server/config.js.map +1 -1
- package/dist/server/http.d.ts +25 -0
- package/dist/server/http.d.ts.map +1 -1
- package/dist/server/http.js +149 -7
- package/dist/server/http.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 +40 -3
- package/dist/server/server.js.map +1 -1
- package/dist/server/stateless-client-store.d.ts +97 -0
- package/dist/server/stateless-client-store.d.ts.map +1 -0
- package/dist/server/stateless-client-store.js +334 -0
- package/dist/server/stateless-client-store.js.map +1 -0
- package/dist/server/types.d.ts +12 -0
- package/dist/server/types.d.ts.map +1 -1
- package/dist/server/types.js +2 -0
- package/dist/server/types.js.map +1 -1
- package/dist/server/xsuaa.d.ts +11 -43
- package/dist/server/xsuaa.d.ts.map +1 -1
- package/dist/server/xsuaa.js +12 -177
- package/dist/server/xsuaa.js.map +1 -1
- package/package.json +10 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codeintel.js","sourceRoot":"","sources":["../../src/adt/codeintel.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codeintel.js","sourceRoot":"","sources":["../../src/adt/codeintel.ts"],"names":[],"mappings":"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"}
|
package/dist/adt/config.d.ts
CHANGED
|
@@ -39,6 +39,10 @@ export interface AdtClientConfig {
|
|
|
39
39
|
insecure: boolean;
|
|
40
40
|
/** Cookie-based auth (alternative to basic auth) */
|
|
41
41
|
cookies: Record<string, string>;
|
|
42
|
+
/** Path to cookie file — enables hot-reload on stale auth */
|
|
43
|
+
cookieFile?: string;
|
|
44
|
+
/** Inline cookie string — stored for config awareness (no hot-reload) */
|
|
45
|
+
cookieString?: string;
|
|
42
46
|
/** Safety configuration */
|
|
43
47
|
safety: SafetyConfig;
|
|
44
48
|
/** Feature detection config */
|
package/dist/adt/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/adt/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,gEAAgE;AAChE,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC;AAEhD,0DAA0D;AAC1D,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,WAAW,CAAC;IACrB,IAAI,EAAE,WAAW,CAAC;IAClB,GAAG,EAAE,WAAW,CAAC;IACjB,IAAI,EAAE,WAAW,CAAC;IAClB,GAAG,EAAE,WAAW,CAAC;IACjB,SAAS,EAAE,WAAW,CAAC;IACvB,OAAO,EAAE,WAAW,CAAC;IACrB,GAAG,EAAE,WAAW,CAAC;CAClB;AAED,8CAA8C;AAC9C,wBAAgB,oBAAoB,IAAI,aAAa,CAYpD;AAED,+BAA+B;AAC/B,MAAM,WAAW,eAAe;IAC9B,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,4BAA4B;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,2BAA2B;IAC3B,MAAM,EAAE,YAAY,CAAC;IACrB,+BAA+B;IAC/B,QAAQ,EAAE,aAAa,CAAC;IACxB,6BAA6B;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,+EAA+E;IAC/E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,wFAAwF;IACxF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,uCAAuC;AACvC,wBAAgB,sBAAsB,IAAI,eAAe,CAaxD"}
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/adt/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,gEAAgE;AAChE,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC;AAEhD,0DAA0D;AAC1D,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,WAAW,CAAC;IACrB,IAAI,EAAE,WAAW,CAAC;IAClB,GAAG,EAAE,WAAW,CAAC;IACjB,IAAI,EAAE,WAAW,CAAC;IAClB,GAAG,EAAE,WAAW,CAAC;IACjB,SAAS,EAAE,WAAW,CAAC;IACvB,OAAO,EAAE,WAAW,CAAC;IACrB,GAAG,EAAE,WAAW,CAAC;CAClB;AAED,8CAA8C;AAC9C,wBAAgB,oBAAoB,IAAI,aAAa,CAYpD;AAED,+BAA+B;AAC/B,MAAM,WAAW,eAAe;IAC9B,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,4BAA4B;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2BAA2B;IAC3B,MAAM,EAAE,YAAY,CAAC;IACrB,+BAA+B;IAC/B,QAAQ,EAAE,aAAa,CAAC;IACxB,6BAA6B;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,+EAA+E;IAC/E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,wFAAwF;IACxF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,uCAAuC;AACvC,wBAAgB,sBAAsB,IAAI,eAAe,CAaxD"}
|
package/dist/adt/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/adt/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAkBvD,8CAA8C;AAC9C,MAAM,UAAU,oBAAoB;IAClC,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,MAAM;QACf,IAAI,EAAE,MAAM;QACZ,GAAG,EAAE,MAAM;QACX,IAAI,EAAE,MAAM;QACZ,GAAG,EAAE,MAAM;QACX,SAAS,EAAE,MAAM;QACjB,OAAO,EAAE,MAAM;QACf,GAAG,EAAE,MAAM;KACZ,CAAC;AACJ,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/adt/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAkBvD,8CAA8C;AAC9C,MAAM,UAAU,oBAAoB;IAClC,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,MAAM;QACf,IAAI,EAAE,MAAM;QACZ,GAAG,EAAE,MAAM;QACX,IAAI,EAAE,MAAM;QACZ,GAAG,EAAE,MAAM;QACX,SAAS,EAAE,MAAM;QACjB,OAAO,EAAE,MAAM;QACf,GAAG,EAAE,MAAM;KACZ,CAAC;AACJ,CAAC;AAyDD,uCAAuC;AACvC,MAAM,UAAU,sBAAsB;IACpC,OAAO;QACL,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,EAAE;QACX,MAAM,EAAE,wBAAwB,EAAE;QAClC,QAAQ,EAAE,oBAAoB,EAAE;QAChC,OAAO,EAAE,KAAK;KACf,CAAC;AACJ,CAAC"}
|
package/dist/adt/crud.d.ts
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
* This was a hard-won lesson in the fr0ster codebase — earlier versions
|
|
10
10
|
* leaked locks on error, blocking the object for other developers.
|
|
11
11
|
*/
|
|
12
|
+
import { AdtApiError } from './errors.js';
|
|
12
13
|
import type { AdtHttpClient } from './http.js';
|
|
13
14
|
import { type SafetyConfig } from './safety.js';
|
|
14
15
|
/** Lock result from SAP */
|
|
@@ -18,11 +19,11 @@ export interface LockResult {
|
|
|
18
19
|
isLocal: boolean;
|
|
19
20
|
}
|
|
20
21
|
/** Lock an ABAP object for editing */
|
|
21
|
-
export declare function lockObject(http: AdtHttpClient, safety: SafetyConfig, objectUrl: string, accessMode?: string): Promise<LockResult>;
|
|
22
|
+
export declare function lockObject(http: AdtHttpClient, safety: SafetyConfig, objectUrl: string, accessMode?: string, abapRelease?: string): Promise<LockResult>;
|
|
22
23
|
/** Unlock an ABAP object */
|
|
23
24
|
export declare function unlockObject(http: AdtHttpClient, objectUrl: string, lockHandle: string): Promise<void>;
|
|
24
25
|
/** Create a new ABAP object */
|
|
25
|
-
export declare function createObject(http: AdtHttpClient, safety: SafetyConfig, objectUrl: string, body: string, contentType?: string, transport?: string, packageName?: string): Promise<string>;
|
|
26
|
+
export declare function createObject(http: AdtHttpClient, safety: SafetyConfig, objectUrl: string, body: string, contentType?: string, transport?: string, packageName?: string, abapRelease?: string): Promise<string>;
|
|
26
27
|
/** Update source code of an ABAP object (requires lock) */
|
|
27
28
|
export declare function updateSource(http: AdtHttpClient, safety: SafetyConfig, sourceUrl: string, source: string, lockHandle: string, transport?: string): Promise<void>;
|
|
28
29
|
/** Update object metadata XML (requires lock) */
|
|
@@ -33,10 +34,33 @@ export declare function deleteObject(http: AdtHttpClient, safety: SafetyConfig,
|
|
|
33
34
|
* High-level: update source with guaranteed unlock.
|
|
34
35
|
* lock → updateSource → unlock (in try-finally)
|
|
35
36
|
*/
|
|
36
|
-
export declare function safeUpdateSource(http: AdtHttpClient, safety: SafetyConfig, objectUrl: string, sourceUrl: string, source: string, transport?: string): Promise<void>;
|
|
37
|
+
export declare function safeUpdateSource(http: AdtHttpClient, safety: SafetyConfig, objectUrl: string, sourceUrl: string, source: string, transport?: string, abapRelease?: string): Promise<void>;
|
|
37
38
|
/**
|
|
38
39
|
* High-level: update object metadata with guaranteed unlock.
|
|
39
40
|
* lock → updateObject → unlock (in try-finally)
|
|
40
41
|
*/
|
|
41
|
-
export declare function safeUpdateObject(http: AdtHttpClient, safety: SafetyConfig, objectUrl: string, body: string, contentType: string, transport?: string): Promise<void>;
|
|
42
|
+
export declare function safeUpdateObject(http: AdtHttpClient, safety: SafetyConfig, objectUrl: string, body: string, contentType: string, transport?: string, abapRelease?: string): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Convert an ICM-intercepted lock/exists conflict into a clean AdtApiError(409).
|
|
45
|
+
*
|
|
46
|
+
* Two-layer detection (per ADR-0002):
|
|
47
|
+
*
|
|
48
|
+
* Layer 1 — structured exception type (release-agnostic, robust):
|
|
49
|
+
* <exc:exception><type id="ExceptionResourceNoAccess"/> → reclassify regardless of status.
|
|
50
|
+
* Same for ExceptionResourceLockedByAnotherUser.
|
|
51
|
+
*
|
|
52
|
+
* Layer 2 — HTML body marker, scoped by SAP_BASIS release:
|
|
53
|
+
* Some SAP releases (NW 7.50) emit an ICM HTML "Logon Error Message" page when the ADT
|
|
54
|
+
* handler tries to throw CX_ADT_RES_NO_ACCESS through cookie auth. The "Logon Error
|
|
55
|
+
* Message" string appears in the <title> only on systems whose ICM uses the English
|
|
56
|
+
* error-page template — re-localizing the system would shift the marker. So the heuristic
|
|
57
|
+
* is gated on `cachedFeatures.abapRelease < 751` (or undefined for CLI/test paths,
|
|
58
|
+
* where the startup probe didn't populate features).
|
|
59
|
+
* The fallback message is intentionally neutral ("may be locked or already exist") because
|
|
60
|
+
* the ICM intercept loses the original SAP exception type — we cannot disambiguate.
|
|
61
|
+
*
|
|
62
|
+
* Returns the reclassified AdtApiError(409) (caller throws), or undefined when the original
|
|
63
|
+
* error should be rethrown unchanged.
|
|
64
|
+
*/
|
|
65
|
+
export declare function convertHtmlConflictToProperError(err: unknown, objectUrl: string, abapRelease?: string): AdtApiError | undefined;
|
|
42
66
|
//# sourceMappingURL=crud.d.ts.map
|
package/dist/adt/crud.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crud.d.ts","sourceRoot":"","sources":["../../src/adt/crud.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"crud.d.ts","sourceRoot":"","sources":["../../src/adt/crud.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,WAAW,EAAwB,MAAM,aAAa,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAiC,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAC/E,2BAA2B;AAC3B,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,sCAAsC;AACtC,wBAAsB,UAAU,CAC9B,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,MAAM,EACjB,UAAU,SAAW,EACrB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,UAAU,CAAC,CAmCrB;AAED,4BAA4B;AAC5B,wBAAsB,YAAY,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5G;AAkBD,+BAA+B;AAC/B,wBAAsB,YAAY,CAChC,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,WAAW,SAAkB,EAC7B,SAAS,CAAC,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,EACpB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,CA2BjB;AAOD,2DAA2D;AAC3D,wBAAsB,YAAY,CAChC,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAaf;AAED,iDAAiD;AACjD,wBAAsB,YAAY,CAChC,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAsBf;AAED,4CAA4C;AAC5C,wBAAsB,YAAY,CAChC,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CASf;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAUf;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAUf;AASD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gCAAgC,CAC9C,GAAG,EAAE,OAAO,EACZ,SAAS,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,GACnB,WAAW,GAAG,SAAS,CA2CzB"}
|
package/dist/adt/crud.js
CHANGED
|
@@ -9,10 +9,10 @@
|
|
|
9
9
|
* This was a hard-won lesson in the fr0ster codebase — earlier versions
|
|
10
10
|
* leaked locks on error, blocking the object for other developers.
|
|
11
11
|
*/
|
|
12
|
-
import { AdtApiError } from './errors.js';
|
|
12
|
+
import { AdtApiError, extractExceptionType } from './errors.js';
|
|
13
13
|
import { checkOperation, OperationType } from './safety.js';
|
|
14
14
|
/** Lock an ABAP object for editing */
|
|
15
|
-
export async function lockObject(http, safety, objectUrl, accessMode = 'MODIFY') {
|
|
15
|
+
export async function lockObject(http, safety, objectUrl, accessMode = 'MODIFY', abapRelease) {
|
|
16
16
|
if (accessMode === 'MODIFY') {
|
|
17
17
|
checkOperation(safety, OperationType.Lock, 'LockObject');
|
|
18
18
|
}
|
|
@@ -25,27 +25,9 @@ export async function lockObject(http, safety, objectUrl, accessMode = 'MODIFY')
|
|
|
25
25
|
});
|
|
26
26
|
}
|
|
27
27
|
catch (err) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
// Reclassify as a clear lock-conflict error so the LLM doesn't chase auth red herrings.
|
|
32
|
-
// CX_ADT_RES_NO_ACCESS maps to 403 server-side, but with cookie auth (no Basic Auth
|
|
33
|
-
// header) ICM transforms it to 401 "no logon data". ARC-1's 401 retry handler then
|
|
34
|
-
// clears the cookie jar and retries without cookies, which returns 400. So we see
|
|
35
|
-
// 400, 401, or 403 depending on timing — all with the same HTML login page body.
|
|
36
|
-
//
|
|
37
|
-
// The "Logon Error Message" HTML body is the de-facto NW 7.50 gate — S/4 returns
|
|
38
|
-
// structured XML with <exc:exception> here (no "Logon Error Message" string), and
|
|
39
|
-
// S/4's auth-failure HTML is "Anmeldung fehlgeschlagen" (also no match). So this
|
|
40
|
-
// branch self-scopes without an explicit detectSystemCapabilities() check.
|
|
41
|
-
if (err instanceof AdtApiError &&
|
|
42
|
-
(err.statusCode === 400 || err.statusCode === 401 || err.statusCode === 403) &&
|
|
43
|
-
err.responseBody?.includes('Logon Error Message')) {
|
|
44
|
-
const name = objectUrl.split('/').pop() ?? objectUrl;
|
|
45
|
-
// Throw as 409 with "locked by" in the message so classifySapDomainError routes
|
|
46
|
-
// to the 'lock-conflict' category (not the 423 'enqueue-error' / invalid-handle path).
|
|
47
|
-
throw new AdtApiError(`Object ${name} is locked by another session. Close the editor (Eclipse, SE80) or release the lock in SM12, then retry.`, 409, objectUrl);
|
|
48
|
-
}
|
|
28
|
+
const conv = convertHtmlConflictToProperError(err, objectUrl, abapRelease);
|
|
29
|
+
if (conv)
|
|
30
|
+
throw conv;
|
|
49
31
|
throw err;
|
|
50
32
|
}
|
|
51
33
|
// Parse lock response (asx:abap format) — simple regex extraction
|
|
@@ -79,7 +61,7 @@ const CONTENT_TYPE_FALLBACKS = {
|
|
|
79
61
|
'application/vnd.sap.adt.dataelements.v2+xml': 'application/vnd.sap.adt.dataelements.v1+xml',
|
|
80
62
|
};
|
|
81
63
|
/** Create a new ABAP object */
|
|
82
|
-
export async function createObject(http, safety, objectUrl, body, contentType = 'application/*', transport, packageName) {
|
|
64
|
+
export async function createObject(http, safety, objectUrl, body, contentType = 'application/*', transport, packageName, abapRelease) {
|
|
83
65
|
checkOperation(safety, OperationType.Create, 'CreateObject');
|
|
84
66
|
const params = [];
|
|
85
67
|
if (transport) {
|
|
@@ -94,6 +76,11 @@ export async function createObject(http, safety, objectUrl, body, contentType =
|
|
|
94
76
|
return resp.body;
|
|
95
77
|
}
|
|
96
78
|
catch (err) {
|
|
79
|
+
// Reclassify lock/exists conflicts that arrive as HTML or via structured
|
|
80
|
+
// exception type — same precedence as the lockObject path.
|
|
81
|
+
const conv = convertHtmlConflictToProperError(err, objectUrl, abapRelease);
|
|
82
|
+
if (conv)
|
|
83
|
+
throw conv;
|
|
97
84
|
const fallback = CONTENT_TYPE_FALLBACKS[contentType];
|
|
98
85
|
if (fallback && isUnsupportedMediaTypeError(err)) {
|
|
99
86
|
const resp = await http.post(url, body, fallback);
|
|
@@ -156,9 +143,9 @@ export async function deleteObject(http, safety, objectUrl, lockHandle, transpor
|
|
|
156
143
|
* High-level: update source with guaranteed unlock.
|
|
157
144
|
* lock → updateSource → unlock (in try-finally)
|
|
158
145
|
*/
|
|
159
|
-
export async function safeUpdateSource(http, safety, objectUrl, sourceUrl, source, transport) {
|
|
146
|
+
export async function safeUpdateSource(http, safety, objectUrl, sourceUrl, source, transport, abapRelease) {
|
|
160
147
|
await http.withStatefulSession(async (session) => {
|
|
161
|
-
const lock = await lockObject(session, safety, objectUrl);
|
|
148
|
+
const lock = await lockObject(session, safety, objectUrl, 'MODIFY', abapRelease);
|
|
162
149
|
const effectiveTransport = transport ?? (lock.corrNr || undefined);
|
|
163
150
|
try {
|
|
164
151
|
await updateSource(session, safety, sourceUrl, source, lock.lockHandle, effectiveTransport);
|
|
@@ -172,9 +159,9 @@ export async function safeUpdateSource(http, safety, objectUrl, sourceUrl, sourc
|
|
|
172
159
|
* High-level: update object metadata with guaranteed unlock.
|
|
173
160
|
* lock → updateObject → unlock (in try-finally)
|
|
174
161
|
*/
|
|
175
|
-
export async function safeUpdateObject(http, safety, objectUrl, body, contentType, transport) {
|
|
162
|
+
export async function safeUpdateObject(http, safety, objectUrl, body, contentType, transport, abapRelease) {
|
|
176
163
|
await http.withStatefulSession(async (session) => {
|
|
177
|
-
const lock = await lockObject(session, safety, objectUrl);
|
|
164
|
+
const lock = await lockObject(session, safety, objectUrl, 'MODIFY', abapRelease);
|
|
178
165
|
const effectiveTransport = transport ?? (lock.corrNr || undefined);
|
|
179
166
|
try {
|
|
180
167
|
await updateObject(session, safety, objectUrl, body, lock.lockHandle, contentType, effectiveTransport);
|
|
@@ -190,4 +177,63 @@ function extractXmlValue(xml, tag) {
|
|
|
190
177
|
const match = xml.match(regex);
|
|
191
178
|
return match?.[1] ?? '';
|
|
192
179
|
}
|
|
180
|
+
/**
|
|
181
|
+
* Convert an ICM-intercepted lock/exists conflict into a clean AdtApiError(409).
|
|
182
|
+
*
|
|
183
|
+
* Two-layer detection (per ADR-0002):
|
|
184
|
+
*
|
|
185
|
+
* Layer 1 — structured exception type (release-agnostic, robust):
|
|
186
|
+
* <exc:exception><type id="ExceptionResourceNoAccess"/> → reclassify regardless of status.
|
|
187
|
+
* Same for ExceptionResourceLockedByAnotherUser.
|
|
188
|
+
*
|
|
189
|
+
* Layer 2 — HTML body marker, scoped by SAP_BASIS release:
|
|
190
|
+
* Some SAP releases (NW 7.50) emit an ICM HTML "Logon Error Message" page when the ADT
|
|
191
|
+
* handler tries to throw CX_ADT_RES_NO_ACCESS through cookie auth. The "Logon Error
|
|
192
|
+
* Message" string appears in the <title> only on systems whose ICM uses the English
|
|
193
|
+
* error-page template — re-localizing the system would shift the marker. So the heuristic
|
|
194
|
+
* is gated on `cachedFeatures.abapRelease < 751` (or undefined for CLI/test paths,
|
|
195
|
+
* where the startup probe didn't populate features).
|
|
196
|
+
* The fallback message is intentionally neutral ("may be locked or already exist") because
|
|
197
|
+
* the ICM intercept loses the original SAP exception type — we cannot disambiguate.
|
|
198
|
+
*
|
|
199
|
+
* Returns the reclassified AdtApiError(409) (caller throws), or undefined when the original
|
|
200
|
+
* error should be rethrown unchanged.
|
|
201
|
+
*/
|
|
202
|
+
export function convertHtmlConflictToProperError(err, objectUrl, abapRelease) {
|
|
203
|
+
if (!(err instanceof AdtApiError))
|
|
204
|
+
return undefined;
|
|
205
|
+
const body = err.responseBody ?? '';
|
|
206
|
+
const name = objectUrl.split('/').pop() ?? objectUrl;
|
|
207
|
+
// Layer 1: structured exception type
|
|
208
|
+
const typeId = extractExceptionType(body);
|
|
209
|
+
if (typeId === 'ExceptionResourceNoAccess' || typeId === 'ExceptionResourceLockedByAnotherUser') {
|
|
210
|
+
return new AdtApiError(`Object ${name} is locked by another session. Close the editor (Eclipse, SE80) or release the lock in SM12, then retry.`, 409, objectUrl, body);
|
|
211
|
+
}
|
|
212
|
+
// Layer 2: HTML body marker, scoped by release
|
|
213
|
+
//
|
|
214
|
+
// Case-insensitive HTML detection: real SAP ICM error pages use a mix of casings
|
|
215
|
+
// — lowercase `<html>` (NPL 7.50, verified live), uppercase `<HTML>` (some
|
|
216
|
+
// releases / language packs), and `<!DOCTYPE HTML PUBLIC ...>` (W3C-style
|
|
217
|
+
// doctype). Picking ONE casing (codex review of PR #202 pre-fix used
|
|
218
|
+
// lowercase-only) regresses #196's behavior on releases that emit any of the
|
|
219
|
+
// other two. The "Logon Error Message" marker is itself emitted as written
|
|
220
|
+
// (no localization on that string), so it can stay case-sensitive.
|
|
221
|
+
const release = parseReleaseNum(abapRelease);
|
|
222
|
+
const fallbackEligible = release === 0 || release < 751;
|
|
223
|
+
const looksLikeHtml = /<!doctype\s+html|<html[\s>]/i.test(body);
|
|
224
|
+
const isHtml4xx = (err.statusCode === 400 || err.statusCode === 401 || err.statusCode === 403) &&
|
|
225
|
+
looksLikeHtml &&
|
|
226
|
+
body.includes('Logon Error Message');
|
|
227
|
+
if (fallbackEligible && isHtml4xx) {
|
|
228
|
+
return new AdtApiError(`Operation conflicted on ${name} — object may be locked by another session or already exist. ` +
|
|
229
|
+
`Run SAPSearch to verify the object exists, then either update the existing object or wait for the lock to release (SM12).`, 409, objectUrl, body);
|
|
230
|
+
}
|
|
231
|
+
return undefined;
|
|
232
|
+
}
|
|
233
|
+
function parseReleaseNum(abapRelease) {
|
|
234
|
+
if (!abapRelease)
|
|
235
|
+
return 0;
|
|
236
|
+
const num = Number.parseInt(abapRelease.replace(/\D/g, ''), 10);
|
|
237
|
+
return Number.isFinite(num) ? num : 0;
|
|
238
|
+
}
|
|
193
239
|
//# sourceMappingURL=crud.js.map
|
package/dist/adt/crud.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crud.js","sourceRoot":"","sources":["../../src/adt/crud.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"crud.js","sourceRoot":"","sources":["../../src/adt/crud.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,7 +40,11 @@ export declare function listDumps(http: AdtHttpClient, safety: SafetyConfig, opt
|
|
|
40
40
|
* 1. XML metadata (chapters, links, attributes)
|
|
41
41
|
* 2. Formatted plain text (full dump content)
|
|
42
42
|
*
|
|
43
|
-
* The dump ID
|
|
43
|
+
* The dump ID from `listDumps` already arrives URL-encoded (the SAP feed
|
|
44
|
+
* encodes spaces in the server/user/client/dump-number suffix as `%20`).
|
|
45
|
+
* When a caller passes a raw ID (e.g. copied from ST22 with literal
|
|
46
|
+
* whitespace), we encode it ourselves so the path stays valid. The
|
|
47
|
+
* detail payload keeps the caller's original ID for round-tripping.
|
|
44
48
|
*/
|
|
45
49
|
export declare function getDump(http: AdtHttpClient, safety: SafetyConfig, dumpId: string): Promise<DumpDetail>;
|
|
46
50
|
/**
|
|
@@ -159,5 +163,7 @@ export declare function parseTraceStatements(xml: string): TraceStatement[];
|
|
|
159
163
|
* Parse trace database accesses XML.
|
|
160
164
|
*/
|
|
161
165
|
export declare function parseTraceDbAccesses(xml: string): TraceDbAccess[];
|
|
166
|
+
export declare function stripHtmlTags(html: string): string;
|
|
167
|
+
export declare function decodeHtmlEntities(text: string): string;
|
|
162
168
|
export {};
|
|
163
169
|
//# sourceMappingURL=diagnostics.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/adt/diagnostics.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAiC,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,KAAK,EAEV,UAAU,EACV,SAAS,EAET,kBAAkB,EAClB,iBAAiB,EAIjB,kBAAkB,EAClB,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,cAAc,EACf,MAAM,YAAY,CAAC;AAUpB,MAAM,WAAW,gBAAgB;IAC/B,qCAAqC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,gBAAgB;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,yBAA0B,SAAQ,gBAAgB;CAAG;AAEtE,MAAM,WAAW,wBAAyB,SAAQ,gBAAgB;CAAG;AAErE;;;;;GAKG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,SAAS,EAAE,CAAC,CAStB;AAED
|
|
1
|
+
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/adt/diagnostics.ts"],"names":[],"mappings":"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"}
|
package/dist/adt/diagnostics.js
CHANGED
|
@@ -35,21 +35,38 @@ export async function listDumps(http, safety, options) {
|
|
|
35
35
|
* 1. XML metadata (chapters, links, attributes)
|
|
36
36
|
* 2. Formatted plain text (full dump content)
|
|
37
37
|
*
|
|
38
|
-
* The dump ID
|
|
38
|
+
* The dump ID from `listDumps` already arrives URL-encoded (the SAP feed
|
|
39
|
+
* encodes spaces in the server/user/client/dump-number suffix as `%20`).
|
|
40
|
+
* When a caller passes a raw ID (e.g. copied from ST22 with literal
|
|
41
|
+
* whitespace), we encode it ourselves so the path stays valid. The
|
|
42
|
+
* detail payload keeps the caller's original ID for round-tripping.
|
|
39
43
|
*/
|
|
40
44
|
export async function getDump(http, safety, dumpId) {
|
|
41
45
|
checkOperation(safety, OperationType.Read, 'GetDump');
|
|
46
|
+
const safeId = normalizeDumpId(dumpId);
|
|
42
47
|
// Fetch XML metadata and formatted text in parallel
|
|
43
48
|
const [xmlResp, textResp] = await Promise.all([
|
|
44
|
-
http.get(`/sap/bc/adt/runtime/dump/${
|
|
49
|
+
http.get(`/sap/bc/adt/runtime/dump/${safeId}`, {
|
|
45
50
|
Accept: 'application/vnd.sap.adt.runtime.dump.v1+xml',
|
|
46
51
|
}),
|
|
47
|
-
http.get(`/sap/bc/adt/runtime/dump/${
|
|
52
|
+
http.get(`/sap/bc/adt/runtime/dump/${safeId}/formatted`, {
|
|
48
53
|
Accept: 'text/plain',
|
|
49
54
|
}),
|
|
50
55
|
]);
|
|
51
56
|
return parseDumpDetail(xmlResp.body, textResp.body, dumpId);
|
|
52
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* Idempotently URL-encode a dump ID. If the value already contains a `%`
|
|
60
|
+
* sequence we treat it as already-encoded (the listing endpoint emits
|
|
61
|
+
* `%20` for spaces); otherwise we encode it once. Trims surrounding
|
|
62
|
+
* whitespace which would otherwise be encoded as `%20` and break lookup.
|
|
63
|
+
*/
|
|
64
|
+
function normalizeDumpId(dumpId) {
|
|
65
|
+
const trimmed = String(dumpId ?? '').trim();
|
|
66
|
+
if (!trimmed)
|
|
67
|
+
return '';
|
|
68
|
+
return trimmed.includes('%') ? trimmed : encodeURIComponent(trimmed);
|
|
69
|
+
}
|
|
53
70
|
// ─── System Messages + Gateway Errors ──────────────────────────────
|
|
54
71
|
/**
|
|
55
72
|
* List SM02 system messages.
|
|
@@ -896,13 +913,24 @@ function sanitizeHtmlCellValue(raw) {
|
|
|
896
913
|
value = decodeHtmlEntities(value);
|
|
897
914
|
return value.replace(/\s+/g, ' ').trim();
|
|
898
915
|
}
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
function
|
|
916
|
+
// Loop until stable so adversarial nested input (e.g. `<<script>script>`) is fully
|
|
917
|
+
// stripped — single-pass regex would leave `<script>` behind. Closes CodeQL alert
|
|
918
|
+
// `js/incomplete-multi-character-sanitization` (alert #6).
|
|
919
|
+
export function stripHtmlTags(html) {
|
|
920
|
+
let result = String(html ?? '');
|
|
921
|
+
let prev;
|
|
922
|
+
do {
|
|
923
|
+
prev = result;
|
|
924
|
+
result = result.replace(/<[^>]*>/g, '');
|
|
925
|
+
} while (result !== prev);
|
|
926
|
+
return result;
|
|
927
|
+
}
|
|
928
|
+
// `&` is decoded LAST so chained entities like `&lt;` resolve to `<`
|
|
929
|
+
// (the literal four-char text) rather than `<`. Closes CodeQL alert
|
|
930
|
+
// `js/double-escaping` (alert #7).
|
|
931
|
+
export function decodeHtmlEntities(text) {
|
|
903
932
|
return String(text ?? '')
|
|
904
933
|
.replace(/ /gi, ' ')
|
|
905
|
-
.replace(/&/gi, '&')
|
|
906
934
|
.replace(/</gi, '<')
|
|
907
935
|
.replace(/>/gi, '>')
|
|
908
936
|
.replace(/"/gi, '"')
|
|
@@ -910,7 +938,8 @@ function decodeHtmlEntities(text) {
|
|
|
910
938
|
.replace(/–/gi, '–')
|
|
911
939
|
.replace(/—/gi, '—')
|
|
912
940
|
.replace(/&#(\d+);/g, (_, code) => String.fromCodePoint(Number(code)))
|
|
913
|
-
.replace(/&#x([0-9a-f]+);/gi, (_, code) => String.fromCodePoint(parseInt(code, 16)))
|
|
941
|
+
.replace(/&#x([0-9a-f]+);/gi, (_, code) => String.fromCodePoint(parseInt(code, 16)))
|
|
942
|
+
.replace(/&/gi, '&');
|
|
914
943
|
}
|
|
915
944
|
function decodeUriComponentSafe(value) {
|
|
916
945
|
if (!value?.includes('%'))
|