Skip to content

Commit b6ae875

Browse files
committed
Update telemetry readme, and do not fetch private schemas if there is no auth
1 parent b3d588c commit b6ae875

File tree

6 files changed

+30
-5
lines changed

6 files changed

+30
-5
lines changed

src/auth/AwsCredentials.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@ export class AwsCredentials {
3434
this.logger.info(`AWS credentials ${encryptionKey ? 'encrypted' : 'unencrypted'}`);
3535
}
3636

37+
credentialsAvailable() {
38+
return this.iamCredentials !== undefined;
39+
}
40+
3741
getIAM(): DeepReadonly<IamCredentials> {
3842
if (!this.iamCredentials) {
3943
throw new Error('IAM credentials not configured');

src/document/DocumentManager.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { Telemetry } from '../telemetry/TelemetryDecorator';
88
import { Delayer } from '../utils/Delayer';
99
import { CloudFormationFileType, Document, DocumentType } from './Document';
1010
import { DocumentMetadata } from './DocumentProtocol';
11+
import { byteSize } from '../utils/String';
1112

1213
export class DocumentManager implements SettingsConfigurable {
1314
private readonly log = LoggerFactory.getLogger(DocumentManager);
@@ -154,6 +155,9 @@ export class DocumentManager implements SettingsConfigurable {
154155
this.telemetry.registerGaugeProvider(`documents.open.extension.type.${ext}`, () =>
155156
this.countDocumentsByExtension(ext),
156157
);
158+
this.telemetry.registerGaugeProvider(`documents.size.extension.type.${ext}`, () =>
159+
this.getTotalSizeByExtension(ext),
160+
);
157161
}
158162
}
159163

@@ -168,4 +172,10 @@ export class DocumentManager implements SettingsConfigurable {
168172
private countDocumentsByExtension(extension: string): number {
169173
return [...this.documentMap.values()].filter((doc) => doc.isTemplate() && doc.extension === extension).length;
170174
}
175+
176+
private getTotalSizeByExtension(extension: string): number {
177+
return [...this.documentMap.values()]
178+
.filter((doc) => doc.isTemplate() && doc.extension === extension)
179+
.reduce((total, doc) => total + byteSize(doc.getText()), 0);
180+
}
171181
}

src/schema/GetSchemaTask.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { DescribeTypeOutput } from '@aws-sdk/client-cloudformation';
22
import { Logger } from 'pino';
3+
import { AwsCredentials } from '../auth/AwsCredentials';
34
import { DataStore } from '../datastore/DataStore';
45
import { CfnService } from '../services/CfnService';
56
import { Measure } from '../telemetry/TelemetryDecorator';
@@ -98,6 +99,10 @@ export function getRemotePublicSchemas(region: AwsRegion) {
9899
return unZipFile(downloadFile(cfnResourceSchemaLink(region)));
99100
}
100101

101-
export function getRemotePrivateSchemas(cfnService: CfnService) {
102-
return cfnService.getAllPrivateResourceSchemas();
102+
export function getRemotePrivateSchemas(awsCredentials: AwsCredentials, cfnService: CfnService) {
103+
if (awsCredentials.credentialsAvailable()) {
104+
return cfnService.getAllPrivateResourceSchemas();
105+
}
106+
107+
return Promise.resolve([]);
103108
}

src/server/CfnExternal.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ export class CfnExternal implements Configurables, Closeable {
4646
this.schemaTaskManager =
4747
overrides.schemaTaskManager ??
4848
new GetSchemaTaskManager(this.schemaStore, getRemotePublicSchemas, () => {
49-
return getRemotePrivateSchemas(this.cfnService);
49+
return getRemotePrivateSchemas(core.awsCredentials, this.cfnService);
5050
});
5151
this.schemaRetriever =
5252
overrides.schemaRetriever ?? new SchemaRetriever(this.schemaTaskManager, this.schemaStore);

src/telemetry/README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,8 @@ initializationOptions: {
5858
}
5959
...
6060
```
61+
62+
Your LSP client controls telemetry settings. Consult your LSP client's documentation for configuration options. Changes require restarting the language server to take effect.
63+
6164
* **Alpha environment**: Telemetry is enabled by default if no initialization parameter is provided
6265
* **Beta and Production environments**: Telemetry is disabled by default if no initialization parameter is provided
63-
64-
Your LSP client application controls telemetry settings. Consult your LSP client's documentation for configuration options. Changes require restarting the language server to take effect.

src/utils/String.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,8 @@ export function isStringABoolean(value: string): boolean {
3737
export function stringToBoolean(value: string): boolean {
3838
return value.trim().toLowerCase() === 'true';
3939
}
40+
41+
export function byteSize(str: string) {
42+
const bytes: Uint8Array = new TextEncoder().encode(str);
43+
return bytes.length;
44+
}

0 commit comments

Comments
 (0)