push neon reactor
This commit is contained in:
Generated
Vendored
+22
@@ -0,0 +1,22 @@
|
||||
/*!
|
||||
* Copyright (C) Microsoft Corporation. All rights reserved.
|
||||
*/
|
||||
import type { IHttpClient, RequestConfig, Response as HttpClientResponse } from '@microsoft/power-apps-actions';
|
||||
import type { IAuthenticationProvider } from '../Types/Cli.types.js';
|
||||
export declare class CliHttpClient implements IHttpClient {
|
||||
private _authenticationProvider;
|
||||
private _inflight;
|
||||
private _spinner;
|
||||
constructor(_authenticationProvider: IAuthenticationProvider);
|
||||
get<T = unknown>(url: string, config?: RequestConfig): Promise<HttpClientResponse<T>>;
|
||||
post<T = unknown>(url: string, config?: RequestConfig): Promise<HttpClientResponse<T>>;
|
||||
patch<T = unknown>(url: string, config?: RequestConfig): Promise<HttpClientResponse<T>>;
|
||||
put<T = unknown>(url: string, config?: RequestConfig): Promise<HttpClientResponse<T>>;
|
||||
delete<T = unknown>(url: string, config?: RequestConfig): Promise<HttpClientResponse<T>>;
|
||||
private _sendRequestAsync;
|
||||
private _startSpinner;
|
||||
private _stopSpinner;
|
||||
private _parseResponse;
|
||||
private _transformHeaders;
|
||||
}
|
||||
//# sourceMappingURL=CliHttpClient.d.ts.map
|
||||
Generated
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"CliHttpClient.d.ts","sourceRoot":"","sources":["../../src/HttpClient/CliHttpClient.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EACb,QAAQ,IAAI,kBAAkB,EAC/B,MAAM,+BAA+B,CAAC;AAKvC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAIlE,qBAAa,aAAc,YAAW,WAAW;IAInC,OAAO,CAAC,uBAAuB;IAH3C,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,QAAQ,CAAoB;gBAEhB,uBAAuB,EAAE,uBAAuB;IAEvD,GAAG,CAAC,CAAC,GAAG,OAAO,EAC1B,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAGpB,IAAI,CAAC,CAAC,GAAG,OAAO,EAC3B,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAGpB,KAAK,CAAC,CAAC,GAAG,OAAO,EAC5B,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAGpB,GAAG,CAAC,CAAC,GAAG,OAAO,EAC1B,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAGpB,MAAM,CAAC,CAAC,GAAG,OAAO,EAC7B,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;YAInB,iBAAiB;IAiE/B,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,YAAY;YAON,cAAc;YAkBd,iBAAiB;CAOhC"}
|
||||
Generated
Vendored
+115
@@ -0,0 +1,115 @@
|
||||
/*!
|
||||
* Copyright (C) Microsoft Corporation. All rights reserved.
|
||||
*/
|
||||
import { randomUUID } from 'crypto';
|
||||
import { getSettings } from '../CliSettings.js';
|
||||
import { MS_CLIENT_REQUESTID } from '../Constants.js';
|
||||
import { enhanceNetworkError } from '../Utils/EnhanceNetworkError.js';
|
||||
import { CliSpinner } from '../Utils/Spinner.js';
|
||||
export class CliHttpClient {
|
||||
_authenticationProvider;
|
||||
_inflight = 0;
|
||||
_spinner = new CliSpinner();
|
||||
constructor(_authenticationProvider) {
|
||||
this._authenticationProvider = _authenticationProvider;
|
||||
}
|
||||
async get(url, config) {
|
||||
return this._sendRequestAsync(url, 'GET', config);
|
||||
}
|
||||
async post(url, config) {
|
||||
return this._sendRequestAsync(url, 'POST', config);
|
||||
}
|
||||
async patch(url, config) {
|
||||
return this._sendRequestAsync(url, 'PATCH', config);
|
||||
}
|
||||
async put(url, config) {
|
||||
return this._sendRequestAsync(url, 'PUT', config);
|
||||
}
|
||||
async delete(url, config) {
|
||||
return this._sendRequestAsync(url, 'DELETE', config);
|
||||
}
|
||||
async _sendRequestAsync(url, method, config) {
|
||||
this._startSpinner();
|
||||
try {
|
||||
const headers = config?.headers || {};
|
||||
if (config?.authResource) {
|
||||
const token = await this._authenticationProvider.getAccessTokenForResource(config.authResource);
|
||||
headers.Authorization = `Bearer ${token}`;
|
||||
}
|
||||
if (!headers['Content-Type']) {
|
||||
headers['Content-Type'] = 'application/json';
|
||||
}
|
||||
headers[MS_CLIENT_REQUESTID] = randomUUID();
|
||||
// Only JSON.stringify if body is not already a string and Content-Type is JSON
|
||||
let bodyContent;
|
||||
if (config?.body !== undefined) {
|
||||
const isJsonContentType = headers['Content-Type'] === 'application/json';
|
||||
bodyContent =
|
||||
typeof config.body === 'string' && !isJsonContentType
|
||||
? config.body
|
||||
: JSON.stringify(config.body);
|
||||
}
|
||||
const requestOptions = {
|
||||
method,
|
||||
headers,
|
||||
// Only include body if it exists
|
||||
body: bodyContent,
|
||||
};
|
||||
const response = await fetch(url, requestOptions);
|
||||
if (!response.ok) {
|
||||
throw new Error(`HTTP error status: ${response.status} for ${method} ${url}: ${await response.text()}`);
|
||||
}
|
||||
const data = await this._parseResponse(response);
|
||||
return {
|
||||
data,
|
||||
status: response.status,
|
||||
headers: await this._transformHeaders(response.headers),
|
||||
};
|
||||
}
|
||||
catch (error) {
|
||||
throw enhanceNetworkError(error, method, url);
|
||||
}
|
||||
finally {
|
||||
this._stopSpinner();
|
||||
}
|
||||
}
|
||||
_startSpinner() {
|
||||
this._inflight++;
|
||||
if (this._inflight === 1 && getSettings().interactive) {
|
||||
this._spinner.start();
|
||||
}
|
||||
}
|
||||
_stopSpinner() {
|
||||
this._inflight--;
|
||||
if (this._inflight === 0 && getSettings().interactive) {
|
||||
this._spinner.stop();
|
||||
}
|
||||
}
|
||||
async _parseResponse(response) {
|
||||
const contentType = response.headers.get('content-type');
|
||||
const responseText = await response.text();
|
||||
// Handle empty responses or non-JSON content
|
||||
if (!responseText || responseText.trim() === '') {
|
||||
return null;
|
||||
}
|
||||
else if (contentType && contentType.includes('application/json')) {
|
||||
try {
|
||||
return JSON.parse(responseText);
|
||||
}
|
||||
catch (parseError) {
|
||||
throw new Error(`Failed to parse JSON response: ${parseError}`);
|
||||
}
|
||||
}
|
||||
else {
|
||||
return responseText;
|
||||
}
|
||||
}
|
||||
async _transformHeaders(headers) {
|
||||
const result = {};
|
||||
headers.forEach((value, key) => {
|
||||
result[key] = value;
|
||||
});
|
||||
return result;
|
||||
}
|
||||
}
|
||||
//# sourceMappingURL=CliHttpClient.js.map
|
||||
Generated
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"CliHttpClient.js","sourceRoot":"","sources":["../../src/HttpClient/CliHttpClient.ts"],"names":[],"mappings":"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"}
|
||||
Reference in New Issue
Block a user