@ttsc/unplugin 0.31.3 → 0.31.4
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/lib/core/transform/session/claimSharedCompile.js +6 -4
- package/lib/core/transform/session/claimSharedCompile.js.map +1 -1
- package/lib/core/transform/session/claimSharedCompile.mjs +6 -4
- package/lib/core/transform/session/claimSharedCompile.mjs.map +1 -1
- package/lib/core/transform/session/openTtscTransformSession.d.cts +1 -1
- package/lib/core/transform/session/openTtscTransformSession.d.mts +1 -1
- package/lib/core/transform/session/openTtscTransformSession.d.ts +1 -1
- package/lib/core/transform/session/openTtscTransformSession.js +7 -3
- package/lib/core/transform/session/openTtscTransformSession.js.map +1 -1
- package/lib/core/transform/session/openTtscTransformSession.mjs +7 -3
- package/lib/core/transform/session/openTtscTransformSession.mjs.map +1 -1
- package/lib/core/transform/tracker/broker/sweepAbandonedWatchProbes.d.cts +6 -6
- package/lib/core/transform/tracker/broker/sweepAbandonedWatchProbes.d.mts +6 -6
- package/lib/core/transform/tracker/broker/sweepAbandonedWatchProbes.d.ts +6 -6
- package/lib/core/transform/tracker/broker/sweepAbandonedWatchProbes.js +9 -7
- package/lib/core/transform/tracker/broker/sweepAbandonedWatchProbes.js.map +1 -1
- package/lib/core/transform/tracker/broker/sweepAbandonedWatchProbes.mjs +9 -7
- package/lib/core/transform/tracker/broker/sweepAbandonedWatchProbes.mjs.map +1 -1
- package/lib/core/transform/tracker/settleProjectMutationEvents.d.cts +23 -29
- package/lib/core/transform/tracker/settleProjectMutationEvents.d.mts +23 -29
- package/lib/core/transform/tracker/settleProjectMutationEvents.d.ts +23 -29
- package/lib/core/transform/tracker/settleProjectMutationEvents.js +25 -37
- package/lib/core/transform/tracker/settleProjectMutationEvents.js.map +1 -1
- package/lib/core/transform/tracker/settleProjectMutationEvents.mjs +25 -37
- package/lib/core/transform/tracker/settleProjectMutationEvents.mjs.map +1 -1
- package/lib/core/transform/tracker/verifyGenerationLocations.d.cts +41 -0
- package/lib/core/transform/tracker/verifyGenerationLocations.d.mts +41 -0
- package/lib/core/transform/tracker/verifyGenerationLocations.d.ts +41 -0
- package/lib/core/transform/tracker/verifyGenerationLocations.js +54 -0
- package/lib/core/transform/tracker/verifyGenerationLocations.js.map +1 -0
- package/lib/core/transform/tracker/verifyGenerationLocations.mjs +52 -0
- package/lib/core/transform/tracker/verifyGenerationLocations.mjs.map +1 -0
- package/lib/core/transform/utils/isZombieProcess.d.cts +26 -0
- package/lib/core/transform/utils/isZombieProcess.d.mts +26 -0
- package/lib/core/transform/utils/isZombieProcess.d.ts +26 -0
- package/lib/core/transform/utils/isZombieProcess.js +46 -0
- package/lib/core/transform/utils/isZombieProcess.js.map +1 -0
- package/lib/core/transform/utils/isZombieProcess.mjs +44 -0
- package/lib/core/transform/utils/isZombieProcess.mjs.map +1 -0
- package/lib/core/transform/validation/TtscGenerationProof.d.cts +12 -4
- package/lib/core/transform/validation/TtscGenerationProof.d.mts +12 -4
- package/lib/core/transform/validation/TtscGenerationProof.d.ts +12 -4
- package/lib/core/transform/validation/TtscGenerationProof.js +13 -4
- package/lib/core/transform/validation/TtscGenerationProof.js.map +1 -1
- package/lib/core/transform/validation/TtscGenerationProof.mjs +13 -4
- package/lib/core/transform/validation/TtscGenerationProof.mjs.map +1 -1
- package/lib/core/transform/validation/matchesCachedExternalInputs.d.cts +2 -2
- package/lib/core/transform/validation/matchesCachedExternalInputs.d.mts +2 -2
- package/lib/core/transform/validation/matchesCachedExternalInputs.d.ts +2 -2
- package/lib/core/transform/validation/matchesCachedExternalInputs.js +26 -5
- package/lib/core/transform/validation/matchesCachedExternalInputs.js.map +1 -1
- package/lib/core/transform/validation/matchesCachedExternalInputs.mjs +26 -5
- package/lib/core/transform/validation/matchesCachedExternalInputs.mjs.map +1 -1
- package/lib/core/transform/validation/matchesCompleteInputSnapshot.js +1 -1
- package/lib/core/transform/validation/matchesCompleteInputSnapshot.js.map +1 -1
- package/lib/core/transform/validation/matchesCompleteInputSnapshot.mjs +1 -1
- package/lib/core/transform/validation/matchesCompleteInputSnapshot.mjs.map +1 -1
- package/lib/core/transform/validation/matchesUniversalHostInputProbes.d.cts +15 -8
- package/lib/core/transform/validation/matchesUniversalHostInputProbes.d.mts +15 -8
- package/lib/core/transform/validation/matchesUniversalHostInputProbes.d.ts +15 -8
- package/lib/core/transform/validation/matchesUniversalHostInputProbes.js +29 -20
- package/lib/core/transform/validation/matchesUniversalHostInputProbes.js.map +1 -1
- package/lib/core/transform/validation/matchesUniversalHostInputProbes.mjs +29 -20
- package/lib/core/transform/validation/matchesUniversalHostInputProbes.mjs.map +1 -1
- package/lib/core/transform/validation/matchesUniversalHostInputs.js +1 -1
- package/lib/core/transform/validation/matchesUniversalHostInputs.js.map +1 -1
- package/lib/core/transform/validation/matchesUniversalHostInputs.mjs +1 -1
- package/lib/core/transform/validation/matchesUniversalHostInputs.mjs.map +1 -1
- package/package.json +3 -3
- package/src/core/transform/session/claimSharedCompile.ts +6 -4
- package/src/core/transform/session/openTtscTransformSession.ts +7 -3
- package/src/core/transform/tracker/broker/sweepAbandonedWatchProbes.ts +8 -7
- package/src/core/transform/tracker/settleProjectMutationEvents.ts +25 -36
- package/src/core/transform/tracker/verifyGenerationLocations.ts +53 -0
- package/src/core/transform/utils/isZombieProcess.ts +39 -0
- package/src/core/transform/validation/TtscGenerationProof.ts +20 -4
- package/src/core/transform/validation/matchesCachedExternalInputs.ts +28 -5
- package/src/core/transform/validation/matchesCompleteInputSnapshot.ts +1 -1
- package/src/core/transform/validation/matchesUniversalHostInputProbes.ts +27 -16
- package/src/core/transform/validation/matchesUniversalHostInputs.ts +1 -1
|
@@ -1,48 +1,42 @@
|
|
|
1
1
|
import type { TtscCachedProjectTransform } from "../cache/TtscCachedProjectTransform.mjs";
|
|
2
2
|
/**
|
|
3
|
-
* Await the cached trackers' drain operations
|
|
4
|
-
*
|
|
3
|
+
* Await the cached trackers' drain operations before persistent validation
|
|
4
|
+
* reads their verdicts.
|
|
5
5
|
*
|
|
6
6
|
* A synchronous edit returns before its watch event is applied, so without this
|
|
7
7
|
* a delivery could validate against a tracker that has not been told yet. Each
|
|
8
8
|
* tracker uses its supplied native drain or the local two-immediate fallback;
|
|
9
9
|
* that fallback is a scheduling opportunity, not independent native delivery
|
|
10
|
-
* proof. Concurrent sibling deliveries share an in-flight tracker drain.
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
10
|
+
* proof. Concurrent sibling deliveries share an in-flight tracker drain. Drain
|
|
11
|
+
* rejection aborts the delivery's settlement and does not cancel sibling
|
|
12
|
+
* drains.
|
|
13
|
+
*
|
|
14
|
+
* The watched directories' identities are not checked here but by the
|
|
15
|
+
* delivery's synchronous admission (`verifyGenerationLocations`), after its
|
|
16
|
+
* last await, so a directory replaced while the delivery prepared is still
|
|
17
|
+
* caught and its reading is current when a validator reuses it.
|
|
18
18
|
*
|
|
19
19
|
* @evidence contracts/common.md#principled-implementation
|
|
20
|
-
* Successful aggregate completion precedes
|
|
21
|
-
*
|
|
22
|
-
*
|
|
20
|
+
* Successful aggregate completion precedes admission. Missing backend
|
|
21
|
+
* delivery premises are not supplied by this adapter; the caller still
|
|
22
|
+
* decides whether silence has authority.
|
|
23
23
|
* @evidence contracts/common.md#clear-and-simple-design
|
|
24
|
-
* One three-tracker list drives
|
|
25
|
-
*
|
|
24
|
+
* One three-tracker list drives drainage; directory identity belongs to the
|
|
25
|
+
* synchronous admission that reads it.
|
|
26
26
|
* @evidence contracts/common.md#prohibited-implementation-shortcuts
|
|
27
|
-
*
|
|
28
|
-
*
|
|
27
|
+
* The operation does not patch watcher paths or certify a generation from a
|
|
28
|
+
* timeout alone.
|
|
29
29
|
* @evidence contracts/common.md#meaningful-documentation
|
|
30
|
-
* Native paragraphs explain event ordering
|
|
31
|
-
*
|
|
30
|
+
* Native paragraphs explain event ordering and where location verification
|
|
31
|
+
* moved, under the documentation skill.
|
|
32
32
|
* @evidence contracts/portability.md#os-neutral-implementation
|
|
33
|
-
* OS-neutral delivery uses backend-owned drains
|
|
34
|
-
* identities; lexical aliases cannot prove a replaced directory unchanged.
|
|
33
|
+
* OS-neutral delivery uses backend-owned drains.
|
|
35
34
|
* @evidence contracts/performance.md#efficient-algorithms
|
|
36
|
-
* Three tracker slots are
|
|
37
|
-
*
|
|
38
|
-
* per exact directory spelling; native path traversal, key bytes and bigint
|
|
39
|
-
* identity formatting plus delegated drain work remain variable costs.
|
|
35
|
+
* Three tracker slots are drained concurrently; delegated drain work remains
|
|
36
|
+
* a variable cost.
|
|
40
37
|
* @evidence contracts/performance.md#reuse-equivalent-work
|
|
41
|
-
* In-flight drainage is shared by
|
|
42
|
-
* delivery's map; the map is recreated for every delivery, not cached forever.
|
|
38
|
+
* In-flight drainage is shared by concurrent sibling deliveries.
|
|
43
39
|
* @evidence contracts/performance.md#bound-retention-and-release-resources
|
|
44
|
-
* The identity map is local to the post-drain verification call, retaining
|
|
45
|
-
* queried directory/identity text with no independent population/byte cap.
|
|
46
40
|
* Pending drains retain the cached tracker references until they settle;
|
|
47
41
|
* rejection does not cancel siblings and no aggregate deadline is supplied.
|
|
48
42
|
* Tracker owners still control backend task and watcher closure.
|
|
@@ -1,48 +1,42 @@
|
|
|
1
1
|
import type { TtscCachedProjectTransform } from "../cache/TtscCachedProjectTransform";
|
|
2
2
|
/**
|
|
3
|
-
* Await the cached trackers' drain operations
|
|
4
|
-
*
|
|
3
|
+
* Await the cached trackers' drain operations before persistent validation
|
|
4
|
+
* reads their verdicts.
|
|
5
5
|
*
|
|
6
6
|
* A synchronous edit returns before its watch event is applied, so without this
|
|
7
7
|
* a delivery could validate against a tracker that has not been told yet. Each
|
|
8
8
|
* tracker uses its supplied native drain or the local two-immediate fallback;
|
|
9
9
|
* that fallback is a scheduling opportunity, not independent native delivery
|
|
10
|
-
* proof. Concurrent sibling deliveries share an in-flight tracker drain.
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
10
|
+
* proof. Concurrent sibling deliveries share an in-flight tracker drain. Drain
|
|
11
|
+
* rejection aborts the delivery's settlement and does not cancel sibling
|
|
12
|
+
* drains.
|
|
13
|
+
*
|
|
14
|
+
* The watched directories' identities are not checked here but by the
|
|
15
|
+
* delivery's synchronous admission (`verifyGenerationLocations`), after its
|
|
16
|
+
* last await, so a directory replaced while the delivery prepared is still
|
|
17
|
+
* caught and its reading is current when a validator reuses it.
|
|
18
18
|
*
|
|
19
19
|
* @evidence contracts/common.md#principled-implementation
|
|
20
|
-
* Successful aggregate completion precedes
|
|
21
|
-
*
|
|
22
|
-
*
|
|
20
|
+
* Successful aggregate completion precedes admission. Missing backend
|
|
21
|
+
* delivery premises are not supplied by this adapter; the caller still
|
|
22
|
+
* decides whether silence has authority.
|
|
23
23
|
* @evidence contracts/common.md#clear-and-simple-design
|
|
24
|
-
* One three-tracker list drives
|
|
25
|
-
*
|
|
24
|
+
* One three-tracker list drives drainage; directory identity belongs to the
|
|
25
|
+
* synchronous admission that reads it.
|
|
26
26
|
* @evidence contracts/common.md#prohibited-implementation-shortcuts
|
|
27
|
-
*
|
|
28
|
-
*
|
|
27
|
+
* The operation does not patch watcher paths or certify a generation from a
|
|
28
|
+
* timeout alone.
|
|
29
29
|
* @evidence contracts/common.md#meaningful-documentation
|
|
30
|
-
* Native paragraphs explain event ordering
|
|
31
|
-
*
|
|
30
|
+
* Native paragraphs explain event ordering and where location verification
|
|
31
|
+
* moved, under the documentation skill.
|
|
32
32
|
* @evidence contracts/portability.md#os-neutral-implementation
|
|
33
|
-
* OS-neutral delivery uses backend-owned drains
|
|
34
|
-
* identities; lexical aliases cannot prove a replaced directory unchanged.
|
|
33
|
+
* OS-neutral delivery uses backend-owned drains.
|
|
35
34
|
* @evidence contracts/performance.md#efficient-algorithms
|
|
36
|
-
* Three tracker slots are
|
|
37
|
-
*
|
|
38
|
-
* per exact directory spelling; native path traversal, key bytes and bigint
|
|
39
|
-
* identity formatting plus delegated drain work remain variable costs.
|
|
35
|
+
* Three tracker slots are drained concurrently; delegated drain work remains
|
|
36
|
+
* a variable cost.
|
|
40
37
|
* @evidence contracts/performance.md#reuse-equivalent-work
|
|
41
|
-
* In-flight drainage is shared by
|
|
42
|
-
* delivery's map; the map is recreated for every delivery, not cached forever.
|
|
38
|
+
* In-flight drainage is shared by concurrent sibling deliveries.
|
|
43
39
|
* @evidence contracts/performance.md#bound-retention-and-release-resources
|
|
44
|
-
* The identity map is local to the post-drain verification call, retaining
|
|
45
|
-
* queried directory/identity text with no independent population/byte cap.
|
|
46
40
|
* Pending drains retain the cached tracker references until they settle;
|
|
47
41
|
* rejection does not cancel siblings and no aggregate deadline is supplied.
|
|
48
42
|
* Tracker owners still control backend task and watcher closure.
|
|
@@ -3,65 +3,53 @@
|
|
|
3
3
|
var settleMutationTrackers = require('./settleMutationTrackers.js');
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
-
* Await the cached trackers' drain operations
|
|
7
|
-
*
|
|
6
|
+
* Await the cached trackers' drain operations before persistent validation
|
|
7
|
+
* reads their verdicts.
|
|
8
8
|
*
|
|
9
9
|
* A synchronous edit returns before its watch event is applied, so without this
|
|
10
10
|
* a delivery could validate against a tracker that has not been told yet. Each
|
|
11
11
|
* tracker uses its supplied native drain or the local two-immediate fallback;
|
|
12
12
|
* that fallback is a scheduling opportunity, not independent native delivery
|
|
13
|
-
* proof. Concurrent sibling deliveries share an in-flight tracker drain.
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
13
|
+
* proof. Concurrent sibling deliveries share an in-flight tracker drain. Drain
|
|
14
|
+
* rejection aborts the delivery's settlement and does not cancel sibling
|
|
15
|
+
* drains.
|
|
16
|
+
*
|
|
17
|
+
* The watched directories' identities are not checked here but by the
|
|
18
|
+
* delivery's synchronous admission (`verifyGenerationLocations`), after its
|
|
19
|
+
* last await, so a directory replaced while the delivery prepared is still
|
|
20
|
+
* caught and its reading is current when a validator reuses it.
|
|
21
21
|
*
|
|
22
22
|
* @evidence contracts/common.md#principled-implementation
|
|
23
|
-
* Successful aggregate completion precedes
|
|
24
|
-
*
|
|
25
|
-
*
|
|
23
|
+
* Successful aggregate completion precedes admission. Missing backend
|
|
24
|
+
* delivery premises are not supplied by this adapter; the caller still
|
|
25
|
+
* decides whether silence has authority.
|
|
26
26
|
* @evidence contracts/common.md#clear-and-simple-design
|
|
27
|
-
* One three-tracker list drives
|
|
28
|
-
*
|
|
27
|
+
* One three-tracker list drives drainage; directory identity belongs to the
|
|
28
|
+
* synchronous admission that reads it.
|
|
29
29
|
* @evidence contracts/common.md#prohibited-implementation-shortcuts
|
|
30
|
-
*
|
|
31
|
-
*
|
|
30
|
+
* The operation does not patch watcher paths or certify a generation from a
|
|
31
|
+
* timeout alone.
|
|
32
32
|
* @evidence contracts/common.md#meaningful-documentation
|
|
33
|
-
* Native paragraphs explain event ordering
|
|
34
|
-
*
|
|
33
|
+
* Native paragraphs explain event ordering and where location verification
|
|
34
|
+
* moved, under the documentation skill.
|
|
35
35
|
* @evidence contracts/portability.md#os-neutral-implementation
|
|
36
|
-
* OS-neutral delivery uses backend-owned drains
|
|
37
|
-
* identities; lexical aliases cannot prove a replaced directory unchanged.
|
|
36
|
+
* OS-neutral delivery uses backend-owned drains.
|
|
38
37
|
* @evidence contracts/performance.md#efficient-algorithms
|
|
39
|
-
* Three tracker slots are
|
|
40
|
-
*
|
|
41
|
-
* per exact directory spelling; native path traversal, key bytes and bigint
|
|
42
|
-
* identity formatting plus delegated drain work remain variable costs.
|
|
38
|
+
* Three tracker slots are drained concurrently; delegated drain work remains
|
|
39
|
+
* a variable cost.
|
|
43
40
|
* @evidence contracts/performance.md#reuse-equivalent-work
|
|
44
|
-
* In-flight drainage is shared by
|
|
45
|
-
* delivery's map; the map is recreated for every delivery, not cached forever.
|
|
41
|
+
* In-flight drainage is shared by concurrent sibling deliveries.
|
|
46
42
|
* @evidence contracts/performance.md#bound-retention-and-release-resources
|
|
47
|
-
* The identity map is local to the post-drain verification call, retaining
|
|
48
|
-
* queried directory/identity text with no independent population/byte cap.
|
|
49
43
|
* Pending drains retain the cached tracker references until they settle;
|
|
50
44
|
* rejection does not cancel siblings and no aggregate deadline is supplied.
|
|
51
45
|
* Tracker owners still control backend task and watcher closure.
|
|
52
46
|
*/
|
|
53
47
|
async function settleProjectMutationEvents(cached) {
|
|
54
|
-
|
|
48
|
+
await settleMutationTrackers.settleMutationTrackers([
|
|
55
49
|
cached.projectMutationTracker,
|
|
56
50
|
cached.hostInputMutationTracker,
|
|
57
51
|
cached.candidateMutationTracker,
|
|
58
|
-
];
|
|
59
|
-
await settleMutationTrackers.settleMutationTrackers(trackers);
|
|
60
|
-
// A watch that now observes a replaced directory has nothing left to say
|
|
61
|
-
// about the new one, so it gives up its authority before anything reads it.
|
|
62
|
-
const seen = new Map();
|
|
63
|
-
for (const tracker of trackers)
|
|
64
|
-
tracker?.verifyLocations?.(seen);
|
|
52
|
+
]);
|
|
65
53
|
}
|
|
66
54
|
|
|
67
55
|
exports.settleProjectMutationEvents = settleProjectMutationEvents;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settleProjectMutationEvents.js","sources":["../../../../src/core/transform/tracker/settleProjectMutationEvents.ts"],"sourcesContent":[null],"names":["settleMutationTrackers"],"mappings":";;;;AAGA
|
|
1
|
+
{"version":3,"file":"settleProjectMutationEvents.js","sources":["../../../../src/core/transform/tracker/settleProjectMutationEvents.ts"],"sourcesContent":[null],"names":["settleMutationTrackers"],"mappings":";;;;AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCG;AACI,eAAe,2BAA2B,CAC/C,MAAkC,EAAA;AAElC,IAAA,MAAMA,6CAAsB,CAAC;AAC3B,QAAA,MAAM,CAAC,sBAAsB;AAC7B,QAAA,MAAM,CAAC,wBAAwB;AAC/B,QAAA,MAAM,CAAC,wBAAwB;AAChC,KAAA,CAAC;AACJ;;;;"}
|
|
@@ -1,65 +1,53 @@
|
|
|
1
1
|
import { settleMutationTrackers } from './settleMutationTrackers.mjs';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* Await the cached trackers' drain operations
|
|
5
|
-
*
|
|
4
|
+
* Await the cached trackers' drain operations before persistent validation
|
|
5
|
+
* reads their verdicts.
|
|
6
6
|
*
|
|
7
7
|
* A synchronous edit returns before its watch event is applied, so without this
|
|
8
8
|
* a delivery could validate against a tracker that has not been told yet. Each
|
|
9
9
|
* tracker uses its supplied native drain or the local two-immediate fallback;
|
|
10
10
|
* that fallback is a scheduling opportunity, not independent native delivery
|
|
11
|
-
* proof. Concurrent sibling deliveries share an in-flight tracker drain.
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
11
|
+
* proof. Concurrent sibling deliveries share an in-flight tracker drain. Drain
|
|
12
|
+
* rejection aborts the delivery's settlement and does not cancel sibling
|
|
13
|
+
* drains.
|
|
14
|
+
*
|
|
15
|
+
* The watched directories' identities are not checked here but by the
|
|
16
|
+
* delivery's synchronous admission (`verifyGenerationLocations`), after its
|
|
17
|
+
* last await, so a directory replaced while the delivery prepared is still
|
|
18
|
+
* caught and its reading is current when a validator reuses it.
|
|
19
19
|
*
|
|
20
20
|
* @evidence contracts/common.md#principled-implementation
|
|
21
|
-
* Successful aggregate completion precedes
|
|
22
|
-
*
|
|
23
|
-
*
|
|
21
|
+
* Successful aggregate completion precedes admission. Missing backend
|
|
22
|
+
* delivery premises are not supplied by this adapter; the caller still
|
|
23
|
+
* decides whether silence has authority.
|
|
24
24
|
* @evidence contracts/common.md#clear-and-simple-design
|
|
25
|
-
* One three-tracker list drives
|
|
26
|
-
*
|
|
25
|
+
* One three-tracker list drives drainage; directory identity belongs to the
|
|
26
|
+
* synchronous admission that reads it.
|
|
27
27
|
* @evidence contracts/common.md#prohibited-implementation-shortcuts
|
|
28
|
-
*
|
|
29
|
-
*
|
|
28
|
+
* The operation does not patch watcher paths or certify a generation from a
|
|
29
|
+
* timeout alone.
|
|
30
30
|
* @evidence contracts/common.md#meaningful-documentation
|
|
31
|
-
* Native paragraphs explain event ordering
|
|
32
|
-
*
|
|
31
|
+
* Native paragraphs explain event ordering and where location verification
|
|
32
|
+
* moved, under the documentation skill.
|
|
33
33
|
* @evidence contracts/portability.md#os-neutral-implementation
|
|
34
|
-
* OS-neutral delivery uses backend-owned drains
|
|
35
|
-
* identities; lexical aliases cannot prove a replaced directory unchanged.
|
|
34
|
+
* OS-neutral delivery uses backend-owned drains.
|
|
36
35
|
* @evidence contracts/performance.md#efficient-algorithms
|
|
37
|
-
* Three tracker slots are
|
|
38
|
-
*
|
|
39
|
-
* per exact directory spelling; native path traversal, key bytes and bigint
|
|
40
|
-
* identity formatting plus delegated drain work remain variable costs.
|
|
36
|
+
* Three tracker slots are drained concurrently; delegated drain work remains
|
|
37
|
+
* a variable cost.
|
|
41
38
|
* @evidence contracts/performance.md#reuse-equivalent-work
|
|
42
|
-
* In-flight drainage is shared by
|
|
43
|
-
* delivery's map; the map is recreated for every delivery, not cached forever.
|
|
39
|
+
* In-flight drainage is shared by concurrent sibling deliveries.
|
|
44
40
|
* @evidence contracts/performance.md#bound-retention-and-release-resources
|
|
45
|
-
* The identity map is local to the post-drain verification call, retaining
|
|
46
|
-
* queried directory/identity text with no independent population/byte cap.
|
|
47
41
|
* Pending drains retain the cached tracker references until they settle;
|
|
48
42
|
* rejection does not cancel siblings and no aggregate deadline is supplied.
|
|
49
43
|
* Tracker owners still control backend task and watcher closure.
|
|
50
44
|
*/
|
|
51
45
|
async function settleProjectMutationEvents(cached) {
|
|
52
|
-
|
|
46
|
+
await settleMutationTrackers([
|
|
53
47
|
cached.projectMutationTracker,
|
|
54
48
|
cached.hostInputMutationTracker,
|
|
55
49
|
cached.candidateMutationTracker,
|
|
56
|
-
];
|
|
57
|
-
await settleMutationTrackers(trackers);
|
|
58
|
-
// A watch that now observes a replaced directory has nothing left to say
|
|
59
|
-
// about the new one, so it gives up its authority before anything reads it.
|
|
60
|
-
const seen = new Map();
|
|
61
|
-
for (const tracker of trackers)
|
|
62
|
-
tracker?.verifyLocations?.(seen);
|
|
50
|
+
]);
|
|
63
51
|
}
|
|
64
52
|
|
|
65
53
|
export { settleProjectMutationEvents };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settleProjectMutationEvents.mjs","sources":["../../../../src/core/transform/tracker/settleProjectMutationEvents.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAGA
|
|
1
|
+
{"version":3,"file":"settleProjectMutationEvents.mjs","sources":["../../../../src/core/transform/tracker/settleProjectMutationEvents.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCG;AACI,eAAe,2BAA2B,CAC/C,MAAkC,EAAA;AAElC,IAAA,MAAM,sBAAsB,CAAC;AAC3B,QAAA,MAAM,CAAC,sBAAsB;AAC7B,QAAA,MAAM,CAAC,wBAAwB;AAC/B,QAAA,MAAM,CAAC,wBAAwB;AAChC,KAAA,CAAC;AACJ;;;;"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { TtscCachedProjectTransform } from "../cache/TtscCachedProjectTransform.cjs";
|
|
2
|
+
/**
|
|
3
|
+
* Recheck every watched directory's identity against the one its tracker opened
|
|
4
|
+
* on, returning what the check read.
|
|
5
|
+
*
|
|
6
|
+
* A watch that now observes a replaced directory has nothing left to say about
|
|
7
|
+
* the new one, so its tracker gives up its authority before anything reads it.
|
|
8
|
+
* The trackers share what they read, so a directory they all watch, the project
|
|
9
|
+
* root above all, costs one metadata call per delivery rather than one per
|
|
10
|
+
* tracker. The returned readings belong to the synchronous admission that ran
|
|
11
|
+
* the check: a validator in it that must know whether one of these directories
|
|
12
|
+
* is still a directory reads the answer here instead of stating it again
|
|
13
|
+
* (samchon/ttsc#1735). The map assumes the callbacks share a coherent
|
|
14
|
+
* filesystem view; it is not an atomic snapshot.
|
|
15
|
+
*
|
|
16
|
+
* @evidence contracts/common.md#principled-implementation
|
|
17
|
+
* Each verifier compares followed device and file ids with the opened ones,
|
|
18
|
+
* and a mismatch or unreadable location withdraws its tracker.
|
|
19
|
+
* @evidence contracts/common.md#clear-and-simple-design
|
|
20
|
+
* One three-tracker list drives every verifier through one delivery-local
|
|
21
|
+
* identity map, which is also the result.
|
|
22
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts
|
|
23
|
+
* A replaced watched directory withdraws authority; lexical spelling never
|
|
24
|
+
* proves a directory unchanged.
|
|
25
|
+
* @evidence contracts/common.md#meaningful-documentation
|
|
26
|
+
* Native prose explains withdrawal, sharing and the result's synchronous
|
|
27
|
+
* lifetime under the documentation skill.
|
|
28
|
+
* @evidence contracts/portability.md#os-neutral-implementation
|
|
29
|
+
* Identities are the filesystem's own physical identities, followed through
|
|
30
|
+
* links, with no platform case rule.
|
|
31
|
+
* @evidence contracts/performance.md#efficient-algorithms
|
|
32
|
+
* Three tracker slots are visited; existing verifiers scan their retained
|
|
33
|
+
* watched locations, sharing one metadata read per exact directory spelling.
|
|
34
|
+
* @evidence contracts/performance.md#reuse-equivalent-work
|
|
35
|
+
* The map is created for each admission and handed to that admission's
|
|
36
|
+
* validators, never retained across deliveries.
|
|
37
|
+
* @evidence contracts/performance.md#bound-retention-and-release-resources
|
|
38
|
+
* The caller's synchronous transaction owns the map, which retains queried
|
|
39
|
+
* directory and identity text only until that transaction ends.
|
|
40
|
+
*/
|
|
41
|
+
export declare function verifyGenerationLocations(cached: TtscCachedProjectTransform): Map<string, string | undefined>;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { TtscCachedProjectTransform } from "../cache/TtscCachedProjectTransform.mjs";
|
|
2
|
+
/**
|
|
3
|
+
* Recheck every watched directory's identity against the one its tracker opened
|
|
4
|
+
* on, returning what the check read.
|
|
5
|
+
*
|
|
6
|
+
* A watch that now observes a replaced directory has nothing left to say about
|
|
7
|
+
* the new one, so its tracker gives up its authority before anything reads it.
|
|
8
|
+
* The trackers share what they read, so a directory they all watch, the project
|
|
9
|
+
* root above all, costs one metadata call per delivery rather than one per
|
|
10
|
+
* tracker. The returned readings belong to the synchronous admission that ran
|
|
11
|
+
* the check: a validator in it that must know whether one of these directories
|
|
12
|
+
* is still a directory reads the answer here instead of stating it again
|
|
13
|
+
* (samchon/ttsc#1735). The map assumes the callbacks share a coherent
|
|
14
|
+
* filesystem view; it is not an atomic snapshot.
|
|
15
|
+
*
|
|
16
|
+
* @evidence contracts/common.md#principled-implementation
|
|
17
|
+
* Each verifier compares followed device and file ids with the opened ones,
|
|
18
|
+
* and a mismatch or unreadable location withdraws its tracker.
|
|
19
|
+
* @evidence contracts/common.md#clear-and-simple-design
|
|
20
|
+
* One three-tracker list drives every verifier through one delivery-local
|
|
21
|
+
* identity map, which is also the result.
|
|
22
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts
|
|
23
|
+
* A replaced watched directory withdraws authority; lexical spelling never
|
|
24
|
+
* proves a directory unchanged.
|
|
25
|
+
* @evidence contracts/common.md#meaningful-documentation
|
|
26
|
+
* Native prose explains withdrawal, sharing and the result's synchronous
|
|
27
|
+
* lifetime under the documentation skill.
|
|
28
|
+
* @evidence contracts/portability.md#os-neutral-implementation
|
|
29
|
+
* Identities are the filesystem's own physical identities, followed through
|
|
30
|
+
* links, with no platform case rule.
|
|
31
|
+
* @evidence contracts/performance.md#efficient-algorithms
|
|
32
|
+
* Three tracker slots are visited; existing verifiers scan their retained
|
|
33
|
+
* watched locations, sharing one metadata read per exact directory spelling.
|
|
34
|
+
* @evidence contracts/performance.md#reuse-equivalent-work
|
|
35
|
+
* The map is created for each admission and handed to that admission's
|
|
36
|
+
* validators, never retained across deliveries.
|
|
37
|
+
* @evidence contracts/performance.md#bound-retention-and-release-resources
|
|
38
|
+
* The caller's synchronous transaction owns the map, which retains queried
|
|
39
|
+
* directory and identity text only until that transaction ends.
|
|
40
|
+
*/
|
|
41
|
+
export declare function verifyGenerationLocations(cached: TtscCachedProjectTransform): Map<string, string | undefined>;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { TtscCachedProjectTransform } from "../cache/TtscCachedProjectTransform";
|
|
2
|
+
/**
|
|
3
|
+
* Recheck every watched directory's identity against the one its tracker opened
|
|
4
|
+
* on, returning what the check read.
|
|
5
|
+
*
|
|
6
|
+
* A watch that now observes a replaced directory has nothing left to say about
|
|
7
|
+
* the new one, so its tracker gives up its authority before anything reads it.
|
|
8
|
+
* The trackers share what they read, so a directory they all watch, the project
|
|
9
|
+
* root above all, costs one metadata call per delivery rather than one per
|
|
10
|
+
* tracker. The returned readings belong to the synchronous admission that ran
|
|
11
|
+
* the check: a validator in it that must know whether one of these directories
|
|
12
|
+
* is still a directory reads the answer here instead of stating it again
|
|
13
|
+
* (samchon/ttsc#1735). The map assumes the callbacks share a coherent
|
|
14
|
+
* filesystem view; it is not an atomic snapshot.
|
|
15
|
+
*
|
|
16
|
+
* @evidence contracts/common.md#principled-implementation
|
|
17
|
+
* Each verifier compares followed device and file ids with the opened ones,
|
|
18
|
+
* and a mismatch or unreadable location withdraws its tracker.
|
|
19
|
+
* @evidence contracts/common.md#clear-and-simple-design
|
|
20
|
+
* One three-tracker list drives every verifier through one delivery-local
|
|
21
|
+
* identity map, which is also the result.
|
|
22
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts
|
|
23
|
+
* A replaced watched directory withdraws authority; lexical spelling never
|
|
24
|
+
* proves a directory unchanged.
|
|
25
|
+
* @evidence contracts/common.md#meaningful-documentation
|
|
26
|
+
* Native prose explains withdrawal, sharing and the result's synchronous
|
|
27
|
+
* lifetime under the documentation skill.
|
|
28
|
+
* @evidence contracts/portability.md#os-neutral-implementation
|
|
29
|
+
* Identities are the filesystem's own physical identities, followed through
|
|
30
|
+
* links, with no platform case rule.
|
|
31
|
+
* @evidence contracts/performance.md#efficient-algorithms
|
|
32
|
+
* Three tracker slots are visited; existing verifiers scan their retained
|
|
33
|
+
* watched locations, sharing one metadata read per exact directory spelling.
|
|
34
|
+
* @evidence contracts/performance.md#reuse-equivalent-work
|
|
35
|
+
* The map is created for each admission and handed to that admission's
|
|
36
|
+
* validators, never retained across deliveries.
|
|
37
|
+
* @evidence contracts/performance.md#bound-retention-and-release-resources
|
|
38
|
+
* The caller's synchronous transaction owns the map, which retains queried
|
|
39
|
+
* directory and identity text only until that transaction ends.
|
|
40
|
+
*/
|
|
41
|
+
export declare function verifyGenerationLocations(cached: TtscCachedProjectTransform): Map<string, string | undefined>;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Recheck every watched directory's identity against the one its tracker opened
|
|
5
|
+
* on, returning what the check read.
|
|
6
|
+
*
|
|
7
|
+
* A watch that now observes a replaced directory has nothing left to say about
|
|
8
|
+
* the new one, so its tracker gives up its authority before anything reads it.
|
|
9
|
+
* The trackers share what they read, so a directory they all watch, the project
|
|
10
|
+
* root above all, costs one metadata call per delivery rather than one per
|
|
11
|
+
* tracker. The returned readings belong to the synchronous admission that ran
|
|
12
|
+
* the check: a validator in it that must know whether one of these directories
|
|
13
|
+
* is still a directory reads the answer here instead of stating it again
|
|
14
|
+
* (samchon/ttsc#1735). The map assumes the callbacks share a coherent
|
|
15
|
+
* filesystem view; it is not an atomic snapshot.
|
|
16
|
+
*
|
|
17
|
+
* @evidence contracts/common.md#principled-implementation
|
|
18
|
+
* Each verifier compares followed device and file ids with the opened ones,
|
|
19
|
+
* and a mismatch or unreadable location withdraws its tracker.
|
|
20
|
+
* @evidence contracts/common.md#clear-and-simple-design
|
|
21
|
+
* One three-tracker list drives every verifier through one delivery-local
|
|
22
|
+
* identity map, which is also the result.
|
|
23
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts
|
|
24
|
+
* A replaced watched directory withdraws authority; lexical spelling never
|
|
25
|
+
* proves a directory unchanged.
|
|
26
|
+
* @evidence contracts/common.md#meaningful-documentation
|
|
27
|
+
* Native prose explains withdrawal, sharing and the result's synchronous
|
|
28
|
+
* lifetime under the documentation skill.
|
|
29
|
+
* @evidence contracts/portability.md#os-neutral-implementation
|
|
30
|
+
* Identities are the filesystem's own physical identities, followed through
|
|
31
|
+
* links, with no platform case rule.
|
|
32
|
+
* @evidence contracts/performance.md#efficient-algorithms
|
|
33
|
+
* Three tracker slots are visited; existing verifiers scan their retained
|
|
34
|
+
* watched locations, sharing one metadata read per exact directory spelling.
|
|
35
|
+
* @evidence contracts/performance.md#reuse-equivalent-work
|
|
36
|
+
* The map is created for each admission and handed to that admission's
|
|
37
|
+
* validators, never retained across deliveries.
|
|
38
|
+
* @evidence contracts/performance.md#bound-retention-and-release-resources
|
|
39
|
+
* The caller's synchronous transaction owns the map, which retains queried
|
|
40
|
+
* directory and identity text only until that transaction ends.
|
|
41
|
+
*/
|
|
42
|
+
function verifyGenerationLocations(cached) {
|
|
43
|
+
const seen = new Map();
|
|
44
|
+
for (const tracker of [
|
|
45
|
+
cached.projectMutationTracker,
|
|
46
|
+
cached.hostInputMutationTracker,
|
|
47
|
+
cached.candidateMutationTracker,
|
|
48
|
+
])
|
|
49
|
+
tracker?.verifyLocations?.(seen);
|
|
50
|
+
return seen;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
exports.verifyGenerationLocations = verifyGenerationLocations;
|
|
54
|
+
//# sourceMappingURL=verifyGenerationLocations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verifyGenerationLocations.js","sources":["../../../../src/core/transform/tracker/verifyGenerationLocations.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCG;AACG,SAAU,yBAAyB,CACvC,MAAkC,EAAA;AAElC,IAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAA8B;IAClD,KAAK,MAAM,OAAO,IAAI;AACpB,QAAA,MAAM,CAAC,sBAAsB;AAC7B,QAAA,MAAM,CAAC,wBAAwB;AAC/B,QAAA,MAAM,CAAC,wBAAwB;AAChC,KAAA;AACC,QAAA,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;AAClC,IAAA,OAAO,IAAI;AACb;;;;"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recheck every watched directory's identity against the one its tracker opened
|
|
3
|
+
* on, returning what the check read.
|
|
4
|
+
*
|
|
5
|
+
* A watch that now observes a replaced directory has nothing left to say about
|
|
6
|
+
* the new one, so its tracker gives up its authority before anything reads it.
|
|
7
|
+
* The trackers share what they read, so a directory they all watch, the project
|
|
8
|
+
* root above all, costs one metadata call per delivery rather than one per
|
|
9
|
+
* tracker. The returned readings belong to the synchronous admission that ran
|
|
10
|
+
* the check: a validator in it that must know whether one of these directories
|
|
11
|
+
* is still a directory reads the answer here instead of stating it again
|
|
12
|
+
* (samchon/ttsc#1735). The map assumes the callbacks share a coherent
|
|
13
|
+
* filesystem view; it is not an atomic snapshot.
|
|
14
|
+
*
|
|
15
|
+
* @evidence contracts/common.md#principled-implementation
|
|
16
|
+
* Each verifier compares followed device and file ids with the opened ones,
|
|
17
|
+
* and a mismatch or unreadable location withdraws its tracker.
|
|
18
|
+
* @evidence contracts/common.md#clear-and-simple-design
|
|
19
|
+
* One three-tracker list drives every verifier through one delivery-local
|
|
20
|
+
* identity map, which is also the result.
|
|
21
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts
|
|
22
|
+
* A replaced watched directory withdraws authority; lexical spelling never
|
|
23
|
+
* proves a directory unchanged.
|
|
24
|
+
* @evidence contracts/common.md#meaningful-documentation
|
|
25
|
+
* Native prose explains withdrawal, sharing and the result's synchronous
|
|
26
|
+
* lifetime under the documentation skill.
|
|
27
|
+
* @evidence contracts/portability.md#os-neutral-implementation
|
|
28
|
+
* Identities are the filesystem's own physical identities, followed through
|
|
29
|
+
* links, with no platform case rule.
|
|
30
|
+
* @evidence contracts/performance.md#efficient-algorithms
|
|
31
|
+
* Three tracker slots are visited; existing verifiers scan their retained
|
|
32
|
+
* watched locations, sharing one metadata read per exact directory spelling.
|
|
33
|
+
* @evidence contracts/performance.md#reuse-equivalent-work
|
|
34
|
+
* The map is created for each admission and handed to that admission's
|
|
35
|
+
* validators, never retained across deliveries.
|
|
36
|
+
* @evidence contracts/performance.md#bound-retention-and-release-resources
|
|
37
|
+
* The caller's synchronous transaction owns the map, which retains queried
|
|
38
|
+
* directory and identity text only until that transaction ends.
|
|
39
|
+
*/
|
|
40
|
+
function verifyGenerationLocations(cached) {
|
|
41
|
+
const seen = new Map();
|
|
42
|
+
for (const tracker of [
|
|
43
|
+
cached.projectMutationTracker,
|
|
44
|
+
cached.hostInputMutationTracker,
|
|
45
|
+
cached.candidateMutationTracker,
|
|
46
|
+
])
|
|
47
|
+
tracker?.verifyLocations?.(seen);
|
|
48
|
+
return seen;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export { verifyGenerationLocations };
|
|
52
|
+
//# sourceMappingURL=verifyGenerationLocations.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verifyGenerationLocations.mjs","sources":["../../../../src/core/transform/tracker/verifyGenerationLocations.ts"],"sourcesContent":[null],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCG;AACG,SAAU,yBAAyB,CACvC,MAAkC,EAAA;AAElC,IAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAA8B;IAClD,KAAK,MAAM,OAAO,IAAI;AACpB,QAAA,MAAM,CAAC,sBAAsB;AAC7B,QAAA,MAAM,CAAC,wBAAwB;AAC/B,QAAA,MAAM,CAAC,wBAAwB;AAChC,KAAA;AACC,QAAA,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;AAClC,IAAA,OAAO,IAAI;AACb;;;;"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether process `pid` has exited and only waits for its parent to collect its
|
|
3
|
+
* status.
|
|
4
|
+
*
|
|
5
|
+
* Signal zero still reaches such a zombie, so a liveness probe built on it
|
|
6
|
+
* alone counts the process alive. A parent that never collects, such as a
|
|
7
|
+
* container's PID 1 that is not an init or a subreaper that collects only when
|
|
8
|
+
* its own command ends, keeps the zombie indefinitely, and the locks and
|
|
9
|
+
* directories it owned would never be reclaimed. Only Linux exposes the state,
|
|
10
|
+
* through `/proc`; elsewhere, and whenever it cannot be read, this answers
|
|
11
|
+
* `false` so the caller's existing probe decides. A leader whose own thread
|
|
12
|
+
* exited also reads as a zombie while its other threads run, so the zombie must
|
|
13
|
+
* be the process's last thread. A zombie keeps its id until collected, so this
|
|
14
|
+
* never names a live process.
|
|
15
|
+
*
|
|
16
|
+
* @param pid A positive process id that signal zero just found.
|
|
17
|
+
* @evidence contracts/common.md#principled-implementation The kernel's own process status, zombie or dead with no other thread, establishes the exit; any unreadable or other status leaves the caller's signal-zero answer standing.
|
|
18
|
+
* @evidence contracts/common.md#clear-and-simple-design One predicate serves the shared-compile lock, session-owner and watch-probe owners alike.
|
|
19
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts No PID list, timeout or error-to-exited fallback substitutes for the kernel status.
|
|
20
|
+
* @evidence contracts/common.md#meaningful-documentation The paragraph explains why signal zero misses a zombie, which parents leave one behind, why a zombie leader with running threads is not one and why its id cannot name a live process.
|
|
21
|
+
* @evidence contracts/portability.md#os-neutral-implementation Only Linux exposes zombies through /proc; other platforms keep their probe's answer.
|
|
22
|
+
* @evidence contracts/performance.md#efficient-algorithms One small /proc read on Linux, nothing elsewhere.
|
|
23
|
+
* @evidenceExclude contracts/performance.md#reuse-equivalent-work Process state is a current observation and is never cached.
|
|
24
|
+
* @evidenceExclude contracts/performance.md#bound-retention-and-release-resources The read retains no handle; the status text becomes reclaimable on return.
|
|
25
|
+
*/
|
|
26
|
+
export declare function isZombieProcess(pid: number): boolean;
|