@ttsc/unplugin 0.31.0 → 0.31.2
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/bridge/projectRecordMoved.js +1 -1
- package/lib/core/bridge/projectRecordMoved.js.map +1 -1
- package/lib/core/bridge/projectRecordMoved.mjs +1 -1
- package/lib/core/bridge/projectRecordMoved.mjs.map +1 -1
- package/lib/core/bun/bun.d.cts +3 -2
- package/lib/core/bun/bun.d.mts +3 -2
- package/lib/core/bun/bun.d.ts +3 -2
- package/lib/core/bun/bun.js +8 -4
- package/lib/core/bun/bun.js.map +1 -1
- package/lib/core/bun/bun.mjs +8 -4
- package/lib/core/bun/bun.mjs.map +1 -1
- package/lib/core/observer/createInputObserver.js +7 -6
- package/lib/core/observer/createInputObserver.js.map +1 -1
- package/lib/core/observer/createInputObserver.mjs +7 -6
- package/lib/core/observer/createInputObserver.mjs.map +1 -1
- package/lib/core/observer/openIsolatedRecursiveWatch.d.cts +11 -12
- package/lib/core/observer/openIsolatedRecursiveWatch.d.mts +11 -12
- package/lib/core/observer/openIsolatedRecursiveWatch.d.ts +11 -12
- package/lib/core/observer/openIsolatedRecursiveWatch.js +11 -12
- package/lib/core/observer/openIsolatedRecursiveWatch.js.map +1 -1
- package/lib/core/observer/openIsolatedRecursiveWatch.mjs +11 -12
- package/lib/core/observer/openIsolatedRecursiveWatch.mjs.map +1 -1
- package/lib/core/transform/cache/TtscCachedProjectTransform.d.cts +12 -3
- package/lib/core/transform/cache/TtscCachedProjectTransform.d.mts +12 -3
- package/lib/core/transform/cache/TtscCachedProjectTransform.d.ts +12 -3
- package/lib/core/transform/cache/selectCachedGenerationAction.d.cts +2 -0
- package/lib/core/transform/cache/selectCachedGenerationAction.d.mts +2 -0
- package/lib/core/transform/cache/selectCachedGenerationAction.d.ts +2 -0
- package/lib/core/transform/cache/selectCachedGenerationAction.js +1 -1
- package/lib/core/transform/cache/selectCachedGenerationAction.js.map +1 -1
- package/lib/core/transform/cache/selectCachedGenerationAction.mjs +1 -1
- package/lib/core/transform/cache/selectCachedGenerationAction.mjs.map +1 -1
- package/lib/core/transform/deliverCachedTransform.d.cts +36 -0
- package/lib/core/transform/deliverCachedTransform.d.mts +36 -0
- package/lib/core/transform/deliverCachedTransform.d.ts +36 -0
- package/lib/core/transform/deliverCachedTransform.js +73 -0
- package/lib/core/transform/deliverCachedTransform.js.map +1 -0
- package/lib/core/transform/deliverCachedTransform.mjs +71 -0
- package/lib/core/transform/deliverCachedTransform.mjs.map +1 -0
- package/lib/core/transform/envelope/selectDeclaredProjectInputKeys.d.cts +2 -2
- package/lib/core/transform/envelope/selectDeclaredProjectInputKeys.d.mts +2 -2
- package/lib/core/transform/envelope/selectDeclaredProjectInputKeys.d.ts +2 -2
- package/lib/core/transform/envelope/selectDeclaredProjectInputKeys.js +6 -2
- package/lib/core/transform/envelope/selectDeclaredProjectInputKeys.js.map +1 -1
- package/lib/core/transform/envelope/selectDeclaredProjectInputKeys.mjs +6 -2
- package/lib/core/transform/envelope/selectDeclaredProjectInputKeys.mjs.map +1 -1
- package/lib/core/transform/envelope/selectExternalInputPaths.d.cts +3 -5
- package/lib/core/transform/envelope/selectExternalInputPaths.d.mts +3 -5
- package/lib/core/transform/envelope/selectExternalInputPaths.d.ts +3 -5
- package/lib/core/transform/envelope/selectExternalInputPaths.js +8 -7
- package/lib/core/transform/envelope/selectExternalInputPaths.js.map +1 -1
- package/lib/core/transform/envelope/selectExternalInputPaths.mjs +8 -7
- package/lib/core/transform/envelope/selectExternalInputPaths.mjs.map +1 -1
- package/lib/core/transform/filesystem/TtscTransformFilesystemOperations.d.cts +15 -12
- package/lib/core/transform/filesystem/TtscTransformFilesystemOperations.d.mts +15 -12
- package/lib/core/transform/filesystem/TtscTransformFilesystemOperations.d.ts +15 -12
- package/lib/core/transform/generation/captureFailedGenerationInputStates.js +1 -1
- package/lib/core/transform/generation/captureFailedGenerationInputStates.js.map +1 -1
- package/lib/core/transform/generation/captureFailedGenerationInputStates.mjs +1 -1
- package/lib/core/transform/generation/captureFailedGenerationInputStates.mjs.map +1 -1
- package/lib/core/transform/generation/captureTransformGeneration.js +1 -1
- package/lib/core/transform/generation/captureTransformGeneration.js.map +1 -1
- package/lib/core/transform/generation/captureTransformGeneration.mjs +1 -1
- package/lib/core/transform/generation/captureTransformGeneration.mjs.map +1 -1
- package/lib/core/transform/generation/failedGenerationEnvironmentChanged.js +2 -2
- package/lib/core/transform/generation/failedGenerationEnvironmentChanged.js.map +1 -1
- package/lib/core/transform/generation/failedGenerationEnvironmentChanged.mjs +2 -2
- package/lib/core/transform/generation/failedGenerationEnvironmentChanged.mjs.map +1 -1
- package/lib/core/transform/generation/selectTransformAttemptDisposition.d.cts +3 -1
- package/lib/core/transform/generation/selectTransformAttemptDisposition.d.mts +3 -1
- package/lib/core/transform/generation/selectTransformAttemptDisposition.d.ts +3 -1
- package/lib/core/transform/generation/selectTransformAttemptDisposition.js +3 -1
- package/lib/core/transform/generation/selectTransformAttemptDisposition.js.map +1 -1
- package/lib/core/transform/generation/selectTransformAttemptDisposition.mjs +3 -1
- package/lib/core/transform/generation/selectTransformAttemptDisposition.mjs.map +1 -1
- package/lib/core/transform/generation/transformProject.d.cts +9 -7
- package/lib/core/transform/generation/transformProject.d.mts +9 -7
- package/lib/core/transform/generation/transformProject.d.ts +9 -7
- package/lib/core/transform/generation/transformProject.js +14 -9
- package/lib/core/transform/generation/transformProject.js.map +1 -1
- package/lib/core/transform/generation/transformProject.mjs +14 -9
- package/lib/core/transform/generation/transformProject.mjs.map +1 -1
- package/lib/core/transform/inputs/pluginSourceFilesDigest.d.cts +9 -3
- package/lib/core/transform/inputs/pluginSourceFilesDigest.d.mts +9 -3
- package/lib/core/transform/inputs/pluginSourceFilesDigest.d.ts +9 -3
- package/lib/core/transform/inputs/pluginSourceFilesDigest.js +10 -4
- package/lib/core/transform/inputs/pluginSourceFilesDigest.js.map +1 -1
- package/lib/core/transform/inputs/pluginSourceFilesDigest.mjs +11 -5
- package/lib/core/transform/inputs/pluginSourceFilesDigest.mjs.map +1 -1
- package/lib/core/transform/inputs/pluginSourceHolds.d.cts +4 -2
- package/lib/core/transform/inputs/pluginSourceHolds.d.mts +4 -2
- package/lib/core/transform/inputs/pluginSourceHolds.d.ts +4 -2
- package/lib/core/transform/inputs/pluginSourceHolds.js +9 -4
- package/lib/core/transform/inputs/pluginSourceHolds.js.map +1 -1
- package/lib/core/transform/inputs/pluginSourceHolds.mjs +9 -4
- package/lib/core/transform/inputs/pluginSourceHolds.mjs.map +1 -1
- package/lib/core/transform/inputs/pluginSourceState.d.cts +3 -1
- package/lib/core/transform/inputs/pluginSourceState.d.mts +3 -1
- package/lib/core/transform/inputs/pluginSourceState.d.ts +3 -1
- package/lib/core/transform/inputs/pluginSourceState.js +8 -3
- package/lib/core/transform/inputs/pluginSourceState.js.map +1 -1
- package/lib/core/transform/inputs/pluginSourceState.mjs +8 -3
- package/lib/core/transform/inputs/pluginSourceState.mjs.map +1 -1
- package/lib/core/transform/inputs/preparePluginBuildEnvironments.d.cts +18 -5
- package/lib/core/transform/inputs/preparePluginBuildEnvironments.d.mts +18 -5
- package/lib/core/transform/inputs/preparePluginBuildEnvironments.d.ts +18 -5
- package/lib/core/transform/inputs/preparePluginBuildEnvironments.js +53 -12
- package/lib/core/transform/inputs/preparePluginBuildEnvironments.js.map +1 -1
- package/lib/core/transform/inputs/preparePluginBuildEnvironments.mjs +53 -12
- package/lib/core/transform/inputs/preparePluginBuildEnvironments.mjs.map +1 -1
- package/lib/core/transform/tracker/broker/WatchBroker.d.cts +14 -4
- package/lib/core/transform/tracker/broker/WatchBroker.d.mts +14 -4
- package/lib/core/transform/tracker/broker/WatchBroker.d.ts +14 -4
- package/lib/core/transform/tracker/broker/WatchBrokerTransport.d.cts +63 -0
- package/lib/core/transform/tracker/broker/WatchBrokerTransport.d.mts +63 -0
- package/lib/core/transform/tracker/broker/WatchBrokerTransport.d.ts +63 -0
- package/lib/core/transform/tracker/broker/WatchBrokerTransport.js +89 -0
- package/lib/core/transform/tracker/broker/WatchBrokerTransport.js.map +1 -0
- package/lib/core/transform/tracker/broker/WatchBrokerTransport.mjs +89 -0
- package/lib/core/transform/tracker/broker/WatchBrokerTransport.mjs.map +1 -0
- package/lib/core/transform/tracker/broker/drainWatchBroker.d.cts +8 -8
- package/lib/core/transform/tracker/broker/drainWatchBroker.d.mts +8 -8
- package/lib/core/transform/tracker/broker/drainWatchBroker.d.ts +8 -8
- package/lib/core/transform/tracker/broker/drainWatchBroker.js +12 -13
- package/lib/core/transform/tracker/broker/drainWatchBroker.js.map +1 -1
- package/lib/core/transform/tracker/broker/drainWatchBroker.mjs +12 -13
- package/lib/core/transform/tracker/broker/drainWatchBroker.mjs.map +1 -1
- package/lib/core/transform/tracker/broker/getWatchBroker.d.cts +18 -15
- package/lib/core/transform/tracker/broker/getWatchBroker.d.mts +18 -15
- package/lib/core/transform/tracker/broker/getWatchBroker.d.ts +18 -15
- package/lib/core/transform/tracker/broker/getWatchBroker.js +87 -17
- package/lib/core/transform/tracker/broker/getWatchBroker.js.map +1 -1
- package/lib/core/transform/tracker/broker/getWatchBroker.mjs +87 -17
- package/lib/core/transform/tracker/broker/getWatchBroker.mjs.map +1 -1
- package/lib/core/transform/tracker/broker/openBrokeredWatch.d.cts +5 -5
- package/lib/core/transform/tracker/broker/openBrokeredWatch.d.mts +5 -5
- package/lib/core/transform/tracker/broker/openBrokeredWatch.d.ts +5 -5
- package/lib/core/transform/tracker/broker/openBrokeredWatch.js +11 -14
- package/lib/core/transform/tracker/broker/openBrokeredWatch.js.map +1 -1
- package/lib/core/transform/tracker/broker/openBrokeredWatch.mjs +11 -14
- package/lib/core/transform/tracker/broker/openBrokeredWatch.mjs.map +1 -1
- package/lib/core/transform/tracker/broker/usesWatchBroker.d.cts +7 -7
- package/lib/core/transform/tracker/broker/usesWatchBroker.d.mts +7 -7
- package/lib/core/transform/tracker/broker/usesWatchBroker.d.ts +7 -7
- package/lib/core/transform/tracker/broker/usesWatchBroker.js +7 -7
- package/lib/core/transform/tracker/broker/usesWatchBroker.mjs +7 -7
- package/lib/core/transform/tracker/broker/watchBrokerSource.d.cts +9 -10
- package/lib/core/transform/tracker/broker/watchBrokerSource.d.mts +9 -10
- package/lib/core/transform/tracker/broker/watchBrokerSource.d.ts +9 -10
- package/lib/core/transform/tracker/broker/watchBrokerSource.js +10 -11
- package/lib/core/transform/tracker/broker/watchBrokerSource.js.map +1 -1
- package/lib/core/transform/tracker/broker/watchBrokerSource.mjs +10 -11
- package/lib/core/transform/tracker/broker/watchBrokerSource.mjs.map +1 -1
- package/lib/core/transform/transformTtsc.d.cts +7 -4
- package/lib/core/transform/transformTtsc.d.mts +7 -4
- package/lib/core/transform/transformTtsc.d.ts +7 -4
- package/lib/core/transform/transformTtsc.js +38 -93
- package/lib/core/transform/transformTtsc.js.map +1 -1
- package/lib/core/transform/transformTtsc.mjs +38 -93
- package/lib/core/transform/transformTtsc.mjs.map +1 -1
- package/lib/core/transform/validation/TtscGenerationProof.d.cts +105 -0
- package/lib/core/transform/validation/TtscGenerationProof.d.mts +105 -0
- package/lib/core/transform/validation/TtscGenerationProof.d.ts +105 -0
- package/lib/core/transform/validation/TtscGenerationProof.js +149 -0
- package/lib/core/transform/validation/TtscGenerationProof.js.map +1 -0
- package/lib/core/transform/validation/TtscGenerationProof.mjs +149 -0
- package/lib/core/transform/validation/TtscGenerationProof.mjs.map +1 -0
- package/lib/core/transform/validation/captureUniversalHostInputValidation.js +2 -2
- package/lib/core/transform/validation/captureUniversalHostInputValidation.js.map +1 -1
- package/lib/core/transform/validation/captureUniversalHostInputValidation.mjs +2 -2
- package/lib/core/transform/validation/captureUniversalHostInputValidation.mjs.map +1 -1
- package/lib/core/transform/validation/matchesCachedSource.d.cts +18 -15
- package/lib/core/transform/validation/matchesCachedSource.d.mts +18 -15
- package/lib/core/transform/validation/matchesCachedSource.d.ts +18 -15
- package/lib/core/transform/validation/matchesCachedSource.js +28 -22
- package/lib/core/transform/validation/matchesCachedSource.js.map +1 -1
- package/lib/core/transform/validation/matchesCachedSource.mjs +28 -22
- package/lib/core/transform/validation/matchesCachedSource.mjs.map +1 -1
- package/lib/core/transform/validation/matchesCompleteInputSnapshot.d.cts +3 -2
- package/lib/core/transform/validation/matchesCompleteInputSnapshot.d.mts +3 -2
- package/lib/core/transform/validation/matchesCompleteInputSnapshot.d.ts +3 -2
- package/lib/core/transform/validation/matchesCompleteInputSnapshot.js +4 -4
- package/lib/core/transform/validation/matchesCompleteInputSnapshot.js.map +1 -1
- package/lib/core/transform/validation/matchesCompleteInputSnapshot.mjs +4 -4
- package/lib/core/transform/validation/matchesCompleteInputSnapshot.mjs.map +1 -1
- package/lib/core/transform/validation/matchesNarrowPersistentInputs.d.cts +2 -1
- package/lib/core/transform/validation/matchesNarrowPersistentInputs.d.mts +2 -1
- package/lib/core/transform/validation/matchesNarrowPersistentInputs.d.ts +2 -1
- package/lib/core/transform/validation/matchesNarrowPersistentInputs.js +2 -2
- package/lib/core/transform/validation/matchesNarrowPersistentInputs.js.map +1 -1
- package/lib/core/transform/validation/matchesNarrowPersistentInputs.mjs +2 -2
- package/lib/core/transform/validation/matchesNarrowPersistentInputs.mjs.map +1 -1
- package/lib/core/transform/validation/matchesUniversalHostInputTrees.d.cts +3 -2
- package/lib/core/transform/validation/matchesUniversalHostInputTrees.d.mts +3 -2
- package/lib/core/transform/validation/matchesUniversalHostInputTrees.d.ts +3 -2
- package/lib/core/transform/validation/matchesUniversalHostInputTrees.js +7 -5
- package/lib/core/transform/validation/matchesUniversalHostInputTrees.js.map +1 -1
- package/lib/core/transform/validation/matchesUniversalHostInputTrees.mjs +7 -5
- package/lib/core/transform/validation/matchesUniversalHostInputTrees.mjs.map +1 -1
- package/lib/core/transform/validation/matchesUniversalHostInputs.d.cts +3 -2
- package/lib/core/transform/validation/matchesUniversalHostInputs.d.mts +3 -2
- package/lib/core/transform/validation/matchesUniversalHostInputs.d.ts +3 -2
- package/lib/core/transform/validation/matchesUniversalHostInputs.js +5 -5
- package/lib/core/transform/validation/matchesUniversalHostInputs.js.map +1 -1
- package/lib/core/transform/validation/matchesUniversalHostInputs.mjs +5 -5
- package/lib/core/transform/validation/matchesUniversalHostInputs.mjs.map +1 -1
- package/lib/core/transform/validation/nativeInputPredicatesHold.d.cts +5 -4
- package/lib/core/transform/validation/nativeInputPredicatesHold.d.mts +5 -4
- package/lib/core/transform/validation/nativeInputPredicatesHold.d.ts +5 -4
- package/lib/core/transform/validation/nativeInputPredicatesHold.js +31 -12
- package/lib/core/transform/validation/nativeInputPredicatesHold.js.map +1 -1
- package/lib/core/transform/validation/nativeInputPredicatesHold.mjs +31 -12
- package/lib/core/transform/validation/nativeInputPredicatesHold.mjs.map +1 -1
- package/lib/core/transform/validation/notificationsProveProgramUnchanged.d.cts +2 -1
- package/lib/core/transform/validation/notificationsProveProgramUnchanged.d.mts +2 -1
- package/lib/core/transform/validation/notificationsProveProgramUnchanged.d.ts +2 -1
- package/lib/core/transform/validation/notificationsProveProgramUnchanged.js +2 -2
- package/lib/core/transform/validation/notificationsProveProgramUnchanged.js.map +1 -1
- package/lib/core/transform/validation/notificationsProveProgramUnchanged.mjs +2 -2
- package/lib/core/transform/validation/notificationsProveProgramUnchanged.mjs.map +1 -1
- package/lib/core/transform/watch/captureWatchInputBaseline.d.cts +4 -0
- package/lib/core/transform/watch/captureWatchInputBaseline.d.mts +4 -0
- package/lib/core/transform/watch/captureWatchInputBaseline.d.ts +4 -0
- package/lib/core/transform/watch/captureWatchInputBaseline.js +3 -0
- package/lib/core/transform/watch/captureWatchInputBaseline.js.map +1 -1
- package/lib/core/transform/watch/captureWatchInputBaseline.mjs +3 -0
- package/lib/core/transform/watch/captureWatchInputBaseline.mjs.map +1 -1
- package/lib/core/transform/watch/captureWatchInputBaselines.d.cts +2 -0
- package/lib/core/transform/watch/captureWatchInputBaselines.d.mts +2 -0
- package/lib/core/transform/watch/captureWatchInputBaselines.d.ts +2 -0
- package/lib/core/transform/watch/captureWatchInputBaselines.js +3 -1
- package/lib/core/transform/watch/captureWatchInputBaselines.js.map +1 -1
- package/lib/core/transform/watch/captureWatchInputBaselines.mjs +3 -1
- package/lib/core/transform/watch/captureWatchInputBaselines.mjs.map +1 -1
- package/lib/core/transform/watch/notifyWatchInputs.js +3 -0
- package/lib/core/transform/watch/notifyWatchInputs.js.map +1 -1
- package/lib/core/transform/watch/notifyWatchInputs.mjs +3 -0
- package/lib/core/transform/watch/notifyWatchInputs.mjs.map +1 -1
- package/lib/core/transform/watch/watchInputEvidenceMatchesDisk.d.cts +5 -2
- package/lib/core/transform/watch/watchInputEvidenceMatchesDisk.d.mts +5 -2
- package/lib/core/transform/watch/watchInputEvidenceMatchesDisk.d.ts +5 -2
- package/lib/core/transform/watch/watchInputEvidenceMatchesDisk.js +6 -3
- package/lib/core/transform/watch/watchInputEvidenceMatchesDisk.js.map +1 -1
- package/lib/core/transform/watch/watchInputEvidenceMatchesDisk.mjs +6 -3
- package/lib/core/transform/watch/watchInputEvidenceMatchesDisk.mjs.map +1 -1
- package/lib/core/turbopack/turbopack.js +2 -1
- package/lib/core/turbopack/turbopack.js.map +1 -1
- package/lib/core/turbopack/turbopack.mjs +2 -1
- package/lib/core/turbopack/turbopack.mjs.map +1 -1
- package/package.json +3 -3
- package/src/core/bridge/projectRecordMoved.ts +3 -1
- package/src/core/bun/bun.ts +8 -4
- package/src/core/observer/createInputObserver.ts +8 -5
- package/src/core/observer/openIsolatedRecursiveWatch.ts +11 -12
- package/src/core/transform/cache/TtscCachedProjectTransform.ts +13 -3
- package/src/core/transform/cache/selectCachedGenerationAction.ts +9 -1
- package/src/core/transform/deliverCachedTransform.ts +97 -0
- package/src/core/transform/envelope/selectDeclaredProjectInputKeys.ts +5 -2
- package/src/core/transform/envelope/selectExternalInputPaths.ts +7 -7
- package/src/core/transform/filesystem/TtscTransformFilesystemOperations.ts +15 -12
- package/src/core/transform/generation/captureFailedGenerationInputStates.ts +1 -0
- package/src/core/transform/generation/captureTransformGeneration.ts +6 -1
- package/src/core/transform/generation/failedGenerationEnvironmentChanged.ts +12 -2
- package/src/core/transform/generation/selectTransformAttemptDisposition.ts +3 -1
- package/src/core/transform/generation/transformProject.ts +13 -9
- package/src/core/transform/inputs/pluginSourceFilesDigest.ts +11 -4
- package/src/core/transform/inputs/pluginSourceHolds.ts +13 -3
- package/src/core/transform/inputs/pluginSourceState.ts +8 -2
- package/src/core/transform/inputs/preparePluginBuildEnvironments.ts +64 -11
- package/src/core/transform/tracker/broker/WatchBroker.ts +15 -4
- package/src/core/transform/tracker/broker/WatchBrokerTransport.ts +82 -0
- package/src/core/transform/tracker/broker/drainWatchBroker.ts +12 -13
- package/src/core/transform/tracker/broker/getWatchBroker.ts +89 -18
- package/src/core/transform/tracker/broker/openBrokeredWatch.ts +11 -14
- package/src/core/transform/tracker/broker/usesWatchBroker.ts +7 -7
- package/src/core/transform/tracker/broker/watchBrokerSource.ts +10 -11
- package/src/core/transform/transformTtsc.ts +38 -92
- package/src/core/transform/validation/TtscGenerationProof.ts +201 -0
- package/src/core/transform/validation/captureUniversalHostInputValidation.ts +2 -1
- package/src/core/transform/validation/matchesCachedSource.ts +27 -21
- package/src/core/transform/validation/matchesCompleteInputSnapshot.ts +5 -3
- package/src/core/transform/validation/matchesNarrowPersistentInputs.ts +3 -1
- package/src/core/transform/validation/matchesUniversalHostInputTrees.ts +8 -3
- package/src/core/transform/validation/matchesUniversalHostInputs.ts +6 -4
- package/src/core/transform/validation/nativeInputPredicatesHold.ts +36 -14
- package/src/core/transform/validation/notificationsProveProgramUnchanged.ts +3 -1
- package/src/core/transform/watch/captureWatchInputBaseline.ts +4 -0
- package/src/core/transform/watch/captureWatchInputBaselines.ts +7 -1
- package/src/core/transform/watch/notifyWatchInputs.ts +3 -0
- package/src/core/transform/watch/watchInputEvidenceMatchesDisk.ts +12 -2
- package/src/core/turbopack/turbopack.ts +2 -1
|
@@ -6,11 +6,11 @@ import type { WatchBroker } from "./WatchBroker";
|
|
|
6
6
|
* caller-supplied watch capabilities can bypass it. Isolation has a reason on
|
|
7
7
|
* each native backend:
|
|
8
8
|
*
|
|
9
|
-
* -
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
9
|
+
* - Windows runs ttsc's native completion-port helper directly. Its directory
|
|
10
|
+
* filter excludes access-time notifications: reads must not masquerade as
|
|
11
|
+
* writes (#1719). Actual writes, metadata changes, native loss and failed
|
|
12
|
+
* coverage remain observable; equal bytes cannot erase an A-B-A event. No
|
|
13
|
+
* Node fs-event handle is opened in the host or an intermediate process.
|
|
14
14
|
* - On macOS, libuv serves every directory watch of one event loop through a
|
|
15
15
|
* single FSEventStream and re-creates it whenever any watch in that loop
|
|
16
16
|
* opens or closes, losing the events in between (samchon/ttsc#1418), and it
|
|
@@ -19,10 +19,11 @@ import type { WatchBroker } from "./WatchBroker";
|
|
|
19
19
|
* passes each drop on as a gap (samchon/ttsc#1425); see
|
|
20
20
|
* {@link watchBrokerSource}.
|
|
21
21
|
*
|
|
22
|
-
* Registration/drain owners unreference the child and
|
|
22
|
+
* Registration/drain owners unreference the child and its transport after their
|
|
23
23
|
* outstanding acknowledgments finish; startup itself returns a referenced
|
|
24
|
-
* child. Last-registration closure
|
|
25
|
-
* accessor has no independent shutdown deadline or exit
|
|
24
|
+
* child. Last-registration closure ends the request stream and attempts
|
|
25
|
+
* termination. This accessor has no independent shutdown deadline or exit
|
|
26
|
+
* wait.
|
|
26
27
|
*
|
|
27
28
|
* @evidence contracts/common.md#principled-implementation
|
|
28
29
|
* Native watches run in a protocol child. Error/exit dispatch reports failure
|
|
@@ -38,13 +39,15 @@ import type { WatchBroker } from "./WatchBroker";
|
|
|
38
39
|
* Native platform-reason list and lifecycle paragraph explain isolation and
|
|
39
40
|
* process ownership under the documentation skill.
|
|
40
41
|
* @evidence contracts/portability.md#os-neutral-implementation
|
|
41
|
-
*
|
|
42
|
-
* native
|
|
42
|
+
* Windows resolves the same ttsc binary as its compiler owner and uses the
|
|
43
|
+
* native __watch command; macOS uses this runtime and supported FSEvents.
|
|
44
|
+
* Argument-array spawn, hidden Windows processes and ordered transport stay
|
|
45
|
+
* inside this boundary.
|
|
43
46
|
* @evidence contracts/performance.md#efficient-algorithms
|
|
44
|
-
* A current-holder read is fixed work.
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
47
|
+
* A current-holder read is fixed work. Windows cold startup resolves the ttsc
|
|
48
|
+
* binary and opens native protocol pipes; macOS resolves the optional binding,
|
|
49
|
+
* reports missing capability and constructs its child program and IPC channel.
|
|
50
|
+
* Resolution/path/source bytes and native process startup cost remain real. Failure visits R registrations and D drain
|
|
48
51
|
* callbacks, whose native/reference/sink work remains delegated; it does not
|
|
49
52
|
* enumerate watched source trees.
|
|
50
53
|
* Enabled private tracing serializes the actual executable/source argv and
|
|
@@ -56,7 +59,7 @@ import type { WatchBroker } from "./WatchBroker";
|
|
|
56
59
|
* a health certificate; binding installation changes are not re-resolved
|
|
57
60
|
* while it remains current, and sink exceptions can interrupt failure handling.
|
|
58
61
|
* @evidence contracts/performance.md#bound-retention-and-release-resources
|
|
59
|
-
* One current module holder retains a child and registration/drain maps;
|
|
62
|
+
* One current module holder retains a direct child and registration/drain maps;
|
|
60
63
|
* those populations and caller-retained retired brokers have no cap here.
|
|
61
64
|
* Request owners manage references/timers, and last closure attempts native
|
|
62
65
|
* disconnection/kill rather than proving exit. Completed failure routing
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var readline = require('node:readline');
|
|
4
|
+
var binary = require('ttsc/binary');
|
|
3
5
|
var traceProcessSpawn = require('../../../tracing/traceProcessSpawn.js');
|
|
4
6
|
var WATCH_BROKER = require('./WATCH_BROKER.js');
|
|
5
7
|
var fseventsBindingPath = require('./fseventsBindingPath.js');
|
|
@@ -14,11 +16,11 @@ var watchBrokerSource = require('./watchBrokerSource.js');
|
|
|
14
16
|
* caller-supplied watch capabilities can bypass it. Isolation has a reason on
|
|
15
17
|
* each native backend:
|
|
16
18
|
*
|
|
17
|
-
* -
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
19
|
+
* - Windows runs ttsc's native completion-port helper directly. Its directory
|
|
20
|
+
* filter excludes access-time notifications: reads must not masquerade as
|
|
21
|
+
* writes (#1719). Actual writes, metadata changes, native loss and failed
|
|
22
|
+
* coverage remain observable; equal bytes cannot erase an A-B-A event. No
|
|
23
|
+
* Node fs-event handle is opened in the host or an intermediate process.
|
|
22
24
|
* - On macOS, libuv serves every directory watch of one event loop through a
|
|
23
25
|
* single FSEventStream and re-creates it whenever any watch in that loop
|
|
24
26
|
* opens or closes, losing the events in between (samchon/ttsc#1418), and it
|
|
@@ -27,10 +29,11 @@ var watchBrokerSource = require('./watchBrokerSource.js');
|
|
|
27
29
|
* passes each drop on as a gap (samchon/ttsc#1425); see
|
|
28
30
|
* {@link watchBrokerSource}.
|
|
29
31
|
*
|
|
30
|
-
* Registration/drain owners unreference the child and
|
|
32
|
+
* Registration/drain owners unreference the child and its transport after their
|
|
31
33
|
* outstanding acknowledgments finish; startup itself returns a referenced
|
|
32
|
-
* child. Last-registration closure
|
|
33
|
-
* accessor has no independent shutdown deadline or exit
|
|
34
|
+
* child. Last-registration closure ends the request stream and attempts
|
|
35
|
+
* termination. This accessor has no independent shutdown deadline or exit
|
|
36
|
+
* wait.
|
|
34
37
|
*
|
|
35
38
|
* @evidence contracts/common.md#principled-implementation
|
|
36
39
|
* Native watches run in a protocol child. Error/exit dispatch reports failure
|
|
@@ -46,13 +49,15 @@ var watchBrokerSource = require('./watchBrokerSource.js');
|
|
|
46
49
|
* Native platform-reason list and lifecycle paragraph explain isolation and
|
|
47
50
|
* process ownership under the documentation skill.
|
|
48
51
|
* @evidence contracts/portability.md#os-neutral-implementation
|
|
49
|
-
*
|
|
50
|
-
* native
|
|
52
|
+
* Windows resolves the same ttsc binary as its compiler owner and uses the
|
|
53
|
+
* native __watch command; macOS uses this runtime and supported FSEvents.
|
|
54
|
+
* Argument-array spawn, hidden Windows processes and ordered transport stay
|
|
55
|
+
* inside this boundary.
|
|
51
56
|
* @evidence contracts/performance.md#efficient-algorithms
|
|
52
|
-
* A current-holder read is fixed work.
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
57
|
+
* A current-holder read is fixed work. Windows cold startup resolves the ttsc
|
|
58
|
+
* binary and opens native protocol pipes; macOS resolves the optional binding,
|
|
59
|
+
* reports missing capability and constructs its child program and IPC channel.
|
|
60
|
+
* Resolution/path/source bytes and native process startup cost remain real. Failure visits R registrations and D drain
|
|
56
61
|
* callbacks, whose native/reference/sink work remains delegated; it does not
|
|
57
62
|
* enumerate watched source trees.
|
|
58
63
|
* Enabled private tracing serializes the actual executable/source argv and
|
|
@@ -64,7 +69,7 @@ var watchBrokerSource = require('./watchBrokerSource.js');
|
|
|
64
69
|
* a health certificate; binding installation changes are not re-resolved
|
|
65
70
|
* while it remains current, and sink exceptions can interrupt failure handling.
|
|
66
71
|
* @evidence contracts/performance.md#bound-retention-and-release-resources
|
|
67
|
-
* One current module holder retains a child and registration/drain maps;
|
|
72
|
+
* One current module holder retains a direct child and registration/drain maps;
|
|
68
73
|
* those populations and caller-retained retired brokers have no cap here.
|
|
69
74
|
* Request owners manage references/timers, and last closure attempts native
|
|
70
75
|
* disconnection/kill rather than proving exit. Completed failure routing
|
|
@@ -78,8 +83,14 @@ function getWatchBroker() {
|
|
|
78
83
|
const fsevents = process.platform === "darwin" ? fseventsBindingPath.fseventsBindingPath() : undefined;
|
|
79
84
|
if (fsevents === null)
|
|
80
85
|
warnMissingFseventsBinding.warnMissingFseventsBinding();
|
|
81
|
-
const
|
|
82
|
-
|
|
86
|
+
const native = process.platform === "win32";
|
|
87
|
+
const binary$1 = native ? binary.resolveBinary() : process.execPath;
|
|
88
|
+
if (binary$1 === null)
|
|
89
|
+
throw new Error("No ttsc native watch helper is available");
|
|
90
|
+
const child = traceProcessSpawn.traceProcessSpawn(binary$1, native ? ["__watch"] : ["-e", watchBrokerSource.watchBrokerSource(fsevents)], {
|
|
91
|
+
stdio: native
|
|
92
|
+
? ["pipe", "pipe", "ignore"]
|
|
93
|
+
: ["ignore", "ignore", "ignore", "ipc"],
|
|
83
94
|
windowsHide: true,
|
|
84
95
|
});
|
|
85
96
|
const broker = {
|
|
@@ -108,6 +119,65 @@ function getWatchBroker() {
|
|
|
108
119
|
WATCH_BROKER.WATCH_BROKER.current = undefined;
|
|
109
120
|
}
|
|
110
121
|
};
|
|
122
|
+
if (native) {
|
|
123
|
+
// All Windows registrations share one direct native child. No Node watcher,
|
|
124
|
+
// nested child, global runtime patch, or access-time system change is needed.
|
|
125
|
+
const input = child.stdin;
|
|
126
|
+
const output = child.stdout;
|
|
127
|
+
if (input === null || output === null) {
|
|
128
|
+
child.kill();
|
|
129
|
+
throw new Error("The native watch helper has no protocol pipes");
|
|
130
|
+
}
|
|
131
|
+
broker.transport = {
|
|
132
|
+
send(message) {
|
|
133
|
+
if (input.destroyed || input.writableEnded)
|
|
134
|
+
return false;
|
|
135
|
+
// write(false) means buffered backpressure, not refusal. The callback
|
|
136
|
+
// reports a real transport failure to every still-live registration.
|
|
137
|
+
input.write(JSON.stringify(message) + "\n", (error) => {
|
|
138
|
+
if (error !== null && error !== undefined) {
|
|
139
|
+
fail();
|
|
140
|
+
child.kill();
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
return true;
|
|
144
|
+
},
|
|
145
|
+
reference(active) {
|
|
146
|
+
const pipe = output;
|
|
147
|
+
if (active) {
|
|
148
|
+
child.ref();
|
|
149
|
+
pipe.ref?.();
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
child.unref();
|
|
153
|
+
pipe.unref?.();
|
|
154
|
+
}
|
|
155
|
+
},
|
|
156
|
+
close() {
|
|
157
|
+
input.end();
|
|
158
|
+
},
|
|
159
|
+
};
|
|
160
|
+
const lost = () => {
|
|
161
|
+
fail();
|
|
162
|
+
child.kill();
|
|
163
|
+
};
|
|
164
|
+
input.on("error", lost);
|
|
165
|
+
output.on("error", lost);
|
|
166
|
+
output.on("end", lost);
|
|
167
|
+
readline
|
|
168
|
+
.createInterface({ input: output, crlfDelay: Infinity })
|
|
169
|
+
.on("line", (line) => {
|
|
170
|
+
let message;
|
|
171
|
+
try {
|
|
172
|
+
message = JSON.parse(line);
|
|
173
|
+
}
|
|
174
|
+
catch {
|
|
175
|
+
lost();
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
routeWatchBrokerMessage.routeWatchBrokerMessage(broker, message);
|
|
179
|
+
});
|
|
180
|
+
}
|
|
111
181
|
child.on("error", fail);
|
|
112
182
|
child.on("exit", fail);
|
|
113
183
|
child.on("message", (message) => routeWatchBrokerMessage.routeWatchBrokerMessage(broker, message));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getWatchBroker.js","sources":["../../../../../src/core/transform/tracker/broker/getWatchBroker.ts"],"sourcesContent":[null],"names":["WATCH_BROKER","fseventsBindingPath","warnMissingFseventsBinding","traceProcessSpawn","watchBrokerSource","routeWatchBrokerMessage"],"mappings":"
|
|
1
|
+
{"version":3,"file":"getWatchBroker.js","sources":["../../../../../src/core/transform/tracker/broker/getWatchBroker.ts"],"sourcesContent":[null],"names":["WATCH_BROKER","fseventsBindingPath","warnMissingFseventsBinding","binary","resolveBinary","traceProcessSpawn","watchBrokerSource","routeWatchBrokerMessage"],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import readline from 'node:readline';
|
|
2
|
+
import { resolveBinary } from 'ttsc/binary';
|
|
1
3
|
import { traceProcessSpawn } from '../../../tracing/traceProcessSpawn.mjs';
|
|
2
4
|
import { WATCH_BROKER } from './WATCH_BROKER.mjs';
|
|
3
5
|
import { fseventsBindingPath } from './fseventsBindingPath.mjs';
|
|
@@ -12,11 +14,11 @@ import { watchBrokerSource } from './watchBrokerSource.mjs';
|
|
|
12
14
|
* caller-supplied watch capabilities can bypass it. Isolation has a reason on
|
|
13
15
|
* each native backend:
|
|
14
16
|
*
|
|
15
|
-
* -
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
17
|
+
* - Windows runs ttsc's native completion-port helper directly. Its directory
|
|
18
|
+
* filter excludes access-time notifications: reads must not masquerade as
|
|
19
|
+
* writes (#1719). Actual writes, metadata changes, native loss and failed
|
|
20
|
+
* coverage remain observable; equal bytes cannot erase an A-B-A event. No
|
|
21
|
+
* Node fs-event handle is opened in the host or an intermediate process.
|
|
20
22
|
* - On macOS, libuv serves every directory watch of one event loop through a
|
|
21
23
|
* single FSEventStream and re-creates it whenever any watch in that loop
|
|
22
24
|
* opens or closes, losing the events in between (samchon/ttsc#1418), and it
|
|
@@ -25,10 +27,11 @@ import { watchBrokerSource } from './watchBrokerSource.mjs';
|
|
|
25
27
|
* passes each drop on as a gap (samchon/ttsc#1425); see
|
|
26
28
|
* {@link watchBrokerSource}.
|
|
27
29
|
*
|
|
28
|
-
* Registration/drain owners unreference the child and
|
|
30
|
+
* Registration/drain owners unreference the child and its transport after their
|
|
29
31
|
* outstanding acknowledgments finish; startup itself returns a referenced
|
|
30
|
-
* child. Last-registration closure
|
|
31
|
-
* accessor has no independent shutdown deadline or exit
|
|
32
|
+
* child. Last-registration closure ends the request stream and attempts
|
|
33
|
+
* termination. This accessor has no independent shutdown deadline or exit
|
|
34
|
+
* wait.
|
|
32
35
|
*
|
|
33
36
|
* @evidence contracts/common.md#principled-implementation
|
|
34
37
|
* Native watches run in a protocol child. Error/exit dispatch reports failure
|
|
@@ -44,13 +47,15 @@ import { watchBrokerSource } from './watchBrokerSource.mjs';
|
|
|
44
47
|
* Native platform-reason list and lifecycle paragraph explain isolation and
|
|
45
48
|
* process ownership under the documentation skill.
|
|
46
49
|
* @evidence contracts/portability.md#os-neutral-implementation
|
|
47
|
-
*
|
|
48
|
-
* native
|
|
50
|
+
* Windows resolves the same ttsc binary as its compiler owner and uses the
|
|
51
|
+
* native __watch command; macOS uses this runtime and supported FSEvents.
|
|
52
|
+
* Argument-array spawn, hidden Windows processes and ordered transport stay
|
|
53
|
+
* inside this boundary.
|
|
49
54
|
* @evidence contracts/performance.md#efficient-algorithms
|
|
50
|
-
* A current-holder read is fixed work.
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
55
|
+
* A current-holder read is fixed work. Windows cold startup resolves the ttsc
|
|
56
|
+
* binary and opens native protocol pipes; macOS resolves the optional binding,
|
|
57
|
+
* reports missing capability and constructs its child program and IPC channel.
|
|
58
|
+
* Resolution/path/source bytes and native process startup cost remain real. Failure visits R registrations and D drain
|
|
54
59
|
* callbacks, whose native/reference/sink work remains delegated; it does not
|
|
55
60
|
* enumerate watched source trees.
|
|
56
61
|
* Enabled private tracing serializes the actual executable/source argv and
|
|
@@ -62,7 +67,7 @@ import { watchBrokerSource } from './watchBrokerSource.mjs';
|
|
|
62
67
|
* a health certificate; binding installation changes are not re-resolved
|
|
63
68
|
* while it remains current, and sink exceptions can interrupt failure handling.
|
|
64
69
|
* @evidence contracts/performance.md#bound-retention-and-release-resources
|
|
65
|
-
* One current module holder retains a child and registration/drain maps;
|
|
70
|
+
* One current module holder retains a direct child and registration/drain maps;
|
|
66
71
|
* those populations and caller-retained retired brokers have no cap here.
|
|
67
72
|
* Request owners manage references/timers, and last closure attempts native
|
|
68
73
|
* disconnection/kill rather than proving exit. Completed failure routing
|
|
@@ -76,8 +81,14 @@ function getWatchBroker() {
|
|
|
76
81
|
const fsevents = process.platform === "darwin" ? fseventsBindingPath() : undefined;
|
|
77
82
|
if (fsevents === null)
|
|
78
83
|
warnMissingFseventsBinding();
|
|
79
|
-
const
|
|
80
|
-
|
|
84
|
+
const native = process.platform === "win32";
|
|
85
|
+
const binary = native ? resolveBinary() : process.execPath;
|
|
86
|
+
if (binary === null)
|
|
87
|
+
throw new Error("No ttsc native watch helper is available");
|
|
88
|
+
const child = traceProcessSpawn(binary, native ? ["__watch"] : ["-e", watchBrokerSource(fsevents)], {
|
|
89
|
+
stdio: native
|
|
90
|
+
? ["pipe", "pipe", "ignore"]
|
|
91
|
+
: ["ignore", "ignore", "ignore", "ipc"],
|
|
81
92
|
windowsHide: true,
|
|
82
93
|
});
|
|
83
94
|
const broker = {
|
|
@@ -106,6 +117,65 @@ function getWatchBroker() {
|
|
|
106
117
|
WATCH_BROKER.current = undefined;
|
|
107
118
|
}
|
|
108
119
|
};
|
|
120
|
+
if (native) {
|
|
121
|
+
// All Windows registrations share one direct native child. No Node watcher,
|
|
122
|
+
// nested child, global runtime patch, or access-time system change is needed.
|
|
123
|
+
const input = child.stdin;
|
|
124
|
+
const output = child.stdout;
|
|
125
|
+
if (input === null || output === null) {
|
|
126
|
+
child.kill();
|
|
127
|
+
throw new Error("The native watch helper has no protocol pipes");
|
|
128
|
+
}
|
|
129
|
+
broker.transport = {
|
|
130
|
+
send(message) {
|
|
131
|
+
if (input.destroyed || input.writableEnded)
|
|
132
|
+
return false;
|
|
133
|
+
// write(false) means buffered backpressure, not refusal. The callback
|
|
134
|
+
// reports a real transport failure to every still-live registration.
|
|
135
|
+
input.write(JSON.stringify(message) + "\n", (error) => {
|
|
136
|
+
if (error !== null && error !== undefined) {
|
|
137
|
+
fail();
|
|
138
|
+
child.kill();
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
return true;
|
|
142
|
+
},
|
|
143
|
+
reference(active) {
|
|
144
|
+
const pipe = output;
|
|
145
|
+
if (active) {
|
|
146
|
+
child.ref();
|
|
147
|
+
pipe.ref?.();
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
child.unref();
|
|
151
|
+
pipe.unref?.();
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
close() {
|
|
155
|
+
input.end();
|
|
156
|
+
},
|
|
157
|
+
};
|
|
158
|
+
const lost = () => {
|
|
159
|
+
fail();
|
|
160
|
+
child.kill();
|
|
161
|
+
};
|
|
162
|
+
input.on("error", lost);
|
|
163
|
+
output.on("error", lost);
|
|
164
|
+
output.on("end", lost);
|
|
165
|
+
readline
|
|
166
|
+
.createInterface({ input: output, crlfDelay: Infinity })
|
|
167
|
+
.on("line", (line) => {
|
|
168
|
+
let message;
|
|
169
|
+
try {
|
|
170
|
+
message = JSON.parse(line);
|
|
171
|
+
}
|
|
172
|
+
catch {
|
|
173
|
+
lost();
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
routeWatchBrokerMessage(broker, message);
|
|
177
|
+
});
|
|
178
|
+
}
|
|
109
179
|
child.on("error", fail);
|
|
110
180
|
child.on("exit", fail);
|
|
111
181
|
child.on("message", (message) => routeWatchBrokerMessage(broker, message));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getWatchBroker.mjs","sources":["../../../../../src/core/transform/tracker/broker/getWatchBroker.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getWatchBroker.mjs","sources":["../../../../../src/core/transform/tracker/broker/getWatchBroker.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -5,11 +5,11 @@ import type { WatchBrokerSink } from "./WatchBrokerSink.cjs";
|
|
|
5
5
|
* Open directory watches in the isolated watch process for one sink, and report
|
|
6
6
|
* when they hear.
|
|
7
7
|
*
|
|
8
|
-
* On Windows,
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* macOS, each registration's watches are streams of their own, started
|
|
12
|
-
* the child reports ready, and a dropped event reaches the sink as a gap
|
|
8
|
+
* On Windows, ttsc's native helper owns completion-port directory subscriptions
|
|
9
|
+
* and omits access-only notifications (#1719). Native loss and failure withdraw
|
|
10
|
+
* coverage; actual change events remain authoritative even after A-B-A writes.
|
|
11
|
+
* On macOS, each registration's watches are streams of their own, started
|
|
12
|
+
* before the child reports ready, and a dropped event reaches the sink as a gap
|
|
13
13
|
* (samchon/ttsc#1425). A stream that can be probed reports ready only once its
|
|
14
14
|
* opening probe came back through it; the child suppresses ordinary callbacks
|
|
15
15
|
* received before that probe. This is its backend protocol, not a guarantee
|
|
@@ -5,11 +5,11 @@ import type { WatchBrokerSink } from "./WatchBrokerSink.mjs";
|
|
|
5
5
|
* Open directory watches in the isolated watch process for one sink, and report
|
|
6
6
|
* when they hear.
|
|
7
7
|
*
|
|
8
|
-
* On Windows,
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* macOS, each registration's watches are streams of their own, started
|
|
12
|
-
* the child reports ready, and a dropped event reaches the sink as a gap
|
|
8
|
+
* On Windows, ttsc's native helper owns completion-port directory subscriptions
|
|
9
|
+
* and omits access-only notifications (#1719). Native loss and failure withdraw
|
|
10
|
+
* coverage; actual change events remain authoritative even after A-B-A writes.
|
|
11
|
+
* On macOS, each registration's watches are streams of their own, started
|
|
12
|
+
* before the child reports ready, and a dropped event reaches the sink as a gap
|
|
13
13
|
* (samchon/ttsc#1425). A stream that can be probed reports ready only once its
|
|
14
14
|
* opening probe came back through it; the child suppresses ordinary callbacks
|
|
15
15
|
* received before that probe. This is its backend protocol, not a guarantee
|
|
@@ -5,11 +5,11 @@ import type { WatchBrokerSink } from "./WatchBrokerSink";
|
|
|
5
5
|
* Open directory watches in the isolated watch process for one sink, and report
|
|
6
6
|
* when they hear.
|
|
7
7
|
*
|
|
8
|
-
* On Windows,
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* macOS, each registration's watches are streams of their own, started
|
|
12
|
-
* the child reports ready, and a dropped event reaches the sink as a gap
|
|
8
|
+
* On Windows, ttsc's native helper owns completion-port directory subscriptions
|
|
9
|
+
* and omits access-only notifications (#1719). Native loss and failure withdraw
|
|
10
|
+
* coverage; actual change events remain authoritative even after A-B-A writes.
|
|
11
|
+
* On macOS, each registration's watches are streams of their own, started
|
|
12
|
+
* before the child reports ready, and a dropped event reaches the sink as a gap
|
|
13
13
|
* (samchon/ttsc#1425). A stream that can be probed reports ready only once its
|
|
14
14
|
* opening probe came back through it; the child suppresses ordinary callbacks
|
|
15
15
|
* received before that probe. This is its backend protocol, not a guarantee
|
|
@@ -5,6 +5,7 @@ var path = require('node:path');
|
|
|
5
5
|
var WATCH_BROKER = require('./WATCH_BROKER.js');
|
|
6
6
|
var WATCH_PROBE_DIRECTORY_PREFIX = require('./WATCH_PROBE_DIRECTORY_PREFIX.js');
|
|
7
7
|
var WATCH_PROBE_TIMEOUT_MS = require('./WATCH_PROBE_TIMEOUT_MS.js');
|
|
8
|
+
var WatchBrokerTransport = require('./WatchBrokerTransport.js');
|
|
8
9
|
var drainWatchBroker = require('./drainWatchBroker.js');
|
|
9
10
|
var getWatchBroker = require('./getWatchBroker.js');
|
|
10
11
|
var probeForLocation = require('./probeForLocation.js');
|
|
@@ -14,11 +15,11 @@ var sweepAbandonedWatchProbes = require('./sweepAbandonedWatchProbes.js');
|
|
|
14
15
|
* Open directory watches in the isolated watch process for one sink, and report
|
|
15
16
|
* when they hear.
|
|
16
17
|
*
|
|
17
|
-
* On Windows,
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* macOS, each registration's watches are streams of their own, started
|
|
21
|
-
* the child reports ready, and a dropped event reaches the sink as a gap
|
|
18
|
+
* On Windows, ttsc's native helper owns completion-port directory subscriptions
|
|
19
|
+
* and omits access-only notifications (#1719). Native loss and failure withdraw
|
|
20
|
+
* coverage; actual change events remain authoritative even after A-B-A writes.
|
|
21
|
+
* On macOS, each registration's watches are streams of their own, started
|
|
22
|
+
* before the child reports ready, and a dropped event reaches the sink as a gap
|
|
22
23
|
* (samchon/ttsc#1425). A stream that can be probed reports ready only once its
|
|
23
24
|
* opening probe came back through it; the child suppresses ordinary callbacks
|
|
24
25
|
* received before that probe. This is its backend protocol, not a guarantee
|
|
@@ -125,10 +126,7 @@ function openBrokeredWatch(locations, options) {
|
|
|
125
126
|
};
|
|
126
127
|
});
|
|
127
128
|
broker.pendingRegistrations += 1;
|
|
128
|
-
|
|
129
|
-
// Bun's IPC channel omits Node's Control.ref/unref methods. The child itself
|
|
130
|
-
// still owns the outstanding acknowledgement on that runtime.
|
|
131
|
-
broker.child.channel?.ref?.();
|
|
129
|
+
WatchBrokerTransport.WatchBrokerTransport.reference(broker, true);
|
|
132
130
|
const id = broker.nextId++;
|
|
133
131
|
let resolveReady;
|
|
134
132
|
const answered = new Promise((resolve) => {
|
|
@@ -149,7 +147,7 @@ function openBrokeredWatch(locations, options) {
|
|
|
149
147
|
let failed = false;
|
|
150
148
|
let failure;
|
|
151
149
|
try {
|
|
152
|
-
|
|
150
|
+
WatchBrokerTransport.WatchBrokerTransport.send(broker, { id, op: "remove" });
|
|
153
151
|
}
|
|
154
152
|
catch (error) {
|
|
155
153
|
failed = true;
|
|
@@ -160,7 +158,7 @@ function openBrokeredWatch(locations, options) {
|
|
|
160
158
|
WATCH_BROKER.WATCH_BROKER.current = undefined;
|
|
161
159
|
}
|
|
162
160
|
try {
|
|
163
|
-
|
|
161
|
+
WatchBrokerTransport.WatchBrokerTransport.close(broker);
|
|
164
162
|
}
|
|
165
163
|
catch (error) {
|
|
166
164
|
if (!failed) {
|
|
@@ -181,7 +179,7 @@ function openBrokeredWatch(locations, options) {
|
|
|
181
179
|
if (failed)
|
|
182
180
|
throw failure;
|
|
183
181
|
};
|
|
184
|
-
|
|
182
|
+
WatchBrokerTransport.WatchBrokerTransport.send(broker, {
|
|
185
183
|
allEvents: options.allEvents,
|
|
186
184
|
locations: normalized,
|
|
187
185
|
id,
|
|
@@ -214,8 +212,7 @@ function openBrokeredWatch(locations, options) {
|
|
|
214
212
|
// a reply over an unreferenced channel lets the loop empty and the process
|
|
215
213
|
// exit mid-build.
|
|
216
214
|
if (broker.pendingRegistrations === 0 && broker.pendingDrains === 0) {
|
|
217
|
-
|
|
218
|
-
broker.child.channel?.unref?.();
|
|
215
|
+
WatchBrokerTransport.WatchBrokerTransport.reference(broker, false);
|
|
219
216
|
}
|
|
220
217
|
});
|
|
221
218
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openBrokeredWatch.js","sources":["../../../../../src/core/transform/tracker/broker/openBrokeredWatch.ts"],"sourcesContent":[null],"names":["getWatchBroker","probeForLocation","WATCH_BROKER","WATCH_PROBE_TIMEOUT_MS","drainWatchBroker","sweepAbandonedWatchProbes","WATCH_PROBE_DIRECTORY_PREFIX"],"mappings":"
|
|
1
|
+
{"version":3,"file":"openBrokeredWatch.js","sources":["../../../../../src/core/transform/tracker/broker/openBrokeredWatch.ts"],"sourcesContent":[null],"names":["getWatchBroker","probeForLocation","WatchBrokerTransport","WATCH_BROKER","WATCH_PROBE_TIMEOUT_MS","drainWatchBroker","sweepAbandonedWatchProbes","WATCH_PROBE_DIRECTORY_PREFIX"],"mappings":"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"}
|