arc-1 1.0.2 → 1.1.1

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.
Files changed (171) hide show
  1. package/README.md +15 -1
  2. package/bin/arc1-cli.js +3 -7
  3. package/bin/arc1.js +4 -9
  4. package/dist/adt/abapgit.d.ts +10 -5
  5. package/dist/adt/abapgit.d.ts.map +1 -1
  6. package/dist/adt/abapgit.js +357 -76
  7. package/dist/adt/abapgit.js.map +1 -1
  8. package/dist/adt/atc.d.ts +59 -0
  9. package/dist/adt/atc.d.ts.map +1 -0
  10. package/dist/adt/atc.js +373 -0
  11. package/dist/adt/atc.js.map +1 -0
  12. package/dist/adt/aunit-package.d.ts +22 -0
  13. package/dist/adt/aunit-package.d.ts.map +1 -0
  14. package/dist/adt/aunit-package.js +78 -0
  15. package/dist/adt/aunit-package.js.map +1 -0
  16. package/dist/adt/aunit.d.ts +143 -0
  17. package/dist/adt/aunit.d.ts.map +1 -0
  18. package/dist/adt/aunit.js +987 -0
  19. package/dist/adt/aunit.js.map +1 -0
  20. package/dist/adt/bsp-path.d.ts +15 -0
  21. package/dist/adt/bsp-path.d.ts.map +1 -0
  22. package/dist/adt/bsp-path.js +33 -0
  23. package/dist/adt/bsp-path.js.map +1 -0
  24. package/dist/adt/client.d.ts +23 -9
  25. package/dist/adt/client.d.ts.map +1 -1
  26. package/dist/adt/client.js +84 -75
  27. package/dist/adt/client.js.map +1 -1
  28. package/dist/adt/config.d.ts +2 -0
  29. package/dist/adt/config.d.ts.map +1 -1
  30. package/dist/adt/config.js +1 -0
  31. package/dist/adt/config.js.map +1 -1
  32. package/dist/adt/devtools.d.ts +8 -30
  33. package/dist/adt/devtools.d.ts.map +1 -1
  34. package/dist/adt/devtools.js +41 -218
  35. package/dist/adt/devtools.js.map +1 -1
  36. package/dist/adt/diagnostics.d.ts +1 -1
  37. package/dist/adt/diagnostics.d.ts.map +1 -1
  38. package/dist/adt/diagnostics.js +12 -12
  39. package/dist/adt/diagnostics.js.map +1 -1
  40. package/dist/adt/errors.d.ts +7 -0
  41. package/dist/adt/errors.d.ts.map +1 -1
  42. package/dist/adt/errors.js +7 -0
  43. package/dist/adt/errors.js.map +1 -1
  44. package/dist/adt/features.d.ts +9 -3
  45. package/dist/adt/features.d.ts.map +1 -1
  46. package/dist/adt/features.js +40 -8
  47. package/dist/adt/features.js.map +1 -1
  48. package/dist/adt/gcts.d.ts +12 -45
  49. package/dist/adt/gcts.d.ts.map +1 -1
  50. package/dist/adt/gcts.js +299 -171
  51. package/dist/adt/gcts.js.map +1 -1
  52. package/dist/adt/http-deadline.d.ts +23 -0
  53. package/dist/adt/http-deadline.d.ts.map +1 -0
  54. package/dist/adt/http-deadline.js +106 -0
  55. package/dist/adt/http-deadline.js.map +1 -0
  56. package/dist/adt/http-wire-body.d.ts +2 -0
  57. package/dist/adt/http-wire-body.d.ts.map +1 -0
  58. package/dist/adt/http-wire-body.js +14 -0
  59. package/dist/adt/http-wire-body.js.map +1 -0
  60. package/dist/adt/http.d.ts +10 -24
  61. package/dist/adt/http.d.ts.map +1 -1
  62. package/dist/adt/http.js +89 -53
  63. package/dist/adt/http.js.map +1 -1
  64. package/dist/adt/path-safety.d.ts +16 -0
  65. package/dist/adt/path-safety.d.ts.map +1 -0
  66. package/dist/adt/path-safety.js +101 -0
  67. package/dist/adt/path-safety.js.map +1 -0
  68. package/dist/adt/semaphore.d.ts +2 -2
  69. package/dist/adt/semaphore.d.ts.map +1 -1
  70. package/dist/adt/semaphore.js +26 -9
  71. package/dist/adt/semaphore.js.map +1 -1
  72. package/dist/adt/source-diff.d.ts +10 -1
  73. package/dist/adt/source-diff.d.ts.map +1 -1
  74. package/dist/adt/source-diff.js +33 -7
  75. package/dist/adt/source-diff.js.map +1 -1
  76. package/dist/adt/text-search.d.ts +25 -0
  77. package/dist/adt/text-search.d.ts.map +1 -0
  78. package/dist/adt/text-search.js +152 -0
  79. package/dist/adt/text-search.js.map +1 -0
  80. package/dist/adt/transport-diff.d.ts +128 -0
  81. package/dist/adt/transport-diff.d.ts.map +1 -0
  82. package/dist/adt/transport-diff.js +524 -0
  83. package/dist/adt/transport-diff.js.map +1 -0
  84. package/dist/adt/transport.d.ts +78 -13
  85. package/dist/adt/transport.d.ts.map +1 -1
  86. package/dist/adt/transport.js +447 -44
  87. package/dist/adt/transport.js.map +1 -1
  88. package/dist/adt/types.d.ts +23 -12
  89. package/dist/adt/types.d.ts.map +1 -1
  90. package/dist/adt/xml-parser.d.ts +4 -10
  91. package/dist/adt/xml-parser.d.ts.map +1 -1
  92. package/dist/adt/xml-parser.js +57 -62
  93. package/dist/adt/xml-parser.js.map +1 -1
  94. package/dist/authz/policy.d.ts.map +1 -1
  95. package/dist/authz/policy.js +5 -2
  96. package/dist/authz/policy.js.map +1 -1
  97. package/dist/cli-args.d.ts +2 -2
  98. package/dist/cli-args.js +2 -2
  99. package/dist/cli-checks.d.ts +56 -0
  100. package/dist/cli-checks.d.ts.map +1 -0
  101. package/dist/cli-checks.js +368 -0
  102. package/dist/cli-checks.js.map +1 -0
  103. package/dist/cli.d.ts +68 -15
  104. package/dist/cli.d.ts.map +1 -1
  105. package/dist/cli.js +677 -297
  106. package/dist/cli.js.map +1 -1
  107. package/dist/handlers/cds-hints.d.ts.map +1 -1
  108. package/dist/handlers/cds-hints.js +1 -10
  109. package/dist/handlers/cds-hints.js.map +1 -1
  110. package/dist/handlers/diagnose.d.ts +4 -0
  111. package/dist/handlers/diagnose.d.ts.map +1 -1
  112. package/dist/handlers/diagnose.js +621 -11
  113. package/dist/handlers/diagnose.js.map +1 -1
  114. package/dist/handlers/dispatch.d.ts.map +1 -1
  115. package/dist/handlers/dispatch.js +40 -1
  116. package/dist/handlers/dispatch.js.map +1 -1
  117. package/dist/handlers/git.d.ts.map +1 -1
  118. package/dist/handlers/git.js +165 -84
  119. package/dist/handlers/git.js.map +1 -1
  120. package/dist/handlers/read.d.ts.map +1 -1
  121. package/dist/handlers/read.js +19 -10
  122. package/dist/handlers/read.js.map +1 -1
  123. package/dist/handlers/schemas.d.ts +15 -2
  124. package/dist/handlers/schemas.d.ts.map +1 -1
  125. package/dist/handlers/schemas.js +75 -6
  126. package/dist/handlers/schemas.js.map +1 -1
  127. package/dist/handlers/search.js +1 -1
  128. package/dist/handlers/search.js.map +1 -1
  129. package/dist/handlers/tools.d.ts.map +1 -1
  130. package/dist/handlers/tools.js +54 -45
  131. package/dist/handlers/tools.js.map +1 -1
  132. package/dist/handlers/transport.d.ts +2 -1
  133. package/dist/handlers/transport.d.ts.map +1 -1
  134. package/dist/handlers/transport.js +132 -30
  135. package/dist/handlers/transport.js.map +1 -1
  136. package/dist/handlers/write/create.d.ts.map +1 -1
  137. package/dist/handlers/write/create.js +11 -0
  138. package/dist/handlers/write/create.js.map +1 -1
  139. package/dist/handlers/write/update-delete.d.ts.map +1 -1
  140. package/dist/handlers/write/update-delete.js +33 -10
  141. package/dist/handlers/write/update-delete.js.map +1 -1
  142. package/dist/handlers/write-helpers.d.ts.map +1 -1
  143. package/dist/handlers/write-helpers.js +3 -2
  144. package/dist/handlers/write-helpers.js.map +1 -1
  145. package/dist/server/audit.d.ts +1 -1
  146. package/dist/server/audit.d.ts.map +1 -1
  147. package/dist/server/audit.js +228 -21
  148. package/dist/server/audit.js.map +1 -1
  149. package/dist/server/config.d.ts +16 -0
  150. package/dist/server/config.d.ts.map +1 -1
  151. package/dist/server/config.js +145 -17
  152. package/dist/server/config.js.map +1 -1
  153. package/dist/server/effective-policy-log.d.ts +2 -1
  154. package/dist/server/effective-policy-log.d.ts.map +1 -1
  155. package/dist/server/effective-policy-log.js +8 -2
  156. package/dist/server/effective-policy-log.js.map +1 -1
  157. package/dist/server/multi-target-runtime.d.ts.map +1 -1
  158. package/dist/server/multi-target-runtime.js +3 -0
  159. package/dist/server/multi-target-runtime.js.map +1 -1
  160. package/dist/server/multi-target-tools.d.ts.map +1 -1
  161. package/dist/server/multi-target-tools.js +5 -0
  162. package/dist/server/multi-target-tools.js.map +1 -1
  163. package/dist/server/server.d.ts +15 -13
  164. package/dist/server/server.d.ts.map +1 -1
  165. package/dist/server/server.js +36 -26
  166. package/dist/server/server.js.map +1 -1
  167. package/dist/server/types.d.ts +2 -0
  168. package/dist/server/types.d.ts.map +1 -1
  169. package/dist/server/types.js +1 -0
  170. package/dist/server/types.js.map +1 -1
  171. package/package.json +16 -16
@@ -0,0 +1,78 @@
1
+ /** Bounded package selection for whole-package ABAP Unit runs. */
2
+ import { ADT_ROOT_PATH, canonicalHostRelativeAdtPath } from './path-safety.js';
3
+ import { checkOperation, OperationType } from './safety.js';
4
+ import { parseSearchResults } from './xml-parser.js';
5
+ export const AUNIT_PACKAGE_SEARCH_LIMIT = 1000;
6
+ const AUNIT_OBJECT_PREFIXES = {
7
+ CLAS: '/sap/bc/adt/oo/classes/',
8
+ PROG: '/sap/bc/adt/programs/programs/',
9
+ FUGR: '/sap/bc/adt/functions/groups/',
10
+ };
11
+ function aunitType(value) {
12
+ const type = value.toUpperCase().split('/')[0];
13
+ return type === 'CLAS' || type === 'PROG' || type === 'FUGR' ? type : undefined;
14
+ }
15
+ /** Resolve the exact executable roots represented by SAP's package search response. */
16
+ export async function resolveAunitPackageSelection(http, safety, packageName, includeSubpackages, requestOptions) {
17
+ checkOperation(safety, OperationType.Test, 'ResolveAunitPackage');
18
+ const normalizedPackage = packageName.trim().toUpperCase();
19
+ if (!normalizedPackage)
20
+ throw new Error('ABAP Unit package name must not be empty.');
21
+ // Distinguish an existing empty package from an unknown package before treating zero rows as a
22
+ // sound empty selection. The package metadata read is also authorization evidence for the scope.
23
+ await http.get(`/sap/bc/adt/packages/${encodeURIComponent(normalizedPackage)}`, undefined, requestOptions);
24
+ const response = await http.get(`/sap/bc/adt/repository/informationsystem/search?operation=quickSearch&query=*&packageName=${encodeURIComponent(normalizedPackage)}&maxResults=${AUNIT_PACKAGE_SEARCH_LIMIT}`, undefined, requestOptions);
25
+ const references = parseSearchResults(response.body);
26
+ const inScope = references.filter((reference) => includeSubpackages || reference.packageName.trim().toUpperCase() === normalizedPackage);
27
+ const membership = [
28
+ ...new Set(inScope.map((reference) => [
29
+ reference.objectType.toUpperCase(),
30
+ reference.objectName.toUpperCase(),
31
+ reference.packageName.toUpperCase(),
32
+ reference.uri,
33
+ ].join('\u0000'))),
34
+ ].sort();
35
+ const objects = [];
36
+ const seen = new Set();
37
+ let invalidObjectReference = false;
38
+ for (const reference of inScope) {
39
+ const type = aunitType(reference.objectType);
40
+ if (!type)
41
+ continue;
42
+ const objectName = reference.objectName.trim().toUpperCase();
43
+ const canonical = canonicalHostRelativeAdtPath(reference.uri, ADT_ROOT_PATH, {
44
+ allowRawEncodedSlash: true,
45
+ });
46
+ const expectedUri = `${AUNIT_OBJECT_PREFIXES[type]}${encodeURIComponent(objectName)}`;
47
+ if (!objectName || !canonical || canonical.includes('?') || canonical.toUpperCase() !== expectedUri.toUpperCase()) {
48
+ invalidObjectReference = true;
49
+ continue;
50
+ }
51
+ const key = `${type}\u0000${objectName}\u0000${canonical}`;
52
+ if (seen.has(key))
53
+ continue;
54
+ seen.add(key);
55
+ objects.push({
56
+ type,
57
+ name: objectName,
58
+ packageName: reference.packageName.toUpperCase(),
59
+ uri: canonical,
60
+ });
61
+ }
62
+ objects.sort((left, right) => `${left.type}\u0000${left.name}\u0000${left.uri}`.localeCompare(`${right.type}\u0000${right.name}\u0000${right.uri}`));
63
+ const truncated = references.length >= AUNIT_PACKAGE_SEARCH_LIMIT;
64
+ const incompleteReason = truncated
65
+ ? `Package selection reached the ${AUNIT_PACKAGE_SEARCH_LIMIT.toLocaleString('en-US')}-row repository-search bound.`
66
+ : invalidObjectReference
67
+ ? 'One or more executable package objects had a missing or non-canonical ADT URI.'
68
+ : undefined;
69
+ return {
70
+ packageName: normalizedPackage,
71
+ includeSubpackages,
72
+ objects,
73
+ membership,
74
+ complete: incompleteReason === undefined,
75
+ ...(incompleteReason ? { incompleteReason } : {}),
76
+ };
77
+ }
78
+ //# sourceMappingURL=aunit-package.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aunit-package.js","sourceRoot":"","sources":["../../src/adt/aunit-package.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,143 @@
1
+ /** ABAP Unit result semantics and the public async/JUnit API. */
2
+ import type { AdtHttpClient, AdtRequestOptions } from './http.js';
3
+ import { type SafetyConfig } from './safety.js';
4
+ import type { CoverageSummary } from './types.js';
5
+ export type AunitOutcome = 'passed' | 'failed' | 'no_tests' | 'incomplete';
6
+ export type AunitTestStatus = 'passed' | 'failed' | 'error' | 'skipped';
7
+ export type AunitAlertScope = 'run' | 'program' | 'class' | 'method';
8
+ export interface AunitStackEntry {
9
+ uri?: string;
10
+ type?: string;
11
+ name?: string;
12
+ description?: string;
13
+ }
14
+ export interface AunitAlert {
15
+ scope: AunitAlertScope;
16
+ program?: string;
17
+ testClass?: string;
18
+ testMethod?: string;
19
+ kind: string;
20
+ severity: string;
21
+ title: string;
22
+ details: string[];
23
+ message: string;
24
+ stack: AunitStackEntry[];
25
+ }
26
+ export interface AunitTestCase {
27
+ program: string;
28
+ testClass: string;
29
+ testMethod: string;
30
+ status: AunitTestStatus;
31
+ durationMs?: number;
32
+ riskLevel?: string;
33
+ durationCategory?: string;
34
+ alerts: AunitAlert[];
35
+ }
36
+ export interface AunitSummary {
37
+ tests: number;
38
+ passed: number;
39
+ failures: number;
40
+ errors: number;
41
+ skipped: number;
42
+ warnings: number;
43
+ }
44
+ export interface AunitRunResult {
45
+ outcome: AunitOutcome;
46
+ summary: AunitSummary;
47
+ selection: {
48
+ maxRisk: 'harmless';
49
+ durations: Array<'short' | 'medium' | 'long'>;
50
+ };
51
+ tests: AunitTestCase[];
52
+ alerts: AunitAlert[];
53
+ coverage?: CoverageSummary;
54
+ coverageEvidence?: 'available' | 'unavailable' | 'not_requested';
55
+ coverageUnavailableReason?: 'measurement_not_reported' | 'request_failed' | 'no_valid_metrics';
56
+ sourceSelectionEvidence?: AunitSourceSelectionEvidence;
57
+ }
58
+ export type AunitDeclaredRiskLevel = 'harmless' | 'dangerous' | 'critical';
59
+ export interface AunitSourceTestClass {
60
+ program?: string;
61
+ testClass: string;
62
+ riskLevel: AunitDeclaredRiskLevel;
63
+ explicitRiskLevel: boolean;
64
+ }
65
+ export interface AunitSourceSelectionEvidence {
66
+ status: 'verified' | 'unavailable';
67
+ declaredTestClasses: AunitSourceTestClass[];
68
+ omittedTestClasses: AunitSourceTestClass[];
69
+ omittedNonHarmlessTestClasses: AunitSourceTestClass[];
70
+ reason?: string;
71
+ }
72
+ export interface AunitSourceAuditOptions {
73
+ complete?: boolean;
74
+ incompleteReason?: string;
75
+ }
76
+ export interface AunitProgramSource {
77
+ program: string;
78
+ source: string;
79
+ }
80
+ export interface NativeJunitSummary {
81
+ tests: number;
82
+ failures: number;
83
+ errors: number;
84
+ skipped: number;
85
+ outcome: AunitOutcome;
86
+ }
87
+ export interface PublicAunitResult {
88
+ protocol: 'public-api';
89
+ runPath: string;
90
+ resultPath: string;
91
+ status: string;
92
+ junit: string;
93
+ summary: NativeJunitSummary;
94
+ elapsedMs: number;
95
+ polls: number;
96
+ }
97
+ export declare class AunitIncompleteError extends Error {
98
+ readonly evidence: {
99
+ elapsedMs: number;
100
+ polls: number;
101
+ status: string;
102
+ };
103
+ constructor(message: string, evidence: {
104
+ elapsedMs: number;
105
+ polls: number;
106
+ status: string;
107
+ }, options?: ErrorOptions);
108
+ }
109
+ interface PublicAunitOptions {
110
+ timeoutMs?: number;
111
+ deadline?: number;
112
+ signal?: AbortSignal;
113
+ includeSubpackages?: boolean;
114
+ now?: () => number;
115
+ sleep?: (ms: number) => Promise<void>;
116
+ }
117
+ export declare const DEFAULT_PUBLIC_AUNIT_TIMEOUT_MS = 300000;
118
+ /** Find executable, non-deferred ABAP Unit class definitions without matching comments/literals. */
119
+ export declare function findSourceDeclaredAunitClasses(source: string): AunitSourceTestClass[];
120
+ /** Static INCLUDE names used to expand program source before auditing test declarations. */
121
+ export declare function findStaticAbapIncludes(source: string): string[];
122
+ /**
123
+ * Reconcile SAP's harmless-only result with test classes declared in one inspected source tree.
124
+ * SAP 7.58 can omit a dangerous/critical class from both result formats without an alert; source
125
+ * evidence closes that false-green while ordinary and deferred helper classes remain ignored.
126
+ */
127
+ export declare function reconcileAunitSourceDeclarations(result: AunitRunResult, source: string, options?: AunitSourceAuditOptions): AunitRunResult;
128
+ /** Reconcile a multi-program package run without conflating common local names such as LTCL_TEST. */
129
+ export declare function reconcileAunitProgramSources(result: AunitRunResult, sources: AunitProgramSource[], options?: AunitSourceAuditOptions): AunitRunResult;
130
+ /** Parse legacy `/abapunit/testruns` XML without turning non-method alerts into fake tests. */
131
+ export declare function parseAunitRunResult(xml: string): AunitRunResult;
132
+ export declare function withAunitCoverage(result: AunitRunResult, coverage: CoverageSummary | undefined, unavailableReason?: AunitRunResult['coverageUnavailableReason']): AunitRunResult;
133
+ /** Generate JUnit from the corrected legacy model. Non-method alerts stay in system-err. */
134
+ export declare function aunitResultToJunit(result: AunitRunResult, suiteName?: string): string;
135
+ export declare function aunitIncompleteToJunit(message: string, suiteName?: string): string;
136
+ export declare function parseNativeJunitSummary(xml: string): NativeJunitSummary;
137
+ /** Preserve SAP-native suites and append one red reconciliation testcase with truthful root counters. */
138
+ export declare function appendAunitJunitDiagnostic(junit: string, summary: NativeJunitSummary, outcome: 'failed' | 'incomplete', message: string): string;
139
+ export declare function probePublicAunit(http: AdtHttpClient, safety: SafetyConfig, options?: AdtRequestOptions): Promise<boolean>;
140
+ /** Run harmless-only AUnit through the public async endpoint and return SAP-native JUnit. */
141
+ export declare function runPublicAunit(http: AdtHttpClient, safety: SafetyConfig, type: string, name: string, options?: PublicAunitOptions): Promise<PublicAunitResult>;
142
+ export {};
143
+ //# sourceMappingURL=aunit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aunit.d.ts","sourceRoot":"","sources":["../../src/adt/aunit.ts"],"names":[],"mappings":"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"}