@sfdxy/anypoint-connect 0.16.3 → 0.18.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 +17 -6
- package/dist/analysis/audit-actors.d.ts +36 -0
- package/dist/analysis/audit-actors.d.ts.map +1 -0
- package/dist/analysis/audit-actors.js +93 -0
- package/dist/analysis/audit-actors.js.map +1 -0
- package/dist/analysis/credentials.d.ts +49 -0
- package/dist/analysis/credentials.d.ts.map +1 -0
- package/dist/analysis/credentials.js +118 -0
- package/dist/analysis/credentials.js.map +1 -0
- package/dist/analysis/parser.d.ts +5 -0
- package/dist/analysis/parser.d.ts.map +1 -1
- package/dist/analysis/parser.js +10 -1
- package/dist/analysis/parser.js.map +1 -1
- package/dist/api/AlertsApi.d.ts +138 -0
- package/dist/api/AlertsApi.d.ts.map +1 -0
- package/dist/api/AlertsApi.js +168 -0
- package/dist/api/AlertsApi.js.map +1 -0
- package/dist/api/LogsApi.d.ts +88 -12
- package/dist/api/LogsApi.d.ts.map +1 -1
- package/dist/api/LogsApi.js +335 -31
- package/dist/api/LogsApi.js.map +1 -1
- package/dist/auth/BearerProvider.d.ts +12 -0
- package/dist/auth/BearerProvider.d.ts.map +1 -0
- package/dist/auth/BearerProvider.js +18 -0
- package/dist/auth/BearerProvider.js.map +1 -0
- package/dist/auth/ClientCredentialsProvider.d.ts +23 -0
- package/dist/auth/ClientCredentialsProvider.d.ts.map +1 -0
- package/dist/auth/ClientCredentialsProvider.js +59 -0
- package/dist/auth/ClientCredentialsProvider.js.map +1 -0
- package/dist/auth/TokenProvider.d.ts +12 -0
- package/dist/auth/TokenProvider.d.ts.map +1 -0
- package/dist/auth/TokenProvider.js +2 -0
- package/dist/auth/TokenProvider.js.map +1 -0
- package/dist/auth/index.d.ts +1 -0
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/cli.js +8 -0
- package/dist/cli.js.map +1 -1
- package/dist/client/AnypointClient.d.ts +22 -0
- package/dist/client/AnypointClient.d.ts.map +1 -1
- package/dist/client/AnypointClient.js +82 -12
- package/dist/client/AnypointClient.js.map +1 -1
- package/dist/client/HttpClient.d.ts +3 -3
- package/dist/client/HttpClient.d.ts.map +1 -1
- package/dist/client/HttpClient.js +13 -3
- package/dist/client/HttpClient.js.map +1 -1
- package/dist/commands/alerts.d.ts +16 -0
- package/dist/commands/alerts.d.ts.map +1 -0
- package/dist/commands/alerts.js +375 -0
- package/dist/commands/alerts.js.map +1 -0
- package/dist/commands/api.d.ts.map +1 -1
- package/dist/commands/api.js +8 -3
- package/dist/commands/api.js.map +1 -1
- package/dist/commands/app-change-cli.d.ts +5 -2
- package/dist/commands/app-change-cli.d.ts.map +1 -1
- package/dist/commands/app-change-cli.js +19 -5
- package/dist/commands/app-change-cli.js.map +1 -1
- package/dist/commands/apps.d.ts.map +1 -1
- package/dist/commands/apps.js +69 -22
- package/dist/commands/apps.js.map +1 -1
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +21 -0
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +20 -1
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +17 -6
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/index.d.ts +1 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +1 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/logs.d.ts +2 -1
- package/dist/commands/logs.d.ts.map +1 -1
- package/dist/commands/logs.js +105 -10
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/monitor.d.ts.map +1 -1
- package/dist/commands/monitor.js +29 -1
- package/dist/commands/monitor.js.map +1 -1
- package/dist/commands/runtimes.d.ts.map +1 -1
- package/dist/commands/runtimes.js +38 -5
- package/dist/commands/runtimes.js.map +1 -1
- package/dist/commands/shared.d.ts.map +1 -1
- package/dist/commands/shared.js +1 -7
- package/dist/commands/shared.js.map +1 -1
- package/dist/config/auth-modes.d.ts +11 -0
- package/dist/config/auth-modes.d.ts.map +1 -0
- package/dist/config/auth-modes.js +18 -0
- package/dist/config/auth-modes.js.map +1 -0
- package/dist/config/profiles.d.ts +19 -2
- package/dist/config/profiles.d.ts.map +1 -1
- package/dist/config/profiles.js +68 -24
- package/dist/config/profiles.js.map +1 -1
- package/dist/index.d.ts +12 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +4 -9
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/alerts.d.ts +82 -0
- package/dist/mcp/tools/alerts.d.ts.map +1 -0
- package/dist/mcp/tools/alerts.js +423 -0
- package/dist/mcp/tools/alerts.js.map +1 -0
- package/dist/mcp/tools/api-manager.d.ts.map +1 -1
- package/dist/mcp/tools/api-manager.js +6 -1
- package/dist/mcp/tools/api-manager.js.map +1 -1
- package/dist/mcp/tools/app-inputs.d.ts +20 -2
- package/dist/mcp/tools/app-inputs.d.ts.map +1 -1
- package/dist/mcp/tools/app-inputs.js +40 -2
- package/dist/mcp/tools/app-inputs.js.map +1 -1
- package/dist/mcp/tools/apps-deploy.d.ts.map +1 -1
- package/dist/mcp/tools/apps-deploy.js +65 -13
- package/dist/mcp/tools/apps-deploy.js.map +1 -1
- package/dist/mcp/tools/apps-lifecycle.d.ts.map +1 -1
- package/dist/mcp/tools/apps-lifecycle.js +37 -15
- package/dist/mcp/tools/apps-lifecycle.js.map +1 -1
- package/dist/mcp/tools/apps-read.d.ts.map +1 -1
- package/dist/mcp/tools/apps-read.js +11 -5
- package/dist/mcp/tools/apps-read.js.map +1 -1
- package/dist/mcp/tools/audit.d.ts.map +1 -1
- package/dist/mcp/tools/audit.js +17 -4
- package/dist/mcp/tools/audit.js.map +1 -1
- package/dist/mcp/tools/exchange.d.ts.map +1 -1
- package/dist/mcp/tools/exchange.js +38 -18
- package/dist/mcp/tools/exchange.js.map +1 -1
- package/dist/mcp/tools/identity.d.ts.map +1 -1
- package/dist/mcp/tools/identity.js +29 -2
- package/dist/mcp/tools/identity.js.map +1 -1
- package/dist/mcp/tools/index.d.ts +1 -0
- package/dist/mcp/tools/index.d.ts.map +1 -1
- package/dist/mcp/tools/index.js +1 -0
- package/dist/mcp/tools/index.js.map +1 -1
- package/dist/mcp/tools/logs.d.ts +1 -1
- package/dist/mcp/tools/logs.d.ts.map +1 -1
- package/dist/mcp/tools/logs.js +34 -1
- package/dist/mcp/tools/logs.js.map +1 -1
- package/dist/mcp/tools/monitoring.d.ts.map +1 -1
- package/dist/mcp/tools/monitoring.js +5 -3
- package/dist/mcp/tools/monitoring.js.map +1 -1
- package/dist/mcp/tools/output-schemas.d.ts +83 -0
- package/dist/mcp/tools/output-schemas.d.ts.map +1 -0
- package/dist/mcp/tools/output-schemas.js +81 -0
- package/dist/mcp/tools/output-schemas.js.map +1 -0
- package/dist/mcp/tools/profile.d.ts +17 -3
- package/dist/mcp/tools/profile.d.ts.map +1 -1
- package/dist/mcp/tools/profile.js +122 -10
- package/dist/mcp/tools/profile.js.map +1 -1
- package/dist/mcp/tools/shared.d.ts +34 -2
- package/dist/mcp/tools/shared.d.ts.map +1 -1
- package/dist/mcp/tools/shared.js +37 -4
- package/dist/mcp/tools/shared.js.map +1 -1
- package/dist/safety/artifact.d.ts +45 -0
- package/dist/safety/artifact.d.ts.map +1 -1
- package/dist/safety/artifact.js +109 -0
- package/dist/safety/artifact.js.map +1 -1
- package/dist/safety/guards.d.ts +10 -0
- package/dist/safety/guards.d.ts.map +1 -1
- package/dist/safety/guards.js +16 -0
- package/dist/safety/guards.js.map +1 -1
- package/dist/safety/plan-binding.d.ts +21 -0
- package/dist/safety/plan-binding.d.ts.map +1 -0
- package/dist/safety/plan-binding.js +61 -0
- package/dist/safety/plan-binding.js.map +1 -0
- package/dist/safety/preapproval.d.ts +102 -0
- package/dist/safety/preapproval.d.ts.map +1 -0
- package/dist/safety/preapproval.js +251 -0
- package/dist/safety/preapproval.js.map +1 -0
- package/dist/safety/secrets.d.ts +7 -0
- package/dist/safety/secrets.d.ts.map +1 -1
- package/dist/safety/secrets.js +16 -0
- package/dist/safety/secrets.js.map +1 -1
- package/dist/utils/formatter.d.ts +2 -0
- package/dist/utils/formatter.d.ts.map +1 -1
- package/dist/utils/formatter.js +4 -0
- package/dist/utils/formatter.js.map +1 -1
- package/dist/utils/logger.d.ts +2 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +23 -13
- package/dist/utils/logger.js.map +1 -1
- package/dist/workflows/alerts.d.ts +309 -0
- package/dist/workflows/alerts.d.ts.map +1 -0
- package/dist/workflows/alerts.js +631 -0
- package/dist/workflows/alerts.js.map +1 -0
- package/dist/workflows/app-change.d.ts +32 -1
- package/dist/workflows/app-change.d.ts.map +1 -1
- package/dist/workflows/app-change.js +57 -2
- package/dist/workflows/app-change.js.map +1 -1
- package/dist/workflows/artifact-verification.d.ts +52 -0
- package/dist/workflows/artifact-verification.d.ts.map +1 -0
- package/dist/workflows/artifact-verification.js +85 -0
- package/dist/workflows/artifact-verification.js.map +1 -0
- package/dist/workflows/jar-deployment.d.ts +37 -10
- package/dist/workflows/jar-deployment.d.ts.map +1 -1
- package/dist/workflows/jar-deployment.js +44 -13
- package/dist/workflows/jar-deployment.js.map +1 -1
- package/package.json +1 -1
package/dist/api/LogsApi.js
CHANGED
|
@@ -3,12 +3,43 @@
|
|
|
3
3
|
* Log tailing, fetching, and downloading for CloudHub 2.0
|
|
4
4
|
* Uses the AMC log file download endpoint with spec ID resolution
|
|
5
5
|
*/
|
|
6
|
+
import { setTimeout as delay } from 'node:timers/promises';
|
|
6
7
|
import { parseRawLogs } from '../analysis/parser.js';
|
|
7
8
|
import { buildFilter, searchEntries } from '../analysis/filter.js';
|
|
8
9
|
import { errorMessage } from '../utils/errors.js';
|
|
9
10
|
export { MAX_LOG_LINES } from '../analysis/filter.js';
|
|
10
11
|
/** Most earlier specs one read may include. */
|
|
11
12
|
export const MAX_PREVIOUS_SPECS = 10;
|
|
13
|
+
/** The incremental endpoint cannot serve this read; the full file is read instead. */
|
|
14
|
+
class IncrementalUnavailableError extends Error {
|
|
15
|
+
}
|
|
16
|
+
function structuredEntry(row) {
|
|
17
|
+
return {
|
|
18
|
+
timestamp: row.timestamp,
|
|
19
|
+
message: row.message ?? '',
|
|
20
|
+
priority: row.logLevel ?? 'INFO',
|
|
21
|
+
...(row.replicaId ? { instanceId: row.replicaId } : {}),
|
|
22
|
+
...(row.context?.logger || row.context?.class ? { loggerName: row.context.logger ?? row.context.class } : {}),
|
|
23
|
+
...(row.context?.event ? { eventId: row.context.event } : {}),
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/** The endpoint returns 10 records per request whatever `limit` says. */
|
|
27
|
+
const INCREMENTAL_PAGE_SIZE = 10;
|
|
28
|
+
/** Requests per read; a larger backlog is read again at once rather than in one long call. */
|
|
29
|
+
const MAX_INCREMENTAL_PAGES = 50;
|
|
30
|
+
/** Added to now for the range end, so a clock slightly behind the platform's does not hide the newest records. */
|
|
31
|
+
const INCREMENTAL_END_SKEW_MS = 5 * 60_000;
|
|
32
|
+
/** How far behind the log the tail may fall while draining a backlog before it skips ahead. */
|
|
33
|
+
const MAX_TAIL_LAG_MS = 120_000;
|
|
34
|
+
/** Characters of the log file one read looks at, from the end. Larger files are read in full but only this tail is parsed. */
|
|
35
|
+
const TAIL_WINDOW_CHARS = 500_000;
|
|
36
|
+
/** A record's identity at its own millisecond: everything that distinguishes two lines the platform wrote. */
|
|
37
|
+
function tailKey(entry) {
|
|
38
|
+
return [entry.priority, entry.instanceId ?? '', entry.threadName ?? '', entry.loggerName ?? '', entry.message].join('\u0000');
|
|
39
|
+
}
|
|
40
|
+
function bump(counts, key) {
|
|
41
|
+
counts.set(key, (counts.get(key) ?? 0) + 1);
|
|
42
|
+
}
|
|
12
43
|
const AMC_BASE = '/amc/application-manager/api/v2';
|
|
13
44
|
function httpStatus(error) {
|
|
14
45
|
return error?.response?.status;
|
|
@@ -43,12 +74,13 @@ export class LogsApi {
|
|
|
43
74
|
* Download the full log file for a CH2 deployment.
|
|
44
75
|
* Returns raw log text.
|
|
45
76
|
*/
|
|
46
|
-
async downloadLogFile(orgId, envId, deploymentId, specId) {
|
|
77
|
+
async downloadLogFile(orgId, envId, deploymentId, specId, signal) {
|
|
47
78
|
return this.http.download(`${AMC_BASE}/organizations/${orgId}/environments/${envId}/deployments/${deploymentId}/specs/${specId}/logs/file`, {
|
|
48
79
|
headers: {
|
|
49
80
|
'X-ANYPNT-ORG-ID': orgId,
|
|
50
81
|
'X-ANYPNT-ENV-ID': envId,
|
|
51
82
|
},
|
|
83
|
+
...(signal ? { signal } : {}),
|
|
52
84
|
});
|
|
53
85
|
}
|
|
54
86
|
/**
|
|
@@ -76,6 +108,18 @@ export class LogsApi {
|
|
|
76
108
|
* successful spec's file is read instead and `fallbackFromSpecId` says so.
|
|
77
109
|
*/
|
|
78
110
|
async getLogFile(orgId, envId, appName, read = {}) {
|
|
111
|
+
const { parts, ...source } = await this.getLogParts(orgId, envId, appName, read);
|
|
112
|
+
if (!source.specIds)
|
|
113
|
+
return { ...source, text: parts[0]?.text ?? '' };
|
|
114
|
+
const blocks = parts.filter((p) => p.text.trim()).map((p) => (p.text.endsWith('\n') ? p.text : `${p.text}\n`));
|
|
115
|
+
return { ...source, text: blocks.join('') };
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* The same read as {@link getLogFile}, with each spec's text kept apart, for callers that
|
|
119
|
+
* report per spec. With previousSpecs, specs without a log file (never started, or expired)
|
|
120
|
+
* are skipped.
|
|
121
|
+
*/
|
|
122
|
+
async getLogParts(orgId, envId, appName, read = {}) {
|
|
79
123
|
const previousSpecs = checkPreviousSpecs(read.previousSpecs ?? 0);
|
|
80
124
|
const { deploymentId, specIds } = await this.resolveDeployment(orgId, envId, appName);
|
|
81
125
|
const [desired, previous] = specIds;
|
|
@@ -84,22 +128,24 @@ export class LogsApi {
|
|
|
84
128
|
}
|
|
85
129
|
let text = '';
|
|
86
130
|
try {
|
|
87
|
-
text = (await this.downloadLogFile(orgId, envId, deploymentId, desired)).toString('utf-8');
|
|
131
|
+
text = (await this.downloadLogFile(orgId, envId, deploymentId, desired, read.signal)).toString('utf-8');
|
|
88
132
|
}
|
|
89
133
|
catch (error) {
|
|
90
134
|
if (!previous || httpStatus(error) !== 404)
|
|
91
135
|
throw error;
|
|
92
136
|
}
|
|
93
137
|
if (text.trim() || !previous) {
|
|
94
|
-
return { deploymentId, specId: desired, text };
|
|
138
|
+
return { deploymentId, specId: desired, parts: [{ specId: desired, text }] };
|
|
95
139
|
}
|
|
96
|
-
const fallback = (await this.downloadLogFile(orgId, envId, deploymentId, previous)).toString('utf-8');
|
|
97
|
-
return {
|
|
140
|
+
const fallback = (await this.downloadLogFile(orgId, envId, deploymentId, previous, read.signal)).toString('utf-8');
|
|
141
|
+
return {
|
|
142
|
+
deploymentId,
|
|
143
|
+
specId: previous,
|
|
144
|
+
fallbackFromSpecId: desired,
|
|
145
|
+
parts: [{ specId: previous, text: fallback }],
|
|
146
|
+
};
|
|
98
147
|
}
|
|
99
|
-
/**
|
|
100
|
-
* Read the desired spec and up to `count` specs before it, joined oldest first.
|
|
101
|
-
* Specs without a log file (never started, or expired) are skipped.
|
|
102
|
-
*/
|
|
148
|
+
/** Read the desired spec and up to `count` specs before it, oldest first. */
|
|
103
149
|
async readSpecs(orgId, envId, deploymentId, desired, count) {
|
|
104
150
|
if (!this.ch2)
|
|
105
151
|
throw new Error('CloudHub2Api required for log operations');
|
|
@@ -107,21 +153,18 @@ export class LogsApi {
|
|
|
107
153
|
const all = (await this.ch2.getDeploymentSpecs(orgId, envId, deploymentId)).map((s) => s.version);
|
|
108
154
|
const start = Math.max(all.indexOf(desired), 0);
|
|
109
155
|
const chosen = [desired, ...all.slice(start).filter((id) => id !== desired)].slice(0, count + 1).reverse();
|
|
110
|
-
const
|
|
111
|
-
const blocks = [];
|
|
156
|
+
const parts = [];
|
|
112
157
|
for (const specId of chosen) {
|
|
113
158
|
try {
|
|
114
159
|
const text = (await this.downloadLogFile(orgId, envId, deploymentId, specId)).toString('utf-8');
|
|
115
|
-
|
|
116
|
-
if (text.trim())
|
|
117
|
-
blocks.push(text.endsWith('\n') ? text : `${text}\n`);
|
|
160
|
+
parts.push({ specId, text });
|
|
118
161
|
}
|
|
119
162
|
catch (error) {
|
|
120
163
|
if (httpStatus(error) !== 404)
|
|
121
164
|
throw error;
|
|
122
165
|
}
|
|
123
166
|
}
|
|
124
|
-
return { deploymentId, specId: desired, specIds:
|
|
167
|
+
return { deploymentId, specId: desired, specIds: parts.map((p) => p.specId), parts };
|
|
125
168
|
}
|
|
126
169
|
/**
|
|
127
170
|
* Get raw log text for a CH2 application (for analysis pipeline).
|
|
@@ -154,10 +197,19 @@ export class LogsApi {
|
|
|
154
197
|
return { entries: parseLogFile(file).filter(buildFilter(filter)), source: sourceOf(file) };
|
|
155
198
|
}
|
|
156
199
|
/**
|
|
157
|
-
*
|
|
158
|
-
*
|
|
200
|
+
* Follow an app's log as typed events. Polls the log file; each poll yields only records not
|
|
201
|
+
* yielded before. Records that share a millisecond are all kept (and identical lines counted),
|
|
202
|
+
* the position advances past every record read before any filter hides some, and `signal`
|
|
203
|
+
* stops the wait and the request in flight.
|
|
204
|
+
*
|
|
205
|
+
* Without `specId` it follows the current spec (the desired one, or the last successful one
|
|
206
|
+
* with a notice) and says when that changes. With `specId` it follows exactly that spec: one
|
|
207
|
+
* that is not this app's is an error, never replaced by another; so is one with no log file when the
|
|
208
|
+
* log is read from the file. On the incremental endpoint a spec without records yet is simply
|
|
209
|
+
* followed until it has some.
|
|
159
210
|
*/
|
|
160
|
-
async *
|
|
211
|
+
async *tailEvents(orgId, envId, appName, options = {}) {
|
|
212
|
+
const { signal, specId: pinnedSpec } = options;
|
|
161
213
|
const intervalMs = options.intervalMs || 5000;
|
|
162
214
|
const keep = buildFilter({
|
|
163
215
|
level: options.level,
|
|
@@ -165,25 +217,277 @@ export class LogsApi {
|
|
|
165
217
|
regex: options.regex,
|
|
166
218
|
logger: options.logger,
|
|
167
219
|
});
|
|
168
|
-
|
|
169
|
-
|
|
220
|
+
const pinned = pinnedSpec ? await this.resolvePinnedSpec(orgId, envId, appName, pinnedSpec) : undefined;
|
|
221
|
+
let followed = null;
|
|
222
|
+
let lastTs = Date.now() - 30_000; // start from 30 seconds ago
|
|
223
|
+
let atLast = new Map(); // records already yielded at exactly lastTs
|
|
224
|
+
let polled = false;
|
|
225
|
+
let mode = null;
|
|
226
|
+
let incrementalUnsupported = false;
|
|
227
|
+
let reportedTieAt;
|
|
228
|
+
while (!signal?.aborted) {
|
|
229
|
+
let drainNext = false; // a backlog is waiting: read again without sleeping
|
|
170
230
|
try {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
231
|
+
let read;
|
|
232
|
+
if (!incrementalUnsupported) {
|
|
233
|
+
try {
|
|
234
|
+
read = pinned
|
|
235
|
+
? await this.readStructured(orgId, envId, pinned.deploymentId, pinned.specId, lastTs, signal)
|
|
236
|
+
: await this.readStructuredCurrent(orgId, envId, appName, followed, lastTs, signal);
|
|
237
|
+
}
|
|
238
|
+
catch (error) {
|
|
239
|
+
if (!(error instanceof IncrementalUnavailableError))
|
|
240
|
+
throw error;
|
|
241
|
+
incrementalUnsupported = true;
|
|
242
|
+
yield { type: 'transport', mode: 'file', reason: error.message };
|
|
243
|
+
mode = 'file';
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
if (!read)
|
|
247
|
+
read = await this.readFileWindow(orgId, envId, appName, pinned, signal);
|
|
248
|
+
if (read.mode === 'incremental' && mode !== 'incremental') {
|
|
249
|
+
yield { type: 'transport', mode: 'incremental' };
|
|
250
|
+
mode = 'incremental';
|
|
251
|
+
}
|
|
252
|
+
if (read.specId !== followed) {
|
|
253
|
+
yield {
|
|
254
|
+
type: 'specChange',
|
|
255
|
+
from: followed,
|
|
256
|
+
to: read.specId,
|
|
257
|
+
...(read.fallbackFromSpecId ? { fallbackFromSpecId: read.fallbackFromSpecId } : {}),
|
|
258
|
+
};
|
|
259
|
+
if (followed !== null)
|
|
260
|
+
atLast = new Map(); // a new file: nothing of it was seen
|
|
261
|
+
followed = read.specId;
|
|
262
|
+
}
|
|
263
|
+
if (read.gap) {
|
|
264
|
+
if (read.tiedAt !== undefined) {
|
|
265
|
+
// Certain, and the same tie shows up on every later read: say it once per millisecond.
|
|
266
|
+
if (read.tiedAt !== reportedTieAt) {
|
|
267
|
+
reportedTieAt = read.tiedAt;
|
|
268
|
+
yield { type: 'gap', message: read.gap };
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
else if (polled && read.items.length > 0 && read.items[0].entry.timestamp > lastTs) {
|
|
272
|
+
yield { type: 'gap', message: read.gap };
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
polled = true;
|
|
276
|
+
drainNext = false;
|
|
277
|
+
const fresh = [];
|
|
278
|
+
const seenNow = new Map();
|
|
279
|
+
for (const item of read.items) {
|
|
280
|
+
if (item.entry.timestamp < lastTs)
|
|
281
|
+
continue;
|
|
282
|
+
if (item.entry.timestamp === lastTs) {
|
|
283
|
+
const n = (seenNow.get(item.key) ?? 0) + 1;
|
|
284
|
+
seenNow.set(item.key, n);
|
|
285
|
+
if (n <= (atLast.get(item.key) ?? 0))
|
|
286
|
+
continue;
|
|
287
|
+
}
|
|
288
|
+
fresh.push(item);
|
|
179
289
|
}
|
|
290
|
+
// Read again at once only while reads keep producing something new; an empty read waits like any other.
|
|
291
|
+
drainNext = read.backlog && fresh.length > 0;
|
|
292
|
+
if (fresh.length > 0) {
|
|
293
|
+
const newest = fresh[fresh.length - 1].entry.timestamp;
|
|
294
|
+
if (newest === lastTs) {
|
|
295
|
+
for (const item of fresh)
|
|
296
|
+
bump(atLast, item.key);
|
|
297
|
+
}
|
|
298
|
+
else {
|
|
299
|
+
lastTs = newest;
|
|
300
|
+
atLast = new Map();
|
|
301
|
+
for (const item of fresh)
|
|
302
|
+
if (item.entry.timestamp === newest)
|
|
303
|
+
bump(atLast, item.key);
|
|
304
|
+
}
|
|
305
|
+
const shown = fresh.map((i) => i.entry).filter(keep);
|
|
306
|
+
if (shown.length > 0)
|
|
307
|
+
yield { type: 'records', entries: shown, specId: read.specId };
|
|
308
|
+
}
|
|
309
|
+
if (drainNext && lastTs < Date.now() - MAX_TAIL_LAG_MS) {
|
|
310
|
+
// The app writes faster than the endpoint can be read: say so and catch up instead of falling further behind.
|
|
311
|
+
yield {
|
|
312
|
+
type: 'gap',
|
|
313
|
+
message: `The tail fell more than ${MAX_TAIL_LAG_MS / 1000} seconds behind the log and skipped ahead to the last 30 seconds; the lines in between were not shown. Read them with \`anc logs search\`.`,
|
|
314
|
+
};
|
|
315
|
+
lastTs = Date.now() - 30_000;
|
|
316
|
+
atLast = new Map();
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
catch (error) {
|
|
320
|
+
if (signal?.aborted)
|
|
321
|
+
return;
|
|
322
|
+
// A pinned spec must be readable at least once; after that a failed read is reported and retried.
|
|
323
|
+
if (pinned && !polled)
|
|
324
|
+
throw error;
|
|
325
|
+
yield { type: 'error', message: errorMessage(error) };
|
|
326
|
+
}
|
|
327
|
+
if (drainNext)
|
|
328
|
+
continue;
|
|
329
|
+
try {
|
|
330
|
+
await delay(intervalMs, undefined, { signal });
|
|
180
331
|
}
|
|
181
|
-
catch
|
|
182
|
-
|
|
332
|
+
catch {
|
|
333
|
+
return; // cancelled
|
|
183
334
|
}
|
|
184
|
-
await new Promise((resolve) => setTimeout(resolve, intervalMs));
|
|
185
335
|
}
|
|
186
336
|
}
|
|
337
|
+
/**
|
|
338
|
+
* Tail logs: a generator that yields new log entries. A view of {@link tailEvents} for callers
|
|
339
|
+
* that want only the records; read errors go to stderr and following continues.
|
|
340
|
+
*/
|
|
341
|
+
async *tailLogs(orgId, envId, appName, options = {}) {
|
|
342
|
+
for await (const event of this.tailEvents(orgId, envId, appName, options)) {
|
|
343
|
+
if (event.type === 'records')
|
|
344
|
+
yield event.entries;
|
|
345
|
+
else if (event.type === 'error')
|
|
346
|
+
console.error(`Log poll error: ${event.message}`);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* The incremental read: records of one spec from `since` on, through the structured log endpoint.
|
|
351
|
+
* It returns 10 records per request, oldest first, with `startTime` inclusive, so the read walks
|
|
352
|
+
* forward by the last record's time and drops repeats by `docId`. At most MAX_INCREMENTAL_PAGES
|
|
353
|
+
* requests per read; when more remain the read says so and the caller reads again at once.
|
|
354
|
+
*/
|
|
355
|
+
async readStructured(orgId, envId, deploymentId, specId, since, signal) {
|
|
356
|
+
const items = [];
|
|
357
|
+
const seen = new Set();
|
|
358
|
+
let start = since;
|
|
359
|
+
let backlog = false;
|
|
360
|
+
let tiedAt;
|
|
361
|
+
for (let page = 0;; page++) {
|
|
362
|
+
const rows = await this.fetchStructuredPage(orgId, envId, deploymentId, specId, start, Date.now() + INCREMENTAL_END_SKEW_MS, signal);
|
|
363
|
+
for (const row of rows) {
|
|
364
|
+
const key = String(row.docId);
|
|
365
|
+
if (seen.has(key))
|
|
366
|
+
continue;
|
|
367
|
+
seen.add(key);
|
|
368
|
+
items.push({ entry: structuredEntry(row), key });
|
|
369
|
+
}
|
|
370
|
+
if (rows.length < INCREMENTAL_PAGE_SIZE)
|
|
371
|
+
break; // the last page
|
|
372
|
+
const lastTs = rows[rows.length - 1].timestamp;
|
|
373
|
+
if (lastTs === start) {
|
|
374
|
+
// A whole page at one millisecond: the endpoint cannot page inside it, so step past it.
|
|
375
|
+
tiedAt = lastTs;
|
|
376
|
+
start = lastTs + 1;
|
|
377
|
+
}
|
|
378
|
+
else {
|
|
379
|
+
start = lastTs;
|
|
380
|
+
}
|
|
381
|
+
if (page + 1 >= MAX_INCREMENTAL_PAGES) {
|
|
382
|
+
backlog = true;
|
|
383
|
+
break;
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
return {
|
|
387
|
+
mode: 'incremental',
|
|
388
|
+
specId,
|
|
389
|
+
items,
|
|
390
|
+
backlog,
|
|
391
|
+
...(tiedAt !== undefined
|
|
392
|
+
? {
|
|
393
|
+
gap: `More than ${INCREMENTAL_PAGE_SIZE} records share one millisecond and the platform cannot page inside it, so some may be missing.`,
|
|
394
|
+
tiedAt,
|
|
395
|
+
}
|
|
396
|
+
: {}),
|
|
397
|
+
};
|
|
398
|
+
}
|
|
399
|
+
/** The incremental read of the current spec: the desired one, or the last successful one while the desired has no records. */
|
|
400
|
+
async readStructuredCurrent(orgId, envId, appName, followed, since, signal) {
|
|
401
|
+
const { deploymentId, specIds } = await this.resolveDeployment(orgId, envId, appName);
|
|
402
|
+
const [desired, previous] = specIds;
|
|
403
|
+
const read = await this.readStructured(orgId, envId, deploymentId, desired, since, signal);
|
|
404
|
+
if (read.items.length > 0 || !previous || followed === desired)
|
|
405
|
+
return read;
|
|
406
|
+
const fallback = await this.readStructured(orgId, envId, deploymentId, previous, since, signal);
|
|
407
|
+
// Keep following the fallback while the desired spec is still silent; the first poll settles on desired if both are.
|
|
408
|
+
if (fallback.items.length > 0 || followed === previous)
|
|
409
|
+
return { ...fallback, fallbackFromSpecId: desired };
|
|
410
|
+
return read;
|
|
411
|
+
}
|
|
412
|
+
async fetchStructuredPage(orgId, envId, deploymentId, specId, startTime, endTime, signal) {
|
|
413
|
+
let data;
|
|
414
|
+
try {
|
|
415
|
+
data = await this.http.get(`${AMC_BASE}/organizations/${orgId}/environments/${envId}/deployments/${deploymentId}/specs/${specId}/logs`, {
|
|
416
|
+
headers: { 'X-ANYPNT-ORG-ID': orgId, 'X-ANYPNT-ENV-ID': envId },
|
|
417
|
+
// Epoch milliseconds: ISO timestamps are rejected.
|
|
418
|
+
params: { startTime, endTime, descending: false },
|
|
419
|
+
...(signal ? { signal } : {}),
|
|
420
|
+
});
|
|
421
|
+
}
|
|
422
|
+
catch (error) {
|
|
423
|
+
const status = httpStatus(error);
|
|
424
|
+
// A spec without logs can answer 404 (as its log file does): that is no records, not a missing endpoint.
|
|
425
|
+
if (status === 404)
|
|
426
|
+
return [];
|
|
427
|
+
// The endpoint rejects the request or does not exist for this API: use the file instead.
|
|
428
|
+
if (status === 400 || status === 405 || status === 501) {
|
|
429
|
+
throw new IncrementalUnavailableError(`the incremental log endpoint answered HTTP ${status}`);
|
|
430
|
+
}
|
|
431
|
+
throw error;
|
|
432
|
+
}
|
|
433
|
+
const valid = Array.isArray(data) &&
|
|
434
|
+
data.every((r) => r &&
|
|
435
|
+
typeof r === 'object' &&
|
|
436
|
+
(typeof r.docId === 'string' || typeof r.docId === 'number') &&
|
|
437
|
+
typeof r.timestamp === 'number');
|
|
438
|
+
if (!valid)
|
|
439
|
+
throw new IncrementalUnavailableError('the incremental log endpoint returned an unexpected shape');
|
|
440
|
+
return data;
|
|
441
|
+
}
|
|
442
|
+
/** The full-file read: download the log file and parse its newest window. */
|
|
443
|
+
async readFileWindow(orgId, envId, appName, pinned, signal) {
|
|
444
|
+
const read = pinned
|
|
445
|
+
? await this.readPinnedSpec(orgId, envId, pinned.deploymentId, pinned.specId, signal)
|
|
446
|
+
: await this.readCurrentSpec(orgId, envId, appName, signal);
|
|
447
|
+
const cut = read.text.length > TAIL_WINDOW_CHARS;
|
|
448
|
+
const window = cut
|
|
449
|
+
? read.text.slice(read.text.indexOf('\n', read.text.length - TAIL_WINDOW_CHARS) + 1)
|
|
450
|
+
: read.text;
|
|
451
|
+
// Stable sort: records that share a timestamp keep their file order.
|
|
452
|
+
const entries = parseRawLogs(window).sort((a, b) => a.timestamp - b.timestamp);
|
|
453
|
+
return {
|
|
454
|
+
mode: 'file',
|
|
455
|
+
specId: read.specId,
|
|
456
|
+
...(read.fallbackFromSpecId ? { fallbackFromSpecId: read.fallbackFromSpecId } : {}),
|
|
457
|
+
items: entries.map((entry) => ({ entry, key: tailKey(entry) })),
|
|
458
|
+
backlog: false,
|
|
459
|
+
...(cut
|
|
460
|
+
? {
|
|
461
|
+
gap: 'Some log lines were missed: more arrived between reads than one read covers. Read the full log with `anc logs search` to see them.',
|
|
462
|
+
}
|
|
463
|
+
: {}),
|
|
464
|
+
};
|
|
465
|
+
}
|
|
466
|
+
/** The deployment of `appName` and `specId`, once the spec is known to belong to it. */
|
|
467
|
+
async resolvePinnedSpec(orgId, envId, appName, specId) {
|
|
468
|
+
const { deploymentId } = await this.resolveDeployment(orgId, envId, appName);
|
|
469
|
+
const known = (await this.ch2.getDeploymentSpecs(orgId, envId, deploymentId)).map((s) => s.version);
|
|
470
|
+
if (!known.includes(specId)) {
|
|
471
|
+
throw new Error(`Spec "${specId}" does not belong to "${appName}". Its specs, newest first: ${known.slice(0, MAX_PREVIOUS_SPECS + 1).join(', ') || 'none'}`);
|
|
472
|
+
}
|
|
473
|
+
return { deploymentId, specId };
|
|
474
|
+
}
|
|
475
|
+
async readPinnedSpec(orgId, envId, deploymentId, specId, signal) {
|
|
476
|
+
try {
|
|
477
|
+
const text = (await this.downloadLogFile(orgId, envId, deploymentId, specId, signal)).toString('utf-8');
|
|
478
|
+
return { specId, text, fallbackFromSpecId: undefined };
|
|
479
|
+
}
|
|
480
|
+
catch (error) {
|
|
481
|
+
if (httpStatus(error) === 404) {
|
|
482
|
+
throw new Error(`Spec "${specId}" has no log file (it never started, or the log expired). No other spec was read.`);
|
|
483
|
+
}
|
|
484
|
+
throw error;
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
async readCurrentSpec(orgId, envId, appName, signal) {
|
|
488
|
+
const { specId, fallbackFromSpecId, parts } = await this.getLogParts(orgId, envId, appName, { signal });
|
|
489
|
+
return { specId, fallbackFromSpecId, text: parts[0]?.text ?? '' };
|
|
490
|
+
}
|
|
187
491
|
/**
|
|
188
492
|
* Get all logs for a time range, newest first.
|
|
189
493
|
*/
|
package/dist/api/LogsApi.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogsApi.js","sourceRoot":"","sources":["../../src/api/LogsApi.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LogsApi.js","sourceRoot":"","sources":["../../src/api/LogsApi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { TokenProvider } from './TokenProvider.js';
|
|
2
|
+
/**
|
|
3
|
+
* A caller-supplied bearer token, kept in memory only. Its lifetime is unknown, so it is never
|
|
4
|
+
* refreshed or stored; when the platform rejects it the caller must supply a new one.
|
|
5
|
+
*/
|
|
6
|
+
export declare class BearerProvider implements TokenProvider {
|
|
7
|
+
readonly unauthorizedMessage = "The bearer token was rejected (expired or invalid). Supply a new ANYPOINT_ACCESS_TOKEN.";
|
|
8
|
+
private readonly token;
|
|
9
|
+
constructor(token: string | undefined);
|
|
10
|
+
getAccessToken(): Promise<string>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=BearerProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BearerProvider.d.ts","sourceRoot":"","sources":["../../src/auth/BearerProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD;;;GAGG;AACH,qBAAa,cAAe,YAAW,aAAa;IAChD,QAAQ,CAAC,mBAAmB,6FACkE;IAC9F,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;gBAEnB,KAAK,EAAE,MAAM,GAAG,SAAS;IAM/B,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;CAG1C"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A caller-supplied bearer token, kept in memory only. Its lifetime is unknown, so it is never
|
|
3
|
+
* refreshed or stored; when the platform rejects it the caller must supply a new one.
|
|
4
|
+
*/
|
|
5
|
+
export class BearerProvider {
|
|
6
|
+
unauthorizedMessage = 'The bearer token was rejected (expired or invalid). Supply a new ANYPOINT_ACCESS_TOKEN.';
|
|
7
|
+
token;
|
|
8
|
+
constructor(token) {
|
|
9
|
+
const trimmed = token?.trim();
|
|
10
|
+
if (!trimmed)
|
|
11
|
+
throw new Error('Bearer authentication needs a token: set ANYPOINT_ACCESS_TOKEN.');
|
|
12
|
+
this.token = trimmed;
|
|
13
|
+
}
|
|
14
|
+
async getAccessToken() {
|
|
15
|
+
return this.token;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=BearerProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BearerProvider.js","sourceRoot":"","sources":["../../src/auth/BearerProvider.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,OAAO,cAAc;IACd,mBAAmB,GACxB,yFAAyF,CAAC;IAC7E,KAAK,CAAS;IAE/B,YAAY,KAAyB;QACjC,MAAM,OAAO,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC;QAC9B,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;QACjG,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,cAAc;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;CACJ"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { TokenProvider } from './TokenProvider.js';
|
|
2
|
+
export interface ClientCredentialsConfig {
|
|
3
|
+
clientId: string;
|
|
4
|
+
clientSecret: string;
|
|
5
|
+
baseUrl?: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Service authentication: a Connected App's client credentials exchanged for a token. The token lives
|
|
9
|
+
* in memory only (never the human token file), concurrent callers share one exchange, and it is
|
|
10
|
+
* renewed shortly before it expires. It uses its own request, not the authenticated client, so token
|
|
11
|
+
* acquisition cannot call itself.
|
|
12
|
+
*/
|
|
13
|
+
export declare class ClientCredentialsProvider implements TokenProvider {
|
|
14
|
+
readonly unauthorizedMessage = "The service token was rejected. Check that the Connected App is still valid and has access to this organization.";
|
|
15
|
+
private readonly config;
|
|
16
|
+
private cached;
|
|
17
|
+
private pending;
|
|
18
|
+
constructor(config: ClientCredentialsConfig);
|
|
19
|
+
invalidate(): void;
|
|
20
|
+
getAccessToken(): Promise<string>;
|
|
21
|
+
private acquire;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=ClientCredentialsProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClientCredentialsProvider.d.ts","sourceRoot":"","sources":["../../src/auth/ClientCredentialsProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAQxD,MAAM,WAAW,uBAAuB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AASD;;;;;GAKG;AACH,qBAAa,yBAA0B,YAAW,aAAa;IAC3D,QAAQ,CAAC,mBAAmB,sHAC2F;IACvH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;IACjD,OAAO,CAAC,MAAM,CAAqD;IACnE,OAAO,CAAC,OAAO,CAAgC;gBAEnC,MAAM,EAAE,uBAAuB;IAO3C,UAAU,IAAI,IAAI;IAIZ,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;YAQzB,OAAO;CAyBxB"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
const DEFAULT_BASE_URL = 'https://anypoint.mulesoft.com';
|
|
2
|
+
/** Used when the platform omits `expires_in`: a short lifetime, so a missing field never over-trusts a token. */
|
|
3
|
+
const FALLBACK_LIFETIME_SECONDS = 600;
|
|
4
|
+
const RENEW_BEFORE_EXPIRY_MS = 60_000;
|
|
5
|
+
const TOKEN_REQUEST_TIMEOUT_MS = 30_000;
|
|
6
|
+
/**
|
|
7
|
+
* Service authentication: a Connected App's client credentials exchanged for a token. The token lives
|
|
8
|
+
* in memory only (never the human token file), concurrent callers share one exchange, and it is
|
|
9
|
+
* renewed shortly before it expires. It uses its own request, not the authenticated client, so token
|
|
10
|
+
* acquisition cannot call itself.
|
|
11
|
+
*/
|
|
12
|
+
export class ClientCredentialsProvider {
|
|
13
|
+
unauthorizedMessage = 'The service token was rejected. Check that the Connected App is still valid and has access to this organization.';
|
|
14
|
+
config;
|
|
15
|
+
cached = null;
|
|
16
|
+
pending = null;
|
|
17
|
+
constructor(config) {
|
|
18
|
+
if (!config.clientId || !config.clientSecret) {
|
|
19
|
+
throw new Error('client_credentials authentication needs a client ID and secret.');
|
|
20
|
+
}
|
|
21
|
+
this.config = config;
|
|
22
|
+
}
|
|
23
|
+
invalidate() {
|
|
24
|
+
this.cached = null;
|
|
25
|
+
}
|
|
26
|
+
async getAccessToken() {
|
|
27
|
+
if (this.cached && this.cached.expiresAt - Date.now() > RENEW_BEFORE_EXPIRY_MS)
|
|
28
|
+
return this.cached.token;
|
|
29
|
+
this.pending ??= this.acquire().finally(() => {
|
|
30
|
+
this.pending = null;
|
|
31
|
+
});
|
|
32
|
+
return this.pending;
|
|
33
|
+
}
|
|
34
|
+
async acquire() {
|
|
35
|
+
const url = `${this.config.baseUrl || DEFAULT_BASE_URL}/accounts/api/v2/oauth2/token`;
|
|
36
|
+
const response = await fetch(url, {
|
|
37
|
+
method: 'POST',
|
|
38
|
+
signal: AbortSignal.timeout(TOKEN_REQUEST_TIMEOUT_MS), // a hung endpoint must not block every request
|
|
39
|
+
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
|
|
40
|
+
body: new URLSearchParams({
|
|
41
|
+
grant_type: 'client_credentials',
|
|
42
|
+
client_id: this.config.clientId,
|
|
43
|
+
client_secret: this.config.clientSecret,
|
|
44
|
+
}).toString(),
|
|
45
|
+
});
|
|
46
|
+
const data = (await response.json().catch(() => ({})));
|
|
47
|
+
if (!response.ok || !data.access_token) {
|
|
48
|
+
// Only the platform's own error fields: never the request, which carries the secret.
|
|
49
|
+
const detail = [data.error, data.error_description].filter(Boolean).join(': ');
|
|
50
|
+
throw new Error(`Service token request failed (HTTP ${response.status})${detail ? `: ${detail}` : ''}`);
|
|
51
|
+
}
|
|
52
|
+
const seconds = Number.isFinite(data.expires_in) && data.expires_in > 0
|
|
53
|
+
? data.expires_in
|
|
54
|
+
: FALLBACK_LIFETIME_SECONDS;
|
|
55
|
+
this.cached = { token: data.access_token, expiresAt: Date.now() + seconds * 1000 };
|
|
56
|
+
return data.access_token;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=ClientCredentialsProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClientCredentialsProvider.js","sourceRoot":"","sources":["../../src/auth/ClientCredentialsProvider.ts"],"names":[],"mappings":"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"}
|