@calltelemetry/cli 0.14.0 → 0.15.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/channels.d.ts.map +1 -1
- package/dist/commands/channels.js +5 -2
- package/dist/commands/channels.js.map +1 -1
- package/dist/commands/ship-update.d.ts +1 -1
- package/dist/commands/ship-update.d.ts.map +1 -1
- package/dist/commands/ship-update.js +52 -26
- package/dist/commands/ship-update.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +55 -24
- package/dist/commands/update.js.map +1 -1
- package/dist/lib/bundle.d.ts +6 -4
- package/dist/lib/bundle.d.ts.map +1 -1
- package/dist/lib/bundle.js +78 -4
- package/dist/lib/bundle.js.map +1 -1
- package/dist/lib/channels.d.ts +7 -0
- package/dist/lib/channels.d.ts.map +1 -1
- package/dist/lib/channels.js +33 -1
- package/dist/lib/channels.js.map +1 -1
- package/dist/lib/stable-nightly.d.ts +65 -0
- package/dist/lib/stable-nightly.d.ts.map +1 -0
- package/dist/lib/stable-nightly.js +299 -0
- package/dist/lib/stable-nightly.js.map +1 -0
- package/dist/lib/version.d.ts +1 -1
- package/dist/lib/version.js +1 -1
- package/dist/ui/hooks/useComposeLogs.d.ts.map +1 -1
- package/dist/ui/hooks/useComposeLogs.js +18 -0
- package/dist/ui/hooks/useComposeLogs.js.map +1 -1
- package/dist/utils/version.d.ts +14 -6
- package/dist/utils/version.d.ts.map +1 -1
- package/dist/utils/version.js +39 -8
- package/dist/utils/version.js.map +1 -1
- package/package.json +1 -1
|
@@ -5,11 +5,16 @@ export function useComposeLogs(service, tail = 200) {
|
|
|
5
5
|
const [lines, setLines] = useState([]);
|
|
6
6
|
const [isRunning, setIsRunning] = useState(false);
|
|
7
7
|
const procRef = useRef(null);
|
|
8
|
+
// Bumped whenever the active stream is stopped or the component unmounts.
|
|
9
|
+
// `start()` is async (compose detection + execa), so a stop() that lands
|
|
10
|
+
// while detection is in flight must prevent the process from being spawned.
|
|
11
|
+
const generationRef = useRef(0);
|
|
8
12
|
const serviceRef = useRef(service);
|
|
9
13
|
const tailRef = useRef(tail);
|
|
10
14
|
serviceRef.current = service;
|
|
11
15
|
tailRef.current = tail;
|
|
12
16
|
const stop = useCallback(() => {
|
|
17
|
+
generationRef.current += 1;
|
|
13
18
|
if (procRef.current) {
|
|
14
19
|
procRef.current.kill();
|
|
15
20
|
procRef.current = null;
|
|
@@ -20,9 +25,13 @@ export function useComposeLogs(service, tail = 200) {
|
|
|
20
25
|
stop();
|
|
21
26
|
if (!serviceRef.current)
|
|
22
27
|
return;
|
|
28
|
+
const generation = generationRef.current;
|
|
23
29
|
setLines([]);
|
|
24
30
|
setIsRunning(true);
|
|
25
31
|
const composeCmd = await detectComposeCommand();
|
|
32
|
+
// stop()/unmount won the race with compose detection: never spawn.
|
|
33
|
+
if (generation !== generationRef.current)
|
|
34
|
+
return;
|
|
26
35
|
const tailStr = String(tailRef.current);
|
|
27
36
|
let proc;
|
|
28
37
|
if (composeCmd === 'docker compose') {
|
|
@@ -40,8 +49,11 @@ export function useComposeLogs(service, tail = 200) {
|
|
|
40
49
|
});
|
|
41
50
|
}
|
|
42
51
|
procRef.current = proc;
|
|
52
|
+
const isCurrent = () => procRef.current === proc;
|
|
43
53
|
let buffer = '';
|
|
44
54
|
proc.stdout.on('data', (chunk) => {
|
|
55
|
+
if (!isCurrent())
|
|
56
|
+
return;
|
|
45
57
|
buffer += chunk.toString();
|
|
46
58
|
const parts = buffer.split('\n');
|
|
47
59
|
buffer = parts.pop();
|
|
@@ -54,6 +66,8 @@ export function useComposeLogs(service, tail = 200) {
|
|
|
54
66
|
});
|
|
55
67
|
// Also capture stderr (compose sometimes writes there)
|
|
56
68
|
proc.stderr.on('data', (chunk) => {
|
|
69
|
+
if (!isCurrent())
|
|
70
|
+
return;
|
|
57
71
|
buffer += chunk.toString();
|
|
58
72
|
const parts = buffer.split('\n');
|
|
59
73
|
buffer = parts.pop();
|
|
@@ -65,6 +79,9 @@ export function useComposeLogs(service, tail = 200) {
|
|
|
65
79
|
}
|
|
66
80
|
});
|
|
67
81
|
proc.then(() => {
|
|
82
|
+
// A newer start() or stop() replaced this process; ignore its completion.
|
|
83
|
+
if (!isCurrent())
|
|
84
|
+
return;
|
|
68
85
|
if (buffer.length > 0) {
|
|
69
86
|
setLines(prev => [...prev, buffer]);
|
|
70
87
|
}
|
|
@@ -74,6 +91,7 @@ export function useComposeLogs(service, tail = 200) {
|
|
|
74
91
|
}, [stop]);
|
|
75
92
|
useEffect(() => {
|
|
76
93
|
return () => {
|
|
94
|
+
generationRef.current += 1;
|
|
77
95
|
if (procRef.current) {
|
|
78
96
|
procRef.current.kill();
|
|
79
97
|
procRef.current = null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useComposeLogs.js","sourceRoot":"","sources":["../../../src/ui/hooks/useComposeLogs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACjE,OAAO,EAAE,KAAK,EAAsB,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,MAAM,UAAU,cAAc,CAC5B,OAAsB,EACtB,IAAI,GAAG,GAAG;IAOV,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAW,EAAE,CAAC,CAAC;IACjD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,MAAM,CAAuB,IAAI,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7B,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;IAC7B,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAEvB,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE;QAC5B,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACvB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;QACzB,CAAC;QACD,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACnC,IAAI,EAAE,CAAC;QACP,IAAI,CAAC,UAAU,CAAC,OAAO;YAAE,OAAO;QAEhC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACb,YAAY,CAAC,IAAI,CAAC,CAAC;QAEnB,MAAM,UAAU,GAAG,MAAM,oBAAoB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"useComposeLogs.js","sourceRoot":"","sources":["../../../src/ui/hooks/useComposeLogs.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/version.d.ts
CHANGED
|
@@ -1,22 +1,30 @@
|
|
|
1
|
-
export
|
|
1
|
+
export interface ParsedVersion {
|
|
2
2
|
major: number;
|
|
3
3
|
minor: number;
|
|
4
4
|
patch: number;
|
|
5
|
-
|
|
5
|
+
build?: number;
|
|
6
|
+
}
|
|
7
|
+
export declare function parseVersion(version: string): ParsedVersion | null;
|
|
6
8
|
export declare function isVersionGte(version: string, target: string): boolean;
|
|
7
9
|
/**
|
|
8
|
-
* Compare two version strings with
|
|
10
|
+
* Compare two version strings with 4-segment patch build and pre-release support.
|
|
9
11
|
* Returns positive if a > b, negative if a < b, 0 if equal.
|
|
10
12
|
*
|
|
11
|
-
* Ordering:
|
|
12
|
-
*
|
|
13
|
+
* Ordering: higher 4-segment core wins; for equal core, stable releases sort
|
|
14
|
+
* HIGHER than RCs of the same core version.
|
|
15
|
+
* 0.8.6.32 > 0.8.6.32-rc15 > 0.8.6.31 > 0.8.6 > 0.8.6-rc99
|
|
13
16
|
*/
|
|
14
17
|
export declare function compareVersions(a: string, b: string): number;
|
|
15
18
|
/** Strip branch-latest image tags to the X.Y.Z line they belong to. */
|
|
16
19
|
export declare function normalizeReleaseIdentity(version: string): string;
|
|
20
|
+
/**
|
|
21
|
+
* True iff `current` is an installed 4-segment final release (`X.Y.Z.N`) and
|
|
22
|
+
* `target` is a pre-release RC (`X.Y.Z.N-rcM`) with the exact same 4-segment core.
|
|
23
|
+
*/
|
|
24
|
+
export declare function isSameCoreFinalSupersedingRc(current: string, target: string): boolean;
|
|
17
25
|
/**
|
|
18
26
|
* True when installing `target` would move the appliance to an older release
|
|
19
|
-
* line or an older RC on the same
|
|
27
|
+
* line/build or an older RC on the same core.
|
|
20
28
|
*
|
|
21
29
|
* A bare `X.Y.Z` current identity is a **line pin** (CT_RELEASE_VERSION /
|
|
22
30
|
* branch_latest), not a customer final. Same-line `X.Y.Z-rcN` is therefore
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/utils/version.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/utils/version.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAYlE;AAsCD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CASrE;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CA2B5D;AAMD,uEAAuE;AACvE,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAKhE;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAgBrF;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAW3E"}
|
package/dist/utils/version.js
CHANGED
|
@@ -1,18 +1,23 @@
|
|
|
1
1
|
export function parseVersion(version) {
|
|
2
|
-
const match = version.match(/^(\d+)\.(\d+)\.(\d+)
|
|
2
|
+
const match = version.match(/^(\d+)\.(\d+)\.(\d+)(?:\.(\d+))?/);
|
|
3
3
|
if (!match)
|
|
4
4
|
return null;
|
|
5
|
-
|
|
5
|
+
const parsed = {
|
|
6
6
|
major: parseInt(match[1], 10),
|
|
7
7
|
minor: parseInt(match[2], 10),
|
|
8
8
|
patch: parseInt(match[3], 10),
|
|
9
9
|
};
|
|
10
|
+
if (match[4] !== undefined) {
|
|
11
|
+
parsed.build = parseInt(match[4], 10);
|
|
12
|
+
}
|
|
13
|
+
return parsed;
|
|
10
14
|
}
|
|
11
15
|
/**
|
|
12
16
|
* Parse pre-release suffix from a version string.
|
|
13
17
|
* Examples:
|
|
14
18
|
* "0.8.6" -> null (stable)
|
|
15
19
|
* "0.8.6-rc48" -> { rc: 48, suffix: null }
|
|
20
|
+
* "0.8.6.32-rc15" -> { rc: 15, suffix: null }
|
|
16
21
|
* "0.8.6-rc49-jtapi" -> { rc: 49, suffix: "jtapi" }
|
|
17
22
|
* "0.8.6-rc47-jtapi.4" -> { rc: 47, suffix: "jtapi.4" }
|
|
18
23
|
*/
|
|
@@ -55,25 +60,30 @@ export function isVersionGte(version, target) {
|
|
|
55
60
|
return cmp >= 0;
|
|
56
61
|
}
|
|
57
62
|
/**
|
|
58
|
-
* Compare two version strings with
|
|
63
|
+
* Compare two version strings with 4-segment patch build and pre-release support.
|
|
59
64
|
* Returns positive if a > b, negative if a < b, 0 if equal.
|
|
60
65
|
*
|
|
61
|
-
* Ordering:
|
|
62
|
-
*
|
|
66
|
+
* Ordering: higher 4-segment core wins; for equal core, stable releases sort
|
|
67
|
+
* HIGHER than RCs of the same core version.
|
|
68
|
+
* 0.8.6.32 > 0.8.6.32-rc15 > 0.8.6.31 > 0.8.6 > 0.8.6-rc99
|
|
63
69
|
*/
|
|
64
70
|
export function compareVersions(a, b) {
|
|
65
71
|
const va = parseVersion(a);
|
|
66
72
|
const vb = parseVersion(b);
|
|
67
73
|
if (!va || !vb)
|
|
68
74
|
return 0;
|
|
69
|
-
// Compare base
|
|
75
|
+
// Compare base 3/4-segment core
|
|
70
76
|
if (va.major !== vb.major)
|
|
71
77
|
return va.major - vb.major;
|
|
72
78
|
if (va.minor !== vb.minor)
|
|
73
79
|
return va.minor - vb.minor;
|
|
74
80
|
if (va.patch !== vb.patch)
|
|
75
81
|
return va.patch - vb.patch;
|
|
76
|
-
|
|
82
|
+
const buildA = va.build ?? 0;
|
|
83
|
+
const buildB = vb.build ?? 0;
|
|
84
|
+
if (buildA !== buildB)
|
|
85
|
+
return buildA - buildB;
|
|
86
|
+
// Same core version — compare pre-release
|
|
77
87
|
const preA = parsePreRelease(a);
|
|
78
88
|
const preB = parsePreRelease(b);
|
|
79
89
|
// Stable (no pre-release) sorts higher than any RC
|
|
@@ -91,6 +101,7 @@ export function compareVersions(a, b) {
|
|
|
91
101
|
}
|
|
92
102
|
const BRANCH_LATEST_SHA = /^(\d+\.\d+\.\d+)-stable-[0-9a-f]+$/i;
|
|
93
103
|
const LINE_PIN = /^(\d+\.\d+\.\d+)$/;
|
|
104
|
+
const FOUR_SEGMENT_FINAL = /^\d+\.\d+\.\d+\.\d+$/;
|
|
94
105
|
/** Strip branch-latest image tags to the X.Y.Z line they belong to. */
|
|
95
106
|
export function normalizeReleaseIdentity(version) {
|
|
96
107
|
const raw = String(version || '').trim();
|
|
@@ -99,9 +110,29 @@ export function normalizeReleaseIdentity(version) {
|
|
|
99
110
|
return sha[1];
|
|
100
111
|
return raw;
|
|
101
112
|
}
|
|
113
|
+
/**
|
|
114
|
+
* True iff `current` is an installed 4-segment final release (`X.Y.Z.N`) and
|
|
115
|
+
* `target` is a pre-release RC (`X.Y.Z.N-rcM`) with the exact same 4-segment core.
|
|
116
|
+
*/
|
|
117
|
+
export function isSameCoreFinalSupersedingRc(current, target) {
|
|
118
|
+
const from = String(current || '').trim();
|
|
119
|
+
const to = String(target || '').trim();
|
|
120
|
+
if (!FOUR_SEGMENT_FINAL.test(from))
|
|
121
|
+
return false;
|
|
122
|
+
if (!parsePreRelease(to))
|
|
123
|
+
return false;
|
|
124
|
+
const vf = parseVersion(from);
|
|
125
|
+
const vt = parseVersion(to);
|
|
126
|
+
if (!vf || !vt || vf.build === undefined || vt.build === undefined)
|
|
127
|
+
return false;
|
|
128
|
+
return (vf.major === vt.major &&
|
|
129
|
+
vf.minor === vt.minor &&
|
|
130
|
+
vf.patch === vt.patch &&
|
|
131
|
+
vf.build === vt.build);
|
|
132
|
+
}
|
|
102
133
|
/**
|
|
103
134
|
* True when installing `target` would move the appliance to an older release
|
|
104
|
-
* line or an older RC on the same
|
|
135
|
+
* line/build or an older RC on the same core.
|
|
105
136
|
*
|
|
106
137
|
* A bare `X.Y.Z` current identity is a **line pin** (CT_RELEASE_VERSION /
|
|
107
138
|
* branch_latest), not a customer final. Same-line `X.Y.Z-rcN` is therefore
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/utils/version.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/utils/version.ts"],"names":[],"mappings":"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"}
|