Skip to content

Commit 2aed4db

Browse files
francescoopiccoliFrancesco Piccoli
authored andcommitted
fix: hardcoded class and function names logging to avoid uglified naming when bundled (#909)
* fix: prevent uglifying class and function names when bundling codewhisperer * chore: fix format * fix: add missing import * feat: log class name from language servers (not from runtimes) * fix: log directly hardcoded class name, undo keep class and file names * fix: merge conflicts + updated logging after merge * feat: add hardcoded logging for new iam streaming client --------- Co-authored-by: Francesco Piccoli <[email protected]>
1 parent cf58e21 commit 2aed4db

File tree

12 files changed

+58
-22
lines changed

12 files changed

+58
-22
lines changed

app/aws-lsp-codewhisperer-runtimes/webpack.config.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
const path = require('path')
22
const webpack = require('webpack')
33
const HtmlWebpackPlugin = require('html-webpack-plugin')
4-
54
const baseConfig = {
65
mode: 'development',
76
output: {

server/aws-lsp-codewhisperer/src/client/sigv4/codewhisperer.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,24 @@ import { Service } from 'aws-sdk'
22
import { ServiceConfigurationOptions } from 'aws-sdk/lib/service'
33
const apiConfig = require('./service.json')
44
import CodeWhispererClient = require('./codewhisperersigv4client')
5-
import { SDKInitializator } from '@aws/language-server-runtimes/server-interface'
5+
import { SDKInitializator, Logging } from '@aws/language-server-runtimes/server-interface'
66

77
export type CodeWhispererSigv4ClientConfigurationOptions = ServiceConfigurationOptions
88

99
export function createCodeWhispererSigv4Client(
1010
options: ServiceConfigurationOptions,
11-
sdkInitializator: SDKInitializator
11+
sdkInitializator: SDKInitializator,
12+
logging: Logging
1213
): CodeWhispererClient {
13-
return createService(options, sdkInitializator) as CodeWhispererClient
14+
return createService(options, sdkInitializator, logging) as CodeWhispererClient
1415
}
1516

16-
function createService(options: ServiceConfigurationOptions, sdkInitializator: SDKInitializator): Service {
17+
function createService(
18+
options: ServiceConfigurationOptions,
19+
sdkInitializator: SDKInitializator,
20+
logging: Logging
21+
): Service {
22+
logging.log(`Passing client for class Service to sdkInitializator (v2) for additional setup (e.g. proxy)`)
1723
const client = sdkInitializator.v2(Service, { apiConfig, ...options } as any)
1824
return client
1925
}

server/aws-lsp-codewhisperer/src/client/streamingClient/codewhispererStreamingClient.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { CodeWhispererStreaming, CodeWhispererStreamingClientConfig } from '@amzn/codewhisperer-streaming'
22
import { ConfiguredRetryStrategy } from '@aws-sdk/util-retry'
3-
import { SDKInitializator } from '@aws/language-server-runtimes/server-interface'
3+
import { SDKInitializator, Logging } from '@aws/language-server-runtimes/server-interface'
44

55
// TODO: refactor and combine with language-server/streamingClientService.ts when no longer in use
66
export class StreamingClient {
@@ -9,13 +9,15 @@ export class StreamingClient {
99
codeWhispererRegion: string,
1010
codeWhispererEndpoint: string,
1111
sdkInitializator: SDKInitializator,
12+
logging: Logging,
1213
config?: CodeWhispererStreamingClientConfig
1314
) {
1415
return await createStreamingClient(
1516
credentialsProvider,
1617
codeWhispererRegion,
1718
codeWhispererEndpoint,
1819
sdkInitializator,
20+
logging,
1921
config
2022
)
2123
}
@@ -25,10 +27,14 @@ export async function createStreamingClient(
2527
codeWhispererRegion: string,
2628
codeWhispererEndpoint: string,
2729
sdkInitializator: SDKInitializator,
30+
logging: Logging,
2831
config?: CodeWhispererStreamingClientConfig
2932
): Promise<CodeWhispererStreaming> {
3033
const creds = credentialsProvider.getCredentials('bearer')
3134

35+
logging.log(
36+
`Passing client for class CodeWhispererStreaming to sdkInitializator (v3) for additional setup (e.g. proxy)`
37+
)
3238
const streamingClient = sdkInitializator(CodeWhispererStreaming, {
3339
region: codeWhispererRegion,
3440
endpoint: codeWhispererEndpoint,

server/aws-lsp-codewhisperer/src/client/token/codewhisperer.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@ import { AWSError, Request, Service } from 'aws-sdk'
22
import { ServiceConfigurationOptions } from 'aws-sdk/lib/service'
33
const apiConfig = require('./bearer-token-service.json')
44
import CodeWhispererClient = require('./codewhispererbearertokenclient')
5-
import { SDKInitializator } from '@aws/language-server-runtimes/server-interface'
6-
5+
import { SDKInitializator, Logging } from '@aws/language-server-runtimes/server-interface'
76
// PROOF OF CONCEPT
87
// This client fiddling was copied from the AWS Toolkit for VS Code
98
// https://github.com/aws/aws-toolkit-vscode/blob/5d621c8405a8b20ffe571ad0ba10ae700178e051/src/shared/awsClientBuilder.ts#L68
@@ -22,19 +21,22 @@ export interface CodeWhispererTokenClientConfigurationOptions extends ServiceCon
2221

2322
export function createCodeWhispererTokenClient(
2423
options: CodeWhispererTokenClientConfigurationOptions,
25-
sdkInitializator: SDKInitializator
24+
sdkInitializator: SDKInitializator,
25+
logging: Logging
2626
): CodeWhispererClient {
27-
return createService(options, sdkInitializator) as CodeWhispererClient
27+
return createService(options, sdkInitializator, logging) as CodeWhispererClient
2828
}
2929

3030
function createService(
3131
options: CodeWhispererTokenClientConfigurationOptions,
32-
sdkInitializator: SDKInitializator
32+
sdkInitializator: SDKInitializator,
33+
logging: Logging
3334
): Service {
3435
const onRequest = options?.onRequestSetup ?? []
3536
const listeners = Array.isArray(onRequest) ? onRequest : [onRequest]
3637
const opt = { ...options }
3738
delete opt.onRequestSetup
39+
logging.log(`Passing client for class Service to sdkInitializator (v2) for additional setup (e.g. proxy)`)
3840
const client = sdkInitializator.v2(Service, { apiConfig, ...options } as any)
3941
const originalClient = client.setupRequestListeners.bind(client)
4042

server/aws-lsp-codewhisperer/src/language-server/netTransform/netTransformServer.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
InitializeParams,
66
Server,
77
Workspace,
8+
Logging,
89
} from '@aws/language-server-runtimes/server-interface'
910
import { CodeWhispererServiceToken } from '../../shared/codeWhispererService'
1011
import {
@@ -55,6 +56,7 @@ export const QNetTransformServerToken =
5556
service: (
5657
credentialsProvider: CredentialsProvider,
5758
workspace: Workspace,
59+
logging: Logging,
5860
awsQRegion: string,
5961
awsQEndpointUrl: string,
6062
sdkInitializator: SDKInitializator
@@ -192,10 +194,10 @@ export const QNetTransformServerToken =
192194
transformHandler = new TransformHandler(amazonQServiceManager, workspace, logging, runtime)
193195

194196
/*
195-
Calling handleDidChangeConfiguration once to ensure we get configuration atleast once at start up
196-
197-
TODO: TODO: consider refactoring such responsibilities to common service manager config/initialisation server
198-
*/
197+
Calling handleDidChangeConfiguration once to ensure we get configuration atleast once at start up
198+
199+
TODO: TODO: consider refactoring such responsibilities to common service manager config/initialisation server
200+
*/
199201
await amazonQServiceManager.handleDidChangeConfiguration()
200202

201203
return {

server/aws-lsp-codewhisperer/src/language-server/netTransform/tests/transformHandler.test.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ describe('Test Transform handler ', () => {
233233
getCredentials: sinon.stub().returns({ token: 'mockedToken' }),
234234
}
235235

236-
const mockSdkRuntimeConfigurator: SDKInitializator = Object.assign(
236+
const mockSdkInitializator: SDKInitializator = Object.assign(
237237
// Default callable function for v3 clients
238238
<T, P>(Ctor: SDKClientConstructorV3<T, P>, current_config: P): T => new Ctor({ ...current_config }),
239239
// Property for v2 clients
@@ -252,7 +252,8 @@ describe('Test Transform handler ', () => {
252252
mockedCredentialsProvider,
253253
awsQRegion,
254254
awsQEndpointUrl,
255-
mockSdkRuntimeConfigurator
255+
mockSdkInitializator,
256+
mockedLogging
256257
)
257258
expect(client).to.be.instanceOf(CodeWhispererStreaming)
258259
})
@@ -264,7 +265,8 @@ describe('Test Transform handler ', () => {
264265
mockedCredentialsProvider,
265266
awsQRegion,
266267
awsQEndpointUrl,
267-
mockSdkRuntimeConfigurator
268+
mockSdkInitializator,
269+
mockedLogging
268270
)
269271
expect(client).to.be.instanceOf(CodeWhispererStreaming)
270272
})

server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/AmazonQIAMServiceManager.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ export class AmazonQIAMServiceManager extends BaseAmazonQServiceManager<
3535
this.cachedCodewhispererService = new CodeWhispererServiceIAM(
3636
this.features.credentialsProvider,
3737
this.features.workspace,
38+
this.features.logging,
3839
this.region,
3940
this.endpoint,
4041
this.features.sdkInitializator
@@ -51,6 +52,7 @@ export class AmazonQIAMServiceManager extends BaseAmazonQServiceManager<
5152
this.cachedStreamingClient = new StreamingClientServiceIAM(
5253
this.features.credentialsProvider,
5354
this.features.sdkInitializator,
55+
this.features.logging,
5456
this.region,
5557
this.endpoint
5658
)

server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/AmazonQTokenServiceManager.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -481,6 +481,7 @@ export class AmazonQTokenServiceManager extends BaseAmazonQServiceManager<
481481
const service = new CodeWhispererServiceToken(
482482
this.features.credentialsProvider,
483483
this.features.workspace,
484+
this.features.logging,
484485
region,
485486
endpoint,
486487
this.features.sdkInitializator
@@ -508,6 +509,7 @@ export class AmazonQTokenServiceManager extends BaseAmazonQServiceManager<
508509
const streamingClient = new StreamingClientServiceToken(
509510
this.features.credentialsProvider,
510511
this.features.sdkInitializator,
512+
this.features.logging,
511513
region,
512514
endpoint,
513515
this.getCustomUserAgent()

server/aws-lsp-codewhisperer/src/shared/codeWhispererService.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import {
33
CredentialsProvider,
44
CredentialsType,
55
Workspace,
6+
Logging,
67
SDKInitializator,
78
} from '@aws/language-server-runtimes/server-interface'
89
import { AWSError, ConfigurationOptions, CredentialProviderChain, Credentials } from 'aws-sdk'
@@ -97,6 +98,7 @@ export class CodeWhispererServiceIAM extends CodeWhispererServiceBase {
9798
constructor(
9899
credentialsProvider: CredentialsProvider,
99100
workspace: Workspace,
101+
logging: Logging,
100102
codeWhispererRegion: string,
101103
codeWhispererEndpoint: string,
102104
sdkInitializator: SDKInitializator
@@ -109,7 +111,7 @@ export class CodeWhispererServiceIAM extends CodeWhispererServiceBase {
109111
() => credentialsProvider.getCredentials('iam') as Credentials,
110112
]),
111113
}
112-
this.client = createCodeWhispererSigv4Client(options, sdkInitializator)
114+
this.client = createCodeWhispererSigv4Client(options, sdkInitializator, logging)
113115
// Avoid overwriting any existing client listeners
114116
const clientRequestListeners = this.client.setupRequestListeners
115117
this.client.setupRequestListeners = (request: Request<unknown, AWSError>) => {
@@ -153,6 +155,7 @@ export class CodeWhispererServiceToken extends CodeWhispererServiceBase {
153155
constructor(
154156
credentialsProvider: CredentialsProvider,
155157
workspace: Workspace,
158+
logging: Logging,
156159
codeWhispererRegion: string,
157160
codeWhispererEndpoint: string,
158161
sdkInitializator: SDKInitializator
@@ -178,7 +181,7 @@ export class CodeWhispererServiceToken extends CodeWhispererServiceBase {
178181
},
179182
],
180183
}
181-
this.client = createCodeWhispererTokenClient(options, sdkInitializator)
184+
this.client = createCodeWhispererTokenClient(options, sdkInitializator, logging)
182185
}
183186

184187
getCredentialsType(): CredentialsType {

server/aws-lsp-codewhisperer/src/shared/proxy-server.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,11 @@ export const CodeWhispererServerIAMProxy = CodewhispererServerFactory(initBaseIA
1616
export const CodeWhispererSecurityScanServerTokenProxy = SecurityScanServerToken()
1717

1818
export const QNetTransformServerTokenProxy = QNetTransformServerToken(
19-
(credentialsProvider, workspace, awsQRegion, awsQEndpointUrl, sdkInitializator) => {
19+
(credentialsProvider, workspace, logging, awsQRegion, awsQEndpointUrl, sdkInitializator) => {
2020
return new CodeWhispererServiceToken(
2121
credentialsProvider,
2222
workspace,
23+
logging,
2324
awsQRegion,
2425
awsQEndpointUrl,
2526
sdkInitializator

server/aws-lsp-codewhisperer/src/shared/streamingClientService.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ describe('StreamingClientService', () => {
5252
streamingClientService = new StreamingClientServiceToken(
5353
features.credentialsProvider,
5454
features.sdkInitializator,
55+
features.logging,
5556
DEFAULT_AWS_Q_REGION,
5657
DEFAULT_AWS_Q_ENDPOINT_URL,
5758
'some-user-agent'

server/aws-lsp-codewhisperer/src/shared/streamingClientService.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import {
1010
SendMessageCommandInput as SendMessageCommandInputQDeveloperStreaming,
1111
SendMessageCommandOutput as SendMessageCommandOutputQDeveloperStreaming,
1212
} from '@amzn/amazon-q-developer-streaming-client'
13-
import { CredentialsProvider, SDKInitializator } from '@aws/language-server-runtimes/server-interface'
13+
import { CredentialsProvider, SDKInitializator, Logging } from '@aws/language-server-runtimes/server-interface'
1414
import { getBearerTokenFromProvider } from './utils'
1515
import { ConfiguredRetryStrategy } from '@aws-sdk/util-retry'
1616
import { CredentialProviderChain, Credentials } from 'aws-sdk'
@@ -54,6 +54,7 @@ export class StreamingClientServiceToken extends StreamingClientServiceBase {
5454
constructor(
5555
credentialsProvider: CredentialsProvider,
5656
sdkInitializator: SDKInitializator,
57+
logging: Logging,
5758
region: string,
5859
endpoint: string,
5960
customUserAgent: string
@@ -65,6 +66,9 @@ export class StreamingClientServiceToken extends StreamingClientServiceBase {
6566
return { token, expiration: new Date() }
6667
}
6768

69+
logging.log(
70+
`Passing client for class CodeWhispererStreaming to sdkInitializator (v3) for additional setup (e.g. proxy)`
71+
)
6872
this.client = sdkInitializator(CodeWhispererStreaming, {
6973
region,
7074
endpoint,
@@ -120,10 +124,16 @@ export class StreamingClientServiceIAM extends StreamingClientServiceBase {
120124
constructor(
121125
credentialsProvider: CredentialsProvider,
122126
sdkInitializator: SDKInitializator,
127+
logging: Logging,
123128
region: string,
124129
endpoint: string
125130
) {
126131
super(region, endpoint)
132+
133+
logging.log(
134+
`Passing client for class QDeveloperStreaming to sdkInitializator (v3) for additional setup (e.g. proxy)`
135+
)
136+
127137
this.client = sdkInitializator(QDeveloperStreaming, {
128138
region: region,
129139
endpoint: endpoint,

0 commit comments

Comments
 (0)