@microsoft/managed-apps-cli 0.17.0 → 0.19.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/dist/ArgumentProvider.d.ts +25 -1
- package/dist/ArgumentProvider.d.ts.map +1 -1
- package/dist/ArgumentProvider.js +80 -23
- package/dist/ArgumentProvider.js.map +1 -1
- package/dist/Authentication/ActiveAccountStore.d.ts +1 -1
- package/dist/Authentication/ActiveAccountStore.d.ts.map +1 -1
- package/dist/Authentication/ActiveAccountStore.js +3 -3
- package/dist/Authentication/ActiveAccountStore.js.map +1 -1
- package/dist/Authentication/NodeMsalAuthenticationProvider.d.ts +16 -1
- package/dist/Authentication/NodeMsalAuthenticationProvider.d.ts.map +1 -1
- package/dist/Authentication/NodeMsalAuthenticationProvider.js +72 -11
- package/dist/Authentication/NodeMsalAuthenticationProvider.js.map +1 -1
- package/dist/Cli.d.ts.map +1 -1
- package/dist/Cli.js +24 -10
- package/dist/Cli.js.map +1 -1
- package/dist/CliSettings.d.ts +2 -0
- package/dist/CliSettings.d.ts.map +1 -1
- package/dist/CliSettings.js +32 -8
- package/dist/CliSettings.js.map +1 -1
- package/dist/CliUtils.d.ts +4 -7
- package/dist/CliUtils.d.ts.map +1 -1
- package/dist/CliUtils.js +2 -12
- package/dist/CliUtils.js.map +1 -1
- package/dist/Constants/HelpStrings.d.ts +1 -0
- package/dist/Constants/HelpStrings.d.ts.map +1 -1
- package/dist/Constants/HelpStrings.js +8 -5
- package/dist/Constants/HelpStrings.js.map +1 -1
- package/dist/Constants.d.ts +4 -0
- package/dist/Constants.d.ts.map +1 -1
- package/dist/Constants.js +11 -1
- package/dist/Constants.js.map +1 -1
- package/dist/Errors/GitHubErrorMap.d.ts.map +1 -1
- package/dist/Errors/GitHubErrorMap.js +2 -0
- package/dist/Errors/GitHubErrorMap.js.map +1 -1
- package/dist/HttpClient/CliHttpClient.d.ts +2 -15
- package/dist/HttpClient/CliHttpClient.d.ts.map +1 -1
- package/dist/HttpClient/CliHttpClient.js +5 -91
- package/dist/HttpClient/CliHttpClient.js.map +1 -1
- package/dist/HttpClient/HttpForward.d.ts +9 -0
- package/dist/HttpClient/HttpForward.d.ts.map +1 -0
- package/dist/HttpClient/HttpForward.js +56 -0
- package/dist/HttpClient/HttpForward.js.map +1 -0
- package/dist/Logger/BufferedTelemetryWriter.d.ts +20 -0
- package/dist/Logger/BufferedTelemetryWriter.d.ts.map +1 -0
- package/dist/Logger/BufferedTelemetryWriter.js +163 -0
- package/dist/Logger/BufferedTelemetryWriter.js.map +1 -0
- package/dist/Logger/CliLogger.d.ts +29 -50
- package/dist/Logger/CliLogger.d.ts.map +1 -1
- package/dist/Logger/CliLogger.js +152 -116
- package/dist/Logger/CliLogger.js.map +1 -1
- package/dist/Logger/OneDSWriter.d.ts +15 -11
- package/dist/Logger/OneDSWriter.d.ts.map +1 -1
- package/dist/Logger/OneDSWriter.js +96 -23
- package/dist/Logger/OneDSWriter.js.map +1 -1
- package/dist/Types/Cli.types.d.ts +3 -2
- package/dist/Types/Cli.types.d.ts.map +1 -1
- package/dist/Types/Datasource.types.d.ts +1 -14
- package/dist/Types/Datasource.types.d.ts.map +1 -1
- package/dist/Types/LoggerTypes.types.d.ts +7 -7
- package/dist/Types/LoggerTypes.types.d.ts.map +1 -1
- package/dist/Utils/EnvironmentRoutingUtils.d.ts +1 -1
- package/dist/Utils/EnvironmentRoutingUtils.js +5 -5
- package/dist/Utils/EnvironmentRoutingUtils.js.map +1 -1
- package/dist/Utils/FindAvailablePort.d.ts +39 -0
- package/dist/Utils/FindAvailablePort.d.ts.map +1 -0
- package/dist/Utils/FindAvailablePort.js +105 -0
- package/dist/Utils/FindAvailablePort.js.map +1 -0
- package/dist/Verbs/AddConnectorFlows.d.ts +4 -4
- package/dist/Verbs/AddConnectorFlows.d.ts.map +1 -1
- package/dist/Verbs/AddConnectorFlows.js +10 -7
- package/dist/Verbs/AddConnectorFlows.js.map +1 -1
- package/dist/Verbs/AddFlow.d.ts.map +1 -1
- package/dist/Verbs/AddFlow.js +1 -7
- package/dist/Verbs/AddFlow.js.map +1 -1
- package/dist/Verbs/CreateMaafApp.d.ts.map +1 -1
- package/dist/Verbs/CreateMaafApp.js +5 -6
- package/dist/Verbs/CreateMaafApp.js.map +1 -1
- package/dist/Verbs/DeleteMaafApp.d.ts.map +1 -1
- package/dist/Verbs/DeleteMaafApp.js +6 -10
- package/dist/Verbs/DeleteMaafApp.js.map +1 -1
- package/dist/Verbs/Dev.d.ts.map +1 -1
- package/dist/Verbs/Dev.js +44 -13
- package/dist/Verbs/Dev.js.map +1 -1
- package/dist/Verbs/GetMaafApp.js +2 -3
- package/dist/Verbs/GetMaafApp.js.map +1 -1
- package/dist/Verbs/Init.d.ts.map +1 -1
- package/dist/Verbs/Init.js +2 -2
- package/dist/Verbs/Init.js.map +1 -1
- package/dist/Verbs/ListMaafApps.d.ts +22 -10
- package/dist/Verbs/ListMaafApps.d.ts.map +1 -1
- package/dist/Verbs/ListMaafApps.js +77 -31
- package/dist/Verbs/ListMaafApps.js.map +1 -1
- package/dist/Verbs/Login.d.ts.map +1 -1
- package/dist/Verbs/Login.js +9 -1
- package/dist/Verbs/Login.js.map +1 -1
- package/dist/Verbs/MaafAppPermissions.d.ts +1 -1
- package/dist/Verbs/MaafAppPermissions.js +15 -14
- package/dist/Verbs/MaafAppPermissions.js.map +1 -1
- package/dist/Verbs/RefreshGitAuth.d.ts.map +1 -1
- package/dist/Verbs/RefreshGitAuth.js +2 -3
- package/dist/Verbs/RefreshGitAuth.js.map +1 -1
- package/dist/Verbs/RemoveFlow.d.ts.map +1 -1
- package/dist/Verbs/RemoveFlow.js +1 -7
- package/dist/Verbs/RemoveFlow.js.map +1 -1
- package/dist/Verbs/VerbConstants.d.ts +5 -1
- package/dist/Verbs/VerbConstants.d.ts.map +1 -1
- package/dist/Verbs/VerbConstants.js +10 -1
- package/dist/Verbs/VerbConstants.js.map +1 -1
- package/package.json +4 -4
package/dist/Logger/CliLogger.js
CHANGED
|
@@ -1,15 +1,41 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Copyright (C) Microsoft Corporation. All rights reserved.
|
|
3
3
|
*/
|
|
4
|
+
import { randomUUID } from 'node:crypto';
|
|
4
5
|
import { getEnvironmentByName } from '@microsoft/managed-apps-actions';
|
|
5
|
-
import {
|
|
6
|
-
import { randomUUID } from 'crypto';
|
|
6
|
+
import { regionToClusterCategory } from '@microsoft/managed-apps-common/services';
|
|
7
7
|
import packageJson from '../../package.json' with { type: 'json' };
|
|
8
8
|
import { getCliEnvVarBool } from '../Utils/EnvVars.js';
|
|
9
|
+
import { BufferedTelemetryWriter } from './BufferedTelemetryWriter.js';
|
|
9
10
|
import { ConsoleWriter } from './ConsoleWriter.js';
|
|
10
11
|
import { EUGeoRegions } from './Constants.js';
|
|
11
12
|
import { resolveUserTelemetrySettings } from './LoggerSettings.js';
|
|
12
13
|
import { OneDSWriter } from './OneDSWriter.js';
|
|
14
|
+
const environmentlessIdentifierDimensions = new Set(['environmentid', 'tenantid', 'objectid']);
|
|
15
|
+
function isEnvironmentlessIdentifierDimension(key) {
|
|
16
|
+
return environmentlessIdentifierDimensions.has(key.toLowerCase());
|
|
17
|
+
}
|
|
18
|
+
function removeEnvironmentlessIdentifierDimensions(eventData) {
|
|
19
|
+
if (!eventData) {
|
|
20
|
+
return eventData;
|
|
21
|
+
}
|
|
22
|
+
return Object.fromEntries(Object.entries(eventData).filter(([key]) => !isEnvironmentlessIdentifierDimension(key)));
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Returns true if the environment's cluster category is compatible with the region's cluster
|
|
26
|
+
* category. First Release environments are part of the public production cloud.
|
|
27
|
+
* If the environment has no cluster category, it is considered a match for all regions.
|
|
28
|
+
*
|
|
29
|
+
* This is required to handle the edge case when a command is run against a non-prod environment
|
|
30
|
+
* without providing the --cloud param.
|
|
31
|
+
*/
|
|
32
|
+
function doesEnvironmentMatchRegion(metadata, region) {
|
|
33
|
+
const environmentClusterCategory = metadata?.properties.cluster?.category?.toLowerCase();
|
|
34
|
+
const regionClusterCategory = regionToClusterCategory(region);
|
|
35
|
+
return (!environmentClusterCategory ||
|
|
36
|
+
environmentClusterCategory === regionClusterCategory ||
|
|
37
|
+
(regionClusterCategory === 'prod' && environmentClusterCategory === 'firstrelease'));
|
|
38
|
+
}
|
|
13
39
|
function stringifyErrorWithStack(error) {
|
|
14
40
|
if (!error)
|
|
15
41
|
return undefined;
|
|
@@ -99,162 +125,161 @@ function createScenarioLogger(telemetryWriters, name, data) {
|
|
|
99
125
|
/**
|
|
100
126
|
* Logger implementation for the CLI.
|
|
101
127
|
*
|
|
102
|
-
*
|
|
103
|
-
*
|
|
104
|
-
* start flowing immediately without any auth dependency. The writer is then upgraded to
|
|
105
|
-
* the EU-aware authed version via one of two paths:
|
|
106
|
-
*
|
|
107
|
-
* - `tryEagerUpgradeAsync` — called from `runVerb` after MSAL is initialized. If a
|
|
108
|
-
* cached account already exists, the upgrade runs synchronously before the first event
|
|
109
|
-
* so signed-in users get authed telemetry for the entire session.
|
|
110
|
-
* - `CliHttpClient.onFirstAuth` callback — registered in `create()`, fires (background)
|
|
111
|
-
* after the verb's first successful authed HTTP call. Handles users who sign in
|
|
112
|
-
* mid-session via MSAL.
|
|
113
|
-
*
|
|
114
|
-
* Verbs that never make an authed HTTP call and have no cached account stay on the
|
|
115
|
-
* unauthenticated writer for their whole lifetime — events still reach 1DS, just on
|
|
116
|
-
* the global endpoint with no `geoLocation` or `tenantId`.
|
|
117
|
-
*
|
|
118
|
-
* 1DS event submission uses its own ingestion credentials (not the Entra bearer token),
|
|
119
|
-
* so events can be sent regardless of sign-in state.
|
|
128
|
+
* Remote telemetry is buffered until the command resolves its target environment and region.
|
|
129
|
+
* Console telemetry is initialized immediately when enabled.
|
|
120
130
|
*/
|
|
121
131
|
export class CliLogger {
|
|
122
132
|
_telemetryWriters = [];
|
|
123
|
-
|
|
133
|
+
_bufferedWriter;
|
|
134
|
+
_remoteWriter;
|
|
124
135
|
_customDimensions = {};
|
|
125
|
-
_upgradeFired = false;
|
|
126
136
|
_sessionId;
|
|
127
|
-
|
|
128
|
-
|
|
137
|
+
_origin;
|
|
138
|
+
_authenticationProvider;
|
|
139
|
+
_appId;
|
|
140
|
+
_httpForwardOptions;
|
|
141
|
+
_telemetryContext;
|
|
142
|
+
_environmentMetadataPromise;
|
|
143
|
+
_isRemoteTelemetrySuppressed = false;
|
|
144
|
+
_isEnvironmentlessTelemetry = false;
|
|
145
|
+
constructor(telemetryWriters, sessionId, origin, authenticationProvider, appId, httpForwardOptions) {
|
|
129
146
|
this._telemetryWriters = telemetryWriters;
|
|
130
147
|
this._sessionId = sessionId;
|
|
148
|
+
this._origin = origin;
|
|
149
|
+
this._authenticationProvider = authenticationProvider;
|
|
150
|
+
this._appId = appId ?? '';
|
|
151
|
+
this._httpForwardOptions = httpForwardOptions;
|
|
131
152
|
}
|
|
132
|
-
static async create(cliSettings,
|
|
133
|
-
const environmentId = cliSettings.appConfig?.environmentId;
|
|
134
|
-
const region = cloudToRegionSafe(cliSettings.appConfig?.cloud);
|
|
135
|
-
const appId = cliSettings.appConfig?.appId;
|
|
153
|
+
static async create(cliSettings, authenticationProvider, httpForwardOptions) {
|
|
136
154
|
const sessionId = randomUUID();
|
|
137
155
|
const telemetryWriters = [];
|
|
138
156
|
const userTelemetrySettings = resolveUserTelemetrySettings();
|
|
139
157
|
if (userTelemetrySettings.console) {
|
|
140
158
|
telemetryWriters.push(new ConsoleWriter(sessionId, cliSettings.origin));
|
|
141
159
|
}
|
|
142
|
-
const instance = new CliLogger(telemetryWriters, sessionId);
|
|
160
|
+
const instance = new CliLogger(telemetryWriters, sessionId, cliSettings.origin, authenticationProvider, cliSettings.appConfig?.appId, httpForwardOptions);
|
|
143
161
|
// In mocked-backend mode (E2E) never open a real 1DS/remote telemetry channel: it bypasses
|
|
144
162
|
// the injected mock HttpClient and would attempt live network egress, hanging the CLI on
|
|
145
163
|
// flush at exit. This keeps "mock all backend calls" complete for E2E runs.
|
|
146
164
|
const suppressRemoteTelemetry = getCliEnvVarBool('MOCK_BACKEND');
|
|
147
|
-
if (userTelemetrySettings.remote &&
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
// writer below.
|
|
151
|
-
const unauth = new OneDSWriter(sessionId, region, 'global', environmentId, appId ?? '', undefined, packageJson.version, cliSettings.origin);
|
|
152
|
-
instance._unauthWriter = unauth;
|
|
153
|
-
instance._telemetryWriters.push(unauth);
|
|
154
|
-
instance._upgradeConfig = { sessionId, region, environmentId, appId, cliSettings };
|
|
155
|
-
// Register the lazy upgrade: fires once when the verb makes its first successful
|
|
156
|
-
// authed HTTP call. By that point we know auth works, so the metadata fetch can't
|
|
157
|
-
// pop a browser.
|
|
158
|
-
httpClient.onFirstAuth(() => instance._upgradeToAuthedWriterAsync(authenticationProvider));
|
|
165
|
+
if (userTelemetrySettings.remote && !suppressRemoteTelemetry) {
|
|
166
|
+
instance._bufferedWriter = new BufferedTelemetryWriter();
|
|
167
|
+
instance._telemetryWriters.push(instance._bufferedWriter);
|
|
159
168
|
}
|
|
160
169
|
// Emit the first-party embedding host correlation id (if supplied via
|
|
161
170
|
// MS_CLI_EMBEDDING_HOST_CORRELATION_ID) on every event. It is injected as a default
|
|
162
171
|
// property here and promoted to a dedicated top-level telemetry column
|
|
163
|
-
// (`embeddingHostCorrelationId`) by the OneDS writer's propertyColumnMap.
|
|
164
|
-
//
|
|
165
|
-
//
|
|
166
|
-
// `sessionId` is intentionally left untouched.
|
|
172
|
+
// (`embeddingHostCorrelationId`) by the OneDS writer's propertyColumnMap. Preserve it until
|
|
173
|
+
// the delayed remote writer is created, while applying it to the console writer immediately.
|
|
174
|
+
// The internal per-invocation `sessionId` is intentionally left untouched.
|
|
167
175
|
if (cliSettings.embeddingHostCorrelationId) {
|
|
168
176
|
instance.setCustomDimension('embeddingHostCorrelationId', cliSettings.embeddingHostCorrelationId);
|
|
169
177
|
}
|
|
170
178
|
return instance;
|
|
171
179
|
}
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
* Signed-in-but-offline users will block on the default fetch timeout before
|
|
185
|
-
* falling through; events still flow to the unauthenticated writer in that case.
|
|
186
|
-
*/
|
|
187
|
-
async tryEagerUpgradeAsync(authenticationProvider) {
|
|
188
|
-
if (this._upgradeFired || !this._upgradeConfig) {
|
|
189
|
-
return;
|
|
180
|
+
setCustomDimension(_key, _value) {
|
|
181
|
+
try {
|
|
182
|
+
if (!_key || !_value) {
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
if (this._isEnvironmentlessTelemetry && isEnvironmentlessIdentifierDimension(_key)) {
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
this._customDimensions[_key] = _value;
|
|
189
|
+
this._telemetryWriters.forEach((writer) => {
|
|
190
|
+
writer.setCustomDimension(_key, _value);
|
|
191
|
+
});
|
|
190
192
|
}
|
|
191
|
-
|
|
192
|
-
|
|
193
|
+
catch {
|
|
194
|
+
// No-op. Telemetry failures should not block CLI operations
|
|
193
195
|
}
|
|
194
196
|
}
|
|
195
197
|
/**
|
|
196
|
-
*
|
|
197
|
-
*
|
|
198
|
-
* - `tryEagerUpgradeAsync` (blocking, before the first event) when a cached account
|
|
199
|
-
* is already present at verb-start time.
|
|
200
|
-
* - `CliHttpClient.onFirstAuth` (fire-and-forget) after the verb's first successful
|
|
201
|
-
* authed HTTP call, when the user signed in mid-session.
|
|
202
|
-
* Best-effort — on any failure the unauthenticated writer stays in place and events
|
|
203
|
-
* keep flowing to the global endpoint.
|
|
198
|
+
* Records the command's resolved routing context and activates the remote writer once the
|
|
199
|
+
* environment metadata is available.
|
|
204
200
|
*/
|
|
205
|
-
async
|
|
206
|
-
if (
|
|
201
|
+
async setTelemetryContext(context) {
|
|
202
|
+
if (!this._telemetryContext) {
|
|
203
|
+
this._telemetryContext = context;
|
|
204
|
+
}
|
|
205
|
+
else if (!this._telemetryContext.environmentId && context.environmentId) {
|
|
206
|
+
// The initial region is authoritative. Environment resolution may happen later.
|
|
207
|
+
this._telemetryContext = {
|
|
208
|
+
...this._telemetryContext,
|
|
209
|
+
environmentId: context.environmentId,
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
// Context already complete; avoid redundant metadata lookups.
|
|
207
214
|
return;
|
|
208
215
|
}
|
|
209
|
-
this.
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
const idx = this._telemetryWriters.indexOf(this._unauthWriter);
|
|
221
|
-
if (idx >= 0) {
|
|
222
|
-
this._telemetryWriters[idx] = authed;
|
|
223
|
-
}
|
|
224
|
-
else {
|
|
225
|
-
this._telemetryWriters.push(authed);
|
|
226
|
-
}
|
|
227
|
-
this._unauthWriter = authed;
|
|
228
|
-
// Re-apply previously set dimensions to the replacement writer.
|
|
229
|
-
for (const [key, value] of Object.entries(this._customDimensions)) {
|
|
230
|
-
authed.setCustomDimension(key, value);
|
|
231
|
-
}
|
|
232
|
-
// Set the tenantId dimension AFTER the swap so it lands on the authed writer
|
|
233
|
-
// (and any ConsoleWriter that's still in the list), not the discarded unauth one.
|
|
234
|
-
const tenantId = authenticationProvider.getUserTenantId();
|
|
235
|
-
if (tenantId) {
|
|
236
|
-
this.setCustomDimension('tenantId', tenantId);
|
|
216
|
+
if (this._telemetryContext.environmentId) {
|
|
217
|
+
const metadata = await this._getEnvironmentMetadataAsync(this._telemetryContext.environmentId, this._telemetryContext.region);
|
|
218
|
+
await this._activateRemoteWriter(metadata);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
async _getEnvironmentMetadataAsync(environmentId, region) {
|
|
222
|
+
this._environmentMetadataPromise ??= getEnvironmentByName(environmentId)
|
|
223
|
+
.then((metadata) => {
|
|
224
|
+
if (!metadata.location || !doesEnvironmentMatchRegion(metadata, region)) {
|
|
225
|
+
this._isRemoteTelemetrySuppressed = true;
|
|
226
|
+
return undefined;
|
|
237
227
|
}
|
|
228
|
+
return metadata;
|
|
229
|
+
})
|
|
230
|
+
.catch(() => {
|
|
231
|
+
this._isRemoteTelemetrySuppressed = true;
|
|
232
|
+
return undefined;
|
|
233
|
+
});
|
|
234
|
+
return this._environmentMetadataPromise;
|
|
235
|
+
}
|
|
236
|
+
async _activateRemoteWriter(environmentMetadata) {
|
|
237
|
+
if (!this._bufferedWriter ||
|
|
238
|
+
!this._telemetryContext?.environmentId ||
|
|
239
|
+
!environmentMetadata ||
|
|
240
|
+
!environmentMetadata.location ||
|
|
241
|
+
this._isRemoteTelemetrySuppressed) {
|
|
242
|
+
// Keep unresolved or mismatched-environment events buffered for CLI teardown to persist.
|
|
243
|
+
return;
|
|
238
244
|
}
|
|
239
|
-
|
|
240
|
-
|
|
245
|
+
const telemetryLocation = EUGeoRegions.has(environmentMetadata.location) ? 'eu' : 'global';
|
|
246
|
+
this._createRemoteWriterAndReplay(this._telemetryContext.region, telemetryLocation, this._telemetryContext.environmentId, environmentMetadata.properties.cluster?.geoShortName);
|
|
247
|
+
}
|
|
248
|
+
_activateEnvironmentlessRemoteWriter() {
|
|
249
|
+
if (!this._bufferedWriter || this._telemetryContext?.environmentId) {
|
|
250
|
+
return;
|
|
241
251
|
}
|
|
252
|
+
this._isEnvironmentlessTelemetry = true;
|
|
253
|
+
this._createRemoteWriterAndReplay(this._telemetryContext?.region ?? 'prod', 'global', undefined, undefined);
|
|
242
254
|
}
|
|
243
|
-
|
|
255
|
+
_createRemoteWriterAndReplay(region, telemetryLocation, environmentId, geoLocation) {
|
|
256
|
+
if (!this._bufferedWriter || this._remoteWriter) {
|
|
257
|
+
return;
|
|
258
|
+
}
|
|
244
259
|
try {
|
|
245
|
-
|
|
246
|
-
|
|
260
|
+
const remoteWriter = new OneDSWriter(this._sessionId, region, telemetryLocation, environmentId, this._appId, geoLocation, packageJson.version, this._origin, this._httpForwardOptions);
|
|
261
|
+
this._remoteWriter = remoteWriter;
|
|
262
|
+
for (const [key, value] of Object.entries(this._customDimensions)) {
|
|
263
|
+
if (!this._isEnvironmentlessTelemetry || !isEnvironmentlessIdentifierDimension(key)) {
|
|
264
|
+
remoteWriter.setCustomDimension(key, value);
|
|
265
|
+
}
|
|
247
266
|
}
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
267
|
+
if (!this._isEnvironmentlessTelemetry) {
|
|
268
|
+
const tenantId = this._authenticationProvider.getUserTenantId();
|
|
269
|
+
if (tenantId) {
|
|
270
|
+
remoteWriter.setCustomDimension('tenantId', tenantId);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
this._bufferedWriter.replay(remoteWriter, this._isEnvironmentlessTelemetry ? removeEnvironmentlessIdentifierDimensions : undefined);
|
|
274
|
+
this._telemetryWriters.push(remoteWriter);
|
|
253
275
|
}
|
|
254
276
|
catch {
|
|
255
|
-
//
|
|
277
|
+
// Keep the buffer intact; CLI teardown persists it after the command session ends.
|
|
256
278
|
}
|
|
257
279
|
}
|
|
280
|
+
writeBufferedTelemetryToFile(directory) {
|
|
281
|
+
return this._bufferedWriter?.writeToTemporaryFile(directory);
|
|
282
|
+
}
|
|
258
283
|
trackActivityEvent(eventName, eventData) {
|
|
259
284
|
try {
|
|
260
285
|
if (this._telemetryWriters.length === 0) {
|
|
@@ -312,8 +337,19 @@ export class CliLogger {
|
|
|
312
337
|
set sessionId(_value) {
|
|
313
338
|
// No-op
|
|
314
339
|
}
|
|
315
|
-
flush() {
|
|
316
|
-
|
|
340
|
+
async flush(retainBufferedTelemetry = false) {
|
|
341
|
+
if (this._environmentMetadataPromise) {
|
|
342
|
+
// Ensure any in-flight metadata lookup can activate and replay buffered remote telemetry.
|
|
343
|
+
const metadata = await this._environmentMetadataPromise;
|
|
344
|
+
await this._activateRemoteWriter(metadata);
|
|
345
|
+
}
|
|
346
|
+
else {
|
|
347
|
+
this._activateEnvironmentlessRemoteWriter();
|
|
348
|
+
}
|
|
349
|
+
await Promise.all(this._telemetryWriters.map((writer) => writer.flush()));
|
|
350
|
+
if (this._remoteWriter && !retainBufferedTelemetry) {
|
|
351
|
+
this._bufferedWriter?.clear();
|
|
352
|
+
}
|
|
317
353
|
}
|
|
318
354
|
withDefaults(_extras) {
|
|
319
355
|
// No-op — CLI logger does not implement local scope defaults today.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CliLogger.js","sourceRoot":"","sources":["../../src/Logger/CliLogger.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CliLogger.js","sourceRoot":"","sources":["../../src/Logger/CliLogger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
* Copyright (C) Microsoft Corporation. All rights reserved.
|
|
3
|
-
*/
|
|
1
|
+
import type { IXHROverride } from '@microsoft/1ds-post-js';
|
|
4
2
|
import { type Region } from '@microsoft/managed-apps-common/services';
|
|
5
3
|
import { type TelemetryLocation } from '@microsoft/managed-apps-common/telemetry';
|
|
6
4
|
import type { ITelemetryWriter } from '../Types/LoggerTypes.types.js';
|
|
5
|
+
export interface OneDsHttpForwardOptions {
|
|
6
|
+
forwardUrl: string;
|
|
7
|
+
authToken?: string;
|
|
8
|
+
customForwardHeadersJson?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function createOneDsHttpForwardOverride(options: OneDsHttpForwardOptions): IXHROverride;
|
|
7
11
|
export declare class OneDSWriter implements ITelemetryWriter {
|
|
8
12
|
private _provider;
|
|
9
|
-
constructor(sessionId: string, region: Region, telemetryLocation: TelemetryLocation, environmentId: string, appId: string, geoLocation: string | undefined, cliVersion: string, cliSource: string);
|
|
10
|
-
trackActivityEvent(operationName: string, eventData?: object): void;
|
|
11
|
-
trackErrorEvent(operationName: string, eventData?: object): void;
|
|
12
|
-
startScenario(scenarioName: string, startData?: object): void;
|
|
13
|
-
progressScenario(scenarioName: string, progressData?: object): void;
|
|
14
|
-
completeScenario(scenarioName: string, completeData?: object): void;
|
|
15
|
-
scenarioFailed(scenarioName: string, failureData?: object): void;
|
|
16
|
-
scenarioCompletedWithError(scenarioName: string, completeWithErrorData?: object): void;
|
|
13
|
+
constructor(sessionId: string, region: Region, telemetryLocation: TelemetryLocation, environmentId: string | undefined, appId: string, geoLocation: string | undefined, cliVersion: string, cliSource: string, httpForwardOptions?: OneDsHttpForwardOptions);
|
|
14
|
+
trackActivityEvent(operationName: string, eventData?: object, timestamp?: string): void;
|
|
15
|
+
trackErrorEvent(operationName: string, eventData?: object, timestamp?: string): void;
|
|
16
|
+
startScenario(scenarioName: string, startData?: object, timestamp?: string): void;
|
|
17
|
+
progressScenario(scenarioName: string, progressData?: object, timestamp?: string): void;
|
|
18
|
+
completeScenario(scenarioName: string, completeData?: object, timestamp?: string): void;
|
|
19
|
+
scenarioFailed(scenarioName: string, failureData?: object, timestamp?: string): void;
|
|
20
|
+
scenarioCompletedWithError(scenarioName: string, completeWithErrorData?: object, timestamp?: string): void;
|
|
17
21
|
flush(): Promise<void>;
|
|
18
22
|
setCustomDimension(_key: string, _value: string): void;
|
|
19
23
|
private static readonly _EVENT_PREFIX;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OneDSWriter.d.ts","sourceRoot":"","sources":["../../src/Logger/OneDSWriter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"OneDSWriter.d.ts","sourceRoot":"","sources":["../../src/Logger/OneDSWriter.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAgB,YAAY,EAAsB,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,KAAK,MAAM,EAA2B,MAAM,yCAAyC,CAAC;AAC/F,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,0CAA0C,CAAC;AAIlD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAGnE,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC;AAuED,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,uBAAuB,GAAG,YAAY,CAM7F;AAED,qBAAa,WAAY,YAAW,gBAAgB;IAClD,OAAO,CAAC,SAAS,CAAyB;gBAGxC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,iBAAiB,EACpC,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,kBAAkB,CAAC,EAAE,uBAAuB;IAiEvC,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAWvF,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAWpF,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAYjF,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAYvF,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAavF,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAapF,0BAA0B,CAC/B,YAAY,EAAE,MAAM,EACpB,qBAAqB,CAAC,EAAE,MAAM,EAC9B,SAAS,CAAC,EAAE,MAAM,GACjB,IAAI;IAaA,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAI7D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAqB;IAE1D,OAAO,CAAC,WAAW;CAyBpB"}
|
|
@@ -1,14 +1,79 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Copyright (C) Microsoft Corporation. All rights reserved.
|
|
3
3
|
*/
|
|
4
|
+
import { randomUUID } from 'node:crypto';
|
|
4
5
|
import { regionToClusterCategory } from '@microsoft/managed-apps-common/services';
|
|
5
6
|
import { OneDsTelemetryProvider, ScenarioResults, TelemetryEventNames, } from '@microsoft/managed-apps-common/telemetry';
|
|
7
|
+
import { MS_CLIENT_REQUESTID, MS_TARGET_URL, USER_AGENT } from '../Constants.js';
|
|
8
|
+
import { applyStaticForwardHeaders, parseForwardHeaders } from '../HttpClient/HttpForward.js';
|
|
6
9
|
import { getScrubbedCustomDimensions } from './Scrubber/ScrubCustomDimensions.js';
|
|
10
|
+
function appendUserAgent(headers) {
|
|
11
|
+
let existingUserAgent = '';
|
|
12
|
+
for (const name of Object.keys(headers)) {
|
|
13
|
+
if (name.toLowerCase() === 'user-agent') {
|
|
14
|
+
if (headers[name]) {
|
|
15
|
+
existingUserAgent = existingUserAgent
|
|
16
|
+
? `${existingUserAgent} ${headers[name]}`
|
|
17
|
+
: headers[name];
|
|
18
|
+
}
|
|
19
|
+
delete headers[name];
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
headers['User-Agent'] = existingUserAgent ? `${existingUserAgent} ${USER_AGENT}` : USER_AGENT;
|
|
23
|
+
}
|
|
24
|
+
function buildForwardedTelemetryHeaders(payloadHeaders, forwardHeaders) {
|
|
25
|
+
const headers = {};
|
|
26
|
+
applyStaticForwardHeaders(headers, forwardHeaders);
|
|
27
|
+
for (const [name, value] of Object.entries(payloadHeaders ?? {})) {
|
|
28
|
+
if (name.toLowerCase() !== 'user-agent') {
|
|
29
|
+
for (const existingName of Object.keys(headers)) {
|
|
30
|
+
if (existingName.toLowerCase() === name.toLowerCase()) {
|
|
31
|
+
delete headers[existingName];
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
headers[name] = value;
|
|
36
|
+
}
|
|
37
|
+
return headers;
|
|
38
|
+
}
|
|
39
|
+
async function sendForwardedTelemetry(payload, oncomplete, options, forwardHeaders) {
|
|
40
|
+
const headers = buildForwardedTelemetryHeaders(payload.headers, forwardHeaders);
|
|
41
|
+
headers[MS_TARGET_URL] = payload.urlString;
|
|
42
|
+
headers[MS_CLIENT_REQUESTID] = randomUUID();
|
|
43
|
+
if (options.authToken) {
|
|
44
|
+
headers.Authorization = 'Bearer ' + options.authToken;
|
|
45
|
+
}
|
|
46
|
+
appendUserAgent(headers);
|
|
47
|
+
try {
|
|
48
|
+
const response = await globalThis.fetch(options.forwardUrl, {
|
|
49
|
+
method: 'POST',
|
|
50
|
+
headers,
|
|
51
|
+
body: payload.data,
|
|
52
|
+
signal: payload.timeout ? AbortSignal.timeout(payload.timeout) : undefined,
|
|
53
|
+
});
|
|
54
|
+
const responseHeaders = {};
|
|
55
|
+
response.headers.forEach((value, name) => {
|
|
56
|
+
responseHeaders[name] = value;
|
|
57
|
+
});
|
|
58
|
+
const oneDsStatus = response.ok && response.status !== 204 ? 200 : response.status;
|
|
59
|
+
oncomplete(oneDsStatus, responseHeaders, await response.text());
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
oncomplete(0, {}, error instanceof Error ? error.message : String(error));
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
export function createOneDsHttpForwardOverride(options) {
|
|
68
|
+
const forwardHeaders = parseForwardHeaders(options.customForwardHeadersJson);
|
|
69
|
+
return {
|
|
70
|
+
sendPOST: (payload, oncomplete) => sendForwardedTelemetry(payload, oncomplete, options, forwardHeaders),
|
|
71
|
+
};
|
|
72
|
+
}
|
|
7
73
|
export class OneDSWriter {
|
|
8
74
|
_provider;
|
|
9
|
-
constructor(sessionId, region, telemetryLocation, environmentId, appId, geoLocation, cliVersion, cliSource) {
|
|
75
|
+
constructor(sessionId, region, telemetryLocation, environmentId, appId, geoLocation, cliVersion, cliSource, httpForwardOptions) {
|
|
10
76
|
const commonProperties = {
|
|
11
|
-
environmentId,
|
|
12
77
|
isOnePlayer: 'false',
|
|
13
78
|
webPlayerScenario: 'ManagedApps_CLI_Authoring',
|
|
14
79
|
cloud: region === 'preview' ? 'prod' : region,
|
|
@@ -18,12 +83,24 @@ export class OneDSWriter {
|
|
|
18
83
|
cliVersion,
|
|
19
84
|
cliSource,
|
|
20
85
|
};
|
|
86
|
+
if (environmentId) {
|
|
87
|
+
commonProperties.environmentId = environmentId;
|
|
88
|
+
}
|
|
21
89
|
if (appId) {
|
|
22
90
|
commonProperties.playerAppId = appId;
|
|
23
91
|
}
|
|
24
92
|
if (geoLocation) {
|
|
25
93
|
commonProperties.geoLocation = geoLocation;
|
|
26
94
|
}
|
|
95
|
+
const channelConfig = {
|
|
96
|
+
maxEvtPerBatch: 500,
|
|
97
|
+
maxEventRetryAttempts: 6,
|
|
98
|
+
eventsLimitInMem: 10000,
|
|
99
|
+
};
|
|
100
|
+
if (httpForwardOptions) {
|
|
101
|
+
channelConfig.httpXHROverride = createOneDsHttpForwardOverride(httpForwardOptions);
|
|
102
|
+
channelConfig.alwaysUseXhrOverride = true;
|
|
103
|
+
}
|
|
27
104
|
this._provider = new OneDsTelemetryProvider({
|
|
28
105
|
clientType: 'ManagedAppsCLI',
|
|
29
106
|
clusterCategory: regionToClusterCategory(region),
|
|
@@ -41,11 +118,7 @@ export class OneDSWriter {
|
|
|
41
118
|
// leaving it only inside the customDimensions blob.
|
|
42
119
|
embeddingHostCorrelationId: 'embeddingHostCorrelationId',
|
|
43
120
|
},
|
|
44
|
-
channelConfig
|
|
45
|
-
maxEvtPerBatch: 500,
|
|
46
|
-
maxEventRetryAttempts: 6,
|
|
47
|
-
eventsLimitInMem: 10000,
|
|
48
|
-
},
|
|
121
|
+
channelConfig,
|
|
49
122
|
});
|
|
50
123
|
this._provider.sessionId = sessionId;
|
|
51
124
|
// Sync 1DS session id with CLI session id in Part A extension
|
|
@@ -55,55 +128,55 @@ export class OneDSWriter {
|
|
|
55
128
|
app.sesId = sessionId;
|
|
56
129
|
});
|
|
57
130
|
}
|
|
58
|
-
trackActivityEvent(operationName, eventData) {
|
|
131
|
+
trackActivityEvent(operationName, eventData, timestamp) {
|
|
59
132
|
this._trackEvent(TelemetryEventNames.Activity, {
|
|
60
133
|
...eventData,
|
|
61
134
|
operationName,
|
|
62
|
-
});
|
|
135
|
+
}, timestamp);
|
|
63
136
|
}
|
|
64
|
-
trackErrorEvent(operationName, eventData) {
|
|
137
|
+
trackErrorEvent(operationName, eventData, timestamp) {
|
|
65
138
|
this._trackEvent(TelemetryEventNames.Error, {
|
|
66
139
|
...eventData,
|
|
67
140
|
operationName,
|
|
68
|
-
});
|
|
141
|
+
}, timestamp);
|
|
69
142
|
}
|
|
70
|
-
startScenario(scenarioName, startData) {
|
|
143
|
+
startScenario(scenarioName, startData, timestamp) {
|
|
71
144
|
this._trackEvent(TelemetryEventNames.StartScenario, {
|
|
72
145
|
operationName: scenarioName,
|
|
73
146
|
...startData,
|
|
74
147
|
scenarioName,
|
|
75
|
-
});
|
|
148
|
+
}, timestamp);
|
|
76
149
|
}
|
|
77
|
-
progressScenario(scenarioName, progressData) {
|
|
150
|
+
progressScenario(scenarioName, progressData, timestamp) {
|
|
78
151
|
this._trackEvent(TelemetryEventNames.ProgressScenario, {
|
|
79
152
|
operationName: scenarioName,
|
|
80
153
|
...progressData,
|
|
81
154
|
scenarioName,
|
|
82
|
-
});
|
|
155
|
+
}, timestamp);
|
|
83
156
|
}
|
|
84
|
-
completeScenario(scenarioName, completeData) {
|
|
157
|
+
completeScenario(scenarioName, completeData, timestamp) {
|
|
85
158
|
this._trackEvent(TelemetryEventNames.EndScenario, {
|
|
86
159
|
operationName: scenarioName,
|
|
87
160
|
...completeData,
|
|
88
161
|
scenarioName,
|
|
89
162
|
scenarioResult: ScenarioResults.Success,
|
|
90
|
-
});
|
|
163
|
+
}, timestamp);
|
|
91
164
|
}
|
|
92
|
-
scenarioFailed(scenarioName, failureData) {
|
|
165
|
+
scenarioFailed(scenarioName, failureData, timestamp) {
|
|
93
166
|
this._trackEvent(TelemetryEventNames.EndScenario, {
|
|
94
167
|
operationName: scenarioName,
|
|
95
168
|
...failureData,
|
|
96
169
|
scenarioName,
|
|
97
170
|
scenarioResult: ScenarioResults.Failed,
|
|
98
|
-
});
|
|
171
|
+
}, timestamp);
|
|
99
172
|
}
|
|
100
|
-
scenarioCompletedWithError(scenarioName, completeWithErrorData) {
|
|
173
|
+
scenarioCompletedWithError(scenarioName, completeWithErrorData, timestamp) {
|
|
101
174
|
this._trackEvent(TelemetryEventNames.EndScenario, {
|
|
102
175
|
operationName: scenarioName,
|
|
103
176
|
...completeWithErrorData,
|
|
104
177
|
scenarioName,
|
|
105
178
|
scenarioResult: ScenarioResults.SuccessWithErrors,
|
|
106
|
-
});
|
|
179
|
+
}, timestamp);
|
|
107
180
|
}
|
|
108
181
|
flush() {
|
|
109
182
|
return this._provider.flush();
|
|
@@ -112,7 +185,7 @@ export class OneDSWriter {
|
|
|
112
185
|
this._provider.setDefaultProperty(_key, _value);
|
|
113
186
|
}
|
|
114
187
|
static _EVENT_PREFIX = 'ManagedAppsCLI.';
|
|
115
|
-
_trackEvent(eventName, eventData) {
|
|
188
|
+
_trackEvent(eventName, eventData, timestamp) {
|
|
116
189
|
const operationName = eventData.operationName || '';
|
|
117
190
|
const scrubbed = getScrubbedCustomDimensions(eventName, operationName, eventData);
|
|
118
191
|
const properties = {};
|
|
@@ -129,7 +202,7 @@ export class OneDSWriter {
|
|
|
129
202
|
}
|
|
130
203
|
this._provider.track({
|
|
131
204
|
eventName,
|
|
132
|
-
timestamp: new Date().toISOString(),
|
|
205
|
+
timestamp: timestamp ?? new Date().toISOString(),
|
|
133
206
|
severity: 'info',
|
|
134
207
|
properties,
|
|
135
208
|
});
|