@grafana/faro-web-sdk 1.0.0-beta4 → 1.0.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.
Files changed (95) hide show
  1. package/README.md +2 -0
  2. package/dist/bundle/faro-web-sdk.iife.js +1 -1
  3. package/dist/cjs/config/getWebInstrumentations.js +1 -0
  4. package/dist/cjs/config/getWebInstrumentations.js.map +1 -1
  5. package/dist/cjs/config/makeCoreConfig.js +4 -4
  6. package/dist/cjs/config/makeCoreConfig.js.map +1 -1
  7. package/dist/cjs/index.js +6 -4
  8. package/dist/cjs/index.js.map +1 -1
  9. package/dist/cjs/instrumentations/console/instrumentation.js +2 -2
  10. package/dist/cjs/instrumentations/console/instrumentation.js.map +1 -1
  11. package/dist/cjs/instrumentations/errors/instrumentation.js +2 -2
  12. package/dist/cjs/instrumentations/errors/instrumentation.js.map +1 -1
  13. package/dist/cjs/instrumentations/errors/registerOnerror.js +2 -2
  14. package/dist/cjs/instrumentations/errors/registerOnerror.js.map +1 -1
  15. package/dist/cjs/instrumentations/errors/registerOnunhandledrejection.js +2 -2
  16. package/dist/cjs/instrumentations/errors/registerOnunhandledrejection.js.map +1 -1
  17. package/dist/cjs/instrumentations/index.js +3 -1
  18. package/dist/cjs/instrumentations/index.js.map +1 -1
  19. package/dist/cjs/instrumentations/session/instrumentation.js +3 -3
  20. package/dist/cjs/instrumentations/session/instrumentation.js.map +1 -1
  21. package/dist/cjs/instrumentations/view/index.js +6 -0
  22. package/dist/cjs/instrumentations/view/index.js.map +1 -0
  23. package/dist/cjs/instrumentations/view/instrumentation.js +44 -0
  24. package/dist/cjs/instrumentations/view/instrumentation.js.map +1 -0
  25. package/dist/cjs/instrumentations/webVitals/instrumentation.js +1 -1
  26. package/dist/cjs/instrumentations/webVitals/instrumentation.js.map +1 -1
  27. package/dist/cjs/metas/index.js +5 -1
  28. package/dist/cjs/metas/index.js.map +1 -1
  29. package/dist/cjs/{session.js → metas/session/createSession.js} +1 -1
  30. package/dist/cjs/metas/session/createSession.js.map +1 -0
  31. package/dist/cjs/metas/session/index.js +6 -0
  32. package/dist/cjs/metas/session/index.js.map +1 -0
  33. package/dist/cjs/metas/view/const.js +7 -0
  34. package/dist/cjs/metas/view/const.js.map +1 -0
  35. package/dist/cjs/metas/view/index.js +6 -0
  36. package/dist/cjs/metas/view/index.js.map +1 -0
  37. package/dist/cjs/transports/console/transport.js +1 -1
  38. package/dist/cjs/transports/console/transport.js.map +1 -1
  39. package/dist/cjs/transports/fetch/transport.js.map +1 -1
  40. package/dist/esm/config/getWebInstrumentations.js +2 -1
  41. package/dist/esm/config/getWebInstrumentations.js.map +1 -1
  42. package/dist/esm/config/makeCoreConfig.js +5 -5
  43. package/dist/esm/config/makeCoreConfig.js.map +1 -1
  44. package/dist/esm/index.js +3 -4
  45. package/dist/esm/index.js.map +1 -1
  46. package/dist/esm/instrumentations/console/instrumentation.js +2 -2
  47. package/dist/esm/instrumentations/console/instrumentation.js.map +1 -1
  48. package/dist/esm/instrumentations/errors/instrumentation.js +2 -2
  49. package/dist/esm/instrumentations/errors/instrumentation.js.map +1 -1
  50. package/dist/esm/instrumentations/errors/registerOnerror.js +2 -2
  51. package/dist/esm/instrumentations/errors/registerOnerror.js.map +1 -1
  52. package/dist/esm/instrumentations/errors/registerOnunhandledrejection.js +2 -2
  53. package/dist/esm/instrumentations/errors/registerOnunhandledrejection.js.map +1 -1
  54. package/dist/esm/instrumentations/index.js +1 -0
  55. package/dist/esm/instrumentations/index.js.map +1 -1
  56. package/dist/esm/instrumentations/session/instrumentation.js +3 -3
  57. package/dist/esm/instrumentations/session/instrumentation.js.map +1 -1
  58. package/dist/esm/instrumentations/view/index.js +2 -0
  59. package/dist/esm/instrumentations/view/index.js.map +1 -0
  60. package/dist/esm/instrumentations/view/instrumentation.js +22 -0
  61. package/dist/esm/instrumentations/view/instrumentation.js.map +1 -0
  62. package/dist/esm/instrumentations/webVitals/instrumentation.js +1 -1
  63. package/dist/esm/instrumentations/webVitals/instrumentation.js.map +1 -1
  64. package/dist/esm/metas/index.js +2 -0
  65. package/dist/esm/metas/index.js.map +1 -1
  66. package/dist/esm/{session.js → metas/session/createSession.js} +1 -1
  67. package/dist/esm/metas/session/createSession.js.map +1 -0
  68. package/dist/esm/metas/session/index.js +2 -0
  69. package/dist/esm/metas/session/index.js.map +1 -0
  70. package/dist/esm/metas/view/const.js +4 -0
  71. package/dist/esm/metas/view/const.js.map +1 -0
  72. package/dist/esm/metas/view/index.js +2 -0
  73. package/dist/esm/metas/view/index.js.map +1 -0
  74. package/dist/esm/transports/console/transport.js +1 -1
  75. package/dist/esm/transports/console/transport.js.map +1 -1
  76. package/dist/esm/transports/fetch/transport.js.map +1 -1
  77. package/dist/types/index.d.ts +4 -5
  78. package/dist/types/instrumentations/console/instrumentation.d.ts +1 -1
  79. package/dist/types/instrumentations/errors/instrumentation.d.ts +1 -1
  80. package/dist/types/instrumentations/errors/registerOnerror.d.ts +2 -2
  81. package/dist/types/instrumentations/errors/registerOnunhandledrejection.d.ts +2 -2
  82. package/dist/types/instrumentations/index.d.ts +1 -0
  83. package/dist/types/instrumentations/view/index.d.ts +1 -0
  84. package/dist/types/instrumentations/view/instrumentation.d.ts +8 -0
  85. package/dist/types/instrumentations/webVitals/instrumentation.d.ts +1 -1
  86. package/dist/types/metas/index.d.ts +2 -0
  87. package/dist/types/{session.d.ts → metas/session/createSession.d.ts} +0 -0
  88. package/dist/types/metas/session/index.d.ts +1 -0
  89. package/dist/types/metas/view/const.d.ts +3 -0
  90. package/dist/types/metas/view/index.d.ts +1 -0
  91. package/dist/types/transports/console/transport.d.ts +1 -1
  92. package/dist/types/transports/fetch/transport.d.ts +3 -3
  93. package/package.json +4 -4
  94. package/dist/cjs/session.js.map +0 -1
  95. package/dist/esm/session.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ export { createSession } from './createSession';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/metas/session/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC","sourcesContent":["export { createSession } from './createSession';\n"]}
@@ -0,0 +1,4 @@
1
+ export const defaultViewMeta = {
2
+ name: 'default',
3
+ };
4
+ //# sourceMappingURL=const.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"const.js","sourceRoot":"","sources":["../../../../src/metas/view/const.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,SAAS;CAChB,CAAC","sourcesContent":["export const defaultViewMeta = {\n name: 'default',\n};\n"]}
@@ -0,0 +1,2 @@
1
+ export { defaultViewMeta } from './const';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/metas/view/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC","sourcesContent":["export { defaultViewMeta } from './const';\n"]}
@@ -8,7 +8,7 @@ export class ConsoleTransport extends BaseTransport {
8
8
  }
9
9
  send(item) {
10
10
  var _a;
11
- return this.faro.unpatchedConsole[(_a = this.options.level) !== null && _a !== void 0 ? _a : LogLevel.DEBUG]('New event', getTransportBody(item));
11
+ return this.unpatchedConsole[(_a = this.options.level) !== null && _a !== void 0 ? _a : LogLevel.DEBUG]('New event', getTransportBody(item));
12
12
  }
13
13
  }
14
14
  //# sourceMappingURL=transport.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../../src/transports/console/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAKxF,MAAM,OAAO,gBAAiB,SAAQ,aAAa;IAIjD,YAAoB,UAAmC,EAAE;QACvD,KAAK,EAAE,CAAC;QADU,YAAO,GAAP,OAAO,CAA8B;QAHhD,SAAI,GAAG,yCAAyC,CAAC;QACjD,YAAO,GAAG,OAAO,CAAC;IAI3B,CAAC;IAED,IAAI,CAAC,IAAmB;;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAA,IAAI,CAAC,OAAO,CAAC,KAAK,mCAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/G,CAAC;CACF","sourcesContent":["import { BaseTransport, getTransportBody, LogLevel, VERSION } from '@grafana/faro-core';\nimport type { TransportItem } from '@grafana/faro-core';\n\nimport type { ConsoleTransportOptions } from './types';\n\nexport class ConsoleTransport extends BaseTransport {\n readonly name = '@grafana/faro-web-sdk:transport-console';\n readonly version = VERSION;\n\n constructor(private options: ConsoleTransportOptions = {}) {\n super();\n }\n\n send(item: TransportItem): void {\n return this.faro.unpatchedConsole[this.options.level ?? LogLevel.DEBUG]('New event', getTransportBody(item));\n }\n}\n"]}
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../../src/transports/console/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAKxF,MAAM,OAAO,gBAAiB,SAAQ,aAAa;IAIjD,YAAoB,UAAmC,EAAE;QACvD,KAAK,EAAE,CAAC;QADU,YAAO,GAAP,OAAO,CAA8B;QAHhD,SAAI,GAAG,yCAAyC,CAAC;QACjD,YAAO,GAAG,OAAO,CAAC;IAI3B,CAAC;IAED,IAAI,CAAC,IAAmB;;QACtB,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAA,IAAI,CAAC,OAAO,CAAC,KAAK,mCAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1G,CAAC;CACF","sourcesContent":["import { BaseTransport, getTransportBody, LogLevel, VERSION } from '@grafana/faro-core';\nimport type { TransportItem } from '@grafana/faro-core';\n\nimport type { ConsoleTransportOptions } from './types';\n\nexport class ConsoleTransport extends BaseTransport {\n readonly name = '@grafana/faro-web-sdk:transport-console';\n readonly version = VERSION;\n\n constructor(private options: ConsoleTransportOptions = {}) {\n super();\n }\n\n send(item: TransportItem): void {\n return this.unpatchedConsole[this.options.level ?? LogLevel.DEBUG]('New event', getTransportBody(item));\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../../src/transports/fetch/transport.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseTransport, createPromiseBuffer, getTransportBody, PromiseBuffer, VERSION } from '@grafana/faro-core';\nimport type { TransportItem } from '@grafana/faro-core';\n\nimport type { FetchTransportOptions } from './types';\n\nconst DEFAULT_BUFFER_SIZE = 30;\nconst DEFAULT_CONCURRENCY = 5; // chrome supports 10 total, firefox 17\nconst DEFAULT_RATE_LIMIT_BACKOFF_MS = 5000;\n\nexport class FetchTransport extends BaseTransport {\n readonly name = '@grafana/faro-web-sdk:transport-fetch';\n readonly version = VERSION;\n\n promiseBuffer: PromiseBuffer<Response | void>;\n\n private rateLimitBackoffMs: number;\n private getNow: () => number;\n private disabledUntil: Date = new Date();\n\n constructor(private options: FetchTransportOptions) {\n super();\n\n this.rateLimitBackoffMs = options.defaultRateLimitBackoffMs ?? DEFAULT_RATE_LIMIT_BACKOFF_MS;\n this.getNow = options.getNow ?? (() => Date.now());\n\n this.promiseBuffer = createPromiseBuffer({\n size: options.bufferSize ?? DEFAULT_BUFFER_SIZE,\n concurrency: options.concurrency ?? DEFAULT_CONCURRENCY,\n });\n }\n\n async send(item: TransportItem): Promise<void> {\n try {\n if (this.disabledUntil > new Date(this.getNow())) {\n this.logWarn(`Dropping transport item due to too many requests. Backoff until ${this.disabledUntil}`);\n\n return Promise.resolve();\n }\n\n await this.promiseBuffer.add(() => {\n const body = JSON.stringify(getTransportBody(item));\n\n const { url, requestOptions, apiKey } = this.options;\n\n const { headers, ...restOfRequestOptions } = requestOptions ?? {};\n\n return fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...(headers ?? {}),\n ...(apiKey ? { 'x-api-key': apiKey } : {}),\n },\n body,\n keepalive: true,\n ...(restOfRequestOptions ?? {}),\n })\n .then((response) => {\n if (response.status === 429) {\n this.disabledUntil = this.getRetryAfterDate(response);\n this.logWarn(`Too many requests, backing off until ${this.disabledUntil}`);\n }\n\n return response;\n })\n .catch((err) => {\n this.logError('Failed sending payload to the receiver\\n', JSON.parse(body), err);\n });\n });\n } catch (err) {\n this.logError(err);\n }\n }\n\n override getIgnoreUrls(): Array<string | RegExp> {\n return [this.options.url];\n }\n\n private getRetryAfterDate(response: Response): Date {\n const now = this.getNow();\n const retryAfterHeader = response.headers.get('Retry-After');\n\n if (retryAfterHeader) {\n const delay = Number(retryAfterHeader);\n\n if (!isNaN(delay)) {\n return new Date(delay * 1000 + now);\n }\n\n const date = Date.parse(retryAfterHeader);\n\n if (!isNaN(date)) {\n return new Date(date);\n }\n }\n\n return new Date(now + this.rateLimitBackoffMs);\n }\n}\n"]}
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../../src/transports/fetch/transport.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseTransport, createPromiseBuffer, getTransportBody, PromiseBuffer, VERSION } from '@grafana/faro-core';\nimport type { TransportItem } from '@grafana/faro-core';\n\nimport type { FetchTransportOptions } from './types';\n\nconst DEFAULT_BUFFER_SIZE = 30;\nconst DEFAULT_CONCURRENCY = 5; // chrome supports 10 total, firefox 17\nconst DEFAULT_RATE_LIMIT_BACKOFF_MS = 5000;\n\nexport class FetchTransport extends BaseTransport {\n readonly name = '@grafana/faro-web-sdk:transport-fetch';\n readonly version = VERSION;\n\n promiseBuffer: PromiseBuffer<Response | void>;\n\n private readonly rateLimitBackoffMs: number;\n private readonly getNow: () => number;\n private disabledUntil: Date = new Date();\n\n constructor(private options: FetchTransportOptions) {\n super();\n\n this.rateLimitBackoffMs = options.defaultRateLimitBackoffMs ?? DEFAULT_RATE_LIMIT_BACKOFF_MS;\n this.getNow = options.getNow ?? (() => Date.now());\n\n this.promiseBuffer = createPromiseBuffer({\n size: options.bufferSize ?? DEFAULT_BUFFER_SIZE,\n concurrency: options.concurrency ?? DEFAULT_CONCURRENCY,\n });\n }\n\n async send(item: TransportItem): Promise<void> {\n try {\n if (this.disabledUntil > new Date(this.getNow())) {\n this.logWarn(`Dropping transport item due to too many requests. Backoff until ${this.disabledUntil}`);\n\n return Promise.resolve();\n }\n\n await this.promiseBuffer.add(() => {\n const body = JSON.stringify(getTransportBody(item));\n\n const { url, requestOptions, apiKey } = this.options;\n\n const { headers, ...restOfRequestOptions } = requestOptions ?? {};\n\n return fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...(headers ?? {}),\n ...(apiKey ? { 'x-api-key': apiKey } : {}),\n },\n body,\n keepalive: true,\n ...(restOfRequestOptions ?? {}),\n })\n .then((response) => {\n if (response.status === 429) {\n this.disabledUntil = this.getRetryAfterDate(response);\n this.logWarn(`Too many requests, backing off until ${this.disabledUntil}`);\n }\n\n return response;\n })\n .catch((err) => {\n this.logError('Failed sending payload to the receiver\\n', JSON.parse(body), err);\n });\n });\n } catch (err) {\n this.logError(err);\n }\n }\n\n override getIgnoreUrls(): Array<string | RegExp> {\n return [this.options.url];\n }\n\n private getRetryAfterDate(response: Response): Date {\n const now = this.getNow();\n const retryAfterHeader = response.headers.get('Retry-After');\n\n if (retryAfterHeader) {\n const delay = Number(retryAfterHeader);\n\n if (!isNaN(delay)) {\n return new Date(delay * 1000 + now);\n }\n\n const date = Date.parse(retryAfterHeader);\n\n if (!isNaN(date)) {\n return new Date(date);\n }\n }\n\n return new Date(now + this.rateLimitBackoffMs);\n }\n}\n"]}
@@ -2,11 +2,10 @@ export { getWebInstrumentations, makeCoreConfig } from './config';
2
2
  export type { BrowserConfig } from './config';
3
3
  export { defaultEventDomain } from './consts';
4
4
  export { initializeFaro } from './initialize';
5
- export { buildStackFrame, ConsoleInstrumentation, ErrorsInstrumentation, getDataFromSafariExtensions, getStackFramesFromError, parseStacktrace, WebVitalsInstrumentation, } from './instrumentations';
5
+ export { buildStackFrame, ConsoleInstrumentation, ErrorsInstrumentation, getDataFromSafariExtensions, getStackFramesFromError, parseStacktrace, ViewInstrumentation, WebVitalsInstrumentation, } from './instrumentations';
6
6
  export type { ConsoleInstrumentationOptions, ErrorEvent, ExtendedPromiseRejectionEvent } from './instrumentations';
7
- export { browserMeta, defaultMetas, pageMeta } from './metas';
8
- export { createSession } from './session';
7
+ export { browserMeta, createSession, defaultMetas, defaultViewMeta, pageMeta } from './metas';
9
8
  export { ConsoleTransport, FetchTransport } from './transports';
10
9
  export type { ClockFn, ConsoleTransportOptions, FetchTransportOptions, FetchTransportRequestOptions, } from './transports';
11
- export { faro, allLogLevels, BaseExtension, BaseInstrumentation, BaseTransport, Conventions, createInternalLogger, createPromiseBuffer, deepEqual, defaultExceptionType, defaultGlobalObjectKey, defaultInternalLoggerLevel, defaultLogLevel, getCurrentTimestamp, getInternalFaroFromGlobalObject, getTransportBody, globalObject, internalGlobalObjectKey, isArray, isBoolean, isDomError, isDomException, isElement, isElementDefined, isError, isErrorDefined, isErrorEvent, isEvent, isEventDefined, isFunction, isInstanceOf, isInt, isInternalFaroOnGlobalObject, isMap, isMapDefined, isNull, isNumber, isObject, isPrimitive, isRegExp, isString, isSymbol, isSyntheticEvent, isThenable, isToString, isTypeof, isUndefined, InternalLoggerLevel, LogLevel, noop, setInternalFaroOnGlobalObject, TransportItemType, transportItemTypeToBodyKey, VERSION, } from '@grafana/faro-core';
12
- export type { Faro, API, APIEvent, BaseObject, BaseObjectKey, BaseObjectPrimitiveValue, BaseObjectValue, BeforeSendHook, BufferItem, Config, EventAttributes, EventEvent, EventsAPI, ExceptionEvent, ExceptionStackFrame, ExceptionsAPI, ExtendedError, GlobalObject, Instrumentation, Instrumentations, InternalLogger, LogContext, LogEvent, LogsAPI, MeasurementEvent, MeasurementsAPI, Meta, MetaAPI, MetaApp, MetaAttributes, MetaBrowser, MetaGetter, MetaItem, MetaPage, Metas, MetaSDK, MetaSDKIntegration, MetaSession, MetaUser, OTELApi, Patterns, PromiseBuffer, PromiseBufferOptions, PromiseProducer, PushErrorOptions, PushLogOptions, PushMeasurementOptions, Stacktrace, StacktraceParser, TraceContext, TraceEvent, TracesAPI, Transport, TransportBody, TransportItem, TransportItemPayload, Transports, UnpatchedConsole, } from '@grafana/faro-core';
10
+ export { faro, allLogLevels, BaseExtension, BaseInstrumentation, BaseTransport, Conventions, createInternalLogger, createPromiseBuffer, deepEqual, defaultExceptionType, defaultGlobalObjectKey, defaultInternalLoggerLevel, defaultLogLevel, genShortID, getCurrentTimestamp, getInternalFaroFromGlobalObject, getTransportBody, globalObject, internalGlobalObjectKey, isArray, isBoolean, isDomError, isDomException, isElement, isElementDefined, isError, isErrorDefined, isErrorEvent, isEvent, isEventDefined, isFunction, isInstanceOf, isInt, isInternalFaroOnGlobalObject, isMap, isMapDefined, isNull, isNumber, isObject, isPrimitive, isRegExp, isString, isSymbol, isSyntheticEvent, isThenable, isToString, isTypeof, isUndefined, InternalLoggerLevel, LogLevel, noop, setInternalFaroOnGlobalObject, TransportItemType, transportItemTypeToBodyKey, VERSION, } from '@grafana/faro-core';
11
+ export type { Faro, API, APIEvent, BaseObject, BaseObjectKey, BaseObjectPrimitiveValue, BaseObjectValue, BeforeSendHook, BufferItem, Config, EventAttributes, EventEvent, EventsAPI, ExceptionEvent, ExceptionStackFrame, ExceptionsAPI, ExtendedError, Extension, GlobalObject, Instrumentation, Instrumentations, InternalLogger, LogContext, LogEvent, LogsAPI, MeasurementEvent, MeasurementsAPI, Meta, MetaAPI, MetaApp, MetaAttributes, MetaBrowser, MetaGetter, MetaItem, MetaPage, Metas, MetaSDK, MetaSDKIntegration, MetaSession, MetaUser, MetaView, OTELApi, Patterns, PromiseBuffer, PromiseBufferOptions, PromiseProducer, PushErrorOptions, PushLogOptions, PushMeasurementOptions, Stacktrace, StacktraceParser, TraceContext, TraceEvent, TracesAPI, Transport, TransportBody, TransportItem, TransportItemPayload, Transports, UnpatchedConsole, } from '@grafana/faro-core';
@@ -3,7 +3,7 @@ import type { ConsoleInstrumentationOptions } from './types';
3
3
  export declare class ConsoleInstrumentation extends BaseInstrumentation {
4
4
  private options;
5
5
  readonly name = "@grafana/faro-web-sdk:instrumentation-console";
6
- readonly version = "1.0.0-beta4";
6
+ readonly version = "1.0.0";
7
7
  static defaultDisabledLevels: LogLevel[];
8
8
  constructor(options?: ConsoleInstrumentationOptions);
9
9
  initialize(): void;
@@ -1,6 +1,6 @@
1
1
  import { BaseInstrumentation } from '@grafana/faro-core';
2
2
  export declare class ErrorsInstrumentation extends BaseInstrumentation {
3
3
  readonly name = "@grafana/faro-web-sdk:instrumentation-errors";
4
- readonly version = "1.0.0-beta4";
4
+ readonly version = "1.0.0";
5
5
  initialize(): void;
6
6
  }
@@ -1,2 +1,2 @@
1
- import { Faro } from '@grafana/faro-core';
2
- export declare function registerOnerror(faro: Faro): void;
1
+ import type { API } from '@grafana/faro-core';
2
+ export declare function registerOnerror(api: API): void;
@@ -1,2 +1,2 @@
1
- import { Faro } from '@grafana/faro-core';
2
- export declare function registerOnunhandledrejection(faro: Faro): void;
1
+ import type { API } from '@grafana/faro-core';
2
+ export declare function registerOnunhandledrejection(api: API): void;
@@ -3,4 +3,5 @@ export { ConsoleInstrumentation } from './console';
3
3
  export type { ConsoleInstrumentationOptions } from './console';
4
4
  export { buildStackFrame, ErrorsInstrumentation, getDataFromSafariExtensions, getStackFramesFromError, parseStacktrace, } from './errors';
5
5
  export type { ErrorEvent, ExtendedPromiseRejectionEvent } from './errors';
6
+ export { ViewInstrumentation } from './view';
6
7
  export { WebVitalsInstrumentation } from './webVitals';
@@ -0,0 +1 @@
1
+ export { ViewInstrumentation } from './instrumentation';
@@ -0,0 +1,8 @@
1
+ import { BaseInstrumentation } from '@grafana/faro-core';
2
+ export declare class ViewInstrumentation extends BaseInstrumentation {
3
+ readonly name = "@grafana/faro-web-sdk:instrumentation-view";
4
+ readonly version: string;
5
+ private notifiedView;
6
+ private sendViewChangedEvent;
7
+ initialize(): void;
8
+ }
@@ -1,7 +1,7 @@
1
1
  import { BaseInstrumentation } from '@grafana/faro-core';
2
2
  export declare class WebVitalsInstrumentation extends BaseInstrumentation {
3
3
  readonly name = "@grafana/faro-web-sdk:instrumentation-web-vitals";
4
- readonly version = "1.0.0-beta4";
4
+ readonly version = "1.0.0";
5
5
  static mapping: {
6
6
  cls: (onReport: import("web-vitals").CLSReportCallback, opts?: import("web-vitals").ReportOpts | undefined) => void;
7
7
  fcp: (onReport: import("web-vitals").FCPReportCallback, opts?: import("web-vitals").ReportOpts | undefined) => void;
@@ -1,3 +1,5 @@
1
1
  export { browserMeta } from './browser';
2
2
  export { defaultMetas } from './const';
3
3
  export { pageMeta } from './page';
4
+ export { createSession } from './session';
5
+ export { defaultViewMeta } from './view';
@@ -0,0 +1 @@
1
+ export { createSession } from './createSession';
@@ -0,0 +1,3 @@
1
+ export declare const defaultViewMeta: {
2
+ name: string;
3
+ };
@@ -0,0 +1 @@
1
+ export { defaultViewMeta } from './const';
@@ -4,7 +4,7 @@ import type { ConsoleTransportOptions } from './types';
4
4
  export declare class ConsoleTransport extends BaseTransport {
5
5
  private options;
6
6
  readonly name = "@grafana/faro-web-sdk:transport-console";
7
- readonly version = "1.0.0-beta4";
7
+ readonly version = "1.0.0";
8
8
  constructor(options?: ConsoleTransportOptions);
9
9
  send(item: TransportItem): void;
10
10
  }
@@ -4,10 +4,10 @@ import type { FetchTransportOptions } from './types';
4
4
  export declare class FetchTransport extends BaseTransport {
5
5
  private options;
6
6
  readonly name = "@grafana/faro-web-sdk:transport-fetch";
7
- readonly version = "1.0.0-beta4";
7
+ readonly version = "1.0.0";
8
8
  promiseBuffer: PromiseBuffer<Response | void>;
9
- private rateLimitBackoffMs;
10
- private getNow;
9
+ private readonly rateLimitBackoffMs;
10
+ private readonly getNow;
11
11
  private disabledUntil;
12
12
  constructor(options: FetchTransportOptions);
13
13
  send(item: TransportItem): Promise<void>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@grafana/faro-web-sdk",
3
- "version": "1.0.0-beta4",
3
+ "version": "1.0.0",
4
4
  "description": "Faro instrumentations, metas, transports for web.",
5
5
  "keywords": [
6
6
  "observability",
@@ -51,9 +51,9 @@
51
51
  "quality:circular-deps": "madge --circular ."
52
52
  },
53
53
  "dependencies": {
54
- "@grafana/faro-core": "^1.0.0-beta4",
54
+ "@grafana/faro-core": "^1.0.0",
55
55
  "ua-parser-js": "^1.0.32",
56
- "web-vitals": "^3.1.0"
56
+ "web-vitals": "^3.1.1"
57
57
  },
58
58
  "devDependencies": {
59
59
  "@types/ua-parser-js": "^0.7.36"
@@ -61,5 +61,5 @@
61
61
  "publishConfig": {
62
62
  "access": "public"
63
63
  },
64
- "gitHead": "88ab57b93286d22830db932a7dc74bcaf2dd4c3d"
64
+ "gitHead": "afd9cbdff2b0665006e081bb72360301916e5e56"
65
65
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":";;;AACA,gDAAgD;AAEhD,SAAgB,aAAa,CAAC,UAAsC;IAClE,OAAO;QACL,EAAE,EAAE,IAAA,sBAAU,GAAE;QAChB,UAAU,YAAA;KACX,CAAC;AACJ,CAAC;AALD,sCAKC","sourcesContent":["import type { MetaSession } from '@grafana/faro-core';\nimport { genShortID } from '@grafana/faro-core';\n\nexport function createSession(attributes?: MetaSession['attributes']): MetaSession {\n return {\n id: genShortID(),\n attributes,\n };\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,MAAM,UAAU,aAAa,CAAC,UAAsC;IAClE,OAAO;QACL,EAAE,EAAE,UAAU,EAAE;QAChB,UAAU;KACX,CAAC;AACJ,CAAC","sourcesContent":["import type { MetaSession } from '@grafana/faro-core';\nimport { genShortID } from '@grafana/faro-core';\n\nexport function createSession(attributes?: MetaSession['attributes']): MetaSession {\n return {\n id: genShortID(),\n attributes,\n };\n}\n"]}