@sfdxy/anypoint-connect 0.1.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 +481 -0
- package/dist/api/AccessManagementApi.d.ts +42 -0
- package/dist/api/AccessManagementApi.d.ts.map +1 -0
- package/dist/api/AccessManagementApi.js +48 -0
- package/dist/api/AccessManagementApi.js.map +1 -0
- package/dist/api/ApiManagerApi.d.ts +87 -0
- package/dist/api/ApiManagerApi.d.ts.map +1 -0
- package/dist/api/ApiManagerApi.js +79 -0
- package/dist/api/ApiManagerApi.js.map +1 -0
- package/dist/api/CloudHub2Api.d.ts +167 -0
- package/dist/api/CloudHub2Api.d.ts.map +1 -0
- package/dist/api/CloudHub2Api.js +132 -0
- package/dist/api/CloudHub2Api.js.map +1 -0
- package/dist/api/DesignCenterApi.d.ts +118 -0
- package/dist/api/DesignCenterApi.d.ts.map +1 -0
- package/dist/api/DesignCenterApi.js +259 -0
- package/dist/api/DesignCenterApi.js.map +1 -0
- package/dist/api/ExchangeApi.d.ts +92 -0
- package/dist/api/ExchangeApi.d.ts.map +1 -0
- package/dist/api/ExchangeApi.js +74 -0
- package/dist/api/ExchangeApi.js.map +1 -0
- package/dist/api/LogsApi.d.ts +66 -0
- package/dist/api/LogsApi.d.ts.map +1 -0
- package/dist/api/LogsApi.js +175 -0
- package/dist/api/LogsApi.js.map +1 -0
- package/dist/api/MonitoringApi.d.ts +72 -0
- package/dist/api/MonitoringApi.d.ts.map +1 -0
- package/dist/api/MonitoringApi.js +133 -0
- package/dist/api/MonitoringApi.js.map +1 -0
- package/dist/api/index.d.ts +8 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +8 -0
- package/dist/api/index.js.map +1 -0
- package/dist/auth/FileStore.d.ts +15 -0
- package/dist/auth/FileStore.d.ts.map +1 -0
- package/dist/auth/FileStore.js +63 -0
- package/dist/auth/FileStore.js.map +1 -0
- package/dist/auth/OAuthFlow.d.ts +36 -0
- package/dist/auth/OAuthFlow.d.ts.map +1 -0
- package/dist/auth/OAuthFlow.js +156 -0
- package/dist/auth/OAuthFlow.js.map +1 -0
- package/dist/auth/TokenManager.d.ts +40 -0
- package/dist/auth/TokenManager.d.ts.map +1 -0
- package/dist/auth/TokenManager.js +119 -0
- package/dist/auth/TokenManager.js.map +1 -0
- package/dist/auth/TokenStore.d.ts +18 -0
- package/dist/auth/TokenStore.d.ts.map +1 -0
- package/dist/auth/TokenStore.js +5 -0
- package/dist/auth/TokenStore.js.map +1 -0
- package/dist/auth/index.d.ts +5 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +4 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/cli.d.ts +7 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +28 -0
- package/dist/cli.js.map +1 -0
- package/dist/client/AnypointClient.d.ts +41 -0
- package/dist/client/AnypointClient.d.ts.map +1 -0
- package/dist/client/AnypointClient.js +76 -0
- package/dist/client/AnypointClient.js.map +1 -0
- package/dist/client/Cache.d.ts +15 -0
- package/dist/client/Cache.d.ts.map +1 -0
- package/dist/client/Cache.js +42 -0
- package/dist/client/Cache.js.map +1 -0
- package/dist/client/HttpClient.d.ts +26 -0
- package/dist/client/HttpClient.d.ts.map +1 -0
- package/dist/client/HttpClient.js +69 -0
- package/dist/client/HttpClient.js.map +1 -0
- package/dist/client/RateLimiter.d.ts +20 -0
- package/dist/client/RateLimiter.d.ts.map +1 -0
- package/dist/client/RateLimiter.js +48 -0
- package/dist/client/RateLimiter.js.map +1 -0
- package/dist/commands/api.d.ts +7 -0
- package/dist/commands/api.d.ts.map +1 -0
- package/dist/commands/api.js +144 -0
- package/dist/commands/api.js.map +1 -0
- package/dist/commands/apps.d.ts +7 -0
- package/dist/commands/apps.d.ts.map +1 -0
- package/dist/commands/apps.js +156 -0
- package/dist/commands/apps.js.map +1 -0
- package/dist/commands/auth.d.ts +7 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +103 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/config.d.ts +7 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +125 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/deploy.d.ts +7 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +145 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/design-center.d.ts +7 -0
- package/dist/commands/design-center.d.ts.map +1 -0
- package/dist/commands/design-center.js +183 -0
- package/dist/commands/design-center.js.map +1 -0
- package/dist/commands/exchange.d.ts +7 -0
- package/dist/commands/exchange.d.ts.map +1 -0
- package/dist/commands/exchange.js +134 -0
- package/dist/commands/exchange.js.map +1 -0
- package/dist/commands/index.d.ts +7 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +7 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/logs.d.ts +8 -0
- package/dist/commands/logs.d.ts.map +1 -0
- package/dist/commands/logs.js +115 -0
- package/dist/commands/logs.js.map +1 -0
- package/dist/commands/monitor.d.ts +8 -0
- package/dist/commands/monitor.d.ts.map +1 -0
- package/dist/commands/monitor.js +129 -0
- package/dist/commands/monitor.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp.d.ts +7 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +993 -0
- package/dist/mcp.js.map +1 -0
- package/dist/safety/guards.d.ts +27 -0
- package/dist/safety/guards.d.ts.map +1 -0
- package/dist/safety/guards.js +83 -0
- package/dist/safety/guards.js.map +1 -0
- package/dist/utils/config.d.ts +57 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +117 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/formatter.d.ts +21 -0
- package/dist/utils/formatter.d.ts.map +1 -0
- package/dist/utils/formatter.js +58 -0
- package/dist/utils/formatter.js.map +1 -0
- package/dist/utils/logger.d.ts +16 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +43 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +71 -0
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logs API
|
|
3
|
+
* Log tailing, fetching, and downloading for CloudHub 2.0
|
|
4
|
+
* Uses the AMC log file download endpoint with spec ID resolution
|
|
5
|
+
*/
|
|
6
|
+
const AMC_BASE = '/amc/application-manager/api/v2';
|
|
7
|
+
export class LogsApi {
|
|
8
|
+
http;
|
|
9
|
+
_cache;
|
|
10
|
+
ch2;
|
|
11
|
+
constructor(http, _cache, ch2) {
|
|
12
|
+
this.http = http;
|
|
13
|
+
this._cache = _cache;
|
|
14
|
+
this.ch2 = ch2;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Download the full log file for a CH2 deployment.
|
|
18
|
+
* Returns raw log text.
|
|
19
|
+
*/
|
|
20
|
+
async downloadLogFile(orgId, envId, deploymentId, specId) {
|
|
21
|
+
return this.http.download(`${AMC_BASE}/organizations/${orgId}/environments/${envId}/deployments/${deploymentId}/specs/${specId}/logs/file`, {
|
|
22
|
+
headers: {
|
|
23
|
+
'X-ANYPNT-ORG-ID': orgId,
|
|
24
|
+
'X-ANYPNT-ENV-ID': envId,
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Resolve an app name to its deployment + spec ID.
|
|
30
|
+
*/
|
|
31
|
+
async resolveDeployment(orgId, envId, appName) {
|
|
32
|
+
if (!this.ch2) {
|
|
33
|
+
throw new Error('CloudHub2Api required for log operations');
|
|
34
|
+
}
|
|
35
|
+
// Get full deployment detail to access desiredVersion (spec ID)
|
|
36
|
+
const deployment = await this.ch2.findByName(orgId, envId, appName);
|
|
37
|
+
if (!deployment) {
|
|
38
|
+
throw new Error(`Application "${appName}" not found in environment`);
|
|
39
|
+
}
|
|
40
|
+
// Get detailed deployment info with desiredVersion
|
|
41
|
+
const detail = await this.ch2.getDeployment(orgId, envId, deployment.id);
|
|
42
|
+
const specId = detail.desiredVersion || detail.lastSuccessfulVersion;
|
|
43
|
+
if (!specId) {
|
|
44
|
+
throw new Error(`No spec version found for "${appName}" — app may not be fully deployed`);
|
|
45
|
+
}
|
|
46
|
+
return { deploymentId: deployment.id, specId };
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Parse a CH2 log line into structured LogEntry.
|
|
50
|
+
* Format: "2026-02-13T22:42:32.359Z INFO [replicaId] message..."
|
|
51
|
+
*/
|
|
52
|
+
parseLogLine(line) {
|
|
53
|
+
if (!line.trim())
|
|
54
|
+
return null;
|
|
55
|
+
// Match: timestamp LEVEL [instance] rest
|
|
56
|
+
const match = line.match(/^(\d{4}-\d{2}-\d{2}T[\d:.]+Z)\s+(TRACE|DEBUG|INFO|WARN|ERROR|FATAL)\s+\[([^\]]*)\]\s+(.*)$/);
|
|
57
|
+
if (match) {
|
|
58
|
+
return {
|
|
59
|
+
timestamp: new Date(match[1]).getTime(),
|
|
60
|
+
priority: match[2],
|
|
61
|
+
instanceId: match[3],
|
|
62
|
+
message: match[4],
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
// Continuation line (no timestamp prefix) — attach to last timestamp
|
|
66
|
+
return {
|
|
67
|
+
timestamp: Date.now(),
|
|
68
|
+
priority: 'INFO',
|
|
69
|
+
message: line,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Get parsed log entries for a CH2 application.
|
|
74
|
+
* Fetches the log file and parses it.
|
|
75
|
+
*/
|
|
76
|
+
async getLogs(orgId, envId, appName, options = {}) {
|
|
77
|
+
const { deploymentId, specId } = await this.resolveDeployment(orgId, envId, appName);
|
|
78
|
+
const buffer = await this.downloadLogFile(orgId, envId, deploymentId, specId);
|
|
79
|
+
const text = buffer.toString('utf-8');
|
|
80
|
+
const lines = text.split('\n');
|
|
81
|
+
const levelPriority = {
|
|
82
|
+
TRACE: 0,
|
|
83
|
+
DEBUG: 1,
|
|
84
|
+
INFO: 2,
|
|
85
|
+
WARN: 3,
|
|
86
|
+
ERROR: 4,
|
|
87
|
+
FATAL: 5,
|
|
88
|
+
};
|
|
89
|
+
const minLevel = options.level ? (levelPriority[options.level.toUpperCase()] ?? 0) : 0;
|
|
90
|
+
let entries = [];
|
|
91
|
+
for (const line of lines) {
|
|
92
|
+
const entry = this.parseLogLine(line);
|
|
93
|
+
if (!entry)
|
|
94
|
+
continue;
|
|
95
|
+
// Filter by time
|
|
96
|
+
if (options.startTime && entry.timestamp < options.startTime)
|
|
97
|
+
continue;
|
|
98
|
+
if (options.endTime && entry.timestamp > options.endTime)
|
|
99
|
+
continue;
|
|
100
|
+
// Filter by level
|
|
101
|
+
if ((levelPriority[entry.priority] ?? 0) < minLevel)
|
|
102
|
+
continue;
|
|
103
|
+
// Filter by search
|
|
104
|
+
if (options.search && !entry.message.toLowerCase().includes(options.search.toLowerCase()))
|
|
105
|
+
continue;
|
|
106
|
+
entries.push(entry);
|
|
107
|
+
}
|
|
108
|
+
// Sort descending by default (newest first), limit
|
|
109
|
+
entries.sort((a, b) => b.timestamp - a.timestamp);
|
|
110
|
+
if (options.limit) {
|
|
111
|
+
entries = entries.slice(0, options.limit);
|
|
112
|
+
}
|
|
113
|
+
return entries;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Tail logs — generator that yields new log entries.
|
|
117
|
+
* Polls the log file periodically and yields new entries since last check.
|
|
118
|
+
*/
|
|
119
|
+
async *tailLogs(orgId, envId, appName, options = {}) {
|
|
120
|
+
const intervalMs = options.intervalMs || 5000;
|
|
121
|
+
const { deploymentId, specId } = await this.resolveDeployment(orgId, envId, appName);
|
|
122
|
+
let lastTimestamp = Date.now() - 30000; // start from 30 seconds ago
|
|
123
|
+
while (true) {
|
|
124
|
+
try {
|
|
125
|
+
const buffer = await this.downloadLogFile(orgId, envId, deploymentId, specId);
|
|
126
|
+
const text = buffer.toString('utf-8');
|
|
127
|
+
// Only parse the last portion for performance (last 100KB)
|
|
128
|
+
const tail = text.length > 100000 ? text.substring(text.length - 100000) : text;
|
|
129
|
+
const lines = tail.split('\n');
|
|
130
|
+
const levelPriority = {
|
|
131
|
+
TRACE: 0,
|
|
132
|
+
DEBUG: 1,
|
|
133
|
+
INFO: 2,
|
|
134
|
+
WARN: 3,
|
|
135
|
+
ERROR: 4,
|
|
136
|
+
FATAL: 5,
|
|
137
|
+
};
|
|
138
|
+
const minLevel = options.level ? (levelPriority[options.level.toUpperCase()] ?? 0) : 0;
|
|
139
|
+
const newEntries = [];
|
|
140
|
+
for (const line of lines) {
|
|
141
|
+
const entry = this.parseLogLine(line);
|
|
142
|
+
if (!entry)
|
|
143
|
+
continue;
|
|
144
|
+
if (entry.timestamp <= lastTimestamp)
|
|
145
|
+
continue;
|
|
146
|
+
if ((levelPriority[entry.priority] ?? 0) < minLevel)
|
|
147
|
+
continue;
|
|
148
|
+
if (options.search && !entry.message.toLowerCase().includes(options.search.toLowerCase()))
|
|
149
|
+
continue;
|
|
150
|
+
newEntries.push(entry);
|
|
151
|
+
}
|
|
152
|
+
if (newEntries.length > 0) {
|
|
153
|
+
newEntries.sort((a, b) => a.timestamp - b.timestamp);
|
|
154
|
+
lastTimestamp = newEntries[newEntries.length - 1].timestamp;
|
|
155
|
+
yield newEntries;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
catch (err) {
|
|
159
|
+
console.error(`Log poll error: ${err instanceof Error ? err.message : err}`);
|
|
160
|
+
}
|
|
161
|
+
await new Promise((resolve) => setTimeout(resolve, intervalMs));
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Get all logs for a time range.
|
|
166
|
+
*/
|
|
167
|
+
async getLogsForPeriod(orgId, envId, appName, startTime, endTime, level) {
|
|
168
|
+
return this.getLogs(orgId, envId, appName, {
|
|
169
|
+
startTime,
|
|
170
|
+
endTime,
|
|
171
|
+
level,
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=LogsApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogsApi.js","sourceRoot":"","sources":["../../src/api/LogsApi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Monitoring API
|
|
3
|
+
* AMQL-based metrics queries with configurable time ranges
|
|
4
|
+
*/
|
|
5
|
+
import type { HttpClient } from '../client/HttpClient.js';
|
|
6
|
+
import type { Cache } from '../client/Cache.js';
|
|
7
|
+
export interface MetricDataPoint {
|
|
8
|
+
[key: string]: number | string | undefined;
|
|
9
|
+
timestamp?: number;
|
|
10
|
+
}
|
|
11
|
+
export interface AppMetricsSummary {
|
|
12
|
+
appName: string;
|
|
13
|
+
requestCount: number;
|
|
14
|
+
avgResponseTime: number;
|
|
15
|
+
errorCount: number;
|
|
16
|
+
errorRate: number;
|
|
17
|
+
outboundCount: number;
|
|
18
|
+
outboundAvgResponseTime: number;
|
|
19
|
+
}
|
|
20
|
+
export interface MetricsExport {
|
|
21
|
+
environment: string;
|
|
22
|
+
period: {
|
|
23
|
+
from: string;
|
|
24
|
+
to: string;
|
|
25
|
+
};
|
|
26
|
+
apps: AppMetricsSummary[];
|
|
27
|
+
summary: {
|
|
28
|
+
totalRequests: number;
|
|
29
|
+
avgResponseTime: number;
|
|
30
|
+
totalErrors: number;
|
|
31
|
+
errorRate: number;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
export declare class MonitoringApi {
|
|
35
|
+
private readonly http;
|
|
36
|
+
private readonly cache;
|
|
37
|
+
private readonly baseUrl;
|
|
38
|
+
constructor(http: HttpClient, cache: Cache);
|
|
39
|
+
/**
|
|
40
|
+
* Execute an AMQL query
|
|
41
|
+
*/
|
|
42
|
+
search(query: string, limit?: number): Promise<MetricDataPoint[]>;
|
|
43
|
+
/**
|
|
44
|
+
* Get inbound metrics for a time range
|
|
45
|
+
*/
|
|
46
|
+
getInboundMetrics(orgId: string, envId: string, from: number, to: number): Promise<Array<{
|
|
47
|
+
appName: string;
|
|
48
|
+
requestCount: number;
|
|
49
|
+
avgResponseTime: number;
|
|
50
|
+
}>>;
|
|
51
|
+
/**
|
|
52
|
+
* Get outbound metrics for a time range
|
|
53
|
+
*/
|
|
54
|
+
getOutboundMetrics(orgId: string, envId: string, from: number, to: number): Promise<Array<{
|
|
55
|
+
appName: string;
|
|
56
|
+
requestCount: number;
|
|
57
|
+
avgResponseTime: number;
|
|
58
|
+
}>>;
|
|
59
|
+
/**
|
|
60
|
+
* Get combined app metrics for a time range
|
|
61
|
+
*/
|
|
62
|
+
getAppMetrics(orgId: string, envId: string, from: number, to: number, appName?: string): Promise<AppMetricsSummary[]>;
|
|
63
|
+
/**
|
|
64
|
+
* Build a full metrics export for a period
|
|
65
|
+
*/
|
|
66
|
+
exportMetrics(orgId: string, envId: string, envName: string, from: number, to: number): Promise<MetricsExport>;
|
|
67
|
+
/**
|
|
68
|
+
* Check if monitoring API is available
|
|
69
|
+
*/
|
|
70
|
+
isAvailable(): Promise<boolean>;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=MonitoringApi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MonitoringApi.d.ts","sourceRoot":"","sources":["../../src/api/MonitoringApi.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEhD,MAAM,WAAW,eAAe;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,uBAAuB,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,aAAa;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACrC,IAAI,EAAE,iBAAiB,EAAE,CAAC;IAC1B,OAAO,EAAE;QACL,aAAa,EAAE,MAAM,CAAC;QACtB,eAAe,EAAE,MAAM,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;KACrB,CAAC;CACL;AAED,qBAAa,aAAa;IAIlB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAJ1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;gBAG9B,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,KAAK;IAGjC;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAYpE;;OAEG;IACG,iBAAiB,CACnB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,GACX,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAcrF;;OAEG;IACG,kBAAkB,CACpB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,GACX,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAcrF;;OAEG;IACG,aAAa,CACf,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,iBAAiB,EAAE,CAAC;IA2C/B;;OAEG;IACG,aAAa,CACf,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,GACX,OAAO,CAAC,aAAa,CAAC;IA0BzB;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAQxC"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Monitoring API
|
|
3
|
+
* AMQL-based metrics queries with configurable time ranges
|
|
4
|
+
*/
|
|
5
|
+
export class MonitoringApi {
|
|
6
|
+
http;
|
|
7
|
+
cache;
|
|
8
|
+
baseUrl = '/observability/api/v1';
|
|
9
|
+
constructor(http, cache) {
|
|
10
|
+
this.http = http;
|
|
11
|
+
this.cache = cache;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Execute an AMQL query
|
|
15
|
+
*/
|
|
16
|
+
async search(query, limit = 200) {
|
|
17
|
+
try {
|
|
18
|
+
const response = await this.http.post(`${this.baseUrl}/metrics:search?limit=${limit}&offset=0`, { query });
|
|
19
|
+
return response.data || [];
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return [];
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Get inbound metrics for a time range
|
|
27
|
+
*/
|
|
28
|
+
async getInboundMetrics(orgId, envId, from, to) {
|
|
29
|
+
const cacheKey = `mon:inbound:${orgId}:${envId}:${from}:${to}`;
|
|
30
|
+
return this.cache.getOrCompute(cacheKey, async () => {
|
|
31
|
+
const query = `SELECT COUNT(requests) AS "request_count", AVG(response_time) AS "avg_response_time", "app.name" FROM "mulesoft.app.inbound" WHERE "sub_org.id" = '${orgId}' AND "env.id" = '${envId}' AND timestamp BETWEEN ${from} AND ${to} GROUP BY "app.name"`;
|
|
32
|
+
const data = await this.search(query);
|
|
33
|
+
return data.map((row) => ({
|
|
34
|
+
appName: String(row['app.name'] || 'Unknown'),
|
|
35
|
+
requestCount: Number(row['request_count'] || 0),
|
|
36
|
+
avgResponseTime: Number(row['avg_response_time'] || 0),
|
|
37
|
+
}));
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Get outbound metrics for a time range
|
|
42
|
+
*/
|
|
43
|
+
async getOutboundMetrics(orgId, envId, from, to) {
|
|
44
|
+
const cacheKey = `mon:outbound:${orgId}:${envId}:${from}:${to}`;
|
|
45
|
+
return this.cache.getOrCompute(cacheKey, async () => {
|
|
46
|
+
const query = `SELECT COUNT(requests) AS "request_count", AVG(response_time) AS "avg_response_time", "app.name" FROM "mulesoft.app.outbound" WHERE "sub_org.id" = '${orgId}' AND "env.id" = '${envId}' AND timestamp BETWEEN ${from} AND ${to} GROUP BY "app.name"`;
|
|
47
|
+
const data = await this.search(query);
|
|
48
|
+
return data.map((row) => ({
|
|
49
|
+
appName: String(row['app.name'] || 'Unknown'),
|
|
50
|
+
requestCount: Number(row['request_count'] || 0),
|
|
51
|
+
avgResponseTime: Number(row['avg_response_time'] || 0),
|
|
52
|
+
}));
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Get combined app metrics for a time range
|
|
57
|
+
*/
|
|
58
|
+
async getAppMetrics(orgId, envId, from, to, appName) {
|
|
59
|
+
const [inbound, outbound] = await Promise.all([
|
|
60
|
+
this.getInboundMetrics(orgId, envId, from, to),
|
|
61
|
+
this.getOutboundMetrics(orgId, envId, from, to),
|
|
62
|
+
]);
|
|
63
|
+
const outboundByApp = new Map(outbound.map((o) => [o.appName, o]));
|
|
64
|
+
let results = inbound.map((row) => {
|
|
65
|
+
const ob = outboundByApp.get(row.appName);
|
|
66
|
+
return {
|
|
67
|
+
appName: row.appName,
|
|
68
|
+
requestCount: row.requestCount,
|
|
69
|
+
avgResponseTime: row.avgResponseTime,
|
|
70
|
+
errorCount: 0,
|
|
71
|
+
errorRate: 0,
|
|
72
|
+
outboundCount: ob?.requestCount || 0,
|
|
73
|
+
outboundAvgResponseTime: ob?.avgResponseTime || 0,
|
|
74
|
+
};
|
|
75
|
+
});
|
|
76
|
+
// Add outbound-only apps
|
|
77
|
+
for (const ob of outbound) {
|
|
78
|
+
if (!inbound.some((ib) => ib.appName === ob.appName)) {
|
|
79
|
+
results.push({
|
|
80
|
+
appName: ob.appName,
|
|
81
|
+
requestCount: 0,
|
|
82
|
+
avgResponseTime: 0,
|
|
83
|
+
errorCount: 0,
|
|
84
|
+
errorRate: 0,
|
|
85
|
+
outboundCount: ob.requestCount,
|
|
86
|
+
outboundAvgResponseTime: ob.avgResponseTime,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
if (appName) {
|
|
91
|
+
results = results.filter((r) => r.appName.toLowerCase() === appName.toLowerCase());
|
|
92
|
+
}
|
|
93
|
+
return results;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Build a full metrics export for a period
|
|
97
|
+
*/
|
|
98
|
+
async exportMetrics(orgId, envId, envName, from, to) {
|
|
99
|
+
const apps = await this.getAppMetrics(orgId, envId, from, to);
|
|
100
|
+
const totalRequests = apps.reduce((sum, m) => sum + m.requestCount, 0);
|
|
101
|
+
const totalErrors = apps.reduce((sum, m) => sum + m.errorCount, 0);
|
|
102
|
+
const avgResponseTime = apps.length > 0
|
|
103
|
+
? apps.reduce((sum, m) => sum + m.avgResponseTime * m.requestCount, 0) / (totalRequests || 1)
|
|
104
|
+
: 0;
|
|
105
|
+
return {
|
|
106
|
+
environment: envName,
|
|
107
|
+
period: {
|
|
108
|
+
from: new Date(from).toISOString(),
|
|
109
|
+
to: new Date(to).toISOString(),
|
|
110
|
+
},
|
|
111
|
+
apps,
|
|
112
|
+
summary: {
|
|
113
|
+
totalRequests,
|
|
114
|
+
avgResponseTime,
|
|
115
|
+
totalErrors,
|
|
116
|
+
errorRate: totalRequests > 0 ? (totalErrors / totalRequests) * 100 : 0,
|
|
117
|
+
},
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Check if monitoring API is available
|
|
122
|
+
*/
|
|
123
|
+
async isAvailable() {
|
|
124
|
+
try {
|
|
125
|
+
const data = await this.search('SELECT COUNT(requests) FROM "mulesoft.app.inbound" LIMIT 1');
|
|
126
|
+
return data.length >= 0; // Even empty result means API is accessible
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=MonitoringApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MonitoringApi.js","sourceRoot":"","sources":["../../src/api/MonitoringApi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { AccessManagementApi, type UserProfile, type Environment } from './AccessManagementApi.js';
|
|
2
|
+
export { CloudHub2Api, type CH2Deployment, type CH2DeploymentResponse, type CreateDeploymentPayload, } from './CloudHub2Api.js';
|
|
3
|
+
export { LogsApi, type LogEntry, type LogSearchResponse } from './LogsApi.js';
|
|
4
|
+
export { MonitoringApi, type AppMetricsSummary, type MetricsExport, type MetricDataPoint } from './MonitoringApi.js';
|
|
5
|
+
export { ExchangeApi, type ExchangeAsset, type ExchangeAssetDetail } from './ExchangeApi.js';
|
|
6
|
+
export { ApiManagerApi, type ApiInstance, type ApiAsset, type ApiPolicy, type SlaTier } from './ApiManagerApi.js';
|
|
7
|
+
export { DesignCenterApi, type DesignCenterProject, type DesignCenterFile, type DesignCenterBranch, type PublishToExchangeOptions, } from './DesignCenterApi.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACnG,OAAO,EACH,YAAY,EACZ,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,GAC/B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,KAAK,iBAAiB,EAAE,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrH,OAAO,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC7F,OAAO,EAAE,aAAa,EAAE,KAAK,WAAW,EAAE,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClH,OAAO,EACH,eAAe,EACf,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,GAChC,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { AccessManagementApi } from './AccessManagementApi.js';
|
|
2
|
+
export { CloudHub2Api, } from './CloudHub2Api.js';
|
|
3
|
+
export { LogsApi } from './LogsApi.js';
|
|
4
|
+
export { MonitoringApi } from './MonitoringApi.js';
|
|
5
|
+
export { ExchangeApi } from './ExchangeApi.js';
|
|
6
|
+
export { ApiManagerApi } from './ApiManagerApi.js';
|
|
7
|
+
export { DesignCenterApi, } from './DesignCenterApi.js';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAsC,MAAM,0BAA0B,CAAC;AACnG,OAAO,EACH,YAAY,GAIf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,OAAO,EAAyC,MAAM,cAAc,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAoE,MAAM,oBAAoB,CAAC;AACrH,OAAO,EAAE,WAAW,EAAgD,MAAM,kBAAkB,CAAC;AAC7F,OAAO,EAAE,aAAa,EAAiE,MAAM,oBAAoB,CAAC;AAClH,OAAO,EACH,eAAe,GAKlB,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File Token Store
|
|
3
|
+
* AES-256-GCM encrypted file storage at ~/.anypoint-connect/tokens.enc
|
|
4
|
+
*/
|
|
5
|
+
import type { TokenStore, AnypointTokens } from './TokenStore.js';
|
|
6
|
+
export declare class FileStore implements TokenStore {
|
|
7
|
+
private readonly filePath;
|
|
8
|
+
private readonly encryptionKey;
|
|
9
|
+
constructor();
|
|
10
|
+
save(tokens: AnypointTokens): Promise<void>;
|
|
11
|
+
load(): Promise<AnypointTokens | null>;
|
|
12
|
+
clear(): Promise<void>;
|
|
13
|
+
exists(): Promise<boolean>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=FileStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileStore.d.ts","sourceRoot":"","sources":["../../src/auth/FileStore.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAMlE,qBAAa,SAAU,YAAW,UAAU;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;;IAWjC,IAAI,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB3C,IAAI,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAsBtC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAMtB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;CAGnC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File Token Store
|
|
3
|
+
* AES-256-GCM encrypted file storage at ~/.anypoint-connect/tokens.enc
|
|
4
|
+
*/
|
|
5
|
+
import * as fs from 'fs';
|
|
6
|
+
import * as os from 'os';
|
|
7
|
+
import * as path from 'path';
|
|
8
|
+
import * as crypto from 'crypto';
|
|
9
|
+
import { getConfigDir } from '../utils/config.js';
|
|
10
|
+
const ENCRYPTION_ALGORITHM = 'aes-256-gcm';
|
|
11
|
+
const TOKEN_FILE_NAME = 'tokens.enc';
|
|
12
|
+
export class FileStore {
|
|
13
|
+
filePath;
|
|
14
|
+
encryptionKey;
|
|
15
|
+
constructor() {
|
|
16
|
+
const configDir = getConfigDir();
|
|
17
|
+
this.filePath = path.join(configDir, TOKEN_FILE_NAME);
|
|
18
|
+
// Derive key from machine-specific data
|
|
19
|
+
const machineId = `${os.hostname()}-${os.userInfo().username}-anypoint-connect`;
|
|
20
|
+
this.encryptionKey = crypto.scryptSync(machineId, 'anc-salt-v1', 32);
|
|
21
|
+
}
|
|
22
|
+
async save(tokens) {
|
|
23
|
+
const iv = crypto.randomBytes(16);
|
|
24
|
+
const cipher = crypto.createCipheriv(ENCRYPTION_ALGORITHM, this.encryptionKey, iv);
|
|
25
|
+
const serialized = JSON.stringify(tokens);
|
|
26
|
+
let encrypted = cipher.update(serialized, 'utf8', 'hex');
|
|
27
|
+
encrypted += cipher.final('hex');
|
|
28
|
+
const authTag = cipher.getAuthTag();
|
|
29
|
+
const data = {
|
|
30
|
+
iv: iv.toString('hex'),
|
|
31
|
+
authTag: authTag.toString('hex'),
|
|
32
|
+
data: encrypted,
|
|
33
|
+
};
|
|
34
|
+
fs.writeFileSync(this.filePath, JSON.stringify(data), { mode: 0o600 });
|
|
35
|
+
}
|
|
36
|
+
async load() {
|
|
37
|
+
if (!fs.existsSync(this.filePath)) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
try {
|
|
41
|
+
const content = fs.readFileSync(this.filePath, 'utf8');
|
|
42
|
+
const { iv, authTag, data } = JSON.parse(content);
|
|
43
|
+
const decipher = crypto.createDecipheriv(ENCRYPTION_ALGORITHM, this.encryptionKey, Buffer.from(iv, 'hex'));
|
|
44
|
+
decipher.setAuthTag(Buffer.from(authTag, 'hex'));
|
|
45
|
+
let decrypted = decipher.update(data, 'hex', 'utf8');
|
|
46
|
+
decrypted += decipher.final('utf8');
|
|
47
|
+
return JSON.parse(decrypted);
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
await this.clear();
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
async clear() {
|
|
55
|
+
if (fs.existsSync(this.filePath)) {
|
|
56
|
+
fs.unlinkSync(this.filePath);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
async exists() {
|
|
60
|
+
return fs.existsSync(this.filePath);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=FileStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileStore.js","sourceRoot":"","sources":["../../src/auth/FileStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OAuth Flow
|
|
3
|
+
* Browser-based OAuth2 authorization code flow for Anypoint Platform
|
|
4
|
+
*/
|
|
5
|
+
import type { AnypointTokens } from './TokenStore.js';
|
|
6
|
+
export interface OAuthConfig {
|
|
7
|
+
clientId: string;
|
|
8
|
+
clientSecret: string;
|
|
9
|
+
redirectUri: string;
|
|
10
|
+
baseUrl?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare class OAuthFlow {
|
|
13
|
+
private readonly config;
|
|
14
|
+
private readonly baseUrl;
|
|
15
|
+
constructor(config: OAuthConfig);
|
|
16
|
+
/**
|
|
17
|
+
* Get the authorization URL to open in browser
|
|
18
|
+
*/
|
|
19
|
+
getAuthorizeUrl(state: string): string;
|
|
20
|
+
/**
|
|
21
|
+
* Start local callback server and wait for authorization code
|
|
22
|
+
*/
|
|
23
|
+
waitForCallback(port?: number, callbackPath?: string, timeoutMs?: number): Promise<{
|
|
24
|
+
code: string;
|
|
25
|
+
state: string;
|
|
26
|
+
}>;
|
|
27
|
+
/**
|
|
28
|
+
* Exchange authorization code for tokens
|
|
29
|
+
*/
|
|
30
|
+
exchangeCode(code: string): Promise<AnypointTokens>;
|
|
31
|
+
/**
|
|
32
|
+
* Refresh an expired access token
|
|
33
|
+
*/
|
|
34
|
+
refreshToken(refreshToken: string): Promise<AnypointTokens>;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=OAuthFlow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OAuthFlow.d.ts","sourceRoot":"","sources":["../../src/auth/OAuthFlow.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAYtD,MAAM,WAAW,WAAW;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,SAAS;IAClB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,EAAE,WAAW;IAK/B;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAYtC;;OAEG;IACG,eAAe,CACjB,IAAI,GAAE,MAAa,EACnB,YAAY,GAAE,MAAwB,EACtC,SAAS,GAAE,MAAe,GAC3B,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAqE3C;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAkCzD;;OAEG;IACG,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;CAgCpE"}
|