Skip to content

Commit 344fd10

Browse files
committed
Add some console logs to print network times for each API request
1 parent b959a7a commit 344fd10

File tree

4 files changed

+14
-0
lines changed

4 files changed

+14
-0
lines changed

packages/cli-kit/src/private/node/api.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import {sanitizedHeadersOutput} from './api/headers.js'
22
import {sanitizeURL} from './api/urls.js'
3+
import {startHRTime} from '@shopify/cli-kit/node/hrtime'
34
import {outputDebug} from '@shopify/cli-kit/node/output'
45
import {Headers} from 'form-data'
56
import {ClientError} from 'graphql-request'
@@ -53,7 +54,9 @@ async function makeVerboseRequest<T extends {headers: Headers; status: number}>(
5354
const sanitizedUrl = sanitizeURL(url)
5455
let response: T = {} as T
5556
try {
57+
const start = startHRTime()
5658
response = await request()
59+
// console.log(`${endHRTimeInMs(start)}ms - Network: ${outputContent`${outputToken.magenta(url)}`.value}`)
5760
// eslint-disable-next-line @typescript-eslint/no-explicit-any
5861
response.headers.forEach((value: any, key: any) => {
5962
if (responseHeaderIsInteresting(key)) responseHeaders[key] = value

packages/cli-kit/src/private/node/session/validate.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {sessionConstants} from '../constants.js'
66
import {outputDebug} from '../../../public/node/output.js'
77
import {firstPartyDev} from '../../../public/node/context/local.js'
88
import {OAuthApplications} from '../session.js'
9+
import {endHRTimeInMs, startHRTime} from '@shopify/cli-kit/node/hrtime'
910

1011
type ValidationResult = 'needs_refresh' | 'needs_full_auth' | 'ok'
1112

@@ -35,7 +36,9 @@ export async function validateSession(
3536
): Promise<ValidationResult> {
3637
if (!session) return 'needs_full_auth'
3738
const scopesAreValid = validateScopes(scopes, session.identity)
39+
const start = startHRTime()
3840
const identityIsValid = await validateIdentityToken(session.identity.accessToken)
41+
console.log(`${endHRTimeInMs(start)}ms - Auth: Identity token introspection (${identityIsValid ? 'OK' : 'FAILED'})`)
3942
if (!scopesAreValid) return 'needs_full_auth'
4043
let tokensAreExpired = isTokenExpired(session.identity)
4144

packages/cli-kit/src/public/node/analytics.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ export async function reportAnalyticsEvent(options: ReportAnalyticsEventOptions)
4949
withinRateLimit = true
5050
},
5151
})
52+
console.log('All network time:', payload.public.cmd_all_timing_network_ms)
5253
if (!withinRateLimit) {
5354
outputDebug(outputContent`Skipping command analytics due to rate limiting, payload: ${outputToken.json(payload)}`)
5455
return

packages/cli-kit/src/public/node/api/graphql.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import {debugLogRequestInfo, errorHandler} from '../../../private/node/api/graph
33
import {addPublicMetadata, runWithTimer} from '../metadata.js'
44
import {retryAwareRequest} from '../../../private/node/api.js'
55
import {requestIdsCollection} from '../../../private/node/request-ids.js'
6+
import {endHRTimeInMs, startHRTime} from '../hrtime.js'
7+
import {outputContent, outputToken} from '../output.js'
68
import {
79
GraphQLClient,
810
rawRequest,
@@ -75,8 +77,13 @@ async function performGraphQLRequest<TResult>(options: PerformGraphQLRequestOpti
7577
// there is a errorPolicy option which returns rather than throwing on errors, but we _do_ ultimately want to
7678
// throw.
7779
try {
80+
const time = startHRTime()
7881
fullResponse = await client.rawRequest<TResult>(queryAsString, variables)
7982
await logLastRequestIdFromResponse(fullResponse)
83+
const firstLine = queryAsString.split('\n')[0] ?? ''
84+
const secondLine = queryAsString.split('\n')[1] ?? ''
85+
const validLine = firstLine.includes('query') ? firstLine : secondLine
86+
console.log(`${endHRTimeInMs(time)}ms - Network: ${outputContent`${outputToken.yellow(validLine)}`.value}`)
8087
return fullResponse
8188
} catch (error) {
8289
if (error instanceof ClientError) {

0 commit comments

Comments
 (0)