@vforsh/argus-client 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../../src/client/methods/inspect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../../src/client/methods/inspect.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  import type { LogsOptions, NetOptions } from '../types.js';
2
+ /** Build the query string for the log listing and tail routes. */
2
3
  export declare const buildLogsParams: (options: LogsOptions) => URLSearchParams;
4
+ /** Build the query string for the network listing and tail routes. */
3
5
  export declare const buildNetParams: (options: NetOptions) => URLSearchParams;
4
6
  //# sourceMappingURL=queryParams.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"queryParams.d.ts","sourceRoot":"","sources":["../../src/client/queryParams.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAG1D,eAAO,MAAM,eAAe,GAAI,SAAS,WAAW,KAAG,eA+CtD,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,SAAS,UAAU,KAAG,eA0BpD,CAAA"}
1
+ {"version":3,"file":"queryParams.d.ts","sourceRoot":"","sources":["../../src/client/queryParams.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAE1D,kEAAkE;AAClE,eAAO,MAAM,eAAe,GAAI,SAAS,WAAW,KAAG,eAiBtD,CAAA;AAED,sEAAsE;AACtE,eAAO,MAAM,cAAc,GAAI,SAAS,UAAU,KAAG,eA0BpD,CAAA"}
@@ -1,142 +1,107 @@
1
- import { parseDurationMs } from '../time/parseDurationMs.js';
1
+ import { NET_PARTIES, NET_SCOPES, normalizeMatchPatterns, parseDurationMs, toSearchParams } from '@vforsh/argus-core';
2
+ /** Build the query string for the log listing and tail routes. */
2
3
  export const buildLogsParams = (options) => {
3
- const params = new URLSearchParams();
4
- const after = normalizeQueryValue(options.after);
5
- if (after != null) {
6
- params.set('after', after);
7
- }
8
- if (after != null && options.sinceEpoch != null) {
4
+ if (options.after != null && options.sinceEpoch != null) {
9
5
  throw new Error('Use either after or sinceEpoch, not both');
10
6
  }
11
- const sinceEpoch = normalizeQueryValue(options.sinceEpoch);
12
- if (sinceEpoch) {
13
- params.set('sinceEpoch', sinceEpoch);
14
- }
15
- const limit = normalizeNonNegativeNumber('limit', options.limit);
16
- if (limit != null) {
17
- params.set('limit', String(limit));
18
- }
19
- const levels = normalizeLevels(options.levels);
20
- if (levels) {
21
- params.set('levels', levels);
22
- }
23
- const match = normalizeMatch(options.match);
24
- if (match) {
25
- for (const pattern of match) {
26
- params.append('match', pattern);
27
- }
28
- }
29
- const matchCase = normalizeMatchCase(options.matchCase);
30
- if (matchCase) {
31
- params.set('matchCase', matchCase);
32
- }
33
- const source = normalizeQueryValue(options.source);
34
- if (source) {
35
- params.set('source', source);
36
- }
37
- const sinceTs = resolveSinceTs(options.since);
38
- if (sinceTs != null) {
39
- params.set('sinceTs', String(sinceTs));
40
- }
41
- return params;
7
+ const query = {
8
+ after: options.after,
9
+ sinceEpoch: options.sinceEpoch,
10
+ limit: requireNonNegative('limit', options.limit),
11
+ levels: normalizeLevels(options.levels),
12
+ match: requireMatchPatterns(options.match),
13
+ matchCase: requireMatchCase(options.matchCase),
14
+ source: options.source,
15
+ sinceTs: resolveSinceTs(options.since),
16
+ };
17
+ return toSearchParams(query);
42
18
  };
19
+ /** Build the query string for the network listing and tail routes. */
43
20
  export const buildNetParams = (options) => {
44
- const params = new URLSearchParams();
45
- const after = normalizeNonNegativeNumber('after', options.after);
46
- if (after != null) {
47
- params.set('after', String(after));
48
- }
49
- const limit = normalizeNonNegativeNumber('limit', options.limit);
50
- if (limit != null) {
51
- params.set('limit', String(limit));
52
- }
53
- const sinceTs = resolveSinceTs(options.since);
54
- if (sinceTs != null) {
55
- params.set('sinceTs', String(sinceTs));
56
- }
57
- const grep = normalizeQueryValue(options.grep);
58
- if (grep) {
59
- params.set('grep', grep);
60
- }
61
- appendRepeatedQueryValues(params, 'ignoreHost', options.ignoreHost);
62
- appendRepeatedQueryValues(params, 'ignorePattern', options.ignorePattern);
63
- return params;
21
+ if (options.scope != null && options.frame != null) {
22
+ throw new Error('Cannot combine scope and frame filters. Use one or the other.');
23
+ }
24
+ const query = {
25
+ after: requireNonNegative('after', options.after),
26
+ limit: requireNonNegative('limit', options.limit),
27
+ sinceTs: resolveSinceTs(options.since),
28
+ grep: options.grep,
29
+ host: requireNonEmptyValues('host', options.host),
30
+ method: requireNonEmptyValues('method', options.method),
31
+ status: requireNonEmptyValues('status', options.status),
32
+ resourceType: requireNonEmptyValues('resourceType', options.resourceType),
33
+ mime: requireNonEmptyValues('mime', options.mime),
34
+ scope: requireChoice('scope', options.scope, NET_SCOPES),
35
+ frame: options.frame,
36
+ party: requireChoice('party', options.party, NET_PARTIES),
37
+ failedOnly: options.failedOnly,
38
+ minDurationMs: requireNonNegative('minDurationMs', options.minDurationMs),
39
+ minTransferBytes: requireNonNegative('minTransferBytes', options.minTransferBytes),
40
+ ignoreHost: requireNonEmptyValues('ignoreHost', options.ignoreHost),
41
+ ignorePattern: requireNonEmptyValues('ignorePattern', options.ignorePattern),
42
+ };
43
+ return toSearchParams(query);
64
44
  };
65
45
  const normalizeLevels = (levels) => {
66
46
  if (levels == null) {
67
47
  return undefined;
68
48
  }
69
- if (Array.isArray(levels)) {
70
- const normalized = levels.map((level) => level.trim()).filter(Boolean);
71
- if (normalized.length === 0) {
72
- return undefined;
73
- }
74
- return normalized.join(',');
49
+ if (!Array.isArray(levels)) {
50
+ return levels;
75
51
  }
76
- const trimmed = levels.trim();
77
- return trimmed ? trimmed : undefined;
52
+ const normalized = levels.map((level) => level.trim()).filter(Boolean);
53
+ return normalized.length > 0 ? normalized.join(',') : undefined;
78
54
  };
79
- const normalizeMatch = (match) => {
55
+ const requireMatchPatterns = (match) => {
80
56
  if (match == null) {
81
57
  return undefined;
82
58
  }
83
- const values = Array.isArray(match) ? match : [match];
84
- const normalized = values.map((value) => value.trim());
85
- if (normalized.some((value) => value.length === 0)) {
86
- throw new Error('Invalid match value: empty pattern.');
59
+ const result = normalizeMatchPatterns(Array.isArray(match) ? match : [match]);
60
+ if (result.error) {
61
+ throw new Error(result.error);
87
62
  }
88
- return normalized;
89
- };
90
- const normalizeMatchCase = (matchCase) => {
91
- if (matchCase == null) {
92
- return undefined;
93
- }
94
- if (matchCase !== 'sensitive' && matchCase !== 'insensitive') {
95
- throw new Error(`Invalid matchCase value: ${matchCase}`);
96
- }
97
- return matchCase;
63
+ return result.patterns;
98
64
  };
65
+ const requireMatchCase = (matchCase) => requireChoice('matchCase', matchCase, ['sensitive', 'insensitive']);
99
66
  const resolveSinceTs = (value) => {
100
67
  if (value == null) {
101
68
  return undefined;
102
69
  }
103
- const durationMs = typeof value === 'number' ? normalizeNonNegativeNumber('since', value) : parseDurationOrThrow(value);
104
- if (durationMs == null) {
105
- return undefined;
70
+ const durationMs = typeof value === 'number' ? requireNonNegative('since', value) : parseDurationOrThrow(value);
71
+ return durationMs == null ? undefined : Date.now() - durationMs;
72
+ };
73
+ const parseDurationOrThrow = (value) => {
74
+ const duration = parseDurationMs(value);
75
+ if (duration == null) {
76
+ throw new Error(`Invalid since value: ${value}`);
106
77
  }
107
- return Date.now() - durationMs;
78
+ return duration;
108
79
  };
109
- const normalizeQueryValue = (value) => {
80
+ const requireNonNegative = (label, value) => {
110
81
  if (value == null) {
111
82
  return undefined;
112
83
  }
113
- const trimmed = value.trim();
114
- return trimmed ? trimmed : undefined;
84
+ if (!Number.isFinite(value) || value < 0) {
85
+ throw new Error(`Invalid ${label} value: ${value}`);
86
+ }
87
+ return value;
115
88
  };
116
- const appendRepeatedQueryValues = (params, key, values) => {
89
+ const requireNonEmptyValues = (label, values) => {
117
90
  if (!values || values.length === 0) {
118
- return;
91
+ return undefined;
119
92
  }
120
93
  for (const value of values) {
121
- const normalized = normalizeQueryValue(value);
122
- if (!normalized) {
123
- throw new Error(`Invalid ${key} value: ${value}`);
94
+ if (!value.trim()) {
95
+ throw new Error(`Invalid ${label} value: ${value}`);
124
96
  }
125
- params.append(key, normalized);
126
97
  }
98
+ return values;
127
99
  };
128
- const parseDurationOrThrow = (value) => {
129
- const duration = parseDurationMs(value);
130
- if (duration == null) {
131
- throw new Error(`Invalid since value: ${value}`);
132
- }
133
- return duration;
134
- };
135
- const normalizeNonNegativeNumber = (label, value) => {
100
+ const requireChoice = (label, value, allowed) => {
136
101
  if (value == null) {
137
102
  return undefined;
138
103
  }
139
- if (!Number.isFinite(value) || value < 0) {
104
+ if (!allowed.includes(value)) {
140
105
  throw new Error(`Invalid ${label} value: ${value}`);
141
106
  }
142
107
  return value;
@@ -1 +1 @@
1
- {"version":3,"file":"queryParams.js","sourceRoot":"","sources":["../../src/client/queryParams.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queryParams.js","sourceRoot":"","sources":["../../src/client/queryParams.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { WatcherRecord } from '@vforsh/argus-core';
1
+ import type { WatcherRecord, ResponseData } from '@vforsh/argus-core';
2
2
  import type { HttpOptions } from '../http/fetchJson.js';
3
3
  type RegistryContext = {
4
4
  registryPath?: string;
@@ -16,5 +16,15 @@ export declare const requestWatcher: <T>(context: RegistryContext, watcherId: st
16
16
  watcher: WatcherRecord;
17
17
  data: T;
18
18
  }>;
19
+ /**
20
+ * Issue a watcher request and return the response payload without its `ok` discriminant.
21
+ *
22
+ * SDK methods throw on failure, so the caller already knows `ok` was `true`; stripping it
23
+ * here means a method never has to re-list the response fields to drop one of them, and a
24
+ * new protocol field reaches callers without touching the method.
25
+ */
26
+ export declare const requestWatcherData: <T extends {
27
+ ok: true;
28
+ }>(context: RegistryContext, watcherId: string, options: WatcherRequestOptions) => Promise<ResponseData<T>>;
19
29
  export {};
20
30
  //# sourceMappingURL=watcherRequest.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"watcherRequest.d.ts","sourceRoot":"","sources":["../../src/client/watcherRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAIvD,KAAK,eAAe,GAAG;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;CACb,CAAA;AAED,KAAK,qBAAqB,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,eAAe,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAED,eAAO,MAAM,WAAW,GAAU,CAAC,EAAE,SAAS,eAAe,EAAE,WAAW,MAAM,EAAE,UAAU,CAAC,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,CAQ7I,CAAA;AAED,eAAO,MAAM,cAAc,GAAU,CAAC,EACrC,SAAS,eAAe,EACxB,WAAW,MAAM,EACjB,SAAS,qBAAqB,KAC5B,OAAO,CAAC;IAAE,OAAO,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,CAoB3C,CAAA"}
1
+ {"version":3,"file":"watcherRequest.d.ts","sourceRoot":"","sources":["../../src/client/watcherRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAUrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAGvD,KAAK,eAAe,GAAG;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;CACb,CAAA;AAED,KAAK,qBAAqB,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,eAAe,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAED,eAAO,MAAM,WAAW,GAAU,CAAC,EAAE,SAAS,eAAe,EAAE,WAAW,MAAM,EAAE,UAAU,CAAC,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,CAQ7I,CAAA;AAED,eAAO,MAAM,cAAc,GAAU,CAAC,EACrC,SAAS,eAAe,EACxB,WAAW,MAAM,EACjB,SAAS,qBAAqB,KAC5B,OAAO,CAAC;IAAE,OAAO,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,CAuB3C,CAAA;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,GAAU,CAAC,SAAS;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,EAC9D,SAAS,eAAe,EACxB,WAAW,MAAM,EACjB,SAAS,qBAAqB,KAC5B,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAIzB,CAAA"}
@@ -1,6 +1,5 @@
1
- import { isHttpResponseError } from '@vforsh/argus-core';
1
+ import { buildWatcherUrl, classifyWatcherFailure, formatError, formatWatcherTransportError, readAndPruneRegistry, removeWatcherAndPersist, shouldEvictWatcherOnFailure, } from '@vforsh/argus-core';
2
2
  import { fetchJson } from '../http/fetchJson.js';
3
- import { readAndPruneRegistry, removeWatcherAndPersist } from '../registry/readAndPruneRegistry.js';
4
3
  export const withWatcher = async (context, watcherId, callback) => {
5
4
  const registry = await readAndPruneRegistry({ registryPath: context.registryPath, ttlMs: context.ttlMs });
6
5
  const watcher = registry.watchers[watcherId];
@@ -19,28 +18,28 @@ export const requestWatcher = async (context, watcherId, options) => withWatcher
19
18
  return { watcher, data };
20
19
  }
21
20
  catch (error) {
22
- // The watcher answered and rejected this request, so it is demonstrably alive.
23
- // Evicting it here would break every later call in the process over one bad
24
- // selector or a page that happens to be mid-navigation.
25
- if (isHttpResponseError(error)) {
26
- throw new Error(`${watcher.id}: ${error.message}`);
21
+ // One classifier and one eviction policy, shared with the CLI: the same outage must not
22
+ // leave the shared registry in a different state depending on which stack observed it.
23
+ const failure = classifyWatcherFailure(error);
24
+ if (failure === 'api-rejection') {
25
+ throw new Error(`${watcher.id}: ${formatError(error)}`);
26
+ }
27
+ if (shouldEvictWatcherOnFailure(failure)) {
28
+ await removeWatcherAndPersist(watcher.id, context.registryPath);
27
29
  }
28
- await removeWatcherAndPersist(watcher.id, context.registryPath);
29
30
  throw new Error(formatWatcherTransportError(watcher, error));
30
31
  }
31
32
  });
32
- const buildWatcherUrl = (watcher, path, query) => {
33
- const qs = query?.toString();
34
- return `http://${watcher.host}:${watcher.port}${path}${qs ? `?${qs}` : ''}`;
35
- };
36
- const formatWatcherTransportError = (watcher, error) => `${watcher.id}: failed to reach watcher (${formatUnknownError(error)})`;
37
- const formatUnknownError = (error) => {
38
- if (!error) {
39
- return 'unknown error';
40
- }
41
- if (error instanceof Error) {
42
- return error.message;
43
- }
44
- return String(error);
33
+ /**
34
+ * Issue a watcher request and return the response payload without its `ok` discriminant.
35
+ *
36
+ * SDK methods throw on failure, so the caller already knows `ok` was `true`; stripping it
37
+ * here means a method never has to re-list the response fields to drop one of them, and a
38
+ * new protocol field reaches callers without touching the method.
39
+ */
40
+ export const requestWatcherData = async (context, watcherId, options) => {
41
+ const { data } = await requestWatcher(context, watcherId, options);
42
+ const { ok: _ok, ...rest } = data;
43
+ return rest;
45
44
  };
46
45
  //# sourceMappingURL=watcherRequest.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"watcherRequest.js","sourceRoot":"","sources":["../../src/client/watcherRequest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAExD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAA;AAenG,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAAK,OAAwB,EAAE,SAAiB,EAAE,QAAgD,EAAc,EAAE;IACjJ,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAA;IACzG,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;IAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,sBAAsB,SAAS,EAAE,CAAC,CAAA;IACnD,CAAC;IAED,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAA;AACzB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAClC,OAAwB,EACxB,SAAiB,EACjB,OAA8B,EACiB,EAAE,CACjD,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IACjD,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,MAAM,SAAS,CAAI,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE;YACtF,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,IAAI,EAAE,OAAO,CAAC,IAAI;SAClB,CAAC,CAAA;QACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,+EAA+E;QAC/E,4EAA4E;QAC5E,wDAAwD;QACxD,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;QACnD,CAAC;QAED,MAAM,uBAAuB,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;QAC/D,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;IAC7D,CAAC;AACF,CAAC,CAAC,CAAA;AAEH,MAAM,eAAe,GAAG,CAAC,OAA6C,EAAE,IAAY,EAAE,KAAuB,EAAU,EAAE;IACxH,MAAM,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,CAAA;IAC5B,OAAO,UAAU,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;AAC5E,CAAC,CAAA;AAED,MAAM,2BAA2B,GAAG,CAAC,OAAkC,EAAE,KAAc,EAAU,EAAE,CAClG,GAAG,OAAO,CAAC,EAAE,8BAA8B,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAA;AAExE,MAAM,kBAAkB,GAAG,CAAC,KAAc,EAAU,EAAE;IACrD,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,OAAO,eAAe,CAAA;IACvB,CAAC;IACD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC,OAAO,CAAA;IACrB,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;AACrB,CAAC,CAAA"}
1
+ {"version":3,"file":"watcherRequest.js","sourceRoot":"","sources":["../../src/client/watcherRequest.ts"],"names":[],"mappings":"AACA,OAAO,EACN,eAAe,EACf,sBAAsB,EACtB,WAAW,EACX,2BAA2B,EAC3B,oBAAoB,EACpB,uBAAuB,EACvB,2BAA2B,GAC3B,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAehD,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAAK,OAAwB,EAAE,SAAiB,EAAE,QAAgD,EAAc,EAAE;IACjJ,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAA;IACzG,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;IAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,sBAAsB,SAAS,EAAE,CAAC,CAAA;IACnD,CAAC;IAED,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAA;AACzB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAClC,OAAwB,EACxB,SAAiB,EACjB,OAA8B,EACiB,EAAE,CACjD,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IACjD,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,MAAM,SAAS,CAAI,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE;YACtF,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,IAAI,EAAE,OAAO,CAAC,IAAI;SAClB,CAAC,CAAA;QACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,wFAAwF;QACxF,uFAAuF;QACvF,MAAM,OAAO,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAA;QAC7C,IAAI,OAAO,KAAK,eAAe,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,KAAK,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QACxD,CAAC;QAED,IAAI,2BAA2B,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1C,MAAM,uBAAuB,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;QAChE,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;IAC7D,CAAC;AACF,CAAC,CAAC,CAAA;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACtC,OAAwB,EACxB,SAAiB,EACjB,OAA8B,EACH,EAAE;IAC7B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,cAAc,CAAI,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;IACrE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAA;IACjC,OAAO,IAAI,CAAA;AACZ,CAAC,CAAA"}
package/dist/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { ElementRef, LogEvent, LogEpoch, LogLevel, MouseButton, NetworkRequestDetail, NetworkRequestSummary, RecordClipRegion, RecordFormat, ScreenshotClipRegion, StatusResponse, VisibilityLock, WatcherRecord } from '@vforsh/argus-core';
1
+ import type { DomClickRequest, DomClickResponse, EvalRequest, EvalResponse, LogEvent, LogEpoch, LogLevel, NetClearResponse, NetQuery, NetResponse, NetworkRequestDetail, RecordRequest, RecordStartRequest, RecordStartResponse, RecordStopRequest, RecordStopResponse, ReloadRequest, ResponseData, ScreenshotRequest, ScreenshotResponse, StatusResponse, TraceStartRequest, TraceStartResponse, TraceStopRequest, TraceStopResponse, VisibilityRequest, VisibilityResponse, WatcherRecord } from '@vforsh/argus-core';
2
2
  /** Options for configuring the Argus client. */
3
3
  export type ArgusClientOptions = {
4
4
  /** Override registry path instead of using `ARGUS_REGISTRY_PATH` / default. */
@@ -23,6 +23,13 @@ export type ListResult = {
23
23
  status?: StatusResponse;
24
24
  /** Error message when unreachable. */
25
25
  error?: string;
26
+ /**
27
+ * Set when the watcher answered but speaks an incompatible protocol version.
28
+ *
29
+ * The watcher is still reachable and `status` is still populated, but commands issued
30
+ * against it may fail in ways this SDK cannot interpret.
31
+ */
32
+ protocolMismatch?: string;
26
33
  };
27
34
  /** Controls how log event args are returned. */
28
35
  export type LogsMode = 'preview' | 'full';
@@ -62,195 +69,64 @@ export type LogEpochResult = {
62
69
  epoch: LogEpoch;
63
70
  };
64
71
  /** Options for fetching network request summaries. */
65
- export type NetOptions = {
66
- after?: number;
67
- limit?: number;
72
+ export type NetOptions = Omit<NetQuery, 'sinceTs' | 'timeoutMs'> & {
68
73
  /**
69
74
  * Filter by time window.
70
75
  * - If string: parsed like CLI (e.g. "10m", "2h")
71
76
  * - If number: treated as durationMs
77
+ *
78
+ * Sugar over the wire's absolute `sinceTs`.
72
79
  */
73
80
  since?: string | number;
74
- /** Substring match over redacted URLs. */
75
- grep?: string;
76
- /** Ignore requests by host name (exact host or subdomain match). */
77
- ignoreHost?: string[];
78
- /** Ignore requests whose URL contains one of these substrings. */
79
- ignorePattern?: string[];
80
81
  };
81
82
  /** Network request summary results with pagination cursor. */
82
- export type NetResult = {
83
- requests: NetworkRequestSummary[];
84
- nextAfter: number;
85
- };
86
- /** Options for evaluating a JS expression in the connected page. */
87
- export type EvalOptions = {
88
- /** JS expression to execute. */
89
- expression: string;
90
- /** String-only values exposed to the expression as `args`. */
91
- args?: Record<string, string>;
92
- /** Await promises before returning. Defaults to true. */
93
- awaitPromise?: boolean;
94
- /**
95
- * Enable Chrome's REPL mode for console-style evaluation.
96
- * Defaults to true and allows native top-level `await`.
97
- */
98
- replMode?: boolean;
99
- /** Command timeout in milliseconds. */
100
- timeoutMs?: number;
101
- /** Return by value when possible. Defaults to true. */
102
- returnByValue?: boolean;
103
- /**
104
- * Serialize the result inside the page and return that JSON string as `result`,
105
- * wrapped as `{"v":<value>}`. Defaults to false.
106
- *
107
- * Prefer {@link ArgusClient.evalValue}, which sets this and parses the envelope
108
- * for you. See {@link EvalValueOptions.jsonValue} for why the mode exists.
109
- */
110
- jsonValue?: boolean;
111
- /** Install the temporary host bridge expected by bundled Argus scenario code. */
112
- scenario?: boolean;
113
- };
83
+ export type NetResult = ResponseData<NetResponse>;
84
+ /**
85
+ * Options for evaluating a JS expression in the connected page.
86
+ *
87
+ * This *is* the POST /eval body it is sent verbatim — so it aliases the protocol
88
+ * request type rather than restating it.
89
+ */
90
+ export type EvalOptions = EvalRequest;
114
91
  /** Result of a remote evaluation. */
115
- export type EvalResult = {
116
- result: unknown;
117
- type: string | null;
118
- exception: {
119
- text: string;
120
- details?: unknown;
121
- } | null;
122
- };
92
+ export type EvalResult = ResponseData<EvalResponse>;
123
93
  /** Options for starting a Chrome trace. */
124
- export type TraceStartOptions = {
125
- outFile?: string;
126
- categories?: string;
127
- options?: string;
128
- };
94
+ export type TraceStartOptions = TraceStartRequest;
129
95
  /** Trace start result metadata. */
130
- export type TraceStartResult = {
131
- traceId: string;
132
- sessionName: string;
133
- outFile: string;
134
- };
96
+ export type TraceStartResult = ResponseData<TraceStartResponse>;
135
97
  /** Options for stopping an active trace. */
136
- export type TraceStopOptions = {
137
- traceId?: string;
138
- outFile?: string;
139
- };
98
+ export type TraceStopOptions = TraceStopRequest;
140
99
  /** Trace stop result metadata. */
141
- export type TraceStopResult = {
142
- sessionName: string;
143
- outFile: string;
144
- eventCount: number;
145
- durationMs: number;
146
- };
100
+ export type TraceStopResult = ResponseData<TraceStopResponse>;
147
101
  /** Options for capturing a screenshot. */
148
- export type ScreenshotOptions = {
149
- outFile?: string;
150
- selector?: string;
151
- /** Viewport-relative crop rectangle in CSS pixels. Mutually exclusive with `selector`. */
152
- clip?: ScreenshotClipRegion;
153
- format?: 'png';
154
- };
102
+ export type ScreenshotOptions = ScreenshotRequest;
155
103
  /** Screenshot result metadata. */
156
- export type ScreenshotResult = {
157
- outFile: string;
158
- clipped: boolean;
159
- };
104
+ export type ScreenshotResult = ResponseData<ScreenshotResponse>;
160
105
  /** Options for clicking in the connected page. Mirrors CLI `argus click` semantics. */
161
- export type DomClickOptions = {
162
- /** CSS selector to match element(s). */
163
- selector?: string;
164
- /** Stable element ref to click. Mutually exclusive with `selector`. */
165
- ref?: ElementRef;
166
- /** Allow multiple matches. If false and >1 match, the watcher errors. Defaults to false. */
167
- all?: boolean;
168
- /** Viewport x-coordinate, or x-offset from element top-left when `selector` is set. */
169
- x?: number;
170
- /** Viewport y-coordinate, or y-offset from element top-left when `selector` is set. */
171
- y?: number;
172
- /** Mouse button to click. Defaults to 'left'. */
173
- button?: MouseButton;
174
- /** Filter elements by trimmed textContent. Plain string = exact match, `/regex/flags` = regex test. */
175
- text?: string;
176
- /** Wait up to this many ms for the selector to appear before clicking. */
177
- wait?: number;
178
- };
106
+ export type DomClickOptions = DomClickRequest;
179
107
  /** Result of a click, reporting selector matches separately from actual clicks. */
180
- export type DomClickResult = {
181
- /** Number of elements matched by the selector. */
182
- matches: number;
183
- /** Number of elements actually clicked. */
184
- clicked: number;
185
- };
108
+ export type DomClickResult = ResponseData<DomClickResponse>;
186
109
  /** Result of clearing the watcher's buffered network log. */
187
- export type NetClearResult = {
188
- /** Number of buffered requests removed. */
189
- cleared: number;
190
- };
110
+ export type NetClearResult = ResponseData<NetClearResponse>;
191
111
  /** Options for the page visibility lock. */
192
- export type VisibilityOptions = {
193
- /** `show` locks the page shown+focused; `hide` releases the lock. */
194
- action: 'show' | 'hide';
195
- };
112
+ export type VisibilityOptions = VisibilityRequest;
196
113
  /**
197
114
  * Visibility lock result. The desired lock is sticky across detach/reattach:
198
115
  * the watcher remembers it and re-applies on the next attach when `attached` is false.
199
116
  */
200
- export type VisibilityResult = {
201
- /** Whether the watcher was attached to a CDP target at response time. */
202
- attached: boolean;
203
- /** Current desired visibility lock. */
204
- state: VisibilityLock;
205
- };
117
+ export type VisibilityResult = ResponseData<VisibilityResponse>;
206
118
  /** Options for reloading the connected page. */
207
- export type ReloadOptions = {
208
- /** Bypass the browser cache. Defaults to false. */
209
- ignoreCache?: boolean;
210
- };
119
+ export type ReloadOptions = ReloadRequest;
211
120
  /** Shared options for video recording requests. */
212
- export type RecordOptions = {
213
- /** Destination path on the watcher host. Extension may determine `format`. */
214
- outFile?: string;
215
- /** Record only the element matched by this CSS selector. Mutually exclusive with `clip`. */
216
- selector?: string;
217
- /** Viewport-relative crop rectangle in CSS pixels. Mutually exclusive with `selector`. */
218
- clip?: RecordClipRegion;
219
- /** Output frames per second (1-60). Defaults to 30. */
220
- fps?: number;
221
- /** Output container. Defaults to mp4 unless inferred from the `outFile` extension. */
222
- format?: RecordFormat;
223
- };
121
+ export type RecordOptions = RecordStartRequest;
224
122
  /** Options for a fixed-duration one-shot recording. */
225
- export type RecordCaptureOptions = RecordOptions & {
226
- /** Capture duration in milliseconds. Must be greater than 0. */
227
- durationMs: number;
228
- };
123
+ export type RecordCaptureOptions = RecordRequest;
229
124
  /** Metadata returned when a recording starts. */
230
- export type RecordStartResult = {
231
- /** Handle for the active recording, accepted by `recordStop`. */
232
- recordId: string;
233
- sessionName: string;
234
- outFile: string;
235
- format: RecordFormat;
236
- fps: number;
237
- /** Whether a `selector` or `clip` crop was applied. */
238
- clipped: boolean;
239
- };
125
+ export type RecordStartResult = ResponseData<RecordStartResponse>;
240
126
  /** Metadata returned when a recording is finalized. */
241
- export type RecordStopResult = RecordStartResult & {
242
- /** Number of frames written to `outFile`. */
243
- frameCount: number;
244
- /** Wall-clock capture duration in milliseconds. */
245
- durationMs: number;
246
- };
127
+ export type RecordStopResult = ResponseData<RecordStopResponse>;
247
128
  /** Options for stopping an active recording. */
248
- export type RecordStopOptions = {
249
- /** Recording to stop. Defaults to the watcher's active recording. */
250
- recordId?: string;
251
- /** Move the finalized file to this path before returning. */
252
- outFile?: string;
253
- };
129
+ export type RecordStopOptions = RecordStopRequest;
254
130
  /**
255
131
  * Options for {@link ArgusClient.evalValue}.
256
132
  *