@grafana/faro-web-sdk 1.0.0-beta3 → 1.0.0-beta4

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 (107) hide show
  1. package/README.md +14 -6
  2. package/dist/bundle/faro-web-sdk.iife.js +1 -0
  3. package/dist/{cjs → types}/config/getWebInstrumentations.d.ts +0 -0
  4. package/dist/{cjs → types}/config/index.d.ts +0 -0
  5. package/dist/{cjs → types}/config/makeCoreConfig.d.ts +0 -0
  6. package/dist/{cjs → types}/config/types.d.ts +0 -0
  7. package/dist/{cjs → types}/consts.d.ts +0 -0
  8. package/dist/{cjs → types}/index.d.ts +0 -0
  9. package/dist/{cjs → types}/initialize.d.ts +0 -0
  10. package/dist/{cjs → types}/instrumentations/console/index.d.ts +0 -0
  11. package/dist/{cjs → types}/instrumentations/console/instrumentation.d.ts +1 -1
  12. package/dist/{cjs → types}/instrumentations/console/types.d.ts +0 -0
  13. package/dist/{cjs → types}/instrumentations/errors/const.d.ts +0 -0
  14. package/dist/{cjs → types}/instrumentations/errors/getErrorDetails.d.ts +0 -0
  15. package/dist/{cjs → types}/instrumentations/errors/getValueAndTypeFromMessage.d.ts +0 -0
  16. package/dist/{cjs → types}/instrumentations/errors/index.d.ts +0 -0
  17. package/dist/{esm → types}/instrumentations/errors/instrumentation.d.ts +1 -1
  18. package/dist/{cjs → types}/instrumentations/errors/registerOnerror.d.ts +0 -0
  19. package/dist/{cjs → types}/instrumentations/errors/registerOnunhandledrejection.d.ts +0 -0
  20. package/dist/{cjs → types}/instrumentations/errors/stackFrames/buildStackFrame.d.ts +0 -0
  21. package/dist/{cjs → types}/instrumentations/errors/stackFrames/const.d.ts +0 -0
  22. package/dist/{cjs → types}/instrumentations/errors/stackFrames/getDataFromSafariExtensions.d.ts +0 -0
  23. package/dist/{cjs → types}/instrumentations/errors/stackFrames/getStackFramesFromError.d.ts +0 -0
  24. package/dist/{cjs → types}/instrumentations/errors/stackFrames/index.d.ts +0 -0
  25. package/dist/{cjs → types}/instrumentations/errors/stackFrames/parseStacktrace.d.ts +0 -0
  26. package/dist/{cjs → types}/instrumentations/errors/types.d.ts +0 -0
  27. package/dist/{cjs → types}/instrumentations/index.d.ts +0 -0
  28. package/dist/{cjs → types}/instrumentations/session/index.d.ts +0 -0
  29. package/dist/{cjs → types}/instrumentations/session/instrumentation.d.ts +0 -0
  30. package/dist/{cjs → types}/instrumentations/webVitals/index.d.ts +0 -0
  31. package/dist/{esm → types}/instrumentations/webVitals/instrumentation.d.ts +1 -1
  32. package/dist/{cjs → types}/metas/browser/index.d.ts +0 -0
  33. package/dist/{cjs → types}/metas/browser/meta.d.ts +0 -0
  34. package/dist/{cjs → types}/metas/const.d.ts +0 -0
  35. package/dist/{cjs → types}/metas/index.d.ts +0 -0
  36. package/dist/{cjs → types}/metas/page/index.d.ts +0 -0
  37. package/dist/{cjs → types}/metas/page/meta.d.ts +0 -0
  38. package/dist/{cjs → types}/session.d.ts +0 -0
  39. package/dist/{cjs → types}/transports/console/index.d.ts +0 -0
  40. package/dist/{esm → types}/transports/console/transport.d.ts +1 -1
  41. package/dist/{cjs → types}/transports/console/types.d.ts +0 -0
  42. package/dist/{cjs → types}/transports/fetch/index.d.ts +0 -0
  43. package/dist/{cjs → types}/transports/fetch/transport.d.ts +1 -1
  44. package/dist/{cjs → types}/transports/fetch/types.d.ts +0 -0
  45. package/dist/{cjs → types}/transports/index.d.ts +0 -0
  46. package/package.json +20 -12
  47. package/dist/cjs/instrumentations/errors/instrumentation.d.ts +0 -6
  48. package/dist/cjs/instrumentations/errors/registerOnerror.test.d.ts +0 -1
  49. package/dist/cjs/instrumentations/errors/registerOnerror.test.js +0 -23
  50. package/dist/cjs/instrumentations/errors/registerOnerror.test.js.map +0 -1
  51. package/dist/cjs/instrumentations/session/instrumentation.test.d.ts +0 -1
  52. package/dist/cjs/instrumentations/session/instrumentation.test.js +0 -47
  53. package/dist/cjs/instrumentations/session/instrumentation.test.js.map +0 -1
  54. package/dist/cjs/instrumentations/webVitals/instrumentation.d.ts +0 -14
  55. package/dist/cjs/transports/console/transport.d.ts +0 -10
  56. package/dist/cjs/transports/fetch/transport.test.d.ts +0 -1
  57. package/dist/cjs/transports/fetch/transport.test.js +0 -193
  58. package/dist/cjs/transports/fetch/transport.test.js.map +0 -1
  59. package/dist/esm/config/getWebInstrumentations.d.ts +0 -3
  60. package/dist/esm/config/index.d.ts +0 -3
  61. package/dist/esm/config/makeCoreConfig.d.ts +0 -3
  62. package/dist/esm/config/types.d.ts +0 -9
  63. package/dist/esm/consts.d.ts +0 -1
  64. package/dist/esm/index.d.ts +0 -12
  65. package/dist/esm/initialize.d.ts +0 -3
  66. package/dist/esm/instrumentations/console/index.d.ts +0 -2
  67. package/dist/esm/instrumentations/console/instrumentation.d.ts +0 -10
  68. package/dist/esm/instrumentations/console/types.d.ts +0 -4
  69. package/dist/esm/instrumentations/errors/const.d.ts +0 -7
  70. package/dist/esm/instrumentations/errors/getErrorDetails.d.ts +0 -3
  71. package/dist/esm/instrumentations/errors/getValueAndTypeFromMessage.d.ts +0 -1
  72. package/dist/esm/instrumentations/errors/index.d.ts +0 -3
  73. package/dist/esm/instrumentations/errors/registerOnerror.d.ts +0 -2
  74. package/dist/esm/instrumentations/errors/registerOnerror.test.d.ts +0 -1
  75. package/dist/esm/instrumentations/errors/registerOnerror.test.js +0 -21
  76. package/dist/esm/instrumentations/errors/registerOnerror.test.js.map +0 -1
  77. package/dist/esm/instrumentations/errors/registerOnunhandledrejection.d.ts +0 -2
  78. package/dist/esm/instrumentations/errors/stackFrames/buildStackFrame.d.ts +0 -2
  79. package/dist/esm/instrumentations/errors/stackFrames/const.d.ts +0 -15
  80. package/dist/esm/instrumentations/errors/stackFrames/getDataFromSafariExtensions.d.ts +0 -1
  81. package/dist/esm/instrumentations/errors/stackFrames/getStackFramesFromError.d.ts +0 -2
  82. package/dist/esm/instrumentations/errors/stackFrames/index.d.ts +0 -4
  83. package/dist/esm/instrumentations/errors/stackFrames/parseStacktrace.d.ts +0 -2
  84. package/dist/esm/instrumentations/errors/types.d.ts +0 -8
  85. package/dist/esm/instrumentations/index.d.ts +0 -6
  86. package/dist/esm/instrumentations/session/index.d.ts +0 -1
  87. package/dist/esm/instrumentations/session/instrumentation.d.ts +0 -8
  88. package/dist/esm/instrumentations/session/instrumentation.test.d.ts +0 -1
  89. package/dist/esm/instrumentations/session/instrumentation.test.js +0 -45
  90. package/dist/esm/instrumentations/session/instrumentation.test.js.map +0 -1
  91. package/dist/esm/instrumentations/webVitals/index.d.ts +0 -1
  92. package/dist/esm/metas/browser/index.d.ts +0 -1
  93. package/dist/esm/metas/browser/meta.d.ts +0 -2
  94. package/dist/esm/metas/const.d.ts +0 -2
  95. package/dist/esm/metas/index.d.ts +0 -3
  96. package/dist/esm/metas/page/index.d.ts +0 -1
  97. package/dist/esm/metas/page/meta.d.ts +0 -2
  98. package/dist/esm/session.d.ts +0 -2
  99. package/dist/esm/transports/console/index.d.ts +0 -2
  100. package/dist/esm/transports/console/types.d.ts +0 -4
  101. package/dist/esm/transports/fetch/index.d.ts +0 -2
  102. package/dist/esm/transports/fetch/transport.d.ts +0 -16
  103. package/dist/esm/transports/fetch/transport.test.d.ts +0 -1
  104. package/dist/esm/transports/fetch/transport.test.js +0 -119
  105. package/dist/esm/transports/fetch/transport.test.js.map +0 -1
  106. package/dist/esm/transports/fetch/types.d.ts +0 -13
  107. package/dist/esm/transports/index.d.ts +0 -4
@@ -1,119 +0,0 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- import { getTransportBody, LogLevel, TransportItemType } from '@grafana/faro-core';
11
- import { FetchTransport } from './transport';
12
- const fetch = jest.fn(() => Promise.resolve({ status: 202 }));
13
- global.fetch = fetch;
14
- const item = {
15
- type: TransportItemType.LOG,
16
- payload: {
17
- context: {},
18
- level: LogLevel.INFO,
19
- message: 'hi',
20
- timestamp: new Date().toISOString(),
21
- },
22
- meta: {},
23
- };
24
- describe('FetchTransport', () => {
25
- beforeEach(() => {
26
- fetch.mockClear();
27
- });
28
- it('will send event over fetch', () => {
29
- const transport = new FetchTransport({
30
- url: 'http://example.com/collect',
31
- });
32
- transport.send(item);
33
- expect(fetch).toHaveBeenCalledTimes(1);
34
- expect(fetch).toHaveBeenCalledWith('http://example.com/collect', {
35
- body: JSON.stringify(getTransportBody(item)),
36
- headers: {
37
- 'Content-Type': 'application/json',
38
- },
39
- keepalive: true,
40
- method: 'POST',
41
- });
42
- });
43
- it('will not sending events if buffer size is exhausted', () => {
44
- const transport = new FetchTransport({
45
- url: 'http://example.com/collect',
46
- bufferSize: 3,
47
- });
48
- for (let idx = 0; idx < 6; idx++) {
49
- transport.send(item);
50
- }
51
- expect(fetch).toHaveBeenCalledTimes(3);
52
- });
53
- it('will back off on 429 for default interval if no retry-after header present', () => __awaiter(void 0, void 0, void 0, function* () {
54
- let now = Date.now();
55
- const transport = new FetchTransport({
56
- url: 'http://example.com/collect',
57
- defaultRateLimitBackoffMs: 1000,
58
- getNow: () => now,
59
- });
60
- fetch.mockImplementationOnce(() => Promise.resolve({
61
- status: 429,
62
- headers: {
63
- get: () => '',
64
- },
65
- }));
66
- yield transport.send(item);
67
- expect(fetch).toHaveBeenCalledTimes(1);
68
- yield transport.send(item);
69
- expect(fetch).toHaveBeenCalledTimes(1);
70
- now += 1001;
71
- yield transport.send(item);
72
- expect(fetch).toHaveBeenCalledTimes(2);
73
- }));
74
- it('will back off on 429 for default interval if retry-after header present, with delay', () => __awaiter(void 0, void 0, void 0, function* () {
75
- let now = Date.now();
76
- const transport = new FetchTransport({
77
- url: 'http://example.com/collect',
78
- defaultRateLimitBackoffMs: 1000,
79
- getNow: () => now,
80
- });
81
- fetch.mockImplementationOnce(() => Promise.resolve({
82
- status: 429,
83
- headers: {
84
- get: () => '2',
85
- },
86
- }));
87
- yield transport.send(item);
88
- expect(fetch).toHaveBeenCalledTimes(1);
89
- now += 1001;
90
- yield transport.send(item);
91
- expect(fetch).toHaveBeenCalledTimes(1);
92
- now += 1001;
93
- yield transport.send(item);
94
- expect(fetch).toHaveBeenCalledTimes(2);
95
- }));
96
- it('will back off on 429 for default interval if retry-after header present, with delay', () => __awaiter(void 0, void 0, void 0, function* () {
97
- let now = Date.now();
98
- const transport = new FetchTransport({
99
- url: 'http://example.com/collect',
100
- defaultRateLimitBackoffMs: 1000,
101
- getNow: () => now,
102
- });
103
- fetch.mockImplementationOnce(() => Promise.resolve({
104
- status: 429,
105
- headers: {
106
- get: () => new Date(now + 3000).toISOString(),
107
- },
108
- }));
109
- yield transport.send(item);
110
- expect(fetch).toHaveBeenCalledTimes(1);
111
- now += 1001;
112
- yield transport.send(item);
113
- expect(fetch).toHaveBeenCalledTimes(1);
114
- now += 2001;
115
- yield transport.send(item);
116
- expect(fetch).toHaveBeenCalledTimes(2);
117
- }));
118
- });
119
- //# sourceMappingURL=transport.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transport.test.js","sourceRoot":"","sources":["../../../../src/transports/fetch/transport.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { getTransportBody, LogEvent, LogLevel, TransportItem, TransportItemType } from '@grafana/faro-core';\n\nimport { FetchTransport } from './transport';\n\nconst fetch = jest.fn(() => Promise.resolve({ status: 202 }));\n\n(global as any).fetch = fetch;\n\nconst item: TransportItem<LogEvent> = {\n type: TransportItemType.LOG,\n payload: {\n context: {},\n level: LogLevel.INFO,\n message: 'hi',\n timestamp: new Date().toISOString(),\n },\n meta: {},\n};\n\ndescribe('FetchTransport', () => {\n beforeEach(() => {\n fetch.mockClear();\n });\n\n it('will send event over fetch', () => {\n const transport = new FetchTransport({\n url: 'http://example.com/collect',\n });\n\n transport.send(item);\n\n expect(fetch).toHaveBeenCalledTimes(1);\n expect(fetch).toHaveBeenCalledWith('http://example.com/collect', {\n body: JSON.stringify(getTransportBody(item)),\n headers: {\n 'Content-Type': 'application/json',\n },\n keepalive: true,\n method: 'POST',\n });\n });\n\n it('will not sending events if buffer size is exhausted', () => {\n const transport = new FetchTransport({\n url: 'http://example.com/collect',\n bufferSize: 3,\n });\n\n for (let idx = 0; idx < 6; idx++) {\n transport.send(item);\n }\n\n expect(fetch).toHaveBeenCalledTimes(3);\n });\n\n it('will back off on 429 for default interval if no retry-after header present', async () => {\n let now = Date.now();\n\n const transport = new FetchTransport({\n url: 'http://example.com/collect',\n defaultRateLimitBackoffMs: 1000,\n getNow: () => now,\n });\n\n fetch.mockImplementationOnce(() =>\n Promise.resolve({\n status: 429,\n headers: {\n get: () => '',\n },\n })\n );\n\n await transport.send(item);\n expect(fetch).toHaveBeenCalledTimes(1);\n\n await transport.send(item);\n expect(fetch).toHaveBeenCalledTimes(1);\n\n now += 1001;\n await transport.send(item);\n expect(fetch).toHaveBeenCalledTimes(2);\n });\n\n it('will back off on 429 for default interval if retry-after header present, with delay', async () => {\n let now = Date.now();\n\n const transport = new FetchTransport({\n url: 'http://example.com/collect',\n defaultRateLimitBackoffMs: 1000,\n getNow: () => now,\n });\n\n fetch.mockImplementationOnce(() =>\n Promise.resolve({\n status: 429,\n headers: {\n get: () => '2',\n },\n })\n );\n\n await transport.send(item);\n expect(fetch).toHaveBeenCalledTimes(1);\n\n now += 1001;\n await transport.send(item);\n expect(fetch).toHaveBeenCalledTimes(1);\n\n now += 1001;\n await transport.send(item);\n expect(fetch).toHaveBeenCalledTimes(2);\n });\n\n it('will back off on 429 for default interval if retry-after header present, with delay', async () => {\n let now = Date.now();\n\n const transport = new FetchTransport({\n url: 'http://example.com/collect',\n defaultRateLimitBackoffMs: 1000,\n getNow: () => now,\n });\n\n fetch.mockImplementationOnce(() =>\n Promise.resolve({\n status: 429,\n headers: {\n get: () => new Date(now + 3000).toISOString(),\n },\n })\n );\n\n await transport.send(item);\n expect(fetch).toHaveBeenCalledTimes(1);\n\n now += 1001;\n await transport.send(item);\n expect(fetch).toHaveBeenCalledTimes(1);\n\n now += 2001;\n await transport.send(item);\n expect(fetch).toHaveBeenCalledTimes(2);\n });\n});\n\nexport {};\n"]}
@@ -1,13 +0,0 @@
1
- export interface FetchTransportRequestOptions extends Omit<RequestInit, 'body' | 'headers'> {
2
- headers?: Record<string, string>;
3
- }
4
- export interface FetchTransportOptions {
5
- url: string;
6
- apiKey?: string;
7
- bufferSize?: number;
8
- concurrency?: number;
9
- defaultRateLimitBackoffMs?: number;
10
- getNow?: ClockFn;
11
- requestOptions?: FetchTransportRequestOptions;
12
- }
13
- export type ClockFn = () => number;
@@ -1,4 +0,0 @@
1
- export { ConsoleTransport } from './console';
2
- export type { ConsoleTransportOptions } from './console';
3
- export { FetchTransport } from './fetch';
4
- export type { ClockFn, FetchTransportOptions, FetchTransportRequestOptions } from './fetch';