@microsoft/managed-apps-cli 0.9.1 → 0.10.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 +23 -43
- package/dist/ArgumentProvider.d.ts.map +1 -1
- package/dist/ArgumentProvider.js +3 -0
- package/dist/ArgumentProvider.js.map +1 -1
- package/dist/Authentication/NodeMsalAuthenticationProvider.js +20 -1
- package/dist/Authentication/NodeMsalAuthenticationProvider.js.map +1 -1
- package/dist/Cli.d.ts.map +1 -1
- package/dist/Cli.js +14 -2
- package/dist/Cli.js.map +1 -1
- package/dist/Constants/CommandRegistry.d.ts.map +1 -1
- package/dist/Constants/CommandRegistry.js +5 -24
- package/dist/Constants/CommandRegistry.js.map +1 -1
- package/dist/Constants/HelpStrings.d.ts +8 -7
- package/dist/Constants/HelpStrings.d.ts.map +1 -1
- package/dist/Constants/HelpStrings.js +78 -73
- package/dist/Constants/HelpStrings.js.map +1 -1
- package/dist/Constants.d.ts +1 -1
- package/dist/Constants.d.ts.map +1 -1
- package/dist/Constants.js +4 -9
- package/dist/Constants.js.map +1 -1
- package/dist/Errors/GitHubErrorMap.d.ts +43 -14
- package/dist/Errors/GitHubErrorMap.d.ts.map +1 -1
- package/dist/Errors/GitHubErrorMap.js +188 -147
- package/dist/Errors/GitHubErrorMap.js.map +1 -1
- package/dist/Logger/CliLogger.d.ts +1 -0
- package/dist/Logger/CliLogger.d.ts.map +1 -1
- package/dist/Logger/CliLogger.js +5 -3
- package/dist/Logger/CliLogger.js.map +1 -1
- package/dist/Logger/LoggerSettings.d.ts +2 -3
- package/dist/Logger/LoggerSettings.d.ts.map +1 -1
- package/dist/Logger/LoggerSettings.js +3 -39
- package/dist/Logger/LoggerSettings.js.map +1 -1
- package/dist/Logger/OneDSWriter.d.ts.map +1 -1
- package/dist/Logger/OneDSWriter.js +3 -3
- package/dist/Logger/OneDSWriter.js.map +1 -1
- package/dist/Types/Argument.types.d.ts +1 -0
- package/dist/Types/Argument.types.d.ts.map +1 -1
- package/dist/Utils/BuildPolling.d.ts +27 -2
- package/dist/Utils/BuildPolling.d.ts.map +1 -1
- package/dist/Utils/BuildPolling.js +98 -22
- package/dist/Utils/BuildPolling.js.map +1 -1
- package/dist/Utils/DcfRecovery.d.ts +7 -7
- package/dist/Utils/DcfRecovery.d.ts.map +1 -1
- package/dist/Utils/DcfRecovery.js +17 -37
- package/dist/Utils/DcfRecovery.js.map +1 -1
- package/dist/Utils/DownloadTemplate.d.ts +45 -0
- package/dist/Utils/DownloadTemplate.d.ts.map +1 -0
- package/dist/Utils/DownloadTemplate.js +159 -0
- package/dist/Utils/DownloadTemplate.js.map +1 -0
- package/dist/Utils/EnvVars.d.ts +1 -1
- package/dist/Utils/EnvVars.d.ts.map +1 -1
- package/dist/Utils/GitVersionChecker.d.ts +38 -0
- package/dist/Utils/GitVersionChecker.d.ts.map +1 -0
- package/dist/Utils/GitVersionChecker.js +61 -0
- package/dist/Utils/GitVersionChecker.js.map +1 -0
- package/dist/Utils/MaafAppConfig.d.ts +22 -0
- package/dist/Utils/MaafAppConfig.d.ts.map +1 -0
- package/dist/Utils/MaafAppConfig.js +32 -0
- package/dist/Utils/MaafAppConfig.js.map +1 -0
- package/dist/Utils/NodeVersionChecker.d.ts +10 -0
- package/dist/Utils/NodeVersionChecker.d.ts.map +1 -0
- package/dist/Utils/NodeVersionChecker.js +21 -0
- package/dist/Utils/NodeVersionChecker.js.map +1 -0
- package/dist/Utils/Paging.d.ts +5 -0
- package/dist/Utils/Paging.d.ts.map +1 -1
- package/dist/Utils/Paging.js +29 -0
- package/dist/Utils/Paging.js.map +1 -1
- package/dist/Utils/PinCli.d.ts +28 -0
- package/dist/Utils/PinCli.d.ts.map +1 -0
- package/dist/Utils/PinCli.js +58 -0
- package/dist/Utils/PinCli.js.map +1 -0
- package/dist/Utils/RepoOption.d.ts +35 -0
- package/dist/Utils/RepoOption.d.ts.map +1 -0
- package/dist/Utils/RepoOption.js +36 -0
- package/dist/Utils/RepoOption.js.map +1 -0
- package/dist/Utils/Spinner.d.ts.map +1 -1
- package/dist/Utils/Spinner.js +3 -0
- package/dist/Utils/Spinner.js.map +1 -1
- package/dist/Verbs/AddAction.js +6 -6
- package/dist/Verbs/AddAction.js.map +1 -1
- package/dist/Verbs/AddConnector.d.ts +5 -3
- package/dist/Verbs/AddConnector.d.ts.map +1 -1
- package/dist/Verbs/AddConnector.js +45 -11
- package/dist/Verbs/AddConnector.js.map +1 -1
- package/dist/Verbs/AddConnectorFlows.d.ts +27 -14
- package/dist/Verbs/AddConnectorFlows.d.ts.map +1 -1
- package/dist/Verbs/AddConnectorFlows.js +70 -20
- package/dist/Verbs/AddConnectorFlows.js.map +1 -1
- package/dist/Verbs/AddDataSource.d.ts +3 -4
- package/dist/Verbs/AddDataSource.d.ts.map +1 -1
- package/dist/Verbs/AddDataSource.js +9 -20
- package/dist/Verbs/AddDataSource.js.map +1 -1
- package/dist/Verbs/AddTable.js +6 -6
- package/dist/Verbs/AddTable.js.map +1 -1
- package/dist/Verbs/AuthStatus.d.ts.map +1 -1
- package/dist/Verbs/AuthStatus.js +7 -4
- package/dist/Verbs/AuthStatus.js.map +1 -1
- package/dist/Verbs/BuildMaafApp.js +1 -1
- package/dist/Verbs/BuildMaafApp.js.map +1 -1
- package/dist/Verbs/ConnectorHelpers.d.ts +3 -4
- package/dist/Verbs/ConnectorHelpers.d.ts.map +1 -1
- package/dist/Verbs/ConnectorHelpers.js +8 -9
- package/dist/Verbs/ConnectorHelpers.js.map +1 -1
- package/dist/Verbs/CreateMaafApp.d.ts +0 -29
- package/dist/Verbs/CreateMaafApp.d.ts.map +1 -1
- package/dist/Verbs/CreateMaafApp.js +100 -171
- package/dist/Verbs/CreateMaafApp.js.map +1 -1
- package/dist/Verbs/DeleteDataSource.js +6 -6
- package/dist/Verbs/DeleteDataSource.js.map +1 -1
- package/dist/Verbs/DeployMaafApp.d.ts.map +1 -1
- package/dist/Verbs/DeployMaafApp.js +18 -81
- package/dist/Verbs/DeployMaafApp.js.map +1 -1
- package/dist/Verbs/Dev.js +1 -1
- package/dist/Verbs/Dev.js.map +1 -1
- package/dist/Verbs/GetMaafBuildStatus.d.ts.map +1 -1
- package/dist/Verbs/GetMaafBuildStatus.js +56 -40
- package/dist/Verbs/GetMaafBuildStatus.js.map +1 -1
- package/dist/Verbs/GetSettings.js +1 -1
- package/dist/Verbs/GetSettings.js.map +1 -1
- package/dist/Verbs/Init.d.ts.map +1 -1
- package/dist/Verbs/Init.js +166 -58
- package/dist/Verbs/Init.js.map +1 -1
- package/dist/Verbs/ListConnectorActions.js +12 -9
- package/dist/Verbs/ListConnectorActions.js.map +1 -1
- package/dist/Verbs/ListConnectors.js +2 -2
- package/dist/Verbs/ListConnectors.js.map +1 -1
- package/dist/Verbs/ListMaafApps.js +3 -3
- package/dist/Verbs/ListMaafApps.js.map +1 -1
- package/dist/Verbs/MaafAppPermissions.js +2 -2
- package/dist/Verbs/MaafAppPermissions.js.map +1 -1
- package/dist/Verbs/RefreshDataSource.js +1 -1
- package/dist/Verbs/RefreshDataSource.js.map +1 -1
- package/dist/Verbs/RefreshGitAuth.d.ts.map +1 -1
- package/dist/Verbs/RefreshGitAuth.js +3 -15
- package/dist/Verbs/RefreshGitAuth.js.map +1 -1
- package/dist/Verbs/SetSetting.js +2 -2
- package/dist/Verbs/SetSetting.js.map +1 -1
- package/dist/Verbs/ShowMaafApp.js +2 -2
- package/dist/Verbs/ShowMaafApp.js.map +1 -1
- package/dist/Verbs/VerbConstants.d.ts +19 -22
- package/dist/Verbs/VerbConstants.d.ts.map +1 -1
- package/dist/Verbs/VerbConstants.js +19 -22
- package/dist/Verbs/VerbConstants.js.map +1 -1
- package/package.json +11 -9
|
@@ -2,193 +2,234 @@
|
|
|
2
2
|
* Copyright (C) Microsoft Corporation. All rights reserved.
|
|
3
3
|
*/
|
|
4
4
|
/**
|
|
5
|
-
* Maps structured server error codes
|
|
6
|
-
* subclasses
|
|
7
|
-
*
|
|
5
|
+
* Maps structured GRS server error codes onto CLI-facing {@link AppError}
|
|
6
|
+
* subclasses. The server is the source of truth for human-readable text:
|
|
7
|
+
* we pass `payload.message` through verbatim for the 13 codes in
|
|
8
|
+
* {@link mapGitHubServerErrorToCliError}'s switch and the 5 codes recognized
|
|
9
|
+
* by {@link matchGitHubAuthError} (3 of which overlap with the switch). The
|
|
10
|
+
* AppError subclass we choose only determines the CLI exit code — wording
|
|
11
|
+
* is owned by GRS so it can be updated server-side without a CLI release.
|
|
8
12
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
13
|
+
* One intentional exception to the passthrough contract: if a recognized
|
|
14
|
+
* code arrives with an empty / whitespace-only / missing `message`,
|
|
15
|
+
* {@link mapGitHubServerErrorToCliError} returns `null` rather than
|
|
16
|
+
* constructing an AppError with an empty body. Callers (e.g. the top-level
|
|
17
|
+
* CLI catch) use `?? rawErr` so the original error bubbles up untouched —
|
|
18
|
+
* preferable to swallowing it behind a blank typed error.
|
|
19
|
+
*
|
|
20
|
+
* Three entry points:
|
|
21
|
+
* - {@link mapGitHubServerErrorToCliError} — given a parsed payload, return
|
|
22
|
+
* the mapped AppError (or null for unrecognized codes / empty messages).
|
|
23
|
+
* - {@link formatServerError} — given an arbitrary thrown value, detect a
|
|
24
|
+
* recognized GRS envelope inside (GrsServerError, HttpClientError body, or
|
|
25
|
+
* a plain Error whose message embeds the JSON envelope) and return the
|
|
26
|
+
* mapped AppError. Wired into the global Cli.boot catch. Values that are
|
|
27
|
+
* already an {@link AppError} (e.g. errors thrown directly by a verb) are
|
|
28
|
+
* passed through untouched — we return `null` so the caller's `?? rawErr`
|
|
29
|
+
* keeps the original typed error rather than risking the greedy
|
|
30
|
+
* `\{[\s\S]*\}` regex matching braces inside an existing message.
|
|
31
|
+
* - {@link matchGitHubAuthError} — used by the DCF auto-recovery path to
|
|
32
|
+
* detect the recoverable mapping-error codes
|
|
33
|
+
* ({@link RECOVERABLE_MAPPING_CODES}).
|
|
18
34
|
*/
|
|
19
35
|
import { GrsServerError } from '@microsoft/managed-apps-actions';
|
|
20
|
-
import {
|
|
21
|
-
import { AuthenticationError, ConfigurationError, NetworkError, UsageError, } from './CliError.js';
|
|
36
|
+
import { HttpClientError } from '@microsoft/managed-apps-common/services';
|
|
37
|
+
import { AppError, AuthenticationError, ConfigurationError, NetworkError, UsageError, } from './CliError.js';
|
|
22
38
|
/**
|
|
23
|
-
*
|
|
39
|
+
* Server error codes that signal a recoverable GitHub mapping problem the
|
|
40
|
+
* CLI can resolve in-process via the Device Code Flow (DCF) auto-recovery
|
|
41
|
+
* path. {@link matchGitHubAuthError} uses this tuple to gate dispatch into
|
|
42
|
+
* the verb's catch-and-retry flow.
|
|
43
|
+
*/
|
|
44
|
+
const RECOVERABLE_MAPPING_CODES = [
|
|
45
|
+
'GitHubMappingMissing',
|
|
46
|
+
'GitHubMappingExpired',
|
|
47
|
+
'GitHubMappingStale',
|
|
48
|
+
];
|
|
49
|
+
function isRecoverableMappingCode(code) {
|
|
50
|
+
return (typeof code === 'string' && RECOVERABLE_MAPPING_CODES.includes(code));
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Map a structured server error payload to a CLI-facing {@link AppError}.
|
|
54
|
+
* The AppError subclass selects the CLI exit code; the message is the
|
|
55
|
+
* server-supplied `payload.message` passed through verbatim (server is the
|
|
56
|
+
* source of truth for user-facing wording on these codes).
|
|
57
|
+
*
|
|
24
58
|
* Returns `null` for codes the CLI doesn't recognize so callers can fall back
|
|
25
59
|
* to generic error handling.
|
|
26
60
|
*/
|
|
27
|
-
export function mapGitHubServerErrorToCliError(payload
|
|
61
|
+
export function mapGitHubServerErrorToCliError(payload) {
|
|
28
62
|
const code = payload.code;
|
|
29
63
|
if (!code)
|
|
30
64
|
return null;
|
|
31
|
-
|
|
32
|
-
|
|
65
|
+
// The server message is the source of truth. If it's missing or
|
|
66
|
+
// whitespace-only, return null so the caller's `?? rawErr` keeps the
|
|
67
|
+
// original (informative) error rather than replacing it with an AppError
|
|
68
|
+
// that has an empty message.
|
|
69
|
+
const message = payload.message;
|
|
70
|
+
if (!message || !message.trim())
|
|
71
|
+
return null;
|
|
33
72
|
switch (code) {
|
|
73
|
+
// --- Authentication (exit 3) ----------------------------------------
|
|
34
74
|
case 'GitHubMappingMissing':
|
|
35
|
-
return new AuthenticationError(`Your GitHub identity isn't established for ${ownerRepo}. ` +
|
|
36
|
-
`Run \`ms git auth refresh --repo ${host}/${ownerRepo}\` and retry.`);
|
|
37
75
|
case 'GitHubMappingExpired':
|
|
38
|
-
return new AuthenticationError(`Your GitHub authentication for ${ownerRepo} has expired. ` +
|
|
39
|
-
`Run \`ms git auth refresh --repo ${host}/${ownerRepo}\` to refresh.`);
|
|
40
76
|
case 'GitHubMappingStale':
|
|
41
|
-
return new AuthenticationError(`Your stored GitHub identity for ${ownerRepo} no longer matches your GitHub account ` +
|
|
42
|
-
`(it may have been renamed or reassigned). Run \`ms git auth refresh --repo ${host}/${ownerRepo}\` to refresh.`);
|
|
43
|
-
case 'GitHubAppNotInstalled': {
|
|
44
|
-
const appName = stringDetail(details, 'appName') ?? '<app-name>';
|
|
45
|
-
return new ConfigurationError(`The Managed Apps GitHub App isn't installed on the org owning ${ownerRepo}. ` +
|
|
46
|
-
`Ask an admin to install it: https://${host}/apps/${appName}/installations/new`);
|
|
47
|
-
}
|
|
48
77
|
case 'GitHubUserLacksAccess':
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
case 'GitHubUserLacksRequiredLevel': {
|
|
52
|
-
const minLevel = stringDetail(details, 'minLevel') ?? 'a higher level of';
|
|
53
|
-
const actualLevel = stringDetail(details, 'actualLevel') ?? 'lower';
|
|
54
|
-
return new AuthenticationError(`Operation requires ${minLevel} access on ${ownerRepo}; you have ${actualLevel}.`);
|
|
55
|
-
}
|
|
56
|
-
case 'GitHubRepoArchived':
|
|
57
|
-
return new UsageError(`${ownerRepo} is archived. Unarchive it before continuing.`);
|
|
58
|
-
case 'GitHubInstallationSuspended':
|
|
59
|
-
return new ConfigurationError(`The Managed Apps GitHub App installation for the org owning ${ownerRepo} is suspended. ` +
|
|
60
|
-
`Ask an admin to unsuspend it.`);
|
|
61
|
-
case 'GitHubAuthSessionExpired': {
|
|
62
|
-
const expiresIn = numericDetail(details, 'expiresIn');
|
|
63
|
-
const window = expiresIn !== undefined ? `${expiresIn} seconds` : 'the displayed time window';
|
|
64
|
-
return new AuthenticationError(`Authentication session expired before completion. Re-run the command and complete ` +
|
|
65
|
-
`the GitHub sign-in within ${window}.`);
|
|
66
|
-
}
|
|
78
|
+
case 'GitHubUserLacksRequiredLevel':
|
|
79
|
+
case 'GitHubAuthSessionExpired':
|
|
67
80
|
case 'GitHubAuthSessionNotFound':
|
|
68
|
-
return new AuthenticationError('Authentication session was not found (the server may have restarted). Re-run the command.');
|
|
69
81
|
case 'GitHubAuthDenied':
|
|
70
|
-
return new AuthenticationError("You declined to authorize the Managed Apps GitHub App. The repository binding can't proceed without authorization.");
|
|
71
82
|
case 'GitHubAuthCancelled':
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
// placeholder rather than echoing the raw input.
|
|
87
|
-
const safeUrl = host !== '<tenant>.ghe.com' && ownerRepo !== '<owner>/<repo>'
|
|
88
|
-
? `https://${host}/${ownerRepo}`
|
|
89
|
-
: 'The supplied repository URL';
|
|
90
|
-
return new UsageError(`${safeUrl} is not a valid GitHub repository URL. The server expects an https:// ` +
|
|
91
|
-
`URL on a *.ghe.com tenant (e.g. 'https://contoso.ghe.com/<owner>/<repo>') or ` +
|
|
92
|
-
`'https://github.com/<owner>/<repo>'.`);
|
|
93
|
-
}
|
|
94
|
-
case 'GitHubUpstreamError': {
|
|
95
|
-
// Upstream errors carry server diagnostics (e.g. Key Vault failures, GitHub
|
|
96
|
-
// API responses) that are the only useful diagnostic for the user. Surface
|
|
97
|
-
// the underlying message verbatim rather than swallowing it.
|
|
98
|
-
const detail = payload.message?.trim();
|
|
99
|
-
return new NetworkError(detail
|
|
100
|
-
? `GitHub returned an unexpected error: ${detail}`
|
|
101
|
-
: 'GitHub returned an unexpected error. Try again.');
|
|
102
|
-
}
|
|
83
|
+
return new AuthenticationError(message);
|
|
84
|
+
// --- Configuration (exit 4) -----------------------------------------
|
|
85
|
+
case 'GitHubAppNotInstalled':
|
|
86
|
+
case 'GitHubInstallationSuspended':
|
|
87
|
+
return new ConfigurationError(message);
|
|
88
|
+
// --- Network (exit 5) -----------------------------------------------
|
|
89
|
+
case 'GitHubRateLimited':
|
|
90
|
+
case 'GitHubEvaluationError':
|
|
91
|
+
case 'GitHubUpstreamError':
|
|
92
|
+
return new NetworkError(message);
|
|
93
|
+
// --- Usage (exit 2) -------------------------------------------------
|
|
94
|
+
case 'GitHubRepoArchived':
|
|
95
|
+
case 'GitHubRepoNotFound':
|
|
96
|
+
return new UsageError(message);
|
|
103
97
|
default:
|
|
104
98
|
return null;
|
|
105
99
|
}
|
|
106
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* Inspect an arbitrary thrown value and, if it carries a recognized GRS
|
|
103
|
+
* envelope, return the mapped {@link AppError}. Returns `null` otherwise.
|
|
104
|
+
*
|
|
105
|
+
* Accepts:
|
|
106
|
+
* - {@link GrsServerError} — direct field access.
|
|
107
|
+
* - {@link HttpClientError} — parse `body` as JSON for `error.code|message`.
|
|
108
|
+
* - Plain {@link Error} whose `.message` embeds `{"error":{...}}` (legacy
|
|
109
|
+
* pre-`allowErrorResponse` path).
|
|
110
|
+
*
|
|
111
|
+
* Intended for the top-level CLI catch so all verbs get envelope handling for
|
|
112
|
+
* free without each having to special-case GrsServerError.
|
|
113
|
+
*/
|
|
114
|
+
export function formatServerError(error) {
|
|
115
|
+
// If the thrown value is already a CLI-typed AppError (e.g. a verb threw
|
|
116
|
+
// UsageError directly, or this function was previously invoked and the
|
|
117
|
+
// mapped error was re-thrown), don't try to re-parse it. The plain-Error
|
|
118
|
+
// branch's greedy `\{[\s\S]*\}` regex would otherwise risk matching
|
|
119
|
+
// unintended braces inside an existing message. Returning null here lets
|
|
120
|
+
// the top-level catch's `?? rawErr` fall through to the original AppError
|
|
121
|
+
// unchanged.
|
|
122
|
+
if (error instanceof AppError)
|
|
123
|
+
return null;
|
|
124
|
+
const payload = extractServerErrorPayload(error);
|
|
125
|
+
if (!payload)
|
|
126
|
+
return null;
|
|
127
|
+
return mapGitHubServerErrorToCliError(payload);
|
|
128
|
+
}
|
|
107
129
|
/**
|
|
108
130
|
* Inspect an unknown error and decide whether the CLI should run the DCF
|
|
109
131
|
* recovery flow (i.e. the verb's catch-and-retry path). Returns the parsed
|
|
110
132
|
* payload + matched code, or `null` if the error is unrelated.
|
|
111
133
|
*
|
|
112
134
|
* Matches:
|
|
113
|
-
* - `GrsServerError` with `code
|
|
114
|
-
*
|
|
115
|
-
*
|
|
116
|
-
*
|
|
135
|
+
* - `GrsServerError` with `code` in {@link RECOVERABLE_MAPPING_CODES}
|
|
136
|
+
* (status accepted as-is from the typed envelope).
|
|
137
|
+
* - Any other shape recognized by {@link extractServerErrorPayload}
|
|
138
|
+
* (`HttpClientError`, or a plain `Error` whose message embeds the JSON
|
|
139
|
+
* envelope) with a recoverable code AND HTTP status 401.
|
|
140
|
+
*
|
|
141
|
+
* Intentionally narrower than {@link extractServerErrorPayload}: that helper
|
|
142
|
+
* recovers any recognized envelope for generic error formatting, whereas this
|
|
143
|
+
* function exists solely to dispatch DCF auto-recovery and therefore gates on
|
|
144
|
+
* (a) the specific recoverable codes and (b) for legacy / untyped shapes,
|
|
145
|
+
* HTTP 401 only. A 401 with a non-recoverable code, or a recoverable code at
|
|
146
|
+
* a different status, must not trigger the recovery flow.
|
|
117
147
|
*/
|
|
118
148
|
export function matchGitHubAuthError(error) {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
error.code === 'GitHubMappingExpired' ||
|
|
122
|
-
error.code === 'GitHubMappingStale') {
|
|
123
|
-
return {
|
|
124
|
-
code: error.code,
|
|
125
|
-
payload: {
|
|
126
|
-
code: error.code,
|
|
127
|
-
message: error.message,
|
|
128
|
-
status: error.status,
|
|
129
|
-
details: error.details,
|
|
130
|
-
},
|
|
131
|
-
};
|
|
132
|
-
}
|
|
149
|
+
const payload = extractServerErrorPayload(error);
|
|
150
|
+
if (!payload)
|
|
133
151
|
return null;
|
|
152
|
+
const code = payload.code;
|
|
153
|
+
if (!isRecoverableMappingCode(code))
|
|
154
|
+
return null;
|
|
155
|
+
// Status gating: GrsServerError carries an authoritative status from a
|
|
156
|
+
// typed envelope, so we trust whatever it reports. Every other wire shape
|
|
157
|
+
// (HttpClientError body, plain Error with embedded JSON) is the legacy
|
|
158
|
+
// fallback path and must additionally be HTTP 401 — a recoverable code at
|
|
159
|
+
// any other status indicates a different failure mode (e.g. a 500 echoing
|
|
160
|
+
// a mapping code in its body) that DCF recovery cannot fix.
|
|
161
|
+
if (!(error instanceof GrsServerError) && payload.status !== 401)
|
|
162
|
+
return null;
|
|
163
|
+
return { code, payload };
|
|
164
|
+
}
|
|
165
|
+
// === Helpers ==================================================================
|
|
166
|
+
/**
|
|
167
|
+
* Extract a {@link ServerErrorPayload} from any of the supported wire-error
|
|
168
|
+
* shapes. Returns `null` if no envelope can be recovered.
|
|
169
|
+
*/
|
|
170
|
+
function extractServerErrorPayload(error) {
|
|
171
|
+
if (error instanceof GrsServerError) {
|
|
172
|
+
return {
|
|
173
|
+
code: error.code,
|
|
174
|
+
message: error.message,
|
|
175
|
+
status: error.status,
|
|
176
|
+
details: error.details,
|
|
177
|
+
};
|
|
134
178
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
if (!statusMatch || statusMatch[1] !== '401')
|
|
179
|
+
if (error instanceof HttpClientError) {
|
|
180
|
+
const parsed = parseEnvelope(error.body);
|
|
181
|
+
if (!parsed)
|
|
139
182
|
return null;
|
|
183
|
+
// Intentionally do NOT fall back to `error.message`: on HttpClientError
|
|
184
|
+
// that's the verbose HTTP blob ("HTTP error status: 403 for POST ...:
|
|
185
|
+
// {...}") which we must never surface to the user. An empty string here
|
|
186
|
+
// makes the mapper's empty-message guard fire, so the caller's `?? rawErr`
|
|
187
|
+
// path preserves the original error instead.
|
|
188
|
+
return {
|
|
189
|
+
code: parsed.code,
|
|
190
|
+
message: parsed.message ?? '',
|
|
191
|
+
status: error.status,
|
|
192
|
+
details: parsed.details,
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
if (error instanceof Error) {
|
|
140
196
|
const jsonMatch = error.message.match(/\{[\s\S]*\}/);
|
|
141
197
|
if (!jsonMatch)
|
|
142
198
|
return null;
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
},
|
|
157
|
-
};
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
catch {
|
|
161
|
-
// Not JSON — not a match.
|
|
162
|
-
}
|
|
199
|
+
const parsed = parseEnvelope(jsonMatch[0]);
|
|
200
|
+
if (!parsed?.code)
|
|
201
|
+
return null;
|
|
202
|
+
const statusMatch = error.message.match(/status:\s*(\d+)/i);
|
|
203
|
+
// See HttpClientError branch above: `error.message` here is the same
|
|
204
|
+
// verbose blob (the envelope JSON was extracted *from* it), so falling
|
|
205
|
+
// back to it would defeat the mapper's empty-message guard.
|
|
206
|
+
return {
|
|
207
|
+
code: parsed.code,
|
|
208
|
+
message: parsed.message ?? '',
|
|
209
|
+
status: statusMatch ? Number(statusMatch[1]) : 0,
|
|
210
|
+
details: parsed.details,
|
|
211
|
+
};
|
|
163
212
|
}
|
|
164
213
|
return null;
|
|
165
214
|
}
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
215
|
+
function parseEnvelope(body) {
|
|
216
|
+
if (!body)
|
|
217
|
+
return null;
|
|
218
|
+
try {
|
|
219
|
+
const data = JSON.parse(body);
|
|
220
|
+
const error = data?.error;
|
|
221
|
+
if (!error || typeof error !== 'object')
|
|
222
|
+
return null;
|
|
223
|
+
return {
|
|
224
|
+
code: typeof error.code === 'string' ? error.code : undefined,
|
|
225
|
+
message: typeof error.message === 'string' ? error.message : undefined,
|
|
226
|
+
details: error.details && typeof error.details === 'object'
|
|
227
|
+
? error.details
|
|
228
|
+
: undefined,
|
|
229
|
+
};
|
|
173
230
|
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
function stringDetail(details, key) {
|
|
177
|
-
const v = details[key];
|
|
178
|
-
return typeof v === 'string' ? v : undefined;
|
|
179
|
-
}
|
|
180
|
-
function numericDetail(details, key) {
|
|
181
|
-
const v = details[key];
|
|
182
|
-
if (typeof v === 'number' && Number.isFinite(v))
|
|
183
|
-
return v;
|
|
184
|
-
// Servers sometimes encode integer details as strings (e.g. JSON producers
|
|
185
|
-
// that stringify all `number | bigint` fields). Coerce on a best-effort basis
|
|
186
|
-
// so the user-facing message keeps the seconds/retry value instead of
|
|
187
|
-
// silently dropping it.
|
|
188
|
-
if (typeof v === 'string') {
|
|
189
|
-
const n = Number(v);
|
|
190
|
-
return Number.isFinite(n) ? n : undefined;
|
|
231
|
+
catch {
|
|
232
|
+
return null;
|
|
191
233
|
}
|
|
192
|
-
return undefined;
|
|
193
234
|
}
|
|
194
235
|
//# sourceMappingURL=GitHubErrorMap.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GitHubErrorMap.js","sourceRoot":"","sources":["../../src/Errors/GitHubErrorMap.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH
|
|
1
|
+
{"version":3,"file":"GitHubErrorMap.js","sourceRoot":"","sources":["../../src/Errors/GitHubErrorMap.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,6 +30,7 @@ export declare class CliLogger implements ILogger {
|
|
|
30
30
|
private _telemetryWriters;
|
|
31
31
|
private _unauthWriter?;
|
|
32
32
|
private _upgradeFired;
|
|
33
|
+
private readonly _sessionId;
|
|
33
34
|
private _upgradeConfig?;
|
|
34
35
|
private constructor();
|
|
35
36
|
static create(cliSettings: CliSettings, httpClient: CliHttpClient, authenticationProvider: IAuthenticationProvider): Promise<CliLogger>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CliLogger.d.ts","sourceRoot":"","sources":["../../src/Logger/CliLogger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAIzF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EACV,WAAW,EACX,uBAAuB,EAExB,MAAM,oBAAoB,CAAC;AA0F5B;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,SAAU,YAAW,OAAO;IACvC,OAAO,CAAC,iBAAiB,CAA0B;IACnD,OAAO,CAAC,aAAa,CAAC,CAAc;IACpC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,cAAc,CAAC,CAMrB;IAEF,OAAO;
|
|
1
|
+
{"version":3,"file":"CliLogger.d.ts","sourceRoot":"","sources":["../../src/Logger/CliLogger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAIzF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EACV,WAAW,EACX,uBAAuB,EAExB,MAAM,oBAAoB,CAAC;AA0F5B;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,SAAU,YAAW,OAAO;IACvC,OAAO,CAAC,iBAAiB,CAA0B;IACnD,OAAO,CAAC,aAAa,CAAC,CAAc;IACpC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,cAAc,CAAC,CAMrB;IAEF,OAAO;WAKa,MAAM,CACxB,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,aAAa,EACzB,sBAAsB,EAAE,uBAAuB,GAC9C,OAAO,CAAC,SAAS,CAAC;IA0CrB;;;;;;;;;;;;;;OAcG;IACU,oBAAoB,CAC/B,sBAAsB,EAAE,uBAAuB,GAC9C,OAAO,CAAC,IAAI,CAAC;IAShB;;;;;;;;;OASG;YACW,2BAA2B;IAkDlC,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAatD,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAW/D,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAW5D,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,eAAe;IAqBrE,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI;IAI5D,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAIvD,YAAY,CAAC,SAAS,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAI5E,IAAW,SAAS,IAAI,MAAM,GAAG,SAAS,CAEzC;IAED,IAAW,SAAS,CAAC,MAAM,EAAE,MAAM,EAElC;IAEM,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAMtB,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO;CAMjF"}
|
package/dist/Logger/CliLogger.js
CHANGED
|
@@ -109,9 +109,11 @@ export class CliLogger {
|
|
|
109
109
|
_telemetryWriters = [];
|
|
110
110
|
_unauthWriter;
|
|
111
111
|
_upgradeFired = false;
|
|
112
|
+
_sessionId;
|
|
112
113
|
_upgradeConfig;
|
|
113
|
-
constructor(telemetryWriters) {
|
|
114
|
+
constructor(telemetryWriters, sessionId) {
|
|
114
115
|
this._telemetryWriters = telemetryWriters;
|
|
116
|
+
this._sessionId = sessionId;
|
|
115
117
|
}
|
|
116
118
|
static async create(cliSettings, httpClient, authenticationProvider) {
|
|
117
119
|
const environmentId = cliSettings.appConfig?.environmentId;
|
|
@@ -123,7 +125,7 @@ export class CliLogger {
|
|
|
123
125
|
if (userTelemetrySettings.console) {
|
|
124
126
|
telemetryWriters.push(new ConsoleWriter(sessionId, cliSettings.origin));
|
|
125
127
|
}
|
|
126
|
-
const instance = new CliLogger(telemetryWriters);
|
|
128
|
+
const instance = new CliLogger(telemetryWriters, sessionId);
|
|
127
129
|
if (userTelemetrySettings.remote && region && environmentId) {
|
|
128
130
|
// Push the unauthenticated writer immediately. Defaults to the global 1DS endpoint
|
|
129
131
|
// and omits `geoLocation`; if/when auth succeeds, the upgrade swaps in the EU-aware
|
|
@@ -272,7 +274,7 @@ export class CliLogger {
|
|
|
272
274
|
// No-op — CLI identifies users via setCustomDimension
|
|
273
275
|
}
|
|
274
276
|
get sessionId() {
|
|
275
|
-
return
|
|
277
|
+
return this._sessionId;
|
|
276
278
|
}
|
|
277
279
|
set sessionId(_value) {
|
|
278
280
|
// No-op
|
|
@@ -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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"}
|
|
@@ -9,9 +9,8 @@ import type { UserTelemetrySettings } from '../Types/Cli.types.js';
|
|
|
9
9
|
* 1. Environment variable overrides (applied last, take highest precedence):
|
|
10
10
|
* - MS_CLI_REMOTE_TELEMETRY=0/false/no/off forces `remote: false`; truthy forces `remote: true`
|
|
11
11
|
* - MS_CLI_CONSOLE_TELEMETRY=1/true/yes/on forces `console: true`; falsy forces `console: false`
|
|
12
|
-
* 2.
|
|
13
|
-
* 3.
|
|
14
|
-
* 4. Default values: `{ remote: true, console: false }`
|
|
12
|
+
* 2. CLI user settings file (~/.ms-cli/userSettings.json)
|
|
13
|
+
* 3. Default values: `{ remote: true, console: false }`
|
|
15
14
|
*
|
|
16
15
|
* @returns Resolved telemetry configuration
|
|
17
16
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoggerSettings.d.ts","sourceRoot":"","sources":["../../src/Logger/LoggerSettings.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"LoggerSettings.d.ts","sourceRoot":"","sources":["../../src/Logger/LoggerSettings.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AA4BhE;;;;;;;;;;;GAWG;AACH,wBAAgB,4BAA4B,IAAI,qBAAqB,CAqCpE"}
|
|
@@ -5,7 +5,7 @@ import * as fs from 'fs';
|
|
|
5
5
|
import * as path from 'path';
|
|
6
6
|
import { CLI_CONFIG_DIRECTORY, USER_SETTINGS_FILE } from '../Constants.js';
|
|
7
7
|
import { printWarning } from '../Utils/ConsoleOutput.js';
|
|
8
|
-
import { getCliEnvVar
|
|
8
|
+
import { getCliEnvVar } from '../Utils/EnvVars.js';
|
|
9
9
|
/**
|
|
10
10
|
* Checks if a string represents a truthy value (1, true, yes, on).
|
|
11
11
|
*/
|
|
@@ -26,37 +26,6 @@ function isFalsy(value) {
|
|
|
26
26
|
const normalized = value.trim().toLowerCase();
|
|
27
27
|
return (normalized === '0' || normalized === 'false' || normalized === 'no' || normalized === 'off');
|
|
28
28
|
}
|
|
29
|
-
/**
|
|
30
|
-
* Determines whether PAC CLI telemetry is enabled by checking environment variables and PAC CLI config.
|
|
31
|
-
*
|
|
32
|
-
* Checks in order:
|
|
33
|
-
* 1. PAC_CLI_TELEMETRY_OPTOUT environment variable (if truthy, returns false)
|
|
34
|
-
* 2. PAC CLI usersettings.json file in %LOCALAPPDATA%\Microsoft\PowerAppsCli
|
|
35
|
-
*
|
|
36
|
-
* @returns `false` if explicitly disabled, `true` if explicitly enabled, `undefined` if not configured
|
|
37
|
-
*/
|
|
38
|
-
function isPacCliTelemetryEnabled() {
|
|
39
|
-
if (isTruthy(getSystemEnvVar('PAC_CLI_TELEMETRY_OPTOUT'))) {
|
|
40
|
-
return false;
|
|
41
|
-
}
|
|
42
|
-
const localAppData = getSystemEnvVar('LOCALAPPDATA');
|
|
43
|
-
if (!localAppData) {
|
|
44
|
-
return undefined;
|
|
45
|
-
}
|
|
46
|
-
const userSettingsPath = path.join(localAppData, 'Microsoft', 'PowerAppsCli', 'usersettings.json');
|
|
47
|
-
if (!fs.existsSync(userSettingsPath)) {
|
|
48
|
-
return undefined;
|
|
49
|
-
}
|
|
50
|
-
try {
|
|
51
|
-
const raw = fs.readFileSync(userSettingsPath, 'utf-8');
|
|
52
|
-
const parsed = JSON.parse(raw);
|
|
53
|
-
return typeof parsed.telemetryEnabled === 'boolean' ? parsed.telemetryEnabled : undefined;
|
|
54
|
-
}
|
|
55
|
-
catch (error) {
|
|
56
|
-
printWarning(`Failed to read PAC CLI telemetry settings: ${error.message}`);
|
|
57
|
-
return undefined;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
29
|
/**
|
|
61
30
|
* Resolves the effective user telemetry settings by merging defaults, user config file, and environment overrides.
|
|
62
31
|
*
|
|
@@ -64,9 +33,8 @@ function isPacCliTelemetryEnabled() {
|
|
|
64
33
|
* 1. Environment variable overrides (applied last, take highest precedence):
|
|
65
34
|
* - MS_CLI_REMOTE_TELEMETRY=0/false/no/off forces `remote: false`; truthy forces `remote: true`
|
|
66
35
|
* - MS_CLI_CONSOLE_TELEMETRY=1/true/yes/on forces `console: true`; falsy forces `console: false`
|
|
67
|
-
* 2.
|
|
68
|
-
* 3.
|
|
69
|
-
* 4. Default values: `{ remote: true, console: false }`
|
|
36
|
+
* 2. CLI user settings file (~/.ms-cli/userSettings.json)
|
|
37
|
+
* 3. Default values: `{ remote: true, console: false }`
|
|
70
38
|
*
|
|
71
39
|
* @returns Resolved telemetry configuration
|
|
72
40
|
*/
|
|
@@ -87,10 +55,6 @@ export function resolveUserTelemetrySettings() {
|
|
|
87
55
|
printWarning(`Failed to read CLI telemetry settings: ${error.message}`);
|
|
88
56
|
}
|
|
89
57
|
}
|
|
90
|
-
const pacCliSetting = isPacCliTelemetryEnabled();
|
|
91
|
-
if (typeof pacCliSetting === 'boolean' && pacCliSetting === false) {
|
|
92
|
-
resolved.remote = false;
|
|
93
|
-
}
|
|
94
58
|
const remoteTelemetry = getCliEnvVar('REMOTE_TELEMETRY');
|
|
95
59
|
if (remoteTelemetry !== undefined) {
|
|
96
60
|
if (isFalsy(remoteTelemetry)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoggerSettings.js","sourceRoot":"","sources":["../../src/Logger/LoggerSettings.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAExE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"LoggerSettings.js","sourceRoot":"","sources":["../../src/Logger/LoggerSettings.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAExE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD;;GAEG;AACH,SAAS,QAAQ,CAAC,KAAqB;IACrC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,OAAO,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,IAAI,CAAC;AACpG,CAAC;AAED;;GAEG;AACH,SAAS,OAAO,CAAC,KAAqB;IACpC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,OAAO,CACL,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,OAAO,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,KAAK,CAC5F,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,4BAA4B;IAC1C,MAAM,QAAQ,GAA0B;QACtC,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,KAAK;KACf,CAAC;IAEF,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,CAAC;IAChF,IAAI,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;YACnE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAmC,CAAC;YAC1E,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC;YACnD,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC;QACxD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,0CAA2C,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IAED,MAAM,eAAe,GAAG,YAAY,CAAC,kBAAkB,CAAC,CAAC;IACzD,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAClC,IAAI,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;YAC7B,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC;QAC1B,CAAC;aAAM,IAAI,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YACrC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;QACzB,CAAC;IACH,CAAC;IAED,MAAM,gBAAgB,GAAG,YAAY,CAAC,mBAAmB,CAAC,CAAC;IAC3D,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACnC,IAAI,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC/B,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;QAC1B,CAAC;aAAM,IAAI,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACrC,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OneDSWriter.d.ts","sourceRoot":"","sources":["../../src/Logger/OneDSWriter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,KAAK,MAAM,EAA2B,MAAM,yCAAyC,CAAC;AAC/F,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,0CAA0C,CAAC;AAElD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAGnE,qBAAa,WAAY,YAAW,gBAAgB;IAClD,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,eAAe,CAAa;gBAGlC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,iBAAiB,EACpC,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM;IAoDZ,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAOnE,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAOhE,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAQ7D,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI;IASnE,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI;IAShE,0BAA0B,CAAC,YAAY,EAAE,MAAM,EAAE,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI;IAStF,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,
|
|
1
|
+
{"version":3,"file":"OneDSWriter.d.ts","sourceRoot":"","sources":["../../src/Logger/OneDSWriter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,KAAK,MAAM,EAA2B,MAAM,yCAAyC,CAAC;AAC/F,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,0CAA0C,CAAC;AAElD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAGnE,qBAAa,WAAY,YAAW,gBAAgB;IAClD,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,eAAe,CAAa;gBAGlC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,iBAAiB,EACpC,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM;IAoDZ,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAOnE,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAOhE,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAQ7D,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI;IASnE,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI;IAShE,0BAA0B,CAAC,YAAY,EAAE,MAAM,EAAE,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI;IAStF,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;CA0BpB"}
|