@grafana/faro-core 1.0.5 → 1.1.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 (135) hide show
  1. package/README.md +43 -0
  2. package/dist/bundle/faro-core.iife.js +1 -1
  3. package/dist/cjs/api/exceptions/initialize.js +3 -1
  4. package/dist/cjs/api/exceptions/initialize.js.map +1 -1
  5. package/dist/cjs/api/exceptions/types.js.map +1 -1
  6. package/dist/cjs/api/logs/types.js.map +1 -1
  7. package/dist/cjs/config/const.js +6 -1
  8. package/dist/cjs/config/const.js.map +1 -1
  9. package/dist/cjs/config/index.js +2 -1
  10. package/dist/cjs/config/index.js.map +1 -1
  11. package/dist/cjs/config/types.js.map +1 -1
  12. package/dist/cjs/globalObject/globalObject.js +7 -1
  13. package/dist/cjs/globalObject/globalObject.js.map +1 -1
  14. package/dist/cjs/index.js +3 -2
  15. package/dist/cjs/index.js.map +1 -1
  16. package/dist/cjs/testUtils/mockConfig.js +2 -0
  17. package/dist/cjs/testUtils/mockConfig.js.map +1 -1
  18. package/dist/cjs/testUtils/mockTransport.js +4 -3
  19. package/dist/cjs/testUtils/mockTransport.js.map +1 -1
  20. package/dist/cjs/transports/base.js +3 -0
  21. package/dist/cjs/transports/base.js.map +1 -1
  22. package/dist/cjs/transports/batchExecutor.js +83 -0
  23. package/dist/cjs/transports/batchExecutor.js.map +1 -0
  24. package/dist/cjs/transports/const.js.map +1 -1
  25. package/dist/cjs/transports/index.js.map +1 -1
  26. package/dist/cjs/transports/initialize.js +69 -14
  27. package/dist/cjs/transports/initialize.js.map +1 -1
  28. package/dist/cjs/transports/types.js.map +1 -1
  29. package/dist/cjs/transports/utils.js +65 -6
  30. package/dist/cjs/transports/utils.js.map +1 -1
  31. package/dist/cjs/version.js +1 -1
  32. package/dist/cjs/version.js.map +1 -1
  33. package/dist/esm/api/exceptions/initialize.js +3 -1
  34. package/dist/esm/api/exceptions/initialize.js.map +1 -1
  35. package/dist/esm/api/exceptions/types.js.map +1 -1
  36. package/dist/esm/api/logs/types.js.map +1 -1
  37. package/dist/esm/config/const.js +5 -0
  38. package/dist/esm/config/const.js.map +1 -1
  39. package/dist/esm/config/index.js +1 -1
  40. package/dist/esm/config/index.js.map +1 -1
  41. package/dist/esm/config/types.js.map +1 -1
  42. package/dist/esm/globalObject/globalObject.js +7 -1
  43. package/dist/esm/globalObject/globalObject.js.map +1 -1
  44. package/dist/esm/index.js +1 -1
  45. package/dist/esm/index.js.map +1 -1
  46. package/dist/esm/testUtils/mockConfig.js +2 -0
  47. package/dist/esm/testUtils/mockConfig.js.map +1 -1
  48. package/dist/esm/testUtils/mockTransport.js +4 -3
  49. package/dist/esm/testUtils/mockTransport.js.map +1 -1
  50. package/dist/esm/transports/base.js +3 -0
  51. package/dist/esm/transports/base.js.map +1 -1
  52. package/dist/esm/transports/batchExecutor.js +67 -0
  53. package/dist/esm/transports/batchExecutor.js.map +1 -0
  54. package/dist/esm/transports/const.js.map +1 -1
  55. package/dist/esm/transports/index.js.map +1 -1
  56. package/dist/esm/transports/initialize.js +66 -12
  57. package/dist/esm/transports/initialize.js.map +1 -1
  58. package/dist/esm/transports/types.js.map +1 -1
  59. package/dist/esm/transports/utils.js +41 -3
  60. package/dist/esm/transports/utils.js.map +1 -1
  61. package/dist/esm/version.js +1 -1
  62. package/dist/esm/version.js.map +1 -1
  63. package/dist/spec/core/src/api/exceptions/initialize.js +3 -1
  64. package/dist/spec/core/src/api/exceptions/initialize.js.map +1 -1
  65. package/dist/spec/core/src/api/exceptions/initialize.test.js +13 -0
  66. package/dist/spec/core/src/api/exceptions/initialize.test.js.map +1 -1
  67. package/dist/spec/core/src/api/exceptions/types.js.map +1 -1
  68. package/dist/spec/core/src/api/logs/initialize.test.js +1 -1
  69. package/dist/spec/core/src/api/logs/initialize.test.js.map +1 -1
  70. package/dist/spec/core/src/api/logs/types.js.map +1 -1
  71. package/dist/spec/core/src/config/const.js +6 -1
  72. package/dist/spec/core/src/config/const.js.map +1 -1
  73. package/dist/spec/core/src/config/index.js +2 -1
  74. package/dist/spec/core/src/config/index.js.map +1 -1
  75. package/dist/spec/core/src/config/types.js.map +1 -1
  76. package/dist/spec/core/src/globalObject/globalObject.js +7 -1
  77. package/dist/spec/core/src/globalObject/globalObject.js.map +1 -1
  78. package/dist/spec/core/src/index.js +3 -2
  79. package/dist/spec/core/src/index.js.map +1 -1
  80. package/dist/spec/core/src/testUtils/mockConfig.js +2 -0
  81. package/dist/spec/core/src/testUtils/mockConfig.js.map +1 -1
  82. package/dist/spec/core/src/testUtils/mockTransport.js +4 -3
  83. package/dist/spec/core/src/testUtils/mockTransport.js.map +1 -1
  84. package/dist/spec/core/src/transports/base.js +3 -0
  85. package/dist/spec/core/src/transports/base.js.map +1 -1
  86. package/dist/spec/core/src/transports/batchExecutor.js +83 -0
  87. package/dist/spec/core/src/transports/batchExecutor.js.map +1 -0
  88. package/dist/spec/core/src/transports/batchExecutor.test.js +179 -0
  89. package/dist/spec/core/src/transports/batchExecutor.test.js.map +1 -0
  90. package/dist/spec/core/src/transports/const.js.map +1 -1
  91. package/dist/spec/core/src/transports/index.js.map +1 -1
  92. package/dist/spec/core/src/transports/initialize.js +69 -14
  93. package/dist/spec/core/src/transports/initialize.js.map +1 -1
  94. package/dist/spec/core/src/transports/transports.test.js +68 -3
  95. package/dist/spec/core/src/transports/transports.test.js.map +1 -1
  96. package/dist/spec/core/src/transports/types.js.map +1 -1
  97. package/dist/spec/core/src/transports/utils.js +65 -6
  98. package/dist/spec/core/src/transports/utils.js.map +1 -1
  99. package/dist/spec/core/src/transports/utils.test.js +216 -0
  100. package/dist/spec/core/src/transports/utils.test.js.map +1 -0
  101. package/dist/spec/core/src/version.js +1 -1
  102. package/dist/spec/core/src/version.js.map +1 -1
  103. package/dist/types/api/exceptions/types.d.ts +3 -0
  104. package/dist/types/api/logs/types.d.ts +2 -2
  105. package/dist/types/config/const.d.ts +5 -0
  106. package/dist/types/config/index.d.ts +1 -1
  107. package/dist/types/config/types.d.ts +3 -2
  108. package/dist/types/core/src/api/exceptions/types.d.ts +3 -0
  109. package/dist/types/core/src/api/logs/types.d.ts +2 -2
  110. package/dist/types/core/src/config/const.d.ts +5 -0
  111. package/dist/types/core/src/config/index.d.ts +1 -1
  112. package/dist/types/core/src/config/types.d.ts +3 -2
  113. package/dist/types/core/src/globalObject/globalObject.d.ts +1 -1
  114. package/dist/types/core/src/index.d.ts +2 -2
  115. package/dist/types/core/src/testUtils/mockTransport.d.ts +3 -2
  116. package/dist/types/core/src/transports/base.d.ts +2 -1
  117. package/dist/types/core/src/transports/batchExecutor.d.ts +16 -0
  118. package/dist/types/core/src/transports/batchExecutor.test.d.ts +1 -0
  119. package/dist/types/core/src/transports/const.d.ts +2 -1
  120. package/dist/types/core/src/transports/index.d.ts +1 -1
  121. package/dist/types/core/src/transports/types.d.ts +9 -0
  122. package/dist/types/core/src/transports/utils.d.ts +4 -1
  123. package/dist/types/core/src/transports/utils.test.d.ts +1 -0
  124. package/dist/types/core/src/version.d.ts +1 -1
  125. package/dist/types/globalObject/globalObject.d.ts +1 -1
  126. package/dist/types/index.d.ts +2 -2
  127. package/dist/types/testUtils/mockTransport.d.ts +3 -2
  128. package/dist/types/transports/base.d.ts +2 -1
  129. package/dist/types/transports/batchExecutor.d.ts +16 -0
  130. package/dist/types/transports/const.d.ts +2 -1
  131. package/dist/types/transports/index.d.ts +1 -1
  132. package/dist/types/transports/types.d.ts +9 -0
  133. package/dist/types/transports/utils.d.ts +4 -1
  134. package/dist/types/version.d.ts +1 -1
  135. package/package.json +7 -3
@@ -2,5 +2,5 @@ export { initializeTransports } from './initialize';
2
2
  export { BaseTransport } from './base';
3
3
  export { TransportItemType, transportItemTypeToBodyKey } from './const';
4
4
  export { registerInitialTransports } from './registerInitial';
5
- export type { BeforeSendHook, Transport, TransportBody, TransportItem, TransportItemPayload, Transports, } from './types';
5
+ export type { BatchExecutorOptions, BeforeSendHook, SendFn, Transport, TransportBody, TransportItem, TransportItemPayload, Transports, } from './types';
6
6
  export { getTransportBody } from './utils';
@@ -4,6 +4,7 @@ import type { Extension } from '../extensions';
4
4
  import type { Meta } from '../metas';
5
5
  import type { TransportItemType } from './const';
6
6
  export type TransportItemPayload<P = APIEvent> = P;
7
+ export type SendFn<P = APIEvent> = (items: Array<TransportItem<P>>) => void;
7
8
  export type BeforeSendHook<P = APIEvent> = (item: TransportItem<P>) => TransportItem<P> | null;
8
9
  export interface TransportItem<P = APIEvent> {
9
10
  type: TransportItemType;
@@ -13,7 +14,9 @@ export interface TransportItem<P = APIEvent> {
13
14
  export interface Transport extends Extension {
14
15
  send(items: TransportItem | TransportItem[]): void | Promise<void>;
15
16
  getIgnoreUrls(): Patterns;
17
+ isBatched(): boolean;
16
18
  }
19
+ export type BodyKey = 'exceptions' | 'logs' | 'measurements' | 'traces' | 'events';
17
20
  export interface TransportBody {
18
21
  meta: Meta;
19
22
  exceptions?: ExceptionEvent[];
@@ -35,3 +38,9 @@ export interface Transports {
35
38
  pause: () => void;
36
39
  unpause: () => void;
37
40
  }
41
+ export interface BatchExecutorOptions {
42
+ readonly enabled?: boolean;
43
+ readonly sendTimeout?: number;
44
+ readonly itemLimit?: number;
45
+ readonly paused?: boolean;
46
+ }
@@ -1,2 +1,5 @@
1
+ import type { IResourceSpans } from '@opentelemetry/otlp-transformer';
2
+ import type { TraceEvent } from '..';
1
3
  import type { TransportBody, TransportItem } from './types';
2
- export declare function getTransportBody(item: TransportItem): TransportBody;
4
+ export declare function mergeResourceSpans(traces?: TraceEvent, resourceSpans?: IResourceSpans[]): TraceEvent | undefined;
5
+ export declare function getTransportBody(item: TransportItem[]): TransportBody;
@@ -0,0 +1 @@
1
+ export {};
@@ -1 +1 @@
1
- export declare const VERSION = "1.0.5";
1
+ export declare const VERSION = "1.1.0";
@@ -1,6 +1,6 @@
1
1
  /// <reference types="node" />
2
2
  import type { Faro, internalGlobalObjectKey } from '../sdk';
3
- export type GlobalObject<T = typeof window | typeof global> = T & {
3
+ export type GlobalObject<T = typeof globalThis | typeof global | typeof self> = T & {
4
4
  [label: string]: Faro;
5
5
  [internalGlobalObjectKey]: Faro;
6
6
  };
@@ -5,7 +5,7 @@ export type { Extension } from './extensions';
5
5
  export { globalObject } from './globalObject';
6
6
  export type { GlobalObject } from './globalObject';
7
7
  export { initializeFaro } from './initialize';
8
- export { defaultGlobalObjectKey } from './config';
8
+ export { defaultBatchingConfig, defaultGlobalObjectKey } from './config';
9
9
  export type { Config, Patterns } from './config';
10
10
  export { BaseInstrumentation } from './instrumentations';
11
11
  export type { Instrumentation, Instrumentations } from './instrumentations';
@@ -16,7 +16,7 @@ export { faro, getInternalFaroFromGlobalObject, internalGlobalObjectKey, isInter
16
16
  export type { Faro } from './sdk';
17
17
  export { Conventions } from './semantic';
18
18
  export { BaseTransport, getTransportBody, TransportItemType, transportItemTypeToBodyKey } from './transports';
19
- export type { BeforeSendHook, Transport, TransportBody, TransportItem, TransportItemPayload, Transports, } from './transports';
19
+ export type { BeforeSendHook, SendFn, Transport, TransportBody, TransportItem, TransportItemPayload, Transports, } from './transports';
20
20
  export { defaultUnpatchedConsole } from './unpatchedConsole';
21
21
  export type { UnpatchedConsole } from './unpatchedConsole';
22
22
  export { allLogLevels, createPromiseBuffer, deepEqual, defaultLogLevel, genShortID, getCurrentTimestamp, isArray, isBoolean, isDomError, isDomException, isElement, isElementDefined, isError, isErrorDefined, isErrorEvent, isEvent, isEventDefined, isFunction, isInstanceOf, isInt, isMap, isMapDefined, isNull, isNumber, isObject, isPrimitive, isRegExp, isString, isSymbol, isSyntheticEvent, isThenable, isToString, isTypeof, isUndefined, LogLevel, noop, } from './utils';
@@ -4,9 +4,10 @@ import type { Transport, TransportItem } from '../transports';
4
4
  export declare class MockTransport extends BaseTransport implements Transport {
5
5
  private ignoreURLs;
6
6
  readonly name = "@grafana/transport-mock";
7
- readonly version = "1.0.5";
7
+ readonly version = "1.1.0";
8
8
  items: TransportItem[];
9
9
  constructor(ignoreURLs?: Patterns);
10
- send(item: TransportItem | TransportItem[]): void | Promise<void>;
10
+ send(items: TransportItem[]): void | Promise<void>;
11
+ isBatched(): boolean;
11
12
  getIgnoreUrls(): Patterns;
12
13
  }
@@ -1,6 +1,7 @@
1
1
  import { BaseExtension } from '../extensions';
2
2
  import type { Transport, TransportItem } from './types';
3
3
  export declare abstract class BaseTransport extends BaseExtension implements Transport {
4
- abstract send(item: TransportItem | TransportItem[]): void | Promise<void>;
4
+ abstract send(items: TransportItem | TransportItem[]): void | Promise<void>;
5
+ isBatched(): boolean;
5
6
  getIgnoreUrls(): Array<string | RegExp>;
6
7
  }
@@ -0,0 +1,16 @@
1
+ import type { TransportItem } from '../';
2
+ import type { BatchExecutorOptions, SendFn } from './types';
3
+ export declare class BatchExecutor {
4
+ private readonly itemLimit;
5
+ private readonly sendTimeout;
6
+ private signalBuffer;
7
+ private sendFn;
8
+ private paused;
9
+ private flushInterval;
10
+ constructor(sendFn: SendFn, options?: BatchExecutorOptions);
11
+ addItem(item: TransportItem): void;
12
+ start(): void;
13
+ pause(): void;
14
+ groupItems(items: TransportItem[]): TransportItem[][];
15
+ private flush;
16
+ }
@@ -1,3 +1,4 @@
1
+ import type { BodyKey } from './types';
1
2
  export declare enum TransportItemType {
2
3
  EXCEPTION = "exception",
3
4
  LOG = "log",
@@ -5,4 +6,4 @@ export declare enum TransportItemType {
5
6
  TRACE = "trace",
6
7
  EVENT = "event"
7
8
  }
8
- export declare const transportItemTypeToBodyKey: Record<TransportItemType, string>;
9
+ export declare const transportItemTypeToBodyKey: Record<TransportItemType, BodyKey>;
@@ -2,5 +2,5 @@ export { initializeTransports } from './initialize';
2
2
  export { BaseTransport } from './base';
3
3
  export { TransportItemType, transportItemTypeToBodyKey } from './const';
4
4
  export { registerInitialTransports } from './registerInitial';
5
- export type { BeforeSendHook, Transport, TransportBody, TransportItem, TransportItemPayload, Transports, } from './types';
5
+ export type { BatchExecutorOptions, BeforeSendHook, SendFn, Transport, TransportBody, TransportItem, TransportItemPayload, Transports, } from './types';
6
6
  export { getTransportBody } from './utils';
@@ -4,6 +4,7 @@ import type { Extension } from '../extensions';
4
4
  import type { Meta } from '../metas';
5
5
  import type { TransportItemType } from './const';
6
6
  export type TransportItemPayload<P = APIEvent> = P;
7
+ export type SendFn<P = APIEvent> = (items: Array<TransportItem<P>>) => void;
7
8
  export type BeforeSendHook<P = APIEvent> = (item: TransportItem<P>) => TransportItem<P> | null;
8
9
  export interface TransportItem<P = APIEvent> {
9
10
  type: TransportItemType;
@@ -13,7 +14,9 @@ export interface TransportItem<P = APIEvent> {
13
14
  export interface Transport extends Extension {
14
15
  send(items: TransportItem | TransportItem[]): void | Promise<void>;
15
16
  getIgnoreUrls(): Patterns;
17
+ isBatched(): boolean;
16
18
  }
19
+ export type BodyKey = 'exceptions' | 'logs' | 'measurements' | 'traces' | 'events';
17
20
  export interface TransportBody {
18
21
  meta: Meta;
19
22
  exceptions?: ExceptionEvent[];
@@ -35,3 +38,9 @@ export interface Transports {
35
38
  pause: () => void;
36
39
  unpause: () => void;
37
40
  }
41
+ export interface BatchExecutorOptions {
42
+ readonly enabled?: boolean;
43
+ readonly sendTimeout?: number;
44
+ readonly itemLimit?: number;
45
+ readonly paused?: boolean;
46
+ }
@@ -1,2 +1,5 @@
1
+ import type { IResourceSpans } from '@opentelemetry/otlp-transformer';
2
+ import type { TraceEvent } from '..';
1
3
  import type { TransportBody, TransportItem } from './types';
2
- export declare function getTransportBody(item: TransportItem): TransportBody;
4
+ export declare function mergeResourceSpans(traces?: TraceEvent, resourceSpans?: IResourceSpans[]): TraceEvent | undefined;
5
+ export declare function getTransportBody(item: TransportItem[]): TransportBody;
@@ -1 +1 @@
1
- export declare const VERSION = "1.0.5";
1
+ export declare const VERSION = "1.1.0";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@grafana/faro-core",
3
- "version": "1.0.5",
3
+ "version": "1.1.0",
4
4
  "description": "Core package of Faro.",
5
5
  "keywords": [
6
6
  "observability",
@@ -52,10 +52,14 @@
52
52
  "dependencies": {
53
53
  "@opentelemetry/api": "^1.4.1",
54
54
  "@opentelemetry/api-metrics": "^0.33.0",
55
- "@opentelemetry/otlp-transformer": "^0.37.0"
55
+ "@opentelemetry/otlp-transformer": "^0.37.0",
56
+ "murmurhash-js": "^1.0.0"
57
+ },
58
+ "devDependencies": {
59
+ "@types/murmurhash-js": "^1.0.4"
56
60
  },
57
61
  "publishConfig": {
58
62
  "access": "public"
59
63
  },
60
- "gitHead": "bfcaf6fef4e1e50ae20466e4de180d7fd3f35b80"
64
+ "gitHead": "343a23899fb2ba377d0c6e939262c51dfdd64a7a"
61
65
  }