@vforsh/argus-core 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/auth/state.d.ts +13 -0
  3. package/dist/auth/state.d.ts.map +1 -1
  4. package/dist/auth/state.js +31 -0
  5. package/dist/auth/state.js.map +1 -1
  6. package/dist/errorMessage.d.ts +9 -0
  7. package/dist/errorMessage.d.ts.map +1 -0
  8. package/dist/errorMessage.js +17 -0
  9. package/dist/errorMessage.js.map +1 -0
  10. package/dist/http/fetch.d.ts +18 -0
  11. package/dist/http/fetch.d.ts.map +1 -1
  12. package/dist/http/fetch.js +24 -2
  13. package/dist/http/fetch.js.map +1 -1
  14. package/dist/http/watcher.d.ts +34 -0
  15. package/dist/http/watcher.d.ts.map +1 -0
  16. package/dist/http/watcher.js +33 -0
  17. package/dist/http/watcher.js.map +1 -0
  18. package/dist/index.d.ts +4 -0
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +4 -0
  21. package/dist/index.js.map +1 -1
  22. package/dist/protocol/http/auth.d.ts +25 -21
  23. package/dist/protocol/http/auth.d.ts.map +1 -1
  24. package/dist/protocol/http/auth.js +125 -0
  25. package/dist/protocol/http/auth.js.map +1 -1
  26. package/dist/protocol/http/code.d.ts +17 -12
  27. package/dist/protocol/http/code.d.ts.map +1 -1
  28. package/dist/protocol/http/code.js +53 -1
  29. package/dist/protocol/http/code.js.map +1 -1
  30. package/dist/protocol/http/dialog.d.ts +9 -6
  31. package/dist/protocol/http/dialog.d.ts.map +1 -1
  32. package/dist/protocol/http/dialog.js +21 -1
  33. package/dist/protocol/http/dialog.js.map +1 -1
  34. package/dist/protocol/http/dom.d.ts +61 -33
  35. package/dist/protocol/http/dom.d.ts.map +1 -1
  36. package/dist/protocol/http/dom.js +252 -1
  37. package/dist/protocol/http/dom.js.map +1 -1
  38. package/dist/protocol/http/domInteraction.d.ts +9 -9
  39. package/dist/protocol/http/domInteraction.d.ts.map +1 -1
  40. package/dist/protocol/http/domInteraction.js +3 -0
  41. package/dist/protocol/http/domInteraction.js.map +1 -1
  42. package/dist/protocol/http/emulation.d.ts +14 -21
  43. package/dist/protocol/http/emulation.d.ts.map +1 -1
  44. package/dist/protocol/http/emulation.js +99 -1
  45. package/dist/protocol/http/emulation.js.map +1 -1
  46. package/dist/protocol/http/errors.d.ts +51 -4
  47. package/dist/protocol/http/errors.d.ts.map +1 -1
  48. package/dist/protocol/http/errors.js +47 -1
  49. package/dist/protocol/http/errors.js.map +1 -1
  50. package/dist/protocol/http/eval.d.ts +5 -58
  51. package/dist/protocol/http/eval.d.ts.map +1 -1
  52. package/dist/protocol/http/eval.js +24 -1
  53. package/dist/protocol/http/eval.js.map +1 -1
  54. package/dist/protocol/http/extension.d.ts +52 -36
  55. package/dist/protocol/http/extension.d.ts.map +1 -1
  56. package/dist/protocol/http/extension.js +34 -1
  57. package/dist/protocol/http/extension.js.map +1 -1
  58. package/dist/protocol/http/locate.d.ts +9 -3
  59. package/dist/protocol/http/locate.d.ts.map +1 -1
  60. package/dist/protocol/http/locate.js +28 -1
  61. package/dist/protocol/http/locate.js.map +1 -1
  62. package/dist/protocol/http/logs.d.ts +9 -12
  63. package/dist/protocol/http/logs.d.ts.map +1 -1
  64. package/dist/protocol/http/net.d.ts +19 -27
  65. package/dist/protocol/http/net.d.ts.map +1 -1
  66. package/dist/protocol/http/netMock.d.ts +17 -27
  67. package/dist/protocol/http/netMock.d.ts.map +1 -1
  68. package/dist/protocol/http/netMock.js +126 -0
  69. package/dist/protocol/http/netMock.js.map +1 -1
  70. package/dist/protocol/http/query.d.ts +97 -0
  71. package/dist/protocol/http/query.d.ts.map +1 -0
  72. package/dist/protocol/http/query.js +79 -0
  73. package/dist/protocol/http/query.js.map +1 -0
  74. package/dist/protocol/http/record.d.ts +11 -6
  75. package/dist/protocol/http/record.d.ts.map +1 -1
  76. package/dist/protocol/http/record.js +56 -0
  77. package/dist/protocol/http/record.js.map +1 -1
  78. package/dist/protocol/http/screenshot.d.ts +18 -3
  79. package/dist/protocol/http/screenshot.d.ts.map +1 -1
  80. package/dist/protocol/http/screenshot.js +45 -1
  81. package/dist/protocol/http/screenshot.js.map +1 -1
  82. package/dist/protocol/http/snapshot.d.ts +5 -3
  83. package/dist/protocol/http/snapshot.d.ts.map +1 -1
  84. package/dist/protocol/http/snapshot.js +16 -1
  85. package/dist/protocol/http/snapshot.js.map +1 -1
  86. package/dist/protocol/http/status.d.ts +17 -9
  87. package/dist/protocol/http/status.d.ts.map +1 -1
  88. package/dist/protocol/http/status.js +12 -1
  89. package/dist/protocol/http/status.js.map +1 -1
  90. package/dist/protocol/http/storage.d.ts +7 -31
  91. package/dist/protocol/http/storage.d.ts.map +1 -1
  92. package/dist/protocol/http/storage.js +31 -1
  93. package/dist/protocol/http/storage.js.map +1 -1
  94. package/dist/protocol/http/throttle.d.ts +14 -21
  95. package/dist/protocol/http/throttle.d.ts.map +1 -1
  96. package/dist/protocol/http/throttle.js +27 -1
  97. package/dist/protocol/http/throttle.js.map +1 -1
  98. package/dist/protocol/http/trace.d.ts +9 -6
  99. package/dist/protocol/http/trace.d.ts.map +1 -1
  100. package/dist/protocol/http/trace.js +29 -1
  101. package/dist/protocol/http/trace.js.map +1 -1
  102. package/dist/protocol/http/visibility.d.ts +7 -3
  103. package/dist/protocol/http/visibility.d.ts.map +1 -1
  104. package/dist/protocol/http/visibility.js +19 -1
  105. package/dist/protocol/http/visibility.js.map +1 -1
  106. package/dist/protocol/http.d.ts +18 -16
  107. package/dist/protocol/http.d.ts.map +1 -1
  108. package/dist/protocol/http.js +17 -1
  109. package/dist/protocol/http.js.map +1 -1
  110. package/dist/protocol/native-messaging.d.ts +276 -0
  111. package/dist/protocol/native-messaging.d.ts.map +1 -0
  112. package/dist/protocol/native-messaging.js +19 -0
  113. package/dist/protocol/native-messaging.js.map +1 -0
  114. package/dist/protocol/scenario.d.ts +63 -0
  115. package/dist/protocol/scenario.d.ts.map +1 -0
  116. package/dist/protocol/scenario.js +2 -0
  117. package/dist/protocol/scenario.js.map +1 -0
  118. package/dist/protocol/schemaFields.d.ts +76 -0
  119. package/dist/protocol/schemaFields.d.ts.map +1 -0
  120. package/dist/protocol/schemaFields.js +152 -0
  121. package/dist/protocol/schemaFields.js.map +1 -0
  122. package/dist/protocol/version.d.ts +14 -0
  123. package/dist/protocol/version.d.ts.map +1 -1
  124. package/dist/protocol/version.js +21 -0
  125. package/dist/protocol/version.js.map +1 -1
  126. package/dist/registry/lock.d.ts.map +1 -1
  127. package/dist/registry/lock.js +2 -3
  128. package/dist/registry/lock.js.map +1 -1
  129. package/dist/registry/registry.d.ts +14 -0
  130. package/dist/registry/registry.d.ts.map +1 -1
  131. package/dist/registry/registry.js +20 -0
  132. package/dist/registry/registry.js.map +1 -1
  133. package/dist/textPattern.d.ts.map +1 -1
  134. package/dist/textPattern.js +2 -1
  135. package/dist/textPattern.js.map +1 -1
  136. package/dist/time.d.ts +20 -0
  137. package/dist/time.d.ts.map +1 -0
  138. package/dist/time.js +39 -0
  139. package/dist/time.js.map +1 -0
  140. package/package.json +9 -7
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scenario.js","sourceRoot":"","sources":["../../src/protocol/scenario.ts"],"names":[],"mappings":""}
@@ -0,0 +1,76 @@
1
+ import { type ProtocolValidationResult } from './schema.js';
2
+ /**
3
+ * Field-level readers shared by every protocol schema.
4
+ *
5
+ * Route-level validation used to grow one copy of "non-empty string", "non-negative
6
+ * integer", "boolean or absent" per endpoint, which is where the drift lived. These are
7
+ * the single copies; schemas compose them instead of re-deriving them.
8
+ *
9
+ * Each reader returns either a value or a {@link FieldError}. Compose several with
10
+ * {@link readFields}, which returns per-field types on success.
11
+ */
12
+ /** A field that failed validation. Structurally distinct from every legal field value. */
13
+ export type FieldError = {
14
+ readonly __fieldError: string;
15
+ };
16
+ /** True when a reader returned a failure rather than a value. */
17
+ export declare const isFieldError: (value: unknown) => value is FieldError;
18
+ /** Build a field failure with an explicit message. */
19
+ export declare const fieldError: (message: string) => FieldError;
20
+ /**
21
+ * A reader that pulls one field out of a payload, or reports why it is invalid.
22
+ *
23
+ * Written as an unconstrained return type so any of the readers below — and any inline
24
+ * arrow that closes over extra bounds — satisfies it; {@link ReadFieldsResult} recovers
25
+ * the precise per-field type afterwards.
26
+ */
27
+ export type FieldReader = (source: Record<string, unknown>, key: string) => unknown;
28
+ /** The values produced by a set of readers, with the failure branch stripped. */
29
+ export type ReadFieldsResult<S extends Record<string, FieldReader>> = {
30
+ [K in keyof S]: Exclude<ReturnType<S[K]>, FieldError>;
31
+ };
32
+ /**
33
+ * Run a set of field readers, returning either every value or the first failure.
34
+ *
35
+ * The success branch is typed per field — `Exclude<..., FieldError>` removes the failure
36
+ * arm — so a schema gets `string` and `number | undefined` back rather than having to
37
+ * re-narrow each field after a combined check.
38
+ */
39
+ export declare const readFields: <S extends Record<string, FieldReader>>(source: Record<string, unknown>, readers: S) => ProtocolValidationResult<ReadFieldsResult<S>>;
40
+ /** Guard the top-level payload shape. Every schema starts here. */
41
+ export declare const requireObject: <T>(value: unknown) => ProtocolValidationResult<T> | null;
42
+ /** Read a required string field. Empty and whitespace-only values are rejected. */
43
+ export declare const requiredString: (source: Record<string, unknown>, key: string) => string | FieldError;
44
+ /** Read an optional string field. Present-but-not-a-string is an error, absent is `undefined`. */
45
+ export declare const optionalString: (source: Record<string, unknown>, key: string) => string | undefined | FieldError;
46
+ /** Read an optional non-empty string field, treating `''` as absent. */
47
+ export declare const optionalNonEmptyString: (source: Record<string, unknown>, key: string) => string | undefined | FieldError;
48
+ /** Read an optional boolean field. */
49
+ export declare const optionalBoolean: (source: Record<string, unknown>, key: string) => boolean | undefined | FieldError;
50
+ /** Read an optional finite number field, optionally bounded. */
51
+ export declare const optionalNumber: (source: Record<string, unknown>, key: string, bounds?: {
52
+ min?: number;
53
+ max?: number;
54
+ }) => number | undefined | FieldError;
55
+ /** Read an optional integer field, optionally bounded. */
56
+ export declare const optionalInteger: (source: Record<string, unknown>, key: string, bounds?: {
57
+ min?: number;
58
+ max?: number;
59
+ }) => number | undefined | FieldError;
60
+ /** Read an optional field constrained to a fixed set of literals. */
61
+ export declare const optionalEnum: <const T extends readonly string[]>(source: Record<string, unknown>, key: string, allowed: T) => T[number] | undefined | FieldError;
62
+ /** Read an optional array of strings. */
63
+ export declare const optionalStringArray: (source: Record<string, unknown>, key: string) => string[] | undefined | FieldError;
64
+ /** Read an optional nested object, leaving its contents to the caller. */
65
+ export declare const optionalRecord: (source: Record<string, unknown>, key: string) => Record<string, unknown> | undefined | FieldError;
66
+ /** Read an optional array, leaving element validation to the caller. */
67
+ export declare const optionalArray: (source: Record<string, unknown>, key: string) => unknown[] | undefined | FieldError;
68
+ /**
69
+ * Drop `undefined` entries so an optional field that was absent stays absent.
70
+ *
71
+ * Schemas build their result object field by field; without this, `{ selector: undefined }`
72
+ * would serialize differently from `{}` and defeat `exactOptionalPropertyTypes`-style
73
+ * reasoning at call sites.
74
+ */
75
+ export declare const compact: <T extends object>(value: T) => T;
76
+ //# sourceMappingURL=schemaFields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemaFields.d.ts","sourceRoot":"","sources":["../../src/protocol/schemaFields.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,152 @@
1
+ import { invalidProtocolPayload, isProtocolObject } from './schema.js';
2
+ /** True when a reader returned a failure rather than a value. */
3
+ export const isFieldError = (value) => typeof value === 'object' && value != null && '__fieldError' in value && typeof value.__fieldError === 'string';
4
+ /** Build a field failure with an explicit message. */
5
+ export const fieldError = (message) => ({ __fieldError: message });
6
+ /**
7
+ * Run a set of field readers, returning either every value or the first failure.
8
+ *
9
+ * The success branch is typed per field — `Exclude<..., FieldError>` removes the failure
10
+ * arm — so a schema gets `string` and `number | undefined` back rather than having to
11
+ * re-narrow each field after a combined check.
12
+ */
13
+ export const readFields = (source, readers) => {
14
+ const values = {};
15
+ for (const [key, read] of Object.entries(readers)) {
16
+ const value = read(source, key);
17
+ if (isFieldError(value)) {
18
+ return invalidProtocolPayload(value.__fieldError);
19
+ }
20
+ values[key] = value;
21
+ }
22
+ return { ok: true, value: values };
23
+ };
24
+ /** Guard the top-level payload shape. Every schema starts here. */
25
+ export const requireObject = (value) => isProtocolObject(value) ? null : invalidProtocolPayload('request body must be an object');
26
+ /** Read a required string field. Empty and whitespace-only values are rejected. */
27
+ export const requiredString = (source, key) => {
28
+ const field = source[key];
29
+ if (typeof field !== 'string' || field.trim() === '') {
30
+ return fieldError(`${key} is required and must be a non-empty string`);
31
+ }
32
+ return field;
33
+ };
34
+ /** Read an optional string field. Present-but-not-a-string is an error, absent is `undefined`. */
35
+ export const optionalString = (source, key) => {
36
+ const field = source[key];
37
+ if (field == null) {
38
+ return undefined;
39
+ }
40
+ if (typeof field !== 'string') {
41
+ return fieldError(`${key} must be a string`);
42
+ }
43
+ return field;
44
+ };
45
+ /** Read an optional non-empty string field, treating `''` as absent. */
46
+ export const optionalNonEmptyString = (source, key) => {
47
+ const field = optionalString(source, key);
48
+ if (isFieldError(field) || field == null) {
49
+ return field;
50
+ }
51
+ return field.length > 0 ? field : undefined;
52
+ };
53
+ /** Read an optional boolean field. */
54
+ export const optionalBoolean = (source, key) => {
55
+ const field = source[key];
56
+ if (field == null) {
57
+ return undefined;
58
+ }
59
+ if (typeof field !== 'boolean') {
60
+ return fieldError(`${key} must be a boolean`);
61
+ }
62
+ return field;
63
+ };
64
+ /** Read an optional finite number field, optionally bounded. */
65
+ export const optionalNumber = (source, key, bounds = {}) => {
66
+ const field = source[key];
67
+ if (field == null) {
68
+ return undefined;
69
+ }
70
+ if (typeof field !== 'number' || !Number.isFinite(field)) {
71
+ return fieldError(`${key} must be a finite number`);
72
+ }
73
+ if (bounds.min != null && field < bounds.min) {
74
+ return fieldError(`${key} must be >= ${bounds.min}`);
75
+ }
76
+ if (bounds.max != null && field > bounds.max) {
77
+ return fieldError(`${key} must be <= ${bounds.max}`);
78
+ }
79
+ return field;
80
+ };
81
+ /** Read an optional integer field, optionally bounded. */
82
+ export const optionalInteger = (source, key, bounds = {}) => {
83
+ const field = optionalNumber(source, key, bounds);
84
+ if (isFieldError(field) || field == null) {
85
+ return field;
86
+ }
87
+ if (!Number.isInteger(field)) {
88
+ return fieldError(`${key} must be an integer`);
89
+ }
90
+ return field;
91
+ };
92
+ /** Read an optional field constrained to a fixed set of literals. */
93
+ export const optionalEnum = (source, key, allowed) => {
94
+ const field = source[key];
95
+ if (field == null) {
96
+ return undefined;
97
+ }
98
+ if (typeof field !== 'string' || !allowed.includes(field)) {
99
+ return fieldError(`${key} must be one of: ${allowed.join(', ')}`);
100
+ }
101
+ return field;
102
+ };
103
+ /** Read an optional array of strings. */
104
+ export const optionalStringArray = (source, key) => {
105
+ const field = source[key];
106
+ if (field == null) {
107
+ return undefined;
108
+ }
109
+ if (!Array.isArray(field) || field.some((item) => typeof item !== 'string')) {
110
+ return fieldError(`${key} must be an array of strings`);
111
+ }
112
+ return field;
113
+ };
114
+ /** Read an optional nested object, leaving its contents to the caller. */
115
+ export const optionalRecord = (source, key) => {
116
+ const field = source[key];
117
+ if (field == null) {
118
+ return undefined;
119
+ }
120
+ if (!isProtocolObject(field)) {
121
+ return fieldError(`${key} must be an object`);
122
+ }
123
+ return field;
124
+ };
125
+ /** Read an optional array, leaving element validation to the caller. */
126
+ export const optionalArray = (source, key) => {
127
+ const field = source[key];
128
+ if (field == null) {
129
+ return undefined;
130
+ }
131
+ if (!Array.isArray(field)) {
132
+ return fieldError(`${key} must be an array`);
133
+ }
134
+ return field;
135
+ };
136
+ /**
137
+ * Drop `undefined` entries so an optional field that was absent stays absent.
138
+ *
139
+ * Schemas build their result object field by field; without this, `{ selector: undefined }`
140
+ * would serialize differently from `{}` and defeat `exactOptionalPropertyTypes`-style
141
+ * reasoning at call sites.
142
+ */
143
+ export const compact = (value) => {
144
+ const result = {};
145
+ for (const [key, entry] of Object.entries(value)) {
146
+ if (entry !== undefined) {
147
+ result[key] = entry;
148
+ }
149
+ }
150
+ return result;
151
+ };
152
+ //# sourceMappingURL=schemaFields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemaFields.js","sourceRoot":"","sources":["../../src/protocol/schemaFields.ts"],"names":[],"mappings":"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"}
@@ -2,4 +2,18 @@
2
2
  export declare const ARGUS_PROTOCOL_VERSION: 2;
3
3
  /** Type-level alias for the current protocol version. */
4
4
  export type ArgusProtocolVersion = typeof ARGUS_PROTOCOL_VERSION;
5
+ /**
6
+ * Describe a watcher's protocol compatibility with this build.
7
+ *
8
+ * The CLI, the SDK, and the watcher ship as separate npm packages, so a 0.3.x CLI can
9
+ * drive a long-running watcher started by an older install. Without this check a version
10
+ * bump changes nothing observable: mismatched peers keep talking and fail later with
11
+ * confusing per-command errors instead of one clear message.
12
+ *
13
+ * @param protocolVersion The `protocolVersion` reported by `GET /status`. A watcher too
14
+ * old to report one is treated as incompatible rather than assumed to match.
15
+ * @returns `null` when the peer is compatible, or an actionable message naming both
16
+ * versions and what to do about it.
17
+ */
18
+ export declare const describeProtocolMismatch: (protocolVersion: number | undefined, watcherVersion?: string) => string | null;
5
19
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/protocol/version.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,eAAO,MAAM,sBAAsB,EAAG,CAAU,CAAA;AAEhD,yDAAyD;AACzD,MAAM,MAAM,oBAAoB,GAAG,OAAO,sBAAsB,CAAA"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/protocol/version.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,eAAO,MAAM,sBAAsB,EAAG,CAAU,CAAA;AAEhD,yDAAyD;AACzD,MAAM,MAAM,oBAAoB,GAAG,OAAO,sBAAsB,CAAA;AAEhE;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,wBAAwB,GAAI,iBAAiB,MAAM,GAAG,SAAS,EAAE,iBAAiB,MAAM,KAAG,MAAM,GAAG,IAQhH,CAAA"}
@@ -1,3 +1,24 @@
1
1
  /** Current protocol version exchanged between CLI and watcher. */
2
2
  export const ARGUS_PROTOCOL_VERSION = 2;
3
+ /**
4
+ * Describe a watcher's protocol compatibility with this build.
5
+ *
6
+ * The CLI, the SDK, and the watcher ship as separate npm packages, so a 0.3.x CLI can
7
+ * drive a long-running watcher started by an older install. Without this check a version
8
+ * bump changes nothing observable: mismatched peers keep talking and fail later with
9
+ * confusing per-command errors instead of one clear message.
10
+ *
11
+ * @param protocolVersion The `protocolVersion` reported by `GET /status`. A watcher too
12
+ * old to report one is treated as incompatible rather than assumed to match.
13
+ * @returns `null` when the peer is compatible, or an actionable message naming both
14
+ * versions and what to do about it.
15
+ */
16
+ export const describeProtocolMismatch = (protocolVersion, watcherVersion) => {
17
+ if (protocolVersion === ARGUS_PROTOCOL_VERSION) {
18
+ return null;
19
+ }
20
+ const reported = protocolVersion == null ? 'an unknown version' : `version ${protocolVersion}`;
21
+ const which = watcherVersion ? `Watcher ${watcherVersion}` : 'This watcher';
22
+ return `${which} speaks protocol ${reported}, but this argus build expects version ${ARGUS_PROTOCOL_VERSION}. Restart the watcher with the current argus, or update argus (npm i -g @vforsh/argus).`;
23
+ };
3
24
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/protocol/version.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAU,CAAA"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/protocol/version.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAU,CAAA;AAKhD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,eAAmC,EAAE,cAAuB,EAAiB,EAAE;IACvH,IAAI,eAAe,KAAK,sBAAsB,EAAE,CAAC;QAChD,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,MAAM,QAAQ,GAAG,eAAe,IAAI,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,WAAW,eAAe,EAAE,CAAA;IAC9F,MAAM,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC,WAAW,cAAc,EAAE,CAAC,CAAC,CAAC,cAAc,CAAA;IAC3E,OAAO,GAAG,KAAK,oBAAoB,QAAQ,0CAA0C,sBAAsB,yFAAyF,CAAA;AACrM,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../src/registry/lock.ts"],"names":[],"mappings":"AAaA;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,YAAY,SAAoB,GAAG,OAAO,CAAC,CAAC,CAAC,CAS5G"}
1
+ {"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../src/registry/lock.ts"],"names":[],"mappings":"AAcA;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,YAAY,SAAoB,GAAG,OAAO,CAAC,CAAC,CAAC,CAS5G"}
@@ -1,6 +1,7 @@
1
1
  import fs from 'node:fs/promises';
2
2
  import path from 'node:path';
3
3
  import { getRegistryPath } from './paths.js';
4
+ import { delay } from '../time.js';
4
5
  /** Max time to wait for lock acquisition. */
5
6
  const LOCK_TIMEOUT_MS = 2_000;
6
7
  /** Lock considered stale if mtime is older than this. */
@@ -43,8 +44,7 @@ const acquireLock = async (lockPath) => {
43
44
  }
44
45
  attempt += 1;
45
46
  const jitter = Math.random() * BASE_RETRY_MS;
46
- const delay = Math.min(BASE_RETRY_MS * attempt, 200) + jitter;
47
- await sleep(delay);
47
+ await delay(Math.min(BASE_RETRY_MS * attempt, 200) + jitter);
48
48
  }
49
49
  // Last-resort: remove potentially stale lock and try once more
50
50
  await removeStaleLock(lockPath);
@@ -83,5 +83,4 @@ const removeStaleLock = async (lockPath) => {
83
83
  const isExistError = (error) => {
84
84
  return !!error && typeof error === 'object' && 'code' in error && error.code === 'EEXIST';
85
85
  };
86
- const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
87
86
  //# sourceMappingURL=lock.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lock.js","sourceRoot":"","sources":["../../src/registry/lock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lock.js","sourceRoot":"","sources":["../../src/registry/lock.ts"],"names":[],"mappings":"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"}
@@ -26,4 +26,18 @@ export declare const pruneStaleWatchers: (registry: RegistryV1, now?: number, tt
26
26
  registry: RegistryV1;
27
27
  removedIds: string[];
28
28
  };
29
+ /**
30
+ * Read the registry, pruning heartbeat-stale entries in the same locked read-modify-write.
31
+ *
32
+ * This is the only automatic path that removes entries: the registry is shared between the CLI
33
+ * and the SDK, so both read through here rather than each keeping its own wrapper.
34
+ */
35
+ export declare const readAndPruneRegistry: (options?: {
36
+ registryPath?: string;
37
+ ttlMs?: number;
38
+ }) => Promise<RegistryV1>;
39
+ /** Remove a watcher entry atomically (locked read-modify-write). */
40
+ export declare const removeWatcherAndPersist: (id: string, registryPath?: string) => Promise<RegistryV1>;
41
+ /** Remove several watcher entries in one locked read-modify-write. */
42
+ export declare const removeWatchersAndPersist: (ids: string[], registryPath?: string) => Promise<RegistryV1>;
29
43
  //# sourceMappingURL=registry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/registry/registry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/E,uCAAuC;AACvC,eAAO,MAAM,gBAAgB,IAAI,CAAA;AAEjC,yCAAyC;AACzC,eAAO,MAAM,cAAc,QAAS,CAAA;AAEpC,4CAA4C;AAC5C,eAAO,MAAM,mBAAmB,GAAI,YAAgB,KAAG,UAIrD,CAAA;AAEF,kEAAkE;AAClE,eAAO,MAAM,YAAY,GAAU,qBAAgC,KAAG,OAAO,CAAC,kBAAkB,CA4B/F,CAAA;AAED,uDAAuD;AACvD,eAAO,MAAM,aAAa,GAAU,UAAU,UAAU,EAAE,qBAAgC,KAAG,OAAO,CAAC,IAAI,CAIxG,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAU,SAAS,CAAC,QAAQ,EAAE,UAAU,KAAK,UAAU,EAAE,qBAAgC,KAAG,OAAO,CAAC,UAAU,CASxI,CAAA;AAED,0CAA0C;AAC1C,eAAO,MAAM,YAAY,GAAI,UAAU,UAAU,KAAG,aAAa,EAAsC,CAAA;AAEvG,qCAAqC;AACrC,eAAO,MAAM,eAAe,GAAI,UAAU,UAAU,EAAE,SAAS,aAAa,EAAE,YAAgB,KAAG,UAUhG,CAAA;AAED,oCAAoC;AACpC,eAAO,MAAM,kBAAkB,GAAI,UAAU,UAAU,EAAE,IAAI,MAAM,EAAE,YAAgB,KAAG,UAavF,CAAA;AAED,mDAAmD;AACnD,eAAO,MAAM,kBAAkB,GAC9B,UAAU,UAAU,EACpB,YAAgB,EAChB,cAAsB,KACpB;IAAE,QAAQ,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAwB9C,CAAA"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/registry/registry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/E,uCAAuC;AACvC,eAAO,MAAM,gBAAgB,IAAI,CAAA;AAEjC,yCAAyC;AACzC,eAAO,MAAM,cAAc,QAAS,CAAA;AAEpC,4CAA4C;AAC5C,eAAO,MAAM,mBAAmB,GAAI,YAAgB,KAAG,UAIrD,CAAA;AAEF,kEAAkE;AAClE,eAAO,MAAM,YAAY,GAAU,qBAAgC,KAAG,OAAO,CAAC,kBAAkB,CA4B/F,CAAA;AAED,uDAAuD;AACvD,eAAO,MAAM,aAAa,GAAU,UAAU,UAAU,EAAE,qBAAgC,KAAG,OAAO,CAAC,IAAI,CAIxG,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAU,SAAS,CAAC,QAAQ,EAAE,UAAU,KAAK,UAAU,EAAE,qBAAgC,KAAG,OAAO,CAAC,UAAU,CASxI,CAAA;AAED,0CAA0C;AAC1C,eAAO,MAAM,YAAY,GAAI,UAAU,UAAU,KAAG,aAAa,EAAsC,CAAA;AAEvG,qCAAqC;AACrC,eAAO,MAAM,eAAe,GAAI,UAAU,UAAU,EAAE,SAAS,aAAa,EAAE,YAAgB,KAAG,UAUhG,CAAA;AAED,oCAAoC;AACpC,eAAO,MAAM,kBAAkB,GAAI,UAAU,UAAU,EAAE,IAAI,MAAM,EAAE,YAAgB,KAAG,UAavF,CAAA;AAED,mDAAmD;AACnD,eAAO,MAAM,kBAAkB,GAC9B,UAAU,UAAU,EACpB,YAAgB,EAChB,cAAsB,KACpB;IAAE,QAAQ,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAwB9C,CAAA;AAoDD;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAAU,UAAS;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,KAAG,OAAO,CAAC,UAAU,CAGtH,CAAA;AAED,oEAAoE;AACpE,eAAO,MAAM,uBAAuB,GAAU,IAAI,MAAM,EAAE,eAAe,MAAM,KAAG,OAAO,CAAC,UAAU,CACvB,CAAA;AAE7E,sEAAsE;AACtE,eAAO,MAAM,wBAAwB,GAAU,KAAK,MAAM,EAAE,EAAE,eAAe,MAAM,KAAG,OAAO,CAAC,UAAU,CAOvG,CAAA"}
@@ -152,4 +152,24 @@ const isRegistryV1 = (value) => {
152
152
  }
153
153
  return typeof record.updatedAt === 'number';
154
154
  };
155
+ /**
156
+ * Read the registry, pruning heartbeat-stale entries in the same locked read-modify-write.
157
+ *
158
+ * This is the only automatic path that removes entries: the registry is shared between the CLI
159
+ * and the SDK, so both read through here rather than each keeping its own wrapper.
160
+ */
161
+ export const readAndPruneRegistry = async (options = {}) => {
162
+ const ttlMs = options.ttlMs ?? DEFAULT_TTL_MS;
163
+ return updateRegistry((registry) => pruneStaleWatchers(registry, Date.now(), ttlMs).registry, options.registryPath);
164
+ };
165
+ /** Remove a watcher entry atomically (locked read-modify-write). */
166
+ export const removeWatcherAndPersist = async (id, registryPath) => updateRegistry((registry) => removeWatcherEntry(registry, id), registryPath);
167
+ /** Remove several watcher entries in one locked read-modify-write. */
168
+ export const removeWatchersAndPersist = async (ids, registryPath) => {
169
+ if (ids.length === 0) {
170
+ const { registry } = await readRegistry(registryPath);
171
+ return registry;
172
+ }
173
+ return updateRegistry((registry) => ids.reduce((next, id) => removeWatcherEntry(next, id), registry), registryPath);
174
+ };
155
175
  //# sourceMappingURL=registry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/registry/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/registry/registry.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"textPattern.d.ts","sourceRoot":"","sources":["../src/textPattern.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAI7F;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,KAAG,WAa/C,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,MAAM,MAAM,EAAE,SAAS,WAAW,KAAG,OAQvE,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAAI,MAAM,MAAM,EAAE,SAAS,WAAW,KAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAgB7G,CAAA"}
1
+ {"version":3,"file":"textPattern.d.ts","sourceRoot":"","sources":["../src/textPattern.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAI7F;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,KAAG,WAa/C,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,MAAM,MAAM,EAAE,SAAS,WAAW,KAAG,OAQvE,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAAI,MAAM,MAAM,EAAE,SAAS,WAAW,KAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAgB7G,CAAA"}
@@ -1,3 +1,4 @@
1
+ import { formatError } from './errorMessage.js';
1
2
  const REGEX_PATTERN = /^\/(.+)\/([imsu]*)$/;
2
3
  /**
3
4
  * Parse a plain string or `/regex/flags` value into a reusable text pattern.
@@ -12,7 +13,7 @@ export const parseTextPattern = (text) => {
12
13
  return { type: 'regex', regex: new RegExp(pattern, flags) };
13
14
  }
14
15
  catch (error) {
15
- const msg = error instanceof Error ? error.message : String(error);
16
+ const msg = formatError(error);
16
17
  throw new Error(`Invalid regex pattern "${text}": ${msg}`);
17
18
  }
18
19
  };
@@ -1 +1 @@
1
- {"version":3,"file":"textPattern.js","sourceRoot":"","sources":["../src/textPattern.ts"],"names":[],"mappings":"AAEA,MAAM,aAAa,GAAG,qBAAqB,CAAA;AAE3C;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAe,EAAE;IAC7D,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACtC,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;IACtC,CAAC;IAED,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,KAAK,CAAA;IAChC,IAAI,CAAC;QACJ,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,MAAM,CAAC,OAAQ,EAAE,KAAK,CAAC,EAAE,CAAA;IAC7D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAClE,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,MAAM,GAAG,EAAE,CAAC,CAAA;IAC3D,CAAC;AACF,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAE,OAAoB,EAAW,EAAE;IACjF,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACpC,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACxC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAA;IAC3B,OAAO,OAAO,CAAA;AACf,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,IAAY,EAAE,OAAoB,EAA4C,EAAE;IACpH,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACzC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;IACnE,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACxC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAA;IAC3B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;QACnC,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,OAAO;QACN,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;KAC5C,CAAA;AACF,CAAC,CAAA"}
1
+ {"version":3,"file":"textPattern.js","sourceRoot":"","sources":["../src/textPattern.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAG/C,MAAM,aAAa,GAAG,qBAAqB,CAAA;AAE3C;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAe,EAAE;IAC7D,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACtC,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;IACtC,CAAC;IAED,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,KAAK,CAAA;IAChC,IAAI,CAAC;QACJ,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,MAAM,CAAC,OAAQ,EAAE,KAAK,CAAC,EAAE,CAAA;IAC7D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;QAC9B,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,MAAM,GAAG,EAAE,CAAC,CAAA;IAC3D,CAAC;AACF,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAE,OAAoB,EAAW,EAAE;IACjF,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACpC,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACxC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAA;IAC3B,OAAO,OAAO,CAAA;AACf,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,IAAY,EAAE,OAAoB,EAA4C,EAAE;IACpH,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACzC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;IACnE,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACxC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAA;IAC3B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;QACnC,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,OAAO;QACN,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;KAC5C,CAAA;AACF,CAAC,CAAA"}
package/dist/time.d.ts ADDED
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Resolve after `ms` milliseconds.
3
+ *
4
+ * Seventeen modules had defined this same one-liner privately, under two names.
5
+ */
6
+ export declare const delay: (ms: number) => Promise<void>;
7
+ /** Duration suffixes accepted by {@link parseDurationMs}. */
8
+ export type DurationUnit = 'ms' | 's' | 'm' | 'h' | 'd';
9
+ /**
10
+ * Parse a duration string such as `250ms`, `30s`, `10m`, `2h`, or `7d` into milliseconds.
11
+ *
12
+ * @param value Duration string. A bare number is interpreted using `defaultUnit`.
13
+ * @param defaultUnit Unit applied when `value` carries no suffix. Defaults to seconds,
14
+ * matching the CLI's `--since`/`--duration` style flags; pass `'ms'` for flags whose
15
+ * documented examples are millisecond-scale.
16
+ * @returns Milliseconds, or `null` when the value is empty or not a valid duration.
17
+ * Note that `0` is a valid result — check for `null` explicitly, not falsiness.
18
+ */
19
+ export declare const parseDurationMs: (value: string, defaultUnit?: DurationUnit) => number | null;
20
+ //# sourceMappingURL=time.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../src/time.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,KAAK,GAAI,IAAI,MAAM,KAAG,OAAO,CAAC,IAAI,CAAsD,CAAA;AAErG,6DAA6D;AAC7D,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;AAUvD;;;;;;;;;GASG;AACH,eAAO,MAAM,eAAe,GAAI,OAAO,MAAM,EAAE,cAAa,YAAkB,KAAG,MAAM,GAAG,IAiBzF,CAAA"}
package/dist/time.js ADDED
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Resolve after `ms` milliseconds.
3
+ *
4
+ * Seventeen modules had defined this same one-liner privately, under two names.
5
+ */
6
+ export const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
7
+ const UNIT_MS = {
8
+ ms: 1,
9
+ s: 1_000,
10
+ m: 60_000,
11
+ h: 3_600_000,
12
+ d: 86_400_000,
13
+ };
14
+ /**
15
+ * Parse a duration string such as `250ms`, `30s`, `10m`, `2h`, or `7d` into milliseconds.
16
+ *
17
+ * @param value Duration string. A bare number is interpreted using `defaultUnit`.
18
+ * @param defaultUnit Unit applied when `value` carries no suffix. Defaults to seconds,
19
+ * matching the CLI's `--since`/`--duration` style flags; pass `'ms'` for flags whose
20
+ * documented examples are millisecond-scale.
21
+ * @returns Milliseconds, or `null` when the value is empty or not a valid duration.
22
+ * Note that `0` is a valid result — check for `null` explicitly, not falsiness.
23
+ */
24
+ export const parseDurationMs = (value, defaultUnit = 's') => {
25
+ const trimmed = value.trim();
26
+ if (!trimmed) {
27
+ return null;
28
+ }
29
+ const match = trimmed.match(/^([0-9]+(?:\.[0-9]+)?)(ms|s|m|h|d)?$/);
30
+ if (!match) {
31
+ return null;
32
+ }
33
+ const amount = Number(match[1]);
34
+ if (!Number.isFinite(amount)) {
35
+ return null;
36
+ }
37
+ return amount * UNIT_MS[match[2] ?? defaultUnit];
38
+ };
39
+ //# sourceMappingURL=time.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.js","sourceRoot":"","sources":["../src/time.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,EAAU,EAAiB,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;AAKrG,MAAM,OAAO,GAAiC;IAC7C,EAAE,EAAE,CAAC;IACL,CAAC,EAAE,KAAK;IACR,CAAC,EAAE,MAAM;IACT,CAAC,EAAE,SAAS;IACZ,CAAC,EAAE,UAAU;CACb,CAAA;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAa,EAAE,cAA4B,GAAG,EAAiB,EAAE;IAChG,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAA;IACnE,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,OAAO,MAAM,GAAG,OAAO,CAAE,KAAK,CAAC,CAAC,CAA8B,IAAI,WAAW,CAAC,CAAA;AAC/E,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vforsh/argus-core",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/vforsh/argus.git",
@@ -13,6 +13,14 @@
13
13
  ".": {
14
14
  "types": "./dist/index.d.ts",
15
15
  "default": "./dist/index.js"
16
+ },
17
+ "./error-message": {
18
+ "types": "./dist/errorMessage.d.ts",
19
+ "default": "./dist/errorMessage.js"
20
+ },
21
+ "./native-messaging": {
22
+ "types": "./dist/protocol/native-messaging.d.ts",
23
+ "default": "./dist/protocol/native-messaging.js"
16
24
  }
17
25
  },
18
26
  "files": [
@@ -25,11 +33,5 @@
25
33
  "clean": "node ../../scripts/clean-dist.mjs",
26
34
  "build": "npm run clean && tsc -b",
27
35
  "typecheck": "tsc -b --pretty false --noEmit"
28
- },
29
- "peerDependencies": {
30
- "commander": "^14.0.0"
31
- },
32
- "devDependencies": {
33
- "commander": "^14.0.2"
34
36
  }
35
37
  }