Skip to content

Commit

Permalink
feat: add tracker for staging environment
Browse files Browse the repository at this point in the history
  • Loading branch information
red8paw committed Dec 19, 2024
1 parent 169cb78 commit 5836ef0
Show file tree
Hide file tree
Showing 5 changed files with 28 additions and 17 deletions.
3 changes: 2 additions & 1 deletion packages/waypoint/headless/action/backup-shard.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import { bytesToBase64 } from "../utils/convertor"
import { encryptShard } from "./encrypt-shard"
import { getSecretFromShard } from "./get-address"
import { decodeAuthenticateData, sendAuthenticate } from "./helpers/authenticate"
import { checkWeakBk } from "./helpers/check-weak-bk"
import { createFrameQueue, openSocket } from "./helpers/open-socket"

export type BackupShardParams = {
Expand Down Expand Up @@ -136,7 +137,7 @@ export const backupShard = async (params: BackupShardParams): Promise<string> =>
try {
const result = await _backupShard(params)
tracker.trackOk({
request: { isWeakSecurity: recoveryPassword === "" },
request: { isWeakBk: checkWeakBk(recoveryPassword) },
})

return result
Expand Down
15 changes: 13 additions & 2 deletions packages/waypoint/headless/action/decrypt-shard.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import { bytesToString, concatBytes } from "viem"

import { HeadlessClientError, HeadlessClientErrorCode } from "../error/client"
import { createTracker, HeadlessEventName } from "../track/track"
import { base64ToBytes } from "../utils/convertor"
import { IV_LENGTH_BYTE, TAG_LENGTH_BYTE } from "./encrypt-shard"
import { checkWeakBk } from "./helpers/check-weak-bk"
import { deriveKey } from "./helpers/key"

const unpackEncryptedContent = (
Expand Down Expand Up @@ -45,9 +47,15 @@ export type DecryptShardParams = {
}

export const decryptShard = async (params: DecryptShardParams) => {
try {
const { waypointToken, recoveryPassword, encryptedData } = params
const { waypointToken, recoveryPassword, encryptedData } = params
const tracker = createTracker({
event: HeadlessEventName.decryptShard,
waypointToken,
// * decrypt function is not environment dependent - always track as production
productionFactor: true,
})

try {
const v1PackedContent = getV1PackedContent(encryptedData)
const { authTag, cipherText, iv } = unpackEncryptedContent(v1PackedContent)

Expand All @@ -59,6 +67,9 @@ export const decryptShard = async (params: DecryptShardParams) => {
)
const shardInBase64 = bytesToString(new Uint8Array(shardInBytes))

tracker.trackOk({
request: { isWeakBk: checkWeakBk(recoveryPassword) },
})
return shardInBase64
} catch (error) {
throw new HeadlessClientError({
Expand Down
3 changes: 2 additions & 1 deletion packages/waypoint/headless/action/encrypt-shard.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,8 @@ export type EncryptShardParams = {

clientShard: string
}

// ! DO NOT tracking on ecrypt shard
// * Already tracking on backup shard
export const encryptShard = async (params: EncryptShardParams) => {
try {
const { waypointToken, recoveryPassword, clientShard } = params
Expand Down
3 changes: 3 additions & 0 deletions packages/waypoint/headless/action/helpers/check-weak-bk.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export const checkWeakBk = (recoveryPassword: string) => {
return recoveryPassword === ""
}
21 changes: 8 additions & 13 deletions packages/waypoint/headless/track/track.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,12 @@ import { ASAccessTokenPayload, WaypointTokenPayload } from "../utils/token"

const CONTENT_TYPE = "application/json"
const TRACK_URL = "https://x.skymavis.com/track"
const AUTHORIZATION = "Basic ODZkMTNkMmYtYWFmYy00M2YyLWJhZDctNDI2NTBiYmJmZTJlOg=="
const AUTHORIZATION_PROD = "Basic ODZkMTNkMmYtYWFmYy00M2YyLWJhZDctNDI2NTBiYmJmZTJlOg=="
const AUTHORIZATION_STAG = "Basic ZDU1ODQyODYtOWIwYS00MzE3LWI3YjktOWRjOTQwNmFiMzJlOg=="

export enum HeadlessEventName {
backupShard = "backupShard",
decryptShard = "decryptShard",
keygen = "keygen",
personalSign = "personalSign",
signTypedData = "signTypedData",
Expand Down Expand Up @@ -76,9 +78,9 @@ type TrackEvent = {
data: TrackData
}

const track = (events: TrackEvent[]) => {
const track = (events: TrackEvent[], isProdEnv: boolean) => {
const headers = new Headers({})
headers.set("Authorization", AUTHORIZATION)
headers.set("Authorization", isProdEnv ? AUTHORIZATION_PROD : AUTHORIZATION_STAG)
headers.set("Content-Type", CONTENT_TYPE)
headers.set("Accept", CONTENT_TYPE)

Expand Down Expand Up @@ -162,6 +164,7 @@ type CreateTrackerParams = {
export const createTracker = (params: CreateTrackerParams) => {
const { event, waypointToken, wasmUrl = "", productionFactor = false } = params
const startTime = performance.now()
const isProdEnv = isProd(productionFactor)

const _getCommonData = () => {
const endTime = performance.now()
Expand Down Expand Up @@ -199,10 +202,6 @@ export const createTracker = (params: CreateTrackerParams) => {
}

const trackOk = (okProperties: OkProperties) => {
if (!isProd(productionFactor)) {
return
}

try {
const { commonActionProperties, ...restCommonData } = _getCommonData()
const { request, response } = okProperties
Expand All @@ -222,17 +221,13 @@ export const createTracker = (params: CreateTrackerParams) => {
data: trackData,
}

track([trackEvent])
track([trackEvent], isProdEnv)
} catch (error) {
/* empty */
}
}

const trackError = (error: unknown) => {
if (!isProd(productionFactor)) {
return
}

try {
const { commonActionProperties, ...restCommonData } = _getCommonData()
const errorProperties = toErrorProperties(error)
Expand All @@ -250,7 +245,7 @@ export const createTracker = (params: CreateTrackerParams) => {
data: trackData,
}

track([trackEvent])
track([trackEvent], isProdEnv)
} catch (error) {
/* empty */
}
Expand Down

0 comments on commit 5836ef0

Please sign in to comment.