o11y 266.23.0 → 266.24.0

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.
@@ -579,19 +579,19 @@ class LogValidator {
579
579
  const schemaId = schemaUtil.getSchemaId(schema);
580
580
  const errorInfos = new Array();
581
581
  const nestedSchema = schemaUtil.getTypes(schema);
582
- this._validateFields(errorInfos, [], data, nestedSchema[schemaTokens.message], nestedSchema, schemaId);
582
+ this._validateFields(errorInfos, [], data, nestedSchema[schemaTokens.message], schema.pbjsSchema.nested, schemaId, [schemaTokens.domain, schemaTokens.feature, schemaTokens.message]);
583
583
  if (errorInfos.length && !noThrow) {
584
584
  throw new Error(errorInfos[0].asMessage(schemaId));
585
585
  }
586
586
  return errorInfos;
587
587
  }
588
- _validateFields(errorInfos, fieldNames, data, message, descriptor, schemaId) {
588
+ _validateFields(errorInfos, fieldNames, data, message, descriptor, schemaId, scope) {
589
589
  const oneofs = message.oneofs || {};
590
590
  const fields = message.fields || {};
591
591
  for (const key in data) {
592
592
  const value = data[key];
593
593
  if (value !== undefined && value !== null) {
594
- const mft = (fieldType, isRepeated, isItem) => this._matchFieldTypes(errorInfos, [...fieldNames, key], value, fieldType, descriptor, schemaId, key, isRepeated, isItem);
594
+ const mft = (fieldType, isRepeated, isItem) => this._matchFieldTypes(errorInfos, [...fieldNames, key], value, fieldType, descriptor, schemaId, scope, isRepeated, isItem);
595
595
  if (oneofs[key]) {
596
596
  mft(fields[oneofs[key].oneof[0]].type);
597
597
  }
@@ -601,7 +601,7 @@ class LogValidator {
601
601
  }
602
602
  }
603
603
  }
604
- _matchFieldTypes(errorInfos, fieldNames, fieldDataValue, protobufType, descriptor, schemaId, key, isRepeated, isItem) {
604
+ _matchFieldTypes(errorInfos, fieldNames, fieldDataValue, protobufType, descriptor, schemaId, scope, isRepeated, isItem) {
605
605
  let errorCode;
606
606
  if (isRepeated) {
607
607
  if (Array.isArray(fieldDataValue)) {
@@ -609,7 +609,7 @@ class LogValidator {
609
609
  errorCode = 7;
610
610
  }
611
611
  fieldDataValue.forEach((value, index) => {
612
- this._matchFieldTypes(errorInfos, [...fieldNames, index.toString()], value, protobufType, descriptor, schemaId, key, undefined, true);
612
+ this._matchFieldTypes(errorInfos, [...fieldNames, index.toString()], value, protobufType, descriptor, schemaId, scope, undefined, true);
613
613
  });
614
614
  }
615
615
  else {
@@ -624,6 +624,7 @@ class LogValidator {
624
624
  else {
625
625
  let numOpts;
626
626
  let javaScriptType;
627
+ let enumValues;
627
628
  switch (protobufType) {
628
629
  case 'string':
629
630
  javaScriptType = 'string';
@@ -692,12 +693,39 @@ class LogValidator {
692
693
  isItem
693
694
  };
694
695
  break;
695
- default:
696
- if (new Set(Object.keys(descriptor)).has(protobufType)) {
697
- this._validateFields(errorInfos, fieldNames, fieldDataValue, descriptor[protobufType], descriptor, schemaId);
696
+ default: {
697
+ const absolute = protobufType.startsWith('.');
698
+ const typePath = (absolute ? protobufType.slice(1) : protobufType).split('.');
699
+ let resolved;
700
+ let resolvedScope;
701
+ for (let depth = absolute ? 0 : scope.length; depth >= 0; depth--) {
702
+ resolvedScope = [...scope.slice(0, depth), ...typePath];
703
+ let nested = descriptor;
704
+ resolved = undefined;
705
+ for (const part of resolvedScope) {
706
+ resolved = nested === null || nested === void 0 ? void 0 : nested[part];
707
+ nested = resolved && 'nested' in resolved ? resolved.nested : undefined;
708
+ }
709
+ if (resolved) {
710
+ break;
711
+ }
712
+ }
713
+ if (resolved && 'values' in resolved) {
714
+ javaScriptType = 'number';
715
+ enumValues = Object.values(resolved.values);
716
+ numOpts = {
717
+ min: minFourBytes,
718
+ max: maxFourBytes,
719
+ isInt: true,
720
+ isItem
721
+ };
722
+ }
723
+ else if (resolved && 'fields' in resolved) {
724
+ this._validateFields(errorInfos, fieldNames, fieldDataValue, resolved, descriptor, schemaId, resolvedScope);
698
725
  javaScriptType = 'object';
699
726
  }
700
727
  break;
728
+ }
701
729
  }
702
730
  if (typeof fieldDataValue !== javaScriptType) {
703
731
  errorInfos.push(new ValidationEntry(2, fieldNames, protobufType, typeof fieldDataValue));
@@ -713,6 +741,9 @@ class LogValidator {
713
741
  !(fieldDataValue >= numOpts.min && fieldDataValue <= numOpts.max)) {
714
742
  errorCode = 4;
715
743
  }
744
+ else if (enumValues && !enumValues.includes(fieldDataValue)) {
745
+ errorCode = 4;
746
+ }
716
747
  }
717
748
  }
718
749
  if (errorCode) {
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sources":["../../../../src/shared/Utility.ts","../../../../src/shared/UpCounterImpl.ts","../../../../src/shared/Co11yImpl.ts","../../../../src/shared/LazyMapToList.ts","../../../../src/shared/SchemaUtil.ts","../../../../src/shared/LogValidator.ts","../../../../src/shared/MetricsUtility.ts","../../../../src/shared/PayloadUtility.ts","../../../../src/shared/PublicSafety.ts"],"sourcesContent":["import { AllowedOrigins, Activity } from '../interfaces';\nimport { ObjectType } from './TypeDefinitions';\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Navigator/connection\ntype NavigatorWithConnection = {\n readonly connection: {\n readonly effectiveType: string;\n };\n};\n\nclass Utility {\n // We are now in production by default, unless told otherwise.\n // This is to prevent exceptions that may occur before initialization.\n private static _isProduction = true;\n\n public readonly notImplemented = 'Method not implemented.';\n public readonly perfNow: () => number;\n public readonly time: () => { tsNow: number; perfNow: number; timeOrigin: number };\n private readonly _timeOrigin: number;\n\n constructor() {\n const performanceExists = typeof performance !== 'undefined';\n if (performanceExists) {\n if (performance.timeOrigin) {\n this._timeOrigin = performance.timeOrigin;\n } else {\n // if we don't have any start time, we consider our init to be the time origin\n this._timeOrigin = Date.now();\n }\n } else {\n this._timeOrigin = Date.now();\n }\n\n const timeOrigin = this._timeOrigin;\n if (performanceExists && typeof performance.now === 'function') {\n this.perfNow = performance.now.bind(performance);\n this.time = () => {\n const perfNow = this.perfNow();\n return { tsNow: timeOrigin + perfNow, perfNow, timeOrigin };\n };\n } else {\n this.perfNow = () => {\n return Date.now() - timeOrigin;\n };\n this.time = () => {\n const perfNow = this.perfNow();\n return { tsNow: Date.now(), perfNow, timeOrigin };\n };\n }\n }\n\n public get isProduction(): boolean {\n return Utility._isProduction;\n }\n\n public markProduction(value?: boolean): void {\n Utility._isProduction = value ?? true;\n }\n\n // Returns false if check fails\n // if argKind is a string, uses typeof.\n // if argKind is a function, such as String, Number, HTMLElement, uses instanceof.\n // if argKind is an array, expects at least one of the element types to match.\n private _checkArgument<T>(argument: T, argKind: unknown): boolean {\n if (typeof argKind === 'string') {\n return typeof argument === argKind;\n }\n if (typeof argKind === 'function') {\n return argument instanceof argKind;\n }\n if (Array.isArray(argKind)) {\n return argKind.some((arg) => this._checkArgument(argument, arg));\n }\n throw new Error(`Invalid argKind ${argKind}`);\n }\n\n public requireArgument<T>(argument: T, argumentName: string, argKind?: unknown): void {\n let disallowed =\n argument === undefined || argument === null || (argument as unknown) === '';\n const kindSpecified = argKind !== undefined;\n\n if (!disallowed && kindSpecified) {\n disallowed = !this._checkArgument(argument, argKind);\n }\n\n if (disallowed) {\n throw new Error(\n `${argumentName} argument is required${\n kindSpecified ? ' and must be of a supported type.' : '.'\n }`\n );\n }\n }\n\n public requireArgumentIfDefined<T>(\n argument: T,\n argumentName: string,\n argKind: unknown\n ): boolean {\n if (argument === undefined) {\n return false;\n }\n const disallowed =\n argument === null ||\n (argument as unknown) === '' ||\n !this._checkArgument(argument, argKind);\n\n if (disallowed) {\n throw new Error(`${argumentName} argument, if defined, must be of a supported type.`);\n }\n\n return true;\n }\n\n public checkForDenyListedValues<T>(\n argument: T,\n argumentName: string,\n denyList: ReadonlyArray<T>\n ): void {\n if (denyList.some((x) => argument === x)) {\n throw new Error(`The value ${argument} isn't allowed for ${argumentName} argument.`);\n }\n }\n\n public checkForReservedCharacters(\n argument: string,\n argumentName: string,\n reservedChars: ReadonlyArray<string>\n ): void {\n if (argument && reservedChars.some((c) => argument.indexOf(c) >= 0)) {\n throw new Error(\n `The argument ${argumentName} isn't allowed to contain characters from ['${reservedChars.join(\n ', '\n )}']. Received: ${argument}.`\n );\n }\n }\n\n public generateUniqueId(length = 16): string {\n const chars: string[] = [];\n const digits = '0123456789abcdef';\n if (!(length === undefined || length > 0)) {\n throw new Error('If specified, the argument \"length\" must be a positive integer');\n }\n for (let i = 0; i < length; i++) {\n const rand = Math.floor(Math.random() * 16);\n chars.push(digits[rand]);\n }\n return chars.join('');\n }\n\n public getXpath(_element: HTMLElement): string {\n //if the element has siblings with the same type we should return 1, otherwise not\n function hasSameSibs(elm: Element): boolean {\n const name = elm.localName;\n while (elm.nextElementSibling) {\n elm = elm.nextElementSibling;\n if (elm.localName === name) {\n return true;\n }\n }\n return false;\n }\n function idx(sib: Element, name?: string): number {\n //we want to count the siblings of the same type for the xpath, otherwise it is just 1\n if (sib) {\n return (\n idx(sib.previousElementSibling, name || sib.localName) +\n (sib.localName === name ? 1 : 0)\n );\n }\n return 1;\n }\n function segs(elm: HTMLElement): string[] {\n // only run for element nodes\n if (!elm || elm.nodeType !== 1) {\n return [''];\n }\n //only add the number if it is over 1, or if it the first of siblings\n const nodeValue =\n idx(elm) > 1 || hasSameSibs(elm)\n ? `${elm.localName.toLowerCase()}[${idx(elm)}]`\n : elm.localName.toLowerCase();\n //go up and add the element at the end of the path\n return [...segs(elm.parentNode as HTMLElement), nodeValue];\n }\n //concat at the end\n return segs(_element).join('/');\n }\n\n public getAge(timestamp: number): number {\n return timestamp - this._timeOrigin;\n }\n\n // Reads the `navigator` global defensively. VS Code 1.129+ makes `navigator` a\n // NodeJS extension-host global that throws on access (W-24059841); even\n // `typeof navigator` throws, because it evaluates the getter. Any read must be\n // wrapped in try/catch and degrade to `undefined` when navigator is unavailable.\n private _getNavigatorSafe(): Navigator | undefined {\n try {\n return typeof navigator !== 'undefined' ? navigator : undefined;\n } catch {\n return undefined;\n }\n }\n\n private _hasEffectiveConnectionType(value: unknown): value is NavigatorWithConnection {\n if (typeof value !== 'object' || value === null || !('connection' in value)) {\n return false;\n }\n\n const connection = value.connection;\n return (\n typeof connection === 'object' &&\n connection !== null &&\n 'effectiveType' in connection &&\n typeof connection.effectiveType === 'string'\n );\n }\n\n public getConnectionType(): string | undefined {\n const nav = this._getNavigatorSafe();\n\n return this._hasEffectiveConnectionType(nav) ? nav.connection.effectiveType : undefined;\n }\n\n public clone<T>(value: T): T {\n return JSON.parse(JSON.stringify(value));\n }\n\n public definedValueOrDefault<T>(value: T, defaultValue: T): T {\n return value !== undefined ? value : defaultValue;\n }\n\n public getGlobal(): typeof globalThis {\n if (typeof globalThis === 'object') {\n return globalThis;\n }\n if (typeof self === 'object') {\n return self;\n }\n throw new Error('Unable to locate globalThis or self');\n }\n\n public getIsBeaconSupported(): boolean {\n const g = this.getGlobal();\n const nav = this._getNavigatorSafe();\n return typeof nav?.sendBeacon === 'function' && typeof g.Blob === 'function';\n }\n\n public estimateObjectSize(object: unknown): number {\n const objectSet = new Set<ObjectType>();\n const stack: Array<unknown> = [object];\n let bytes = 0;\n\n while (stack.length) {\n const value: unknown = stack.pop();\n if (typeof value === 'boolean') {\n bytes += 4;\n } else if (typeof value === 'string') {\n bytes += value.length * 2;\n } else if (typeof value === 'number') {\n bytes += 8;\n } else if (\n value instanceof Uint8Array ||\n value instanceof Uint8ClampedArray ||\n value instanceof Uint16Array ||\n value instanceof Uint32Array ||\n value instanceof Int8Array ||\n value instanceof Int16Array ||\n value instanceof Int32Array ||\n value instanceof Float32Array ||\n value instanceof Float64Array\n ) {\n bytes += value.byteLength;\n } else if (typeof value === 'object') {\n const obj: ObjectType = value as ObjectType;\n if (!objectSet.has(obj)) {\n objectSet.add(obj);\n for (const key in obj) {\n stack.push(obj[key]);\n }\n }\n }\n }\n return bytes;\n }\n\n // swallows exceptions on production.\n // Ensure that code that follows this call is a proper no-op.\n noProdThrow(e: unknown): void | never {\n if (utility.isProduction) {\n return;\n }\n throw e;\n }\n\n isAllowedOrigin(input: string, allowed: AllowedOrigins): boolean {\n return (\n Array.isArray(allowed) &&\n allowed.some(\n (origin) =>\n origin === '*' ||\n input === origin ||\n (origin instanceof RegExp && origin.test(input))\n )\n );\n }\n\n roundNumber(value: number, decimals: number): number {\n const pow = Math.pow(10, decimals);\n return Math.round(value * pow) / pow;\n }\n\n roundNumbersInObject(obj: ObjectType, decimals: number): void {\n if (obj) {\n Object.entries(obj).forEach(([key, value]) => {\n if (typeof value === 'number') {\n obj[key] = this.roundNumber(value, decimals);\n }\n });\n }\n }\n\n // Attempts to convert a relative URL to an absolute URL, returns the input value as-is if it can't.\n tryGetAbsoluteUrl(url: string): string {\n if (url?.startsWith('//') && typeof window === 'object') {\n return (window.location.protocol ?? '') + url;\n } else if (url?.startsWith('/') && typeof window === 'object') {\n return (window.location.origin ?? '') + url;\n }\n return url;\n }\n\n /**\n * Validates that a parent activity matches the expected external/internal type.\n * External activities should only have external parents, internal activities should only have internal parents.\n *\n * @param isExternal - Whether the current activity is external (undefined is treated as false)\n * @param parentActivity - The parent activity to validate\n * @returns The parent activity if it matches the expected type, undefined otherwise\n */\n validateParentActivityType(\n isExternal: boolean | undefined,\n parentActivity: Activity | null | undefined\n ): Activity | undefined {\n const activityIsExternal = isExternal ?? false;\n\n if (!parentActivity) {\n return undefined;\n }\n\n const parentIsExternal = parentActivity.isExternal();\n\n if (activityIsExternal === parentIsExternal) {\n return parentActivity;\n } else {\n const currentType = activityIsExternal ? 'external' : 'internal';\n const parentType = parentIsExternal ? 'external' : 'internal';\n throw new Error(\n `Parent activity type mismatch: ${currentType} activity cannot have ${parentType} parent.`\n );\n }\n }\n}\n\nconst _utility = new Utility();\nconst global: Record<string, unknown> = _utility.getGlobal();\n_utility.markProduction(global?.__O11Y_IS_PROD__ as boolean | undefined);\n\nexport const utility = Object.freeze(_utility);\n","import { Metric } from '../interfaces/Metric';\nimport { UpCounter } from '../interfaces/UpCounter';\nimport { utility } from './Utility';\nimport type { MetricsTags } from './TypeDefinitions';\n\nexport class UpCounterImpl implements Metric<number>, UpCounter {\n private readonly _createdOn: number;\n private _lastUpdatedOn: number;\n private _value = 0;\n\n constructor(\n private readonly _name: string,\n private readonly _ownerName: string,\n private readonly _ownerAppName: string,\n private readonly _tags: MetricsTags,\n createdOn?: number,\n lastUpdatedOn?: number,\n value?: number\n ) {\n this._createdOn = createdOn === undefined ? utility.time().tsNow : createdOn;\n if (lastUpdatedOn !== undefined) {\n this._lastUpdatedOn = lastUpdatedOn;\n }\n if (value !== undefined) {\n this._value = value;\n }\n }\n\n getName(): string {\n return this._name;\n }\n\n getCreatedOn(): number {\n return this._createdOn;\n }\n\n getLastUpdatedOn(): number {\n return this._lastUpdatedOn;\n }\n\n getData(): number {\n return this._value;\n }\n\n increment(value = 1): void {\n if (typeof value === 'number' && value > 0) {\n this._value += Math.round(value);\n this._lastUpdatedOn = utility.time().tsNow;\n return;\n }\n\n throw new Error('UpCounter can only increment positive numbers.');\n }\n\n reset(): void {\n this._lastUpdatedOn = undefined;\n this._value = 0;\n }\n\n getOwnerName(): string {\n return this._ownerName;\n }\n\n getOwnerAppName(): string {\n return this._ownerAppName;\n }\n\n getTags(): Readonly<MetricsTags> {\n return this._tags;\n }\n}\n","// Note: Due to the intent of this class, it must not throw any exceptions.\n\nimport { BucketMetric, Co11y, Metric, MetricsReporter, OwnerName } from '../interfaces';\nimport { UpCounterImpl } from './UpCounterImpl';\nimport type { MetricsTags } from './TypeDefinitions';\n\ntype Status = 'success' | 'error';\n\nconst co11yName = 'co11y';\n\nexport class Co11yImpl implements Co11y, MetricsReporter {\n private readonly _upCounters = new Map<string, UpCounterImpl>();\n private _ownerAppName = co11yName;\n\n // This is a simplified version of the implementation in MetricsImpl.\n private _addOrUpdateCounter(operation: string, ownerName: OwnerName, status: Status): void {\n if (!operation) {\n return;\n }\n\n // These tags must be sorted\n const sortedTags: MetricsTags = { status };\n\n // The key must uniquely identify the metric\n const key = `${this._ownerAppName}:${ownerName}:${operation}${JSON.stringify(sortedTags)}`;\n\n let instrument = this._upCounters.get(key);\n if (!instrument) {\n instrument = new UpCounterImpl(operation, ownerName, this._ownerAppName, sortedTags);\n this._upCounters.set(key, instrument);\n }\n instrument.increment();\n }\n\n success(operation: string, ownerName: OwnerName): void {\n this._addOrUpdateCounter(operation, ownerName, 'success');\n }\n exception(operation: string, ownerName: OwnerName): void {\n this._addOrUpdateCounter(operation, ownerName, 'error');\n }\n getBucketHistograms(): BucketMetric<number[]>[] {\n return [];\n }\n getUpCounters(): Metric<number>[] {\n return Array.from(this._upCounters.values()).filter((m) => m.getLastUpdatedOn());\n }\n getValueRecorders(): Metric<number[]>[] {\n return [];\n }\n setOwnerAppName(ownerAppName: string): void {\n this._ownerAppName = ownerAppName;\n }\n}\n\nexport const co11y = new Co11yImpl();\n","export class LazyMapToList<Key, ElementType> {\n private readonly _lazyMap = new Map<Key, Array<ElementType>>();\n\n private _maxSize: number;\n constructor(maxSize?: number) {\n if (maxSize !== undefined) {\n if (typeof maxSize === 'number' && maxSize > 0) {\n this._maxSize = Math.ceil(maxSize);\n return;\n }\n throw new Error('maxSize must be a positive number');\n }\n }\n\n get maxSize(): number {\n return this._maxSize;\n }\n\n get size(): number {\n return this._lazyMap.size;\n }\n\n /**\n * Adds the value to the list specific to the key. If the list doesn't exist,\n * it will be lazily created as long as there are fewer keys than the max, if specified.\n *\n * @param key The key for the map\n * @param value The value to be added to the list\n */\n push(key: Key, value: ElementType): boolean {\n let buffer = this._lazyMap.get(key);\n if (!buffer) {\n if (this.maxSize !== undefined && this.size === this.maxSize) {\n return false;\n }\n buffer = new Array<ElementType>();\n this._lazyMap.set(key, buffer);\n }\n buffer.push(value);\n return true;\n }\n\n getMessages(key: Key, extract?: boolean): Array<ElementType> {\n const msgs = this._lazyMap.get(key);\n if (extract && this._lazyMap.has(key)) {\n this._lazyMap.set(key, []);\n }\n return msgs || [];\n }\n\n getAllMessages(extract?: boolean): Map<Key, Array<ElementType>> {\n const map = new Map<Key, Array<ElementType>>();\n for (const [key, value] of this._lazyMap.entries()) {\n if (value.length) {\n map.set(key, this.getMessages(key, extract));\n }\n }\n return map;\n }\n\n // Convenience functions for backwards compatibility\n extractMessages(key: Key): Array<ElementType> {\n return this.getMessages(key, true);\n }\n extractAllMessages(): Map<Key, Array<ElementType>> {\n return this.getAllMessages(true);\n }\n\n get totalItemCount(): number {\n let count = 0;\n for (const array of this._lazyMap.values()) {\n count += array.length;\n }\n return count;\n }\n}\n","import { IField, INamespace, IType, Schema, SchematizedPayload, SchemaTokens } from '../interfaces';\nimport {\n AnyNestedObject,\n PbjsNestedObjectDescriptor,\n ProtoOptions,\n SchematizedData\n} from './TypeDefinitions';\nimport { utility } from './Utility';\n\nclass SchemaUtil {\n public getSchemaId(schema: Schema): string {\n return `${schema.namespace}.${schema.name}`;\n }\n public isInternal(schema: Schema): boolean {\n return schema?.namespace === 'sf.instrumentation';\n }\n\n public makePayload(\n schema: Schema,\n data: SchematizedData,\n onlyIfBoth = true\n ): SchematizedPayload {\n if (!onlyIfBoth || (schema !== undefined && data !== undefined)) {\n return {\n schema,\n payload: data\n };\n }\n return undefined;\n }\n\n public checkSchema(schema: Schema): SchemaTokens {\n utility.requireArgument(schema, 'schema', 'object');\n utility.requireArgument(schema.namespace, 'schema.namespace', 'string');\n utility.requireArgument(schema.name, 'schema.name', 'string');\n utility.requireArgument(schema.pbjsSchema, 'schema.pbjsSchema', 'object');\n return this._getTokens(schema);\n }\n\n private _getTokens(schema: Schema): SchemaTokens {\n const parts: string[] = schema.namespace.split('.');\n if (parts.length !== 2) {\n throw new Error(\n `Schema \"${this.getSchemaId(\n schema\n )}\" must have a namespace of the form \"domain.feature\".`\n );\n }\n return {\n domain: parts[0],\n feature: parts[1],\n message: schema.name\n };\n }\n\n private _getAnyNestedObject(schema: Schema, scopes: string[]): AnyNestedObject {\n return scopes.reduce((prev: INamespace, currentScope: string) => {\n const descriptor: PbjsNestedObjectDescriptor = prev.nested;\n if (descriptor) {\n const ano: AnyNestedObject = descriptor[currentScope];\n if (ano) {\n return ano;\n }\n }\n throw new Error(\n `Cannot locate ${scopes.join('.')} in schema with ID ${this.getSchemaId(schema)}`\n );\n }, schema.pbjsSchema);\n }\n\n public getTypes(schema: Schema): PbjsNestedObjectDescriptor {\n const schemaTokens: SchemaTokens = this.checkSchema(schema);\n const namespace: INamespace = this._getAnyNestedObject(schema, [\n schemaTokens.domain,\n schemaTokens.feature\n ]);\n const descriptor: PbjsNestedObjectDescriptor = namespace.nested;\n if (!descriptor) {\n throw new Error(`Cannot parse schema with ID ${this.getSchemaId(schema)}`);\n }\n return descriptor;\n }\n\n public getType(schema: Schema, messageName: string): IType {\n utility.requireArgument(messageName, 'messageName', 'string');\n const descriptor: PbjsNestedObjectDescriptor = this.getTypes(schema);\n\n const message = descriptor[messageName] as IType;\n if (!message) {\n throw new Error(\n `Cannot locate message ${messageName} in schema with ID ${this.getSchemaId(schema)}`\n );\n }\n return message;\n }\n\n public getOptions(schema: Schema, messageName?: string, fieldName?: string): ProtoOptions {\n if (fieldName) {\n utility.requireArgument(messageName, 'messageName', 'string');\n }\n const schemaTokens: SchemaTokens = this.checkSchema(schema);\n\n if (!messageName) {\n const namespace: INamespace = this._getAnyNestedObject(schema, [\n schemaTokens.domain,\n schemaTokens.feature\n ]);\n return namespace.options;\n }\n\n const type: IType = this.getType(schema, messageName);\n if (!fieldName) {\n return type.options;\n }\n\n const field: IField = type.fields[fieldName];\n if (!field) {\n const schemaId = this.getSchemaId(schema);\n throw new Error(\n `Cannot locate field ${fieldName} in message ${messageName} in schema with ID ${schemaId}`\n );\n }\n return field.options;\n }\n\n public getExtraFields(schema: Schema, data: SchematizedData): string[] {\n const { message } = this._getTokens(schema);\n const types: PbjsNestedObjectDescriptor = this.getTypes(schema);\n // This assumes that the schema is flat\n const fields: Record<string, IField> = (types[message] as IType)['fields'];\n const fieldSet = new Set(Object.keys(fields));\n\n const extraFields =\n data !== null && data !== undefined\n ? Object.keys(data).filter((key) => !fieldSet.has(key))\n : [];\n return extraFields;\n }\n}\n\nexport const schemaUtil = new SchemaUtil();\n","import { IType, Schema, SchemaTokens } from '../interfaces';\nimport type {\n PbjsNestedObjectDescriptor,\n SchematizedData,\n SchematizedDataValue\n} from './TypeDefinitions';\nimport { schemaUtil } from './SchemaUtil';\nimport { utility } from './Utility';\n\n// These are hard-coded limits at the app-level. They may be overridden with a corresponding\n// option at the field level in the schema metadata.\nexport const maxStringLengthAppLimit = 10000; // For strings\nexport const maxItemCountAppLimit = 10000; // For arrays\n\nconst minUnsigned = 0;\nconst maxFourBytes = 2147483647;\nconst minFourBytes = -2147483648;\nconst maxFourBytesUnsigned = 4294967295;\nconst maxEightBytes = 9223372036854776000;\nconst minEightBytes = -9223372036854776001;\nconst maxEightBytesUnsigned = 18446744073709552000;\n\nexport const enum ErrorCode {\n notAnError = 0, // To ensure truthy-checks work for proper error codes.\n arrayExpected,\n incorrectType,\n infiniteNumber,\n numberOutOfRange,\n malformedBytesArray,\n stringLengthOverflowAppLimit,\n itemCountOverflowAppLimit,\n stringLengthOverflow,\n stringLengthUnderflow,\n itemCountOverflow,\n itemCountUnderflow,\n integerExpected,\n invalidItemValue\n}\n\nexport class ValidationEntry {\n constructor(\n public errorCode: ErrorCode,\n public fields: string[],\n public expected?: string,\n public received?: string\n ) {}\n\n asMessage(schemaId: string): string {\n const key: string =\n this.fields[0] +\n this.fields\n .slice(1)\n .reduce(\n (prev, current) =>\n Number(current) >= 0 ? `${prev}[${current}]` : `${prev}.${current}`,\n ''\n );\n let msg: string;\n\n switch (this.errorCode) {\n case ErrorCode.arrayExpected:\n msg = 'Repeated field must be an array';\n break;\n case ErrorCode.incorrectType:\n msg = `Expected type ${this.expected} but received type ${this.received}`;\n break;\n case ErrorCode.infiniteNumber:\n msg = 'Value must be finite';\n break;\n case ErrorCode.numberOutOfRange:\n msg = 'Value is out of range for its type';\n break;\n case ErrorCode.malformedBytesArray:\n msg = 'Bytes array is malformed';\n break;\n case ErrorCode.stringLengthOverflowAppLimit:\n msg = 'Exceeded app limit for maximum string length';\n break;\n case ErrorCode.itemCountOverflowAppLimit:\n msg = 'Exceeded app limit for item count';\n break;\n case ErrorCode.integerExpected:\n msg = 'Value must be an integer';\n break;\n case ErrorCode.invalidItemValue:\n msg = 'Values like null or undefined are not allowed for items in repeated fields';\n break;\n // TODO: The following should be used when we start validating against schema metadata\n // case ErrorCode.stringLengthOverflow:\n // msg = 'Exceeded maximum string length';\n // break;\n // case ErrorCode.stringLengthUnderflow:\n // msg = 'Failed minimum string length';\n // break;\n // case ErrorCode.itemCountOverflow:\n // msg = 'Exceeded maximum item count';\n // break;\n // case ErrorCode.itemCountUnderflow:\n // msg = 'Failed minimum item count';\n // break;\n default:\n msg = `Unknown error code: ${this.errorCode}`;\n break;\n }\n\n return `Schema ${schemaId} on field \"${key}\": ${msg}`;\n }\n}\n\ntype NumberRangeOptions = {\n min: number;\n max: number;\n isInt: boolean;\n isItem: boolean;\n};\n\nclass LogValidator {\n public validate(schema: Schema, data: SchematizedData, noThrow = false): ValidationEntry[] {\n const schemaTokens: SchemaTokens = schemaUtil.checkSchema(schema);\n utility.requireArgument(data, 'data', 'object');\n\n const schemaId: string = schemaUtil.getSchemaId(schema);\n\n const errorInfos = new Array<ValidationEntry>();\n\n const nestedSchema: PbjsNestedObjectDescriptor = schemaUtil.getTypes(schema);\n this._validateFields(\n errorInfos,\n [],\n data,\n nestedSchema[schemaTokens.message] as IType,\n nestedSchema,\n schemaId\n );\n\n if (errorInfos.length && !noThrow) {\n throw new Error(errorInfos[0].asMessage(schemaId));\n }\n\n return errorInfos;\n }\n\n private _validateFields(\n errorInfos: ValidationEntry[],\n fieldNames: string[],\n data: SchematizedData,\n message: IType,\n descriptor: PbjsNestedObjectDescriptor,\n schemaId: string\n ): void {\n const oneofs = message.oneofs || {};\n const fields = message.fields || {};\n for (const key in data) {\n const value = data[key];\n // if it's null or undefined we don't need to match\n if (value !== undefined && value !== null) {\n const mft: (fieldType: string, isRepeated?: boolean, isItem?: boolean) => void = (\n fieldType,\n isRepeated,\n isItem\n ) =>\n this._matchFieldTypes(\n errorInfos,\n [...fieldNames, key],\n value,\n fieldType,\n descriptor,\n schemaId,\n key,\n isRepeated,\n isItem\n );\n\n if (oneofs[key]) {\n mft(fields[oneofs[key].oneof[0]].type);\n } else if (fields[key]) {\n mft(fields[key].type, fields[key].rule === 'repeated');\n }\n // if the field is not present in the schema then we ignore it and will drop it later\n }\n }\n }\n\n private _matchFieldTypes(\n errorInfos: ValidationEntry[],\n fieldNames: string[],\n fieldDataValue: SchematizedDataValue,\n protobufType: string,\n descriptor: PbjsNestedObjectDescriptor,\n schemaId: string,\n key: string,\n isRepeated: boolean,\n isItem: boolean // true if inside a repeated field\n ): void {\n let errorCode: ErrorCode;\n\n if (isRepeated) {\n if (Array.isArray(fieldDataValue)) {\n if (fieldDataValue.length > maxItemCountAppLimit) {\n errorCode = ErrorCode.itemCountOverflowAppLimit;\n }\n\n fieldDataValue.forEach((value, index: number) => {\n // if it's repeated they should all be the same type so we can just run it as is\n this._matchFieldTypes(\n errorInfos,\n [...fieldNames, index.toString()],\n value,\n protobufType,\n descriptor,\n schemaId,\n key,\n undefined, // rule\n true // isItem\n );\n });\n } else {\n errorCode = ErrorCode.arrayExpected;\n }\n } else if (fieldDataValue == null || fieldDataValue === undefined) {\n if (isItem) {\n // Null and undefined are allowed unless they're in an array\n errorCode = ErrorCode.invalidItemValue;\n }\n } else {\n let numOpts: NumberRangeOptions;\n let javaScriptType: string;\n switch (protobufType) {\n case 'string':\n javaScriptType = 'string';\n if (fieldDataValue.length > maxStringLengthAppLimit) {\n errorCode = ErrorCode.stringLengthOverflowAppLimit;\n }\n break;\n case 'bytes':\n javaScriptType = 'object';\n if (!(fieldDataValue instanceof Uint8Array)) {\n errorCode = ErrorCode.malformedBytesArray;\n }\n break;\n case 'bool':\n javaScriptType = 'boolean';\n break;\n case 'uint32':\n javaScriptType = 'number';\n numOpts = {\n min: minUnsigned,\n max: maxFourBytesUnsigned,\n isInt: true,\n isItem\n };\n break;\n case 'int32':\n case 'sint32':\n case 'fixed32':\n case 'sfixed32':\n javaScriptType = 'number';\n numOpts = {\n min: minFourBytes,\n max: maxFourBytes,\n isInt: true,\n isItem\n };\n break;\n case 'uint64':\n javaScriptType = 'number';\n numOpts = {\n min: minUnsigned,\n max: maxEightBytesUnsigned,\n isInt: true,\n isItem\n };\n break;\n case 'fixed64':\n case 'sfixed64':\n case 'int64':\n case 'sint64':\n javaScriptType = 'number';\n numOpts = {\n min: minEightBytes,\n max: maxEightBytes,\n isInt: true,\n isItem\n };\n break;\n case 'double':\n case 'float':\n javaScriptType = 'number';\n numOpts = {\n min: Number.NEGATIVE_INFINITY,\n max: Number.POSITIVE_INFINITY,\n isInt: false,\n isItem\n };\n break;\n default:\n if (new Set(Object.keys(descriptor)).has(protobufType)) {\n //now we check this schema\n this._validateFields(\n errorInfos,\n fieldNames,\n fieldDataValue,\n descriptor[protobufType] as IType,\n descriptor,\n schemaId\n );\n javaScriptType = 'object';\n }\n break;\n }\n\n if (typeof fieldDataValue !== javaScriptType) {\n errorInfos.push(\n new ValidationEntry(\n ErrorCode.incorrectType,\n fieldNames,\n protobufType,\n typeof fieldDataValue\n )\n );\n } else if (numOpts) {\n if (numOpts.isInt && !Number.isFinite(fieldDataValue)) {\n errorCode = ErrorCode.infiniteNumber;\n } else if (numOpts.isInt && !Number.isInteger(fieldDataValue)) {\n errorCode = ErrorCode.integerExpected;\n } else if (\n !(!numOpts.isInt && Number.isNaN(fieldDataValue)) &&\n !(fieldDataValue >= numOpts.min && fieldDataValue <= numOpts.max)\n ) {\n errorCode = ErrorCode.numberOutOfRange;\n }\n }\n }\n if (errorCode) {\n errorInfos.push(new ValidationEntry(errorCode, fieldNames));\n }\n }\n}\n\nexport const logValidator = new LogValidator();\n","import { BucketMetric, Metric } from '../interfaces';\nimport { BucketHistogram, MetricTag, UpCounter, ValueRecorder } from '../interfaces-private';\nimport { MetricsTags } from './TypeDefinitions';\n\nexport class MetricsUtility {\n private _getMetricTags<T>(metric: Metric<T>): MetricTag[] {\n const tags: MetricsTags = metric.getTags();\n if (tags) {\n return Object.entries(tags).map((entry) => {\n const mt: MetricTag = {\n name: entry[0],\n value: entry[1].toString()\n };\n return mt;\n });\n }\n return undefined;\n }\n\n getUpCounters(metrics: Metric<number>[], reset = true): UpCounter[] {\n return metrics.map((metric) => {\n const data: UpCounter = {\n name: metric.getName(),\n createdTimestamp: metric.getCreatedOn(),\n lastUpdatedTimestamp: metric.getLastUpdatedOn(),\n value: metric.getData(),\n ownerName: metric.getOwnerName(),\n ownerAppName: metric.getOwnerAppName(),\n tags: this._getMetricTags(metric)\n };\n if (reset) {\n metric.reset();\n }\n return data;\n });\n }\n\n getValueRecorders(metrics: Metric<number[]>[], reset = true): ValueRecorder[] {\n return metrics.map((metric) => {\n const data: ValueRecorder = {\n name: metric.getName(),\n createdTimestamp: metric.getCreatedOn(),\n lastUpdatedTimestamp: metric.getLastUpdatedOn(),\n values: metric.getData(),\n ownerName: metric.getOwnerName(),\n ownerAppName: metric.getOwnerAppName(),\n tags: this._getMetricTags(metric)\n };\n if (reset) {\n metric.reset();\n }\n return data;\n });\n }\n\n getBucketHistograms(metrics: BucketMetric<number[]>[], reset = true): BucketHistogram[] {\n return metrics.map((metric) => {\n const data: BucketHistogram = {\n name: metric.getName(),\n createdTimestamp: metric.getCreatedOn(),\n lastUpdatedTimestamp: metric.getLastUpdatedOn(),\n values: metric.getData(),\n buckets: metric.getBuckets(),\n ownerName: metric.getOwnerName(),\n ownerAppName: metric.getOwnerAppName(),\n tags: this._getMetricTags(metric)\n };\n if (reset) {\n metric.reset();\n }\n return data;\n });\n }\n\n getMetricsTags(array: MetricTag[]): MetricsTags {\n // Assuming array is already sorted by name\n const obj: MetricsTags = {};\n array.forEach((tag) => {\n obj[tag.name] = tag.value;\n });\n return obj;\n }\n}\n\nexport const metricsUtility = Object.freeze(new MetricsUtility());\n","import { PayloadProvider, PayloadProviderArgs, Schema, SchematizedPayload } from '../interfaces';\nimport {\n ErrorCode,\n ValidationEntry,\n logValidator,\n maxItemCountAppLimit,\n maxStringLengthAppLimit\n} from './LogValidator';\nimport type { SchematizedData } from './TypeDefinitions';\nimport { schemaUtil } from './SchemaUtil';\nimport { utility } from './Utility';\n\nclass PayloadUtility {\n public checkInputs(schema: Schema, data: SchematizedData): void {\n schemaUtil.checkSchema(schema);\n utility.requireArgument(data, 'data', 'object');\n\n let vEntries: ValidationEntry[];\n let savedUserPayload: SchematizedPayload;\n if (data.userPayload !== undefined && schemaUtil.isInternal(schema)) {\n // For internal schemas where we have nested messages, we need to temporarily\n // remove userPayload, since it's not yet encoded. (If left in place, it would fail\n // validation since it's not UInt8Array). We validate it separately here.\n savedUserPayload = data.userPayload;\n vEntries = logValidator.validate(\n savedUserPayload.schema,\n savedUserPayload.payload,\n true\n );\n this._processValidationResults(\n schemaUtil.getSchemaId(savedUserPayload.schema),\n savedUserPayload.payload,\n vEntries\n );\n data.userPayload = undefined;\n }\n\n vEntries = logValidator.validate(schema, data, true);\n this._processValidationResults(schemaUtil.getSchemaId(schema), data, vEntries);\n\n if (savedUserPayload !== undefined) {\n // Restore userPayload\n data.userPayload = savedUserPayload;\n }\n }\n\n public getExtraFields(schema: Schema, data: SchematizedData): string[] {\n utility.requireArgument(data, 'data', 'object');\n const ignoredFields: string[] = [];\n const subPayload = data.userPayload;\n if (subPayload !== undefined && schemaUtil.isInternal(schema)) {\n // Add fields that are not part of the schema\n ignoredFields.push(...schemaUtil.getExtraFields(subPayload.schema, subPayload.payload));\n }\n ignoredFields.push(...schemaUtil.getExtraFields(schema, data));\n return ignoredFields;\n }\n\n public getPayloadFromProvider(\n provider: PayloadProvider,\n args?: PayloadProviderArgs\n ): SchematizedPayload {\n const payload: SchematizedPayload = provider?.getPayload(args) || undefined;\n if (payload) {\n this.checkInputs(payload.schema, payload.payload);\n }\n return payload;\n }\n\n private _processValidationResults(\n schemaId: string,\n data: SchematizedData,\n ventries: ValidationEntry[]\n ): void {\n for (let i = 0; i < ventries.length; i += 1) {\n const ei = ventries[i];\n\n if (\n ei.errorCode == ErrorCode.stringLengthOverflowAppLimit ||\n ei.errorCode == ErrorCode.itemCountOverflowAppLimit\n ) {\n const lfi = ei.fields.length - 1;\n const obj = this._traverseFields(data, ei.fields.slice(0, lfi));\n const field = ei.fields[lfi];\n if (ei.errorCode == ErrorCode.stringLengthOverflowAppLimit) {\n obj[field] = obj[field].substring(0, maxStringLengthAppLimit);\n } else {\n obj[field].splice(maxItemCountAppLimit);\n }\n } else {\n throw new Error(ei.asMessage(schemaId));\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _traverseFields(data: SchematizedData, fields: string[]): any {\n if (!fields.length) {\n return data;\n }\n return this._traverseFields(data[fields[0]], fields.slice(1));\n }\n}\n\nexport const payloadUtility = Object.freeze(new PayloadUtility());\n","import { UpCounter } from '../interfaces';\nimport { co11y } from './Co11yImpl';\nimport { utility } from './Utility';\n\nconst o11y = 'o11y';\n\nexport type TryCatchOptions = {\n op: string;\n};\n\nexport class PublicSafety {\n private _safeCatchMode = false;\n\n constructor(private readonly _errorCounter?: UpCounter) {}\n\n private _callCo11y(options: TryCatchOptions, hasException: boolean): void {\n if (hasException) {\n co11y.exception(options?.op, o11y);\n } else {\n co11y.success(options?.op, o11y);\n }\n }\n\n /**\n * Instrumentation should never throw in production. Therefore, we need to include in\n * all our public methods a top-most try/catch wrapper. Simply use this function\n * as your first and only top-level call in the function block and sleep well at night.\n *\n * @param fn The body of the unsafe function that doesn't return a value but can throw\n */\n tryCatch(fn: () => void, options?: TryCatchOptions): void {\n let ex;\n try {\n fn();\n } catch (err) {\n ex = true;\n this._prodSafeCatch(err);\n } finally {\n this._callCo11y(options, ex);\n }\n }\n\n /**\n *\n * @param fn The body of the unsafe function that returns a value and that can throw\n * @param noopValue A static, noop instance of V (like a mock) that will be returned in case\n * the function could not be called.\n */\n tryCatchReturn<V>(fn: () => V, noopValue: V, options?: TryCatchOptions): V {\n let ex;\n try {\n utility.requireArgument(noopValue, 'noopValue');\n return fn();\n } catch (err) {\n ex = true;\n this._prodSafeCatch(err);\n return noopValue;\n } finally {\n this._callCo11y(options, ex);\n }\n }\n\n /**\n * Safely handles exceptions. Suppresses throws in a production environment.\n * This method is intended to be called inside a catch block.\n *\n * @param error The error that was caught\n */\n private _prodSafeCatch(error: unknown): void {\n let allowThrow;\n try {\n allowThrow = !utility.isProduction;\n if (allowThrow) {\n // Just throw the error in development\n throw error;\n }\n\n if (this._safeCatchMode) {\n // If we're here, that means code in the try block of prodSafeCatch itself is throwing an error\n // (i.e. prodSafeCatch is already on the stack). Break out now to prevent infinite loop.\n this._safeCatchMode = false;\n\n throw new Error('Internal error in prodSafeCatch.');\n }\n\n this._safeCatchMode = true;\n if (this._errorCounter) {\n this._errorCounter.increment();\n }\n\n if (!(error instanceof Error)) {\n const errorText =\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n (error && (error as any).message) ||\n (typeof error.toString === 'function' ? error.toString() : '');\n error = new Error(errorText);\n }\n\n // If not allowed to throw the error, at least try to log it\n // TODO: This error should be attributed to the global Instrumentation (not to \"this\")\n // this.error(error);\n this._safeCatchMode = false;\n } catch (internalError) {\n // Do not call any methods in this catch block except for console.error\n\n if (allowThrow) {\n // pass it along\n throw internalError;\n }\n\n // eslint-disable-next-line no-console\n if (internalError && console && typeof console.error === 'function') {\n try {\n // eslint-disable-next-line no-console\n console.error(internalError);\n } catch {\n // Nothing we can do at this point\n }\n }\n this._safeCatchMode = false;\n }\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared.js","sources":["../../../../src/shared/Utility.ts","../../../../src/shared/UpCounterImpl.ts","../../../../src/shared/Co11yImpl.ts","../../../../src/shared/LazyMapToList.ts","../../../../src/shared/SchemaUtil.ts","../../../../src/shared/LogValidator.ts","../../../../src/shared/MetricsUtility.ts","../../../../src/shared/PayloadUtility.ts","../../../../src/shared/PublicSafety.ts"],"sourcesContent":["import { AllowedOrigins, Activity } from '../interfaces';\nimport { ObjectType } from './TypeDefinitions';\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Navigator/connection\ntype NavigatorWithConnection = {\n readonly connection: {\n readonly effectiveType: string;\n };\n};\n\nclass Utility {\n // We are now in production by default, unless told otherwise.\n // This is to prevent exceptions that may occur before initialization.\n private static _isProduction = true;\n\n public readonly notImplemented = 'Method not implemented.';\n public readonly perfNow: () => number;\n public readonly time: () => { tsNow: number; perfNow: number; timeOrigin: number };\n private readonly _timeOrigin: number;\n\n constructor() {\n const performanceExists = typeof performance !== 'undefined';\n if (performanceExists) {\n if (performance.timeOrigin) {\n this._timeOrigin = performance.timeOrigin;\n } else {\n // if we don't have any start time, we consider our init to be the time origin\n this._timeOrigin = Date.now();\n }\n } else {\n this._timeOrigin = Date.now();\n }\n\n const timeOrigin = this._timeOrigin;\n if (performanceExists && typeof performance.now === 'function') {\n this.perfNow = performance.now.bind(performance);\n this.time = () => {\n const perfNow = this.perfNow();\n return { tsNow: timeOrigin + perfNow, perfNow, timeOrigin };\n };\n } else {\n this.perfNow = () => {\n return Date.now() - timeOrigin;\n };\n this.time = () => {\n const perfNow = this.perfNow();\n return { tsNow: Date.now(), perfNow, timeOrigin };\n };\n }\n }\n\n public get isProduction(): boolean {\n return Utility._isProduction;\n }\n\n public markProduction(value?: boolean): void {\n Utility._isProduction = value ?? true;\n }\n\n // Returns false if check fails\n // if argKind is a string, uses typeof.\n // if argKind is a function, such as String, Number, HTMLElement, uses instanceof.\n // if argKind is an array, expects at least one of the element types to match.\n private _checkArgument<T>(argument: T, argKind: unknown): boolean {\n if (typeof argKind === 'string') {\n return typeof argument === argKind;\n }\n if (typeof argKind === 'function') {\n return argument instanceof argKind;\n }\n if (Array.isArray(argKind)) {\n return argKind.some((arg) => this._checkArgument(argument, arg));\n }\n throw new Error(`Invalid argKind ${argKind}`);\n }\n\n public requireArgument<T>(argument: T, argumentName: string, argKind?: unknown): void {\n let disallowed =\n argument === undefined || argument === null || (argument as unknown) === '';\n const kindSpecified = argKind !== undefined;\n\n if (!disallowed && kindSpecified) {\n disallowed = !this._checkArgument(argument, argKind);\n }\n\n if (disallowed) {\n throw new Error(\n `${argumentName} argument is required${\n kindSpecified ? ' and must be of a supported type.' : '.'\n }`\n );\n }\n }\n\n public requireArgumentIfDefined<T>(\n argument: T,\n argumentName: string,\n argKind: unknown\n ): boolean {\n if (argument === undefined) {\n return false;\n }\n const disallowed =\n argument === null ||\n (argument as unknown) === '' ||\n !this._checkArgument(argument, argKind);\n\n if (disallowed) {\n throw new Error(`${argumentName} argument, if defined, must be of a supported type.`);\n }\n\n return true;\n }\n\n public checkForDenyListedValues<T>(\n argument: T,\n argumentName: string,\n denyList: ReadonlyArray<T>\n ): void {\n if (denyList.some((x) => argument === x)) {\n throw new Error(`The value ${argument} isn't allowed for ${argumentName} argument.`);\n }\n }\n\n public checkForReservedCharacters(\n argument: string,\n argumentName: string,\n reservedChars: ReadonlyArray<string>\n ): void {\n if (argument && reservedChars.some((c) => argument.indexOf(c) >= 0)) {\n throw new Error(\n `The argument ${argumentName} isn't allowed to contain characters from ['${reservedChars.join(\n ', '\n )}']. Received: ${argument}.`\n );\n }\n }\n\n public generateUniqueId(length = 16): string {\n const chars: string[] = [];\n const digits = '0123456789abcdef';\n if (!(length === undefined || length > 0)) {\n throw new Error('If specified, the argument \"length\" must be a positive integer');\n }\n for (let i = 0; i < length; i++) {\n const rand = Math.floor(Math.random() * 16);\n chars.push(digits[rand]);\n }\n return chars.join('');\n }\n\n public getXpath(_element: HTMLElement): string {\n //if the element has siblings with the same type we should return 1, otherwise not\n function hasSameSibs(elm: Element): boolean {\n const name = elm.localName;\n while (elm.nextElementSibling) {\n elm = elm.nextElementSibling;\n if (elm.localName === name) {\n return true;\n }\n }\n return false;\n }\n function idx(sib: Element, name?: string): number {\n //we want to count the siblings of the same type for the xpath, otherwise it is just 1\n if (sib) {\n return (\n idx(sib.previousElementSibling, name || sib.localName) +\n (sib.localName === name ? 1 : 0)\n );\n }\n return 1;\n }\n function segs(elm: HTMLElement): string[] {\n // only run for element nodes\n if (!elm || elm.nodeType !== 1) {\n return [''];\n }\n //only add the number if it is over 1, or if it the first of siblings\n const nodeValue =\n idx(elm) > 1 || hasSameSibs(elm)\n ? `${elm.localName.toLowerCase()}[${idx(elm)}]`\n : elm.localName.toLowerCase();\n //go up and add the element at the end of the path\n return [...segs(elm.parentNode as HTMLElement), nodeValue];\n }\n //concat at the end\n return segs(_element).join('/');\n }\n\n public getAge(timestamp: number): number {\n return timestamp - this._timeOrigin;\n }\n\n // Reads the `navigator` global defensively. VS Code 1.129+ makes `navigator` a\n // NodeJS extension-host global that throws on access (W-24059841); even\n // `typeof navigator` throws, because it evaluates the getter. Any read must be\n // wrapped in try/catch and degrade to `undefined` when navigator is unavailable.\n private _getNavigatorSafe(): Navigator | undefined {\n try {\n return typeof navigator !== 'undefined' ? navigator : undefined;\n } catch {\n return undefined;\n }\n }\n\n private _hasEffectiveConnectionType(value: unknown): value is NavigatorWithConnection {\n if (typeof value !== 'object' || value === null || !('connection' in value)) {\n return false;\n }\n\n const connection = value.connection;\n return (\n typeof connection === 'object' &&\n connection !== null &&\n 'effectiveType' in connection &&\n typeof connection.effectiveType === 'string'\n );\n }\n\n public getConnectionType(): string | undefined {\n const nav = this._getNavigatorSafe();\n\n return this._hasEffectiveConnectionType(nav) ? nav.connection.effectiveType : undefined;\n }\n\n public clone<T>(value: T): T {\n return JSON.parse(JSON.stringify(value));\n }\n\n public definedValueOrDefault<T>(value: T, defaultValue: T): T {\n return value !== undefined ? value : defaultValue;\n }\n\n public getGlobal(): typeof globalThis {\n if (typeof globalThis === 'object') {\n return globalThis;\n }\n if (typeof self === 'object') {\n return self;\n }\n throw new Error('Unable to locate globalThis or self');\n }\n\n public getIsBeaconSupported(): boolean {\n const g = this.getGlobal();\n const nav = this._getNavigatorSafe();\n return typeof nav?.sendBeacon === 'function' && typeof g.Blob === 'function';\n }\n\n public estimateObjectSize(object: unknown): number {\n const objectSet = new Set<ObjectType>();\n const stack: Array<unknown> = [object];\n let bytes = 0;\n\n while (stack.length) {\n const value: unknown = stack.pop();\n if (typeof value === 'boolean') {\n bytes += 4;\n } else if (typeof value === 'string') {\n bytes += value.length * 2;\n } else if (typeof value === 'number') {\n bytes += 8;\n } else if (\n value instanceof Uint8Array ||\n value instanceof Uint8ClampedArray ||\n value instanceof Uint16Array ||\n value instanceof Uint32Array ||\n value instanceof Int8Array ||\n value instanceof Int16Array ||\n value instanceof Int32Array ||\n value instanceof Float32Array ||\n value instanceof Float64Array\n ) {\n bytes += value.byteLength;\n } else if (typeof value === 'object') {\n const obj: ObjectType = value as ObjectType;\n if (!objectSet.has(obj)) {\n objectSet.add(obj);\n for (const key in obj) {\n stack.push(obj[key]);\n }\n }\n }\n }\n return bytes;\n }\n\n // swallows exceptions on production.\n // Ensure that code that follows this call is a proper no-op.\n noProdThrow(e: unknown): void | never {\n if (utility.isProduction) {\n return;\n }\n throw e;\n }\n\n isAllowedOrigin(input: string, allowed: AllowedOrigins): boolean {\n return (\n Array.isArray(allowed) &&\n allowed.some(\n (origin) =>\n origin === '*' ||\n input === origin ||\n (origin instanceof RegExp && origin.test(input))\n )\n );\n }\n\n roundNumber(value: number, decimals: number): number {\n const pow = Math.pow(10, decimals);\n return Math.round(value * pow) / pow;\n }\n\n roundNumbersInObject(obj: ObjectType, decimals: number): void {\n if (obj) {\n Object.entries(obj).forEach(([key, value]) => {\n if (typeof value === 'number') {\n obj[key] = this.roundNumber(value, decimals);\n }\n });\n }\n }\n\n // Attempts to convert a relative URL to an absolute URL, returns the input value as-is if it can't.\n tryGetAbsoluteUrl(url: string): string {\n if (url?.startsWith('//') && typeof window === 'object') {\n return (window.location.protocol ?? '') + url;\n } else if (url?.startsWith('/') && typeof window === 'object') {\n return (window.location.origin ?? '') + url;\n }\n return url;\n }\n\n /**\n * Validates that a parent activity matches the expected external/internal type.\n * External activities should only have external parents, internal activities should only have internal parents.\n *\n * @param isExternal - Whether the current activity is external (undefined is treated as false)\n * @param parentActivity - The parent activity to validate\n * @returns The parent activity if it matches the expected type, undefined otherwise\n */\n validateParentActivityType(\n isExternal: boolean | undefined,\n parentActivity: Activity | null | undefined\n ): Activity | undefined {\n const activityIsExternal = isExternal ?? false;\n\n if (!parentActivity) {\n return undefined;\n }\n\n const parentIsExternal = parentActivity.isExternal();\n\n if (activityIsExternal === parentIsExternal) {\n return parentActivity;\n } else {\n const currentType = activityIsExternal ? 'external' : 'internal';\n const parentType = parentIsExternal ? 'external' : 'internal';\n throw new Error(\n `Parent activity type mismatch: ${currentType} activity cannot have ${parentType} parent.`\n );\n }\n }\n}\n\nconst _utility = new Utility();\nconst global: Record<string, unknown> = _utility.getGlobal();\n_utility.markProduction(global?.__O11Y_IS_PROD__ as boolean | undefined);\n\nexport const utility = Object.freeze(_utility);\n","import { Metric } from '../interfaces/Metric';\nimport { UpCounter } from '../interfaces/UpCounter';\nimport { utility } from './Utility';\nimport type { MetricsTags } from './TypeDefinitions';\n\nexport class UpCounterImpl implements Metric<number>, UpCounter {\n private readonly _createdOn: number;\n private _lastUpdatedOn: number;\n private _value = 0;\n\n constructor(\n private readonly _name: string,\n private readonly _ownerName: string,\n private readonly _ownerAppName: string,\n private readonly _tags: MetricsTags,\n createdOn?: number,\n lastUpdatedOn?: number,\n value?: number\n ) {\n this._createdOn = createdOn === undefined ? utility.time().tsNow : createdOn;\n if (lastUpdatedOn !== undefined) {\n this._lastUpdatedOn = lastUpdatedOn;\n }\n if (value !== undefined) {\n this._value = value;\n }\n }\n\n getName(): string {\n return this._name;\n }\n\n getCreatedOn(): number {\n return this._createdOn;\n }\n\n getLastUpdatedOn(): number {\n return this._lastUpdatedOn;\n }\n\n getData(): number {\n return this._value;\n }\n\n increment(value = 1): void {\n if (typeof value === 'number' && value > 0) {\n this._value += Math.round(value);\n this._lastUpdatedOn = utility.time().tsNow;\n return;\n }\n\n throw new Error('UpCounter can only increment positive numbers.');\n }\n\n reset(): void {\n this._lastUpdatedOn = undefined;\n this._value = 0;\n }\n\n getOwnerName(): string {\n return this._ownerName;\n }\n\n getOwnerAppName(): string {\n return this._ownerAppName;\n }\n\n getTags(): Readonly<MetricsTags> {\n return this._tags;\n }\n}\n","// Note: Due to the intent of this class, it must not throw any exceptions.\n\nimport { BucketMetric, Co11y, Metric, MetricsReporter, OwnerName } from '../interfaces';\nimport { UpCounterImpl } from './UpCounterImpl';\nimport type { MetricsTags } from './TypeDefinitions';\n\ntype Status = 'success' | 'error';\n\nconst co11yName = 'co11y';\n\nexport class Co11yImpl implements Co11y, MetricsReporter {\n private readonly _upCounters = new Map<string, UpCounterImpl>();\n private _ownerAppName = co11yName;\n\n // This is a simplified version of the implementation in MetricsImpl.\n private _addOrUpdateCounter(operation: string, ownerName: OwnerName, status: Status): void {\n if (!operation) {\n return;\n }\n\n // These tags must be sorted\n const sortedTags: MetricsTags = { status };\n\n // The key must uniquely identify the metric\n const key = `${this._ownerAppName}:${ownerName}:${operation}${JSON.stringify(sortedTags)}`;\n\n let instrument = this._upCounters.get(key);\n if (!instrument) {\n instrument = new UpCounterImpl(operation, ownerName, this._ownerAppName, sortedTags);\n this._upCounters.set(key, instrument);\n }\n instrument.increment();\n }\n\n success(operation: string, ownerName: OwnerName): void {\n this._addOrUpdateCounter(operation, ownerName, 'success');\n }\n exception(operation: string, ownerName: OwnerName): void {\n this._addOrUpdateCounter(operation, ownerName, 'error');\n }\n getBucketHistograms(): BucketMetric<number[]>[] {\n return [];\n }\n getUpCounters(): Metric<number>[] {\n return Array.from(this._upCounters.values()).filter((m) => m.getLastUpdatedOn());\n }\n getValueRecorders(): Metric<number[]>[] {\n return [];\n }\n setOwnerAppName(ownerAppName: string): void {\n this._ownerAppName = ownerAppName;\n }\n}\n\nexport const co11y = new Co11yImpl();\n","export class LazyMapToList<Key, ElementType> {\n private readonly _lazyMap = new Map<Key, Array<ElementType>>();\n\n private _maxSize: number;\n constructor(maxSize?: number) {\n if (maxSize !== undefined) {\n if (typeof maxSize === 'number' && maxSize > 0) {\n this._maxSize = Math.ceil(maxSize);\n return;\n }\n throw new Error('maxSize must be a positive number');\n }\n }\n\n get maxSize(): number {\n return this._maxSize;\n }\n\n get size(): number {\n return this._lazyMap.size;\n }\n\n /**\n * Adds the value to the list specific to the key. If the list doesn't exist,\n * it will be lazily created as long as there are fewer keys than the max, if specified.\n *\n * @param key The key for the map\n * @param value The value to be added to the list\n */\n push(key: Key, value: ElementType): boolean {\n let buffer = this._lazyMap.get(key);\n if (!buffer) {\n if (this.maxSize !== undefined && this.size === this.maxSize) {\n return false;\n }\n buffer = new Array<ElementType>();\n this._lazyMap.set(key, buffer);\n }\n buffer.push(value);\n return true;\n }\n\n getMessages(key: Key, extract?: boolean): Array<ElementType> {\n const msgs = this._lazyMap.get(key);\n if (extract && this._lazyMap.has(key)) {\n this._lazyMap.set(key, []);\n }\n return msgs || [];\n }\n\n getAllMessages(extract?: boolean): Map<Key, Array<ElementType>> {\n const map = new Map<Key, Array<ElementType>>();\n for (const [key, value] of this._lazyMap.entries()) {\n if (value.length) {\n map.set(key, this.getMessages(key, extract));\n }\n }\n return map;\n }\n\n // Convenience functions for backwards compatibility\n extractMessages(key: Key): Array<ElementType> {\n return this.getMessages(key, true);\n }\n extractAllMessages(): Map<Key, Array<ElementType>> {\n return this.getAllMessages(true);\n }\n\n get totalItemCount(): number {\n let count = 0;\n for (const array of this._lazyMap.values()) {\n count += array.length;\n }\n return count;\n }\n}\n","import { IField, INamespace, IType, Schema, SchematizedPayload, SchemaTokens } from '../interfaces';\nimport {\n AnyNestedObject,\n PbjsNestedObjectDescriptor,\n ProtoOptions,\n SchematizedData\n} from './TypeDefinitions';\nimport { utility } from './Utility';\n\nclass SchemaUtil {\n public getSchemaId(schema: Schema): string {\n return `${schema.namespace}.${schema.name}`;\n }\n public isInternal(schema: Schema): boolean {\n return schema?.namespace === 'sf.instrumentation';\n }\n\n public makePayload(\n schema: Schema,\n data: SchematizedData,\n onlyIfBoth = true\n ): SchematizedPayload {\n if (!onlyIfBoth || (schema !== undefined && data !== undefined)) {\n return {\n schema,\n payload: data\n };\n }\n return undefined;\n }\n\n public checkSchema(schema: Schema): SchemaTokens {\n utility.requireArgument(schema, 'schema', 'object');\n utility.requireArgument(schema.namespace, 'schema.namespace', 'string');\n utility.requireArgument(schema.name, 'schema.name', 'string');\n utility.requireArgument(schema.pbjsSchema, 'schema.pbjsSchema', 'object');\n return this._getTokens(schema);\n }\n\n private _getTokens(schema: Schema): SchemaTokens {\n const parts: string[] = schema.namespace.split('.');\n if (parts.length !== 2) {\n throw new Error(\n `Schema \"${this.getSchemaId(\n schema\n )}\" must have a namespace of the form \"domain.feature\".`\n );\n }\n return {\n domain: parts[0],\n feature: parts[1],\n message: schema.name\n };\n }\n\n private _getAnyNestedObject(schema: Schema, scopes: string[]): AnyNestedObject {\n return scopes.reduce((prev: INamespace, currentScope: string) => {\n const descriptor: PbjsNestedObjectDescriptor = prev.nested;\n if (descriptor) {\n const ano: AnyNestedObject = descriptor[currentScope];\n if (ano) {\n return ano;\n }\n }\n throw new Error(\n `Cannot locate ${scopes.join('.')} in schema with ID ${this.getSchemaId(schema)}`\n );\n }, schema.pbjsSchema);\n }\n\n public getTypes(schema: Schema): PbjsNestedObjectDescriptor {\n const schemaTokens: SchemaTokens = this.checkSchema(schema);\n const namespace: INamespace = this._getAnyNestedObject(schema, [\n schemaTokens.domain,\n schemaTokens.feature\n ]);\n const descriptor: PbjsNestedObjectDescriptor = namespace.nested;\n if (!descriptor) {\n throw new Error(`Cannot parse schema with ID ${this.getSchemaId(schema)}`);\n }\n return descriptor;\n }\n\n public getType(schema: Schema, messageName: string): IType {\n utility.requireArgument(messageName, 'messageName', 'string');\n const descriptor: PbjsNestedObjectDescriptor = this.getTypes(schema);\n\n const message = descriptor[messageName] as IType;\n if (!message) {\n throw new Error(\n `Cannot locate message ${messageName} in schema with ID ${this.getSchemaId(schema)}`\n );\n }\n return message;\n }\n\n public getOptions(schema: Schema, messageName?: string, fieldName?: string): ProtoOptions {\n if (fieldName) {\n utility.requireArgument(messageName, 'messageName', 'string');\n }\n const schemaTokens: SchemaTokens = this.checkSchema(schema);\n\n if (!messageName) {\n const namespace: INamespace = this._getAnyNestedObject(schema, [\n schemaTokens.domain,\n schemaTokens.feature\n ]);\n return namespace.options;\n }\n\n const type: IType = this.getType(schema, messageName);\n if (!fieldName) {\n return type.options;\n }\n\n const field: IField = type.fields[fieldName];\n if (!field) {\n const schemaId = this.getSchemaId(schema);\n throw new Error(\n `Cannot locate field ${fieldName} in message ${messageName} in schema with ID ${schemaId}`\n );\n }\n return field.options;\n }\n\n public getExtraFields(schema: Schema, data: SchematizedData): string[] {\n const { message } = this._getTokens(schema);\n const types: PbjsNestedObjectDescriptor = this.getTypes(schema);\n // This assumes that the schema is flat\n const fields: Record<string, IField> = (types[message] as IType)['fields'];\n const fieldSet = new Set(Object.keys(fields));\n\n const extraFields =\n data !== null && data !== undefined\n ? Object.keys(data).filter((key) => !fieldSet.has(key))\n : [];\n return extraFields;\n }\n}\n\nexport const schemaUtil = new SchemaUtil();\n","import { IType, Schema, SchemaTokens } from '../interfaces';\nimport type {\n AnyNestedObject,\n PbjsNestedObjectDescriptor,\n SchematizedData,\n SchematizedDataValue\n} from './TypeDefinitions';\nimport { schemaUtil } from './SchemaUtil';\nimport { utility } from './Utility';\n\n// These are hard-coded limits at the app-level. They may be overridden with a corresponding\n// option at the field level in the schema metadata.\nexport const maxStringLengthAppLimit = 10000; // For strings\nexport const maxItemCountAppLimit = 10000; // For arrays\n\nconst minUnsigned = 0;\nconst maxFourBytes = 2147483647;\nconst minFourBytes = -2147483648;\nconst maxFourBytesUnsigned = 4294967295;\nconst maxEightBytes = 9223372036854776000;\nconst minEightBytes = -9223372036854776001;\nconst maxEightBytesUnsigned = 18446744073709552000;\n\nexport const enum ErrorCode {\n notAnError = 0, // To ensure truthy-checks work for proper error codes.\n arrayExpected,\n incorrectType,\n infiniteNumber,\n numberOutOfRange,\n malformedBytesArray,\n stringLengthOverflowAppLimit,\n itemCountOverflowAppLimit,\n stringLengthOverflow,\n stringLengthUnderflow,\n itemCountOverflow,\n itemCountUnderflow,\n integerExpected,\n invalidItemValue\n}\n\nexport class ValidationEntry {\n constructor(\n public errorCode: ErrorCode,\n public fields: string[],\n public expected?: string,\n public received?: string\n ) {}\n\n asMessage(schemaId: string): string {\n const key: string =\n this.fields[0] +\n this.fields\n .slice(1)\n .reduce(\n (prev, current) =>\n Number(current) >= 0 ? `${prev}[${current}]` : `${prev}.${current}`,\n ''\n );\n let msg: string;\n\n switch (this.errorCode) {\n case ErrorCode.arrayExpected:\n msg = 'Repeated field must be an array';\n break;\n case ErrorCode.incorrectType:\n msg = `Expected type ${this.expected} but received type ${this.received}`;\n break;\n case ErrorCode.infiniteNumber:\n msg = 'Value must be finite';\n break;\n case ErrorCode.numberOutOfRange:\n msg = 'Value is out of range for its type';\n break;\n case ErrorCode.malformedBytesArray:\n msg = 'Bytes array is malformed';\n break;\n case ErrorCode.stringLengthOverflowAppLimit:\n msg = 'Exceeded app limit for maximum string length';\n break;\n case ErrorCode.itemCountOverflowAppLimit:\n msg = 'Exceeded app limit for item count';\n break;\n case ErrorCode.integerExpected:\n msg = 'Value must be an integer';\n break;\n case ErrorCode.invalidItemValue:\n msg = 'Values like null or undefined are not allowed for items in repeated fields';\n break;\n // TODO: The following should be used when we start validating against schema metadata\n // case ErrorCode.stringLengthOverflow:\n // msg = 'Exceeded maximum string length';\n // break;\n // case ErrorCode.stringLengthUnderflow:\n // msg = 'Failed minimum string length';\n // break;\n // case ErrorCode.itemCountOverflow:\n // msg = 'Exceeded maximum item count';\n // break;\n // case ErrorCode.itemCountUnderflow:\n // msg = 'Failed minimum item count';\n // break;\n default:\n msg = `Unknown error code: ${this.errorCode}`;\n break;\n }\n\n return `Schema ${schemaId} on field \"${key}\": ${msg}`;\n }\n}\n\ntype NumberRangeOptions = {\n min: number;\n max: number;\n isInt: boolean;\n isItem: boolean;\n};\n\nclass LogValidator {\n public validate(schema: Schema, data: SchematizedData, noThrow = false): ValidationEntry[] {\n const schemaTokens: SchemaTokens = schemaUtil.checkSchema(schema);\n utility.requireArgument(data, 'data', 'object');\n\n const schemaId: string = schemaUtil.getSchemaId(schema);\n\n const errorInfos = new Array<ValidationEntry>();\n\n const nestedSchema: PbjsNestedObjectDescriptor = schemaUtil.getTypes(schema);\n this._validateFields(\n errorInfos,\n [],\n data,\n nestedSchema[schemaTokens.message] as IType,\n schema.pbjsSchema.nested,\n schemaId,\n [schemaTokens.domain, schemaTokens.feature, schemaTokens.message]\n );\n\n if (errorInfos.length && !noThrow) {\n throw new Error(errorInfos[0].asMessage(schemaId));\n }\n\n return errorInfos;\n }\n\n private _validateFields(\n errorInfos: ValidationEntry[],\n fieldNames: string[],\n data: SchematizedData,\n message: IType,\n descriptor: PbjsNestedObjectDescriptor,\n schemaId: string,\n scope: string[]\n ): void {\n const oneofs = message.oneofs || {};\n const fields = message.fields || {};\n for (const key in data) {\n const value = data[key];\n // if it's null or undefined we don't need to match\n if (value !== undefined && value !== null) {\n const mft: (fieldType: string, isRepeated?: boolean, isItem?: boolean) => void = (\n fieldType,\n isRepeated,\n isItem\n ) =>\n this._matchFieldTypes(\n errorInfos,\n [...fieldNames, key],\n value,\n fieldType,\n descriptor,\n schemaId,\n scope,\n isRepeated,\n isItem\n );\n\n if (oneofs[key]) {\n mft(fields[oneofs[key].oneof[0]].type);\n } else if (fields[key]) {\n mft(fields[key].type, fields[key].rule === 'repeated');\n }\n // if the field is not present in the schema then we ignore it and will drop it later\n }\n }\n }\n\n private _matchFieldTypes(\n errorInfos: ValidationEntry[],\n fieldNames: string[],\n fieldDataValue: SchematizedDataValue,\n protobufType: string,\n descriptor: PbjsNestedObjectDescriptor,\n schemaId: string,\n scope: string[],\n isRepeated: boolean,\n isItem: boolean // true if inside a repeated field\n ): void {\n let errorCode: ErrorCode;\n\n if (isRepeated) {\n if (Array.isArray(fieldDataValue)) {\n if (fieldDataValue.length > maxItemCountAppLimit) {\n errorCode = ErrorCode.itemCountOverflowAppLimit;\n }\n\n fieldDataValue.forEach((value, index: number) => {\n // if it's repeated they should all be the same type so we can just run it as is\n this._matchFieldTypes(\n errorInfos,\n [...fieldNames, index.toString()],\n value,\n protobufType,\n descriptor,\n schemaId,\n scope,\n undefined, // rule\n true // isItem\n );\n });\n } else {\n errorCode = ErrorCode.arrayExpected;\n }\n } else if (fieldDataValue == null || fieldDataValue === undefined) {\n if (isItem) {\n // Null and undefined are allowed unless they're in an array\n errorCode = ErrorCode.invalidItemValue;\n }\n } else {\n let numOpts: NumberRangeOptions;\n let javaScriptType: string;\n let enumValues: number[];\n switch (protobufType) {\n case 'string':\n javaScriptType = 'string';\n if (fieldDataValue.length > maxStringLengthAppLimit) {\n errorCode = ErrorCode.stringLengthOverflowAppLimit;\n }\n break;\n case 'bytes':\n javaScriptType = 'object';\n if (!(fieldDataValue instanceof Uint8Array)) {\n errorCode = ErrorCode.malformedBytesArray;\n }\n break;\n case 'bool':\n javaScriptType = 'boolean';\n break;\n case 'uint32':\n javaScriptType = 'number';\n numOpts = {\n min: minUnsigned,\n max: maxFourBytesUnsigned,\n isInt: true,\n isItem\n };\n break;\n case 'int32':\n case 'sint32':\n case 'fixed32':\n case 'sfixed32':\n javaScriptType = 'number';\n numOpts = {\n min: minFourBytes,\n max: maxFourBytes,\n isInt: true,\n isItem\n };\n break;\n case 'uint64':\n javaScriptType = 'number';\n numOpts = {\n min: minUnsigned,\n max: maxEightBytesUnsigned,\n isInt: true,\n isItem\n };\n break;\n case 'fixed64':\n case 'sfixed64':\n case 'int64':\n case 'sint64':\n javaScriptType = 'number';\n numOpts = {\n min: minEightBytes,\n max: maxEightBytes,\n isInt: true,\n isItem\n };\n break;\n case 'double':\n case 'float':\n javaScriptType = 'number';\n numOpts = {\n min: Number.NEGATIVE_INFINITY,\n max: Number.POSITIVE_INFINITY,\n isInt: false,\n isItem\n };\n break;\n default: {\n // Match protobufjs by trying the full relative path at each enclosing scope.\n // Leading-dot names are absolute and must not use enclosing scopes.\n const absolute = protobufType.startsWith('.');\n const typePath = (absolute ? protobufType.slice(1) : protobufType).split('.');\n let resolved: AnyNestedObject;\n let resolvedScope: string[];\n for (let depth = absolute ? 0 : scope.length; depth >= 0; depth--) {\n resolvedScope = [...scope.slice(0, depth), ...typePath];\n let nested = descriptor;\n resolved = undefined;\n for (const part of resolvedScope) {\n resolved = nested?.[part];\n nested = resolved && 'nested' in resolved ? resolved.nested : undefined;\n }\n if (resolved) {\n break;\n }\n }\n if (resolved && 'values' in resolved) {\n javaScriptType = 'number';\n enumValues = Object.values(resolved.values);\n numOpts = {\n min: minFourBytes,\n max: maxFourBytes,\n isInt: true,\n isItem\n };\n } else if (resolved && 'fields' in resolved) {\n this._validateFields(\n errorInfos,\n fieldNames,\n fieldDataValue,\n resolved,\n descriptor,\n schemaId,\n resolvedScope\n );\n javaScriptType = 'object';\n }\n break;\n }\n }\n\n if (typeof fieldDataValue !== javaScriptType) {\n errorInfos.push(\n new ValidationEntry(\n ErrorCode.incorrectType,\n fieldNames,\n protobufType,\n typeof fieldDataValue\n )\n );\n } else if (numOpts) {\n if (numOpts.isInt && !Number.isFinite(fieldDataValue)) {\n errorCode = ErrorCode.infiniteNumber;\n } else if (numOpts.isInt && !Number.isInteger(fieldDataValue)) {\n errorCode = ErrorCode.integerExpected;\n } else if (\n !(!numOpts.isInt && Number.isNaN(fieldDataValue)) &&\n !(fieldDataValue >= numOpts.min && fieldDataValue <= numOpts.max)\n ) {\n errorCode = ErrorCode.numberOutOfRange;\n } else if (enumValues && !enumValues.includes(fieldDataValue)) {\n errorCode = ErrorCode.numberOutOfRange;\n }\n }\n }\n if (errorCode) {\n errorInfos.push(new ValidationEntry(errorCode, fieldNames));\n }\n }\n}\n\nexport const logValidator = new LogValidator();\n","import { BucketMetric, Metric } from '../interfaces';\nimport { BucketHistogram, MetricTag, UpCounter, ValueRecorder } from '../interfaces-private';\nimport { MetricsTags } from './TypeDefinitions';\n\nexport class MetricsUtility {\n private _getMetricTags<T>(metric: Metric<T>): MetricTag[] {\n const tags: MetricsTags = metric.getTags();\n if (tags) {\n return Object.entries(tags).map((entry) => {\n const mt: MetricTag = {\n name: entry[0],\n value: entry[1].toString()\n };\n return mt;\n });\n }\n return undefined;\n }\n\n getUpCounters(metrics: Metric<number>[], reset = true): UpCounter[] {\n return metrics.map((metric) => {\n const data: UpCounter = {\n name: metric.getName(),\n createdTimestamp: metric.getCreatedOn(),\n lastUpdatedTimestamp: metric.getLastUpdatedOn(),\n value: metric.getData(),\n ownerName: metric.getOwnerName(),\n ownerAppName: metric.getOwnerAppName(),\n tags: this._getMetricTags(metric)\n };\n if (reset) {\n metric.reset();\n }\n return data;\n });\n }\n\n getValueRecorders(metrics: Metric<number[]>[], reset = true): ValueRecorder[] {\n return metrics.map((metric) => {\n const data: ValueRecorder = {\n name: metric.getName(),\n createdTimestamp: metric.getCreatedOn(),\n lastUpdatedTimestamp: metric.getLastUpdatedOn(),\n values: metric.getData(),\n ownerName: metric.getOwnerName(),\n ownerAppName: metric.getOwnerAppName(),\n tags: this._getMetricTags(metric)\n };\n if (reset) {\n metric.reset();\n }\n return data;\n });\n }\n\n getBucketHistograms(metrics: BucketMetric<number[]>[], reset = true): BucketHistogram[] {\n return metrics.map((metric) => {\n const data: BucketHistogram = {\n name: metric.getName(),\n createdTimestamp: metric.getCreatedOn(),\n lastUpdatedTimestamp: metric.getLastUpdatedOn(),\n values: metric.getData(),\n buckets: metric.getBuckets(),\n ownerName: metric.getOwnerName(),\n ownerAppName: metric.getOwnerAppName(),\n tags: this._getMetricTags(metric)\n };\n if (reset) {\n metric.reset();\n }\n return data;\n });\n }\n\n getMetricsTags(array: MetricTag[]): MetricsTags {\n // Assuming array is already sorted by name\n const obj: MetricsTags = {};\n array.forEach((tag) => {\n obj[tag.name] = tag.value;\n });\n return obj;\n }\n}\n\nexport const metricsUtility = Object.freeze(new MetricsUtility());\n","import { PayloadProvider, PayloadProviderArgs, Schema, SchematizedPayload } from '../interfaces';\nimport {\n ErrorCode,\n ValidationEntry,\n logValidator,\n maxItemCountAppLimit,\n maxStringLengthAppLimit\n} from './LogValidator';\nimport type { SchematizedData } from './TypeDefinitions';\nimport { schemaUtil } from './SchemaUtil';\nimport { utility } from './Utility';\n\nclass PayloadUtility {\n public checkInputs(schema: Schema, data: SchematizedData): void {\n schemaUtil.checkSchema(schema);\n utility.requireArgument(data, 'data', 'object');\n\n let vEntries: ValidationEntry[];\n let savedUserPayload: SchematizedPayload;\n if (data.userPayload !== undefined && schemaUtil.isInternal(schema)) {\n // For internal schemas where we have nested messages, we need to temporarily\n // remove userPayload, since it's not yet encoded. (If left in place, it would fail\n // validation since it's not UInt8Array). We validate it separately here.\n savedUserPayload = data.userPayload;\n vEntries = logValidator.validate(\n savedUserPayload.schema,\n savedUserPayload.payload,\n true\n );\n this._processValidationResults(\n schemaUtil.getSchemaId(savedUserPayload.schema),\n savedUserPayload.payload,\n vEntries\n );\n data.userPayload = undefined;\n }\n\n vEntries = logValidator.validate(schema, data, true);\n this._processValidationResults(schemaUtil.getSchemaId(schema), data, vEntries);\n\n if (savedUserPayload !== undefined) {\n // Restore userPayload\n data.userPayload = savedUserPayload;\n }\n }\n\n public getExtraFields(schema: Schema, data: SchematizedData): string[] {\n utility.requireArgument(data, 'data', 'object');\n const ignoredFields: string[] = [];\n const subPayload = data.userPayload;\n if (subPayload !== undefined && schemaUtil.isInternal(schema)) {\n // Add fields that are not part of the schema\n ignoredFields.push(...schemaUtil.getExtraFields(subPayload.schema, subPayload.payload));\n }\n ignoredFields.push(...schemaUtil.getExtraFields(schema, data));\n return ignoredFields;\n }\n\n public getPayloadFromProvider(\n provider: PayloadProvider,\n args?: PayloadProviderArgs\n ): SchematizedPayload {\n const payload: SchematizedPayload = provider?.getPayload(args) || undefined;\n if (payload) {\n this.checkInputs(payload.schema, payload.payload);\n }\n return payload;\n }\n\n private _processValidationResults(\n schemaId: string,\n data: SchematizedData,\n ventries: ValidationEntry[]\n ): void {\n for (let i = 0; i < ventries.length; i += 1) {\n const ei = ventries[i];\n\n if (\n ei.errorCode == ErrorCode.stringLengthOverflowAppLimit ||\n ei.errorCode == ErrorCode.itemCountOverflowAppLimit\n ) {\n const lfi = ei.fields.length - 1;\n const obj = this._traverseFields(data, ei.fields.slice(0, lfi));\n const field = ei.fields[lfi];\n if (ei.errorCode == ErrorCode.stringLengthOverflowAppLimit) {\n obj[field] = obj[field].substring(0, maxStringLengthAppLimit);\n } else {\n obj[field].splice(maxItemCountAppLimit);\n }\n } else {\n throw new Error(ei.asMessage(schemaId));\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _traverseFields(data: SchematizedData, fields: string[]): any {\n if (!fields.length) {\n return data;\n }\n return this._traverseFields(data[fields[0]], fields.slice(1));\n }\n}\n\nexport const payloadUtility = Object.freeze(new PayloadUtility());\n","import { UpCounter } from '../interfaces';\nimport { co11y } from './Co11yImpl';\nimport { utility } from './Utility';\n\nconst o11y = 'o11y';\n\nexport type TryCatchOptions = {\n op: string;\n};\n\nexport class PublicSafety {\n private _safeCatchMode = false;\n\n constructor(private readonly _errorCounter?: UpCounter) {}\n\n private _callCo11y(options: TryCatchOptions, hasException: boolean): void {\n if (hasException) {\n co11y.exception(options?.op, o11y);\n } else {\n co11y.success(options?.op, o11y);\n }\n }\n\n /**\n * Instrumentation should never throw in production. Therefore, we need to include in\n * all our public methods a top-most try/catch wrapper. Simply use this function\n * as your first and only top-level call in the function block and sleep well at night.\n *\n * @param fn The body of the unsafe function that doesn't return a value but can throw\n */\n tryCatch(fn: () => void, options?: TryCatchOptions): void {\n let ex;\n try {\n fn();\n } catch (err) {\n ex = true;\n this._prodSafeCatch(err);\n } finally {\n this._callCo11y(options, ex);\n }\n }\n\n /**\n *\n * @param fn The body of the unsafe function that returns a value and that can throw\n * @param noopValue A static, noop instance of V (like a mock) that will be returned in case\n * the function could not be called.\n */\n tryCatchReturn<V>(fn: () => V, noopValue: V, options?: TryCatchOptions): V {\n let ex;\n try {\n utility.requireArgument(noopValue, 'noopValue');\n return fn();\n } catch (err) {\n ex = true;\n this._prodSafeCatch(err);\n return noopValue;\n } finally {\n this._callCo11y(options, ex);\n }\n }\n\n /**\n * Safely handles exceptions. Suppresses throws in a production environment.\n * This method is intended to be called inside a catch block.\n *\n * @param error The error that was caught\n */\n private _prodSafeCatch(error: unknown): void {\n let allowThrow;\n try {\n allowThrow = !utility.isProduction;\n if (allowThrow) {\n // Just throw the error in development\n throw error;\n }\n\n if (this._safeCatchMode) {\n // If we're here, that means code in the try block of prodSafeCatch itself is throwing an error\n // (i.e. prodSafeCatch is already on the stack). Break out now to prevent infinite loop.\n this._safeCatchMode = false;\n\n throw new Error('Internal error in prodSafeCatch.');\n }\n\n this._safeCatchMode = true;\n if (this._errorCounter) {\n this._errorCounter.increment();\n }\n\n if (!(error instanceof Error)) {\n const errorText =\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n (error && (error as any).message) ||\n (typeof error.toString === 'function' ? error.toString() : '');\n error = new Error(errorText);\n }\n\n // If not allowed to throw the error, at least try to log it\n // TODO: This error should be attributed to the global Instrumentation (not to \"this\")\n // this.error(error);\n this._safeCatchMode = false;\n } catch (internalError) {\n // Do not call any methods in this catch block except for console.error\n\n if (allowThrow) {\n // pass it along\n throw internalError;\n }\n\n // eslint-disable-next-line no-console\n if (internalError && console && typeof console.error === 'function') {\n try {\n // eslint-disable-next-line no-console\n console.error(internalError);\n } catch {\n // Nothing we can do at this point\n }\n }\n this._safeCatchMode = false;\n }\n }\n}\n"],"names":[],"mappings":"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"}
@@ -492,19 +492,19 @@ class LogValidator {
492
492
  const schemaId = schemaUtil.getSchemaId(schema);
493
493
  const errorInfos = new Array();
494
494
  const nestedSchema = schemaUtil.getTypes(schema);
495
- this._validateFields(errorInfos, [], data, nestedSchema[schemaTokens.message], nestedSchema, schemaId);
495
+ this._validateFields(errorInfos, [], data, nestedSchema[schemaTokens.message], schema.pbjsSchema.nested, schemaId, [schemaTokens.domain, schemaTokens.feature, schemaTokens.message]);
496
496
  if (errorInfos.length && !noThrow) {
497
497
  throw new Error(errorInfos[0].asMessage(schemaId));
498
498
  }
499
499
  return errorInfos;
500
500
  }
501
- _validateFields(errorInfos, fieldNames, data, message, descriptor, schemaId) {
501
+ _validateFields(errorInfos, fieldNames, data, message, descriptor, schemaId, scope) {
502
502
  const oneofs = message.oneofs || {};
503
503
  const fields = message.fields || {};
504
504
  for (const key in data) {
505
505
  const value = data[key];
506
506
  if (value !== undefined && value !== null) {
507
- const mft = (fieldType, isRepeated, isItem) => this._matchFieldTypes(errorInfos, [...fieldNames, key], value, fieldType, descriptor, schemaId, key, isRepeated, isItem);
507
+ const mft = (fieldType, isRepeated, isItem) => this._matchFieldTypes(errorInfos, [...fieldNames, key], value, fieldType, descriptor, schemaId, scope, isRepeated, isItem);
508
508
  if (oneofs[key]) {
509
509
  mft(fields[oneofs[key].oneof[0]].type);
510
510
  }
@@ -514,7 +514,7 @@ class LogValidator {
514
514
  }
515
515
  }
516
516
  }
517
- _matchFieldTypes(errorInfos, fieldNames, fieldDataValue, protobufType, descriptor, schemaId, key, isRepeated, isItem) {
517
+ _matchFieldTypes(errorInfos, fieldNames, fieldDataValue, protobufType, descriptor, schemaId, scope, isRepeated, isItem) {
518
518
  let errorCode;
519
519
  if (isRepeated) {
520
520
  if (Array.isArray(fieldDataValue)) {
@@ -522,7 +522,7 @@ class LogValidator {
522
522
  errorCode = 7;
523
523
  }
524
524
  fieldDataValue.forEach((value, index) => {
525
- this._matchFieldTypes(errorInfos, [...fieldNames, index.toString()], value, protobufType, descriptor, schemaId, key, undefined, true);
525
+ this._matchFieldTypes(errorInfos, [...fieldNames, index.toString()], value, protobufType, descriptor, schemaId, scope, undefined, true);
526
526
  });
527
527
  }
528
528
  else {
@@ -537,6 +537,7 @@ class LogValidator {
537
537
  else {
538
538
  let numOpts;
539
539
  let javaScriptType;
540
+ let enumValues;
540
541
  switch (protobufType) {
541
542
  case 'string':
542
543
  javaScriptType = 'string';
@@ -605,12 +606,39 @@ class LogValidator {
605
606
  isItem
606
607
  };
607
608
  break;
608
- default:
609
- if (new Set(Object.keys(descriptor)).has(protobufType)) {
610
- this._validateFields(errorInfos, fieldNames, fieldDataValue, descriptor[protobufType], descriptor, schemaId);
609
+ default: {
610
+ const absolute = protobufType.startsWith('.');
611
+ const typePath = (absolute ? protobufType.slice(1) : protobufType).split('.');
612
+ let resolved;
613
+ let resolvedScope;
614
+ for (let depth = absolute ? 0 : scope.length; depth >= 0; depth--) {
615
+ resolvedScope = [...scope.slice(0, depth), ...typePath];
616
+ let nested = descriptor;
617
+ resolved = undefined;
618
+ for (const part of resolvedScope) {
619
+ resolved = nested === null || nested === void 0 ? void 0 : nested[part];
620
+ nested = resolved && 'nested' in resolved ? resolved.nested : undefined;
621
+ }
622
+ if (resolved) {
623
+ break;
624
+ }
625
+ }
626
+ if (resolved && 'values' in resolved) {
627
+ javaScriptType = 'number';
628
+ enumValues = Object.values(resolved.values);
629
+ numOpts = {
630
+ min: minFourBytes,
631
+ max: maxFourBytes,
632
+ isInt: true,
633
+ isItem
634
+ };
635
+ }
636
+ else if (resolved && 'fields' in resolved) {
637
+ this._validateFields(errorInfos, fieldNames, fieldDataValue, resolved, descriptor, schemaId, resolvedScope);
611
638
  javaScriptType = 'object';
612
639
  }
613
640
  break;
641
+ }
614
642
  }
615
643
  if (typeof fieldDataValue !== javaScriptType) {
616
644
  errorInfos.push(new ValidationEntry(2, fieldNames, protobufType, typeof fieldDataValue));
@@ -626,6 +654,9 @@ class LogValidator {
626
654
  !(fieldDataValue >= numOpts.min && fieldDataValue <= numOpts.max)) {
627
655
  errorCode = 4;
628
656
  }
657
+ else if (enumValues && !enumValues.includes(fieldDataValue)) {
658
+ errorCode = 4;
659
+ }
629
660
  }
630
661
  }
631
662
  if (errorCode) {
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry_uploader.js","sources":["../../../../src/shared/Utility.ts","../../../../src/shared/LazyMapToList.ts","../../../../src/shared/SchemaUtil.ts","../../../../src/shared/LogValidator.ts","../../../../src/shared/MetricsUtility.ts","../../../../src/shared/PayloadUtility.ts","../../../../src/simple_collector/SimpleCollector.ts","../../../../../../node_modules/o11y_schema/sf_instrumentation/core_envelope.js","../../../../src/collectors/protobuf-util.ts","../../../../src/collectors/core-collector/CoreEnvelopeProtobufUtility.ts","../../../../src/telemetry_uploader/TelemetryUploader.ts"],"sourcesContent":["import { AllowedOrigins, Activity } from '../interfaces';\nimport { ObjectType } from './TypeDefinitions';\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Navigator/connection\ntype NavigatorWithConnection = {\n readonly connection: {\n readonly effectiveType: string;\n };\n};\n\nclass Utility {\n // We are now in production by default, unless told otherwise.\n // This is to prevent exceptions that may occur before initialization.\n private static _isProduction = true;\n\n public readonly notImplemented = 'Method not implemented.';\n public readonly perfNow: () => number;\n public readonly time: () => { tsNow: number; perfNow: number; timeOrigin: number };\n private readonly _timeOrigin: number;\n\n constructor() {\n const performanceExists = typeof performance !== 'undefined';\n if (performanceExists) {\n if (performance.timeOrigin) {\n this._timeOrigin = performance.timeOrigin;\n } else {\n // if we don't have any start time, we consider our init to be the time origin\n this._timeOrigin = Date.now();\n }\n } else {\n this._timeOrigin = Date.now();\n }\n\n const timeOrigin = this._timeOrigin;\n if (performanceExists && typeof performance.now === 'function') {\n this.perfNow = performance.now.bind(performance);\n this.time = () => {\n const perfNow = this.perfNow();\n return { tsNow: timeOrigin + perfNow, perfNow, timeOrigin };\n };\n } else {\n this.perfNow = () => {\n return Date.now() - timeOrigin;\n };\n this.time = () => {\n const perfNow = this.perfNow();\n return { tsNow: Date.now(), perfNow, timeOrigin };\n };\n }\n }\n\n public get isProduction(): boolean {\n return Utility._isProduction;\n }\n\n public markProduction(value?: boolean): void {\n Utility._isProduction = value ?? true;\n }\n\n // Returns false if check fails\n // if argKind is a string, uses typeof.\n // if argKind is a function, such as String, Number, HTMLElement, uses instanceof.\n // if argKind is an array, expects at least one of the element types to match.\n private _checkArgument<T>(argument: T, argKind: unknown): boolean {\n if (typeof argKind === 'string') {\n return typeof argument === argKind;\n }\n if (typeof argKind === 'function') {\n return argument instanceof argKind;\n }\n if (Array.isArray(argKind)) {\n return argKind.some((arg) => this._checkArgument(argument, arg));\n }\n throw new Error(`Invalid argKind ${argKind}`);\n }\n\n public requireArgument<T>(argument: T, argumentName: string, argKind?: unknown): void {\n let disallowed =\n argument === undefined || argument === null || (argument as unknown) === '';\n const kindSpecified = argKind !== undefined;\n\n if (!disallowed && kindSpecified) {\n disallowed = !this._checkArgument(argument, argKind);\n }\n\n if (disallowed) {\n throw new Error(\n `${argumentName} argument is required${\n kindSpecified ? ' and must be of a supported type.' : '.'\n }`\n );\n }\n }\n\n public requireArgumentIfDefined<T>(\n argument: T,\n argumentName: string,\n argKind: unknown\n ): boolean {\n if (argument === undefined) {\n return false;\n }\n const disallowed =\n argument === null ||\n (argument as unknown) === '' ||\n !this._checkArgument(argument, argKind);\n\n if (disallowed) {\n throw new Error(`${argumentName} argument, if defined, must be of a supported type.`);\n }\n\n return true;\n }\n\n public checkForDenyListedValues<T>(\n argument: T,\n argumentName: string,\n denyList: ReadonlyArray<T>\n ): void {\n if (denyList.some((x) => argument === x)) {\n throw new Error(`The value ${argument} isn't allowed for ${argumentName} argument.`);\n }\n }\n\n public checkForReservedCharacters(\n argument: string,\n argumentName: string,\n reservedChars: ReadonlyArray<string>\n ): void {\n if (argument && reservedChars.some((c) => argument.indexOf(c) >= 0)) {\n throw new Error(\n `The argument ${argumentName} isn't allowed to contain characters from ['${reservedChars.join(\n ', '\n )}']. Received: ${argument}.`\n );\n }\n }\n\n public generateUniqueId(length = 16): string {\n const chars: string[] = [];\n const digits = '0123456789abcdef';\n if (!(length === undefined || length > 0)) {\n throw new Error('If specified, the argument \"length\" must be a positive integer');\n }\n for (let i = 0; i < length; i++) {\n const rand = Math.floor(Math.random() * 16);\n chars.push(digits[rand]);\n }\n return chars.join('');\n }\n\n public getXpath(_element: HTMLElement): string {\n //if the element has siblings with the same type we should return 1, otherwise not\n function hasSameSibs(elm: Element): boolean {\n const name = elm.localName;\n while (elm.nextElementSibling) {\n elm = elm.nextElementSibling;\n if (elm.localName === name) {\n return true;\n }\n }\n return false;\n }\n function idx(sib: Element, name?: string): number {\n //we want to count the siblings of the same type for the xpath, otherwise it is just 1\n if (sib) {\n return (\n idx(sib.previousElementSibling, name || sib.localName) +\n (sib.localName === name ? 1 : 0)\n );\n }\n return 1;\n }\n function segs(elm: HTMLElement): string[] {\n // only run for element nodes\n if (!elm || elm.nodeType !== 1) {\n return [''];\n }\n //only add the number if it is over 1, or if it the first of siblings\n const nodeValue =\n idx(elm) > 1 || hasSameSibs(elm)\n ? `${elm.localName.toLowerCase()}[${idx(elm)}]`\n : elm.localName.toLowerCase();\n //go up and add the element at the end of the path\n return [...segs(elm.parentNode as HTMLElement), nodeValue];\n }\n //concat at the end\n return segs(_element).join('/');\n }\n\n public getAge(timestamp: number): number {\n return timestamp - this._timeOrigin;\n }\n\n // Reads the `navigator` global defensively. VS Code 1.129+ makes `navigator` a\n // NodeJS extension-host global that throws on access (W-24059841); even\n // `typeof navigator` throws, because it evaluates the getter. Any read must be\n // wrapped in try/catch and degrade to `undefined` when navigator is unavailable.\n private _getNavigatorSafe(): Navigator | undefined {\n try {\n return typeof navigator !== 'undefined' ? navigator : undefined;\n } catch {\n return undefined;\n }\n }\n\n private _hasEffectiveConnectionType(value: unknown): value is NavigatorWithConnection {\n if (typeof value !== 'object' || value === null || !('connection' in value)) {\n return false;\n }\n\n const connection = value.connection;\n return (\n typeof connection === 'object' &&\n connection !== null &&\n 'effectiveType' in connection &&\n typeof connection.effectiveType === 'string'\n );\n }\n\n public getConnectionType(): string | undefined {\n const nav = this._getNavigatorSafe();\n\n return this._hasEffectiveConnectionType(nav) ? nav.connection.effectiveType : undefined;\n }\n\n public clone<T>(value: T): T {\n return JSON.parse(JSON.stringify(value));\n }\n\n public definedValueOrDefault<T>(value: T, defaultValue: T): T {\n return value !== undefined ? value : defaultValue;\n }\n\n public getGlobal(): typeof globalThis {\n if (typeof globalThis === 'object') {\n return globalThis;\n }\n if (typeof self === 'object') {\n return self;\n }\n throw new Error('Unable to locate globalThis or self');\n }\n\n public getIsBeaconSupported(): boolean {\n const g = this.getGlobal();\n const nav = this._getNavigatorSafe();\n return typeof nav?.sendBeacon === 'function' && typeof g.Blob === 'function';\n }\n\n public estimateObjectSize(object: unknown): number {\n const objectSet = new Set<ObjectType>();\n const stack: Array<unknown> = [object];\n let bytes = 0;\n\n while (stack.length) {\n const value: unknown = stack.pop();\n if (typeof value === 'boolean') {\n bytes += 4;\n } else if (typeof value === 'string') {\n bytes += value.length * 2;\n } else if (typeof value === 'number') {\n bytes += 8;\n } else if (\n value instanceof Uint8Array ||\n value instanceof Uint8ClampedArray ||\n value instanceof Uint16Array ||\n value instanceof Uint32Array ||\n value instanceof Int8Array ||\n value instanceof Int16Array ||\n value instanceof Int32Array ||\n value instanceof Float32Array ||\n value instanceof Float64Array\n ) {\n bytes += value.byteLength;\n } else if (typeof value === 'object') {\n const obj: ObjectType = value as ObjectType;\n if (!objectSet.has(obj)) {\n objectSet.add(obj);\n for (const key in obj) {\n stack.push(obj[key]);\n }\n }\n }\n }\n return bytes;\n }\n\n // swallows exceptions on production.\n // Ensure that code that follows this call is a proper no-op.\n noProdThrow(e: unknown): void | never {\n if (utility.isProduction) {\n return;\n }\n throw e;\n }\n\n isAllowedOrigin(input: string, allowed: AllowedOrigins): boolean {\n return (\n Array.isArray(allowed) &&\n allowed.some(\n (origin) =>\n origin === '*' ||\n input === origin ||\n (origin instanceof RegExp && origin.test(input))\n )\n );\n }\n\n roundNumber(value: number, decimals: number): number {\n const pow = Math.pow(10, decimals);\n return Math.round(value * pow) / pow;\n }\n\n roundNumbersInObject(obj: ObjectType, decimals: number): void {\n if (obj) {\n Object.entries(obj).forEach(([key, value]) => {\n if (typeof value === 'number') {\n obj[key] = this.roundNumber(value, decimals);\n }\n });\n }\n }\n\n // Attempts to convert a relative URL to an absolute URL, returns the input value as-is if it can't.\n tryGetAbsoluteUrl(url: string): string {\n if (url?.startsWith('//') && typeof window === 'object') {\n return (window.location.protocol ?? '') + url;\n } else if (url?.startsWith('/') && typeof window === 'object') {\n return (window.location.origin ?? '') + url;\n }\n return url;\n }\n\n /**\n * Validates that a parent activity matches the expected external/internal type.\n * External activities should only have external parents, internal activities should only have internal parents.\n *\n * @param isExternal - Whether the current activity is external (undefined is treated as false)\n * @param parentActivity - The parent activity to validate\n * @returns The parent activity if it matches the expected type, undefined otherwise\n */\n validateParentActivityType(\n isExternal: boolean | undefined,\n parentActivity: Activity | null | undefined\n ): Activity | undefined {\n const activityIsExternal = isExternal ?? false;\n\n if (!parentActivity) {\n return undefined;\n }\n\n const parentIsExternal = parentActivity.isExternal();\n\n if (activityIsExternal === parentIsExternal) {\n return parentActivity;\n } else {\n const currentType = activityIsExternal ? 'external' : 'internal';\n const parentType = parentIsExternal ? 'external' : 'internal';\n throw new Error(\n `Parent activity type mismatch: ${currentType} activity cannot have ${parentType} parent.`\n );\n }\n }\n}\n\nconst _utility = new Utility();\nconst global: Record<string, unknown> = _utility.getGlobal();\n_utility.markProduction(global?.__O11Y_IS_PROD__ as boolean | undefined);\n\nexport const utility = Object.freeze(_utility);\n","export class LazyMapToList<Key, ElementType> {\n private readonly _lazyMap = new Map<Key, Array<ElementType>>();\n\n private _maxSize: number;\n constructor(maxSize?: number) {\n if (maxSize !== undefined) {\n if (typeof maxSize === 'number' && maxSize > 0) {\n this._maxSize = Math.ceil(maxSize);\n return;\n }\n throw new Error('maxSize must be a positive number');\n }\n }\n\n get maxSize(): number {\n return this._maxSize;\n }\n\n get size(): number {\n return this._lazyMap.size;\n }\n\n /**\n * Adds the value to the list specific to the key. If the list doesn't exist,\n * it will be lazily created as long as there are fewer keys than the max, if specified.\n *\n * @param key The key for the map\n * @param value The value to be added to the list\n */\n push(key: Key, value: ElementType): boolean {\n let buffer = this._lazyMap.get(key);\n if (!buffer) {\n if (this.maxSize !== undefined && this.size === this.maxSize) {\n return false;\n }\n buffer = new Array<ElementType>();\n this._lazyMap.set(key, buffer);\n }\n buffer.push(value);\n return true;\n }\n\n getMessages(key: Key, extract?: boolean): Array<ElementType> {\n const msgs = this._lazyMap.get(key);\n if (extract && this._lazyMap.has(key)) {\n this._lazyMap.set(key, []);\n }\n return msgs || [];\n }\n\n getAllMessages(extract?: boolean): Map<Key, Array<ElementType>> {\n const map = new Map<Key, Array<ElementType>>();\n for (const [key, value] of this._lazyMap.entries()) {\n if (value.length) {\n map.set(key, this.getMessages(key, extract));\n }\n }\n return map;\n }\n\n // Convenience functions for backwards compatibility\n extractMessages(key: Key): Array<ElementType> {\n return this.getMessages(key, true);\n }\n extractAllMessages(): Map<Key, Array<ElementType>> {\n return this.getAllMessages(true);\n }\n\n get totalItemCount(): number {\n let count = 0;\n for (const array of this._lazyMap.values()) {\n count += array.length;\n }\n return count;\n }\n}\n","import { IField, INamespace, IType, Schema, SchematizedPayload, SchemaTokens } from '../interfaces';\nimport {\n AnyNestedObject,\n PbjsNestedObjectDescriptor,\n ProtoOptions,\n SchematizedData\n} from './TypeDefinitions';\nimport { utility } from './Utility';\n\nclass SchemaUtil {\n public getSchemaId(schema: Schema): string {\n return `${schema.namespace}.${schema.name}`;\n }\n public isInternal(schema: Schema): boolean {\n return schema?.namespace === 'sf.instrumentation';\n }\n\n public makePayload(\n schema: Schema,\n data: SchematizedData,\n onlyIfBoth = true\n ): SchematizedPayload {\n if (!onlyIfBoth || (schema !== undefined && data !== undefined)) {\n return {\n schema,\n payload: data\n };\n }\n return undefined;\n }\n\n public checkSchema(schema: Schema): SchemaTokens {\n utility.requireArgument(schema, 'schema', 'object');\n utility.requireArgument(schema.namespace, 'schema.namespace', 'string');\n utility.requireArgument(schema.name, 'schema.name', 'string');\n utility.requireArgument(schema.pbjsSchema, 'schema.pbjsSchema', 'object');\n return this._getTokens(schema);\n }\n\n private _getTokens(schema: Schema): SchemaTokens {\n const parts: string[] = schema.namespace.split('.');\n if (parts.length !== 2) {\n throw new Error(\n `Schema \"${this.getSchemaId(\n schema\n )}\" must have a namespace of the form \"domain.feature\".`\n );\n }\n return {\n domain: parts[0],\n feature: parts[1],\n message: schema.name\n };\n }\n\n private _getAnyNestedObject(schema: Schema, scopes: string[]): AnyNestedObject {\n return scopes.reduce((prev: INamespace, currentScope: string) => {\n const descriptor: PbjsNestedObjectDescriptor = prev.nested;\n if (descriptor) {\n const ano: AnyNestedObject = descriptor[currentScope];\n if (ano) {\n return ano;\n }\n }\n throw new Error(\n `Cannot locate ${scopes.join('.')} in schema with ID ${this.getSchemaId(schema)}`\n );\n }, schema.pbjsSchema);\n }\n\n public getTypes(schema: Schema): PbjsNestedObjectDescriptor {\n const schemaTokens: SchemaTokens = this.checkSchema(schema);\n const namespace: INamespace = this._getAnyNestedObject(schema, [\n schemaTokens.domain,\n schemaTokens.feature\n ]);\n const descriptor: PbjsNestedObjectDescriptor = namespace.nested;\n if (!descriptor) {\n throw new Error(`Cannot parse schema with ID ${this.getSchemaId(schema)}`);\n }\n return descriptor;\n }\n\n public getType(schema: Schema, messageName: string): IType {\n utility.requireArgument(messageName, 'messageName', 'string');\n const descriptor: PbjsNestedObjectDescriptor = this.getTypes(schema);\n\n const message = descriptor[messageName] as IType;\n if (!message) {\n throw new Error(\n `Cannot locate message ${messageName} in schema with ID ${this.getSchemaId(schema)}`\n );\n }\n return message;\n }\n\n public getOptions(schema: Schema, messageName?: string, fieldName?: string): ProtoOptions {\n if (fieldName) {\n utility.requireArgument(messageName, 'messageName', 'string');\n }\n const schemaTokens: SchemaTokens = this.checkSchema(schema);\n\n if (!messageName) {\n const namespace: INamespace = this._getAnyNestedObject(schema, [\n schemaTokens.domain,\n schemaTokens.feature\n ]);\n return namespace.options;\n }\n\n const type: IType = this.getType(schema, messageName);\n if (!fieldName) {\n return type.options;\n }\n\n const field: IField = type.fields[fieldName];\n if (!field) {\n const schemaId = this.getSchemaId(schema);\n throw new Error(\n `Cannot locate field ${fieldName} in message ${messageName} in schema with ID ${schemaId}`\n );\n }\n return field.options;\n }\n\n public getExtraFields(schema: Schema, data: SchematizedData): string[] {\n const { message } = this._getTokens(schema);\n const types: PbjsNestedObjectDescriptor = this.getTypes(schema);\n // This assumes that the schema is flat\n const fields: Record<string, IField> = (types[message] as IType)['fields'];\n const fieldSet = new Set(Object.keys(fields));\n\n const extraFields =\n data !== null && data !== undefined\n ? Object.keys(data).filter((key) => !fieldSet.has(key))\n : [];\n return extraFields;\n }\n}\n\nexport const schemaUtil = new SchemaUtil();\n","import { IType, Schema, SchemaTokens } from '../interfaces';\nimport type {\n PbjsNestedObjectDescriptor,\n SchematizedData,\n SchematizedDataValue\n} from './TypeDefinitions';\nimport { schemaUtil } from './SchemaUtil';\nimport { utility } from './Utility';\n\n// These are hard-coded limits at the app-level. They may be overridden with a corresponding\n// option at the field level in the schema metadata.\nexport const maxStringLengthAppLimit = 10000; // For strings\nexport const maxItemCountAppLimit = 10000; // For arrays\n\nconst minUnsigned = 0;\nconst maxFourBytes = 2147483647;\nconst minFourBytes = -2147483648;\nconst maxFourBytesUnsigned = 4294967295;\nconst maxEightBytes = 9223372036854776000;\nconst minEightBytes = -9223372036854776001;\nconst maxEightBytesUnsigned = 18446744073709552000;\n\nexport const enum ErrorCode {\n notAnError = 0, // To ensure truthy-checks work for proper error codes.\n arrayExpected,\n incorrectType,\n infiniteNumber,\n numberOutOfRange,\n malformedBytesArray,\n stringLengthOverflowAppLimit,\n itemCountOverflowAppLimit,\n stringLengthOverflow,\n stringLengthUnderflow,\n itemCountOverflow,\n itemCountUnderflow,\n integerExpected,\n invalidItemValue\n}\n\nexport class ValidationEntry {\n constructor(\n public errorCode: ErrorCode,\n public fields: string[],\n public expected?: string,\n public received?: string\n ) {}\n\n asMessage(schemaId: string): string {\n const key: string =\n this.fields[0] +\n this.fields\n .slice(1)\n .reduce(\n (prev, current) =>\n Number(current) >= 0 ? `${prev}[${current}]` : `${prev}.${current}`,\n ''\n );\n let msg: string;\n\n switch (this.errorCode) {\n case ErrorCode.arrayExpected:\n msg = 'Repeated field must be an array';\n break;\n case ErrorCode.incorrectType:\n msg = `Expected type ${this.expected} but received type ${this.received}`;\n break;\n case ErrorCode.infiniteNumber:\n msg = 'Value must be finite';\n break;\n case ErrorCode.numberOutOfRange:\n msg = 'Value is out of range for its type';\n break;\n case ErrorCode.malformedBytesArray:\n msg = 'Bytes array is malformed';\n break;\n case ErrorCode.stringLengthOverflowAppLimit:\n msg = 'Exceeded app limit for maximum string length';\n break;\n case ErrorCode.itemCountOverflowAppLimit:\n msg = 'Exceeded app limit for item count';\n break;\n case ErrorCode.integerExpected:\n msg = 'Value must be an integer';\n break;\n case ErrorCode.invalidItemValue:\n msg = 'Values like null or undefined are not allowed for items in repeated fields';\n break;\n // TODO: The following should be used when we start validating against schema metadata\n // case ErrorCode.stringLengthOverflow:\n // msg = 'Exceeded maximum string length';\n // break;\n // case ErrorCode.stringLengthUnderflow:\n // msg = 'Failed minimum string length';\n // break;\n // case ErrorCode.itemCountOverflow:\n // msg = 'Exceeded maximum item count';\n // break;\n // case ErrorCode.itemCountUnderflow:\n // msg = 'Failed minimum item count';\n // break;\n default:\n msg = `Unknown error code: ${this.errorCode}`;\n break;\n }\n\n return `Schema ${schemaId} on field \"${key}\": ${msg}`;\n }\n}\n\ntype NumberRangeOptions = {\n min: number;\n max: number;\n isInt: boolean;\n isItem: boolean;\n};\n\nclass LogValidator {\n public validate(schema: Schema, data: SchematizedData, noThrow = false): ValidationEntry[] {\n const schemaTokens: SchemaTokens = schemaUtil.checkSchema(schema);\n utility.requireArgument(data, 'data', 'object');\n\n const schemaId: string = schemaUtil.getSchemaId(schema);\n\n const errorInfos = new Array<ValidationEntry>();\n\n const nestedSchema: PbjsNestedObjectDescriptor = schemaUtil.getTypes(schema);\n this._validateFields(\n errorInfos,\n [],\n data,\n nestedSchema[schemaTokens.message] as IType,\n nestedSchema,\n schemaId\n );\n\n if (errorInfos.length && !noThrow) {\n throw new Error(errorInfos[0].asMessage(schemaId));\n }\n\n return errorInfos;\n }\n\n private _validateFields(\n errorInfos: ValidationEntry[],\n fieldNames: string[],\n data: SchematizedData,\n message: IType,\n descriptor: PbjsNestedObjectDescriptor,\n schemaId: string\n ): void {\n const oneofs = message.oneofs || {};\n const fields = message.fields || {};\n for (const key in data) {\n const value = data[key];\n // if it's null or undefined we don't need to match\n if (value !== undefined && value !== null) {\n const mft: (fieldType: string, isRepeated?: boolean, isItem?: boolean) => void = (\n fieldType,\n isRepeated,\n isItem\n ) =>\n this._matchFieldTypes(\n errorInfos,\n [...fieldNames, key],\n value,\n fieldType,\n descriptor,\n schemaId,\n key,\n isRepeated,\n isItem\n );\n\n if (oneofs[key]) {\n mft(fields[oneofs[key].oneof[0]].type);\n } else if (fields[key]) {\n mft(fields[key].type, fields[key].rule === 'repeated');\n }\n // if the field is not present in the schema then we ignore it and will drop it later\n }\n }\n }\n\n private _matchFieldTypes(\n errorInfos: ValidationEntry[],\n fieldNames: string[],\n fieldDataValue: SchematizedDataValue,\n protobufType: string,\n descriptor: PbjsNestedObjectDescriptor,\n schemaId: string,\n key: string,\n isRepeated: boolean,\n isItem: boolean // true if inside a repeated field\n ): void {\n let errorCode: ErrorCode;\n\n if (isRepeated) {\n if (Array.isArray(fieldDataValue)) {\n if (fieldDataValue.length > maxItemCountAppLimit) {\n errorCode = ErrorCode.itemCountOverflowAppLimit;\n }\n\n fieldDataValue.forEach((value, index: number) => {\n // if it's repeated they should all be the same type so we can just run it as is\n this._matchFieldTypes(\n errorInfos,\n [...fieldNames, index.toString()],\n value,\n protobufType,\n descriptor,\n schemaId,\n key,\n undefined, // rule\n true // isItem\n );\n });\n } else {\n errorCode = ErrorCode.arrayExpected;\n }\n } else if (fieldDataValue == null || fieldDataValue === undefined) {\n if (isItem) {\n // Null and undefined are allowed unless they're in an array\n errorCode = ErrorCode.invalidItemValue;\n }\n } else {\n let numOpts: NumberRangeOptions;\n let javaScriptType: string;\n switch (protobufType) {\n case 'string':\n javaScriptType = 'string';\n if (fieldDataValue.length > maxStringLengthAppLimit) {\n errorCode = ErrorCode.stringLengthOverflowAppLimit;\n }\n break;\n case 'bytes':\n javaScriptType = 'object';\n if (!(fieldDataValue instanceof Uint8Array)) {\n errorCode = ErrorCode.malformedBytesArray;\n }\n break;\n case 'bool':\n javaScriptType = 'boolean';\n break;\n case 'uint32':\n javaScriptType = 'number';\n numOpts = {\n min: minUnsigned,\n max: maxFourBytesUnsigned,\n isInt: true,\n isItem\n };\n break;\n case 'int32':\n case 'sint32':\n case 'fixed32':\n case 'sfixed32':\n javaScriptType = 'number';\n numOpts = {\n min: minFourBytes,\n max: maxFourBytes,\n isInt: true,\n isItem\n };\n break;\n case 'uint64':\n javaScriptType = 'number';\n numOpts = {\n min: minUnsigned,\n max: maxEightBytesUnsigned,\n isInt: true,\n isItem\n };\n break;\n case 'fixed64':\n case 'sfixed64':\n case 'int64':\n case 'sint64':\n javaScriptType = 'number';\n numOpts = {\n min: minEightBytes,\n max: maxEightBytes,\n isInt: true,\n isItem\n };\n break;\n case 'double':\n case 'float':\n javaScriptType = 'number';\n numOpts = {\n min: Number.NEGATIVE_INFINITY,\n max: Number.POSITIVE_INFINITY,\n isInt: false,\n isItem\n };\n break;\n default:\n if (new Set(Object.keys(descriptor)).has(protobufType)) {\n //now we check this schema\n this._validateFields(\n errorInfos,\n fieldNames,\n fieldDataValue,\n descriptor[protobufType] as IType,\n descriptor,\n schemaId\n );\n javaScriptType = 'object';\n }\n break;\n }\n\n if (typeof fieldDataValue !== javaScriptType) {\n errorInfos.push(\n new ValidationEntry(\n ErrorCode.incorrectType,\n fieldNames,\n protobufType,\n typeof fieldDataValue\n )\n );\n } else if (numOpts) {\n if (numOpts.isInt && !Number.isFinite(fieldDataValue)) {\n errorCode = ErrorCode.infiniteNumber;\n } else if (numOpts.isInt && !Number.isInteger(fieldDataValue)) {\n errorCode = ErrorCode.integerExpected;\n } else if (\n !(!numOpts.isInt && Number.isNaN(fieldDataValue)) &&\n !(fieldDataValue >= numOpts.min && fieldDataValue <= numOpts.max)\n ) {\n errorCode = ErrorCode.numberOutOfRange;\n }\n }\n }\n if (errorCode) {\n errorInfos.push(new ValidationEntry(errorCode, fieldNames));\n }\n }\n}\n\nexport const logValidator = new LogValidator();\n","import { BucketMetric, Metric } from '../interfaces';\nimport { BucketHistogram, MetricTag, UpCounter, ValueRecorder } from '../interfaces-private';\nimport { MetricsTags } from './TypeDefinitions';\n\nexport class MetricsUtility {\n private _getMetricTags<T>(metric: Metric<T>): MetricTag[] {\n const tags: MetricsTags = metric.getTags();\n if (tags) {\n return Object.entries(tags).map((entry) => {\n const mt: MetricTag = {\n name: entry[0],\n value: entry[1].toString()\n };\n return mt;\n });\n }\n return undefined;\n }\n\n getUpCounters(metrics: Metric<number>[], reset = true): UpCounter[] {\n return metrics.map((metric) => {\n const data: UpCounter = {\n name: metric.getName(),\n createdTimestamp: metric.getCreatedOn(),\n lastUpdatedTimestamp: metric.getLastUpdatedOn(),\n value: metric.getData(),\n ownerName: metric.getOwnerName(),\n ownerAppName: metric.getOwnerAppName(),\n tags: this._getMetricTags(metric)\n };\n if (reset) {\n metric.reset();\n }\n return data;\n });\n }\n\n getValueRecorders(metrics: Metric<number[]>[], reset = true): ValueRecorder[] {\n return metrics.map((metric) => {\n const data: ValueRecorder = {\n name: metric.getName(),\n createdTimestamp: metric.getCreatedOn(),\n lastUpdatedTimestamp: metric.getLastUpdatedOn(),\n values: metric.getData(),\n ownerName: metric.getOwnerName(),\n ownerAppName: metric.getOwnerAppName(),\n tags: this._getMetricTags(metric)\n };\n if (reset) {\n metric.reset();\n }\n return data;\n });\n }\n\n getBucketHistograms(metrics: BucketMetric<number[]>[], reset = true): BucketHistogram[] {\n return metrics.map((metric) => {\n const data: BucketHistogram = {\n name: metric.getName(),\n createdTimestamp: metric.getCreatedOn(),\n lastUpdatedTimestamp: metric.getLastUpdatedOn(),\n values: metric.getData(),\n buckets: metric.getBuckets(),\n ownerName: metric.getOwnerName(),\n ownerAppName: metric.getOwnerAppName(),\n tags: this._getMetricTags(metric)\n };\n if (reset) {\n metric.reset();\n }\n return data;\n });\n }\n\n getMetricsTags(array: MetricTag[]): MetricsTags {\n // Assuming array is already sorted by name\n const obj: MetricsTags = {};\n array.forEach((tag) => {\n obj[tag.name] = tag.value;\n });\n return obj;\n }\n}\n\nexport const metricsUtility = Object.freeze(new MetricsUtility());\n","import { PayloadProvider, PayloadProviderArgs, Schema, SchematizedPayload } from '../interfaces';\nimport {\n ErrorCode,\n ValidationEntry,\n logValidator,\n maxItemCountAppLimit,\n maxStringLengthAppLimit\n} from './LogValidator';\nimport type { SchematizedData } from './TypeDefinitions';\nimport { schemaUtil } from './SchemaUtil';\nimport { utility } from './Utility';\n\nclass PayloadUtility {\n public checkInputs(schema: Schema, data: SchematizedData): void {\n schemaUtil.checkSchema(schema);\n utility.requireArgument(data, 'data', 'object');\n\n let vEntries: ValidationEntry[];\n let savedUserPayload: SchematizedPayload;\n if (data.userPayload !== undefined && schemaUtil.isInternal(schema)) {\n // For internal schemas where we have nested messages, we need to temporarily\n // remove userPayload, since it's not yet encoded. (If left in place, it would fail\n // validation since it's not UInt8Array). We validate it separately here.\n savedUserPayload = data.userPayload;\n vEntries = logValidator.validate(\n savedUserPayload.schema,\n savedUserPayload.payload,\n true\n );\n this._processValidationResults(\n schemaUtil.getSchemaId(savedUserPayload.schema),\n savedUserPayload.payload,\n vEntries\n );\n data.userPayload = undefined;\n }\n\n vEntries = logValidator.validate(schema, data, true);\n this._processValidationResults(schemaUtil.getSchemaId(schema), data, vEntries);\n\n if (savedUserPayload !== undefined) {\n // Restore userPayload\n data.userPayload = savedUserPayload;\n }\n }\n\n public getExtraFields(schema: Schema, data: SchematizedData): string[] {\n utility.requireArgument(data, 'data', 'object');\n const ignoredFields: string[] = [];\n const subPayload = data.userPayload;\n if (subPayload !== undefined && schemaUtil.isInternal(schema)) {\n // Add fields that are not part of the schema\n ignoredFields.push(...schemaUtil.getExtraFields(subPayload.schema, subPayload.payload));\n }\n ignoredFields.push(...schemaUtil.getExtraFields(schema, data));\n return ignoredFields;\n }\n\n public getPayloadFromProvider(\n provider: PayloadProvider,\n args?: PayloadProviderArgs\n ): SchematizedPayload {\n const payload: SchematizedPayload = provider?.getPayload(args) || undefined;\n if (payload) {\n this.checkInputs(payload.schema, payload.payload);\n }\n return payload;\n }\n\n private _processValidationResults(\n schemaId: string,\n data: SchematizedData,\n ventries: ValidationEntry[]\n ): void {\n for (let i = 0; i < ventries.length; i += 1) {\n const ei = ventries[i];\n\n if (\n ei.errorCode == ErrorCode.stringLengthOverflowAppLimit ||\n ei.errorCode == ErrorCode.itemCountOverflowAppLimit\n ) {\n const lfi = ei.fields.length - 1;\n const obj = this._traverseFields(data, ei.fields.slice(0, lfi));\n const field = ei.fields[lfi];\n if (ei.errorCode == ErrorCode.stringLengthOverflowAppLimit) {\n obj[field] = obj[field].substring(0, maxStringLengthAppLimit);\n } else {\n obj[field].splice(maxItemCountAppLimit);\n }\n } else {\n throw new Error(ei.asMessage(schemaId));\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _traverseFields(data: SchematizedData, fields: string[]): any {\n if (!fields.length) {\n return data;\n }\n return this._traverseFields(data[fields[0]], fields.slice(1));\n }\n}\n\nexport const payloadUtility = Object.freeze(new PayloadUtility());\n","import {\n CoreEnvelopeBuilder,\n CoreEnvelopeContentsRaw,\n LogMessageRaw,\n StaticAttributes\n} from 'o11y/core_envelope';\nimport { LazyMapToList, SchematizedData, schemaUtil, utility } from 'o11y/shared';\nimport {\n LogCollector,\n LogMeta,\n MetricsCollector,\n MetricsExtractorMethods,\n Schema\n} from '../interfaces';\nimport {\n EstimatedByteSizeChangeCallbackType,\n PrecollectCallbackType,\n SimpleCollectorOptions\n} from './interfaces/SimpleCollectorOptions';\n\nconst defaultMaxUniqueSchemas = 10000;\n\nexport class SimpleCollector implements LogCollector, MetricsCollector {\n private readonly _messageBuffers: LazyMapToList<Schema, LogMessageRaw>;\n private readonly _staticAttributes: StaticAttributes;\n private readonly _precollectCallback: PrecollectCallbackType;\n private readonly _estimatedByteSizeChangeCallback: EstimatedByteSizeChangeCallbackType;\n private _metricsExtractors: MetricsExtractorMethods;\n private _messageSize = 0;\n private _isCollecting = false;\n\n constructor(options?: SimpleCollectorOptions) {\n let maxUniqueSchemas = defaultMaxUniqueSchemas;\n if (options) {\n const env = options.environment;\n if (env) {\n this._staticAttributes = {\n appName: env.appName,\n appVersion: env.appVersion,\n appExperience: env.appExperience,\n deviceId: env.deviceId,\n deviceModel: env.deviceModel,\n sdkVersion: env.sdkVersion\n };\n }\n\n if (\n utility.requireArgumentIfDefined(\n options.precollectCallback,\n 'options.precollectCallback',\n 'function'\n )\n ) {\n this._precollectCallback = options.precollectCallback;\n }\n\n if (\n utility.requireArgumentIfDefined(\n options.estimatedByteSizeChangeCallback,\n 'options.estimatedByteSizeChangeCallback',\n 'function'\n )\n ) {\n this._estimatedByteSizeChangeCallback = options.estimatedByteSizeChangeCallback;\n }\n\n const mus: number = options.maxUniqueSchemas;\n if (mus !== undefined) {\n if (typeof mus !== 'number' || !(mus > 0)) {\n throw new Error('options.maxUniqueSchemas, if defined, must be > 0');\n }\n maxUniqueSchemas = mus;\n }\n }\n this._messageBuffers = new LazyMapToList<Schema, LogMessageRaw>(maxUniqueSchemas);\n }\n\n private _triggerEstimatedByteSizeChange(newSize: number): void {\n return this._estimatedByteSizeChangeCallback?.(newSize);\n }\n\n collect(schema: Schema, data: SchematizedData, logMeta: LogMeta): void {\n if (this._isCollecting) {\n return;\n }\n this._isCollecting = true;\n try {\n const msg: LogMessageRaw = {\n timestamp: logMeta.timestamp,\n data,\n age: logMeta.age,\n rootId: logMeta.rootId,\n seq: logMeta.sequence,\n sseq: logMeta.schemaSequence,\n loggerName: logMeta.loggerName,\n pagePayload: logMeta.pagePayload,\n loggerAppName: logMeta.loggerAppName,\n connectionType: logMeta.connectionType,\n appPayload: logMeta.appPayload,\n csId: logMeta.clientSessionId,\n recCsId: logMeta.receiverClientSessionId,\n recRootId: logMeta.receiverRootId,\n tenantClass: logMeta.tenantClass\n };\n\n if (this._precollectCallback?.(schema, msg) === false) {\n return;\n }\n\n if (!this._messageBuffers.push(schema, msg)) {\n throw new Error(\n `Buffer is full. Refusing schemaId ${schemaUtil.getSchemaId(schema)}`\n );\n }\n\n this._messageSize += utility.estimateObjectSize(msg);\n this._triggerEstimatedByteSizeChange(this.estimatedByteSize);\n } finally {\n this._isCollecting = false;\n }\n }\n\n get estimatedByteSize(): number {\n return this._messageSize + this.metricsCount * 8;\n }\n\n get hasData(): boolean {\n return this.messagesCount > 0 || this.metricsCount > 0;\n }\n\n get messagesCount(): number {\n return this._messageBuffers.totalItemCount;\n }\n\n get metricsCount(): number {\n let count = 0;\n\n if (this._metricsExtractors) {\n count += this._metricsExtractors.getAllUpCounters().length;\n count += this._metricsExtractors.getAllValueRecorders().length;\n count += this._metricsExtractors.getAllBucketHistograms().length;\n }\n\n return count;\n }\n\n // Get data from message buffer & corresponding metrics & clear the envelope\n getRawContentsOfCoreEnvelope(): CoreEnvelopeContentsRaw {\n const contents: CoreEnvelopeContentsRaw = {\n staticAttributes: this._staticAttributes,\n messages: this._messageBuffers.getAllMessages(true)\n };\n\n if (this._metricsExtractors) {\n contents.upCounters = CoreEnvelopeBuilder.getUpCounters(\n this._metricsExtractors.getAllUpCounters(),\n true\n );\n contents.valueRecorders = CoreEnvelopeBuilder.getValueRecorders(\n this._metricsExtractors.getAllValueRecorders(),\n true\n );\n contents.bucketHistograms = CoreEnvelopeBuilder.getBucketHistograms(\n this._metricsExtractors.getAllBucketHistograms(),\n true\n );\n }\n\n this._messageSize = 0;\n this._triggerEstimatedByteSizeChange(this.estimatedByteSize);\n return contents;\n }\n\n receiveMetricsExtractors(metricsExtractors: MetricsExtractorMethods): void {\n this._metricsExtractors = metricsExtractors;\n }\n}\n","export const core_envelope={namespace:\"sf.instrumentation\",name:\"CoreEnvelope\",pbjsSchema:{\"nested\":{\"sf\":{\"nested\":{\"instrumentation\":{\"nested\":{\"MessageBundle\":{\"fields\":{\"messages\":{\"rule\":\"repeated\",\"id\":2,\"type\":\"LogMessage\"},\"schemaName\":{\"id\":1,\"type\":\"string\"}}},\"Metrics\":{\"fields\":{\"globalMetricTags\":{\"rule\":\"repeated\",\"id\":4,\"type\":\"MetricTag\"},\"bucketHistograms\":{\"rule\":\"repeated\",\"id\":3,\"type\":\"BucketHistogram\"},\"valueRecorders\":{\"rule\":\"repeated\",\"id\":2,\"type\":\"ValueRecorder\"},\"upCounters\":{\"rule\":\"repeated\",\n\"id\":1,\"type\":\"UpCounter\"}}},\"CoreEnvelopeDiagnostics\":{\"fields\":{\"schemaVersion\":{\"id\":6,\"type\":\"string\"},\"generatedTimestamp\":{\"id\":2,\"type\":\"double\"},\"bundleCount\":{\"id\":3,\"type\":\"uint32\"},\"upCounterCount\":{\"id\":4,\"type\":\"uint32\"},\"valueRecorderCount\":{\"id\":5,\"type\":\"uint32\"},\"key\":{\"id\":1,\"type\":\"string\"},\"bucketHistogramCount\":{\"id\":7,\"type\":\"uint32\"}}},\"LogMessage\":{\"fields\":{\"data\":{\"id\":2,\"type\":\"bytes\"},\"rootId\":{\"id\":4,\"type\":\"string\"},\"csId\":{\"id\":12,\"type\":\"string\"},\"recCsId\":{\"id\":13,\n\"type\":\"string\"},\"pagePayload\":{\"id\":7,\"type\":\"Payload\"},\"connectionType\":{\"id\":9,\"type\":\"string\"},\"appPayload\":{\"id\":10,\"type\":\"Payload\"},\"tenantClass\":{\"id\":15,\"type\":\"string\"},\"loggerAppName\":{\"id\":8,\"type\":\"string\"},\"sseq\":{\"id\":11,\"type\":\"uint32\"},\"recRootId\":{\"id\":14,\"type\":\"string\"},\"loggerName\":{\"id\":6,\"type\":\"string\"},\"age\":{\"id\":3,\"type\":\"double\"},\"seq\":{\"id\":5,\"type\":\"uint32\"},\"timestamp\":{\"id\":1,\"type\":\"double\"}}},\"CoreEnvelope\":{\"fields\":{\"diagnostics\":{\"id\":1,\"type\":\"CoreEnvelopeDiagnostics\"},\n\"bundles\":{\"rule\":\"repeated\",\"id\":2,\"type\":\"MessageBundle\"},\"metrics\":{\"id\":3,\"type\":\"Metrics\"},\"staticAttributes\":{\"id\":4,\"type\":\"StaticAttributes\"}}},\"MetricTag\":{\"fields\":{\"name\":{\"id\":1,\"type\":\"string\"},\"value\":{\"id\":2,\"type\":\"string\"}}},\"BucketHistogram\":{\"fields\":{\"lastUpdatedTimestamp\":{\"id\":3,\"type\":\"double\"},\"ownerName\":{\"id\":7,\"type\":\"string\"},\"ownerAppName\":{\"id\":8,\"type\":\"string\"},\"createdTimestamp\":{\"id\":2,\"type\":\"double\"},\"values\":{\"rule\":\"repeated\",\"id\":4,\"type\":\"double\"},\"buckets\":{\"rule\":\"repeated\",\n\"id\":5,\"type\":\"uint32\"},\"name\":{\"id\":1,\"type\":\"string\"},\"tags\":{\"rule\":\"repeated\",\"id\":6,\"type\":\"MetricTag\"}}},\"ValueRecorder\":{\"fields\":{\"lastUpdatedTimestamp\":{\"id\":3,\"type\":\"double\"},\"ownerName\":{\"id\":6,\"type\":\"string\"},\"ownerAppName\":{\"id\":7,\"type\":\"string\"},\"createdTimestamp\":{\"id\":2,\"type\":\"double\"},\"values\":{\"rule\":\"repeated\",\"id\":4,\"type\":\"double\"},\"name\":{\"id\":1,\"type\":\"string\"},\"tags\":{\"rule\":\"repeated\",\"id\":5,\"type\":\"MetricTag\"}}},\"StaticAttributes\":{\"fields\":{\"appVersion\":{\"id\":2,\"type\":\"string\"},\n\"appName\":{\"id\":1,\"type\":\"string\"},\"deviceModel\":{\"id\":5,\"type\":\"string\"},\"sdkVersion\":{\"id\":6,\"type\":\"string\"},\"deviceId\":{\"id\":4,\"type\":\"string\"},\"appExperience\":{\"id\":3,\"type\":\"string\"}}},\"Payload\":{\"fields\":{\"payload\":{\"id\":2,\"type\":\"bytes\"},\"schemaName\":{\"id\":1,\"type\":\"string\"}}},\"UpCounter\":{\"fields\":{\"lastUpdatedTimestamp\":{\"id\":3,\"type\":\"double\"},\"ownerName\":{\"id\":6,\"type\":\"string\"},\"ownerAppName\":{\"id\":7,\"type\":\"string\"},\"createdTimestamp\":{\"id\":2,\"type\":\"double\"},\"name\":{\"id\":1,\"type\":\"string\"},\n\"value\":{\"id\":4,\"type\":\"uint32\"},\"tags\":{\"rule\":\"repeated\",\"id\":5,\"type\":\"MetricTag\"}}}}}}}}}};","import { Message, Root, Type } from 'protobufjs';\nimport { SchematizedData, schemaUtil, utility } from 'o11y/shared';\n\nimport { LogMeta, Schema, SchematizedPayload } from '../interfaces';\nimport { EncodedSchematizedPayload, LogMessage, LogMessageRaw } from '../core_envelope/interfaces';\n\nclass ProtobufUtil {\n private readonly _typeStore = new Map<string, Type>();\n\n public getSchemaType(schema: Schema): Type {\n utility.requireArgument(schema, 'schema');\n const schemaPath = schemaUtil.getSchemaId(schema);\n let type = this._typeStore.get(schemaPath);\n\n if (!type) {\n // Lazy add to the type store\n const schemaInstance = Root.fromJSON(schema.pbjsSchema);\n // this will throw if it can't find it\n type = schemaInstance.lookupType(schemaPath);\n this._typeStore.set(schemaPath, type);\n }\n\n return type;\n }\n\n public validate(schema: Schema, data: SchematizedData): Type {\n utility.requireArgument(schema, 'schema');\n utility.requireArgument(data, 'data');\n const type: Type = this.getSchemaType(schema);\n\n const errorText = type.verify(data);\n if (errorText) {\n throw new Error(`Data is invalid for ${type.fullName}: ${errorText}`);\n }\n return type;\n }\n\n // Note: In a Node environment, this actually returns an instance of Buffer.\n public encode(schema: Schema, data: SchematizedData): Uint8Array {\n const type: Type = this.validate(schema, data);\n const message: Message = type.fromObject(data);\n const encoded: Uint8Array = type.encode(message).finish();\n return encoded;\n }\n\n public encodePayload(rawPayload: SchematizedPayload): EncodedSchematizedPayload {\n if (rawPayload?.schema && rawPayload.payload) {\n return {\n schemaName: schemaUtil.getSchemaId(rawPayload.schema),\n payload: this.encode(rawPayload.schema, rawPayload.payload)\n };\n }\n return undefined;\n }\n\n // This method generates a LogMessage (used in the CoreEnvelope) from the provided arguments.\n public getLogMessage(schema: Schema, data: SchematizedData, logMeta: LogMeta): LogMessage {\n return {\n timestamp: logMeta.timestamp,\n data: this.encode(schema, data),\n age: logMeta.age,\n rootId: logMeta.rootId,\n seq: logMeta.sequence,\n sseq: logMeta.schemaSequence,\n loggerName: logMeta.loggerName,\n pagePayload: this.encodePayload(logMeta.pagePayload),\n loggerAppName: logMeta.loggerAppName,\n connectionType: logMeta.connectionType,\n appPayload: this.encodePayload(logMeta.appPayload),\n csId: logMeta.clientSessionId,\n recCsId: logMeta.receiverClientSessionId,\n recRootId: logMeta.receiverRootId,\n tenantClass: logMeta.tenantClass\n };\n }\n\n public processRawLogMessage(schema: Schema, raw: LogMessageRaw): LogMessage {\n const dataClone = raw.data ? Object.assign({}, raw.data) : {};\n if (schemaUtil.isInternal(schema) && dataClone.userPayload) {\n dataClone.userPayload = this.encodePayload(dataClone.userPayload);\n }\n\n return Object.assign({}, raw, {\n data: this.encode(schema, dataClone),\n pagePayload: this.encodePayload(raw.pagePayload),\n appPayload: this.encodePayload(raw.appPayload)\n });\n }\n}\n\nexport const protobufUtil = new ProtobufUtil();\n","import { Root, Type } from 'protobufjs';\nimport {\n CoreEnvelope,\n CoreEnvelopeContents,\n CoreEnvelopeContentsRaw,\n LogMessage,\n CoreEnvelopeBuilder\n} from 'o11y/core_envelope';\nimport { coreEnvelopeSchema } from 'o11y_schema/sf_instrumentation';\nimport { Schema } from '../../interfaces';\nimport { protobufUtil } from '../protobuf-util';\n\nconst root: Root = Root.fromJSON(coreEnvelopeSchema.pbjsSchema);\nconst _coreEnvelopeType: Type = root.lookupType('CoreEnvelope');\n\nexport function processRawContents(contentsRaw: CoreEnvelopeContentsRaw): CoreEnvelopeContents {\n const processed: CoreEnvelopeContents = Object.assign({}, contentsRaw, {\n messages: new Map<Schema, LogMessage[]>()\n });\n // Encode individual messages\n contentsRaw.messages.forEach(function (rawMessages, schema) {\n processed.messages.set(\n schema,\n rawMessages.map((msg) => protobufUtil.processRawLogMessage(schema, msg))\n );\n });\n return processed;\n}\n\nexport function envelopeContents(contents: CoreEnvelopeContents): CoreEnvelope {\n return CoreEnvelopeBuilder.buildFrom(contents);\n}\n\nexport function encodeCoreEnvelope(coreEnvelope: CoreEnvelope): Uint8Array {\n const errorMessage = _coreEnvelopeType.verify(coreEnvelope);\n if (errorMessage) {\n throw new Error(`Invalid CoreEnvelope: ${errorMessage}`);\n }\n\n const encodedCoreEnvelope = _coreEnvelopeType.encode(coreEnvelope).finish();\n return encodedCoreEnvelope;\n}\n\nexport function encodeCoreEnvelopeContentsRaw(contentsRaw: CoreEnvelopeContentsRaw): Uint8Array {\n const contents: CoreEnvelopeContents = processRawContents(contentsRaw);\n const coreEnvelope: CoreEnvelope = envelopeContents(contents);\n const encoded: Uint8Array = encodeCoreEnvelope(coreEnvelope);\n return encoded;\n}\n","import { SimpleCollector } from '../simple_collector/SimpleCollector';\nimport { encodeCoreEnvelopeContentsRaw } from '../collectors/core-collector/CoreEnvelopeProtobufUtility';\nimport type { Environment } from '../interfaces';\n\ntype SchemaLike = { namespace?: string; name?: string };\ntype LogMessageLike = { data?: { isRoot?: boolean } | Record<string, unknown> };\n\nexport interface TelemetryUploaderOptions {\n endpoint: string;\n environment?: Environment;\n formDataKey?: string;\n maxUniqueSchemas?: number;\n onUploadError?: (error: unknown) => void;\n isRootActivityInProgress?: () => boolean;\n log?: Log;\n useBase64Json?: boolean;\n}\n\nexport interface UploadResult {\n success: boolean;\n response?: Response;\n error?: unknown;\n bytesSent?: number;\n}\n\nexport type Log = (...args: unknown[]) => void;\n\nexport const NO_OP_LOG: Log = () => {\n /* no-op */\n};\n\nconst ROOT_ACTIVITY_NAMESPACE = 'sf.instrumentation';\nconst ROOT_ACTIVITY_NAME = 'Activity';\nconst KEEPALIVE_MAX_BYTES = 64 * 1024;\nconst BUFFER_UPLOAD_THRESHOLD = 50 * 1024;\nconst ROOT_ACTIVITY_TIMEOUT_MS = 10_000;\nconst BTOA_CHUNK_SIZE = 0x8000;\nconst BASE64_JSON_WRAPPER_BYTES = 16;\n\nfunction encodeArrayBufferToBase64(buffer: ArrayBuffer): string {\n const bytes = new Uint8Array(buffer);\n const parts: string[] = [];\n for (let i = 0; i < bytes.length; i += BTOA_CHUNK_SIZE) {\n const chunk = bytes.subarray(i, Math.min(i + BTOA_CHUNK_SIZE, bytes.length));\n parts.push(String.fromCharCode.apply(null, chunk as unknown as number[]));\n }\n return btoa(parts.join(''));\n}\n\nfunction effectiveBodySize(payloadSize: number, useBase64Json: boolean): number {\n if (!useBase64Json) {\n return payloadSize;\n }\n return Math.ceil(payloadSize / 3) * 4 + BASE64_JSON_WRAPPER_BYTES;\n}\n\nexport class TelemetryUploader {\n private readonly _collector: SimpleCollector;\n private readonly _endpoint: string;\n private readonly _formDataKey: string;\n private readonly _useBase64Json: boolean;\n private readonly _onUploadError?: (error: unknown) => void;\n private readonly _isRootActivityInProgress?: () => boolean;\n private readonly _log: Log;\n private _isPageHiding = false;\n private _rootActivityTimeoutHandle: ReturnType<typeof setTimeout> | null = null;\n\n constructor(options: TelemetryUploaderOptions) {\n this._endpoint = options.endpoint;\n this._formDataKey = options.formDataKey ?? 'telemetry';\n this._useBase64Json = options.useBase64Json ?? false;\n this._onUploadError = options.onUploadError;\n this._isRootActivityInProgress = options.isRootActivityInProgress;\n this._log = options.log ?? NO_OP_LOG;\n\n const collectorOptions = {\n environment: options.environment,\n maxUniqueSchemas: options.maxUniqueSchemas,\n precollectCallback: this._handlePrecollect,\n estimatedByteSizeChangeCallback: this._handleByteSizeChange\n };\n\n this._collector = new SimpleCollector(collectorOptions);\n this._setupVisibilityHandler();\n }\n\n get logCollector(): SimpleCollector {\n return this._collector;\n }\n\n get hasData(): boolean {\n return this._collector.hasData;\n }\n\n get estimatedByteSize(): number {\n return this._collector.estimatedByteSize;\n }\n\n private _buildEndpointWithDomain(): string {\n const domainName = typeof window !== 'undefined' ? window.location.hostname : 'localhost';\n const separator = this._endpoint.includes('?') ? '&' : '?';\n return `${this._endpoint}${separator}domain=${encodeURIComponent(domainName)}`;\n }\n\n async upload(useKeepalive = false, reason = 'manual'): Promise<UploadResult | undefined> {\n this._clearRootActivityTimeout();\n\n if (!this._collector.hasData) {\n return undefined;\n }\n\n const contents = this._collector.getRawContentsOfCoreEnvelope();\n const encoded = encodeCoreEnvelopeContentsRaw(contents);\n const payloadSize = encoded.byteLength;\n this._log(\n `[TelemetryUploader] Upload reason: ${reason}, payload size: ${payloadSize} bytes`\n );\n\n let keepalive = useKeepalive;\n const onWireSize = effectiveBodySize(payloadSize, this._useBase64Json);\n if (keepalive && onWireSize > KEEPALIVE_MAX_BYTES) {\n this._log(\n `[TelemetryUploader] On-wire size ${onWireSize} (raw ${payloadSize}) exceeds keepalive limit (${KEEPALIVE_MAX_BYTES}). Falling back to regular fetch.`\n );\n keepalive = false;\n }\n\n const encodedBuffer =\n encoded.buffer instanceof ArrayBuffer\n ? encoded.buffer.slice(encoded.byteOffset, encoded.byteOffset + encoded.byteLength)\n : encoded.slice().buffer;\n\n const endpointUrl = this._buildEndpointWithDomain();\n\n let body: BodyInit;\n let contentTypeHeader: HeadersInit | undefined;\n if (this._useBase64Json) {\n body = JSON.stringify({ base64Env: encodeArrayBufferToBase64(encodedBuffer) });\n contentTypeHeader = { 'Content-Type': 'application/json' };\n } else {\n const formData = new FormData();\n formData.append(this._formDataKey, new Blob([encodedBuffer]));\n body = formData;\n }\n\n try {\n const response = await fetch(endpointUrl, {\n method: 'POST',\n body,\n keepalive,\n ...(contentTypeHeader ? { headers: contentTypeHeader } : {})\n });\n\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${response.statusText}`);\n }\n\n return {\n success: true,\n response,\n bytesSent: payloadSize\n };\n } catch (error) {\n this._onUploadError?.(error);\n return {\n success: false,\n error\n };\n }\n }\n\n uploadOnActivityEnd(): Promise<UploadResult | undefined> {\n return this.upload(this._isPageHiding, 'activity_end');\n }\n\n uploadWithKeepalive(): Promise<UploadResult | undefined> {\n return this.upload(true, 'keepalive_visibility_change');\n }\n\n startPeriodicUploads(intervalMs = 30000): () => void {\n const handle = setInterval(() => {\n if (this._collector.hasData) {\n this.upload(false, 'periodic_interval').catch((error) =>\n this._onUploadError?.(error)\n );\n }\n }, intervalMs);\n\n return () => clearInterval(handle);\n }\n\n private _handlePrecollect = (schema: SchemaLike, msg: LogMessageLike): boolean => {\n if (\n schema.namespace === ROOT_ACTIVITY_NAMESPACE &&\n schema.name === ROOT_ACTIVITY_NAME &&\n (msg.data as { isRoot?: boolean } | undefined)?.isRoot\n ) {\n this._scheduleMicrotask(() => {\n if (this._collector.hasData) {\n this.uploadOnActivityEnd().catch((error) => this._onUploadError?.(error));\n }\n });\n }\n return true;\n };\n\n private _handleByteSizeChange = (newSize: number): void => {\n if (newSize >= BUFFER_UPLOAD_THRESHOLD) {\n if (this._collector.hasData) {\n const shouldDelay = this._isRootActivityRunning();\n this._log(\n `[TelemetryUploader] Buffer threshold upload attempt at ${newSize} bytes. Delay decision: ${shouldDelay}`\n );\n if (shouldDelay) {\n this._ensureRootActivityTimeout();\n return;\n }\n this.upload(false, 'buffer_threshold_exceeded').catch((error) =>\n this._onUploadError?.(error)\n );\n }\n }\n };\n\n private _isRootActivityRunning(): boolean {\n try {\n return this._isRootActivityInProgress?.() ?? false;\n } catch (error) {\n this._log('[TelemetryUploader] Failed to query root activity status', error);\n return false;\n }\n }\n\n private _ensureRootActivityTimeout(): void {\n if (this._rootActivityTimeoutHandle !== null) {\n return;\n }\n this._rootActivityTimeoutHandle = setTimeout(() => {\n this._rootActivityTimeoutHandle = null;\n if (this._collector.hasData) {\n this.upload(false, 'root_activity_timeout').catch((error) =>\n this._onUploadError?.(error)\n );\n }\n }, ROOT_ACTIVITY_TIMEOUT_MS);\n }\n\n private _clearRootActivityTimeout(): void {\n if (this._rootActivityTimeoutHandle !== null) {\n clearTimeout(this._rootActivityTimeoutHandle);\n this._rootActivityTimeoutHandle = null;\n }\n }\n\n private _scheduleMicrotask(callback: () => void): void {\n if (typeof queueMicrotask === 'function') {\n queueMicrotask(callback);\n } else {\n Promise.resolve().then(callback);\n }\n }\n\n private _setupVisibilityHandler(): void {\n document.addEventListener('visibilitychange', () => {\n if (document.visibilityState === 'hidden') {\n this._isPageHiding = true;\n if (this._collector.hasData) {\n this.uploadWithKeepalive().catch((error) => this._onUploadError?.(error));\n }\n setTimeout(() => {\n this._isPageHiding = false;\n }, 0);\n }\n });\n }\n}\n"],"names":["coreEnvelopeSchema"],"mappings":"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"}
1
+ {"version":3,"file":"telemetry_uploader.js","sources":["../../../../src/shared/Utility.ts","../../../../src/shared/LazyMapToList.ts","../../../../src/shared/SchemaUtil.ts","../../../../src/shared/LogValidator.ts","../../../../src/shared/MetricsUtility.ts","../../../../src/shared/PayloadUtility.ts","../../../../src/simple_collector/SimpleCollector.ts","../../../../../../node_modules/o11y_schema/sf_instrumentation/core_envelope.js","../../../../src/collectors/protobuf-util.ts","../../../../src/collectors/core-collector/CoreEnvelopeProtobufUtility.ts","../../../../src/telemetry_uploader/TelemetryUploader.ts"],"sourcesContent":["import { AllowedOrigins, Activity } from '../interfaces';\nimport { ObjectType } from './TypeDefinitions';\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Navigator/connection\ntype NavigatorWithConnection = {\n readonly connection: {\n readonly effectiveType: string;\n };\n};\n\nclass Utility {\n // We are now in production by default, unless told otherwise.\n // This is to prevent exceptions that may occur before initialization.\n private static _isProduction = true;\n\n public readonly notImplemented = 'Method not implemented.';\n public readonly perfNow: () => number;\n public readonly time: () => { tsNow: number; perfNow: number; timeOrigin: number };\n private readonly _timeOrigin: number;\n\n constructor() {\n const performanceExists = typeof performance !== 'undefined';\n if (performanceExists) {\n if (performance.timeOrigin) {\n this._timeOrigin = performance.timeOrigin;\n } else {\n // if we don't have any start time, we consider our init to be the time origin\n this._timeOrigin = Date.now();\n }\n } else {\n this._timeOrigin = Date.now();\n }\n\n const timeOrigin = this._timeOrigin;\n if (performanceExists && typeof performance.now === 'function') {\n this.perfNow = performance.now.bind(performance);\n this.time = () => {\n const perfNow = this.perfNow();\n return { tsNow: timeOrigin + perfNow, perfNow, timeOrigin };\n };\n } else {\n this.perfNow = () => {\n return Date.now() - timeOrigin;\n };\n this.time = () => {\n const perfNow = this.perfNow();\n return { tsNow: Date.now(), perfNow, timeOrigin };\n };\n }\n }\n\n public get isProduction(): boolean {\n return Utility._isProduction;\n }\n\n public markProduction(value?: boolean): void {\n Utility._isProduction = value ?? true;\n }\n\n // Returns false if check fails\n // if argKind is a string, uses typeof.\n // if argKind is a function, such as String, Number, HTMLElement, uses instanceof.\n // if argKind is an array, expects at least one of the element types to match.\n private _checkArgument<T>(argument: T, argKind: unknown): boolean {\n if (typeof argKind === 'string') {\n return typeof argument === argKind;\n }\n if (typeof argKind === 'function') {\n return argument instanceof argKind;\n }\n if (Array.isArray(argKind)) {\n return argKind.some((arg) => this._checkArgument(argument, arg));\n }\n throw new Error(`Invalid argKind ${argKind}`);\n }\n\n public requireArgument<T>(argument: T, argumentName: string, argKind?: unknown): void {\n let disallowed =\n argument === undefined || argument === null || (argument as unknown) === '';\n const kindSpecified = argKind !== undefined;\n\n if (!disallowed && kindSpecified) {\n disallowed = !this._checkArgument(argument, argKind);\n }\n\n if (disallowed) {\n throw new Error(\n `${argumentName} argument is required${\n kindSpecified ? ' and must be of a supported type.' : '.'\n }`\n );\n }\n }\n\n public requireArgumentIfDefined<T>(\n argument: T,\n argumentName: string,\n argKind: unknown\n ): boolean {\n if (argument === undefined) {\n return false;\n }\n const disallowed =\n argument === null ||\n (argument as unknown) === '' ||\n !this._checkArgument(argument, argKind);\n\n if (disallowed) {\n throw new Error(`${argumentName} argument, if defined, must be of a supported type.`);\n }\n\n return true;\n }\n\n public checkForDenyListedValues<T>(\n argument: T,\n argumentName: string,\n denyList: ReadonlyArray<T>\n ): void {\n if (denyList.some((x) => argument === x)) {\n throw new Error(`The value ${argument} isn't allowed for ${argumentName} argument.`);\n }\n }\n\n public checkForReservedCharacters(\n argument: string,\n argumentName: string,\n reservedChars: ReadonlyArray<string>\n ): void {\n if (argument && reservedChars.some((c) => argument.indexOf(c) >= 0)) {\n throw new Error(\n `The argument ${argumentName} isn't allowed to contain characters from ['${reservedChars.join(\n ', '\n )}']. Received: ${argument}.`\n );\n }\n }\n\n public generateUniqueId(length = 16): string {\n const chars: string[] = [];\n const digits = '0123456789abcdef';\n if (!(length === undefined || length > 0)) {\n throw new Error('If specified, the argument \"length\" must be a positive integer');\n }\n for (let i = 0; i < length; i++) {\n const rand = Math.floor(Math.random() * 16);\n chars.push(digits[rand]);\n }\n return chars.join('');\n }\n\n public getXpath(_element: HTMLElement): string {\n //if the element has siblings with the same type we should return 1, otherwise not\n function hasSameSibs(elm: Element): boolean {\n const name = elm.localName;\n while (elm.nextElementSibling) {\n elm = elm.nextElementSibling;\n if (elm.localName === name) {\n return true;\n }\n }\n return false;\n }\n function idx(sib: Element, name?: string): number {\n //we want to count the siblings of the same type for the xpath, otherwise it is just 1\n if (sib) {\n return (\n idx(sib.previousElementSibling, name || sib.localName) +\n (sib.localName === name ? 1 : 0)\n );\n }\n return 1;\n }\n function segs(elm: HTMLElement): string[] {\n // only run for element nodes\n if (!elm || elm.nodeType !== 1) {\n return [''];\n }\n //only add the number if it is over 1, or if it the first of siblings\n const nodeValue =\n idx(elm) > 1 || hasSameSibs(elm)\n ? `${elm.localName.toLowerCase()}[${idx(elm)}]`\n : elm.localName.toLowerCase();\n //go up and add the element at the end of the path\n return [...segs(elm.parentNode as HTMLElement), nodeValue];\n }\n //concat at the end\n return segs(_element).join('/');\n }\n\n public getAge(timestamp: number): number {\n return timestamp - this._timeOrigin;\n }\n\n // Reads the `navigator` global defensively. VS Code 1.129+ makes `navigator` a\n // NodeJS extension-host global that throws on access (W-24059841); even\n // `typeof navigator` throws, because it evaluates the getter. Any read must be\n // wrapped in try/catch and degrade to `undefined` when navigator is unavailable.\n private _getNavigatorSafe(): Navigator | undefined {\n try {\n return typeof navigator !== 'undefined' ? navigator : undefined;\n } catch {\n return undefined;\n }\n }\n\n private _hasEffectiveConnectionType(value: unknown): value is NavigatorWithConnection {\n if (typeof value !== 'object' || value === null || !('connection' in value)) {\n return false;\n }\n\n const connection = value.connection;\n return (\n typeof connection === 'object' &&\n connection !== null &&\n 'effectiveType' in connection &&\n typeof connection.effectiveType === 'string'\n );\n }\n\n public getConnectionType(): string | undefined {\n const nav = this._getNavigatorSafe();\n\n return this._hasEffectiveConnectionType(nav) ? nav.connection.effectiveType : undefined;\n }\n\n public clone<T>(value: T): T {\n return JSON.parse(JSON.stringify(value));\n }\n\n public definedValueOrDefault<T>(value: T, defaultValue: T): T {\n return value !== undefined ? value : defaultValue;\n }\n\n public getGlobal(): typeof globalThis {\n if (typeof globalThis === 'object') {\n return globalThis;\n }\n if (typeof self === 'object') {\n return self;\n }\n throw new Error('Unable to locate globalThis or self');\n }\n\n public getIsBeaconSupported(): boolean {\n const g = this.getGlobal();\n const nav = this._getNavigatorSafe();\n return typeof nav?.sendBeacon === 'function' && typeof g.Blob === 'function';\n }\n\n public estimateObjectSize(object: unknown): number {\n const objectSet = new Set<ObjectType>();\n const stack: Array<unknown> = [object];\n let bytes = 0;\n\n while (stack.length) {\n const value: unknown = stack.pop();\n if (typeof value === 'boolean') {\n bytes += 4;\n } else if (typeof value === 'string') {\n bytes += value.length * 2;\n } else if (typeof value === 'number') {\n bytes += 8;\n } else if (\n value instanceof Uint8Array ||\n value instanceof Uint8ClampedArray ||\n value instanceof Uint16Array ||\n value instanceof Uint32Array ||\n value instanceof Int8Array ||\n value instanceof Int16Array ||\n value instanceof Int32Array ||\n value instanceof Float32Array ||\n value instanceof Float64Array\n ) {\n bytes += value.byteLength;\n } else if (typeof value === 'object') {\n const obj: ObjectType = value as ObjectType;\n if (!objectSet.has(obj)) {\n objectSet.add(obj);\n for (const key in obj) {\n stack.push(obj[key]);\n }\n }\n }\n }\n return bytes;\n }\n\n // swallows exceptions on production.\n // Ensure that code that follows this call is a proper no-op.\n noProdThrow(e: unknown): void | never {\n if (utility.isProduction) {\n return;\n }\n throw e;\n }\n\n isAllowedOrigin(input: string, allowed: AllowedOrigins): boolean {\n return (\n Array.isArray(allowed) &&\n allowed.some(\n (origin) =>\n origin === '*' ||\n input === origin ||\n (origin instanceof RegExp && origin.test(input))\n )\n );\n }\n\n roundNumber(value: number, decimals: number): number {\n const pow = Math.pow(10, decimals);\n return Math.round(value * pow) / pow;\n }\n\n roundNumbersInObject(obj: ObjectType, decimals: number): void {\n if (obj) {\n Object.entries(obj).forEach(([key, value]) => {\n if (typeof value === 'number') {\n obj[key] = this.roundNumber(value, decimals);\n }\n });\n }\n }\n\n // Attempts to convert a relative URL to an absolute URL, returns the input value as-is if it can't.\n tryGetAbsoluteUrl(url: string): string {\n if (url?.startsWith('//') && typeof window === 'object') {\n return (window.location.protocol ?? '') + url;\n } else if (url?.startsWith('/') && typeof window === 'object') {\n return (window.location.origin ?? '') + url;\n }\n return url;\n }\n\n /**\n * Validates that a parent activity matches the expected external/internal type.\n * External activities should only have external parents, internal activities should only have internal parents.\n *\n * @param isExternal - Whether the current activity is external (undefined is treated as false)\n * @param parentActivity - The parent activity to validate\n * @returns The parent activity if it matches the expected type, undefined otherwise\n */\n validateParentActivityType(\n isExternal: boolean | undefined,\n parentActivity: Activity | null | undefined\n ): Activity | undefined {\n const activityIsExternal = isExternal ?? false;\n\n if (!parentActivity) {\n return undefined;\n }\n\n const parentIsExternal = parentActivity.isExternal();\n\n if (activityIsExternal === parentIsExternal) {\n return parentActivity;\n } else {\n const currentType = activityIsExternal ? 'external' : 'internal';\n const parentType = parentIsExternal ? 'external' : 'internal';\n throw new Error(\n `Parent activity type mismatch: ${currentType} activity cannot have ${parentType} parent.`\n );\n }\n }\n}\n\nconst _utility = new Utility();\nconst global: Record<string, unknown> = _utility.getGlobal();\n_utility.markProduction(global?.__O11Y_IS_PROD__ as boolean | undefined);\n\nexport const utility = Object.freeze(_utility);\n","export class LazyMapToList<Key, ElementType> {\n private readonly _lazyMap = new Map<Key, Array<ElementType>>();\n\n private _maxSize: number;\n constructor(maxSize?: number) {\n if (maxSize !== undefined) {\n if (typeof maxSize === 'number' && maxSize > 0) {\n this._maxSize = Math.ceil(maxSize);\n return;\n }\n throw new Error('maxSize must be a positive number');\n }\n }\n\n get maxSize(): number {\n return this._maxSize;\n }\n\n get size(): number {\n return this._lazyMap.size;\n }\n\n /**\n * Adds the value to the list specific to the key. If the list doesn't exist,\n * it will be lazily created as long as there are fewer keys than the max, if specified.\n *\n * @param key The key for the map\n * @param value The value to be added to the list\n */\n push(key: Key, value: ElementType): boolean {\n let buffer = this._lazyMap.get(key);\n if (!buffer) {\n if (this.maxSize !== undefined && this.size === this.maxSize) {\n return false;\n }\n buffer = new Array<ElementType>();\n this._lazyMap.set(key, buffer);\n }\n buffer.push(value);\n return true;\n }\n\n getMessages(key: Key, extract?: boolean): Array<ElementType> {\n const msgs = this._lazyMap.get(key);\n if (extract && this._lazyMap.has(key)) {\n this._lazyMap.set(key, []);\n }\n return msgs || [];\n }\n\n getAllMessages(extract?: boolean): Map<Key, Array<ElementType>> {\n const map = new Map<Key, Array<ElementType>>();\n for (const [key, value] of this._lazyMap.entries()) {\n if (value.length) {\n map.set(key, this.getMessages(key, extract));\n }\n }\n return map;\n }\n\n // Convenience functions for backwards compatibility\n extractMessages(key: Key): Array<ElementType> {\n return this.getMessages(key, true);\n }\n extractAllMessages(): Map<Key, Array<ElementType>> {\n return this.getAllMessages(true);\n }\n\n get totalItemCount(): number {\n let count = 0;\n for (const array of this._lazyMap.values()) {\n count += array.length;\n }\n return count;\n }\n}\n","import { IField, INamespace, IType, Schema, SchematizedPayload, SchemaTokens } from '../interfaces';\nimport {\n AnyNestedObject,\n PbjsNestedObjectDescriptor,\n ProtoOptions,\n SchematizedData\n} from './TypeDefinitions';\nimport { utility } from './Utility';\n\nclass SchemaUtil {\n public getSchemaId(schema: Schema): string {\n return `${schema.namespace}.${schema.name}`;\n }\n public isInternal(schema: Schema): boolean {\n return schema?.namespace === 'sf.instrumentation';\n }\n\n public makePayload(\n schema: Schema,\n data: SchematizedData,\n onlyIfBoth = true\n ): SchematizedPayload {\n if (!onlyIfBoth || (schema !== undefined && data !== undefined)) {\n return {\n schema,\n payload: data\n };\n }\n return undefined;\n }\n\n public checkSchema(schema: Schema): SchemaTokens {\n utility.requireArgument(schema, 'schema', 'object');\n utility.requireArgument(schema.namespace, 'schema.namespace', 'string');\n utility.requireArgument(schema.name, 'schema.name', 'string');\n utility.requireArgument(schema.pbjsSchema, 'schema.pbjsSchema', 'object');\n return this._getTokens(schema);\n }\n\n private _getTokens(schema: Schema): SchemaTokens {\n const parts: string[] = schema.namespace.split('.');\n if (parts.length !== 2) {\n throw new Error(\n `Schema \"${this.getSchemaId(\n schema\n )}\" must have a namespace of the form \"domain.feature\".`\n );\n }\n return {\n domain: parts[0],\n feature: parts[1],\n message: schema.name\n };\n }\n\n private _getAnyNestedObject(schema: Schema, scopes: string[]): AnyNestedObject {\n return scopes.reduce((prev: INamespace, currentScope: string) => {\n const descriptor: PbjsNestedObjectDescriptor = prev.nested;\n if (descriptor) {\n const ano: AnyNestedObject = descriptor[currentScope];\n if (ano) {\n return ano;\n }\n }\n throw new Error(\n `Cannot locate ${scopes.join('.')} in schema with ID ${this.getSchemaId(schema)}`\n );\n }, schema.pbjsSchema);\n }\n\n public getTypes(schema: Schema): PbjsNestedObjectDescriptor {\n const schemaTokens: SchemaTokens = this.checkSchema(schema);\n const namespace: INamespace = this._getAnyNestedObject(schema, [\n schemaTokens.domain,\n schemaTokens.feature\n ]);\n const descriptor: PbjsNestedObjectDescriptor = namespace.nested;\n if (!descriptor) {\n throw new Error(`Cannot parse schema with ID ${this.getSchemaId(schema)}`);\n }\n return descriptor;\n }\n\n public getType(schema: Schema, messageName: string): IType {\n utility.requireArgument(messageName, 'messageName', 'string');\n const descriptor: PbjsNestedObjectDescriptor = this.getTypes(schema);\n\n const message = descriptor[messageName] as IType;\n if (!message) {\n throw new Error(\n `Cannot locate message ${messageName} in schema with ID ${this.getSchemaId(schema)}`\n );\n }\n return message;\n }\n\n public getOptions(schema: Schema, messageName?: string, fieldName?: string): ProtoOptions {\n if (fieldName) {\n utility.requireArgument(messageName, 'messageName', 'string');\n }\n const schemaTokens: SchemaTokens = this.checkSchema(schema);\n\n if (!messageName) {\n const namespace: INamespace = this._getAnyNestedObject(schema, [\n schemaTokens.domain,\n schemaTokens.feature\n ]);\n return namespace.options;\n }\n\n const type: IType = this.getType(schema, messageName);\n if (!fieldName) {\n return type.options;\n }\n\n const field: IField = type.fields[fieldName];\n if (!field) {\n const schemaId = this.getSchemaId(schema);\n throw new Error(\n `Cannot locate field ${fieldName} in message ${messageName} in schema with ID ${schemaId}`\n );\n }\n return field.options;\n }\n\n public getExtraFields(schema: Schema, data: SchematizedData): string[] {\n const { message } = this._getTokens(schema);\n const types: PbjsNestedObjectDescriptor = this.getTypes(schema);\n // This assumes that the schema is flat\n const fields: Record<string, IField> = (types[message] as IType)['fields'];\n const fieldSet = new Set(Object.keys(fields));\n\n const extraFields =\n data !== null && data !== undefined\n ? Object.keys(data).filter((key) => !fieldSet.has(key))\n : [];\n return extraFields;\n }\n}\n\nexport const schemaUtil = new SchemaUtil();\n","import { IType, Schema, SchemaTokens } from '../interfaces';\nimport type {\n AnyNestedObject,\n PbjsNestedObjectDescriptor,\n SchematizedData,\n SchematizedDataValue\n} from './TypeDefinitions';\nimport { schemaUtil } from './SchemaUtil';\nimport { utility } from './Utility';\n\n// These are hard-coded limits at the app-level. They may be overridden with a corresponding\n// option at the field level in the schema metadata.\nexport const maxStringLengthAppLimit = 10000; // For strings\nexport const maxItemCountAppLimit = 10000; // For arrays\n\nconst minUnsigned = 0;\nconst maxFourBytes = 2147483647;\nconst minFourBytes = -2147483648;\nconst maxFourBytesUnsigned = 4294967295;\nconst maxEightBytes = 9223372036854776000;\nconst minEightBytes = -9223372036854776001;\nconst maxEightBytesUnsigned = 18446744073709552000;\n\nexport const enum ErrorCode {\n notAnError = 0, // To ensure truthy-checks work for proper error codes.\n arrayExpected,\n incorrectType,\n infiniteNumber,\n numberOutOfRange,\n malformedBytesArray,\n stringLengthOverflowAppLimit,\n itemCountOverflowAppLimit,\n stringLengthOverflow,\n stringLengthUnderflow,\n itemCountOverflow,\n itemCountUnderflow,\n integerExpected,\n invalidItemValue\n}\n\nexport class ValidationEntry {\n constructor(\n public errorCode: ErrorCode,\n public fields: string[],\n public expected?: string,\n public received?: string\n ) {}\n\n asMessage(schemaId: string): string {\n const key: string =\n this.fields[0] +\n this.fields\n .slice(1)\n .reduce(\n (prev, current) =>\n Number(current) >= 0 ? `${prev}[${current}]` : `${prev}.${current}`,\n ''\n );\n let msg: string;\n\n switch (this.errorCode) {\n case ErrorCode.arrayExpected:\n msg = 'Repeated field must be an array';\n break;\n case ErrorCode.incorrectType:\n msg = `Expected type ${this.expected} but received type ${this.received}`;\n break;\n case ErrorCode.infiniteNumber:\n msg = 'Value must be finite';\n break;\n case ErrorCode.numberOutOfRange:\n msg = 'Value is out of range for its type';\n break;\n case ErrorCode.malformedBytesArray:\n msg = 'Bytes array is malformed';\n break;\n case ErrorCode.stringLengthOverflowAppLimit:\n msg = 'Exceeded app limit for maximum string length';\n break;\n case ErrorCode.itemCountOverflowAppLimit:\n msg = 'Exceeded app limit for item count';\n break;\n case ErrorCode.integerExpected:\n msg = 'Value must be an integer';\n break;\n case ErrorCode.invalidItemValue:\n msg = 'Values like null or undefined are not allowed for items in repeated fields';\n break;\n // TODO: The following should be used when we start validating against schema metadata\n // case ErrorCode.stringLengthOverflow:\n // msg = 'Exceeded maximum string length';\n // break;\n // case ErrorCode.stringLengthUnderflow:\n // msg = 'Failed minimum string length';\n // break;\n // case ErrorCode.itemCountOverflow:\n // msg = 'Exceeded maximum item count';\n // break;\n // case ErrorCode.itemCountUnderflow:\n // msg = 'Failed minimum item count';\n // break;\n default:\n msg = `Unknown error code: ${this.errorCode}`;\n break;\n }\n\n return `Schema ${schemaId} on field \"${key}\": ${msg}`;\n }\n}\n\ntype NumberRangeOptions = {\n min: number;\n max: number;\n isInt: boolean;\n isItem: boolean;\n};\n\nclass LogValidator {\n public validate(schema: Schema, data: SchematizedData, noThrow = false): ValidationEntry[] {\n const schemaTokens: SchemaTokens = schemaUtil.checkSchema(schema);\n utility.requireArgument(data, 'data', 'object');\n\n const schemaId: string = schemaUtil.getSchemaId(schema);\n\n const errorInfos = new Array<ValidationEntry>();\n\n const nestedSchema: PbjsNestedObjectDescriptor = schemaUtil.getTypes(schema);\n this._validateFields(\n errorInfos,\n [],\n data,\n nestedSchema[schemaTokens.message] as IType,\n schema.pbjsSchema.nested,\n schemaId,\n [schemaTokens.domain, schemaTokens.feature, schemaTokens.message]\n );\n\n if (errorInfos.length && !noThrow) {\n throw new Error(errorInfos[0].asMessage(schemaId));\n }\n\n return errorInfos;\n }\n\n private _validateFields(\n errorInfos: ValidationEntry[],\n fieldNames: string[],\n data: SchematizedData,\n message: IType,\n descriptor: PbjsNestedObjectDescriptor,\n schemaId: string,\n scope: string[]\n ): void {\n const oneofs = message.oneofs || {};\n const fields = message.fields || {};\n for (const key in data) {\n const value = data[key];\n // if it's null or undefined we don't need to match\n if (value !== undefined && value !== null) {\n const mft: (fieldType: string, isRepeated?: boolean, isItem?: boolean) => void = (\n fieldType,\n isRepeated,\n isItem\n ) =>\n this._matchFieldTypes(\n errorInfos,\n [...fieldNames, key],\n value,\n fieldType,\n descriptor,\n schemaId,\n scope,\n isRepeated,\n isItem\n );\n\n if (oneofs[key]) {\n mft(fields[oneofs[key].oneof[0]].type);\n } else if (fields[key]) {\n mft(fields[key].type, fields[key].rule === 'repeated');\n }\n // if the field is not present in the schema then we ignore it and will drop it later\n }\n }\n }\n\n private _matchFieldTypes(\n errorInfos: ValidationEntry[],\n fieldNames: string[],\n fieldDataValue: SchematizedDataValue,\n protobufType: string,\n descriptor: PbjsNestedObjectDescriptor,\n schemaId: string,\n scope: string[],\n isRepeated: boolean,\n isItem: boolean // true if inside a repeated field\n ): void {\n let errorCode: ErrorCode;\n\n if (isRepeated) {\n if (Array.isArray(fieldDataValue)) {\n if (fieldDataValue.length > maxItemCountAppLimit) {\n errorCode = ErrorCode.itemCountOverflowAppLimit;\n }\n\n fieldDataValue.forEach((value, index: number) => {\n // if it's repeated they should all be the same type so we can just run it as is\n this._matchFieldTypes(\n errorInfos,\n [...fieldNames, index.toString()],\n value,\n protobufType,\n descriptor,\n schemaId,\n scope,\n undefined, // rule\n true // isItem\n );\n });\n } else {\n errorCode = ErrorCode.arrayExpected;\n }\n } else if (fieldDataValue == null || fieldDataValue === undefined) {\n if (isItem) {\n // Null and undefined are allowed unless they're in an array\n errorCode = ErrorCode.invalidItemValue;\n }\n } else {\n let numOpts: NumberRangeOptions;\n let javaScriptType: string;\n let enumValues: number[];\n switch (protobufType) {\n case 'string':\n javaScriptType = 'string';\n if (fieldDataValue.length > maxStringLengthAppLimit) {\n errorCode = ErrorCode.stringLengthOverflowAppLimit;\n }\n break;\n case 'bytes':\n javaScriptType = 'object';\n if (!(fieldDataValue instanceof Uint8Array)) {\n errorCode = ErrorCode.malformedBytesArray;\n }\n break;\n case 'bool':\n javaScriptType = 'boolean';\n break;\n case 'uint32':\n javaScriptType = 'number';\n numOpts = {\n min: minUnsigned,\n max: maxFourBytesUnsigned,\n isInt: true,\n isItem\n };\n break;\n case 'int32':\n case 'sint32':\n case 'fixed32':\n case 'sfixed32':\n javaScriptType = 'number';\n numOpts = {\n min: minFourBytes,\n max: maxFourBytes,\n isInt: true,\n isItem\n };\n break;\n case 'uint64':\n javaScriptType = 'number';\n numOpts = {\n min: minUnsigned,\n max: maxEightBytesUnsigned,\n isInt: true,\n isItem\n };\n break;\n case 'fixed64':\n case 'sfixed64':\n case 'int64':\n case 'sint64':\n javaScriptType = 'number';\n numOpts = {\n min: minEightBytes,\n max: maxEightBytes,\n isInt: true,\n isItem\n };\n break;\n case 'double':\n case 'float':\n javaScriptType = 'number';\n numOpts = {\n min: Number.NEGATIVE_INFINITY,\n max: Number.POSITIVE_INFINITY,\n isInt: false,\n isItem\n };\n break;\n default: {\n // Match protobufjs by trying the full relative path at each enclosing scope.\n // Leading-dot names are absolute and must not use enclosing scopes.\n const absolute = protobufType.startsWith('.');\n const typePath = (absolute ? protobufType.slice(1) : protobufType).split('.');\n let resolved: AnyNestedObject;\n let resolvedScope: string[];\n for (let depth = absolute ? 0 : scope.length; depth >= 0; depth--) {\n resolvedScope = [...scope.slice(0, depth), ...typePath];\n let nested = descriptor;\n resolved = undefined;\n for (const part of resolvedScope) {\n resolved = nested?.[part];\n nested = resolved && 'nested' in resolved ? resolved.nested : undefined;\n }\n if (resolved) {\n break;\n }\n }\n if (resolved && 'values' in resolved) {\n javaScriptType = 'number';\n enumValues = Object.values(resolved.values);\n numOpts = {\n min: minFourBytes,\n max: maxFourBytes,\n isInt: true,\n isItem\n };\n } else if (resolved && 'fields' in resolved) {\n this._validateFields(\n errorInfos,\n fieldNames,\n fieldDataValue,\n resolved,\n descriptor,\n schemaId,\n resolvedScope\n );\n javaScriptType = 'object';\n }\n break;\n }\n }\n\n if (typeof fieldDataValue !== javaScriptType) {\n errorInfos.push(\n new ValidationEntry(\n ErrorCode.incorrectType,\n fieldNames,\n protobufType,\n typeof fieldDataValue\n )\n );\n } else if (numOpts) {\n if (numOpts.isInt && !Number.isFinite(fieldDataValue)) {\n errorCode = ErrorCode.infiniteNumber;\n } else if (numOpts.isInt && !Number.isInteger(fieldDataValue)) {\n errorCode = ErrorCode.integerExpected;\n } else if (\n !(!numOpts.isInt && Number.isNaN(fieldDataValue)) &&\n !(fieldDataValue >= numOpts.min && fieldDataValue <= numOpts.max)\n ) {\n errorCode = ErrorCode.numberOutOfRange;\n } else if (enumValues && !enumValues.includes(fieldDataValue)) {\n errorCode = ErrorCode.numberOutOfRange;\n }\n }\n }\n if (errorCode) {\n errorInfos.push(new ValidationEntry(errorCode, fieldNames));\n }\n }\n}\n\nexport const logValidator = new LogValidator();\n","import { BucketMetric, Metric } from '../interfaces';\nimport { BucketHistogram, MetricTag, UpCounter, ValueRecorder } from '../interfaces-private';\nimport { MetricsTags } from './TypeDefinitions';\n\nexport class MetricsUtility {\n private _getMetricTags<T>(metric: Metric<T>): MetricTag[] {\n const tags: MetricsTags = metric.getTags();\n if (tags) {\n return Object.entries(tags).map((entry) => {\n const mt: MetricTag = {\n name: entry[0],\n value: entry[1].toString()\n };\n return mt;\n });\n }\n return undefined;\n }\n\n getUpCounters(metrics: Metric<number>[], reset = true): UpCounter[] {\n return metrics.map((metric) => {\n const data: UpCounter = {\n name: metric.getName(),\n createdTimestamp: metric.getCreatedOn(),\n lastUpdatedTimestamp: metric.getLastUpdatedOn(),\n value: metric.getData(),\n ownerName: metric.getOwnerName(),\n ownerAppName: metric.getOwnerAppName(),\n tags: this._getMetricTags(metric)\n };\n if (reset) {\n metric.reset();\n }\n return data;\n });\n }\n\n getValueRecorders(metrics: Metric<number[]>[], reset = true): ValueRecorder[] {\n return metrics.map((metric) => {\n const data: ValueRecorder = {\n name: metric.getName(),\n createdTimestamp: metric.getCreatedOn(),\n lastUpdatedTimestamp: metric.getLastUpdatedOn(),\n values: metric.getData(),\n ownerName: metric.getOwnerName(),\n ownerAppName: metric.getOwnerAppName(),\n tags: this._getMetricTags(metric)\n };\n if (reset) {\n metric.reset();\n }\n return data;\n });\n }\n\n getBucketHistograms(metrics: BucketMetric<number[]>[], reset = true): BucketHistogram[] {\n return metrics.map((metric) => {\n const data: BucketHistogram = {\n name: metric.getName(),\n createdTimestamp: metric.getCreatedOn(),\n lastUpdatedTimestamp: metric.getLastUpdatedOn(),\n values: metric.getData(),\n buckets: metric.getBuckets(),\n ownerName: metric.getOwnerName(),\n ownerAppName: metric.getOwnerAppName(),\n tags: this._getMetricTags(metric)\n };\n if (reset) {\n metric.reset();\n }\n return data;\n });\n }\n\n getMetricsTags(array: MetricTag[]): MetricsTags {\n // Assuming array is already sorted by name\n const obj: MetricsTags = {};\n array.forEach((tag) => {\n obj[tag.name] = tag.value;\n });\n return obj;\n }\n}\n\nexport const metricsUtility = Object.freeze(new MetricsUtility());\n","import { PayloadProvider, PayloadProviderArgs, Schema, SchematizedPayload } from '../interfaces';\nimport {\n ErrorCode,\n ValidationEntry,\n logValidator,\n maxItemCountAppLimit,\n maxStringLengthAppLimit\n} from './LogValidator';\nimport type { SchematizedData } from './TypeDefinitions';\nimport { schemaUtil } from './SchemaUtil';\nimport { utility } from './Utility';\n\nclass PayloadUtility {\n public checkInputs(schema: Schema, data: SchematizedData): void {\n schemaUtil.checkSchema(schema);\n utility.requireArgument(data, 'data', 'object');\n\n let vEntries: ValidationEntry[];\n let savedUserPayload: SchematizedPayload;\n if (data.userPayload !== undefined && schemaUtil.isInternal(schema)) {\n // For internal schemas where we have nested messages, we need to temporarily\n // remove userPayload, since it's not yet encoded. (If left in place, it would fail\n // validation since it's not UInt8Array). We validate it separately here.\n savedUserPayload = data.userPayload;\n vEntries = logValidator.validate(\n savedUserPayload.schema,\n savedUserPayload.payload,\n true\n );\n this._processValidationResults(\n schemaUtil.getSchemaId(savedUserPayload.schema),\n savedUserPayload.payload,\n vEntries\n );\n data.userPayload = undefined;\n }\n\n vEntries = logValidator.validate(schema, data, true);\n this._processValidationResults(schemaUtil.getSchemaId(schema), data, vEntries);\n\n if (savedUserPayload !== undefined) {\n // Restore userPayload\n data.userPayload = savedUserPayload;\n }\n }\n\n public getExtraFields(schema: Schema, data: SchematizedData): string[] {\n utility.requireArgument(data, 'data', 'object');\n const ignoredFields: string[] = [];\n const subPayload = data.userPayload;\n if (subPayload !== undefined && schemaUtil.isInternal(schema)) {\n // Add fields that are not part of the schema\n ignoredFields.push(...schemaUtil.getExtraFields(subPayload.schema, subPayload.payload));\n }\n ignoredFields.push(...schemaUtil.getExtraFields(schema, data));\n return ignoredFields;\n }\n\n public getPayloadFromProvider(\n provider: PayloadProvider,\n args?: PayloadProviderArgs\n ): SchematizedPayload {\n const payload: SchematizedPayload = provider?.getPayload(args) || undefined;\n if (payload) {\n this.checkInputs(payload.schema, payload.payload);\n }\n return payload;\n }\n\n private _processValidationResults(\n schemaId: string,\n data: SchematizedData,\n ventries: ValidationEntry[]\n ): void {\n for (let i = 0; i < ventries.length; i += 1) {\n const ei = ventries[i];\n\n if (\n ei.errorCode == ErrorCode.stringLengthOverflowAppLimit ||\n ei.errorCode == ErrorCode.itemCountOverflowAppLimit\n ) {\n const lfi = ei.fields.length - 1;\n const obj = this._traverseFields(data, ei.fields.slice(0, lfi));\n const field = ei.fields[lfi];\n if (ei.errorCode == ErrorCode.stringLengthOverflowAppLimit) {\n obj[field] = obj[field].substring(0, maxStringLengthAppLimit);\n } else {\n obj[field].splice(maxItemCountAppLimit);\n }\n } else {\n throw new Error(ei.asMessage(schemaId));\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _traverseFields(data: SchematizedData, fields: string[]): any {\n if (!fields.length) {\n return data;\n }\n return this._traverseFields(data[fields[0]], fields.slice(1));\n }\n}\n\nexport const payloadUtility = Object.freeze(new PayloadUtility());\n","import {\n CoreEnvelopeBuilder,\n CoreEnvelopeContentsRaw,\n LogMessageRaw,\n StaticAttributes\n} from 'o11y/core_envelope';\nimport { LazyMapToList, SchematizedData, schemaUtil, utility } from 'o11y/shared';\nimport {\n LogCollector,\n LogMeta,\n MetricsCollector,\n MetricsExtractorMethods,\n Schema\n} from '../interfaces';\nimport {\n EstimatedByteSizeChangeCallbackType,\n PrecollectCallbackType,\n SimpleCollectorOptions\n} from './interfaces/SimpleCollectorOptions';\n\nconst defaultMaxUniqueSchemas = 10000;\n\nexport class SimpleCollector implements LogCollector, MetricsCollector {\n private readonly _messageBuffers: LazyMapToList<Schema, LogMessageRaw>;\n private readonly _staticAttributes: StaticAttributes;\n private readonly _precollectCallback: PrecollectCallbackType;\n private readonly _estimatedByteSizeChangeCallback: EstimatedByteSizeChangeCallbackType;\n private _metricsExtractors: MetricsExtractorMethods;\n private _messageSize = 0;\n private _isCollecting = false;\n\n constructor(options?: SimpleCollectorOptions) {\n let maxUniqueSchemas = defaultMaxUniqueSchemas;\n if (options) {\n const env = options.environment;\n if (env) {\n this._staticAttributes = {\n appName: env.appName,\n appVersion: env.appVersion,\n appExperience: env.appExperience,\n deviceId: env.deviceId,\n deviceModel: env.deviceModel,\n sdkVersion: env.sdkVersion\n };\n }\n\n if (\n utility.requireArgumentIfDefined(\n options.precollectCallback,\n 'options.precollectCallback',\n 'function'\n )\n ) {\n this._precollectCallback = options.precollectCallback;\n }\n\n if (\n utility.requireArgumentIfDefined(\n options.estimatedByteSizeChangeCallback,\n 'options.estimatedByteSizeChangeCallback',\n 'function'\n )\n ) {\n this._estimatedByteSizeChangeCallback = options.estimatedByteSizeChangeCallback;\n }\n\n const mus: number = options.maxUniqueSchemas;\n if (mus !== undefined) {\n if (typeof mus !== 'number' || !(mus > 0)) {\n throw new Error('options.maxUniqueSchemas, if defined, must be > 0');\n }\n maxUniqueSchemas = mus;\n }\n }\n this._messageBuffers = new LazyMapToList<Schema, LogMessageRaw>(maxUniqueSchemas);\n }\n\n private _triggerEstimatedByteSizeChange(newSize: number): void {\n return this._estimatedByteSizeChangeCallback?.(newSize);\n }\n\n collect(schema: Schema, data: SchematizedData, logMeta: LogMeta): void {\n if (this._isCollecting) {\n return;\n }\n this._isCollecting = true;\n try {\n const msg: LogMessageRaw = {\n timestamp: logMeta.timestamp,\n data,\n age: logMeta.age,\n rootId: logMeta.rootId,\n seq: logMeta.sequence,\n sseq: logMeta.schemaSequence,\n loggerName: logMeta.loggerName,\n pagePayload: logMeta.pagePayload,\n loggerAppName: logMeta.loggerAppName,\n connectionType: logMeta.connectionType,\n appPayload: logMeta.appPayload,\n csId: logMeta.clientSessionId,\n recCsId: logMeta.receiverClientSessionId,\n recRootId: logMeta.receiverRootId,\n tenantClass: logMeta.tenantClass\n };\n\n if (this._precollectCallback?.(schema, msg) === false) {\n return;\n }\n\n if (!this._messageBuffers.push(schema, msg)) {\n throw new Error(\n `Buffer is full. Refusing schemaId ${schemaUtil.getSchemaId(schema)}`\n );\n }\n\n this._messageSize += utility.estimateObjectSize(msg);\n this._triggerEstimatedByteSizeChange(this.estimatedByteSize);\n } finally {\n this._isCollecting = false;\n }\n }\n\n get estimatedByteSize(): number {\n return this._messageSize + this.metricsCount * 8;\n }\n\n get hasData(): boolean {\n return this.messagesCount > 0 || this.metricsCount > 0;\n }\n\n get messagesCount(): number {\n return this._messageBuffers.totalItemCount;\n }\n\n get metricsCount(): number {\n let count = 0;\n\n if (this._metricsExtractors) {\n count += this._metricsExtractors.getAllUpCounters().length;\n count += this._metricsExtractors.getAllValueRecorders().length;\n count += this._metricsExtractors.getAllBucketHistograms().length;\n }\n\n return count;\n }\n\n // Get data from message buffer & corresponding metrics & clear the envelope\n getRawContentsOfCoreEnvelope(): CoreEnvelopeContentsRaw {\n const contents: CoreEnvelopeContentsRaw = {\n staticAttributes: this._staticAttributes,\n messages: this._messageBuffers.getAllMessages(true)\n };\n\n if (this._metricsExtractors) {\n contents.upCounters = CoreEnvelopeBuilder.getUpCounters(\n this._metricsExtractors.getAllUpCounters(),\n true\n );\n contents.valueRecorders = CoreEnvelopeBuilder.getValueRecorders(\n this._metricsExtractors.getAllValueRecorders(),\n true\n );\n contents.bucketHistograms = CoreEnvelopeBuilder.getBucketHistograms(\n this._metricsExtractors.getAllBucketHistograms(),\n true\n );\n }\n\n this._messageSize = 0;\n this._triggerEstimatedByteSizeChange(this.estimatedByteSize);\n return contents;\n }\n\n receiveMetricsExtractors(metricsExtractors: MetricsExtractorMethods): void {\n this._metricsExtractors = metricsExtractors;\n }\n}\n","export const core_envelope={namespace:\"sf.instrumentation\",name:\"CoreEnvelope\",pbjsSchema:{\"nested\":{\"sf\":{\"nested\":{\"instrumentation\":{\"nested\":{\"MessageBundle\":{\"fields\":{\"messages\":{\"rule\":\"repeated\",\"id\":2,\"type\":\"LogMessage\"},\"schemaName\":{\"id\":1,\"type\":\"string\"}}},\"Metrics\":{\"fields\":{\"globalMetricTags\":{\"rule\":\"repeated\",\"id\":4,\"type\":\"MetricTag\"},\"bucketHistograms\":{\"rule\":\"repeated\",\"id\":3,\"type\":\"BucketHistogram\"},\"valueRecorders\":{\"rule\":\"repeated\",\"id\":2,\"type\":\"ValueRecorder\"},\"upCounters\":{\"rule\":\"repeated\",\n\"id\":1,\"type\":\"UpCounter\"}}},\"CoreEnvelopeDiagnostics\":{\"fields\":{\"schemaVersion\":{\"id\":6,\"type\":\"string\"},\"generatedTimestamp\":{\"id\":2,\"type\":\"double\"},\"bundleCount\":{\"id\":3,\"type\":\"uint32\"},\"upCounterCount\":{\"id\":4,\"type\":\"uint32\"},\"valueRecorderCount\":{\"id\":5,\"type\":\"uint32\"},\"key\":{\"id\":1,\"type\":\"string\"},\"bucketHistogramCount\":{\"id\":7,\"type\":\"uint32\"}}},\"LogMessage\":{\"fields\":{\"data\":{\"id\":2,\"type\":\"bytes\"},\"rootId\":{\"id\":4,\"type\":\"string\"},\"csId\":{\"id\":12,\"type\":\"string\"},\"recCsId\":{\"id\":13,\n\"type\":\"string\"},\"pagePayload\":{\"id\":7,\"type\":\"Payload\"},\"connectionType\":{\"id\":9,\"type\":\"string\"},\"appPayload\":{\"id\":10,\"type\":\"Payload\"},\"tenantClass\":{\"id\":15,\"type\":\"string\"},\"loggerAppName\":{\"id\":8,\"type\":\"string\"},\"sseq\":{\"id\":11,\"type\":\"uint32\"},\"recRootId\":{\"id\":14,\"type\":\"string\"},\"loggerName\":{\"id\":6,\"type\":\"string\"},\"age\":{\"id\":3,\"type\":\"double\"},\"seq\":{\"id\":5,\"type\":\"uint32\"},\"timestamp\":{\"id\":1,\"type\":\"double\"}}},\"CoreEnvelope\":{\"fields\":{\"diagnostics\":{\"id\":1,\"type\":\"CoreEnvelopeDiagnostics\"},\n\"bundles\":{\"rule\":\"repeated\",\"id\":2,\"type\":\"MessageBundle\"},\"metrics\":{\"id\":3,\"type\":\"Metrics\"},\"staticAttributes\":{\"id\":4,\"type\":\"StaticAttributes\"}}},\"MetricTag\":{\"fields\":{\"name\":{\"id\":1,\"type\":\"string\"},\"value\":{\"id\":2,\"type\":\"string\"}}},\"BucketHistogram\":{\"fields\":{\"lastUpdatedTimestamp\":{\"id\":3,\"type\":\"double\"},\"ownerName\":{\"id\":7,\"type\":\"string\"},\"ownerAppName\":{\"id\":8,\"type\":\"string\"},\"createdTimestamp\":{\"id\":2,\"type\":\"double\"},\"values\":{\"rule\":\"repeated\",\"id\":4,\"type\":\"double\"},\"buckets\":{\"rule\":\"repeated\",\n\"id\":5,\"type\":\"uint32\"},\"name\":{\"id\":1,\"type\":\"string\"},\"tags\":{\"rule\":\"repeated\",\"id\":6,\"type\":\"MetricTag\"}}},\"ValueRecorder\":{\"fields\":{\"lastUpdatedTimestamp\":{\"id\":3,\"type\":\"double\"},\"ownerName\":{\"id\":6,\"type\":\"string\"},\"ownerAppName\":{\"id\":7,\"type\":\"string\"},\"createdTimestamp\":{\"id\":2,\"type\":\"double\"},\"values\":{\"rule\":\"repeated\",\"id\":4,\"type\":\"double\"},\"name\":{\"id\":1,\"type\":\"string\"},\"tags\":{\"rule\":\"repeated\",\"id\":5,\"type\":\"MetricTag\"}}},\"StaticAttributes\":{\"fields\":{\"appVersion\":{\"id\":2,\"type\":\"string\"},\n\"appName\":{\"id\":1,\"type\":\"string\"},\"deviceModel\":{\"id\":5,\"type\":\"string\"},\"sdkVersion\":{\"id\":6,\"type\":\"string\"},\"deviceId\":{\"id\":4,\"type\":\"string\"},\"appExperience\":{\"id\":3,\"type\":\"string\"}}},\"Payload\":{\"fields\":{\"payload\":{\"id\":2,\"type\":\"bytes\"},\"schemaName\":{\"id\":1,\"type\":\"string\"}}},\"UpCounter\":{\"fields\":{\"lastUpdatedTimestamp\":{\"id\":3,\"type\":\"double\"},\"ownerName\":{\"id\":6,\"type\":\"string\"},\"ownerAppName\":{\"id\":7,\"type\":\"string\"},\"createdTimestamp\":{\"id\":2,\"type\":\"double\"},\"name\":{\"id\":1,\"type\":\"string\"},\n\"value\":{\"id\":4,\"type\":\"uint32\"},\"tags\":{\"rule\":\"repeated\",\"id\":5,\"type\":\"MetricTag\"}}}}}}}}}};","import { Message, Root, Type } from 'protobufjs';\nimport { SchematizedData, schemaUtil, utility } from 'o11y/shared';\n\nimport { LogMeta, Schema, SchematizedPayload } from '../interfaces';\nimport { EncodedSchematizedPayload, LogMessage, LogMessageRaw } from '../core_envelope/interfaces';\n\nclass ProtobufUtil {\n private readonly _typeStore = new Map<string, Type>();\n\n public getSchemaType(schema: Schema): Type {\n utility.requireArgument(schema, 'schema');\n const schemaPath = schemaUtil.getSchemaId(schema);\n let type = this._typeStore.get(schemaPath);\n\n if (!type) {\n // Lazy add to the type store\n const schemaInstance = Root.fromJSON(schema.pbjsSchema);\n // this will throw if it can't find it\n type = schemaInstance.lookupType(schemaPath);\n this._typeStore.set(schemaPath, type);\n }\n\n return type;\n }\n\n public validate(schema: Schema, data: SchematizedData): Type {\n utility.requireArgument(schema, 'schema');\n utility.requireArgument(data, 'data');\n const type: Type = this.getSchemaType(schema);\n\n const errorText = type.verify(data);\n if (errorText) {\n throw new Error(`Data is invalid for ${type.fullName}: ${errorText}`);\n }\n return type;\n }\n\n // Note: In a Node environment, this actually returns an instance of Buffer.\n public encode(schema: Schema, data: SchematizedData): Uint8Array {\n const type: Type = this.validate(schema, data);\n const message: Message = type.fromObject(data);\n const encoded: Uint8Array = type.encode(message).finish();\n return encoded;\n }\n\n public encodePayload(rawPayload: SchematizedPayload): EncodedSchematizedPayload {\n if (rawPayload?.schema && rawPayload.payload) {\n return {\n schemaName: schemaUtil.getSchemaId(rawPayload.schema),\n payload: this.encode(rawPayload.schema, rawPayload.payload)\n };\n }\n return undefined;\n }\n\n // This method generates a LogMessage (used in the CoreEnvelope) from the provided arguments.\n public getLogMessage(schema: Schema, data: SchematizedData, logMeta: LogMeta): LogMessage {\n return {\n timestamp: logMeta.timestamp,\n data: this.encode(schema, data),\n age: logMeta.age,\n rootId: logMeta.rootId,\n seq: logMeta.sequence,\n sseq: logMeta.schemaSequence,\n loggerName: logMeta.loggerName,\n pagePayload: this.encodePayload(logMeta.pagePayload),\n loggerAppName: logMeta.loggerAppName,\n connectionType: logMeta.connectionType,\n appPayload: this.encodePayload(logMeta.appPayload),\n csId: logMeta.clientSessionId,\n recCsId: logMeta.receiverClientSessionId,\n recRootId: logMeta.receiverRootId,\n tenantClass: logMeta.tenantClass\n };\n }\n\n public processRawLogMessage(schema: Schema, raw: LogMessageRaw): LogMessage {\n const dataClone = raw.data ? Object.assign({}, raw.data) : {};\n if (schemaUtil.isInternal(schema) && dataClone.userPayload) {\n dataClone.userPayload = this.encodePayload(dataClone.userPayload);\n }\n\n return Object.assign({}, raw, {\n data: this.encode(schema, dataClone),\n pagePayload: this.encodePayload(raw.pagePayload),\n appPayload: this.encodePayload(raw.appPayload)\n });\n }\n}\n\nexport const protobufUtil = new ProtobufUtil();\n","import { Root, Type } from 'protobufjs';\nimport {\n CoreEnvelope,\n CoreEnvelopeContents,\n CoreEnvelopeContentsRaw,\n LogMessage,\n CoreEnvelopeBuilder\n} from 'o11y/core_envelope';\nimport { coreEnvelopeSchema } from 'o11y_schema/sf_instrumentation';\nimport { Schema } from '../../interfaces';\nimport { protobufUtil } from '../protobuf-util';\n\nconst root: Root = Root.fromJSON(coreEnvelopeSchema.pbjsSchema);\nconst _coreEnvelopeType: Type = root.lookupType('CoreEnvelope');\n\nexport function processRawContents(contentsRaw: CoreEnvelopeContentsRaw): CoreEnvelopeContents {\n const processed: CoreEnvelopeContents = Object.assign({}, contentsRaw, {\n messages: new Map<Schema, LogMessage[]>()\n });\n // Encode individual messages\n contentsRaw.messages.forEach(function (rawMessages, schema) {\n processed.messages.set(\n schema,\n rawMessages.map((msg) => protobufUtil.processRawLogMessage(schema, msg))\n );\n });\n return processed;\n}\n\nexport function envelopeContents(contents: CoreEnvelopeContents): CoreEnvelope {\n return CoreEnvelopeBuilder.buildFrom(contents);\n}\n\nexport function encodeCoreEnvelope(coreEnvelope: CoreEnvelope): Uint8Array {\n const errorMessage = _coreEnvelopeType.verify(coreEnvelope);\n if (errorMessage) {\n throw new Error(`Invalid CoreEnvelope: ${errorMessage}`);\n }\n\n const encodedCoreEnvelope = _coreEnvelopeType.encode(coreEnvelope).finish();\n return encodedCoreEnvelope;\n}\n\nexport function encodeCoreEnvelopeContentsRaw(contentsRaw: CoreEnvelopeContentsRaw): Uint8Array {\n const contents: CoreEnvelopeContents = processRawContents(contentsRaw);\n const coreEnvelope: CoreEnvelope = envelopeContents(contents);\n const encoded: Uint8Array = encodeCoreEnvelope(coreEnvelope);\n return encoded;\n}\n","import { SimpleCollector } from '../simple_collector/SimpleCollector';\nimport { encodeCoreEnvelopeContentsRaw } from '../collectors/core-collector/CoreEnvelopeProtobufUtility';\nimport type { Environment } from '../interfaces';\n\ntype SchemaLike = { namespace?: string; name?: string };\ntype LogMessageLike = { data?: { isRoot?: boolean } | Record<string, unknown> };\n\nexport interface TelemetryUploaderOptions {\n endpoint: string;\n environment?: Environment;\n formDataKey?: string;\n maxUniqueSchemas?: number;\n onUploadError?: (error: unknown) => void;\n isRootActivityInProgress?: () => boolean;\n log?: Log;\n useBase64Json?: boolean;\n}\n\nexport interface UploadResult {\n success: boolean;\n response?: Response;\n error?: unknown;\n bytesSent?: number;\n}\n\nexport type Log = (...args: unknown[]) => void;\n\nexport const NO_OP_LOG: Log = () => {\n /* no-op */\n};\n\nconst ROOT_ACTIVITY_NAMESPACE = 'sf.instrumentation';\nconst ROOT_ACTIVITY_NAME = 'Activity';\nconst KEEPALIVE_MAX_BYTES = 64 * 1024;\nconst BUFFER_UPLOAD_THRESHOLD = 50 * 1024;\nconst ROOT_ACTIVITY_TIMEOUT_MS = 10_000;\nconst BTOA_CHUNK_SIZE = 0x8000;\nconst BASE64_JSON_WRAPPER_BYTES = 16;\n\nfunction encodeArrayBufferToBase64(buffer: ArrayBuffer): string {\n const bytes = new Uint8Array(buffer);\n const parts: string[] = [];\n for (let i = 0; i < bytes.length; i += BTOA_CHUNK_SIZE) {\n const chunk = bytes.subarray(i, Math.min(i + BTOA_CHUNK_SIZE, bytes.length));\n parts.push(String.fromCharCode.apply(null, chunk as unknown as number[]));\n }\n return btoa(parts.join(''));\n}\n\nfunction effectiveBodySize(payloadSize: number, useBase64Json: boolean): number {\n if (!useBase64Json) {\n return payloadSize;\n }\n return Math.ceil(payloadSize / 3) * 4 + BASE64_JSON_WRAPPER_BYTES;\n}\n\nexport class TelemetryUploader {\n private readonly _collector: SimpleCollector;\n private readonly _endpoint: string;\n private readonly _formDataKey: string;\n private readonly _useBase64Json: boolean;\n private readonly _onUploadError?: (error: unknown) => void;\n private readonly _isRootActivityInProgress?: () => boolean;\n private readonly _log: Log;\n private _isPageHiding = false;\n private _rootActivityTimeoutHandle: ReturnType<typeof setTimeout> | null = null;\n\n constructor(options: TelemetryUploaderOptions) {\n this._endpoint = options.endpoint;\n this._formDataKey = options.formDataKey ?? 'telemetry';\n this._useBase64Json = options.useBase64Json ?? false;\n this._onUploadError = options.onUploadError;\n this._isRootActivityInProgress = options.isRootActivityInProgress;\n this._log = options.log ?? NO_OP_LOG;\n\n const collectorOptions = {\n environment: options.environment,\n maxUniqueSchemas: options.maxUniqueSchemas,\n precollectCallback: this._handlePrecollect,\n estimatedByteSizeChangeCallback: this._handleByteSizeChange\n };\n\n this._collector = new SimpleCollector(collectorOptions);\n this._setupVisibilityHandler();\n }\n\n get logCollector(): SimpleCollector {\n return this._collector;\n }\n\n get hasData(): boolean {\n return this._collector.hasData;\n }\n\n get estimatedByteSize(): number {\n return this._collector.estimatedByteSize;\n }\n\n private _buildEndpointWithDomain(): string {\n const domainName = typeof window !== 'undefined' ? window.location.hostname : 'localhost';\n const separator = this._endpoint.includes('?') ? '&' : '?';\n return `${this._endpoint}${separator}domain=${encodeURIComponent(domainName)}`;\n }\n\n async upload(useKeepalive = false, reason = 'manual'): Promise<UploadResult | undefined> {\n this._clearRootActivityTimeout();\n\n if (!this._collector.hasData) {\n return undefined;\n }\n\n const contents = this._collector.getRawContentsOfCoreEnvelope();\n const encoded = encodeCoreEnvelopeContentsRaw(contents);\n const payloadSize = encoded.byteLength;\n this._log(\n `[TelemetryUploader] Upload reason: ${reason}, payload size: ${payloadSize} bytes`\n );\n\n let keepalive = useKeepalive;\n const onWireSize = effectiveBodySize(payloadSize, this._useBase64Json);\n if (keepalive && onWireSize > KEEPALIVE_MAX_BYTES) {\n this._log(\n `[TelemetryUploader] On-wire size ${onWireSize} (raw ${payloadSize}) exceeds keepalive limit (${KEEPALIVE_MAX_BYTES}). Falling back to regular fetch.`\n );\n keepalive = false;\n }\n\n const encodedBuffer =\n encoded.buffer instanceof ArrayBuffer\n ? encoded.buffer.slice(encoded.byteOffset, encoded.byteOffset + encoded.byteLength)\n : encoded.slice().buffer;\n\n const endpointUrl = this._buildEndpointWithDomain();\n\n let body: BodyInit;\n let contentTypeHeader: HeadersInit | undefined;\n if (this._useBase64Json) {\n body = JSON.stringify({ base64Env: encodeArrayBufferToBase64(encodedBuffer) });\n contentTypeHeader = { 'Content-Type': 'application/json' };\n } else {\n const formData = new FormData();\n formData.append(this._formDataKey, new Blob([encodedBuffer]));\n body = formData;\n }\n\n try {\n const response = await fetch(endpointUrl, {\n method: 'POST',\n body,\n keepalive,\n ...(contentTypeHeader ? { headers: contentTypeHeader } : {})\n });\n\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${response.statusText}`);\n }\n\n return {\n success: true,\n response,\n bytesSent: payloadSize\n };\n } catch (error) {\n this._onUploadError?.(error);\n return {\n success: false,\n error\n };\n }\n }\n\n uploadOnActivityEnd(): Promise<UploadResult | undefined> {\n return this.upload(this._isPageHiding, 'activity_end');\n }\n\n uploadWithKeepalive(): Promise<UploadResult | undefined> {\n return this.upload(true, 'keepalive_visibility_change');\n }\n\n startPeriodicUploads(intervalMs = 30000): () => void {\n const handle = setInterval(() => {\n if (this._collector.hasData) {\n this.upload(false, 'periodic_interval').catch((error) =>\n this._onUploadError?.(error)\n );\n }\n }, intervalMs);\n\n return () => clearInterval(handle);\n }\n\n private _handlePrecollect = (schema: SchemaLike, msg: LogMessageLike): boolean => {\n if (\n schema.namespace === ROOT_ACTIVITY_NAMESPACE &&\n schema.name === ROOT_ACTIVITY_NAME &&\n (msg.data as { isRoot?: boolean } | undefined)?.isRoot\n ) {\n this._scheduleMicrotask(() => {\n if (this._collector.hasData) {\n this.uploadOnActivityEnd().catch((error) => this._onUploadError?.(error));\n }\n });\n }\n return true;\n };\n\n private _handleByteSizeChange = (newSize: number): void => {\n if (newSize >= BUFFER_UPLOAD_THRESHOLD) {\n if (this._collector.hasData) {\n const shouldDelay = this._isRootActivityRunning();\n this._log(\n `[TelemetryUploader] Buffer threshold upload attempt at ${newSize} bytes. Delay decision: ${shouldDelay}`\n );\n if (shouldDelay) {\n this._ensureRootActivityTimeout();\n return;\n }\n this.upload(false, 'buffer_threshold_exceeded').catch((error) =>\n this._onUploadError?.(error)\n );\n }\n }\n };\n\n private _isRootActivityRunning(): boolean {\n try {\n return this._isRootActivityInProgress?.() ?? false;\n } catch (error) {\n this._log('[TelemetryUploader] Failed to query root activity status', error);\n return false;\n }\n }\n\n private _ensureRootActivityTimeout(): void {\n if (this._rootActivityTimeoutHandle !== null) {\n return;\n }\n this._rootActivityTimeoutHandle = setTimeout(() => {\n this._rootActivityTimeoutHandle = null;\n if (this._collector.hasData) {\n this.upload(false, 'root_activity_timeout').catch((error) =>\n this._onUploadError?.(error)\n );\n }\n }, ROOT_ACTIVITY_TIMEOUT_MS);\n }\n\n private _clearRootActivityTimeout(): void {\n if (this._rootActivityTimeoutHandle !== null) {\n clearTimeout(this._rootActivityTimeoutHandle);\n this._rootActivityTimeoutHandle = null;\n }\n }\n\n private _scheduleMicrotask(callback: () => void): void {\n if (typeof queueMicrotask === 'function') {\n queueMicrotask(callback);\n } else {\n Promise.resolve().then(callback);\n }\n }\n\n private _setupVisibilityHandler(): void {\n document.addEventListener('visibilitychange', () => {\n if (document.visibilityState === 'hidden') {\n this._isPageHiding = true;\n if (this._collector.hasData) {\n this.uploadWithKeepalive().catch((error) => this._onUploadError?.(error));\n }\n setTimeout(() => {\n this._isPageHiding = false;\n }, 0);\n }\n });\n }\n}\n"],"names":["coreEnvelopeSchema"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "o11y",
3
- "version": "266.23.0",
3
+ "version": "266.24.0",
4
4
  "description": "O11y Client-Side Instrumentation & Observability Library",
5
5
  "main": "index.js",
6
6
  "exports": {