@ama-sdk/core 11.0.0-prerelease.40 → 11.0.0-prerelease.42
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.
- package/cjs/plugins/perf-metric/perf-metric.fetch.js +44 -14
- package/cjs/plugins/perf-metric/perf-metric.probe.spec.js +11 -1
- package/esm2015/plugins/perf-metric/perf-metric.fetch.js +44 -14
- package/esm2015/plugins/perf-metric/perf-metric.probe.spec.js +11 -1
- package/package.json +5 -5
- package/src/plugins/perf-metric/perf-metric.fetch.d.ts +45 -7
- package/src/plugins/perf-metric/perf-metric.fetch.d.ts.map +1 -1
- package/src/plugins/perf-metric/perf-metric.fetch.js +32 -17
- package/src/plugins/perf-metric/perf-metric.fetch.js.map +1 -1
|
@@ -215,19 +215,31 @@ var PerformanceMetricPlugin = /*#__PURE__*/ function() {
|
|
|
215
215
|
* Callback function called when a mark is closed with an error.
|
|
216
216
|
*/ _define_property(this, "onMarkError", void 0);
|
|
217
217
|
/**
|
|
218
|
+
* Callback function called when a mark is opened.
|
|
219
|
+
*/ _define_property(this, "onMarkOpen", void 0);
|
|
220
|
+
/**
|
|
218
221
|
* Opened marks.
|
|
219
222
|
*/ _define_property(this, "openMarks", {});
|
|
220
223
|
/**
|
|
221
|
-
*
|
|
222
|
-
*
|
|
224
|
+
* Performance reporter to use for performance measurements.
|
|
225
|
+
* @default window.performance on browser only, undefined on node
|
|
226
|
+
*/ _define_property(this, "performance", void 0);
|
|
227
|
+
/**
|
|
228
|
+
* Method used to get the current time as default implementation if no Performance API available.
|
|
229
|
+
* Date.now() is used by default.
|
|
223
230
|
*/ _define_property(this, "getTime", Date.now);
|
|
231
|
+
/**
|
|
232
|
+
* Retrieve the performance tag name
|
|
233
|
+
* @param status status of the call
|
|
234
|
+
* @param markId Mark ID
|
|
235
|
+
*/ _define_property(this, "getPerformanceTag", function(status, markId) {
|
|
236
|
+
return "sdk:".concat(status, ":").concat(markId);
|
|
237
|
+
});
|
|
238
|
+
this.getPerformanceTag = (options === null || options === void 0 ? void 0 : options.getPerformanceTag) || this.getPerformanceTag;
|
|
239
|
+
this.performance = (options === null || options === void 0 ? void 0 : options.performance) || (typeof window !== 'undefined' ? window.performance : undefined);
|
|
224
240
|
this.onMarkComplete = options ? options.onMarkComplete : this.onMarkComplete;
|
|
225
241
|
this.onMarkError = options ? options.onMarkError : this.onMarkError;
|
|
226
|
-
|
|
227
|
-
this.getTime = function() {
|
|
228
|
-
return window.performance.now();
|
|
229
|
-
};
|
|
230
|
-
}
|
|
242
|
+
this.onMarkOpen = options ? options.onMarkOpen : this.onMarkOpen;
|
|
231
243
|
}
|
|
232
244
|
_create_class(PerformanceMetricPlugin, [
|
|
233
245
|
{
|
|
@@ -237,13 +249,21 @@ var PerformanceMetricPlugin = /*#__PURE__*/ function() {
|
|
|
237
249
|
* @param url URL of the call associated to the mark to open
|
|
238
250
|
* @param requestOptions Options of the call associated to the mark to open
|
|
239
251
|
*/ function openMark(url, requestOptions) {
|
|
252
|
+
var _this_performance;
|
|
240
253
|
var markId = (0, _uuid.v4)();
|
|
241
|
-
|
|
254
|
+
var perfMark = ((_this_performance = this.performance) === null || _this_performance === void 0 ? void 0 : _this_performance.mark(this.getPerformanceTag('start', markId))) || undefined;
|
|
255
|
+
var _perfMark_startTime;
|
|
256
|
+
var startTime = (_perfMark_startTime = perfMark === null || perfMark === void 0 ? void 0 : perfMark.startTime) !== null && _perfMark_startTime !== void 0 ? _perfMark_startTime : this.getTime();
|
|
257
|
+
var mark = {
|
|
242
258
|
markId: markId,
|
|
243
259
|
url: url,
|
|
244
260
|
requestOptions: requestOptions,
|
|
245
|
-
startTime:
|
|
246
|
-
}
|
|
261
|
+
startTime: startTime
|
|
262
|
+
};
|
|
263
|
+
this.openMarks[markId] = mark;
|
|
264
|
+
if (this.onMarkOpen) {
|
|
265
|
+
void this.onMarkOpen(mark);
|
|
266
|
+
}
|
|
247
267
|
return markId;
|
|
248
268
|
}
|
|
249
269
|
},
|
|
@@ -254,14 +274,19 @@ var PerformanceMetricPlugin = /*#__PURE__*/ function() {
|
|
|
254
274
|
* @param markId Id of the mark to close
|
|
255
275
|
* @param response Response of the call associated to the mark to close
|
|
256
276
|
*/ function closeMark(markId, response) {
|
|
277
|
+
var _this_performance, _this_performance1;
|
|
278
|
+
var perfMark = ((_this_performance = this.performance) === null || _this_performance === void 0 ? void 0 : _this_performance.mark(this.getPerformanceTag('end', markId))) || undefined;
|
|
279
|
+
var _perfMark_startTime;
|
|
280
|
+
var endTime = (_perfMark_startTime = perfMark === null || perfMark === void 0 ? void 0 : perfMark.startTime) !== null && _perfMark_startTime !== void 0 ? _perfMark_startTime : this.getTime();
|
|
281
|
+
(_this_performance1 = this.performance) === null || _this_performance1 === void 0 ? void 0 : _this_performance1.measure(this.getPerformanceTag('measure', markId), this.getPerformanceTag('start', markId), this.getPerformanceTag('end', markId));
|
|
257
282
|
var mark = this.openMarks[markId];
|
|
258
283
|
if (!mark) {
|
|
259
284
|
return;
|
|
260
285
|
}
|
|
261
286
|
if (this.onMarkComplete) {
|
|
262
|
-
this.onMarkComplete(_object_spread_props(_object_spread({}, mark), {
|
|
287
|
+
void this.onMarkComplete(_object_spread_props(_object_spread({}, mark), {
|
|
263
288
|
response: response,
|
|
264
|
-
endTime:
|
|
289
|
+
endTime: endTime
|
|
265
290
|
}));
|
|
266
291
|
}
|
|
267
292
|
delete this.openMarks[markId];
|
|
@@ -274,14 +299,19 @@ var PerformanceMetricPlugin = /*#__PURE__*/ function() {
|
|
|
274
299
|
* @param markId Id of the mark to close
|
|
275
300
|
* @param error Optional error of the call associated to the mark to close
|
|
276
301
|
*/ function closeMarkWithError(markId, error) {
|
|
302
|
+
var _this_performance, _this_performance1;
|
|
303
|
+
var perfMark = ((_this_performance = this.performance) === null || _this_performance === void 0 ? void 0 : _this_performance.mark(this.getPerformanceTag('error', markId))) || undefined;
|
|
304
|
+
var _perfMark_startTime;
|
|
305
|
+
var endTime = (_perfMark_startTime = perfMark === null || perfMark === void 0 ? void 0 : perfMark.startTime) !== null && _perfMark_startTime !== void 0 ? _perfMark_startTime : this.getTime();
|
|
306
|
+
(_this_performance1 = this.performance) === null || _this_performance1 === void 0 ? void 0 : _this_performance1.measure(this.getPerformanceTag('measure', markId), this.getPerformanceTag('start', markId), this.getPerformanceTag('error', markId));
|
|
277
307
|
var mark = this.openMarks[markId];
|
|
278
308
|
if (!mark) {
|
|
279
309
|
return;
|
|
280
310
|
}
|
|
281
311
|
if (this.onMarkError) {
|
|
282
|
-
this.onMarkError(_object_spread_props(_object_spread({}, mark), {
|
|
312
|
+
void this.onMarkError(_object_spread_props(_object_spread({}, mark), {
|
|
283
313
|
error: error,
|
|
284
|
-
endTime:
|
|
314
|
+
endTime: endTime
|
|
285
315
|
}));
|
|
286
316
|
}
|
|
287
317
|
delete this.openMarks[markId];
|
|
@@ -5,8 +5,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
var _perfmetricfetch = require("./perf-metric.fetch");
|
|
6
6
|
var perfPlugin;
|
|
7
7
|
describe('PerformanceMetricPlugin', function() {
|
|
8
|
+
var onMarkOpen;
|
|
8
9
|
beforeEach(function() {
|
|
9
|
-
|
|
10
|
+
onMarkOpen = jest.fn();
|
|
11
|
+
perfPlugin = new _perfmetricfetch.PerformanceMetricPlugin({
|
|
12
|
+
onMarkOpen: onMarkOpen
|
|
13
|
+
});
|
|
10
14
|
});
|
|
11
15
|
it('should generate new mark ids', function() {
|
|
12
16
|
expect(perfPlugin.openMark('', {})).not.toEqual(perfPlugin.openMark('', {}));
|
|
@@ -47,4 +51,10 @@ describe('PerformanceMetricPlugin', function() {
|
|
|
47
51
|
perfPlugin.closeMarkWithError(markId, {});
|
|
48
52
|
return ret;
|
|
49
53
|
});
|
|
54
|
+
it('should include call the open mark callback', function() {
|
|
55
|
+
var markId = perfPlugin.openMark('my-url', {});
|
|
56
|
+
expect(onMarkOpen).toHaveBeenCalledWith(expect.objectContaining({
|
|
57
|
+
markId: markId
|
|
58
|
+
}));
|
|
59
|
+
});
|
|
50
60
|
});
|
|
@@ -207,19 +207,31 @@ import { v4 } from 'uuid';
|
|
|
207
207
|
* Callback function called when a mark is closed with an error.
|
|
208
208
|
*/ _define_property(this, "onMarkError", void 0);
|
|
209
209
|
/**
|
|
210
|
+
* Callback function called when a mark is opened.
|
|
211
|
+
*/ _define_property(this, "onMarkOpen", void 0);
|
|
212
|
+
/**
|
|
210
213
|
* Opened marks.
|
|
211
214
|
*/ _define_property(this, "openMarks", {});
|
|
212
215
|
/**
|
|
213
|
-
*
|
|
214
|
-
*
|
|
216
|
+
* Performance reporter to use for performance measurements.
|
|
217
|
+
* @default window.performance on browser only, undefined on node
|
|
218
|
+
*/ _define_property(this, "performance", void 0);
|
|
219
|
+
/**
|
|
220
|
+
* Method used to get the current time as default implementation if no Performance API available.
|
|
221
|
+
* Date.now() is used by default.
|
|
215
222
|
*/ _define_property(this, "getTime", Date.now);
|
|
223
|
+
/**
|
|
224
|
+
* Retrieve the performance tag name
|
|
225
|
+
* @param status status of the call
|
|
226
|
+
* @param markId Mark ID
|
|
227
|
+
*/ _define_property(this, "getPerformanceTag", function(status, markId) {
|
|
228
|
+
return "sdk:".concat(status, ":").concat(markId);
|
|
229
|
+
});
|
|
230
|
+
this.getPerformanceTag = (options === null || options === void 0 ? void 0 : options.getPerformanceTag) || this.getPerformanceTag;
|
|
231
|
+
this.performance = (options === null || options === void 0 ? void 0 : options.performance) || (typeof window !== 'undefined' ? window.performance : undefined);
|
|
216
232
|
this.onMarkComplete = options ? options.onMarkComplete : this.onMarkComplete;
|
|
217
233
|
this.onMarkError = options ? options.onMarkError : this.onMarkError;
|
|
218
|
-
|
|
219
|
-
this.getTime = function() {
|
|
220
|
-
return window.performance.now();
|
|
221
|
-
};
|
|
222
|
-
}
|
|
234
|
+
this.onMarkOpen = options ? options.onMarkOpen : this.onMarkOpen;
|
|
223
235
|
}
|
|
224
236
|
_create_class(PerformanceMetricPlugin, [
|
|
225
237
|
{
|
|
@@ -229,13 +241,21 @@ import { v4 } from 'uuid';
|
|
|
229
241
|
* @param url URL of the call associated to the mark to open
|
|
230
242
|
* @param requestOptions Options of the call associated to the mark to open
|
|
231
243
|
*/ function openMark(url, requestOptions) {
|
|
244
|
+
var _this_performance;
|
|
232
245
|
var markId = v4();
|
|
233
|
-
|
|
246
|
+
var perfMark = ((_this_performance = this.performance) === null || _this_performance === void 0 ? void 0 : _this_performance.mark(this.getPerformanceTag('start', markId))) || undefined;
|
|
247
|
+
var _perfMark_startTime;
|
|
248
|
+
var startTime = (_perfMark_startTime = perfMark === null || perfMark === void 0 ? void 0 : perfMark.startTime) !== null && _perfMark_startTime !== void 0 ? _perfMark_startTime : this.getTime();
|
|
249
|
+
var mark = {
|
|
234
250
|
markId: markId,
|
|
235
251
|
url: url,
|
|
236
252
|
requestOptions: requestOptions,
|
|
237
|
-
startTime:
|
|
238
|
-
}
|
|
253
|
+
startTime: startTime
|
|
254
|
+
};
|
|
255
|
+
this.openMarks[markId] = mark;
|
|
256
|
+
if (this.onMarkOpen) {
|
|
257
|
+
void this.onMarkOpen(mark);
|
|
258
|
+
}
|
|
239
259
|
return markId;
|
|
240
260
|
}
|
|
241
261
|
},
|
|
@@ -246,14 +266,19 @@ import { v4 } from 'uuid';
|
|
|
246
266
|
* @param markId Id of the mark to close
|
|
247
267
|
* @param response Response of the call associated to the mark to close
|
|
248
268
|
*/ function closeMark(markId, response) {
|
|
269
|
+
var _this_performance, _this_performance1;
|
|
270
|
+
var perfMark = ((_this_performance = this.performance) === null || _this_performance === void 0 ? void 0 : _this_performance.mark(this.getPerformanceTag('end', markId))) || undefined;
|
|
271
|
+
var _perfMark_startTime;
|
|
272
|
+
var endTime = (_perfMark_startTime = perfMark === null || perfMark === void 0 ? void 0 : perfMark.startTime) !== null && _perfMark_startTime !== void 0 ? _perfMark_startTime : this.getTime();
|
|
273
|
+
(_this_performance1 = this.performance) === null || _this_performance1 === void 0 ? void 0 : _this_performance1.measure(this.getPerformanceTag('measure', markId), this.getPerformanceTag('start', markId), this.getPerformanceTag('end', markId));
|
|
249
274
|
var mark = this.openMarks[markId];
|
|
250
275
|
if (!mark) {
|
|
251
276
|
return;
|
|
252
277
|
}
|
|
253
278
|
if (this.onMarkComplete) {
|
|
254
|
-
this.onMarkComplete(_object_spread_props(_object_spread({}, mark), {
|
|
279
|
+
void this.onMarkComplete(_object_spread_props(_object_spread({}, mark), {
|
|
255
280
|
response: response,
|
|
256
|
-
endTime:
|
|
281
|
+
endTime: endTime
|
|
257
282
|
}));
|
|
258
283
|
}
|
|
259
284
|
delete this.openMarks[markId];
|
|
@@ -266,14 +291,19 @@ import { v4 } from 'uuid';
|
|
|
266
291
|
* @param markId Id of the mark to close
|
|
267
292
|
* @param error Optional error of the call associated to the mark to close
|
|
268
293
|
*/ function closeMarkWithError(markId, error) {
|
|
294
|
+
var _this_performance, _this_performance1;
|
|
295
|
+
var perfMark = ((_this_performance = this.performance) === null || _this_performance === void 0 ? void 0 : _this_performance.mark(this.getPerformanceTag('error', markId))) || undefined;
|
|
296
|
+
var _perfMark_startTime;
|
|
297
|
+
var endTime = (_perfMark_startTime = perfMark === null || perfMark === void 0 ? void 0 : perfMark.startTime) !== null && _perfMark_startTime !== void 0 ? _perfMark_startTime : this.getTime();
|
|
298
|
+
(_this_performance1 = this.performance) === null || _this_performance1 === void 0 ? void 0 : _this_performance1.measure(this.getPerformanceTag('measure', markId), this.getPerformanceTag('start', markId), this.getPerformanceTag('error', markId));
|
|
269
299
|
var mark = this.openMarks[markId];
|
|
270
300
|
if (!mark) {
|
|
271
301
|
return;
|
|
272
302
|
}
|
|
273
303
|
if (this.onMarkError) {
|
|
274
|
-
this.onMarkError(_object_spread_props(_object_spread({}, mark), {
|
|
304
|
+
void this.onMarkError(_object_spread_props(_object_spread({}, mark), {
|
|
275
305
|
error: error,
|
|
276
|
-
endTime:
|
|
306
|
+
endTime: endTime
|
|
277
307
|
}));
|
|
278
308
|
}
|
|
279
309
|
delete this.openMarks[markId];
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { PerformanceMetricPlugin } from './perf-metric.fetch';
|
|
2
2
|
var perfPlugin;
|
|
3
3
|
describe('PerformanceMetricPlugin', function() {
|
|
4
|
+
var onMarkOpen;
|
|
4
5
|
beforeEach(function() {
|
|
5
|
-
|
|
6
|
+
onMarkOpen = jest.fn();
|
|
7
|
+
perfPlugin = new PerformanceMetricPlugin({
|
|
8
|
+
onMarkOpen: onMarkOpen
|
|
9
|
+
});
|
|
6
10
|
});
|
|
7
11
|
it('should generate new mark ids', function() {
|
|
8
12
|
expect(perfPlugin.openMark('', {})).not.toEqual(perfPlugin.openMark('', {}));
|
|
@@ -43,4 +47,10 @@ describe('PerformanceMetricPlugin', function() {
|
|
|
43
47
|
perfPlugin.closeMarkWithError(markId, {});
|
|
44
48
|
return ret;
|
|
45
49
|
});
|
|
50
|
+
it('should include call the open mark callback', function() {
|
|
51
|
+
var markId = perfPlugin.openMark('my-url', {});
|
|
52
|
+
expect(onMarkOpen).toHaveBeenCalledWith(expect.objectContaining({
|
|
53
|
+
markId: markId
|
|
54
|
+
}));
|
|
55
|
+
});
|
|
46
56
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ama-sdk/core",
|
|
3
|
-
"version": "11.0.0-prerelease.
|
|
3
|
+
"version": "11.0.0-prerelease.42",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
"@angular-devkit/schematics": "~17.3.0",
|
|
80
80
|
"@angular/cli": "~17.3.0",
|
|
81
81
|
"@angular/common": "~17.3.0",
|
|
82
|
-
"@o3r/schematics": "^11.0.0-prerelease.
|
|
82
|
+
"@o3r/schematics": "^11.0.0-prerelease.42",
|
|
83
83
|
"@schematics/angular": "~17.3.0",
|
|
84
84
|
"isomorphic-fetch": "^3.0.0",
|
|
85
85
|
"rxjs": "^7.8.1",
|
|
@@ -119,9 +119,9 @@
|
|
|
119
119
|
"@angular/core": "~17.3.0",
|
|
120
120
|
"@nx/eslint-plugin": "~18.3.0",
|
|
121
121
|
"@nx/jest": "~18.3.0",
|
|
122
|
-
"@o3r/build-helpers": "^11.0.0-prerelease.
|
|
123
|
-
"@o3r/eslint-plugin": "^11.0.0-prerelease.
|
|
124
|
-
"@o3r/test-helpers": "^11.0.0-prerelease.
|
|
122
|
+
"@o3r/build-helpers": "^11.0.0-prerelease.42",
|
|
123
|
+
"@o3r/eslint-plugin": "^11.0.0-prerelease.42",
|
|
124
|
+
"@o3r/test-helpers": "^11.0.0-prerelease.42",
|
|
125
125
|
"@schematics/angular": "~17.3.0",
|
|
126
126
|
"@stylistic/eslint-plugin-ts": "^1.5.4",
|
|
127
127
|
"@swc/cli": "~0.3.0",
|
|
@@ -32,6 +32,13 @@ export interface Mark {
|
|
|
32
32
|
*/
|
|
33
33
|
endTime?: number;
|
|
34
34
|
}
|
|
35
|
+
/** Performance object supporting NodeJs Performance and Web Performance reporting */
|
|
36
|
+
type CrossPlatformPerformance = {
|
|
37
|
+
/** @see Performance.mark */
|
|
38
|
+
mark: (...x: Parameters<Performance['mark']>) => ReturnType<Performance['mark']> | void;
|
|
39
|
+
/** @see Performance.measure */
|
|
40
|
+
measure: (measureName: string, startOrMeasureOptions?: string, endMark?: string) => ReturnType<Performance['measure']> | void;
|
|
41
|
+
};
|
|
35
42
|
/**
|
|
36
43
|
* Options for this plugin.
|
|
37
44
|
*/
|
|
@@ -39,11 +46,26 @@ export interface PerformanceMetricOptions {
|
|
|
39
46
|
/**
|
|
40
47
|
* Callback function to be called when a mark is closed.
|
|
41
48
|
*/
|
|
42
|
-
onMarkComplete: (mark: Mark) => void
|
|
49
|
+
onMarkComplete: (mark: Mark) => void | Promise<void>;
|
|
43
50
|
/**
|
|
44
51
|
* Callback function to be called when a mark is closed with an error.
|
|
45
52
|
*/
|
|
46
|
-
onMarkError: (mark: Mark) => void
|
|
53
|
+
onMarkError: (mark: Mark) => void | Promise<void>;
|
|
54
|
+
/**
|
|
55
|
+
* Callback function called when a mark is opened.
|
|
56
|
+
*/
|
|
57
|
+
onMarkOpen: (mark: Mark) => void | Promise<void>;
|
|
58
|
+
/**
|
|
59
|
+
* Instance of the performance reporter to use for performance measurements.
|
|
60
|
+
* @default window.performance on browser only, undefined on node
|
|
61
|
+
*/
|
|
62
|
+
performance: CrossPlatformPerformance;
|
|
63
|
+
/**
|
|
64
|
+
* Retrieve the performance tag name
|
|
65
|
+
* @param status status of the call
|
|
66
|
+
* @param markId Mark ID
|
|
67
|
+
*/
|
|
68
|
+
getPerformanceTag: (status: string, markId: string) => string;
|
|
47
69
|
}
|
|
48
70
|
/**
|
|
49
71
|
* Performance metric plugin.
|
|
@@ -52,23 +74,38 @@ export declare class PerformanceMetricPlugin implements FetchPlugin {
|
|
|
52
74
|
/**
|
|
53
75
|
* Callback function called when a mark is closed.
|
|
54
76
|
*/
|
|
55
|
-
onMarkComplete?: (mark: Mark) => void
|
|
77
|
+
onMarkComplete?: (mark: Mark) => void | Promise<void>;
|
|
56
78
|
/**
|
|
57
79
|
* Callback function called when a mark is closed with an error.
|
|
58
80
|
*/
|
|
59
|
-
onMarkError?: (mark: Mark) => void
|
|
81
|
+
onMarkError?: (mark: Mark) => void | Promise<void>;
|
|
82
|
+
/**
|
|
83
|
+
* Callback function called when a mark is opened.
|
|
84
|
+
*/
|
|
85
|
+
onMarkOpen?: (mark: Mark) => void | Promise<void>;
|
|
60
86
|
/**
|
|
61
87
|
* Opened marks.
|
|
62
88
|
*/
|
|
63
|
-
protected openMarks: {
|
|
89
|
+
protected readonly openMarks: {
|
|
64
90
|
[markId: string]: Mark;
|
|
65
91
|
};
|
|
66
92
|
/**
|
|
67
|
-
*
|
|
68
|
-
*
|
|
93
|
+
* Performance reporter to use for performance measurements.
|
|
94
|
+
* @default window.performance on browser only, undefined on node
|
|
95
|
+
*/
|
|
96
|
+
protected readonly performance: CrossPlatformPerformance | undefined;
|
|
97
|
+
/**
|
|
98
|
+
* Method used to get the current time as default implementation if no Performance API available.
|
|
99
|
+
* Date.now() is used by default.
|
|
69
100
|
*/
|
|
70
101
|
protected getTime: () => number;
|
|
71
102
|
constructor(options?: Partial<PerformanceMetricOptions>);
|
|
103
|
+
/**
|
|
104
|
+
* Retrieve the performance tag name
|
|
105
|
+
* @param status status of the call
|
|
106
|
+
* @param markId Mark ID
|
|
107
|
+
*/
|
|
108
|
+
protected getPerformanceTag: (status: string, markId: string) => string;
|
|
72
109
|
/**
|
|
73
110
|
* Opens a mark associated to a call.
|
|
74
111
|
* @param url URL of the call associated to the mark to open
|
|
@@ -92,4 +129,5 @@ export declare class PerformanceMetricPlugin implements FetchPlugin {
|
|
|
92
129
|
transform: (fetchCall: FetchCall) => Promise<Response>;
|
|
93
130
|
};
|
|
94
131
|
}
|
|
132
|
+
export {};
|
|
95
133
|
//# sourceMappingURL=perf-metric.fetch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"perf-metric.fetch.d.ts","sourceRoot":"","sources":["../../../../src/plugins/perf-metric/perf-metric.fetch.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,cAAc,EAAE,WAAW,CAAC;IAE5B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IAEd;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;
|
|
1
|
+
{"version":3,"file":"perf-metric.fetch.d.ts","sourceRoot":"","sources":["../../../../src/plugins/perf-metric/perf-metric.fetch.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,15 +9,21 @@ export class PerformanceMetricPlugin {
|
|
|
9
9
|
*/
|
|
10
10
|
this.openMarks = {};
|
|
11
11
|
/**
|
|
12
|
-
* Method used to get the current time.
|
|
13
|
-
* Date.now() is used by default
|
|
12
|
+
* Method used to get the current time as default implementation if no Performance API available.
|
|
13
|
+
* Date.now() is used by default.
|
|
14
14
|
*/
|
|
15
15
|
this.getTime = Date.now;
|
|
16
|
+
/**
|
|
17
|
+
* Retrieve the performance tag name
|
|
18
|
+
* @param status status of the call
|
|
19
|
+
* @param markId Mark ID
|
|
20
|
+
*/
|
|
21
|
+
this.getPerformanceTag = (status, markId) => `sdk:${status}:${markId}`;
|
|
22
|
+
this.getPerformanceTag = options?.getPerformanceTag || this.getPerformanceTag;
|
|
23
|
+
this.performance = options?.performance || (typeof window !== 'undefined' ? window.performance : undefined);
|
|
16
24
|
this.onMarkComplete = options ? options.onMarkComplete : this.onMarkComplete;
|
|
17
25
|
this.onMarkError = options ? options.onMarkError : this.onMarkError;
|
|
18
|
-
|
|
19
|
-
this.getTime = () => window.performance.now();
|
|
20
|
-
}
|
|
26
|
+
this.onMarkOpen = options ? options.onMarkOpen : this.onMarkOpen;
|
|
21
27
|
}
|
|
22
28
|
/**
|
|
23
29
|
* Opens a mark associated to a call.
|
|
@@ -26,15 +32,18 @@ export class PerformanceMetricPlugin {
|
|
|
26
32
|
*/
|
|
27
33
|
openMark(url, requestOptions) {
|
|
28
34
|
const markId = v4();
|
|
29
|
-
this.
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}
|
|
35
|
+
const perfMark = this.performance?.mark(this.getPerformanceTag('start', markId)) || undefined;
|
|
36
|
+
const startTime = perfMark?.startTime ?? this.getTime();
|
|
37
|
+
const mark = {
|
|
38
|
+
markId,
|
|
39
|
+
url,
|
|
40
|
+
requestOptions,
|
|
41
|
+
startTime
|
|
37
42
|
};
|
|
43
|
+
this.openMarks[markId] = mark;
|
|
44
|
+
if (this.onMarkOpen) {
|
|
45
|
+
void this.onMarkOpen(mark);
|
|
46
|
+
}
|
|
38
47
|
return markId;
|
|
39
48
|
}
|
|
40
49
|
/**
|
|
@@ -43,15 +52,18 @@ export class PerformanceMetricPlugin {
|
|
|
43
52
|
* @param response Response of the call associated to the mark to close
|
|
44
53
|
*/
|
|
45
54
|
closeMark(markId, response) {
|
|
55
|
+
const perfMark = this.performance?.mark(this.getPerformanceTag('end', markId)) || undefined;
|
|
56
|
+
const endTime = perfMark?.startTime ?? this.getTime();
|
|
57
|
+
this.performance?.measure(this.getPerformanceTag('measure', markId), this.getPerformanceTag('start', markId), this.getPerformanceTag('end', markId));
|
|
46
58
|
const mark = this.openMarks[markId];
|
|
47
59
|
if (!mark) {
|
|
48
60
|
return;
|
|
49
61
|
}
|
|
50
62
|
if (this.onMarkComplete) {
|
|
51
|
-
this.onMarkComplete({
|
|
63
|
+
void this.onMarkComplete({
|
|
52
64
|
...mark,
|
|
53
65
|
response,
|
|
54
|
-
endTime
|
|
66
|
+
endTime
|
|
55
67
|
});
|
|
56
68
|
}
|
|
57
69
|
delete this.openMarks[markId];
|
|
@@ -62,15 +74,18 @@ export class PerformanceMetricPlugin {
|
|
|
62
74
|
* @param error Optional error of the call associated to the mark to close
|
|
63
75
|
*/
|
|
64
76
|
closeMarkWithError(markId, error) {
|
|
77
|
+
const perfMark = this.performance?.mark(this.getPerformanceTag('error', markId)) || undefined;
|
|
78
|
+
const endTime = perfMark?.startTime ?? this.getTime();
|
|
79
|
+
this.performance?.measure(this.getPerformanceTag('measure', markId), this.getPerformanceTag('start', markId), this.getPerformanceTag('error', markId));
|
|
65
80
|
const mark = this.openMarks[markId];
|
|
66
81
|
if (!mark) {
|
|
67
82
|
return;
|
|
68
83
|
}
|
|
69
84
|
if (this.onMarkError) {
|
|
70
|
-
this.onMarkError({
|
|
85
|
+
void this.onMarkError({
|
|
71
86
|
...mark,
|
|
72
87
|
error,
|
|
73
|
-
endTime
|
|
88
|
+
endTime
|
|
74
89
|
});
|
|
75
90
|
}
|
|
76
91
|
delete this.openMarks[markId];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"perf-metric.fetch.js","sourceRoot":"","sources":["../../../../src/plugins/perf-metric/perf-metric.fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"perf-metric.fetch.js","sourceRoot":"","sources":["../../../../src/plugins/perf-metric/perf-metric.fetch.ts"],"names":[],"mappings":"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"}
|