@aws/lsp-codewhisperer 0.0.3
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/CHANGELOG.md +7 -0
- package/README.md +19 -0
- package/out/client/sigv4/codewhisperer.d.ts +3 -0
- package/out/client/sigv4/codewhisperer.js +14 -0
- package/out/client/sigv4/codewhisperer.js.map +1 -0
- package/out/client/sigv4/service.json +346 -0
- package/out/client/token/bearer-token-service.json +1627 -0
- package/out/client/token/codewhisperer.d.ts +14 -0
- package/out/client/token/codewhisperer.js +23 -0
- package/out/client/token/codewhisperer.js.map +1 -0
- package/out/index.d.ts +2 -0
- package/out/index.js +19 -0
- package/out/index.js.map +1 -0
- package/out/language-server/auto-trigger/autoTrigger.d.ts +38 -0
- package/out/language-server/auto-trigger/autoTrigger.js +119 -0
- package/out/language-server/auto-trigger/autoTrigger.js.map +1 -0
- package/out/language-server/auto-trigger/autoTrigger.test.d.ts +1 -0
- package/out/language-server/auto-trigger/autoTrigger.test.js +82 -0
- package/out/language-server/auto-trigger/autoTrigger.test.js.map +1 -0
- package/out/language-server/auto-trigger/coefficients.json +405 -0
- package/out/language-server/codeWhispererSecurityScanServer.d.ts +4 -0
- package/out/language-server/codeWhispererSecurityScanServer.js +76 -0
- package/out/language-server/codeWhispererSecurityScanServer.js.map +1 -0
- package/out/language-server/codeWhispererServer.d.ts +7 -0
- package/out/language-server/codeWhispererServer.js +425 -0
- package/out/language-server/codeWhispererServer.js.map +1 -0
- package/out/language-server/codeWhispererServer.test.d.ts +1 -0
- package/out/language-server/codeWhispererServer.test.js +1218 -0
- package/out/language-server/codeWhispererServer.test.js.map +1 -0
- package/out/language-server/codeWhispererService.d.ts +84 -0
- package/out/language-server/codeWhispererService.js +168 -0
- package/out/language-server/codeWhispererService.js.map +1 -0
- package/out/language-server/dependencyGraph/commonUtil.d.ts +2 -0
- package/out/language-server/dependencyGraph/commonUtil.js +20 -0
- package/out/language-server/dependencyGraph/commonUtil.js.map +1 -0
- package/out/language-server/dependencyGraph/constants.d.ts +2 -0
- package/out/language-server/dependencyGraph/constants.js +6 -0
- package/out/language-server/dependencyGraph/constants.js.map +1 -0
- package/out/language-server/dependencyGraph/csharpDependencyGraph.d.ts +27 -0
- package/out/language-server/dependencyGraph/csharpDependencyGraph.js +145 -0
- package/out/language-server/dependencyGraph/csharpDependencyGraph.js.map +1 -0
- package/out/language-server/dependencyGraph/csharpDependencyGraph.test.d.ts +1 -0
- package/out/language-server/dependencyGraph/csharpDependencyGraph.test.js +341 -0
- package/out/language-server/dependencyGraph/csharpDependencyGraph.test.js.map +1 -0
- package/out/language-server/dependencyGraph/dependencyGraph.d.ts +125 -0
- package/out/language-server/dependencyGraph/dependencyGraph.js +152 -0
- package/out/language-server/dependencyGraph/dependencyGraph.js.map +1 -0
- package/out/language-server/dependencyGraph/dependencyGraphFactory.d.ts +15 -0
- package/out/language-server/dependencyGraph/dependencyGraphFactory.js +22 -0
- package/out/language-server/dependencyGraph/dependencyGraphFactory.js.map +1 -0
- package/out/language-server/languageDetection.d.ts +3 -0
- package/out/language-server/languageDetection.js +56 -0
- package/out/language-server/languageDetection.js.map +1 -0
- package/out/language-server/mergeRightUtils.d.ts +6 -0
- package/out/language-server/mergeRightUtils.js +37 -0
- package/out/language-server/mergeRightUtils.js.map +1 -0
- package/out/language-server/mergeRightUtils.test.d.ts +1 -0
- package/out/language-server/mergeRightUtils.test.js +53 -0
- package/out/language-server/mergeRightUtils.test.js.map +1 -0
- package/out/language-server/proxy-server.d.ts +2 -0
- package/out/language-server/proxy-server.js +35 -0
- package/out/language-server/proxy-server.js.map +1 -0
- package/out/language-server/securityScan/securityScanHandler.d.ts +17 -0
- package/out/language-server/securityScan/securityScanHandler.js +139 -0
- package/out/language-server/securityScan/securityScanHandler.js.map +1 -0
- package/out/language-server/securityScan/securityScanHandler.test.d.ts +1 -0
- package/out/language-server/securityScan/securityScanHandler.test.js +170 -0
- package/out/language-server/securityScan/securityScanHandler.test.js.map +1 -0
- package/out/language-server/securityScan/types.d.ts +49 -0
- package/out/language-server/securityScan/types.js +3 -0
- package/out/language-server/securityScan/types.js.map +1 -0
- package/out/language-server/session/sessionManager.d.ts +91 -0
- package/out/language-server/session/sessionManager.js +234 -0
- package/out/language-server/session/sessionManager.js.map +1 -0
- package/out/language-server/session/sessionManager.test.d.ts +1 -0
- package/out/language-server/session/sessionManager.test.js +584 -0
- package/out/language-server/session/sessionManager.test.js.map +1 -0
- package/out/language-server/telemetry/codePercentage.d.ts +17 -0
- package/out/language-server/telemetry/codePercentage.js +82 -0
- package/out/language-server/telemetry/codePercentage.js.map +1 -0
- package/out/language-server/telemetry/codePercentage.test.d.ts +1 -0
- package/out/language-server/telemetry/codePercentage.test.js +85 -0
- package/out/language-server/telemetry/codePercentage.test.js.map +1 -0
- package/out/language-server/telemetry/types.d.ts +68 -0
- package/out/language-server/telemetry/types.js +3 -0
- package/out/language-server/telemetry/types.js.map +1 -0
- package/out/language-server/telemetry/userTriggerDecision.test.d.ts +1 -0
- package/out/language-server/telemetry/userTriggerDecision.test.js +946 -0
- package/out/language-server/telemetry/userTriggerDecision.test.js.map +1 -0
- package/out/language-server/telemetry.test.d.ts +1 -0
- package/out/language-server/telemetry.test.js +96 -0
- package/out/language-server/telemetry.test.js.map +1 -0
- package/out/language-server/testUtils.d.ts +69 -0
- package/out/language-server/testUtils.js +90 -0
- package/out/language-server/testUtils.js.map +1 -0
- package/out/language-server/utils.d.ts +6 -0
- package/out/language-server/utils.js +31 -0
- package/out/language-server/utils.js.map +1 -0
- package/package.json +53 -0
- package/script/generateServiceClient.ts +242 -0
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import * as child_process from 'child_process'
|
|
7
|
+
import * as fs from 'fs'
|
|
8
|
+
import * as path from 'path'
|
|
9
|
+
|
|
10
|
+
const repoRoot = path.join(process.cwd()) // root/packages/toolkit -> root/
|
|
11
|
+
/**
|
|
12
|
+
* This script uses the AWS JS SDK v2 to generate service clients where the client definition is contained within
|
|
13
|
+
* this repo. Client definitions are added at the bottom of this script.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
interface ServiceClientDefinition {
|
|
17
|
+
serviceName: string
|
|
18
|
+
serviceJsonPath: string
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
async function generateServiceClients(serviceClientDefinitions: ServiceClientDefinition[]): Promise<void> {
|
|
22
|
+
const tempJsSdkPath = path.join(repoRoot, 'node_modules', '.zzz-awssdk2')
|
|
23
|
+
console.log(`Temp JS SDK Repo location: ${tempJsSdkPath}`)
|
|
24
|
+
console.log('Service Clients to Generate: ', serviceClientDefinitions.map(x => x.serviceName).join(', '))
|
|
25
|
+
|
|
26
|
+
await cloneJsSdk(tempJsSdkPath)
|
|
27
|
+
await insertServiceClientsIntoJsSdk(tempJsSdkPath, serviceClientDefinitions)
|
|
28
|
+
await runTypingsGenerator(tempJsSdkPath)
|
|
29
|
+
await integrateServiceClients(tempJsSdkPath, serviceClientDefinitions)
|
|
30
|
+
|
|
31
|
+
console.log('Done generating service client(s)')
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/** When cloning aws-sdk-js, we want to pull the version actually used in package-lock.json. */
|
|
35
|
+
function getJsSdkVersion(): string {
|
|
36
|
+
const json = fs.readFileSync(path.resolve(repoRoot, 'package-lock.json')).toString()
|
|
37
|
+
const packageLock = JSON.parse(json)
|
|
38
|
+
|
|
39
|
+
return packageLock['packages']['node_modules/aws-sdk']['version']
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
async function cloneJsSdk(dir: string): Promise<void> {
|
|
43
|
+
// Output stderr while it clones so it doesn't look frozen
|
|
44
|
+
return new Promise<void>((resolve, reject) => {
|
|
45
|
+
const sdkversion = getJsSdkVersion()
|
|
46
|
+
if (!sdkversion) {
|
|
47
|
+
throw new Error('failed to get sdk version from package-lock.json')
|
|
48
|
+
}
|
|
49
|
+
const tag = `v${sdkversion}`
|
|
50
|
+
|
|
51
|
+
const gitHead = child_process.spawnSync('git', ['-C', dir, 'rev-parse', 'HEAD'])
|
|
52
|
+
|
|
53
|
+
const alreadyCloned = gitHead.status !== undefined && gitHead.status === 0
|
|
54
|
+
const msg = `${alreadyCloned ? 'Updating' : 'Cloning'} AWS JS SDK...
|
|
55
|
+
tag: ${tag}
|
|
56
|
+
git: status=${gitHead.status} output=${gitHead.output.toString()}`
|
|
57
|
+
console.log(msg)
|
|
58
|
+
|
|
59
|
+
const gitArgs = alreadyCloned
|
|
60
|
+
? // Local repo exists already: just update it and checkout the tag.
|
|
61
|
+
// Fetch only the tag we need.
|
|
62
|
+
// git fetch origin tag v2.950.0 --no-tags
|
|
63
|
+
['-C', dir, 'fetch', '--quiet', 'origin', 'tag', tag, '--no-tags']
|
|
64
|
+
: // Local repo does not exist: clone it.
|
|
65
|
+
[
|
|
66
|
+
'-c',
|
|
67
|
+
'advice.detachedHead=false',
|
|
68
|
+
'clone',
|
|
69
|
+
'--quiet',
|
|
70
|
+
'-b',
|
|
71
|
+
tag,
|
|
72
|
+
'--depth',
|
|
73
|
+
'1',
|
|
74
|
+
'https://github.com/aws/aws-sdk-js.git',
|
|
75
|
+
dir,
|
|
76
|
+
]
|
|
77
|
+
|
|
78
|
+
const gitCmd = child_process.execFile('git', gitArgs, { encoding: 'utf8' })
|
|
79
|
+
|
|
80
|
+
gitCmd.stderr?.on('data', (data: any) => {
|
|
81
|
+
console.log(data)
|
|
82
|
+
})
|
|
83
|
+
gitCmd.once('close', (code, signal) => {
|
|
84
|
+
gitCmd.stdout?.removeAllListeners()
|
|
85
|
+
|
|
86
|
+
// Only needed for the "update" case, but harmless for "clone".
|
|
87
|
+
const gitCheckout = child_process.spawnSync('git', [
|
|
88
|
+
'-c',
|
|
89
|
+
'advice.detachedHead=false',
|
|
90
|
+
'-C',
|
|
91
|
+
dir,
|
|
92
|
+
'checkout',
|
|
93
|
+
'--force',
|
|
94
|
+
tag,
|
|
95
|
+
])
|
|
96
|
+
if (gitCheckout.status !== undefined && gitCheckout.status !== 0) {
|
|
97
|
+
console.log(`error: git: status=${gitCheckout.status} output=${gitCheckout.output.toString()}`)
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
resolve()
|
|
101
|
+
})
|
|
102
|
+
})
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
async function insertServiceClientsIntoJsSdk(
|
|
106
|
+
jsSdkPath: string,
|
|
107
|
+
serviceClientDefinitions: ServiceClientDefinition[]
|
|
108
|
+
): Promise<void> {
|
|
109
|
+
serviceClientDefinitions.forEach(serviceClientDefinition => {
|
|
110
|
+
const apiVersion = getApiVersion(serviceClientDefinition.serviceJsonPath)
|
|
111
|
+
|
|
112
|
+
// Copy the Service Json into the JS SDK for generation
|
|
113
|
+
const jsSdkServiceJsonPath = path.join(
|
|
114
|
+
jsSdkPath,
|
|
115
|
+
'apis',
|
|
116
|
+
`${serviceClientDefinition.serviceName.toLowerCase()}-${apiVersion}.normal.json`
|
|
117
|
+
)
|
|
118
|
+
fs.copyFileSync(serviceClientDefinition.serviceJsonPath, jsSdkServiceJsonPath)
|
|
119
|
+
})
|
|
120
|
+
|
|
121
|
+
const apiMetadataPath = path.join(jsSdkPath, 'apis', 'metadata.json')
|
|
122
|
+
await patchServicesIntoApiMetadata(
|
|
123
|
+
apiMetadataPath,
|
|
124
|
+
serviceClientDefinitions.map(x => x.serviceName)
|
|
125
|
+
)
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
interface ServiceJsonSchema {
|
|
129
|
+
metadata: {
|
|
130
|
+
apiVersion: string
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
function getApiVersion(serviceJsonPath: string): string {
|
|
135
|
+
const json = fs.readFileSync(serviceJsonPath).toString()
|
|
136
|
+
const serviceJson = JSON.parse(json) as ServiceJsonSchema
|
|
137
|
+
|
|
138
|
+
return serviceJson.metadata.apiVersion
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
interface ApiMetadata {
|
|
142
|
+
[key: string]: { name: string }
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Updates the JS SDK's api metadata to contain the provided services
|
|
147
|
+
*/
|
|
148
|
+
async function patchServicesIntoApiMetadata(apiMetadataPath: string, serviceNames: string[]): Promise<void> {
|
|
149
|
+
console.log(`Patching services (${serviceNames.join(', ')}) into API Metadata...`)
|
|
150
|
+
|
|
151
|
+
const apiMetadataJson = fs.readFileSync(apiMetadataPath).toString()
|
|
152
|
+
const apiMetadata = JSON.parse(apiMetadataJson) as ApiMetadata
|
|
153
|
+
|
|
154
|
+
serviceNames.forEach(serviceName => {
|
|
155
|
+
apiMetadata[serviceName.toLowerCase()] = { name: serviceName }
|
|
156
|
+
})
|
|
157
|
+
|
|
158
|
+
fs.writeFileSync(apiMetadataPath, JSON.stringify(apiMetadata, undefined, 4))
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Generates service clients
|
|
163
|
+
*/
|
|
164
|
+
async function runTypingsGenerator(repoPath: string): Promise<void> {
|
|
165
|
+
console.log('Generating service client typings...')
|
|
166
|
+
|
|
167
|
+
const stdout = child_process.execFileSync('node', ['scripts/typings-generator.js'], {
|
|
168
|
+
encoding: 'utf8',
|
|
169
|
+
cwd: repoPath,
|
|
170
|
+
})
|
|
171
|
+
console.log(stdout)
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Copies the generated service clients into the repo
|
|
176
|
+
*/
|
|
177
|
+
async function integrateServiceClients(
|
|
178
|
+
repoPath: string,
|
|
179
|
+
serviceClientDefinitions: ServiceClientDefinition[]
|
|
180
|
+
): Promise<void> {
|
|
181
|
+
for (const serviceClientDefinition of serviceClientDefinitions) {
|
|
182
|
+
await integrateServiceClient(
|
|
183
|
+
repoPath,
|
|
184
|
+
serviceClientDefinition.serviceJsonPath,
|
|
185
|
+
serviceClientDefinition.serviceName
|
|
186
|
+
)
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Copies the generated service client into the repo
|
|
192
|
+
*/
|
|
193
|
+
async function integrateServiceClient(repoPath: string, serviceJsonPath: string, serviceName: string): Promise<void> {
|
|
194
|
+
const typingsFilename = `${serviceName.toLowerCase()}.d.ts`
|
|
195
|
+
const sourceClientPath = path.join(repoPath, 'clients', typingsFilename)
|
|
196
|
+
const destinationClientPath = path.join(path.dirname(serviceJsonPath), typingsFilename)
|
|
197
|
+
|
|
198
|
+
console.log(`Integrating ${typingsFilename} ...`)
|
|
199
|
+
|
|
200
|
+
fs.copyFileSync(sourceClientPath, destinationClientPath)
|
|
201
|
+
|
|
202
|
+
await sanitizeServiceClient(destinationClientPath)
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Patches the type file imports to be relative to the SDK module
|
|
207
|
+
*/
|
|
208
|
+
async function sanitizeServiceClient(generatedClientPath: string): Promise<void> {
|
|
209
|
+
console.log('Altering Service Client to fit the codebase...')
|
|
210
|
+
|
|
211
|
+
let fileContents = fs.readFileSync(generatedClientPath).toString()
|
|
212
|
+
|
|
213
|
+
// Add a header stating the file is autogenerated
|
|
214
|
+
fileContents = `
|
|
215
|
+
/**
|
|
216
|
+
* THIS FILE IS AUTOGENERATED BY 'generateServiceClient.ts'.
|
|
217
|
+
* DO NOT EDIT BY HAND.
|
|
218
|
+
*/
|
|
219
|
+
|
|
220
|
+
${fileContents}
|
|
221
|
+
`
|
|
222
|
+
|
|
223
|
+
fileContents = fileContents.replace(/(import .* from.*)\.\.(.*)/g, '$1aws-sdk$2')
|
|
224
|
+
|
|
225
|
+
fs.writeFileSync(generatedClientPath, fileContents)
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
// ---------------------------------------------------------------------------------------------------------------------
|
|
229
|
+
|
|
230
|
+
void (async () => {
|
|
231
|
+
const serviceClientDefinitions: ServiceClientDefinition[] = [
|
|
232
|
+
{
|
|
233
|
+
serviceJsonPath: 'server/aws-lsp-codewhisperer/src/client/sigv4/service.json',
|
|
234
|
+
serviceName: 'CodeWhispererSigV4Client',
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
serviceJsonPath: 'server/aws-lsp-codewhisperer/src/client/token/bearer-token-service.json',
|
|
238
|
+
serviceName: 'CodeWhispererBearerTokenClient',
|
|
239
|
+
},
|
|
240
|
+
]
|
|
241
|
+
await generateServiceClients(serviceClientDefinitions)
|
|
242
|
+
})()
|