Skip to content

Commit be916a1

Browse files
committed
moved reporting into global container for monorail events
1 parent fc54a46 commit be916a1

File tree

5 files changed

+29
-25
lines changed

5 files changed

+29
-25
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@shopify/cli-kit': patch
3+
---
4+
5+
Fix theme event reporting for monorail

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

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import {isUnitTest} from './context/local.js'
22
import {performance} from 'node:perf_hooks'
33
import type {PickByPrefix} from '../common/ts/pick-by-prefix.js'
44
import type {AnyJson} from '../../private/common/json.js'
5-
import type {MonorailEventPublic} from './monorail.js'
5+
import type {MonorailEventPublic, MonorailEventSensitive} from './monorail.js'
66

77
type ProvideMetadata<T> = () => Partial<T> | Promise<Partial<T>>
88

@@ -175,11 +175,13 @@ export function createRuntimeMetadataContainer<
175175
}
176176
}
177177

178-
// We want to track anything that ends up getting sent to monorail as `cmd_all_*` and
179-
// `cmd_app_*`
178+
// We want to track anything that ends up getting sent to monorail as `cmd_all_*`,
179+
// `cmd_app_*`, `cmd_theme_*`, and `store_*`
180180
type CmdFieldsFromMonorail = PickByPrefix<MonorailEventPublic, 'cmd_all_'> &
181181
PickByPrefix<MonorailEventPublic, 'cmd_app_'> &
182-
PickByPrefix<MonorailEventPublic, 'cmd_create_app_'>
182+
PickByPrefix<MonorailEventPublic, 'cmd_create_app_'> &
183+
PickByPrefix<MonorailEventPublic, 'cmd_theme_'> &
184+
PickByPrefix<MonorailEventPublic, 'store_'>
183185

184186
const coreData = createRuntimeMetadataContainer<
185187
CmdFieldsFromMonorail,
@@ -190,7 +192,7 @@ const coreData = createRuntimeMetadataContainer<
190192
startTopic?: string
191193
startArgs: string[]
192194
}
193-
} & {environmentFlags: string}
195+
} & {environmentFlags: string} & PickByPrefix<MonorailEventSensitive, 'store_'>
194196
>({cmd_all_timing_network_ms: 0, cmd_all_timing_prompts_ms: 0})
195197

196198
export const {getAllPublicMetadata, getAllSensitiveMetadata, addPublicMetadata, addSensitiveMetadata, runWithTimer} =

packages/theme/src/cli/commands/theme/info.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {globalFlags, jsonFlag} from '@shopify/cli-kit/node/cli'
88
import {outputResult} from '@shopify/cli-kit/node/output'
99
import {renderInfo} from '@shopify/cli-kit/node/ui'
1010
import {OutputFlags} from '@oclif/core/interfaces'
11+
import {recordTiming} from '@shopify/cli-kit/node/analytics'
1112

1213
type InfoFlags = OutputFlags<typeof Info.flags>
1314

@@ -34,6 +35,7 @@ export default class Info extends ThemeCommand {
3435
static multiEnvironmentsFlags = ['store', 'password']
3536

3637
async command(flags: InfoFlags, adminSession: AdminSession): Promise<void> {
38+
recordTiming('theme-command:info')
3739
if (flags.theme || flags.development) {
3840
const output = await fetchThemeInfo(adminSession, flags)
3941
if (!output) {
@@ -50,5 +52,6 @@ export default class Info extends ThemeCommand {
5052
const infoMessage = await fetchDevInfo({cliVersion: this.config.version})
5153
renderInfo({customSections: infoMessage})
5254
}
55+
recordTiming('theme-command:info')
5356
}
5457
}

packages/theme/src/cli/metadata.ts

Lines changed: 0 additions & 13 deletions
This file was deleted.

packages/theme/src/cli/utilities/theme-command.ts

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import {ensureThemeStore} from './theme-store.js'
22
import {configurationFileName} from '../constants.js'
3-
import metadata from '../metadata.js'
43
import {useThemeStoreContext} from '../services/local-storage.js'
54
import {hashString} from '@shopify/cli-kit/node/crypto'
65
import {Input} from '@oclif/core/interfaces'
@@ -15,7 +14,8 @@ import {
1514
renderError,
1615
} from '@shopify/cli-kit/node/ui'
1716
import {AbortController} from '@shopify/cli-kit/node/abort'
18-
import {recordEvent} from '@shopify/cli-kit/node/analytics'
17+
import {recordEvent, compileData} from '@shopify/cli-kit/node/analytics'
18+
import {addPublicMetadata, addSensitiveMetadata} from '@shopify/cli-kit/node/metadata'
1919
import type {Writable} from 'stream'
2020

2121
export interface FlagValues {
@@ -93,6 +93,7 @@ export default abstract class ThemeCommand extends Command {
9393
recordEvent(`theme-command:${commandName}:single-env:authenticated`)
9494

9595
await this.command(flags, session)
96+
await this.logAnalyticsData(session)
9697
return
9798
}
9899

@@ -288,7 +289,7 @@ export default abstract class ThemeCommand extends Command {
288289
const store = flags.store as string
289290
const password = flags.password as string
290291
const session = await ensureAuthenticatedThemes(ensureThemeStore({store}), password)
291-
await this.logStoreMetadata(session)
292+
await this.logAnalyticsData(session)
292293

293294
return session
294295
}
@@ -322,12 +323,18 @@ export default abstract class ThemeCommand extends Command {
322323
return true
323324
}
324325

325-
private async logStoreMetadata(session: AdminSession): Promise<void> {
326-
await metadata.addPublicMetadata(() => ({
326+
private async logAnalyticsData(session: AdminSession): Promise<void> {
327+
const data = compileData()
328+
329+
await addPublicMetadata(() => ({
327330
store_fqdn_hash: hashString(session.storeFqdn),
328-
}))
329331

330-
await metadata.addSensitiveMetadata(() => ({
332+
cmd_theme_timings: JSON.stringify(data.timings),
333+
cmd_theme_errors: JSON.stringify(data.errors),
334+
cmd_theme_retries: JSON.stringify(data.retries),
335+
cmd_theme_events: JSON.stringify(data.events),
336+
}))
337+
await addSensitiveMetadata(() => ({
331338
store_fqdn: session.storeFqdn,
332339
}))
333340
}

0 commit comments

Comments
 (0)