@oneteme/inspect-ng-collector 0.0.7 → 0.0.9

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.
@@ -1,4 +1,4 @@
1
- import { dateNow } from "./util";
1
+ import { dateNow, initDebug } from "./util";
2
2
  const SLASH = '/';
3
3
  const HOST_PATERN = /https?:\/\/[\w\-.]+(:\d{2,5})?\/?/;
4
4
  const PATH_PATERN = /[\w-]+(\/[\w-]+)*/;
@@ -12,7 +12,7 @@ const validationMap = {
12
12
  export function setConfig(conf) {
13
13
  return {
14
14
  host: conf.host,
15
- name: getStringOrCall(conf.name) ?? '',
15
+ name: getStringOrCall(conf.name),
16
16
  version: getStringOrCall(conf.version) ?? '',
17
17
  env: getStringOrCall(conf.env) ?? '',
18
18
  user: getStringOrCall(conf.user) ?? '',
@@ -21,8 +21,8 @@ export function setConfig(conf) {
21
21
  instanceApi: getStringOrCall(conf.sessionApi),
22
22
  sessionApi: getStringOrCall(conf.instanceApi),
23
23
  exclude: getRegArrOrCall(conf.exclude) ?? [],
24
- debug: conf?.debug ?? false,
25
- enabled: conf.enabled || false
24
+ debug: conf.debug ?? false,
25
+ enabled: conf.enabled ?? false
26
26
  };
27
27
  /*
28
28
  this.logServerMain = this.sessionApiURL(host,getStringOrCall(config.sessionApi)!);
@@ -31,27 +31,28 @@ export function setConfig(conf) {
31
31
  this.delay = getNumberOrCall(config.delay) ?? 60000;
32
32
  */
33
33
  }
34
- export function validateAndGetConfig(conf) {
35
- let host = validateProperty(conf.host, () => matchRegex(conf.host, HOST_PATERN));
36
- let sessionApi = validateProperty(conf.sessionApi, () => matchRegex(conf.sessionApi, PATH_PATERN));
37
- let instanceApi = validateProperty(conf.instanceApi, () => matchRegex(conf.sessionApi, PATH_PATERN));
38
- return {
39
- user: conf.user,
40
- bufferMaxSize: validateProperty(conf.delay, () => requirePostitiveValue(conf.delay, "bufferMaxSize")) ?? 1000,
41
- delay: validateProperty(conf.delay, () => requirePostitiveValue(conf.delay, "delay")) ?? 60000,
42
- instanceApi: sessionApiURL(host, sessionApi),
43
- sessionApi: instanceApiURL(host, instanceApi),
44
- exclude: conf.exclude,
45
- debug: conf.debug,
46
- enabled: conf.enabled
47
- };
48
- }
49
34
  export function validateProperty(value, func) {
50
35
  if (func()) {
51
36
  return value;
52
37
  }
53
38
  throw new Error('error'); // pass the error return from the the passed function
54
39
  }
40
+ export function validateAndGetConfig(conf) {
41
+ let host = matchRegex(getStringOrCall(conf.host), "host", HOST_PATERN);
42
+ let sessionApi = matchRegex(getStringOrCall(conf.sessionApi), 'sessionApi', PATH_PATERN);
43
+ let instanceApi = matchRegex(getStringOrCall(conf.instanceApi), 'intanceApi', PATH_PATERN);
44
+ initDebug(conf.debug ?? false);
45
+ return {
46
+ user: getStringOrCall(conf.user),
47
+ bufferMaxSize: requirePostitiveValue(getNumberOrCall(conf.delay), "bufferMaxSize", 1000),
48
+ delay: requirePostitiveValue(getNumberOrCall(conf.delay), "delay", 60000),
49
+ instanceApi: sessionApiURL(host, sessionApi),
50
+ sessionApi: instanceApiURL(host, instanceApi),
51
+ exclude: getRegArrOrCall(conf.exclude) || [],
52
+ debug: conf.debug ?? false,
53
+ enabled: conf.enabled ?? false
54
+ };
55
+ }
55
56
  export function GetInstanceEnvironement(conf) {
56
57
  return {
57
58
  name: getStringOrCall(conf.name),
@@ -127,18 +128,19 @@ function sessionApiURL(host, path) {
127
128
  function toURL(host, path) {
128
129
  return host.endsWith(SLASH) || path.startsWith(SLASH) ? host + path : [host, path].join(SLASH);
129
130
  }
130
- export function matchRegex(v, pattern) {
131
+ export function matchRegex(v, name, pattern) {
131
132
  if (v && pattern.exec(v)) {
132
- return true;
133
+ return v;
133
134
  }
134
- console.warn("bad value=" + v + ", pattern=" + pattern);
135
- return false;
135
+ throw `bad value ${name}=${v}, pattern=${pattern}`;
136
136
  }
137
- export function requirePostitiveValue(v, name) {
138
- if (v == undefined || (v && v > 0)) {
139
- return true;
137
+ export function requirePostitiveValue(v, name, defaultValue) {
138
+ if (v && v > 0) {
139
+ return v;
140
+ }
141
+ if (v == undefined) {
142
+ return defaultValue;
140
143
  }
141
- console.warn(name + '=' + v + " <= 0");
142
- return false;
144
+ throw `bad value ${name}= ${v} <= 0`;
143
145
  }
144
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29uZXRlbWUvaW5zcGVjdC1uZy1jb2xsZWN0b3Ivc3JjL2xpYi9jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDakMsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDO0FBQ2xCLE1BQU0sV0FBVyxHQUFHLG1DQUFtQyxDQUFDO0FBQ3hELE1BQU0sV0FBVyxHQUFHLG1CQUFtQixDQUFDO0FBMkJ2QyxNQUFNLGFBQWEsR0FBSTtJQUN0QixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFO0lBQy9DLGFBQWEsRUFBRyxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRTtJQUNwRSxLQUFLLEVBQUcsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFO0lBQ2pELFdBQVcsRUFBRyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUU7SUFDdkQsVUFBVSxFQUFHLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRTtDQUN0RCxDQUFBO0FBRUYsTUFBTSxVQUFVLFNBQVMsQ0FBQyxJQUFvQjtJQUM1QyxPQUFRO1FBQ04sSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1FBQ2YsSUFBSSxFQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtRQUN0QyxPQUFPLEVBQUUsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFO1FBQzVDLEdBQUcsRUFBRSxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFHLEVBQUU7UUFDbkMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtRQUN0QyxhQUFhLEVBQUUsZUFBZSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDbEQsS0FBSyxFQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ2xDLFdBQVcsRUFBRSxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUM3QyxVQUFVLEVBQUUsZUFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDN0MsT0FBTyxFQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRTtRQUM1QyxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssSUFBSSxLQUFLO1FBQzNCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxJQUFJLEtBQUs7S0FDL0IsQ0FBQTtJQUNGOzs7OztPQUtHO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxJQUFRO0lBQ3pDLElBQUksSUFBSSxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRSxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUUsQ0FBQTtJQUNoRixJQUFJLFVBQVUsR0FBSSxnQkFBZ0IsQ0FBRSxJQUFJLENBQUMsVUFBVSxFQUFDLEdBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFFLENBQUE7SUFDbkcsSUFBSSxXQUFXLEdBQUcsZ0JBQWdCLENBQUUsSUFBSSxDQUFDLFdBQVcsRUFBQyxHQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFBO0lBQ25HLE9BQVE7UUFDTixJQUFJLEVBQUcsSUFBSSxDQUFDLElBQUk7UUFDaEIsYUFBYSxFQUFHLGdCQUFnQixDQUFFLElBQUksQ0FBQyxLQUFLLEVBQUMsR0FBRSxFQUFFLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBQyxlQUFlLENBQUMsQ0FBQyxJQUFJLElBQUk7UUFDNUcsS0FBSyxFQUFFLGdCQUFnQixDQUFFLElBQUksQ0FBQyxLQUFLLEVBQUMsR0FBRSxFQUFFLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEtBQUs7UUFDNUYsV0FBVyxFQUFFLGFBQWEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDO1FBQzVDLFVBQVUsRUFBRSxjQUFjLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQztRQUM3QyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87UUFDckIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1FBQ2pCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztLQUN0QixDQUFBO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxLQUFTLEVBQUUsSUFBOEI7SUFDeEUsSUFBRyxJQUFJLEVBQUUsRUFBQztRQUNOLE9BQU8sS0FBSyxDQUFDO0tBQ2hCO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFDLHNEQUFzRDtBQUNqRixDQUFDO0FBRUQsTUFBTSxVQUFVLHVCQUF1QixDQUFDLElBQVE7SUFDNUMsT0FBTztRQUNMLElBQUksRUFBRSxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNoQyxPQUFPLEVBQUUsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDdEMsT0FBTyxFQUFFLFNBQVM7UUFDbEIsR0FBRyxFQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQzlCLEVBQUUsRUFBRSxRQUFRLEVBQUU7UUFDZCxFQUFFLEVBQUUsYUFBYSxFQUFFO1FBQ25CLElBQUksRUFBRSxTQUFTO1FBQ2YsSUFBSSxFQUFFLFFBQVE7UUFDZCxPQUFPLEVBQUUsT0FBTyxFQUFFO1FBQ2xCLFNBQVMsRUFBRSw0QkFBNEI7S0FDMUMsQ0FBQTtBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLENBQTJCO0lBQ3pELE9BQU8sT0FBTyxDQUFDLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNDLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLENBQTJCO0lBQ3pELE9BQU8sT0FBTyxDQUFDLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNDLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLENBQStCO0lBQzdELE9BQU8sT0FBTyxDQUFDLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNDLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYTtJQUMzQixJQUFJO1FBQ0EsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUE7UUFDdEQsUUFBUSxJQUFJLEVBQUU7WUFDVixLQUFLLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMzQixPQUFPLE1BQU0sQ0FBQztZQUNsQixLQUFLLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMxQixPQUFPLE9BQU8sQ0FBQztZQUNuQixLQUFLLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM3QixPQUFPLFFBQVEsQ0FBQztZQUNwQixLQUFLLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM5QixPQUFPLFNBQVMsQ0FBQztZQUNyQixLQUFLLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM3QixPQUFPLFFBQVEsQ0FBQztTQUN2QjtLQUNKO0lBQ0QsT0FBTyxDQUFDLEVBQUU7UUFDTixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3BCO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVELE1BQU0sVUFBVSxRQUFRO0lBQ3RCLElBQUk7UUFDQSxJQUFJLFlBQVksRUFBRSxPQUFPLENBQUM7UUFDMUIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUE7UUFDdEQsUUFBUSxJQUFJLEVBQUU7WUFDVixLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFFeEIsWUFBWSxHQUFHLHVCQUF1QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDbkQsT0FBTyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7Z0JBQ3JELE9BQU8sV0FBVyxPQUFPLEVBQUUsQ0FBQztZQUNoQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDdEIsT0FBTyxPQUFPLENBQUM7WUFFbkIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzFCLFlBQVksR0FBRyw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzFELE9BQU8sR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUNyRCxPQUFPLFNBQVMsT0FBTyxFQUFFLENBQUE7U0FDaEM7S0FDSjtJQUNELE9BQU8sQ0FBQyxFQUFFO1FBQ04sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNwQjtJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxJQUFXLEVBQUUsSUFBVztJQUM5QyxPQUFRLEtBQUssQ0FBQyxJQUFJLEVBQUMsSUFBSSxDQUFDLENBQUM7QUFDM0IsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLElBQVcsRUFBRSxJQUFXO0lBQzdDLE9BQVEsS0FBSyxDQUFDLElBQUksRUFBQyxJQUFJLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBRUQsU0FBUyxLQUFLLENBQUUsSUFBVyxFQUFHLElBQVc7SUFDdEMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNqRyxDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxDQUFxQixFQUFFLE9BQWU7SUFDL0QsSUFBRyxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBQztRQUNyQixPQUFPLElBQUksQ0FBQztLQUNkO0lBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLFlBQVksR0FBRyxPQUFPLENBQUMsQ0FBQztJQUN4RCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCLENBQUMsQ0FBcUIsRUFBRSxJQUFZO0lBQ3hFLElBQUcsQ0FBQyxJQUFJLFNBQVMsSUFBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7UUFDbEMsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFFLEdBQUcsR0FBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUM7SUFDckMsT0FBTyxLQUFLLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGF0ZU5vdyB9IGZyb20gXCIuL3V0aWxcIjtcbmNvbnN0IFNMQVNIID0gJy8nO1xuY29uc3QgSE9TVF9QQVRFUk4gPSAvaHR0cHM/OlxcL1xcL1tcXHdcXC0uXSsoOlxcZHsyLDV9KT9cXC8/LztcbmNvbnN0IFBBVEhfUEFURVJOID0gL1tcXHctXSsoXFwvW1xcdy1dKykqLztcbmV4cG9ydCBpbnRlcmZhY2UgQXBwbGljYXRpb25Db25mIHtcbiAgaG9zdD86IHN0cmluZztcbiAgbmFtZT86IHN0cmluZyB8ICgoKSA9PiBzdHJpbmcpO1xuICB2ZXJzaW9uPzogc3RyaW5nIHwgKCgpID0+IHN0cmluZyk7XG4gIGVudj86IHN0cmluZyB8ICgoKSA9PiBzdHJpbmcpO1xuICB1c2VyPzogc3RyaW5nIHwgKCgpID0+IHN0cmluZyk7XG4gIGJ1ZmZlck1heFNpemU/OiBudW1iZXIgfCAoKCkgPT4gbnVtYmVyKTtcbiAgZGVsYXk/OiBudW1iZXJ8ICgoKSA9PiBudW1iZXIpO1xuICBpbnN0YW5jZUFwaT86IHN0cmluZyB8ICgoKSA9PiBzdHJpbmcpO1xuICBzZXNzaW9uQXBpPzogc3RyaW5nIHwgKCgpID0+IHN0cmluZyk7XG4gIGV4Y2x1ZGU/OiBSZWdFeHBbXSB8ICgoKSA9PiBSZWdFeHBbXSk7XG4gIGRlYnVnPzogYm9vbGVhbjtcbiAgZW5hYmxlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVjaG5pY2FsQ29uZiB7XG4gIHVzZXI6c3RyaW5nIDtcbiAgYnVmZmVyTWF4U2l6ZTogbnVtYmVyO1xuICBkZWxheTogbnVtYmVyO1xuICBpbnN0YW5jZUFwaTogc3RyaW5nO1xuICBzZXNzaW9uQXBpOiBzdHJpbmc7XG4gIGV4Y2x1ZGU6IFJlZ0V4cFtdO1xuICBkZWJ1ZzogYm9vbGVhbjtcbiAgZW5hYmxlZDogYm9vbGVhbjtcbn1cblxuIGNvbnN0IHZhbGlkYXRpb25NYXAgID0geyAvLyByZW1vdmUgXG4gIGhvc3Q6IHsgZnVuYzogbWF0Y2hSZWdleCwgYXJnczogW0hPU1RfUEFURVJOXSB9LFxuICBidWZmZXJNYXhTaXplOiAgeyBmdW5jOiByZXF1aXJlUG9zdGl0aXZlVmFsdWUsIGFyZ3M6IFtIT1NUX1BBVEVSTl0gfSxcbiAgZGVsYXk6ICB7IGZ1bmM6IG1hdGNoUmVnZXgsIGFyZ3M6IFtIT1NUX1BBVEVSTl0gfSxcbiAgaW5zdGFuY2VBcGk6ICB7IGZ1bmM6IG1hdGNoUmVnZXgsIGFyZ3M6IFtIT1NUX1BBVEVSTl0gfSxcbiAgc2Vzc2lvbkFwaTogIHsgZnVuYzogbWF0Y2hSZWdleCwgYXJnczogW0hPU1RfUEFURVJOXSB9XG4gfVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0Q29uZmlnKGNvbmY6QXBwbGljYXRpb25Db25mKXtcbiAgcmV0dXJuICB7XG4gICAgaG9zdDogY29uZi5ob3N0LFxuICAgIG5hbWU6IGdldFN0cmluZ09yQ2FsbChjb25mLm5hbWUpID8/ICcnLFxuICAgIHZlcnNpb246IGdldFN0cmluZ09yQ2FsbChjb25mLnZlcnNpb24pID8/ICcnLFxuICAgIGVudjogZ2V0U3RyaW5nT3JDYWxsKGNvbmYuZW52KT8/ICcnLFxuICAgIHVzZXI6IGdldFN0cmluZ09yQ2FsbChjb25mLnVzZXIpID8/ICcnLFxuICAgIGJ1ZmZlck1heFNpemU6IGdldE51bWJlck9yQ2FsbChjb25mLmJ1ZmZlck1heFNpemUpLFxuICAgIGRlbGF5OiBnZXROdW1iZXJPckNhbGwoY29uZi5kZWxheSksXG4gICAgaW5zdGFuY2VBcGk6IGdldFN0cmluZ09yQ2FsbChjb25mLnNlc3Npb25BcGkpLFxuICAgIHNlc3Npb25BcGk6IGdldFN0cmluZ09yQ2FsbChjb25mLmluc3RhbmNlQXBpKSxcbiAgICBleGNsdWRlOiBnZXRSZWdBcnJPckNhbGwoY29uZi5leGNsdWRlKSA/PyBbXSwgXG4gICAgZGVidWc6IGNvbmY/LmRlYnVnID8/IGZhbHNlLFxuICAgIGVuYWJsZWQ6IGNvbmYuZW5hYmxlZCB8fCBmYWxzZVxuICB9XG4gLypcbiAgdGhpcy5sb2dTZXJ2ZXJNYWluID0gdGhpcy5zZXNzaW9uQXBpVVJMKGhvc3QsZ2V0U3RyaW5nT3JDYWxsKGNvbmZpZy5zZXNzaW9uQXBpKSEpO1xuICB0aGlzLmxvZ0luc3RhbmNlRW52ID0gdGhpcy5pbnN0YW5jZUFwaVVSTChob3N0LGdldFN0cmluZ09yQ2FsbChjb25maWcuaW5zdGFuY2VBcGkpISk7XG4gIHRoaXMubWF4QnVmZmVyU2l6ZSA9ICBnZXROdW1iZXJPckNhbGwoY29uZmlnLmJ1ZmZlck1heFNpemUpID8/IDEwMDA7XG4gIHRoaXMuZGVsYXkgPSBnZXROdW1iZXJPckNhbGwoY29uZmlnLmRlbGF5KSA/PyA2MDAwMDtcbiAgKi9cbn0gXG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUFuZEdldENvbmZpZyhjb25mOmFueSk6VGVjaG5pY2FsQ29uZntcbiAgICBsZXQgaG9zdCA9IHZhbGlkYXRlUHJvcGVydHkoY29uZi5ob3N0LCAoKT0+IG1hdGNoUmVnZXgoY29uZi5ob3N0LCBIT1NUX1BBVEVSTikgKVxuICAgIGxldCBzZXNzaW9uQXBpID0gIHZhbGlkYXRlUHJvcGVydHkoIGNvbmYuc2Vzc2lvbkFwaSwoKT0+IG1hdGNoUmVnZXgoY29uZi5zZXNzaW9uQXBpLCBQQVRIX1BBVEVSTikgKVxuICAgIGxldCBpbnN0YW5jZUFwaSA9IHZhbGlkYXRlUHJvcGVydHkoIGNvbmYuaW5zdGFuY2VBcGksKCk9PiBtYXRjaFJlZ2V4KGNvbmYuc2Vzc2lvbkFwaSwgUEFUSF9QQVRFUk4pKVxuICAgIHJldHVybiAge1xuICAgICAgdXNlciA6IGNvbmYudXNlcixcbiAgICAgIGJ1ZmZlck1heFNpemU6ICB2YWxpZGF0ZVByb3BlcnR5KCBjb25mLmRlbGF5LCgpPT4gcmVxdWlyZVBvc3RpdGl2ZVZhbHVlKGNvbmYuZGVsYXksXCJidWZmZXJNYXhTaXplXCIpKSA/PyAxMDAwLFxuICAgICAgZGVsYXk6IHZhbGlkYXRlUHJvcGVydHkoIGNvbmYuZGVsYXksKCk9PiByZXF1aXJlUG9zdGl0aXZlVmFsdWUoY29uZi5kZWxheSxcImRlbGF5XCIpKSA/PyA2MDAwMCxcbiAgICAgIGluc3RhbmNlQXBpOiBzZXNzaW9uQXBpVVJMKGhvc3QsIHNlc3Npb25BcGkpLFxuICAgICAgc2Vzc2lvbkFwaTogaW5zdGFuY2VBcGlVUkwoaG9zdCwgaW5zdGFuY2VBcGkpLFxuICAgICAgZXhjbHVkZTogY29uZi5leGNsdWRlLFxuICAgICAgZGVidWc6IGNvbmYuZGVidWcsXG4gICAgICBlbmFibGVkOiBjb25mLmVuYWJsZWRcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVByb3BlcnR5KHZhbHVlOmFueSwgZnVuYyA6ICguLi5hcmdzOmFueSk9PiBib29sZWFuKXtcbiAgaWYoZnVuYygpKXtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ2Vycm9yJykgLy8gcGFzcyB0aGUgZXJyb3IgcmV0dXJuIGZyb20gdGhlIHRoZSBwYXNzZWQgZnVuY3Rpb24gXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBHZXRJbnN0YW5jZUVudmlyb25lbWVudChjb25mOmFueSl7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IGdldFN0cmluZ09yQ2FsbChjb25mLm5hbWUpLFxuICAgICAgdmVyc2lvbjogZ2V0U3RyaW5nT3JDYWxsKGNvbmYudmVyc2lvbiksXG4gICAgICBhZGRyZXNzOiB1bmRlZmluZWQsIC8vc2VydmVyIHNpZGVcbiAgICAgIGVudjogZ2V0U3RyaW5nT3JDYWxsKGNvbmYuZW52KSxcbiAgICAgIG9zOiBkZXRlY3RPcygpLFxuICAgICAgcmU6IGRldGVjdEJyb3dzZXIoKSxcbiAgICAgIHVzZXI6IHVuZGVmaW5lZCwgLy8gY2Fubm90IGdldCB1c2VyXG4gICAgICB0eXBlOiBcIkNMSUVOVFwiLFxuICAgICAgaW5zdGFudDogZGF0ZU5vdygpLFxuICAgICAgY29sbGVjdG9yOiBcImluc3BlY3QtbmctY29sbGVjdG9yLTAuMC4xXCJcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TnVtYmVyT3JDYWxsKG8/OiBudW1iZXIgfCAoKCkgPT4gbnVtYmVyKSk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiB0eXBlb2YgbyA9PT0gXCJmdW5jdGlvblwiID8gbygpIDogbztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFN0cmluZ09yQ2FsbChvPzogc3RyaW5nIHwgKCgpID0+IHN0cmluZykpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gdHlwZW9mIG8gPT09IFwiZnVuY3Rpb25cIiA/IG8oKSA6IG87XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZWdBcnJPckNhbGwobz86IFJlZ0V4cFtdIHwgKCgpID0+IFJlZ0V4cFtdKSk6IFJlZ0V4cFtdIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHR5cGVvZiBvID09PSBcImZ1bmN0aW9uXCIgPyBvKCkgOiBvO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGV0ZWN0QnJvd3NlcigpIHtcbiAgdHJ5IHtcbiAgICAgIGNvbnN0IGFnZW50ID0gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKVxuICAgICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgY2FzZSBhZ2VudC5pbmRleE9mKCdlZGdlJykgPiAtMTpcbiAgICAgICAgICAgICAgcmV0dXJuICdlZGdlJztcbiAgICAgICAgICBjYXNlIGFnZW50LmluZGV4T2YoJ29wcicpID4gLTE6XG4gICAgICAgICAgICAgIHJldHVybiAnb3BlcmEnO1xuICAgICAgICAgIGNhc2UgYWdlbnQuaW5kZXhPZignY2hyb21lJykgPiAtMTpcbiAgICAgICAgICAgICAgcmV0dXJuICdjaHJvbWUnO1xuICAgICAgICAgIGNhc2UgYWdlbnQuaW5kZXhPZignZmlyZWZveCcpID4gLTE6XG4gICAgICAgICAgICAgIHJldHVybiAnZmlyZWZveCc7XG4gICAgICAgICAgY2FzZSBhZ2VudC5pbmRleE9mKCdzYWZhcmknKSA+IC0xOlxuICAgICAgICAgICAgICByZXR1cm4gJ3NhZmFyaSc7XG4gICAgICB9XG4gIH1cbiAgY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRldGVjdE9zKCkge1xuICB0cnkge1xuICAgICAgbGV0IHZlcnNpb25NYXRjaCwgdmVyc2lvbjtcbiAgICAgIGNvbnN0IGFnZW50ID0gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKVxuICAgICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgY2FzZSAoL3dpbmRvd3MvLnRlc3QoYWdlbnQpKTpcblxuICAgICAgICAgICAgICB2ZXJzaW9uTWF0Y2ggPSAvd2luZG93cyBudCAoXFxkK1xcLlxcZCspLy5leGVjKGFnZW50KTtcbiAgICAgICAgICAgICAgdmVyc2lvbiA9IHZlcnNpb25NYXRjaCA/IHZlcnNpb25NYXRjaFsxXSA6ICdVbmtub3duJztcbiAgICAgICAgICAgICAgcmV0dXJuIGBXaW5kb3dzICR7dmVyc2lvbn1gO1xuICAgICAgICAgIGNhc2UgKC9saW51eC8udGVzdChhZ2VudCkpOlxuICAgICAgICAgICAgICByZXR1cm4gJ0xpbnV4JztcblxuICAgICAgICAgIGNhc2UgKC9tYWNpbnRvc2gvLnRlc3QoYWdlbnQpKTpcbiAgICAgICAgICAgICAgdmVyc2lvbk1hdGNoID0gL21hYyBvcyB4IChcXGQrWy5fXVxcZCtbLl9dXFxkKykvLmV4ZWMoYWdlbnQpO1xuICAgICAgICAgICAgICB2ZXJzaW9uID0gdmVyc2lvbk1hdGNoID8gdmVyc2lvbk1hdGNoWzFdIDogJ1Vua25vd24nO1xuICAgICAgICAgICAgICByZXR1cm4gYE1hY09zICR7dmVyc2lvbn1gXG4gICAgICB9XG4gIH1cbiAgY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gaW5zdGFuY2VBcGlVUkwoaG9zdDpzdHJpbmcsIHBhdGg6c3RyaW5nKXtcbiAgcmV0dXJuICB0b1VSTChob3N0LHBhdGgpO1xufVxuXG5mdW5jdGlvbiBzZXNzaW9uQXBpVVJMKGhvc3Q6c3RyaW5nLCBwYXRoOnN0cmluZyl7XG4gIHJldHVybiAgdG9VUkwoaG9zdCxwYXRoKTtcbn1cblxuZnVuY3Rpb24gdG9VUkwoIGhvc3Q6c3RyaW5nLCAgcGF0aDpzdHJpbmcgKXtcbiAgIHJldHVybiBob3N0LmVuZHNXaXRoKFNMQVNIKSB8fCBwYXRoLnN0YXJ0c1dpdGgoU0xBU0gpID8gaG9zdCArIHBhdGggOiBbaG9zdCxwYXRoXS5qb2luKFNMQVNIKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoUmVnZXgodjogc3RyaW5nIHwgdW5kZWZpbmVkLCBwYXR0ZXJuOiBSZWdFeHApIHtcbiAgaWYodiAmJiBwYXR0ZXJuLmV4ZWModikpe1xuICAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBjb25zb2xlLndhcm4oXCJiYWQgdmFsdWU9XCIgKyB2ICsgXCIsIHBhdHRlcm49XCIgKyBwYXR0ZXJuKTtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVxdWlyZVBvc3RpdGl2ZVZhbHVlKHY6IG51bWJlciB8IHVuZGVmaW5lZCwgbmFtZTogc3RyaW5nKXtcbiBpZih2ID09IHVuZGVmaW5lZCB8fCAgKHYgJiYgdiA+IDApKSB7XG4gICByZXR1cm4gdHJ1ZTtcbiB9XG4gY29uc29sZS53YXJuKG5hbWUgKyc9JysgdiArIFwiIDw9IDBcIik7XG4gcmV0dXJuIGZhbHNlO1xufVxuXG4iXX0=
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29uZXRlbWUvaW5zcGVjdC1uZy1jb2xsZWN0b3Ivc3JjL2xpYi9jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzVDLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQztBQUNsQixNQUFNLFdBQVcsR0FBRyxtQ0FBbUMsQ0FBQztBQUN4RCxNQUFNLFdBQVcsR0FBRyxtQkFBbUIsQ0FBQztBQTJCdkMsTUFBTSxhQUFhLEdBQUk7SUFDdEIsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRTtJQUMvQyxhQUFhLEVBQUcsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUUsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUU7SUFDcEUsS0FBSyxFQUFHLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRTtJQUNqRCxXQUFXLEVBQUcsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFO0lBQ3ZELFVBQVUsRUFBRyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUU7Q0FDdEQsQ0FBQTtBQUVGLE1BQU0sVUFBVSxTQUFTLENBQUMsSUFBb0I7SUFDNUMsT0FBUTtRQUNOLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtRQUNmLElBQUksRUFBRSxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNoQyxPQUFPLEVBQUUsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFO1FBQzVDLEdBQUcsRUFBRSxlQUFl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QUFDLElBQUksRUFBQyxJQUFJLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBRUQsU0FBUyxhQUFhLENBQUMsSUFBVyxFQUFFLElBQVc7SUFDN0MsT0FBUSxLQUFLLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxDQUFDO0FBQzNCLENBQUM7QUFFRCxTQUFTLEtBQUssQ0FBQyxJQUFXLEVBQUUsSUFBVztJQUNwQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2pHLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLENBQXFCLEVBQUcsSUFBWSxFQUFFLE9BQWU7SUFDOUUsSUFBRyxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBQztRQUNyQixPQUFPLENBQUMsQ0FBQztLQUNYO0lBQ0QsTUFBTSxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsT0FBTyxFQUFFLENBQUM7QUFDckQsQ0FBQztBQUVELE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxDQUFxQixFQUFFLElBQVksRUFBRSxZQUFtQjtJQUM1RixJQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ2IsT0FBTyxDQUFDLENBQUM7S0FDVjtJQUNELElBQUcsQ0FBQyxJQUFJLFNBQVMsRUFBQztRQUNoQixPQUFPLFlBQVksQ0FBQztLQUNyQjtJQUNELE1BQU0sYUFBYSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUE7QUFDdEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRhdGVOb3csIGluaXREZWJ1ZyB9IGZyb20gXCIuL3V0aWxcIjtcbmNvbnN0IFNMQVNIID0gJy8nO1xuY29uc3QgSE9TVF9QQVRFUk4gPSAvaHR0cHM/OlxcL1xcL1tcXHdcXC0uXSsoOlxcZHsyLDV9KT9cXC8/LztcbmNvbnN0IFBBVEhfUEFURVJOID0gL1tcXHctXSsoXFwvW1xcdy1dKykqLztcbmV4cG9ydCBpbnRlcmZhY2UgQXBwbGljYXRpb25Db25mIHtcbiAgaG9zdD86IHN0cmluZztcbiAgbmFtZT86IHN0cmluZyB8ICgoKSA9PiBzdHJpbmcpO1xuICB2ZXJzaW9uPzogc3RyaW5nIHwgKCgpID0+IHN0cmluZyk7XG4gIGVudj86IHN0cmluZyB8ICgoKSA9PiBzdHJpbmcpO1xuICB1c2VyPzogc3RyaW5nIHwgKCgpID0+IHN0cmluZyk7XG4gIGJ1ZmZlck1heFNpemU/OiBudW1iZXIgfCAoKCkgPT4gbnVtYmVyKTtcbiAgZGVsYXk/OiBudW1iZXJ8ICgoKSA9PiBudW1iZXIpO1xuICBpbnN0YW5jZUFwaT86IHN0cmluZyB8ICgoKSA9PiBzdHJpbmcpO1xuICBzZXNzaW9uQXBpPzogc3RyaW5nIHwgKCgpID0+IHN0cmluZyk7XG4gIGV4Y2x1ZGU/OiBSZWdFeHBbXSB8ICgoKSA9PiBSZWdFeHBbXSk7XG4gIGRlYnVnPzogYm9vbGVhbjtcbiAgZW5hYmxlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVjaG5pY2FsQ29uZiB7XG4gIHVzZXI/OnN0cmluZyA7XG4gIGJ1ZmZlck1heFNpemU6IG51bWJlcjtcbiAgZGVsYXk6IG51bWJlcjtcbiAgaW5zdGFuY2VBcGk6IHN0cmluZztcbiAgc2Vzc2lvbkFwaTogc3RyaW5nO1xuICBleGNsdWRlOiBSZWdFeHBbXTtcbiAgZGVidWc6IGJvb2xlYW47XG4gIGVuYWJsZWQ6IGJvb2xlYW47XG59XG5cbiBjb25zdCB2YWxpZGF0aW9uTWFwICA9IHsgLy8gcmVtb3ZlIFxuICBob3N0OiB7IGZ1bmM6IG1hdGNoUmVnZXgsIGFyZ3M6IFtIT1NUX1BBVEVSTl0gfSxcbiAgYnVmZmVyTWF4U2l6ZTogIHsgZnVuYzogcmVxdWlyZVBvc3RpdGl2ZVZhbHVlLCBhcmdzOiBbSE9TVF9QQVRFUk5dIH0sXG4gIGRlbGF5OiAgeyBmdW5jOiBtYXRjaFJlZ2V4LCBhcmdzOiBbSE9TVF9QQVRFUk5dIH0sXG4gIGluc3RhbmNlQXBpOiAgeyBmdW5jOiBtYXRjaFJlZ2V4LCBhcmdzOiBbSE9TVF9QQVRFUk5dIH0sXG4gIHNlc3Npb25BcGk6ICB7IGZ1bmM6IG1hdGNoUmVnZXgsIGFyZ3M6IFtIT1NUX1BBVEVSTl0gfVxuIH1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldENvbmZpZyhjb25mOkFwcGxpY2F0aW9uQ29uZil7XG4gIHJldHVybiAge1xuICAgIGhvc3Q6IGNvbmYuaG9zdCxcbiAgICBuYW1lOiBnZXRTdHJpbmdPckNhbGwoY29uZi5uYW1lKSxcbiAgICB2ZXJzaW9uOiBnZXRTdHJpbmdPckNhbGwoY29uZi52ZXJzaW9uKSA/PyAnJyxcbiAgICBlbnY6IGdldFN0cmluZ09yQ2FsbChjb25mLmVudik/PyAnJyxcbiAgICB1c2VyOiBnZXRTdHJpbmdPckNhbGwoY29uZi51c2VyKSA/PyAnJyxcbiAgICBidWZmZXJNYXhTaXplOiBnZXROdW1iZXJPckNhbGwoY29uZi5idWZmZXJNYXhTaXplKSxcbiAgICBkZWxheTogZ2V0TnVtYmVyT3JDYWxsKGNvbmYuZGVsYXkpLFxuICAgIGluc3RhbmNlQXBpOiBnZXRTdHJpbmdPckNhbGwoY29uZi5zZXNzaW9uQXBpKSxcbiAgICBzZXNzaW9uQXBpOiBnZXRTdHJpbmdPckNhbGwoY29uZi5pbnN0YW5jZUFwaSksXG4gICAgZXhjbHVkZTogZ2V0UmVnQXJyT3JDYWxsKGNvbmYuZXhjbHVkZSkgPz8gW10sIFxuICAgIGRlYnVnOiBjb25mLmRlYnVnID8/IGZhbHNlLFxuICAgIGVuYWJsZWQ6IGNvbmYuZW5hYmxlZCA/PyBmYWxzZVxuICB9XG4gLypcbiAgdGhpcy5sb2dTZXJ2ZXJNYWluID0gdGhpcy5zZXNzaW9uQXBpVVJMKGhvc3QsZ2V0U3RyaW5nT3JDYWxsKGNvbmZpZy5zZXNzaW9uQXBpKSEpO1xuICB0aGlzLmxvZ0luc3RhbmNlRW52ID0gdGhpcy5pbnN0YW5jZUFwaVVSTChob3N0LGdldFN0cmluZ09yQ2FsbChjb25maWcuaW5zdGFuY2VBcGkpISk7XG4gIHRoaXMubWF4QnVmZmVyU2l6ZSA9ICBnZXROdW1iZXJPckNhbGwoY29uZmlnLmJ1ZmZlck1heFNpemUpID8/IDEwMDA7XG4gIHRoaXMuZGVsYXkgPSBnZXROdW1iZXJPckNhbGwoY29uZmlnLmRlbGF5KSA/PyA2MDAwMDtcbiAgKi9cbn0gXG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVByb3BlcnR5KHZhbHVlOmFueSwgZnVuYyA6ICguLi5hcmdzOmFueSk9PiBib29sZWFuKXtcbiAgaWYoZnVuYygpKXtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ2Vycm9yJykgLy8gcGFzcyB0aGUgZXJyb3IgcmV0dXJuIGZyb20gdGhlIHRoZSBwYXNzZWQgZnVuY3Rpb24gXG59XG5cblxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVBbmRHZXRDb25maWcoY29uZjphbnkpOlRlY2huaWNhbENvbmZ7XG4gIGxldCBob3N0ID0gbWF0Y2hSZWdleChnZXRTdHJpbmdPckNhbGwoY29uZi5ob3N0KSwgXCJob3N0XCIgLCBIT1NUX1BBVEVSTikgXG4gIGxldCBzZXNzaW9uQXBpID0gICBtYXRjaFJlZ2V4KGdldFN0cmluZ09yQ2FsbChjb25mLnNlc3Npb25BcGkpLCdzZXNzaW9uQXBpJywgUEFUSF9QQVRFUk4pIFxuICBsZXQgaW5zdGFuY2VBcGkgPSAgbWF0Y2hSZWdleChnZXRTdHJpbmdPckNhbGwoY29uZi5pbnN0YW5jZUFwaSksJ2ludGFuY2VBcGknLCBQQVRIX1BBVEVSTilcbiAgaW5pdERlYnVnKGNvbmYuZGVidWcgPz8gZmFsc2UpO1xuICByZXR1cm4gIHtcbiAgICB1c2VyIDogZ2V0U3RyaW5nT3JDYWxsKGNvbmYudXNlciksXG4gICAgYnVmZmVyTWF4U2l6ZTogIHJlcXVpcmVQb3N0aXRpdmVWYWx1ZShnZXROdW1iZXJPckNhbGwoY29uZi5kZWxheSksXCJidWZmZXJNYXhTaXplXCIsIDEwMDApICxcbiAgICBkZWxheTogcmVxdWlyZVBvc3RpdGl2ZVZhbHVlKGdldE51bWJlck9yQ2FsbChjb25mLmRlbGF5KSxcImRlbGF5XCIsIDYwMDAwKSAsXG4gICAgaW5zdGFuY2VBcGk6IHNlc3Npb25BcGlVUkwoaG9zdCwgc2Vzc2lvbkFwaSksXG4gICAgc2Vzc2lvbkFwaTogaW5zdGFuY2VBcGlVUkwoaG9zdCwgaW5zdGFuY2VBcGkpLFxuICAgIGV4Y2x1ZGU6IGdldFJlZ0Fyck9yQ2FsbChjb25mLmV4Y2x1ZGUpIHx8IFtdLFxuICAgIGRlYnVnOiBjb25mLmRlYnVnID8/IGZhbHNlLFxuICAgIGVuYWJsZWQ6IGNvbmYuZW5hYmxlZCA/PyBmYWxzZVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBHZXRJbnN0YW5jZUVudmlyb25lbWVudChjb25mOkFwcGxpY2F0aW9uQ29uZil7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IGdldFN0cmluZ09yQ2FsbChjb25mLm5hbWUpLFxuICAgICAgdmVyc2lvbjogZ2V0U3RyaW5nT3JDYWxsKGNvbmYudmVyc2lvbiksXG4gICAgICBhZGRyZXNzOiB1bmRlZmluZWQsIC8vc2VydmVyIHNpZGVcbiAgICAgIGVudjogZ2V0U3RyaW5nT3JDYWxsKGNvbmYuZW52KSxcbiAgICAgIG9zOiBkZXRlY3RPcygpLFxuICAgICAgcmU6IGRldGVjdEJyb3dzZXIoKSxcbiAgICAgIHVzZXI6IHVuZGVmaW5lZCwgLy8gY2Fubm90IGdldCB1c2VyXG4gICAgICB0eXBlOiBcIkNMSUVOVFwiLFxuICAgICAgaW5zdGFudDogZGF0ZU5vdygpLFxuICAgICAgY29sbGVjdG9yOiBcImluc3BlY3QtbmctY29sbGVjdG9yLTAuMC4xXCJcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TnVtYmVyT3JDYWxsKG8/OiBudW1iZXIgfCAoKCkgPT4gbnVtYmVyKSk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiB0eXBlb2YgbyA9PT0gXCJmdW5jdGlvblwiID8gbygpIDogbztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFN0cmluZ09yQ2FsbChvPzogc3RyaW5nIHwgKCgpID0+IHN0cmluZykpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gdHlwZW9mIG8gPT09IFwiZnVuY3Rpb25cIiA/IG8oKSA6IG87XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZWdBcnJPckNhbGwobz86IFJlZ0V4cFtdIHwgKCgpID0+IFJlZ0V4cFtdKSk6IFJlZ0V4cFtdIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHR5cGVvZiBvID09PSBcImZ1bmN0aW9uXCIgPyBvKCkgOiBvO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGV0ZWN0QnJvd3NlcigpIHtcbiAgdHJ5IHtcbiAgICAgIGNvbnN0IGFnZW50ID0gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKVxuICAgICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgY2FzZSBhZ2VudC5pbmRleE9mKCdlZGdlJykgPiAtMTpcbiAgICAgICAgICAgICAgcmV0dXJuICdlZGdlJztcbiAgICAgICAgICBjYXNlIGFnZW50LmluZGV4T2YoJ29wcicpID4gLTE6XG4gICAgICAgICAgICAgIHJldHVybiAnb3BlcmEnO1xuICAgICAgICAgIGNhc2UgYWdlbnQuaW5kZXhPZignY2hyb21lJykgPiAtMTpcbiAgICAgICAgICAgICAgcmV0dXJuICdjaHJvbWUnO1xuICAgICAgICAgIGNhc2UgYWdlbnQuaW5kZXhPZignZmlyZWZveCcpID4gLTE6XG4gICAgICAgICAgICAgIHJldHVybiAnZmlyZWZveCc7XG4gICAgICAgICAgY2FzZSBhZ2VudC5pbmRleE9mKCdzYWZhcmknKSA+IC0xOlxuICAgICAgICAgICAgICByZXR1cm4gJ3NhZmFyaSc7XG4gICAgICB9XG4gIH1cbiAgY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRldGVjdE9zKCkge1xuICB0cnkge1xuICAgICAgbGV0IHZlcnNpb25NYXRjaCwgdmVyc2lvbjtcbiAgICAgIGNvbnN0IGFnZW50ID0gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKVxuICAgICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgY2FzZSAoL3dpbmRvd3MvLnRlc3QoYWdlbnQpKTpcbiAgICAgICAgICAgICAgdmVyc2lvbk1hdGNoID0gL3dpbmRvd3MgbnQgKFxcZCtcXC5cXGQrKS8uZXhlYyhhZ2VudCk7XG4gICAgICAgICAgICAgIHZlcnNpb24gPSB2ZXJzaW9uTWF0Y2ggPyB2ZXJzaW9uTWF0Y2hbMV0gOiAnVW5rbm93bic7XG4gICAgICAgICAgICAgIHJldHVybiBgV2luZG93cyAke3ZlcnNpb259YDtcbiAgICAgICAgICBjYXNlICgvbGludXgvLnRlc3QoYWdlbnQpKTpcbiAgICAgICAgICAgICAgcmV0dXJuICdMaW51eCc7XG5cbiAgICAgICAgICBjYXNlICgvbWFjaW50b3NoLy50ZXN0KGFnZW50KSk6XG4gICAgICAgICAgICAgIHZlcnNpb25NYXRjaCA9IC9tYWMgb3MgeCAoXFxkK1suX11cXGQrWy5fXVxcZCspLy5leGVjKGFnZW50KTtcbiAgICAgICAgICAgICAgdmVyc2lvbiA9IHZlcnNpb25NYXRjaCA/IHZlcnNpb25NYXRjaFsxXSA6ICdVbmtub3duJztcbiAgICAgICAgICAgICAgcmV0dXJuIGBNYWNPcyAke3ZlcnNpb259YFxuICAgICAgfVxuICB9XG4gIGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGUpO1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGluc3RhbmNlQXBpVVJMKGhvc3Q6c3RyaW5nLCBwYXRoOnN0cmluZyl7XG4gIHJldHVybiAgdG9VUkwoaG9zdCxwYXRoKTtcbn1cblxuZnVuY3Rpb24gc2Vzc2lvbkFwaVVSTChob3N0OnN0cmluZywgcGF0aDpzdHJpbmcpe1xuICByZXR1cm4gIHRvVVJMKGhvc3QscGF0aCk7XG59XG5cbmZ1bmN0aW9uIHRvVVJMKGhvc3Q6c3RyaW5nLCBwYXRoOnN0cmluZyApe1xuICAgcmV0dXJuIGhvc3QuZW5kc1dpdGgoU0xBU0gpIHx8IHBhdGguc3RhcnRzV2l0aChTTEFTSCkgPyBob3N0ICsgcGF0aCA6IFtob3N0LHBhdGhdLmpvaW4oU0xBU0gpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2hSZWdleCh2OiBzdHJpbmcgfCB1bmRlZmluZWQsICBuYW1lOiBzdHJpbmcsIHBhdHRlcm46IFJlZ0V4cCwpIHtcbiAgaWYodiAmJiBwYXR0ZXJuLmV4ZWModikpe1xuICAgICByZXR1cm4gdjtcbiAgfVxuICB0aHJvdyBgYmFkIHZhbHVlICR7bmFtZX09JHt2fSwgcGF0dGVybj0ke3BhdHRlcm59YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcXVpcmVQb3N0aXRpdmVWYWx1ZSh2OiBudW1iZXIgfCB1bmRlZmluZWQsIG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOm51bWJlcil7XG4gIGlmKHYgJiYgdiA+IDApIHtcbiAgICByZXR1cm4gdjtcbiAgfVxuICBpZih2ID09IHVuZGVmaW5lZCl7XG4gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgfVxuICB0aHJvdyBgYmFkIHZhbHVlICR7bmFtZX09ICR7dn0gPD0gMGAgIFxufVxuXG4iXX0=
@@ -0,0 +1,33 @@
1
+ import { Injectable } from "@angular/core";
2
+ import { NavigationEnd, NavigationStart } from "@angular/router";
3
+ import { logInspect } from "./util";
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/router";
6
+ import * as i2 from "./session-manager.service";
7
+ export class EventManagerService {
8
+ constructor(router, sessionManager) {
9
+ this.router = router;
10
+ this.sessionManager = sessionManager;
11
+ logInspect('initialize EventManagerService');
12
+ window.addEventListener('beforeunload', (event) => {
13
+ this.sessionManager.newSession(); //force
14
+ this.sessionManager.sendSessions();
15
+ });
16
+ this.router.events.subscribe(event => {
17
+ if (event instanceof NavigationStart) {
18
+ this.sessionManager.newSession(event.url);
19
+ }
20
+ if (event instanceof NavigationEnd) {
21
+ this.sessionManager.getCurrentSession().name = document.title;
22
+ this.sessionManager.getCurrentSession().location = document.URL;
23
+ }
24
+ });
25
+ }
26
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EventManagerService, deps: [{ token: i1.Router }, { token: i2.SessionManager }], target: i0.ɵɵFactoryTarget.Injectable }); }
27
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EventManagerService, providedIn: 'root' }); }
28
+ }
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EventManagerService, decorators: [{
30
+ type: Injectable,
31
+ args: [{ providedIn: 'root' }]
32
+ }], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.SessionManager }]; } });
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtbWFuYWdlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25ldGVtZS9pbnNwZWN0LW5nLWNvbGxlY3Rvci9zcmMvbGliL2V2ZW50LW1hbmFnZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUcsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDekUsT0FBTyxFQUFFLFVBQVUsRUFBQyxNQUFNLFFBQVEsQ0FBQzs7OztBQUtuQyxNQUFNLE9BQU8sbUJBQW1CO0lBRTVCLFlBQW9CLE1BQWMsRUFDZCxjQUE4QjtRQUQ5QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlDLFVBQVUsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBQzdDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxLQUF3QixFQUFRLEVBQUU7WUFDdkUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFBLFFBQVE7WUFDekMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNqQyxJQUFJLEtBQUssWUFBWSxlQUFlLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUM3QztZQUNELElBQUksS0FBSyxZQUFZLGFBQWEsRUFBRTtnQkFDaEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDO2dCQUM5RCxJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixFQUFFLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUM7YUFDbkU7UUFDTCxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7K0dBbEJRLG1CQUFtQjttSEFBbkIsbUJBQW1CLGNBRE4sTUFBTTs7NEZBQ25CLG1CQUFtQjtrQkFEL0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyAgSW5qZWN0YWJsZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIE5hdmlnYXRpb25TdGFydCwgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHsgbG9nSW5zcGVjdH0gZnJvbSBcIi4vdXRpbFwiO1xuaW1wb3J0IHsgU2Vzc2lvbk1hbmFnZXIgfSBmcm9tIFwiLi9zZXNzaW9uLW1hbmFnZXIuc2VydmljZVwiO1xuXG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pIFxuZXhwb3J0IGNsYXNzIEV2ZW50TWFuYWdlclNlcnZpY2UgIHtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBzZXNzaW9uTWFuYWdlcjogU2Vzc2lvbk1hbmFnZXIpIHtcbiAgICAgICAgbG9nSW5zcGVjdCgnaW5pdGlhbGl6ZSBFdmVudE1hbmFnZXJTZXJ2aWNlJyk7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdiZWZvcmV1bmxvYWQnLCAoZXZlbnQ6IEJlZm9yZVVubG9hZEV2ZW50KTogdm9pZCA9PiB7XG4gICAgICAgICAgICB0aGlzLnNlc3Npb25NYW5hZ2VyLm5ld1Nlc3Npb24oKTsvL2ZvcmNlIFxuICAgICAgICAgICAgdGhpcy5zZXNzaW9uTWFuYWdlci5zZW5kU2Vzc2lvbnMoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uTWFuYWdlci5uZXdTZXNzaW9uKGV2ZW50LnVybCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uTWFuYWdlci5nZXRDdXJyZW50U2Vzc2lvbigpLm5hbWUgPSBkb2N1bWVudC50aXRsZTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlc3Npb25NYW5hZ2VyLmdldEN1cnJlbnRTZXNzaW9uKCkubG9jYXRpb24gPSBkb2N1bWVudC5VUkw7IFxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH1cblxuIFxuXG4gICAgXG5cbiAgXG59XG5cbiJdfQ==
@@ -19,7 +19,6 @@ export class HttpInterceptorService {
19
19
  id = getReqid(event.headers);
20
20
  }
21
21
  }, error => {
22
- console.log(error);
23
22
  id = getReqid(error.headers);
24
23
  status = +error.status;
25
24
  exception = {
@@ -76,4 +75,4 @@ function getReqid(headers) {
76
75
  function sizeOf(body) {
77
76
  return body ? JSON.stringify(body).length : 0;
78
77
  }
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1pbnRlcmNlcHRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25ldGVtZS9pbnNwZWN0LW5nLWNvbGxlY3Rvci9zcmMvbGliL2h0dHAtaW50ZXJjZXB0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBd0QsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUcsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUU5QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDOzs7QUFJakMsTUFBTSxPQUFPLHNCQUFzQjtJQUUvQixZQUFvQixjQUE4QjtRQUE5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7SUFBSSxDQUFDLENBQUMsaUNBQWlDO0lBRXpGLFNBQVMsQ0FBQyxHQUFxQixFQUFFLElBQWlCO1FBQzlDLE1BQU0sS0FBSyxHQUFHLE9BQU8sRUFBRSxDQUFDO1FBQ3hCLElBQUksTUFBYyxFQUFFLFlBQVksR0FBUSxFQUFFLEVBQUUsU0FBd0IsQ0FBQztRQUNyRSxJQUFJLEVBQXFCLENBQUM7UUFDMUIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQzVCLENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDWCxJQUFJLEtBQUssWUFBWSxZQUFZLEVBQUU7Z0JBQy9CLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7Z0JBQ3ZCLFlBQVksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFBO2dCQUN6QixFQUFFLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNoQztRQUNMLENBQUMsRUFDRCxLQUFLLENBQUMsRUFBRTtZQUNKLE9BQU8s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SUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBIdHRwSW50ZXJjZXB0b3IsIEh0dHBFdmVudCwgSHR0cEhhbmRsZXIsIEh0dHBSZXF1ZXN0LCBIdHRwUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyB0YXAsIGZpbmFsaXplIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgeyBFeGNlcHRpb25JbmZvIH0gZnJvbSAnLi90cmFjZS5tb2RlbCc7XG5pbXBvcnQgeyBkYXRlTm93IH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCB7IFNlc3Npb25NYW5hZ2VyIH0gZnJvbSAnLi9zZXNzaW9uLW1hbmFnZXIuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgSHR0cEludGVyY2VwdG9yU2VydmljZSBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIFNlc3Npb25NYW5hZ2VyOiBTZXNzaW9uTWFuYWdlcikgeyB9IC8vIGNoYW5nZSB0aGlzIHRvIHNlc3Npb24gbWFuYWdlclxuXG4gICAgaW50ZXJjZXB0KHJlcTogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gZGF0ZU5vdygpO1xuICAgICAgICBsZXQgc3RhdHVzOiBudW1iZXIsIHJlc3BvbnNlQm9keTogYW55ID0gJycsIGV4Y2VwdGlvbjogRXhjZXB0aW9uSW5mbztcbiAgICAgICAgbGV0IGlkOiBzdHJpbmd8IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcSkucGlwZSh0YXAoXG4gICAgICAgICAgICAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSArZXZlbnQuc3RhdHVzO1xuICAgICAgICAgICAgICAgICAgICByZXNwb25zZUJvZHkgPSBldmVudC5ib2R5XG4gICAgICAgICAgICAgICAgICAgIGlkID0gZ2V0UmVxaWQoZXZlbnQuaGVhZGVycyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcilcbiAgICAgICAgICAgICAgICBpZCA9IGdldFJlcWlkKGVycm9yLmhlYWRlcnMpO1xuICAgICAgICAgICAgICAgIHN0YXR1cyA9ICtlcnJvci5zdGF0dXM7XG4gICAgICAgICAgICAgICAgZXhjZXB0aW9uID0ge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBlcnJvci5lcnJvci5lcnJvcixcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogZXJyb3IuZXJyb3IubWVzc2FnZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICksIGZpbmFsaXplKCgpID0+IHtcblxuICAgICAgICAgICAgY29uc3QgdXJsID0gdG9IcmVmKHJlcS51cmxXaXRoUGFyYW1zKTtcbiAgICAgICAgICAgIHRoaXMuU2Vzc2lvbk1hbmFnZXIuZ2V0Q3VycmVudFNlc3Npb24oKS5yZXN0UmVxdWVzdHMucHVzaCh7XG4gICAgICAgICAgICAgICAgaWQ6IGlkLFxuICAgICAgICAgICAgICAgIG1ldGhvZDogcmVxLm1ldGhvZCxcbiAgICAgICAgICAgICAgICBwcm90b2NvbDogdXJsLnByb3RvY29sLnNsaWNlKDAsIC0xKSxcbiAgICAgICAgICAgICAgICBob3N0OiBleGN0cmFjdEhvc3QodXJsLmhvc3QpLFxuICAgICAgICAgICAgICAgIHBvcnQ6ICt1cmwucG9ydCxcbiAgICAgICAgICAgICAgICBwYXRoOiB1cmwucGF0aG5hbWUsXG4gICAgICAgICAgICAgICAgcXVlcnk6IHVybC5zZWFyY2guc2xpY2UoMSwgdXJsLnNlYXJjaC5sZW5ndGgpLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRUeXBlOiByZXEucmVzcG9uc2VUeXBlLFxuICAgICAgICAgICAgICAgIGF1dGhTY2hlbWU6IGV4dHJhY3RBdXRoU2NoZW1lKHJlcS5oZWFkZXJzKSxcbiAgICAgICAgICAgICAgICBzdGF0dXM6ICtzdGF0dXMsXG4gICAgICAgICAgICAgICAgaW5EYXRhU2l6ZTogc2l6ZU9mKHJlc3BvbnNlQm9keSksXG4gICAgICAgICAgICAgICAgb3VEYXRhU2l6ZTogc2l6ZU9mKHJlcS5ib2R5KSxcbiAgICAgICAgICAgICAgICBzdGFydDogc3RhcnQsXG4gICAgICAgICAgICAgICAgZW5kOiBkYXRlTm93KCksXG4gICAgICAgICAgICAgICAgZXhjZXB0aW9uOiBleGNlcHRpb25cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KSk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiB0b0hyZWYodXJsOiBzdHJpbmcpOiBIVE1MQW5jaG9yRWxlbWVudCB7XG4gICAgY29uc3QgaHJlZiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICBocmVmLnNldEF0dHJpYnV0ZSgnaHJlZicsIHVybCk7XG4gICAgcmV0dXJuIGhyZWY7XG59XG5cbmZ1bmN0aW9uIGV4Y3RyYWN0SG9zdChwYXRoOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwb3J0cmVnZXggPSAvOlxcZCsvO1xuICAgIHJldHVybiBwYXRoLnJlcGxhY2UocG9ydHJlZ2V4LCAnJylcbn1cblxuZnVuY3Rpb24gZXh0cmFjdEF1dGhTY2hlbWUoaGVhZGVyczogYW55KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gaGVhZGVycy5oYXMoJ2F1dGhvcml6YXRpb24nKVxuICAgICAgICA/IGhlYWRlcnMuZ2V0KCdhdXRob3JpemF0aW9uJykubWF0Y2goL14oXFx3KykgLyk/LmF0KDEpXG4gICAgICAgIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBnZXRSZXFpZChoZWFkZXJzOmFueSk6c3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gaGVhZGVycy5oYXMoJ3gtdHJhY2VydCcpXG4gICAgICAgID8gaGVhZGVycy5nZXQoJ3gtdHJhY2VydCcpXG4gICAgICAgIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBzaXplT2YoYm9keTogYW55KTogbnVtYmVyIHtcbiAgICByZXR1cm4gYm9keSA/IEpTT04uc3RyaW5naWZ5KGJvZHkpLmxlbmd0aCA6IDA7XG59XG4iXX0=
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1pbnRlcmNlcHRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25ldGVtZS9pbnNwZWN0LW5nLWNvbGxlY3Rvci9zcmMvbGliL2h0dHAtaW50ZXJjZXB0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBd0QsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUcsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUU5QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDOzs7QUFJakMsTUFBTSxPQUFPLHNCQUFzQjtJQUUvQixZQUFvQixjQUE4QjtRQUE5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7SUFBSSxDQUFDLENBQUMsaUNBQWlDO0lBRXpGLFNBQVMsQ0FBQyxHQUFxQixFQUFFLElBQWlCO1FBQzlDLE1BQU0sS0FBSyxHQUFHLE9BQU8sRUFBRSxDQUFDO1FBQ3hCLElBQUksTUFBYyxFQUFFLFlBQVksR0FBUSxFQUFFLEVBQUUsU0FBd0IsQ0FBQztRQUNyRSxJQUFJLEVBQXFCLENBQUM7UUFDMUIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQzVCLENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDWCxJQUFJLEtBQUssWUFBWSxZQUFZLEVBQUU7Z0JBQy9CLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7Z0JBQ3ZCLFlBQVksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFBO2dCQUN6QixFQUFFLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNoQztRQUNMLENBQUMsRUFDRCxLQUFLLENBQUMsRUFBRTtZQUNKLEVBQUUs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QUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSHR0cEludGVyY2VwdG9yLCBIdHRwRXZlbnQsIEh0dHBIYW5kbGVyLCBIdHRwUmVxdWVzdCwgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgdGFwLCBmaW5hbGl6ZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHsgRXhjZXB0aW9uSW5mbyB9IGZyb20gJy4vdHJhY2UubW9kZWwnO1xuaW1wb3J0IHsgZGF0ZU5vdyB9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgeyBTZXNzaW9uTWFuYWdlciB9IGZyb20gJy4vc2Vzc2lvbi1tYW5hZ2VyLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEh0dHBJbnRlcmNlcHRvclNlcnZpY2UgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBTZXNzaW9uTWFuYWdlcjogU2Vzc2lvbk1hbmFnZXIpIHsgfSAvLyBjaGFuZ2UgdGhpcyB0byBzZXNzaW9uIG1hbmFnZXJcblxuICAgIGludGVyY2VwdChyZXE6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgICAgICBjb25zdCBzdGFydCA9IGRhdGVOb3coKTtcbiAgICAgICAgbGV0IHN0YXR1czogbnVtYmVyLCByZXNwb25zZUJvZHk6IGFueSA9ICcnLCBleGNlcHRpb246IEV4Y2VwdGlvbkluZm87XG4gICAgICAgIGxldCBpZDogc3RyaW5nfCB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpLnBpcGUodGFwKFxuICAgICAgICAgICAgKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gK2V2ZW50LnN0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VCb2R5ID0gZXZlbnQuYm9keVxuICAgICAgICAgICAgICAgICAgICBpZCA9IGdldFJlcWlkKGV2ZW50LmhlYWRlcnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgaWQgPSBnZXRSZXFpZChlcnJvci5oZWFkZXJzKTtcbiAgICAgICAgICAgICAgICBzdGF0dXMgPSArZXJyb3Iuc3RhdHVzO1xuICAgICAgICAgICAgICAgIGV4Y2VwdGlvbiA9IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogZXJyb3IuZXJyb3IuZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yLmVycm9yLm1lc3NhZ2VcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICApLCBmaW5hbGl6ZSgoKSA9PiB7XG5cbiAgICAgICAgICAgIGNvbnN0IHVybCA9IHRvSHJlZihyZXEudXJsV2l0aFBhcmFtcyk7XG4gICAgICAgICAgICB0aGlzLlNlc3Npb25NYW5hZ2VyLmdldEN1cnJlbnRTZXNzaW9uKCkucmVzdFJlcXVlc3RzLnB1c2goe1xuICAgICAgICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICAgICAgICBtZXRob2Q6IHJlcS5tZXRob2QsXG4gICAgICAgICAgICAgICAgcHJvdG9jb2w6IHVybC5wcm90b2NvbC5zbGljZSgwLCAtMSksXG4gICAgICAgICAgICAgICAgaG9zdDogZXhjdHJhY3RIb3N0KHVybC5ob3N0KSxcbiAgICAgICAgICAgICAgICBwb3J0OiArdXJsLnBvcnQsXG4gICAgICAgICAgICAgICAgcGF0aDogdXJsLnBhdGhuYW1lLFxuICAgICAgICAgICAgICAgIHF1ZXJ5OiB1cmwuc2VhcmNoLnNsaWNlKDEsIHVybC5zZWFyY2gubGVuZ3RoKSxcbiAgICAgICAgICAgICAgICBjb250ZW50VHlwZTogcmVxLnJlc3BvbnNlVHlwZSxcbiAgICAgICAgICAgICAgICBhdXRoU2NoZW1lOiBleHRyYWN0QXV0aFNjaGVtZShyZXEuaGVhZGVycyksXG4gICAgICAgICAgICAgICAgc3RhdHVzOiArc3RhdHVzLFxuICAgICAgICAgICAgICAgIGluRGF0YVNpemU6IHNpemVPZihyZXNwb25zZUJvZHkpLFxuICAgICAgICAgICAgICAgIG91RGF0YVNpemU6IHNpemVPZihyZXEuYm9keSksXG4gICAgICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0LFxuICAgICAgICAgICAgICAgIGVuZDogZGF0ZU5vdygpLFxuICAgICAgICAgICAgICAgIGV4Y2VwdGlvbjogZXhjZXB0aW9uXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSkpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gdG9IcmVmKHVybDogc3RyaW5nKTogSFRNTEFuY2hvckVsZW1lbnQge1xuICAgIGNvbnN0IGhyZWYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgaHJlZi5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCB1cmwpO1xuICAgIHJldHVybiBocmVmO1xufVxuXG5mdW5jdGlvbiBleGN0cmFjdEhvc3QocGF0aDogc3RyaW5nKSB7XG4gICAgY29uc3QgcG9ydHJlZ2V4ID0gLzpcXGQrLztcbiAgICByZXR1cm4gcGF0aC5yZXBsYWNlKHBvcnRyZWdleCwgJycpXG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RBdXRoU2NoZW1lKGhlYWRlcnM6IGFueSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGhlYWRlcnMuaGFzKCdhdXRob3JpemF0aW9uJylcbiAgICAgICAgPyBoZWFkZXJzLmdldCgnYXV0aG9yaXphdGlvbicpLm1hdGNoKC9eKFxcdyspIC8pPy5hdCgxKVxuICAgICAgICA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZ2V0UmVxaWQoaGVhZGVyczphbnkpOnN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGhlYWRlcnMuaGFzKCd4LXRyYWNlcnQnKVxuICAgICAgICA/IGhlYWRlcnMuZ2V0KCd4LXRyYWNlcnQnKVxuICAgICAgICA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gc2l6ZU9mKGJvZHk6IGFueSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGJvZHkgPyBKU09OLnN0cmluZ2lmeShib2R5KS5sZW5ndGggOiAwO1xufVxuIl19
@@ -1,47 +1,38 @@
1
1
  import { NgModule, APP_INITIALIZER } from '@angular/core';
2
2
  import { HTTP_INTERCEPTORS, } from '@angular/common/http';
3
- import { GetInstanceEnvironement, setConfig, validateAndGetConfig } from './configuration';
3
+ import { logInspect } from './util';
4
+ import { NavigationEnd, NavigationStart, Router } from '@angular/router';
5
+ import { GetInstanceEnvironement, validateAndGetConfig } from './configuration';
4
6
  import { HttpInterceptorService } from './http-interceptor.service';
5
7
  import { SessionManager } from './session-manager.service';
6
- import { RouteTracerService } from './route-tracer.service';
7
8
  import * as i0 from "@angular/core";
8
9
  export class NgCollectorModule {
9
10
  static forRoot(configuration) {
10
- try {
11
- let conf = setConfig(configuration);
12
- if (conf.enabled) {
13
- let config = validateAndGetConfig(conf);
14
- let instance = GetInstanceEnvironement(conf);
15
- console.log(conf);
11
+ if (configuration?.enabled) {
12
+ try {
13
+ let config = validateAndGetConfig(configuration);
14
+ let instance = GetInstanceEnvironement(configuration);
15
+ console.log(config);
16
+ console.log(instance);
16
17
  return {
17
18
  ngModule: NgCollectorModule,
18
19
  providers: [
19
20
  SessionManager,
20
- RouteTracerService,
21
- { provide: APP_INITIALIZER, useFactory: initializeRoutingEvents, deps: [SessionManager], multi: true },
21
+ //EventManagerService,
22
+ { provide: APP_INITIALIZER, useFactory: initializeEvents, deps: [Router, SessionManager], multi: true },
22
23
  { provide: HTTP_INTERCEPTORS, useClass: HttpInterceptorService, multi: true },
23
24
  { provide: 'instance', useValue: instance },
24
25
  { provide: 'config', useValue: config }
25
26
  ]
26
27
  };
27
28
  }
28
- }
29
- catch (e) {
30
- console.warn('invalid Configuration, Ng-collector is disabled because', e);
29
+ catch (e) {
30
+ console.warn('invalid Configuration, Ng-collector is disabled because', e);
31
+ }
31
32
  }
32
33
  return {
33
34
  ngModule: NgCollectorModule
34
35
  };
35
- /*if (configuration?.enabled
36
- && matchRegex(host, HOST_PATERN)
37
- && matchRegex(getStringOrCall(configuration?.sessionApi), PATH_PATERN)
38
- && matchRegex(getStringOrCall(configuration?.instanceApi), PATH_PATERN)) {
39
- if(!requirePostitiveValue(getNumberOrCall(configuration?.delay),"delay") ||
40
- !requirePostitiveValue(getNumberOrCall(configuration?.bufferMaxSize),"bufferMaxSize") ){
41
- console.warn('invalid Configuration, Ng-collector is disabled');
42
- return {ngModule: NgCollectorModule}
43
- }
44
- }*/
45
36
  }
46
37
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgCollectorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
47
38
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: NgCollectorModule }); }
@@ -50,9 +41,22 @@ export class NgCollectorModule {
50
41
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgCollectorModule, decorators: [{
51
42
  type: NgModule
52
43
  }] });
53
- export function initializeRoutingEvents(sessionManager) {
44
+ export function initializeEvents(router, sessionManager) {
54
45
  return () => {
55
- sessionManager.initialize();
46
+ logInspect('initialize routing events listeners');
47
+ window.addEventListener('beforeunload', (event) => {
48
+ sessionManager.newSession(); //force
49
+ sessionManager.sendSessions();
50
+ });
51
+ router.events.subscribe(event => {
52
+ if (event instanceof NavigationStart) {
53
+ sessionManager.newSession(event.url);
54
+ }
55
+ if (event instanceof NavigationEnd) {
56
+ sessionManager.getCurrentSession().name = document.title;
57
+ sessionManager.getCurrentSession().location = document.URL;
58
+ }
59
+ });
56
60
  };
57
61
  }
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctY29sbGVjdG9yLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29uZXRlbWUvaW5zcGVjdC1uZy1jb2xsZWN0b3Ivc3JjL2xpYi9uZy1jb2xsZWN0b3IubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUF1QixNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsaUJBQWlCLEdBQUcsTUFBTSxzQkFBc0IsQ0FBQztBQUsxRCxPQUFPLEVBQW1CLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFLNUQsTUFBTSxPQUFPLGlCQUFpQjtJQUU1QixNQUFNLENBQUMsT0FBTyxDQUFDLGFBQThCO1FBQzNDLElBQUc7WUFDRCxJQUFJLElBQUksR0FBRyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDcEMsSUFBRyxJQUFJLENBQUMsT0FBTyxFQUFDO2dCQUNkLElBQUksTUFBTSxHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN4QyxJQUFJLFFBQVEsR0FBRyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDN0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtnQkFDakIsT0FBTztvQkFDTCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixTQUFTLEVBQUU7d0JBQ1QsY0FBYzt3QkFDZCxrQkFBa0I7d0JBQ2xCLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsdUJBQXVCLEVBQUUsSUFBSSxFQUFFLENBQUMsY0FBYyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTt3QkFDdEcsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7d0JBQzdFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFO3dCQUMzQyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRTtxQkFDeEM7aUJBQ0YsQ0FBQzthQUNIO1NBRUY7UUFBQSxPQUFNLENBQUMsRUFBQztZQUNQLE9BQU8sQ0FBQyxJQUFJLENBQUMseURBQXlELEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDNUU7UUFDRCxPQUFPO1lBQ0wsUUFBUSxFQUFFLGlCQUFpQjtTQUM1QixDQUFBO1FBRUQ7Ozs7Ozs7OztXQVNHO0lBQ0wsQ0FBQzsrR0F2Q1UsaUJBQWlCO2dIQUFqQixpQkFBaUI7Z0hBQWpCLGlCQUFpQjs7NEZBQWpCLGlCQUFpQjtrQkFEN0IsUUFBUTs7QUEyQ1QsTUFBTSxVQUFVLHVCQUF1QixDQUFDLGNBQThCO0lBRXBFLE9BQU8sR0FBRyxFQUFFO1FBQ04sY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ2xDLENBQUMsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgQVBQX0lOSVRJQUxJWkVSLCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIVFRQX0lOVEVSQ0VQVE9SUywgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmltcG9ydCB7IGxvZ0luc3BlY3QgfSBmcm9tICcuL3V0aWwnO1xuXG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBOYXZpZ2F0aW9uU3RhcnQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkNvbmYsIEdldEluc3RhbmNlRW52aXJvbmVtZW50LCBzZXRDb25maWcsIHZhbGlkYXRlQW5kR2V0Q29uZmlnIH0gZnJvbSAnLi9jb25maWd1cmF0aW9uJztcbmltcG9ydCB7IEh0dHBJbnRlcmNlcHRvclNlcnZpY2UgfSBmcm9tICcuL2h0dHAtaW50ZXJjZXB0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBTZXNzaW9uTWFuYWdlciB9IGZyb20gJy4vc2Vzc2lvbi1tYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUm91dGVUcmFjZXJTZXJ2aWNlIH0gZnJvbSAnLi9yb3V0ZS10cmFjZXIuc2VydmljZSc7XG5cblxuXG5ATmdNb2R1bGUoKVxuZXhwb3J0IGNsYXNzIE5nQ29sbGVjdG9yTW9kdWxlICB7XG5cbiAgc3RhdGljIGZvclJvb3QoY29uZmlndXJhdGlvbjogQXBwbGljYXRpb25Db25mKTogTW9kdWxlV2l0aFByb3ZpZGVyczxOZ0NvbGxlY3Rvck1vZHVsZT4ge1xuICAgIHRyeXtcbiAgICAgIGxldCBjb25mID0gc2V0Q29uZmlnKGNvbmZpZ3VyYXRpb24pO1xuICAgICAgaWYoY29uZi5lbmFibGVkKXtcbiAgICAgICAgbGV0IGNvbmZpZyA9IHZhbGlkYXRlQW5kR2V0Q29uZmlnKGNvbmYpO1xuICAgICAgICBsZXQgaW5zdGFuY2UgPSBHZXRJbnN0YW5jZUVudmlyb25lbWVudChjb25mKTtcbiAgICAgICAgY29uc29sZS5sb2coY29uZilcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBuZ01vZHVsZTogTmdDb2xsZWN0b3JNb2R1bGUsXG4gICAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAgICBTZXNzaW9uTWFuYWdlciwgLy8gdG8gYmUgcmVtb3ZlZCAgYW5kIGFkZCBzZXNzaW9uIG1hbmFnZXIgaW5zdGVhZCBcbiAgICAgICAgICAgIFJvdXRlVHJhY2VyU2VydmljZSxcbiAgICAgICAgICAgIHsgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLCB1c2VGYWN0b3J5OiBpbml0aWFsaXplUm91dGluZ0V2ZW50cywgZGVwczogW1Nlc3Npb25NYW5hZ2VyXSwgbXVsdGk6IHRydWUgfSxcbiAgICAgICAgICAgIHsgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsIHVzZUNsYXNzOiBIdHRwSW50ZXJjZXB0b3JTZXJ2aWNlLCBtdWx0aTogdHJ1ZSB9LFxuICAgICAgICAgICAgeyBwcm92aWRlOiAnaW5zdGFuY2UnLCB1c2VWYWx1ZTogaW5zdGFuY2UgfSxcbiAgICAgICAgICAgIHsgcHJvdmlkZTogJ2NvbmZpZycsIHVzZVZhbHVlOiBjb25maWcgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgIH1jYXRjaChlKXtcbiAgICAgIGNvbnNvbGUud2FybignaW52YWxpZCBDb25maWd1cmF0aW9uLCBOZy1jb2xsZWN0b3IgaXMgZGlzYWJsZWQgYmVjYXVzZScsIGUpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IE5nQ29sbGVjdG9yTW9kdWxlXG4gICAgfVxuXG4gICAgLyppZiAoY29uZmlndXJhdGlvbj8uZW5hYmxlZFxuICAgICAgICAmJiBtYXRjaFJlZ2V4KGhvc3QsIEhPU1RfUEFURVJOKVxuICAgICAgICAmJiBtYXRjaFJlZ2V4KGdldFN0cmluZ09yQ2FsbChjb25maWd1cmF0aW9uPy5zZXNzaW9uQXBpKSwgUEFUSF9QQVRFUk4pXG4gICAgICAgICYmIG1hdGNoUmVnZXgoZ2V0U3RyaW5nT3JDYWxsKGNvbmZpZ3VyYXRpb24/Lmluc3RhbmNlQXBpKSwgUEFUSF9QQVRFUk4pKSB7XG4gICAgICAgaWYoIXJlcXVpcmVQb3N0aXRpdmVWYWx1ZShnZXROdW1iZXJPckNhbGwoY29uZmlndXJhdGlvbj8uZGVsYXkpLFwiZGVsYXlcIikgfHxcbiAgICAgICAgICAhcmVxdWlyZVBvc3RpdGl2ZVZhbHVlKGdldE51bWJlck9yQ2FsbChjb25maWd1cmF0aW9uPy5idWZmZXJNYXhTaXplKSxcImJ1ZmZlck1heFNpemVcIikgKXtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignaW52YWxpZCBDb25maWd1cmF0aW9uLCBOZy1jb2xsZWN0b3IgaXMgZGlzYWJsZWQnKTtcbiAgICAgICAgICByZXR1cm4ge25nTW9kdWxlOiBOZ0NvbGxlY3Rvck1vZHVsZX1cbiAgICAgICB9ICBcbiAgICB9Ki9cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdGlhbGl6ZVJvdXRpbmdFdmVudHMoc2Vzc2lvbk1hbmFnZXI6IFNlc3Npb25NYW5hZ2VyKSB7IFxuICBcbiAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgc2Vzc2lvbk1hbmFnZXIuaW5pdGlhbGl6ZSgpO1xuICB9XG59XG5cblxuIl19
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctY29sbGVjdG9yLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29uZXRlbWUvaW5zcGVjdC1uZy1jb2xsZWN0b3Ivc3JjL2xpYi9uZy1jb2xsZWN0b3IubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUF1QixNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsaUJBQWlCLEdBQUcsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pFLE9BQU8sRUFBbUIsdUJBQXVCLEVBQWEsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBTzNELE1BQU0sT0FBTyxpQkFBaUI7SUFFNUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxhQUE4QjtRQUMzQyxJQUFHLGFBQWEsRUFBRSxPQUFPLEVBQUM7WUFDeEIsSUFBRztnQkFDRCxJQUFJLE1BQU0sR0FBRyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDakQsSUFBSSxRQUFRLEdBQUcsdUJBQXVCLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBRXRELE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUE7Z0JBQ25CLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUE7Z0JBQ3JCLE9BQU87b0JBQ0wsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsU0FBUyxFQUFFO3dCQUNULGNBQWM7d0JBQ2Qsc0JBQXNCO3dCQUN0QixFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO3dCQUN2RyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTt3QkFDN0UsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUU7d0JBQzNDLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFO3FCQUN4QztpQkFDRixDQUFDO2FBRUg7WUFBQSxPQUFNLENBQUMsRUFBQztnQkFDUCxPQUFPLENBQUMsSUFBSSxDQUFDLHlEQUF5RCxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQzVFO1NBQ0Y7UUFDRCxPQUFPO1lBQ0wsUUFBUSxFQUFFLGlCQUFpQjtTQUM1QixDQUFBO0lBQ0gsQ0FBQzsrR0E3QlUsaUJBQWlCO2dIQUFqQixpQkFBaUI7Z0hBQWpCLGlCQUFpQjs7NEZBQWpCLGlCQUFpQjtrQkFEN0IsUUFBUTs7QUFrQ1QsTUFBTSxVQUFVLGdCQUFnQixDQUFDLE1BQWEsRUFBRSxjQUE4QjtJQUM1RSxPQUFPLEdBQUcsRUFBRTtRQUNWLFVBQVUsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxLQUF3QixFQUFRLEVBQUU7WUFDdkUsY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUEsUUFBUTtZQUNwQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7UUFDSCxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM1QixJQUFJLEtBQUssWUFBWSxlQUFlLEVBQUU7Z0JBQ2xDLGNBQWMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3hDO1lBQ0QsSUFBSSxLQUFLLFlBQVksYUFBYSxFQUFFO2dCQUNoQyxjQUFjLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQztnQkFDekQsY0FBYyxDQUFDLGlCQUFpQixFQUFFLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUM7YUFDOUQ7UUFDTCxDQUFDLENBQUMsQ0FBQTtJQUNSLENBQUMsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgQVBQX0lOSVRJQUxJWkVSLCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIVFRQX0lOVEVSQ0VQVE9SUywgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBsb2dJbnNwZWN0IH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIE5hdmlnYXRpb25TdGFydCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uQ29uZiwgR2V0SW5zdGFuY2VFbnZpcm9uZW1lbnQsIHNldENvbmZpZywgdmFsaWRhdGVBbmRHZXRDb25maWcgfSBmcm9tICcuL2NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgSHR0cEludGVyY2VwdG9yU2VydmljZSB9IGZyb20gJy4vaHR0cC1pbnRlcmNlcHRvci5zZXJ2aWNlJztcbmltcG9ydCB7IFNlc3Npb25NYW5hZ2VyIH0gZnJvbSAnLi9zZXNzaW9uLW1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBFdmVudE1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi9ldmVudC1tYW5hZ2VyLnNlcnZpY2UnO1xuXG5cblxuXG5ATmdNb2R1bGUoKVxuZXhwb3J0IGNsYXNzIE5nQ29sbGVjdG9yTW9kdWxlICB7XG5cbiAgc3RhdGljIGZvclJvb3QoY29uZmlndXJhdGlvbjogQXBwbGljYXRpb25Db25mKTogTW9kdWxlV2l0aFByb3ZpZGVyczxOZ0NvbGxlY3Rvck1vZHVsZT4ge1xuICAgIGlmKGNvbmZpZ3VyYXRpb24/LmVuYWJsZWQpe1xuICAgICAgdHJ5e1xuICAgICAgICBsZXQgY29uZmlnID0gdmFsaWRhdGVBbmRHZXRDb25maWcoY29uZmlndXJhdGlvbik7XG4gICAgICAgIGxldCBpbnN0YW5jZSA9IEdldEluc3RhbmNlRW52aXJvbmVtZW50KGNvbmZpZ3VyYXRpb24pO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKGNvbmZpZylcbiAgICAgICAgY29uc29sZS5sb2coaW5zdGFuY2UpXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbmdNb2R1bGU6IE5nQ29sbGVjdG9yTW9kdWxlLFxuICAgICAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICAgICAgU2Vzc2lvbk1hbmFnZXIsIFxuICAgICAgICAgICAgLy9FdmVudE1hbmFnZXJTZXJ2aWNlLFxuICAgICAgICAgICAgeyBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsIHVzZUZhY3Rvcnk6IGluaXRpYWxpemVFdmVudHMsIGRlcHM6IFtSb3V0ZXIsIFNlc3Npb25NYW5hZ2VyXSwgbXVsdGk6IHRydWUgfSxcbiAgICAgICAgICAgIHsgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsIHVzZUNsYXNzOiBIdHRwSW50ZXJjZXB0b3JTZXJ2aWNlLCBtdWx0aTogdHJ1ZSB9LFxuICAgICAgICAgICAgeyBwcm92aWRlOiAnaW5zdGFuY2UnLCB1c2VWYWx1ZTogaW5zdGFuY2UgfSxcbiAgICAgICAgICAgIHsgcHJvdmlkZTogJ2NvbmZpZycsIHVzZVZhbHVlOiBjb25maWcgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcbiAgICAgICAgXG4gICAgICB9Y2F0Y2goZSl7XG4gICAgICAgIGNvbnNvbGUud2FybignaW52YWxpZCBDb25maWd1cmF0aW9uLCBOZy1jb2xsZWN0b3IgaXMgZGlzYWJsZWQgYmVjYXVzZScsIGUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IE5nQ29sbGVjdG9yTW9kdWxlXG4gICAgfVxuICB9XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVFdmVudHMocm91dGVyOlJvdXRlciwgc2Vzc2lvbk1hbmFnZXI6IFNlc3Npb25NYW5hZ2VyKSB7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgbG9nSW5zcGVjdCgnaW5pdGlhbGl6ZSByb3V0aW5nIGV2ZW50cyBsaXN0ZW5lcnMnKTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2JlZm9yZXVubG9hZCcsIChldmVudDogQmVmb3JlVW5sb2FkRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIHNlc3Npb25NYW5hZ2VyLm5ld1Nlc3Npb24oKTsvL2ZvcmNlIFxuICAgICAgICAgICAgc2Vzc2lvbk1hbmFnZXIuc2VuZFNlc3Npb25zKCk7XG4gICAgICAgIH0pO1xuICAgICAgICByb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICAgICAgICAgICAgICBzZXNzaW9uTWFuYWdlci5uZXdTZXNzaW9uKGV2ZW50LnVybCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgICAgICAgICAgc2Vzc2lvbk1hbmFnZXIuZ2V0Q3VycmVudFNlc3Npb24oKS5uYW1lID0gZG9jdW1lbnQudGl0bGU7XG4gICAgICAgICAgICAgICAgc2Vzc2lvbk1hbmFnZXIuZ2V0Q3VycmVudFNlc3Npb24oKS5sb2NhdGlvbiA9IGRvY3VtZW50LlVSTDsgXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gIH1cbn1cblxuXG4iXX0=
@@ -1,18 +1,14 @@
1
1
  import { Inject, Injectable } from '@angular/core';
2
2
  import { BehaviorSubject, from, interval, of, tap } from 'rxjs';
3
3
  import { dateNow, logInspect, prettySessionFormat } from './util';
4
- import { NavigationEnd, NavigationStart } from '@angular/router';
5
4
  import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/router";
7
5
  export class SessionManager {
8
- constructor(router, config, instance) {
9
- this.router = router;
6
+ constructor(config, instance) {
10
7
  this.sessionQueue = [];
11
8
  this.sessionSendAttempts = 0;
12
9
  this.InstanceEnvSendAttempts = 0;
13
10
  this.sendSessionfinished = true;
14
11
  this.sendInstanceEnvFinished = true;
15
- console.log('good');
16
12
  this.config = config;
17
13
  this.instanceEnvironment = instance;
18
14
  this.scheduledSessionSender = interval(this.delay)
@@ -22,23 +18,7 @@ export class SessionManager {
22
18
  }
23
19
  }))
24
20
  .subscribe();
25
- }
26
- initialize() {
27
- console.log('pefoj');
28
- logInspect('initialize');
29
- window.addEventListener('beforeunload', (event) => {
30
- this.newSession(); //force
31
- this.sendSessions();
32
- });
33
- this.router.events.subscribe(event => {
34
- if (event instanceof NavigationStart) {
35
- this.newSession(event.url);
36
- }
37
- if (event instanceof NavigationEnd) {
38
- this.getCurrentSession().name = document.title;
39
- this.getCurrentSession().location = document.URL;
40
- }
41
- });
21
+ logInspect('SessionManager initialized');
42
22
  }
43
23
  addSessions(sessions) {
44
24
  this.sessionQueue.push(sessions);
@@ -151,17 +131,17 @@ export class SessionManager {
151
131
  getCurrentSession() {
152
132
  return this.currentSession;
153
133
  }
154
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SessionManager, deps: [{ token: i1.Router }, { token: 'config' }, { token: 'instance' }], target: i0.ɵɵFactoryTarget.Injectable }); }
134
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SessionManager, deps: [{ token: 'config' }, { token: 'instance' }], target: i0.ɵɵFactoryTarget.Injectable }); }
155
135
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SessionManager, providedIn: 'root' }); }
156
136
  }
157
137
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SessionManager, decorators: [{
158
138
  type: Injectable,
159
139
  args: [{ providedIn: 'root' }]
160
- }], ctorParameters: function () { return [{ type: i1.Router }, { type: undefined, decorators: [{
140
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
161
141
  type: Inject,
162
142
  args: ['config']
163
143
  }] }, { type: undefined, decorators: [{
164
144
  type: Inject,
165
145
  args: ['instance']
166
146
  }] }]; } });
167
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1tYW5hZ2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmV0ZW1lL2luc3BlY3QtbmctY29sbGVjdG9yL3NyYy9saWIvc2Vzc2lvbi1tYW5hZ2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFFL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBZ0IsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxPQUFPLEVBQUMsVUFBVSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRWpFLE9BQU8sRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFVLE1BQU0saUJBQWlCLENBQUM7OztBQUt6RSxNQUFNLE9BQU8sY0FBYztJQWV2QixZQUFzQixNQUFjLEVBQ0osTUFBcUIsRUFDbkIsUUFBNkI7UUFGekMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQVZwQyxpQkFBWSxHQUFpQixFQUFFLENBQUM7UUFDaEMsd0JBQW1CLEdBQVcsQ0FBQyxDQUFBO1FBQy9CLDRCQUF1QixHQUFXLENBQUMsQ0FBQztRQUVwQyx3QkFBbUIsR0FBVSxJQUFJLENBQUM7UUFDbEMsNEJBQXVCLEdBQVksSUFBSSxDQUFDO1FBU3BDLE9BQU8sQ0FBQyxHQUFHLENBQUUsTUFBTSxDQUFDLENBQUE7UUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFFBQVEsQ0FBQztRQUNwQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDakQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFFLEVBQUU7WUFDVixJQUFHLElBQUksQ0FBQyxtQkFB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QUFDLFFBQVE7OzBCQUNmLE1BQU07MkJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT25EZXN0cm95ICB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW5zdGFuY2VFbnZpcm9ubWVudCwgTWFpblNlc3Npb24gfSBmcm9tICcuL3RyYWNlLm1vZGVsJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZnJvbSwgaW50ZXJ2YWwsIE9ic2VydmFibGUsIG9mLCBTdWJzY3JpcHRpb24sIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGF0ZU5vdyxsb2dJbnNwZWN0LCBwcmV0dHlTZXNzaW9uRm9ybWF0IH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCB7IFRlY2huaWNhbENvbmYgfSBmcm9tICcuL2NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgTmF2aWdhdGlvblN0YXJ0LCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBTZXNzaW9uTWFuYWdlciBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgbWF4QnVmZmVyU2l6ZSE6IG51bWJlcjtcbiAgICBkZWxheSE6bnVtYmVyXG4gICAgaW5zdGFuY2VFbnZpcm9ubWVudCA6IEluc3RhbmNlRW52aXJvbm1lbnQ7XG4gICAgc2NoZWR1bGVkU2Vzc2lvblNlbmRlciE6IFN1YnNjcmlwdGlvbjtcbiAgICBzZXNzaW9uUXVldWU6IE1haW5TZXNzaW9uW109IFtdO1xuICAgIHNlc3Npb25TZW5kQXR0ZW1wdHM6IG51bWJlciA9IDBcbiAgICBJbnN0YW5jZUVudlNlbmRBdHRlbXB0czogbnVtYmVyID0gMDtcbiAgICBpbnN0YW5jZSE6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+O1xuICAgIHNlbmRTZXNzaW9uZmluaXNoZWQ6Ym9vbGVhbj0gdHJ1ZTtcbiAgICBzZW5kSW5zdGFuY2VFbnZGaW5pc2hlZDogYm9vbGVhbiA9IHRydWU7XG4gICAgXG5cbiAgICBjdXJyZW50U2Vzc2lvbiE6IE1haW5TZXNzaW9uO1xuICAgIGNvbmZpZzogVGVjaG5pY2FsQ29uZjtcbiAgICBjb25zdHJ1Y3RvciggIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgICAgICAgICAgICBASW5qZWN0KCdjb25maWcnKSBjb25maWc6IFRlY2huaWNhbENvbmYsXG4gICAgICAgICAgICAgICAgICBASW5qZWN0KCdpbnN0YW5jZScpIGluc3RhbmNlOiBJbnN0YW5jZUVudmlyb25tZW50KXtcblxuICAgICAgICBjb25zb2xlLmxvZyggJ2dvb2QnKVxuICAgICAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICAgICAgdGhpcy5pbnN0YW5jZUVudmlyb25tZW50ID0gaW5zdGFuY2U7XG4gICAgICAgIHRoaXMuc2NoZWR1bGVkU2Vzc2lvblNlbmRlciA9IGludGVydmFsKHRoaXMuZGVsYXkpXG4gICAgICAgIC5waXBlKHRhcCgoKT0+IHtcbiAgICAgICAgICAgIGlmKHRoaXMuc2VuZFNlc3Npb25maW5pc2hlZCl7XG4gICAgICAgICAgICAgICAgdGhpcy5zZW5kU2Vzc2lvbnMoKTtcbiAgICAgICAgICAgIH19KSlcbiAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cblxuXG4gICAgaW5pdGlhbGl6ZSggKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdwZWZvaicpXG4gICAgICAgIGxvZ0luc3BlY3QoJ2luaXRpYWxpemUnKTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2JlZm9yZXVubG9hZCcsIChldmVudDogQmVmb3JlVW5sb2FkRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5uZXdTZXNzaW9uKCk7Ly9mb3JjZSBcbiAgICAgICAgdGhpcy5zZW5kU2Vzc2lvbnMoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5uZXdTZXNzaW9uKGV2ZW50LnVybCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRDdXJyZW50U2Vzc2lvbigpLm5hbWUgPSBkb2N1bWVudC50aXRsZTtcbiAgICAgICAgICAgICAgICB0aGlzLmdldEN1cnJlbnRTZXNzaW9uKCkubG9jYXRpb24gPSBkb2N1bWVudC5VUkw7IFxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIGFkZFNlc3Npb25zKHNlc3Npb25zOk1haW5TZXNzaW9uKXtcbiAgICAgICAgdGhpcy5zZXNzaW9uUXVldWUucHVzaChzZXNzaW9ucyk7XG4gICAgICAgIGxvZ0luc3BlY3QoXCJhZGRlZCBlbGVtZW50IHRvIHNlc3Npb24gcXVldWUsIG5ldyBzaXplIGlzOiBcIisgdGhpcy5zZXNzaW9uUXVldWUubGVuZ3RoKTtcbiAgICB9XG5cblxuICAgIG5ld1Nlc3Npb24odXJsPzpzdHJpbmcpe1xuICAgICAgICBpZih0aGlzLmN1cnJlbnRTZXNzaW9uKXtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFNlc3Npb24uZW5kID0gZGF0ZU5vdygpO1xuICAgICAgICAgICAgaWYodGhpcy5jb25maWcuZXhjbHVkZS5ldmVyeSgoZSkgPT4gIWUudGVzdCh0aGlzLmN1cnJlbnRTZXNzaW9uLmxvY2F0aW9uKSkpe1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkU2Vzc2lvbnModGhpcy5jdXJyZW50U2Vzc2lvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsb2dJbnNwZWN0KCgpPT5wcmV0dHlTZXNzaW9uRm9ybWF0KHRoaXMuY3VycmVudFNlc3Npb24pKTtcbiAgICAgICAgfVxuICAgICAgICBpZih1cmwpe1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50U2Vzc2lvbiA9IHtcbiAgICAgICAgICAgICAgICAnQHR5cGUnOiBcIm1haW5cIixcbiAgICAgICAgICAgICAgICB1c2VyOiB0aGlzLmNvbmZpZy51c2VyLFxuICAgICAgICAgICAgICAgIHN0YXJ0OiBkYXRlTm93KCksXG4gICAgICAgICAgICAgICAgdHlwZTogXCJWSUVXXCIsXG4gICAgICAgICAgICAgICAgbG9jYXRpb246IHVybCxcbiAgICAgICAgICAgICAgICByZXN0UmVxdWVzdHM6IFtdXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cblxuXG4gICAgc2VuZFNlc3Npb25zKCkge1xuICAgICAgICBpZih0aGlzLnNlc3Npb25RdWV1ZS5sZW5ndGg+IDApe1xuICAgICAgICAgICAgdGhpcy5nZXRJbnNlcnRlZEluc3RhbmNlSWQoKS5zdWJzY3JpYmUoKGlkOnN0cmluZ3xudWxsKT0+e1xuICAgICAgICAgICAgICAgIGlmKGlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VuZFNlc3Npb25maW5pc2hlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBsZXQgc2Vzc2lvbnM6IE1haW5TZXNzaW9uW10gPSBbLi4udGhpcy5zZXNzaW9uUXVldWVdO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlc3Npb25RdWV1ZS5zcGxpY2UoMCxzZXNzaW9ucy5sZW5ndGgpOyAvLyBhZGQgcmVzdCBvZiBzZXNzaW9uc1xuICAgICAgICAgICAgICAgICAgICBsb2dJbnNwZWN0KGBzZW5kaW5nIHNlc3Npb25zLCBhdHRlbXB0czokeysrdGhpcy5zZXNzaW9uU2VuZEF0dGVtcHRzfSwgcXVldWUgc2l6ZSA6ICR7c2Vzc2lvbnMubGVuZ3RofWApXG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdE9wdGlvbnM6IFJlcXVlc3RJbml0ID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUFVUJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGUgOiAnY29ycycsXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShzZXNzaW9ucylcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICBmZXRjaCh0aGlzLmNvbmZpZy5zZXNzaW9uQXBpLCByZXF1ZXN0T3B0aW9ucylcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oZGF0YT0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGRhdGEub2spe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0luc3BlY3QoJ3Nlc3Npb25zIHNlbnQgc3VjY2Vzc2Z1bGx5LCBxdWV1ZSBzaXplIHJlc2V0LCBuZXcgc2l6ZSBpczogJyt0aGlzLnNlc3Npb25RdWV1ZS5sZW5ndGgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uU2VuZEF0dGVtcHRzPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBFcnJvciB3aGlsZSBhdHRlbXB0aW5nIHRvIHNlbmQgc2Vzc2lvbnMsIGF0dGVtcHRzOiAke3RoaXMuc2Vzc2lvblNlbmRBdHRlbXB0c31gKS8vXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXZlcnRRdWV1ZVNpemUoc2Vzc2lvbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBFcnJvciB3aGlsZSBhdHRlbXB0aW5nIHRvIHNlbmQgc2Vzc2lvbnMsIGF0dGVtcHRzOiAke3RoaXMuc2Vzc2lvblNlbmRBdHRlbXB0c31gLGVycm9yKS8vXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJldmVydFF1ZXVlU2l6ZShzZXNzaW9ucyk7XG4gICAgICAgICAgICAgICAgICAgIH0pLmZpbmFsbHkoICgpPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZW5kU2Vzc2lvbmZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgIH1lbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBFcnJvciB3aGlsZSBhdHRlbXB0aW5nIHRvIHNlbmQgRW52aXJvbmVtZW50IGluc3RhbmNlLCBhdHRlbXB0cyAke3RoaXMuc2Vzc2lvblNlbmRBdHRlbXB0c31gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV2ZXJ0UXVldWVTaXplKHNlc3Npb25zOiBNYWluU2Vzc2lvbltdKXtcbiAgICAgICAgdGhpcy5zZXNzaW9uUXVldWUudW5zaGlmdCguLi5zZXNzaW9ucyk7XG4gICAgICAgIGlmKHRoaXMuc2Vzc2lvblF1ZXVlLmxlbmd0aCA+IHRoaXMubWF4QnVmZmVyU2l6ZSApe1xuICAgICAgICAgICAgbGV0IGRpZmYgPSB0aGlzLnNlc3Npb25RdWV1ZS5sZW5ndGggLSB0aGlzLm1heEJ1ZmZlclNpemU7XG4gICAgICAgICAgICB0aGlzLnNlc3Npb25RdWV1ZSA9IHRoaXMuc2Vzc2lvblF1ZXVlLnNsaWNlKDAsdGhpcy5tYXhCdWZmZXJTaXplKTtcbiAgICAgICAgICAgIGxvZ0luc3BlY3QoJ0J1ZmZlciBzaXplIGV4ZWVkZWQgdGhlIG1heCBzaXplLGxhc3Qgc2Vzc2lvbnMgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSBidWZmZXIsIChudW1iZXIgb2Ygc2Vzc2lvbnMgcmVtb3ZlZCk6JytkaWZmKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0SW5zZXJ0ZWRJbnN0YW5jZUlkKCkgOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICBpZih0aGlzLmluc3RhbmNlKXtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmluc3RhbmNlO1xuICAgICAgICB9XG4gICAgICAgIGlmKHRoaXMuc2VuZEluc3RhbmNlRW52RmluaXNoZWQpey8vIG1vdmUgdXAgaW4gc2VuZCBzZXNzaW9uICA/IFxuICAgICAgICAgICAgdGhpcy5zZW5kSW5zdGFuY2VFbnZGaW5pc2hlZCA9IGZhbHNlO1xuICAgICAgICAgICAgY29uc3QgcmVxdWVzdE9wdGlvbnM6IFJlcXVlc3RJbml0ID0ge1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG1vZGU6ICdjb3JzJyxcbiAgICAgICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh0aGlzLmluc3RhbmNlRW52aXJvbm1lbnQpXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5zZXNzaW9uU2VuZEF0dGVtcHRzKys7XG4gICAgICAgICAgICByZXR1cm4gZnJvbSggZmV0Y2godGhpcy5jb25maWcuaW5zdGFuY2VBcGksIHJlcXVlc3RPcHRpb25zKVxuICAgICAgICAgICAgLnRoZW4ocmVzID0+IHJlcy5vayA/IHJlcy50ZXh0KCkudGhlbihpZD0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmluc3RhbmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KGlkKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5zZXNzaW9uQXBpID0gdGhpcy5jb25maWcuc2Vzc2lvbkFwaSAucmVwbGFjZSgnOmlkJyxpZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uU2VuZEF0dGVtcHRzPTA7XG4gICAgICAgICAgICAgICAgbG9nSW5zcGVjdCgnRW52aXJvbmVtZW50IGluc3RhbmNlIHNlbnQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlkOyBcbiAgICAgICAgICAgIH0pIDogbnVsbClcbiAgICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihlcnIpXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9KS5maW5hbGx5KCgpPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VuZEluc3RhbmNlRW52RmluaXNoZWQgPSB0cnVlO1xuICAgICAgICAgICAgfSkpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgIH1cblxuICAgIFxuXG4gICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZih0aGlzLnNjaGVkdWxlZFNlc3Npb25TZW5kZXIpe1xuICAgICAgICAgICAgdGhpcy5zY2hlZHVsZWRTZXNzaW9uU2VuZGVyLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRDdXJyZW50U2Vzc2lvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFNlc3Npb247XG4gICAgfVxufVxuIl19
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1tYW5hZ2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmV0ZW1lL2luc3BlY3QtbmctY29sbGVjdG9yL3NyYy9saWIvc2Vzc2lvbi1tYW5hZ2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFFL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBZ0IsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxPQUFPLEVBQUMsVUFBVSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sUUFBUSxDQUFDOztBQUtqRSxNQUFNLE9BQU8sY0FBYztJQWV2QixZQUFnQyxNQUFxQixFQUNuQixRQUE2QjtRQVgvRCxpQkFBWSxHQUFpQixFQUFFLENBQUM7UUFDaEMsd0JBQW1CLEdBQVcsQ0FBQyxDQUFBO1FBQy9CLDRCQUF1QixHQUFXLENBQUMsQ0FBQztRQUVwQyx3QkFBbUIsR0FBVSxJQUFJLENBQUM7UUFDbEMsNEJBQXVCLEdBQVksSUFBSSxDQUFDO1FBT3BDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxRQUFRLENBQUM7UUFDcEMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO2FBQ2pELElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRSxFQUFFO1lBQ1YsSUFBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUM7Z0JBQ3hCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUN2QjtRQUFBLENBQUMsQ0FBQyxDQUFDO2FBQ1AsU0FBUyxFQUFFLENBQUM7UUFDYixVQUFVLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lB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LHNCQUFzQixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQzdDO0lBQ0wsQ0FBQztJQUVELGlCQUFpQjtRQUNiLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUMvQixDQUFDOytHQXpKUSxjQUFjLGtCQWVELFFBQVEsYUFDUixVQUFVO21IQWhCdkIsY0FBYyxjQURELE1BQU07OzRGQUNuQixjQUFjO2tCQUQxQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBZ0JmLE1BQU07MkJBQUMsUUFBUTs7MEJBQ2YsTUFBTTsyQkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJbnN0YW5jZUVudmlyb25tZW50LCBNYWluU2Vzc2lvbiB9IGZyb20gJy4vdHJhY2UubW9kZWwnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmcm9tLCBpbnRlcnZhbCwgT2JzZXJ2YWJsZSwgb2YsIFN1YnNjcmlwdGlvbiwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkYXRlTm93LGxvZ0luc3BlY3QsIHByZXR0eVNlc3Npb25Gb3JtYXQgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHsgVGVjaG5pY2FsQ29uZiB9IGZyb20gJy4vY29uZmlndXJhdGlvbic7XG5cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBTZXNzaW9uTWFuYWdlciBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgbWF4QnVmZmVyU2l6ZSE6IG51bWJlcjtcbiAgICBkZWxheSE6bnVtYmVyXG4gICAgaW5zdGFuY2VFbnZpcm9ubWVudCA6IEluc3RhbmNlRW52aXJvbm1lbnQ7XG4gICAgc2NoZWR1bGVkU2Vzc2lvblNlbmRlciE6IFN1YnNjcmlwdGlvbjtcbiAgICBzZXNzaW9uUXVldWU6IE1haW5TZXNzaW9uW109IFtdO1xuICAgIHNlc3Npb25TZW5kQXR0ZW1wdHM6IG51bWJlciA9IDBcbiAgICBJbnN0YW5jZUVudlNlbmRBdHRlbXB0czogbnVtYmVyID0gMDtcbiAgICBpbnN0YW5jZSE6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+O1xuICAgIHNlbmRTZXNzaW9uZmluaXNoZWQ6Ym9vbGVhbj0gdHJ1ZTtcbiAgICBzZW5kSW5zdGFuY2VFbnZGaW5pc2hlZDogYm9vbGVhbiA9IHRydWU7XG4gICAgXG5cbiAgICBjdXJyZW50U2Vzc2lvbiE6IE1haW5TZXNzaW9uO1xuICAgIGNvbmZpZzogVGVjaG5pY2FsQ29uZjtcbiAgICBjb25zdHJ1Y3RvciggIEBJbmplY3QoJ2NvbmZpZycpIGNvbmZpZzogVGVjaG5pY2FsQ29uZixcbiAgICAgICAgICAgICAgICAgIEBJbmplY3QoJ2luc3RhbmNlJykgaW5zdGFuY2U6IEluc3RhbmNlRW52aXJvbm1lbnQpe1xuICAgICAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICAgICAgdGhpcy5pbnN0YW5jZUVudmlyb25tZW50ID0gaW5zdGFuY2U7XG4gICAgICAgIHRoaXMuc2NoZWR1bGVkU2Vzc2lvblNlbmRlciA9IGludGVydmFsKHRoaXMuZGVsYXkpXG4gICAgICAgIC5waXBlKHRhcCgoKT0+IHtcbiAgICAgICAgICAgIGlmKHRoaXMuc2VuZFNlc3Npb25maW5pc2hlZCl7XG4gICAgICAgICAgICAgICAgdGhpcy5zZW5kU2Vzc2lvbnMoKTtcbiAgICAgICAgICAgIH19KSlcbiAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgICAgICBsb2dJbnNwZWN0KCdTZXNzaW9uTWFuYWdlciBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuXG5cbiAgICBhZGRTZXNzaW9ucyhzZXNzaW9uczpNYWluU2Vzc2lvbil7XG4gICAgICAgIHRoaXMuc2Vzc2lvblF1ZXVlLnB1c2goc2Vzc2lvbnMpO1xuICAgICAgICBsb2dJbnNwZWN0KFwiYWRkZWQgZWxlbWVudCB0byBzZXNzaW9uIHF1ZXVlLCBuZXcgc2l6ZSBpczogXCIrIHRoaXMuc2Vzc2lvblF1ZXVlLmxlbmd0aCk7XG4gICAgfVxuXG5cbiAgICBuZXdTZXNzaW9uKHVybD86c3RyaW5nKXtcbiAgICAgICAgaWYodGhpcy5jdXJyZW50U2Vzc2lvbil7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTZXNzaW9uLmVuZCA9IGRhdGVOb3coKTtcbiAgICAgICAgICAgIGlmKHRoaXMuY29uZmlnLmV4Y2x1ZGUuZXZlcnkoKGUpID0+ICFlLnRlc3QodGhpcy5jdXJyZW50U2Vzc2lvbi5sb2NhdGlvbikpKXtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZFNlc3Npb25zKHRoaXMuY3VycmVudFNlc3Npb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbG9nSW5zcGVjdCgoKT0+cHJldHR5U2Vzc2lvbkZvcm1hdCh0aGlzLmN1cnJlbnRTZXNzaW9uKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYodXJsKXtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFNlc3Npb24gPSB7XG4gICAgICAgICAgICAgICAgJ0B0eXBlJzogXCJtYWluXCIsXG4gICAgICAgICAgICAgICAgdXNlcjogdGhpcy5jb25maWcudXNlcixcbiAgICAgICAgICAgICAgICBzdGFydDogZGF0ZU5vdygpLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwiVklFV1wiLFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiB1cmwsXG4gICAgICAgICAgICAgICAgcmVzdFJlcXVlc3RzOiBbXVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG5cblxuICAgIHNlbmRTZXNzaW9ucygpIHtcbiAgICAgICAgaWYodGhpcy5zZXNzaW9uUXVldWUubGVuZ3RoPiAwKXtcbiAgICAgICAgICAgIHRoaXMuZ2V0SW5zZXJ0ZWRJbnN0YW5jZUlkKCkuc3Vic2NyaWJlKChpZDpzdHJpbmd8bnVsbCk9PntcbiAgICAgICAgICAgICAgICBpZihpZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbmRTZXNzaW9uZmluaXNoZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNlc3Npb25zOiBNYWluU2Vzc2lvbltdID0gWy4uLnRoaXMuc2Vzc2lvblF1ZXVlXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uUXVldWUuc3BsaWNlKDAsc2Vzc2lvbnMubGVuZ3RoKTsgLy8gYWRkIHJlc3Qgb2Ygc2Vzc2lvbnNcbiAgICAgICAgICAgICAgICAgICAgbG9nSW5zcGVjdChgc2VuZGluZyBzZXNzaW9ucywgYXR0ZW1wdHM6JHsrK3RoaXMuc2Vzc2lvblNlbmRBdHRlbXB0c30sIHF1ZXVlIHNpemUgOiAke3Nlc3Npb25zLmxlbmd0aH1gKVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3RPcHRpb25zOiBSZXF1ZXN0SW5pdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BVVCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RlIDogJ2NvcnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoc2Vzc2lvbnMpXG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgZmV0Y2godGhpcy5jb25maWcuc2Vzc2lvbkFwaSwgcmVxdWVzdE9wdGlvbnMpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKGRhdGE9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZihkYXRhLm9rKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dJbnNwZWN0KCdzZXNzaW9ucyBzZW50IHN1Y2Nlc3NmdWxseSwgcXVldWUgc2l6ZSByZXNldCwgbmV3IHNpemUgaXM6ICcrdGhpcy5zZXNzaW9uUXVldWUubGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvblNlbmRBdHRlbXB0cz0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgRXJyb3Igd2hpbGUgYXR0ZW1wdGluZyB0byBzZW5kIHNlc3Npb25zLCBhdHRlbXB0czogJHt0aGlzLnNlc3Npb25TZW5kQXR0ZW1wdHN9YCkvL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmV2ZXJ0UXVldWVTaXplKHNlc3Npb25zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgRXJyb3Igd2hpbGUgYXR0ZW1wdGluZyB0byBzZW5kIHNlc3Npb25zLCBhdHRlbXB0czogJHt0aGlzLnNlc3Npb25TZW5kQXR0ZW1wdHN9YCxlcnJvcikvL1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXZlcnRRdWV1ZVNpemUoc2Vzc2lvbnMpO1xuICAgICAgICAgICAgICAgICAgICB9KS5maW5hbGx5KCAoKT0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VuZFNlc3Npb25maW5pc2hlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICB9ZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgRXJyb3Igd2hpbGUgYXR0ZW1wdGluZyB0byBzZW5kIEVudmlyb25lbWVudCBpbnN0YW5jZSwgYXR0ZW1wdHMgJHt0aGlzLnNlc3Npb25TZW5kQXR0ZW1wdHN9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldmVydFF1ZXVlU2l6ZShzZXNzaW9uczogTWFpblNlc3Npb25bXSl7XG4gICAgICAgIHRoaXMuc2Vzc2lvblF1ZXVlLnVuc2hpZnQoLi4uc2Vzc2lvbnMpO1xuICAgICAgICBpZih0aGlzLnNlc3Npb25RdWV1ZS5sZW5ndGggPiB0aGlzLm1heEJ1ZmZlclNpemUgKXtcbiAgICAgICAgICAgIGxldCBkaWZmID0gdGhpcy5zZXNzaW9uUXVldWUubGVuZ3RoIC0gdGhpcy5tYXhCdWZmZXJTaXplO1xuICAgICAgICAgICAgdGhpcy5zZXNzaW9uUXVldWUgPSB0aGlzLnNlc3Npb25RdWV1ZS5zbGljZSgwLHRoaXMubWF4QnVmZmVyU2l6ZSk7XG4gICAgICAgICAgICBsb2dJbnNwZWN0KCdCdWZmZXIgc2l6ZSBleGVlZGVkIHRoZSBtYXggc2l6ZSxsYXN0IHNlc3Npb25zIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gYnVmZmVyLCAobnVtYmVyIG9mIHNlc3Npb25zIHJlbW92ZWQpOicrZGlmZilcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldEluc2VydGVkSW5zdGFuY2VJZCgpIDogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgaWYodGhpcy5pbnN0YW5jZSl7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pbnN0YW5jZTtcbiAgICAgICAgfVxuICAgICAgICBpZih0aGlzLnNlbmRJbnN0YW5jZUVudkZpbmlzaGVkKXsvLyBtb3ZlIHVwIGluIHNlbmQgc2Vzc2lvbiAgPyBcbiAgICAgICAgICAgIHRoaXMuc2VuZEluc3RhbmNlRW52RmluaXNoZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IHJlcXVlc3RPcHRpb25zOiBSZXF1ZXN0SW5pdCA9IHtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBtb2RlOiAnY29ycycsXG4gICAgICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkodGhpcy5pbnN0YW5jZUVudmlyb25tZW50KVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMuc2Vzc2lvblNlbmRBdHRlbXB0cysrO1xuICAgICAgICAgICAgcmV0dXJuIGZyb20oIGZldGNoKHRoaXMuY29uZmlnLmluc3RhbmNlQXBpLCByZXF1ZXN0T3B0aW9ucylcbiAgICAgICAgICAgIC50aGVuKHJlcyA9PiByZXMub2sgPyByZXMudGV4dCgpLnRoZW4oaWQ9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnN0YW5jZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPihpZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcuc2Vzc2lvbkFwaSA9IHRoaXMuY29uZmlnLnNlc3Npb25BcGkgLnJlcGxhY2UoJzppZCcsaWQpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvblNlbmRBdHRlbXB0cz0wO1xuICAgICAgICAgICAgICAgIGxvZ0luc3BlY3QoJ0Vudmlyb25lbWVudCBpbnN0YW5jZSBzZW50IHN1Y2Nlc3NmdWxseScpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpZDsgXG4gICAgICAgICAgICB9KSA6IG51bGwpXG4gICAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oZXJyKVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfSkuZmluYWxseSgoKT0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbmRJbnN0YW5jZUVudkZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH0pKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICB9XG5cbiAgICBcblxuICAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYodGhpcy5zY2hlZHVsZWRTZXNzaW9uU2VuZGVyKXtcbiAgICAgICAgICAgIHRoaXMuc2NoZWR1bGVkU2Vzc2lvblNlbmRlci51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0Q3VycmVudFNlc3Npb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRTZXNzaW9uO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,6 +1,4 @@
1
1
  const WIN = window;
2
- export const HOST_PATERN = /https?:\/\/[\w\-.]+(:\d{2,5})?\/?/;
3
- export const PATH_PATERN = /[\w-]+(\/[\w-]+)*/;
4
2
  export function dateNow() {
5
3
  return Date.now() / 1000;
6
4
  }
@@ -65,18 +63,4 @@ function prettyRestRequestFormat(rest) {
65
63
  function prettyDurationFormat(start, end) {
66
64
  return start && end ? `(in ${(end - start).toFixed(2)} ms)` : '';
67
65
  }
68
- export function matchRegex(v, pattern) {
69
- if (v && pattern.exec(v)) {
70
- return true;
71
- }
72
- console.warn("bad value=" + v + ", pattern=" + pattern);
73
- return false;
74
- }
75
- export function requirePostitiveValue(v, name) {
76
- if (v == undefined || (v && v > 0)) {
77
- return true;
78
- }
79
- console.warn(name + '=' + v + " <= 0");
80
- return false;
81
- }
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29uZXRlbWUvaW5zcGVjdC1uZy1jb2xsZWN0b3Ivc3JjL2xpYi91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sR0FBRyxHQUFPLE1BQU0sQ0FBQztBQUd2QixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsbUNBQW1DLENBQUM7QUFDL0QsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLG1CQUFtQixDQUFDO0FBRS9DLE1BQU0sVUFBVSxPQUFPO0lBQ25CLE9BQU8sSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUssQ0FBQztBQUM5QixDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxLQUFhO0lBQ3BDLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRyxJQUFJLEVBQUUsQ0FBQztBQUNyQyxDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxHQUFHLElBQVc7SUFDdkMsSUFBRyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxFQUFDO1FBQ3ZCLElBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxFQUFDO1lBQ2xELElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNqQixJQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBQztnQkFDdEIsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDZjtTQUNGO1FBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztLQUNuQztBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsT0FBb0I7SUFDdEQsSUFBSSxDQUFDLEdBQUUsSUFBSSxPQUFPLENBQUMsSUFBSSxH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Q3ZFLElBQUcsQ0FBQyxJQUFJLFNBQVMsSUFBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7UUFDbEMsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFFLEdBQUcsR0FBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUM7SUFDckMsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWFpblNlc3Npb24sIFJlc3RSZXF1ZXN0IH0gZnJvbSBcIi4vdHJhY2UubW9kZWxcIjtcblxuY29uc3QgV0lOOmFueSA9IHdpbmRvdztcblxuXG5leHBvcnQgY29uc3QgSE9TVF9QQVRFUk4gPSAvaHR0cHM/OlxcL1xcL1tcXHdcXC0uXSsoOlxcZHsyLDV9KT9cXC8/LztcbmV4cG9ydCBjb25zdCBQQVRIX1BBVEVSTiA9IC9bXFx3LV0rKFxcL1tcXHctXSspKi87XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRlTm93KCkge1xuICAgIHJldHVybiBEYXRlLm5vdygpIC8gMV8wMDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0RGVidWcodmFsdWU6Ym9vbGVhbil7XG4gICBXSU5bXCJpbnNwZWN0XCJdID0geyBkZWJ1ZyA6IHRydWUgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvZ0luc3BlY3QoLi4uYXJnczogYW55W10pe1xuICBpZihXSU5bXCJpbnNwZWN0XCJdPy5kZWJ1Zyl7XG4gICAgaWYoYXJncy5sZW5ndGggPT0gMSAmJiB0eXBlb2YgYXJnc1swXSA9PSAnZnVuY3Rpb24nKXtcbiAgICAgIGFyZ3MgPSBhcmdzWzBdKCk7XG4gICAgICBpZighQXJyYXkuaXNBcnJheShhcmdzKSl7XG4gICAgICAgIGFyZ3MgPSBbYXJnc107XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKCdbSU5TUEVDVF0nLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJldHR5U2Vzc2lvbkZvcm1hdChzZXNzaW9uOiBNYWluU2Vzc2lvbil7XG4gIGxldCBzPSBgWyR7c2Vzc2lvbi5uYW1lfV1gO1xuICAgIGlmKHNlc3Npb24udXNlcil7XG4gICAgICBzKz0gYDwke3Nlc3Npb24udXNlcn0+YFxuICAgIH1cbiAgICBpZihzZXNzaW9uLmxvY2F0aW9uKXtcbiAgICAgIHMrPSBgKCR7c2Vzc2lvbi5sb2NhdGlvbn0pIGBcbiAgICB9XG4gICAgcys9cHJldHR5RHVyYXRpb25Gb3JtYXQoc2Vzc2lvbi5zdGFydCxzZXNzaW9uLmVuZCEpKydcXG4nO1xuICAgIHNlc3Npb24ucmVzdFJlcXVlc3RzLmZvckVhY2gociA9PiB7XG4gICAgICBzKz0gcHJldHR5UmVzdFJlcXVlc3RGb3JtYXQocikrJ1xcbic7XG4gICAgfSlcbiAgcmV0dXJuIHM7XG59XG5cbmZ1bmN0aW9uIHByZXR0eVJlc3RSZXF1ZXN0Rm9ybWF0KHJlc3Q6IFJlc3RSZXF1ZXN0KXtcbiAgbGV0IHMgPSBgICAtICBbJHtyZXN0Lm1ldGhvZH1dYFxuICBpZihyZXN0LnByb3RvY29sKXtcbiAgICBzKz0gYCR7cmVzdC5wcm90b2NvbH06Ly9gXG4gIH1cbiAgaWYocmVzdC5ob3N0KXtcbiAgICBzKz0gcmVzdC5ob3N0XG4gIH1cbiAgaWYocmVzdC5wb3J0ID4gMCl7XG4gICAgcys9IGA6JHtyZXN0LnBvcnR9YFxuICB9XG4gIGlmKHJlc3QucGF0aCl7XG4gICAgaWYoIXJlc3QucGF0aC5zdGFydHNXaXRoKFwiL1wiKSAmJiAhcy5lbmRzV2l0aChcIi9cIikpe1xuICAgICAgcys9ICcvJ1xuICAgIH1cbiAgICBzKz0gcmVzdC5wYXRoO1xuICB9XG4gIGlmKHJlc3QucXVlcnkpe1xuICAgIHMrPSByZXN0LnF1ZXJ5XG4gIH1cbiAgaWYocmVzdC5leGNlcHRpb24/LnR5cGUpe1xuICAgIHMrPSBgICR7cmVzdC5leGNlcHRpb24/LnR5cGV9OmA7XG4gIH1cbiAgaWYocmVzdC5leGNlcHRpb24/Lm1lc3NhZ2Upe1xuICAgIHMrPSBgICR7cmVzdC5leGNlcHRpb24ubWVzc2FnZX1gO1xuICB9XG4gIHMrPSBgID4+ICR7cmVzdC5zdGF0dXN9YFxuICBzKz0gcHJldHR5RHVyYXRpb25Gb3JtYXQocmVzdC5zdGFydCxyZXN0LmVuZCk7XG4gIHJldHVybiBzO1xufVxuXG5mdW5jdGlvbiBwcmV0dHlEdXJhdGlvbkZvcm1hdChzdGFydDpudW1iZXIsZW5kOm51bWJlcil7XG4gICAgcmV0dXJuICBzdGFydCAmJiBlbmQgPyBgKGluICR7IChlbmQgLSBzdGFydCkudG9GaXhlZCgyKSB9IG1zKWAgOiAnJztcbn1cblxuXG5cbmV4cG9ydCBmdW5jdGlvbiBtYXRjaFJlZ2V4KHY6IHN0cmluZyB8IHVuZGVmaW5lZCwgcGF0dGVybjogUmVnRXhwKSB7XG4gICBpZih2ICYmIHBhdHRlcm4uZXhlYyh2KSl7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgIH1cbiAgIGNvbnNvbGUud2FybihcImJhZCB2YWx1ZT1cIiArIHYgKyBcIiwgcGF0dGVybj1cIiArIHBhdHRlcm4pO1xuICAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVxdWlyZVBvc3RpdGl2ZVZhbHVlKHY6IG51bWJlciB8IHVuZGVmaW5lZCwgbmFtZTogc3RyaW5nKXtcbiAgaWYodiA9PSB1bmRlZmluZWQgfHwgICh2ICYmIHYgPiAwKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGNvbnNvbGUud2FybihuYW1lICsnPScrIHYgKyBcIiA8PSAwXCIpO1xuICByZXR1cm4gZmFsc2U7XG59XG5cblxuXG5cbiJdfQ==
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29uZXRlbWUvaW5zcGVjdC1uZy1jb2xsZWN0b3Ivc3JjL2xpYi91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sR0FBRyxHQUFPLE1BQU0sQ0FBQztBQUl2QixNQUFNLFVBQVUsT0FBTztJQUNuQixPQUFPLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFLLENBQUM7QUFDOUIsQ0FBQztBQUVELE1BQU0sVUFBVSxTQUFTLENBQUMsS0FBYTtJQUNwQyxHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUcsSUFBSSxFQUFFLENBQUM7QUFDckMsQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQUMsR0FBRyxJQUFXO0lBQ3ZDLElBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssRUFBQztRQUN2QixJQUFHLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLFVBQVUsRUFBQztZQUNsRCxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDakIsSUFBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUM7Z0JBQ3RCLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2Y7U0FDRjtRQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7S0FDbkM7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLG1CQUFtQixDQUFDLE9BQW9CO0lBQ3RELElBQUksQ0FBQyxHQUFFLElBQUksT0FBTyxDQUFDLElBQUksR0FBRyxDQUFDO0lBQ3pCLElBQUcsT0FBTyxDQUFDLElBQUksRUFBQztRQUNkLENBQUMsSUFBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQTtLQUN4QjtJQUNELElBQUcsT0FBTyxDQUFDLFFBQVEsRUFBQztRQUNsQixDQUFDLElBQUcsSUFBSSxPQUFPLENBQUMsUUFBUSxJQUFJLENBQUE7S0FDN0I7SUFDRCxDQUFDLElBQUUsb0JBQW9CLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBQyxPQUFPLENBQUMsR0FBSSxDQUFDLEdBQUMsSUFBSSxDQUFDO0lBQ3pELE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQy9CLENBQUMsSUFBRyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsR0FBQyxJQUFJLENBQUM7SUFDdEMsQ0FBQyxDQUFDLENBQUE7SUFDSixPQUFPLENBQUMsQ0FBQztBQUNYLENBQUM7QUFFRCxTQUFTLHVCQUF1QixDQUFDLElBQWlCO0lBQ2hELElBQUksQ0FBQyxHQUFHLFNBQVMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFBO0lBQy9CLElBQUcsSUFBSSxDQUFDLFFBQVEsRUFBQztRQUNmLENBQUMsSUFBRyxHQUFHLElBQUksQ0FBQyxRQUFRLEtBQUssQ0FBQTtLQUMxQjtJQUNELElBQUcsSUFBSSxDQUFDLElBQUksRUFBQztRQUNYLENBQUMsSUFBRyxJQUFJLENBQUMsSUFBSSxDQUFBO0tBQ2Q7SUFDRCxJQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFDO1FBQ2YsQ0FBQyxJQUFHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBO0tBQ3BCO0lBQ0QsSUFBRyxJQUFJLENBQUMsSUFBSSxFQUFDO1FBQ1gsSUFBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBQztZQUNoRCxDQUFDLElBQUcsR0FBRyxDQUFBO1NBQ1I7UUFDRCxDQUFDLElBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztLQUNmO0lBQ0QsSUFBRyxJQUFJLENBQUMsS0FBSyxFQUFDO1FBQ1osQ0FBQyxJQUFHLElBQUksQ0FBQyxLQUFLLENBQUE7S0FDZjtJQUNELElBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUM7UUFDdEIsQ0FBQyxJQUFHLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEdBQUcsQ0FBQztLQUNqQztJQUNELElBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUM7UUFDekIsQ0FBQyxJQUFHLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztLQUNsQztJQUNELENBQUMsSUFBRyxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQTtJQUN4QixDQUFDLElBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUMsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBRUQsU0FBUyxvQkFBb0IsQ0FBQyxLQUFZLEVBQUMsR0FBVTtJQUNqRCxPQUFRLEtBQUssSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQVEsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN4RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWFpblNlc3Npb24sIFJlc3RSZXF1ZXN0IH0gZnJvbSBcIi4vdHJhY2UubW9kZWxcIjtcblxuY29uc3QgV0lOOmFueSA9IHdpbmRvdztcblxuXG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRlTm93KCkge1xuICAgIHJldHVybiBEYXRlLm5vdygpIC8gMV8wMDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0RGVidWcodmFsdWU6Ym9vbGVhbil7XG4gICBXSU5bXCJpbnNwZWN0XCJdID0geyBkZWJ1ZyA6IHRydWUgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvZ0luc3BlY3QoLi4uYXJnczogYW55W10pe1xuICBpZihXSU5bXCJpbnNwZWN0XCJdPy5kZWJ1Zyl7XG4gICAgaWYoYXJncy5sZW5ndGggPT0gMSAmJiB0eXBlb2YgYXJnc1swXSA9PSAnZnVuY3Rpb24nKXtcbiAgICAgIGFyZ3MgPSBhcmdzWzBdKCk7XG4gICAgICBpZighQXJyYXkuaXNBcnJheShhcmdzKSl7XG4gICAgICAgIGFyZ3MgPSBbYXJnc107XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKCdbSU5TUEVDVF0nLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJldHR5U2Vzc2lvbkZvcm1hdChzZXNzaW9uOiBNYWluU2Vzc2lvbil7XG4gIGxldCBzPSBgWyR7c2Vzc2lvbi5uYW1lfV1gO1xuICAgIGlmKHNlc3Npb24udXNlcil7XG4gICAgICBzKz0gYDwke3Nlc3Npb24udXNlcn0+YFxuICAgIH1cbiAgICBpZihzZXNzaW9uLmxvY2F0aW9uKXtcbiAgICAgIHMrPSBgKCR7c2Vzc2lvbi5sb2NhdGlvbn0pIGBcbiAgICB9XG4gICAgcys9cHJldHR5RHVyYXRpb25Gb3JtYXQoc2Vzc2lvbi5zdGFydCxzZXNzaW9uLmVuZCEpKydcXG4nO1xuICAgIHNlc3Npb24ucmVzdFJlcXVlc3RzLmZvckVhY2gociA9PiB7XG4gICAgICBzKz0gcHJldHR5UmVzdFJlcXVlc3RGb3JtYXQocikrJ1xcbic7XG4gICAgfSlcbiAgcmV0dXJuIHM7XG59XG5cbmZ1bmN0aW9uIHByZXR0eVJlc3RSZXF1ZXN0Rm9ybWF0KHJlc3Q6IFJlc3RSZXF1ZXN0KXtcbiAgbGV0IHMgPSBgICAtICBbJHtyZXN0Lm1ldGhvZH1dYFxuICBpZihyZXN0LnByb3RvY29sKXtcbiAgICBzKz0gYCR7cmVzdC5wcm90b2NvbH06Ly9gXG4gIH1cbiAgaWYocmVzdC5ob3N0KXtcbiAgICBzKz0gcmVzdC5ob3N0XG4gIH1cbiAgaWYocmVzdC5wb3J0ID4gMCl7XG4gICAgcys9IGA6JHtyZXN0LnBvcnR9YFxuICB9XG4gIGlmKHJlc3QucGF0aCl7XG4gICAgaWYoIXJlc3QucGF0aC5zdGFydHNXaXRoKFwiL1wiKSAmJiAhcy5lbmRzV2l0aChcIi9cIikpe1xuICAgICAgcys9ICcvJ1xuICAgIH1cbiAgICBzKz0gcmVzdC5wYXRoO1xuICB9XG4gIGlmKHJlc3QucXVlcnkpe1xuICAgIHMrPSByZXN0LnF1ZXJ5XG4gIH1cbiAgaWYocmVzdC5leGNlcHRpb24/LnR5cGUpe1xuICAgIHMrPSBgICR7cmVzdC5leGNlcHRpb24/LnR5cGV9OmA7XG4gIH1cbiAgaWYocmVzdC5leGNlcHRpb24/Lm1lc3NhZ2Upe1xuICAgIHMrPSBgICR7cmVzdC5leGNlcHRpb24ubWVzc2FnZX1gO1xuICB9XG4gIHMrPSBgID4+ICR7cmVzdC5zdGF0dXN9YFxuICBzKz0gcHJldHR5RHVyYXRpb25Gb3JtYXQocmVzdC5zdGFydCxyZXN0LmVuZCk7XG4gIHJldHVybiBzO1xufVxuXG5mdW5jdGlvbiBwcmV0dHlEdXJhdGlvbkZvcm1hdChzdGFydDpudW1iZXIsZW5kOm51bWJlcil7XG4gICAgcmV0dXJuICBzdGFydCAmJiBlbmQgPyBgKGluICR7IChlbmQgLSBzdGFydCkudG9GaXhlZCgyKSB9IG1zKWAgOiAnJztcbn1cblxuXG5cbiJdfQ==
@@ -1,14 +1,11 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, Inject, APP_INITIALIZER, NgModule } from '@angular/core';
3
3
  import { HttpResponse, HTTP_INTERCEPTORS } from '@angular/common/http';
4
+ import { Router, NavigationStart, NavigationEnd } from '@angular/router';
4
5
  import { tap as tap$1, finalize } from 'rxjs/operators';
5
6
  import { interval, tap, from, BehaviorSubject, of } from 'rxjs';
6
- import * as i1 from '@angular/router';
7
- import { NavigationStart, NavigationEnd } from '@angular/router';
8
7
 
9
8
  const WIN = window;
10
- const HOST_PATERN$1 = /https?:\/\/[\w\-.]+(:\d{2,5})?\/?/;
11
- const PATH_PATERN$1 = /[\w-]+(\/[\w-]+)*/;
12
9
  function dateNow() {
13
10
  return Date.now() / 1000;
14
11
  }
@@ -73,20 +70,6 @@ function prettyRestRequestFormat(rest) {
73
70
  function prettyDurationFormat(start, end) {
74
71
  return start && end ? `(in ${(end - start).toFixed(2)} ms)` : '';
75
72
  }
76
- function matchRegex$1(v, pattern) {
77
- if (v && pattern.exec(v)) {
78
- return true;
79
- }
80
- console.warn("bad value=" + v + ", pattern=" + pattern);
81
- return false;
82
- }
83
- function requirePostitiveValue$1(v, name) {
84
- if (v == undefined || (v && v > 0)) {
85
- return true;
86
- }
87
- console.warn(name + '=' + v + " <= 0");
88
- return false;
89
- }
90
73
 
91
74
  const SLASH = '/';
92
75
  const HOST_PATERN = /https?:\/\/[\w\-.]+(:\d{2,5})?\/?/;
@@ -101,7 +84,7 @@ const validationMap = {
101
84
  function setConfig(conf) {
102
85
  return {
103
86
  host: conf.host,
104
- name: getStringOrCall(conf.name) ?? '',
87
+ name: getStringOrCall(conf.name),
105
88
  version: getStringOrCall(conf.version) ?? '',
106
89
  env: getStringOrCall(conf.env) ?? '',
107
90
  user: getStringOrCall(conf.user) ?? '',
@@ -110,8 +93,8 @@ function setConfig(conf) {
110
93
  instanceApi: getStringOrCall(conf.sessionApi),
111
94
  sessionApi: getStringOrCall(conf.instanceApi),
112
95
  exclude: getRegArrOrCall(conf.exclude) ?? [],
113
- debug: conf?.debug ?? false,
114
- enabled: conf.enabled || false
96
+ debug: conf.debug ?? false,
97
+ enabled: conf.enabled ?? false
115
98
  };
116
99
  /*
117
100
  this.logServerMain = this.sessionApiURL(host,getStringOrCall(config.sessionApi)!);
@@ -120,27 +103,28 @@ function setConfig(conf) {
120
103
  this.delay = getNumberOrCall(config.delay) ?? 60000;
121
104
  */
122
105
  }
123
- function validateAndGetConfig(conf) {
124
- let host = validateProperty(conf.host, () => matchRegex(conf.host, HOST_PATERN));
125
- let sessionApi = validateProperty(conf.sessionApi, () => matchRegex(conf.sessionApi, PATH_PATERN));
126
- let instanceApi = validateProperty(conf.instanceApi, () => matchRegex(conf.sessionApi, PATH_PATERN));
127
- return {
128
- user: conf.user,
129
- bufferMaxSize: validateProperty(conf.delay, () => requirePostitiveValue(conf.delay, "bufferMaxSize")) ?? 1000,
130
- delay: validateProperty(conf.delay, () => requirePostitiveValue(conf.delay, "delay")) ?? 60000,
131
- instanceApi: sessionApiURL(host, sessionApi),
132
- sessionApi: instanceApiURL(host, instanceApi),
133
- exclude: conf.exclude,
134
- debug: conf.debug,
135
- enabled: conf.enabled
136
- };
137
- }
138
106
  function validateProperty(value, func) {
139
107
  if (func()) {
140
108
  return value;
141
109
  }
142
110
  throw new Error('error'); // pass the error return from the the passed function
143
111
  }
112
+ function validateAndGetConfig(conf) {
113
+ let host = matchRegex(getStringOrCall(conf.host), "host", HOST_PATERN);
114
+ let sessionApi = matchRegex(getStringOrCall(conf.sessionApi), 'sessionApi', PATH_PATERN);
115
+ let instanceApi = matchRegex(getStringOrCall(conf.instanceApi), 'intanceApi', PATH_PATERN);
116
+ initDebug(conf.debug ?? false);
117
+ return {
118
+ user: getStringOrCall(conf.user),
119
+ bufferMaxSize: requirePostitiveValue(getNumberOrCall(conf.delay), "bufferMaxSize", 1000),
120
+ delay: requirePostitiveValue(getNumberOrCall(conf.delay), "delay", 60000),
121
+ instanceApi: sessionApiURL(host, sessionApi),
122
+ sessionApi: instanceApiURL(host, instanceApi),
123
+ exclude: getRegArrOrCall(conf.exclude) || [],
124
+ debug: conf.debug ?? false,
125
+ enabled: conf.enabled ?? false
126
+ };
127
+ }
144
128
  function GetInstanceEnvironement(conf) {
145
129
  return {
146
130
  name: getStringOrCall(conf.name),
@@ -216,30 +200,29 @@ function sessionApiURL(host, path) {
216
200
  function toURL(host, path) {
217
201
  return host.endsWith(SLASH) || path.startsWith(SLASH) ? host + path : [host, path].join(SLASH);
218
202
  }
219
- function matchRegex(v, pattern) {
203
+ function matchRegex(v, name, pattern) {
220
204
  if (v && pattern.exec(v)) {
221
- return true;
205
+ return v;
222
206
  }
223
- console.warn("bad value=" + v + ", pattern=" + pattern);
224
- return false;
207
+ throw `bad value ${name}=${v}, pattern=${pattern}`;
225
208
  }
226
- function requirePostitiveValue(v, name) {
227
- if (v == undefined || (v && v > 0)) {
228
- return true;
209
+ function requirePostitiveValue(v, name, defaultValue) {
210
+ if (v && v > 0) {
211
+ return v;
212
+ }
213
+ if (v == undefined) {
214
+ return defaultValue;
229
215
  }
230
- console.warn(name + '=' + v + " <= 0");
231
- return false;
216
+ throw `bad value ${name}= ${v} <= 0`;
232
217
  }
233
218
 
234
219
  class SessionManager {
235
- constructor(router, config, instance) {
236
- this.router = router;
220
+ constructor(config, instance) {
237
221
  this.sessionQueue = [];
238
222
  this.sessionSendAttempts = 0;
239
223
  this.InstanceEnvSendAttempts = 0;
240
224
  this.sendSessionfinished = true;
241
225
  this.sendInstanceEnvFinished = true;
242
- console.log('good');
243
226
  this.config = config;
244
227
  this.instanceEnvironment = instance;
245
228
  this.scheduledSessionSender = interval(this.delay)
@@ -249,23 +232,7 @@ class SessionManager {
249
232
  }
250
233
  }))
251
234
  .subscribe();
252
- }
253
- initialize() {
254
- console.log('pefoj');
255
- logInspect('initialize');
256
- window.addEventListener('beforeunload', (event) => {
257
- this.newSession(); //force
258
- this.sendSessions();
259
- });
260
- this.router.events.subscribe(event => {
261
- if (event instanceof NavigationStart) {
262
- this.newSession(event.url);
263
- }
264
- if (event instanceof NavigationEnd) {
265
- this.getCurrentSession().name = document.title;
266
- this.getCurrentSession().location = document.URL;
267
- }
268
- });
235
+ logInspect('SessionManager initialized');
269
236
  }
270
237
  addSessions(sessions) {
271
238
  this.sessionQueue.push(sessions);
@@ -378,13 +345,13 @@ class SessionManager {
378
345
  getCurrentSession() {
379
346
  return this.currentSession;
380
347
  }
381
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SessionManager, deps: [{ token: i1.Router }, { token: 'config' }, { token: 'instance' }], target: i0.ɵɵFactoryTarget.Injectable }); }
348
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SessionManager, deps: [{ token: 'config' }, { token: 'instance' }], target: i0.ɵɵFactoryTarget.Injectable }); }
382
349
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SessionManager, providedIn: 'root' }); }
383
350
  }
384
351
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SessionManager, decorators: [{
385
352
  type: Injectable,
386
353
  args: [{ providedIn: 'root' }]
387
- }], ctorParameters: function () { return [{ type: i1.Router }, { type: undefined, decorators: [{
354
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
388
355
  type: Inject,
389
356
  args: ['config']
390
357
  }] }, { type: undefined, decorators: [{
@@ -407,7 +374,6 @@ class HttpInterceptorService {
407
374
  id = getReqid(event.headers);
408
375
  }
409
376
  }, error => {
410
- console.log(error);
411
377
  id = getReqid(error.headers);
412
378
  status = +error.status;
413
379
  exception = {
@@ -465,56 +431,33 @@ function sizeOf(body) {
465
431
  return body ? JSON.stringify(body).length : 0;
466
432
  }
467
433
 
468
- class RouteTracerService {
469
- constructor(router) {
470
- this.router = router;
471
- console.log('pezfjpezjf');
472
- }
473
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouteTracerService, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
474
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouteTracerService, providedIn: 'root' }); }
475
- }
476
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouteTracerService, decorators: [{
477
- type: Injectable,
478
- args: [{ providedIn: 'root' }]
479
- }], ctorParameters: function () { return [{ type: i1.Router }]; } });
480
-
481
434
  class NgCollectorModule {
482
435
  static forRoot(configuration) {
483
- try {
484
- let conf = setConfig(configuration);
485
- if (conf.enabled) {
486
- let config = validateAndGetConfig(conf);
487
- let instance = GetInstanceEnvironement(conf);
488
- console.log(conf);
436
+ if (configuration?.enabled) {
437
+ try {
438
+ let config = validateAndGetConfig(configuration);
439
+ let instance = GetInstanceEnvironement(configuration);
440
+ console.log(config);
441
+ console.log(instance);
489
442
  return {
490
443
  ngModule: NgCollectorModule,
491
444
  providers: [
492
445
  SessionManager,
493
- RouteTracerService,
494
- { provide: APP_INITIALIZER, useFactory: initializeRoutingEvents, deps: [SessionManager], multi: true },
446
+ //EventManagerService,
447
+ { provide: APP_INITIALIZER, useFactory: initializeEvents, deps: [Router, SessionManager], multi: true },
495
448
  { provide: HTTP_INTERCEPTORS, useClass: HttpInterceptorService, multi: true },
496
449
  { provide: 'instance', useValue: instance },
497
450
  { provide: 'config', useValue: config }
498
451
  ]
499
452
  };
500
453
  }
501
- }
502
- catch (e) {
503
- console.warn('invalid Configuration, Ng-collector is disabled because', e);
454
+ catch (e) {
455
+ console.warn('invalid Configuration, Ng-collector is disabled because', e);
456
+ }
504
457
  }
505
458
  return {
506
459
  ngModule: NgCollectorModule
507
460
  };
508
- /*if (configuration?.enabled
509
- && matchRegex(host, HOST_PATERN)
510
- && matchRegex(getStringOrCall(configuration?.sessionApi), PATH_PATERN)
511
- && matchRegex(getStringOrCall(configuration?.instanceApi), PATH_PATERN)) {
512
- if(!requirePostitiveValue(getNumberOrCall(configuration?.delay),"delay") ||
513
- !requirePostitiveValue(getNumberOrCall(configuration?.bufferMaxSize),"bufferMaxSize") ){
514
- console.warn('invalid Configuration, Ng-collector is disabled');
515
- return {ngModule: NgCollectorModule}
516
- }
517
- }*/
518
461
  }
519
462
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgCollectorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
520
463
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: NgCollectorModule }); }
@@ -523,9 +466,22 @@ class NgCollectorModule {
523
466
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgCollectorModule, decorators: [{
524
467
  type: NgModule
525
468
  }] });
526
- function initializeRoutingEvents(sessionManager) {
469
+ function initializeEvents(router, sessionManager) {
527
470
  return () => {
528
- sessionManager.initialize();
471
+ logInspect('initialize routing events listeners');
472
+ window.addEventListener('beforeunload', (event) => {
473
+ sessionManager.newSession(); //force
474
+ sessionManager.sendSessions();
475
+ });
476
+ router.events.subscribe(event => {
477
+ if (event instanceof NavigationStart) {
478
+ sessionManager.newSession(event.url);
479
+ }
480
+ if (event instanceof NavigationEnd) {
481
+ sessionManager.getCurrentSession().name = document.title;
482
+ sessionManager.getCurrentSession().location = document.URL;
483
+ }
484
+ });
529
485
  };
530
486
  }
531
487
 
@@ -537,5 +493,5 @@ function initializeRoutingEvents(sessionManager) {
537
493
  * Generated bundle index. Do not edit.
538
494
  */
539
495
 
540
- export { NgCollectorModule, initializeRoutingEvents };
496
+ export { NgCollectorModule, initializeEvents };
541
497
  //# sourceMappingURL=oneteme-inspect-ng-collector.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"oneteme-inspect-ng-collector.mjs","sources":["../../../../projects/oneteme/inspect-ng-collector/src/lib/util.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/configuration.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/session-manager.service.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/http-interceptor.service.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/route-tracer.service.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/ng-collector.module.ts","../../../../projects/oneteme/inspect-ng-collector/src/public-api.ts","../../../../projects/oneteme/inspect-ng-collector/src/oneteme-inspect-ng-collector.ts"],"sourcesContent":["import { MainSession, RestRequest } from \"./trace.model\";\n\nconst WIN:any = window;\n\n\nexport const HOST_PATERN = /https?:\\/\\/[\\w\\-.]+(:\\d{2,5})?\\/?/;\nexport const PATH_PATERN = /[\\w-]+(\\/[\\w-]+)*/;\n\nexport function dateNow() {\n return Date.now() / 1_000;\n}\n\nexport function initDebug(value:boolean){\n WIN[\"inspect\"] = { debug : true };\n}\n\nexport function logInspect(...args: any[]){\n if(WIN[\"inspect\"]?.debug){\n if(args.length == 1 && typeof args[0] == 'function'){\n args = args[0]();\n if(!Array.isArray(args)){\n args = [args];\n }\n }\n console.log('[INSPECT]', ...args);\n }\n}\n\nexport function prettySessionFormat(session: MainSession){\n let s= `[${session.name}]`;\n if(session.user){\n s+= `<${session.user}>`\n }\n if(session.location){\n s+= `(${session.location}) `\n }\n s+=prettyDurationFormat(session.start,session.end!)+'\\n';\n session.restRequests.forEach(r => {\n s+= prettyRestRequestFormat(r)+'\\n';\n })\n return s;\n}\n\nfunction prettyRestRequestFormat(rest: RestRequest){\n let s = ` - [${rest.method}]`\n if(rest.protocol){\n s+= `${rest.protocol}://`\n }\n if(rest.host){\n s+= rest.host\n }\n if(rest.port > 0){\n s+= `:${rest.port}`\n }\n if(rest.path){\n if(!rest.path.startsWith(\"/\") && !s.endsWith(\"/\")){\n s+= '/'\n }\n s+= rest.path;\n }\n if(rest.query){\n s+= rest.query\n }\n if(rest.exception?.type){\n s+= ` ${rest.exception?.type}:`;\n }\n if(rest.exception?.message){\n s+= ` ${rest.exception.message}`;\n }\n s+= ` >> ${rest.status}`\n s+= prettyDurationFormat(rest.start,rest.end);\n return s;\n}\n\nfunction prettyDurationFormat(start:number,end:number){\n return start && end ? `(in ${ (end - start).toFixed(2) } ms)` : '';\n}\n\n\n\nexport function matchRegex(v: string | undefined, pattern: RegExp) {\n if(v && pattern.exec(v)){\n return true;\n }\n console.warn(\"bad value=\" + v + \", pattern=\" + pattern);\n return false;\n}\n\nexport function requirePostitiveValue(v: number | undefined, name: string){\n if(v == undefined || (v && v > 0)) {\n return true;\n }\n console.warn(name +'='+ v + \" <= 0\");\n return false;\n}\n\n\n\n\n","import { dateNow } from \"./util\";\nconst SLASH = '/';\nconst HOST_PATERN = /https?:\\/\\/[\\w\\-.]+(:\\d{2,5})?\\/?/;\nconst PATH_PATERN = /[\\w-]+(\\/[\\w-]+)*/;\nexport interface ApplicationConf {\n host?: string;\n name?: string | (() => string);\n version?: string | (() => string);\n env?: string | (() => string);\n user?: string | (() => string);\n bufferMaxSize?: number | (() => number);\n delay?: number| (() => number);\n instanceApi?: string | (() => string);\n sessionApi?: string | (() => string);\n exclude?: RegExp[] | (() => RegExp[]);\n debug?: boolean;\n enabled?: boolean;\n}\n\nexport interface TechnicalConf {\n user:string ;\n bufferMaxSize: number;\n delay: number;\n instanceApi: string;\n sessionApi: string;\n exclude: RegExp[];\n debug: boolean;\n enabled: boolean;\n}\n\n const validationMap = { // remove \n host: { func: matchRegex, args: [HOST_PATERN] },\n bufferMaxSize: { func: requirePostitiveValue, args: [HOST_PATERN] },\n delay: { func: matchRegex, args: [HOST_PATERN] },\n instanceApi: { func: matchRegex, args: [HOST_PATERN] },\n sessionApi: { func: matchRegex, args: [HOST_PATERN] }\n }\n\nexport function setConfig(conf:ApplicationConf){\n return {\n host: conf.host,\n name: getStringOrCall(conf.name) ?? '',\n version: getStringOrCall(conf.version) ?? '',\n env: getStringOrCall(conf.env)?? '',\n user: getStringOrCall(conf.user) ?? '',\n bufferMaxSize: getNumberOrCall(conf.bufferMaxSize),\n delay: getNumberOrCall(conf.delay),\n instanceApi: getStringOrCall(conf.sessionApi),\n sessionApi: getStringOrCall(conf.instanceApi),\n exclude: getRegArrOrCall(conf.exclude) ?? [], \n debug: conf?.debug ?? false,\n enabled: conf.enabled || false\n }\n /*\n this.logServerMain = this.sessionApiURL(host,getStringOrCall(config.sessionApi)!);\n this.logInstanceEnv = this.instanceApiURL(host,getStringOrCall(config.instanceApi)!);\n this.maxBufferSize = getNumberOrCall(config.bufferMaxSize) ?? 1000;\n this.delay = getNumberOrCall(config.delay) ?? 60000;\n */\n} \n\nexport function validateAndGetConfig(conf:any):TechnicalConf{\n let host = validateProperty(conf.host, ()=> matchRegex(conf.host, HOST_PATERN) )\n let sessionApi = validateProperty( conf.sessionApi,()=> matchRegex(conf.sessionApi, PATH_PATERN) )\n let instanceApi = validateProperty( conf.instanceApi,()=> matchRegex(conf.sessionApi, PATH_PATERN))\n return {\n user : conf.user,\n bufferMaxSize: validateProperty( conf.delay,()=> requirePostitiveValue(conf.delay,\"bufferMaxSize\")) ?? 1000,\n delay: validateProperty( conf.delay,()=> requirePostitiveValue(conf.delay,\"delay\")) ?? 60000,\n instanceApi: sessionApiURL(host, sessionApi),\n sessionApi: instanceApiURL(host, instanceApi),\n exclude: conf.exclude,\n debug: conf.debug,\n enabled: conf.enabled\n }\n}\n\nexport function validateProperty(value:any, func : (...args:any)=> boolean){\n if(func()){\n return value;\n }\n throw new Error('error') // pass the error return from the the passed function \n}\n\nexport function GetInstanceEnvironement(conf:any){\n return {\n name: getStringOrCall(conf.name),\n version: getStringOrCall(conf.version),\n address: undefined, //server side\n env: getStringOrCall(conf.env),\n os: detectOs(),\n re: detectBrowser(),\n user: undefined, // cannot get user\n type: \"CLIENT\",\n instant: dateNow(),\n collector: \"inspect-ng-collector-0.0.1\"\n }\n}\n\nexport function getNumberOrCall(o?: number | (() => number)): number | undefined {\n return typeof o === \"function\" ? o() : o;\n}\n\nexport function getStringOrCall(o?: string | (() => string)): string | undefined {\n return typeof o === \"function\" ? o() : o;\n}\n\nexport function getRegArrOrCall(o?: RegExp[] | (() => RegExp[])): RegExp[] | undefined {\n return typeof o === \"function\" ? o() : o;\n}\n\nexport function detectBrowser() {\n try {\n const agent = window.navigator.userAgent.toLowerCase()\n switch (true) {\n case agent.indexOf('edge') > -1:\n return 'edge';\n case agent.indexOf('opr') > -1:\n return 'opera';\n case agent.indexOf('chrome') > -1:\n return 'chrome';\n case agent.indexOf('firefox') > -1:\n return 'firefox';\n case agent.indexOf('safari') > -1:\n return 'safari';\n }\n }\n catch (e) {\n console.error(e);\n }\n return undefined;\n}\n\nexport function detectOs() {\n try {\n let versionMatch, version;\n const agent = window.navigator.userAgent.toLowerCase()\n switch (true) {\n case (/windows/.test(agent)):\n\n versionMatch = /windows nt (\\d+\\.\\d+)/.exec(agent);\n version = versionMatch ? versionMatch[1] : 'Unknown';\n return `Windows ${version}`;\n case (/linux/.test(agent)):\n return 'Linux';\n\n case (/macintosh/.test(agent)):\n versionMatch = /mac os x (\\d+[._]\\d+[._]\\d+)/.exec(agent);\n version = versionMatch ? versionMatch[1] : 'Unknown';\n return `MacOs ${version}`\n }\n }\n catch (e) {\n console.error(e);\n }\n return undefined;\n}\n\nfunction instanceApiURL(host:string, path:string){\n return toURL(host,path);\n}\n\nfunction sessionApiURL(host:string, path:string){\n return toURL(host,path);\n}\n\nfunction toURL( host:string, path:string ){\n return host.endsWith(SLASH) || path.startsWith(SLASH) ? host + path : [host,path].join(SLASH);\n}\n\nexport function matchRegex(v: string | undefined, pattern: RegExp) {\n if(v && pattern.exec(v)){\n return true;\n }\n console.warn(\"bad value=\" + v + \", pattern=\" + pattern);\n return false;\n}\n\nexport function requirePostitiveValue(v: number | undefined, name: string){\n if(v == undefined || (v && v > 0)) {\n return true;\n }\n console.warn(name +'='+ v + \" <= 0\");\n return false;\n}\n\n","import { Inject, Injectable, OnDestroy } from '@angular/core';\nimport { InstanceEnvironment, MainSession } from './trace.model';\nimport { BehaviorSubject, from, interval, Observable, of, Subscription, tap } from 'rxjs';\nimport { dateNow,logInspect, prettySessionFormat } from './util';\nimport { TechnicalConf } from './configuration';\nimport { NavigationEnd, NavigationStart, Router } from '@angular/router';\n\n\n\n@Injectable({ providedIn: 'root' })\nexport class SessionManager implements OnDestroy {\n maxBufferSize!: number;\n delay!:number\n instanceEnvironment : InstanceEnvironment;\n scheduledSessionSender!: Subscription;\n sessionQueue: MainSession[]= [];\n sessionSendAttempts: number = 0\n InstanceEnvSendAttempts: number = 0;\n instance!: BehaviorSubject<string>;\n sendSessionfinished:boolean= true;\n sendInstanceEnvFinished: boolean = true;\n \n\n currentSession!: MainSession;\n config: TechnicalConf;\n constructor( private router: Router,\n @Inject('config') config: TechnicalConf,\n @Inject('instance') instance: InstanceEnvironment){\n\n console.log( 'good')\n this.config = config;\n this.instanceEnvironment = instance;\n this.scheduledSessionSender = interval(this.delay)\n .pipe(tap(()=> {\n if(this.sendSessionfinished){\n this.sendSessions();\n }}))\n .subscribe();\n }\n\n\n initialize( ) {\n console.log('pefoj')\n logInspect('initialize');\n window.addEventListener('beforeunload', (event: BeforeUnloadEvent): void => {\n this.newSession();//force \n this.sendSessions();\n });\n this.router.events.subscribe(event => {\n if (event instanceof NavigationStart) {\n this.newSession(event.url);\n }\n if (event instanceof NavigationEnd) {\n this.getCurrentSession().name = document.title;\n this.getCurrentSession().location = document.URL; \n }\n })\n }\n\n addSessions(sessions:MainSession){\n this.sessionQueue.push(sessions);\n logInspect(\"added element to session queue, new size is: \"+ this.sessionQueue.length);\n }\n\n\n newSession(url?:string){\n if(this.currentSession){\n this.currentSession.end = dateNow();\n if(this.config.exclude.every((e) => !e.test(this.currentSession.location))){\n this.addSessions(this.currentSession);\n }\n logInspect(()=>prettySessionFormat(this.currentSession));\n }\n if(url){\n this.currentSession = {\n '@type': \"main\",\n user: this.config.user,\n start: dateNow(),\n type: \"VIEW\",\n location: url,\n restRequests: []\n }\n }\n }\n\n\n\n sendSessions() {\n if(this.sessionQueue.length> 0){\n this.getInsertedInstanceId().subscribe((id:string|null)=>{\n if(id) {\n this.sendSessionfinished = false;\n let sessions: MainSession[] = [...this.sessionQueue];\n this.sessionQueue.splice(0,sessions.length); // add rest of sessions\n logInspect(`sending sessions, attempts:${++this.sessionSendAttempts}, queue size : ${sessions.length}`)\n\n const requestOptions: RequestInit = {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n },\n mode : 'cors',\n body: JSON.stringify(sessions)\n };\n\n fetch(this.config.sessionApi, requestOptions)\n .then(data=> {\n if(data.ok){\n logInspect('sessions sent successfully, queue size reset, new size is: '+this.sessionQueue.length)\n this.sessionSendAttempts= 0;\n }else{\n console.warn(`Error while attempting to send sessions, attempts: ${this.sessionSendAttempts}`)//\n this.revertQueueSize(sessions);\n }\n })\n .catch(error => {\n console.warn(`Error while attempting to send sessions, attempts: ${this.sessionSendAttempts}`,error)//\n this.revertQueueSize(sessions);\n }).finally( ()=> {\n this.sendSessionfinished = true;\n })\n\n }else {\n console.warn(`Error while attempting to send Environement instance, attempts ${this.sessionSendAttempts}`);\n }\n })\n }\n }\n\n revertQueueSize(sessions: MainSession[]){\n this.sessionQueue.unshift(...sessions);\n if(this.sessionQueue.length > this.maxBufferSize ){\n let diff = this.sessionQueue.length - this.maxBufferSize;\n this.sessionQueue = this.sessionQueue.slice(0,this.maxBufferSize);\n logInspect('Buffer size exeeded the max size,last sessions have been removed from buffer, (number of sessions removed):'+diff)\n }\n }\n\n getInsertedInstanceId() : Observable<any> {\n if(this.instance){\n return this.instance;\n }\n if(this.sendInstanceEnvFinished){// move up in send session ? \n this.sendInstanceEnvFinished = false;\n const requestOptions: RequestInit = {\n \n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n mode: 'cors',\n body: JSON.stringify(this.instanceEnvironment)\n };\n this.sessionSendAttempts++;\n return from( fetch(this.config.instanceApi, requestOptions)\n .then(res => res.ok ? res.text().then(id=> {\n this.instance = new BehaviorSubject<string>(id);\n this.config.sessionApi = this.config.sessionApi .replace(':id',id);\n this.sessionSendAttempts=0;\n logInspect('Environement instance sent successfully');\n return id; \n }) : null)\n .catch(err => {\n console.warn(err)\n return null;\n }).finally(()=> {\n this.sendInstanceEnvFinished = true;\n }))\n }\n return of(null);\n }\n\n \n\n ngOnDestroy(): void {\n if(this.scheduledSessionSender){\n this.scheduledSessionSender.unsubscribe();\n }\n }\n\n getCurrentSession() {\n return this.currentSession;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { HttpInterceptor, HttpEvent, HttpHandler, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { tap, finalize } from 'rxjs/operators'\nimport { ExceptionInfo } from './trace.model';\nimport { dateNow } from './util';\nimport { SessionManager } from './session-manager.service';\n\n@Injectable({ providedIn: 'root' })\nexport class HttpInterceptorService implements HttpInterceptor {\n\n constructor(private SessionManager: SessionManager) { } // change this to session manager\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n const start = dateNow();\n let status: number, responseBody: any = '', exception: ExceptionInfo;\n let id: string| undefined;\n return next.handle(req).pipe(tap(\n (event: any) => {\n if (event instanceof HttpResponse) {\n status = +event.status;\n responseBody = event.body\n id = getReqid(event.headers);\n }\n },\n error => {\n console.log(error)\n id = getReqid(error.headers);\n status = +error.status;\n exception = {\n type: error.error.error,\n message: error.error.message\n }\n },\n ), finalize(() => {\n\n const url = toHref(req.urlWithParams);\n this.SessionManager.getCurrentSession().restRequests.push({\n id: id,\n method: req.method,\n protocol: url.protocol.slice(0, -1),\n host: exctractHost(url.host),\n port: +url.port,\n path: url.pathname,\n query: url.search.slice(1, url.search.length),\n contentType: req.responseType,\n authScheme: extractAuthScheme(req.headers),\n status: +status,\n inDataSize: sizeOf(responseBody),\n ouDataSize: sizeOf(req.body),\n start: start,\n end: dateNow(),\n exception: exception\n });\n }));\n }\n}\n\nfunction toHref(url: string): HTMLAnchorElement {\n const href = document.createElement('a');\n href.setAttribute('href', url);\n return href;\n}\n\nfunction exctractHost(path: string) {\n const portregex = /:\\d+/;\n return path.replace(portregex, '')\n}\n\nfunction extractAuthScheme(headers: any): string | undefined {\n return headers.has('authorization')\n ? headers.get('authorization').match(/^(\\w+) /)?.at(1)\n : undefined;\n}\n\nfunction getReqid(headers:any):string | undefined {\n return headers.has('x-tracert')\n ? headers.get('x-tracert')\n : undefined;\n}\n\nfunction sizeOf(body: any): number {\n return body ? JSON.stringify(body).length : 0;\n}\n","import { Inject, Injectable, OnDestroy} from \"@angular/core\";\nimport { NavigationEnd, NavigationStart, Router } from \"@angular/router\";\nimport { MainSession } from \"./trace.model\";\n\nimport { dateNow,initDebug, logInspect, prettySessionFormat } from \"./util\";\nimport { SessionManager } from \"./session-manager.service\";\n\n\n@Injectable({ providedIn: 'root' }) \nexport class RouteTracerService {\n\n\n currentSession!: MainSession; \n user?: string;\n trySendInstanceEnv:any;\n excludeList: RegExp[] | undefined;\n\n constructor(private router: Router) {\n console.log('pezfjpezjf')\n }\n\n \n\n \n\n \n}\n\n","import { NgModule, APP_INITIALIZER, ModuleWithProviders } from '@angular/core';\nimport { HTTP_INTERCEPTORS, } from '@angular/common/http';\n\nimport { logInspect } from './util';\n\nimport { NavigationEnd, NavigationStart, Router } from '@angular/router';\nimport { ApplicationConf, GetInstanceEnvironement, setConfig, validateAndGetConfig } from './configuration';\nimport { HttpInterceptorService } from './http-interceptor.service';\nimport { SessionManager } from './session-manager.service';\nimport { RouteTracerService } from './route-tracer.service';\n\n\n\n@NgModule()\nexport class NgCollectorModule {\n\n static forRoot(configuration: ApplicationConf): ModuleWithProviders<NgCollectorModule> {\n try{\n let conf = setConfig(configuration);\n if(conf.enabled){\n let config = validateAndGetConfig(conf);\n let instance = GetInstanceEnvironement(conf);\n console.log(conf)\n return {\n ngModule: NgCollectorModule,\n providers: [\n SessionManager, // to be removed and add session manager instead \n RouteTracerService,\n { provide: APP_INITIALIZER, useFactory: initializeRoutingEvents, deps: [SessionManager], multi: true },\n { provide: HTTP_INTERCEPTORS, useClass: HttpInterceptorService, multi: true },\n { provide: 'instance', useValue: instance },\n { provide: 'config', useValue: config }\n ]\n };\n }\n\n }catch(e){\n console.warn('invalid Configuration, Ng-collector is disabled because', e);\n }\n return {\n ngModule: NgCollectorModule\n }\n\n /*if (configuration?.enabled\n && matchRegex(host, HOST_PATERN)\n && matchRegex(getStringOrCall(configuration?.sessionApi), PATH_PATERN)\n && matchRegex(getStringOrCall(configuration?.instanceApi), PATH_PATERN)) {\n if(!requirePostitiveValue(getNumberOrCall(configuration?.delay),\"delay\") ||\n !requirePostitiveValue(getNumberOrCall(configuration?.bufferMaxSize),\"bufferMaxSize\") ){\n console.warn('invalid Configuration, Ng-collector is disabled');\n return {ngModule: NgCollectorModule}\n } \n }*/\n }\n}\n\nexport function initializeRoutingEvents(sessionManager: SessionManager) { \n \n return () => {\n sessionManager.initialize();\n }\n}\n\n\n","/*\n * Public API Surface of inspect-ng-collector\n */\n\n\nexport * from './lib/ng-collector.module';\n\n ","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["HOST_PATERN","PATH_PATERN","matchRegex","requirePostitiveValue","tap","i1.SessionManager"],"mappings":"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"}
1
+ {"version":3,"file":"oneteme-inspect-ng-collector.mjs","sources":["../../../../projects/oneteme/inspect-ng-collector/src/lib/util.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/configuration.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/session-manager.service.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/http-interceptor.service.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/ng-collector.module.ts","../../../../projects/oneteme/inspect-ng-collector/src/public-api.ts","../../../../projects/oneteme/inspect-ng-collector/src/oneteme-inspect-ng-collector.ts"],"sourcesContent":["import { MainSession, RestRequest } from \"./trace.model\";\n\nconst WIN:any = window;\n\n\n\nexport function dateNow() {\n return Date.now() / 1_000;\n}\n\nexport function initDebug(value:boolean){\n WIN[\"inspect\"] = { debug : true };\n}\n\nexport function logInspect(...args: any[]){\n if(WIN[\"inspect\"]?.debug){\n if(args.length == 1 && typeof args[0] == 'function'){\n args = args[0]();\n if(!Array.isArray(args)){\n args = [args];\n }\n }\n console.log('[INSPECT]', ...args);\n }\n}\n\nexport function prettySessionFormat(session: MainSession){\n let s= `[${session.name}]`;\n if(session.user){\n s+= `<${session.user}>`\n }\n if(session.location){\n s+= `(${session.location}) `\n }\n s+=prettyDurationFormat(session.start,session.end!)+'\\n';\n session.restRequests.forEach(r => {\n s+= prettyRestRequestFormat(r)+'\\n';\n })\n return s;\n}\n\nfunction prettyRestRequestFormat(rest: RestRequest){\n let s = ` - [${rest.method}]`\n if(rest.protocol){\n s+= `${rest.protocol}://`\n }\n if(rest.host){\n s+= rest.host\n }\n if(rest.port > 0){\n s+= `:${rest.port}`\n }\n if(rest.path){\n if(!rest.path.startsWith(\"/\") && !s.endsWith(\"/\")){\n s+= '/'\n }\n s+= rest.path;\n }\n if(rest.query){\n s+= rest.query\n }\n if(rest.exception?.type){\n s+= ` ${rest.exception?.type}:`;\n }\n if(rest.exception?.message){\n s+= ` ${rest.exception.message}`;\n }\n s+= ` >> ${rest.status}`\n s+= prettyDurationFormat(rest.start,rest.end);\n return s;\n}\n\nfunction prettyDurationFormat(start:number,end:number){\n return start && end ? `(in ${ (end - start).toFixed(2) } ms)` : '';\n}\n\n\n\n","import { dateNow, initDebug } from \"./util\";\nconst SLASH = '/';\nconst HOST_PATERN = /https?:\\/\\/[\\w\\-.]+(:\\d{2,5})?\\/?/;\nconst PATH_PATERN = /[\\w-]+(\\/[\\w-]+)*/;\nexport interface ApplicationConf {\n host?: string;\n name?: string | (() => string);\n version?: string | (() => string);\n env?: string | (() => string);\n user?: string | (() => string);\n bufferMaxSize?: number | (() => number);\n delay?: number| (() => number);\n instanceApi?: string | (() => string);\n sessionApi?: string | (() => string);\n exclude?: RegExp[] | (() => RegExp[]);\n debug?: boolean;\n enabled?: boolean;\n}\n\nexport interface TechnicalConf {\n user?:string ;\n bufferMaxSize: number;\n delay: number;\n instanceApi: string;\n sessionApi: string;\n exclude: RegExp[];\n debug: boolean;\n enabled: boolean;\n}\n\n const validationMap = { // remove \n host: { func: matchRegex, args: [HOST_PATERN] },\n bufferMaxSize: { func: requirePostitiveValue, args: [HOST_PATERN] },\n delay: { func: matchRegex, args: [HOST_PATERN] },\n instanceApi: { func: matchRegex, args: [HOST_PATERN] },\n sessionApi: { func: matchRegex, args: [HOST_PATERN] }\n }\n\nexport function setConfig(conf:ApplicationConf){\n return {\n host: conf.host,\n name: getStringOrCall(conf.name),\n version: getStringOrCall(conf.version) ?? '',\n env: getStringOrCall(conf.env)?? '',\n user: getStringOrCall(conf.user) ?? '',\n bufferMaxSize: getNumberOrCall(conf.bufferMaxSize),\n delay: getNumberOrCall(conf.delay),\n instanceApi: getStringOrCall(conf.sessionApi),\n sessionApi: getStringOrCall(conf.instanceApi),\n exclude: getRegArrOrCall(conf.exclude) ?? [], \n debug: conf.debug ?? false,\n enabled: conf.enabled ?? false\n }\n /*\n this.logServerMain = this.sessionApiURL(host,getStringOrCall(config.sessionApi)!);\n this.logInstanceEnv = this.instanceApiURL(host,getStringOrCall(config.instanceApi)!);\n this.maxBufferSize = getNumberOrCall(config.bufferMaxSize) ?? 1000;\n this.delay = getNumberOrCall(config.delay) ?? 60000;\n */\n} \n\nexport function validateProperty(value:any, func : (...args:any)=> boolean){\n if(func()){\n return value;\n }\n throw new Error('error') // pass the error return from the the passed function \n}\n\n\n\nexport function validateAndGetConfig(conf:any):TechnicalConf{\n let host = matchRegex(getStringOrCall(conf.host), \"host\" , HOST_PATERN) \n let sessionApi = matchRegex(getStringOrCall(conf.sessionApi),'sessionApi', PATH_PATERN) \n let instanceApi = matchRegex(getStringOrCall(conf.instanceApi),'intanceApi', PATH_PATERN)\n initDebug(conf.debug ?? false);\n return {\n user : getStringOrCall(conf.user),\n bufferMaxSize: requirePostitiveValue(getNumberOrCall(conf.delay),\"bufferMaxSize\", 1000) ,\n delay: requirePostitiveValue(getNumberOrCall(conf.delay),\"delay\", 60000) ,\n instanceApi: sessionApiURL(host, sessionApi),\n sessionApi: instanceApiURL(host, instanceApi),\n exclude: getRegArrOrCall(conf.exclude) || [],\n debug: conf.debug ?? false,\n enabled: conf.enabled ?? false\n }\n}\n\nexport function GetInstanceEnvironement(conf:ApplicationConf){\n return {\n name: getStringOrCall(conf.name),\n version: getStringOrCall(conf.version),\n address: undefined, //server side\n env: getStringOrCall(conf.env),\n os: detectOs(),\n re: detectBrowser(),\n user: undefined, // cannot get user\n type: \"CLIENT\",\n instant: dateNow(),\n collector: \"inspect-ng-collector-0.0.1\"\n }\n}\n\nexport function getNumberOrCall(o?: number | (() => number)): number | undefined {\n return typeof o === \"function\" ? o() : o;\n}\n\nexport function getStringOrCall(o?: string | (() => string)): string | undefined {\n return typeof o === \"function\" ? o() : o;\n}\n\nexport function getRegArrOrCall(o?: RegExp[] | (() => RegExp[])): RegExp[] | undefined {\n return typeof o === \"function\" ? o() : o;\n}\n\nexport function detectBrowser() {\n try {\n const agent = window.navigator.userAgent.toLowerCase()\n switch (true) {\n case agent.indexOf('edge') > -1:\n return 'edge';\n case agent.indexOf('opr') > -1:\n return 'opera';\n case agent.indexOf('chrome') > -1:\n return 'chrome';\n case agent.indexOf('firefox') > -1:\n return 'firefox';\n case agent.indexOf('safari') > -1:\n return 'safari';\n }\n }\n catch (e) {\n console.error(e);\n }\n return undefined;\n}\n\nexport function detectOs() {\n try {\n let versionMatch, version;\n const agent = window.navigator.userAgent.toLowerCase()\n switch (true) {\n case (/windows/.test(agent)):\n versionMatch = /windows nt (\\d+\\.\\d+)/.exec(agent);\n version = versionMatch ? versionMatch[1] : 'Unknown';\n return `Windows ${version}`;\n case (/linux/.test(agent)):\n return 'Linux';\n\n case (/macintosh/.test(agent)):\n versionMatch = /mac os x (\\d+[._]\\d+[._]\\d+)/.exec(agent);\n version = versionMatch ? versionMatch[1] : 'Unknown';\n return `MacOs ${version}`\n }\n }\n catch (e) {\n console.error(e);\n }\n return undefined;\n}\n\nfunction instanceApiURL(host:string, path:string){\n return toURL(host,path);\n}\n\nfunction sessionApiURL(host:string, path:string){\n return toURL(host,path);\n}\n\nfunction toURL(host:string, path:string ){\n return host.endsWith(SLASH) || path.startsWith(SLASH) ? host + path : [host,path].join(SLASH);\n}\n\nexport function matchRegex(v: string | undefined, name: string, pattern: RegExp,) {\n if(v && pattern.exec(v)){\n return v;\n }\n throw `bad value ${name}=${v}, pattern=${pattern}`;\n}\n\nexport function requirePostitiveValue(v: number | undefined, name: string, defaultValue:number){\n if(v && v > 0) {\n return v;\n }\n if(v == undefined){\n return defaultValue;\n }\n throw `bad value ${name}= ${v} <= 0` \n}\n\n","import { Inject, Injectable, OnDestroy } from '@angular/core';\nimport { InstanceEnvironment, MainSession } from './trace.model';\nimport { BehaviorSubject, from, interval, Observable, of, Subscription, tap } from 'rxjs';\nimport { dateNow,logInspect, prettySessionFormat } from './util';\nimport { TechnicalConf } from './configuration';\n\n\n@Injectable({ providedIn: 'root' })\nexport class SessionManager implements OnDestroy {\n maxBufferSize!: number;\n delay!:number\n instanceEnvironment : InstanceEnvironment;\n scheduledSessionSender!: Subscription;\n sessionQueue: MainSession[]= [];\n sessionSendAttempts: number = 0\n InstanceEnvSendAttempts: number = 0;\n instance!: BehaviorSubject<string>;\n sendSessionfinished:boolean= true;\n sendInstanceEnvFinished: boolean = true;\n \n\n currentSession!: MainSession;\n config: TechnicalConf;\n constructor( @Inject('config') config: TechnicalConf,\n @Inject('instance') instance: InstanceEnvironment){\n this.config = config;\n this.instanceEnvironment = instance;\n this.scheduledSessionSender = interval(this.delay)\n .pipe(tap(()=> {\n if(this.sendSessionfinished){\n this.sendSessions();\n }}))\n .subscribe();\n logInspect('SessionManager initialized');\n }\n\n\n\n addSessions(sessions:MainSession){\n this.sessionQueue.push(sessions);\n logInspect(\"added element to session queue, new size is: \"+ this.sessionQueue.length);\n }\n\n\n newSession(url?:string){\n if(this.currentSession){\n this.currentSession.end = dateNow();\n if(this.config.exclude.every((e) => !e.test(this.currentSession.location))){\n this.addSessions(this.currentSession);\n }\n logInspect(()=>prettySessionFormat(this.currentSession));\n }\n if(url){\n this.currentSession = {\n '@type': \"main\",\n user: this.config.user,\n start: dateNow(),\n type: \"VIEW\",\n location: url,\n restRequests: []\n }\n }\n }\n\n\n\n sendSessions() {\n if(this.sessionQueue.length> 0){\n this.getInsertedInstanceId().subscribe((id:string|null)=>{\n if(id) {\n this.sendSessionfinished = false;\n let sessions: MainSession[] = [...this.sessionQueue];\n this.sessionQueue.splice(0,sessions.length); // add rest of sessions\n logInspect(`sending sessions, attempts:${++this.sessionSendAttempts}, queue size : ${sessions.length}`)\n\n const requestOptions: RequestInit = {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n },\n mode : 'cors',\n body: JSON.stringify(sessions)\n };\n\n fetch(this.config.sessionApi, requestOptions)\n .then(data=> {\n if(data.ok){\n logInspect('sessions sent successfully, queue size reset, new size is: '+this.sessionQueue.length)\n this.sessionSendAttempts= 0;\n }else{\n console.warn(`Error while attempting to send sessions, attempts: ${this.sessionSendAttempts}`)//\n this.revertQueueSize(sessions);\n }\n })\n .catch(error => {\n console.warn(`Error while attempting to send sessions, attempts: ${this.sessionSendAttempts}`,error)//\n this.revertQueueSize(sessions);\n }).finally( ()=> {\n this.sendSessionfinished = true;\n })\n\n }else {\n console.warn(`Error while attempting to send Environement instance, attempts ${this.sessionSendAttempts}`);\n }\n })\n }\n }\n\n revertQueueSize(sessions: MainSession[]){\n this.sessionQueue.unshift(...sessions);\n if(this.sessionQueue.length > this.maxBufferSize ){\n let diff = this.sessionQueue.length - this.maxBufferSize;\n this.sessionQueue = this.sessionQueue.slice(0,this.maxBufferSize);\n logInspect('Buffer size exeeded the max size,last sessions have been removed from buffer, (number of sessions removed):'+diff)\n }\n }\n\n getInsertedInstanceId() : Observable<any> {\n if(this.instance){\n return this.instance;\n }\n if(this.sendInstanceEnvFinished){// move up in send session ? \n this.sendInstanceEnvFinished = false;\n const requestOptions: RequestInit = {\n \n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n mode: 'cors',\n body: JSON.stringify(this.instanceEnvironment)\n };\n this.sessionSendAttempts++;\n return from( fetch(this.config.instanceApi, requestOptions)\n .then(res => res.ok ? res.text().then(id=> {\n this.instance = new BehaviorSubject<string>(id);\n this.config.sessionApi = this.config.sessionApi .replace(':id',id);\n this.sessionSendAttempts=0;\n logInspect('Environement instance sent successfully');\n return id; \n }) : null)\n .catch(err => {\n console.warn(err)\n return null;\n }).finally(()=> {\n this.sendInstanceEnvFinished = true;\n }))\n }\n return of(null);\n }\n\n \n\n ngOnDestroy(): void {\n if(this.scheduledSessionSender){\n this.scheduledSessionSender.unsubscribe();\n }\n }\n\n getCurrentSession() {\n return this.currentSession;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { HttpInterceptor, HttpEvent, HttpHandler, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { tap, finalize } from 'rxjs/operators'\nimport { ExceptionInfo } from './trace.model';\nimport { dateNow } from './util';\nimport { SessionManager } from './session-manager.service';\n\n@Injectable({ providedIn: 'root' })\nexport class HttpInterceptorService implements HttpInterceptor {\n\n constructor(private SessionManager: SessionManager) { } // change this to session manager\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n const start = dateNow();\n let status: number, responseBody: any = '', exception: ExceptionInfo;\n let id: string| undefined;\n return next.handle(req).pipe(tap(\n (event: any) => {\n if (event instanceof HttpResponse) {\n status = +event.status;\n responseBody = event.body\n id = getReqid(event.headers);\n }\n },\n error => {\n id = getReqid(error.headers);\n status = +error.status;\n exception = {\n type: error.error.error,\n message: error.error.message\n }\n },\n ), finalize(() => {\n\n const url = toHref(req.urlWithParams);\n this.SessionManager.getCurrentSession().restRequests.push({\n id: id,\n method: req.method,\n protocol: url.protocol.slice(0, -1),\n host: exctractHost(url.host),\n port: +url.port,\n path: url.pathname,\n query: url.search.slice(1, url.search.length),\n contentType: req.responseType,\n authScheme: extractAuthScheme(req.headers),\n status: +status,\n inDataSize: sizeOf(responseBody),\n ouDataSize: sizeOf(req.body),\n start: start,\n end: dateNow(),\n exception: exception\n });\n }));\n }\n}\n\nfunction toHref(url: string): HTMLAnchorElement {\n const href = document.createElement('a');\n href.setAttribute('href', url);\n return href;\n}\n\nfunction exctractHost(path: string) {\n const portregex = /:\\d+/;\n return path.replace(portregex, '')\n}\n\nfunction extractAuthScheme(headers: any): string | undefined {\n return headers.has('authorization')\n ? headers.get('authorization').match(/^(\\w+) /)?.at(1)\n : undefined;\n}\n\nfunction getReqid(headers:any):string | undefined {\n return headers.has('x-tracert')\n ? headers.get('x-tracert')\n : undefined;\n}\n\nfunction sizeOf(body: any): number {\n return body ? JSON.stringify(body).length : 0;\n}\n","import { NgModule, APP_INITIALIZER, ModuleWithProviders } from '@angular/core';\nimport { HTTP_INTERCEPTORS, } from '@angular/common/http';\nimport { logInspect } from './util';\nimport { NavigationEnd, NavigationStart, Router } from '@angular/router';\nimport { ApplicationConf, GetInstanceEnvironement, setConfig, validateAndGetConfig } from './configuration';\nimport { HttpInterceptorService } from './http-interceptor.service';\nimport { SessionManager } from './session-manager.service';\nimport { EventManagerService } from './event-manager.service';\n\n\n\n\n@NgModule()\nexport class NgCollectorModule {\n\n static forRoot(configuration: ApplicationConf): ModuleWithProviders<NgCollectorModule> {\n if(configuration?.enabled){\n try{\n let config = validateAndGetConfig(configuration);\n let instance = GetInstanceEnvironement(configuration);\n\n console.log(config)\n console.log(instance)\n return {\n ngModule: NgCollectorModule,\n providers: [\n SessionManager, \n //EventManagerService,\n { provide: APP_INITIALIZER, useFactory: initializeEvents, deps: [Router, SessionManager], multi: true },\n { provide: HTTP_INTERCEPTORS, useClass: HttpInterceptorService, multi: true },\n { provide: 'instance', useValue: instance },\n { provide: 'config', useValue: config }\n ]\n };\n \n }catch(e){\n console.warn('invalid Configuration, Ng-collector is disabled because', e);\n }\n }\n return {\n ngModule: NgCollectorModule\n }\n }\n}\n\n\nexport function initializeEvents(router:Router, sessionManager: SessionManager) {\n return () => {\n logInspect('initialize routing events listeners');\n window.addEventListener('beforeunload', (event: BeforeUnloadEvent): void => {\n sessionManager.newSession();//force \n sessionManager.sendSessions();\n });\n router.events.subscribe(event => {\n if (event instanceof NavigationStart) {\n sessionManager.newSession(event.url);\n }\n if (event instanceof NavigationEnd) {\n sessionManager.getCurrentSession().name = document.title;\n sessionManager.getCurrentSession().location = document.URL; \n }\n })\n }\n}\n\n\n","/*\n * Public API Surface of inspect-ng-collector\n */\n\n\nexport * from './lib/ng-collector.module';\n\n ","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["tap","i1.SessionManager"],"mappings":"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"}
@@ -13,7 +13,7 @@ export interface ApplicationConf {
13
13
  enabled?: boolean;
14
14
  }
15
15
  export interface TechnicalConf {
16
- user: string;
16
+ user?: string;
17
17
  bufferMaxSize: number;
18
18
  delay: number;
19
19
  instanceApi: string;
@@ -24,7 +24,7 @@ export interface TechnicalConf {
24
24
  }
25
25
  export declare function setConfig(conf: ApplicationConf): {
26
26
  host: string | undefined;
27
- name: string;
27
+ name: string | undefined;
28
28
  version: string;
29
29
  env: string;
30
30
  user: string;
@@ -36,9 +36,9 @@ export declare function setConfig(conf: ApplicationConf): {
36
36
  debug: boolean;
37
37
  enabled: boolean;
38
38
  };
39
- export declare function validateAndGetConfig(conf: any): TechnicalConf;
40
39
  export declare function validateProperty(value: any, func: (...args: any) => boolean): any;
41
- export declare function GetInstanceEnvironement(conf: any): {
40
+ export declare function validateAndGetConfig(conf: any): TechnicalConf;
41
+ export declare function GetInstanceEnvironement(conf: ApplicationConf): {
42
42
  name: string | undefined;
43
43
  version: string | undefined;
44
44
  address: undefined;
@@ -55,5 +55,5 @@ export declare function getStringOrCall(o?: string | (() => string)): string | u
55
55
  export declare function getRegArrOrCall(o?: RegExp[] | (() => RegExp[])): RegExp[] | undefined;
56
56
  export declare function detectBrowser(): "edge" | "opera" | "chrome" | "firefox" | "safari" | undefined;
57
57
  export declare function detectOs(): string | undefined;
58
- export declare function matchRegex(v: string | undefined, pattern: RegExp): boolean;
59
- export declare function requirePostitiveValue(v: number | undefined, name: string): boolean;
58
+ export declare function matchRegex(v: string | undefined, name: string, pattern: RegExp): string;
59
+ export declare function requirePostitiveValue(v: number | undefined, name: string, defaultValue: number): number;
@@ -0,0 +1,10 @@
1
+ import { Router } from "@angular/router";
2
+ import { SessionManager } from "./session-manager.service";
3
+ import * as i0 from "@angular/core";
4
+ export declare class EventManagerService {
5
+ private router;
6
+ private sessionManager;
7
+ constructor(router: Router, sessionManager: SessionManager);
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<EventManagerService, never>;
9
+ static ɵprov: i0.ɵɵInjectableDeclaration<EventManagerService>;
10
+ }
@@ -1,4 +1,5 @@
1
1
  import { ModuleWithProviders } from '@angular/core';
2
+ import { Router } from '@angular/router';
2
3
  import { ApplicationConf } from './configuration';
3
4
  import { SessionManager } from './session-manager.service';
4
5
  import * as i0 from "@angular/core";
@@ -8,4 +9,4 @@ export declare class NgCollectorModule {
8
9
  static ɵmod: i0.ɵɵNgModuleDeclaration<NgCollectorModule, never, never, never>;
9
10
  static ɵinj: i0.ɵɵInjectorDeclaration<NgCollectorModule>;
10
11
  }
11
- export declare function initializeRoutingEvents(sessionManager: SessionManager): () => void;
12
+ export declare function initializeEvents(router: Router, sessionManager: SessionManager): () => void;
@@ -2,10 +2,8 @@ import { OnDestroy } from '@angular/core';
2
2
  import { InstanceEnvironment, MainSession } from './trace.model';
3
3
  import { BehaviorSubject, Observable, Subscription } from 'rxjs';
4
4
  import { TechnicalConf } from './configuration';
5
- import { Router } from '@angular/router';
6
5
  import * as i0 from "@angular/core";
7
6
  export declare class SessionManager implements OnDestroy {
8
- private router;
9
7
  maxBufferSize: number;
10
8
  delay: number;
11
9
  instanceEnvironment: InstanceEnvironment;
@@ -18,8 +16,7 @@ export declare class SessionManager implements OnDestroy {
18
16
  sendInstanceEnvFinished: boolean;
19
17
  currentSession: MainSession;
20
18
  config: TechnicalConf;
21
- constructor(router: Router, config: TechnicalConf, instance: InstanceEnvironment);
22
- initialize(): void;
19
+ constructor(config: TechnicalConf, instance: InstanceEnvironment);
23
20
  addSessions(sessions: MainSession): void;
24
21
  newSession(url?: string): void;
25
22
  sendSessions(): void;
package/lib/util.d.ts CHANGED
@@ -1,9 +1,5 @@
1
1
  import { MainSession } from "./trace.model";
2
- export declare const HOST_PATERN: RegExp;
3
- export declare const PATH_PATERN: RegExp;
4
2
  export declare function dateNow(): number;
5
3
  export declare function initDebug(value: boolean): void;
6
4
  export declare function logInspect(...args: any[]): void;
7
5
  export declare function prettySessionFormat(session: MainSession): string;
8
- export declare function matchRegex(v: string | undefined, pattern: RegExp): boolean;
9
- export declare function requirePostitiveValue(v: number | undefined, name: string): boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oneteme/inspect-ng-collector",
3
- "version": "0.0.7",
3
+ "version": "0.0.9",
4
4
  "description": "inspect ng collector",
5
5
  "homepage": "https://github.com/oneteme/inspect-ng-collector",
6
6
  "bugs": "https://github.com/oneteme/inspect-ng-collector/issues",
@@ -1,16 +0,0 @@
1
- import { Injectable } from "@angular/core";
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/router";
4
- export class RouteTracerService {
5
- constructor(router) {
6
- this.router = router;
7
- console.log('pezfjpezjf');
8
- }
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouteTracerService, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
10
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouteTracerService, providedIn: 'root' }); }
11
- }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouteTracerService, decorators: [{
13
- type: Injectable,
14
- args: [{ providedIn: 'root' }]
15
- }], ctorParameters: function () { return [{ type: i1.Router }]; } });
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtdHJhY2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmV0ZW1lL2luc3BlY3QtbmctY29sbGVjdG9yL3NyYy9saWIvcm91dGUtdHJhY2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFXLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQzs7O0FBUzlELE1BQU0sT0FBTyxrQkFBa0I7SUFRM0IsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDOUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUM3QixDQUFDOytHQVZRLGtCQUFrQjttSEFBbEIsa0JBQWtCLGNBREwsTUFBTTs7NEZBQ25CLGtCQUFrQjtrQkFEOUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyAgSW5qZWN0LCBJbmplY3RhYmxlLCBPbkRlc3Ryb3l9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBOYXZpZ2F0aW9uU3RhcnQsIFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7IE1haW5TZXNzaW9uIH0gZnJvbSBcIi4vdHJhY2UubW9kZWxcIjtcblxuaW1wb3J0IHsgZGF0ZU5vdyxpbml0RGVidWcsIGxvZ0luc3BlY3QsIHByZXR0eVNlc3Npb25Gb3JtYXQgfSBmcm9tIFwiLi91dGlsXCI7XG5pbXBvcnQgeyBTZXNzaW9uTWFuYWdlciB9IGZyb20gXCIuL3Nlc3Npb24tbWFuYWdlci5zZXJ2aWNlXCI7XG5cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSkgXG5leHBvcnQgY2xhc3MgUm91dGVUcmFjZXJTZXJ2aWNlICB7XG5cblxuICAgIGN1cnJlbnRTZXNzaW9uITogTWFpblNlc3Npb247IFxuICAgIHVzZXI/OiBzdHJpbmc7XG4gICAgdHJ5U2VuZEluc3RhbmNlRW52OmFueTtcbiAgICBleGNsdWRlTGlzdDogUmVnRXhwW10gfCB1bmRlZmluZWQ7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdwZXpmanBlempmJylcbiAgICB9XG5cbiBcblxuICAgIFxuXG4gIFxufVxuXG4iXX0=
@@ -1,13 +0,0 @@
1
- import { Router } from "@angular/router";
2
- import { MainSession } from "./trace.model";
3
- import * as i0 from "@angular/core";
4
- export declare class RouteTracerService {
5
- private router;
6
- currentSession: MainSession;
7
- user?: string;
8
- trySendInstanceEnv: any;
9
- excludeList: RegExp[] | undefined;
10
- constructor(router: Router);
11
- static ɵfac: i0.ɵɵFactoryDeclaration<RouteTracerService, never>;
12
- static ɵprov: i0.ɵɵInjectableDeclaration<RouteTracerService>;
13
- }