@ttsc/unplugin 0.31.0 → 0.31.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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 +6 -5
- package/lib/core/observer/createInputObserver.js.map +1 -1
- package/lib/core/observer/createInputObserver.mjs +6 -5
- 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/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/preparePluginBuildEnvironments.d.cts +11 -4
- package/lib/core/transform/inputs/preparePluginBuildEnvironments.d.mts +11 -4
- package/lib/core/transform/inputs/preparePluginBuildEnvironments.d.ts +11 -4
- package/lib/core/transform/inputs/preparePluginBuildEnvironments.js +44 -7
- package/lib/core/transform/inputs/preparePluginBuildEnvironments.js.map +1 -1
- package/lib/core/transform/inputs/preparePluginBuildEnvironments.mjs +44 -7
- 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 +37 -92
- package/lib/core/transform/transformTtsc.js.map +1 -1
- package/lib/core/transform/transformTtsc.mjs +37 -92
- 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/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 +5 -3
- package/lib/core/transform/validation/matchesUniversalHostInputTrees.js.map +1 -1
- package/lib/core/transform/validation/matchesUniversalHostInputTrees.mjs +5 -3
- 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/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/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/bun/bun.ts +8 -4
- package/src/core/observer/createInputObserver.ts +6 -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/selectTransformAttemptDisposition.ts +3 -1
- package/src/core/transform/generation/transformProject.ts +13 -9
- package/src/core/transform/inputs/preparePluginBuildEnvironments.ts +41 -7
- 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 +36 -92
- package/src/core/transform/validation/TtscGenerationProof.ts +201 -0
- 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 +6 -2
- 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/notifyWatchInputs.ts +3 -0
- package/src/core/turbopack/turbopack.ts +2 -1
|
@@ -2,18 +2,17 @@
|
|
|
2
2
|
* Open one recursive observer inside the transform core's isolated watch broker
|
|
3
3
|
* instead of the host process.
|
|
4
4
|
*
|
|
5
|
-
* On Windows,
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* bounded poll.
|
|
5
|
+
* On Windows, ttsc's direct native helper excludes access-only notifications
|
|
6
|
+
* and reports actual mutation, loss and failure through the same broker sink.
|
|
7
|
+
* On macOS, libuv serves every directory watch of a loop through one
|
|
8
|
+
* FSEventStream and re-creates it whenever any watch opens or closes, losing
|
|
9
|
+
* the events in between (samchon/ttsc#1418), where the broker opens one stream
|
|
10
|
+
* per watch. The observer's scopes get the isolation the transform core's
|
|
11
|
+
* trackers have, through the same registration (`openBrokeredWatch`) with a
|
|
12
|
+
* sink of their own that forwards events (samchon/ttsc#1485). Attributed events
|
|
13
|
+
* reach `listener` with a joined caller-directory path; unattributed events use
|
|
14
|
+
* null. A failed registration reaches `onError`, which hands the scope's
|
|
15
|
+
* entries to the bounded poll.
|
|
17
16
|
*
|
|
18
17
|
* Registration completes asynchronously, and FSEvents can later drop events
|
|
19
18
|
* (samchon/ttsc#1425). Until the broker confirms the watch, and whenever it
|
|
@@ -8,18 +8,17 @@ var openBrokeredWatch = require('../transform/tracker/broker/openBrokeredWatch.j
|
|
|
8
8
|
* Open one recursive observer inside the transform core's isolated watch broker
|
|
9
9
|
* instead of the host process.
|
|
10
10
|
*
|
|
11
|
-
* On Windows,
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
* bounded poll.
|
|
11
|
+
* On Windows, ttsc's direct native helper excludes access-only notifications
|
|
12
|
+
* and reports actual mutation, loss and failure through the same broker sink.
|
|
13
|
+
* On macOS, libuv serves every directory watch of a loop through one
|
|
14
|
+
* FSEventStream and re-creates it whenever any watch opens or closes, losing
|
|
15
|
+
* the events in between (samchon/ttsc#1418), where the broker opens one stream
|
|
16
|
+
* per watch. The observer's scopes get the isolation the transform core's
|
|
17
|
+
* trackers have, through the same registration (`openBrokeredWatch`) with a
|
|
18
|
+
* sink of their own that forwards events (samchon/ttsc#1485). Attributed events
|
|
19
|
+
* reach `listener` with a joined caller-directory path; unattributed events use
|
|
20
|
+
* null. A failed registration reaches `onError`, which hands the scope's
|
|
21
|
+
* entries to the bounded poll.
|
|
23
22
|
*
|
|
24
23
|
* Registration completes asynchronously, and FSEvents can later drop events
|
|
25
24
|
* (samchon/ttsc#1425). Until the broker confirms the watch, and whenever it
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openIsolatedRecursiveWatch.js","sources":["../../../src/core/observer/openIsolatedRecursiveWatch.ts"],"sourcesContent":[null],"names":["openBrokeredWatch","DEFAULT_FILESYSTEM_OPERATIONS"],"mappings":";;;;;;AAKA
|
|
1
|
+
{"version":3,"file":"openIsolatedRecursiveWatch.js","sources":["../../../src/core/observer/openIsolatedRecursiveWatch.ts"],"sourcesContent":[null],"names":["openBrokeredWatch","DEFAULT_FILESYSTEM_OPERATIONS"],"mappings":";;;;;;AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCG;AACG,SAAU,0BAA0B,CACxC,IAAY,EACZ,QAA0D,EAC1D,OAAmB,EACnB,MAAuC,EACvC,SAAkB,EAAA;IAElB,IAAI,MAAM,GAAG,KAAK;IAClB,IAAI,MAAM,GAAG,KAAK;IAClB,MAAM,OAAO,GAAG,MAAW;AACzB,QAAA,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM;AAAE,YAAA,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;AAClD,IAAA,CAAC;AACD,IAAA,MAAM,KAAK,GAAGA,mCAAiB,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE;AACtE,QAAA,SAAS,EAAE,IAAI;;;AAGf,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,UAAU,EAAEC,2DAA6B;AACzC,QAAA,IAAI,SAAS,KAAK,SAAS,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;AACjD,QAAA,IAAI,EAAE;YACJ,KAAK,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,KAAI;gBACxC,IAAI,CAAC,MAAM,EAAE;oBACX,QAAQ,CACN,SAAS,EACT,QAAQ,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAC1D;gBACH;YACF,CAAC;YACD,MAAM,EAAE,MAAK;gBACX,IAAI,MAAM,IAAI,MAAM;oBAAE;gBACtB,MAAM,GAAG,IAAI;AACb,gBAAA,OAAO,EAAE;YACX,CAAC;AACD,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,YAAY,EAAE,OAAO;AACrB,YAAA,QAAQ,EAAE,MAAM,SAAS;AAC1B,SAAA;AACF,KAAA,CAAC;IACF,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;IAC9B,OAAO;QACL,KAAK,EAAE,MAAK;YACV,MAAM,GAAG,IAAI;YACb,KAAK,CAAC,KAAK,EAAE;QACf,CAAC;KACF;AACH;;;;"}
|
|
@@ -6,18 +6,17 @@ import { openBrokeredWatch } from '../transform/tracker/broker/openBrokeredWatch
|
|
|
6
6
|
* Open one recursive observer inside the transform core's isolated watch broker
|
|
7
7
|
* instead of the host process.
|
|
8
8
|
*
|
|
9
|
-
* On Windows,
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* bounded poll.
|
|
9
|
+
* On Windows, ttsc's direct native helper excludes access-only notifications
|
|
10
|
+
* and reports actual mutation, loss and failure through the same broker sink.
|
|
11
|
+
* On macOS, libuv serves every directory watch of a loop through one
|
|
12
|
+
* FSEventStream and re-creates it whenever any watch opens or closes, losing
|
|
13
|
+
* the events in between (samchon/ttsc#1418), where the broker opens one stream
|
|
14
|
+
* per watch. The observer's scopes get the isolation the transform core's
|
|
15
|
+
* trackers have, through the same registration (`openBrokeredWatch`) with a
|
|
16
|
+
* sink of their own that forwards events (samchon/ttsc#1485). Attributed events
|
|
17
|
+
* reach `listener` with a joined caller-directory path; unattributed events use
|
|
18
|
+
* null. A failed registration reaches `onError`, which hands the scope's
|
|
19
|
+
* entries to the bounded poll.
|
|
21
20
|
*
|
|
22
21
|
* Registration completes asynchronously, and FSEvents can later drop events
|
|
23
22
|
* (samchon/ttsc#1425). Until the broker confirms the watch, and whenever it
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openIsolatedRecursiveWatch.mjs","sources":["../../../src/core/observer/openIsolatedRecursiveWatch.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKA
|
|
1
|
+
{"version":3,"file":"openIsolatedRecursiveWatch.mjs","sources":["../../../src/core/observer/openIsolatedRecursiveWatch.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCG;AACG,SAAU,0BAA0B,CACxC,IAAY,EACZ,QAA0D,EAC1D,OAAmB,EACnB,MAAuC,EACvC,SAAkB,EAAA;IAElB,IAAI,MAAM,GAAG,KAAK;IAClB,IAAI,MAAM,GAAG,KAAK;IAClB,MAAM,OAAO,GAAG,MAAW;AACzB,QAAA,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM;AAAE,YAAA,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;AAClD,IAAA,CAAC;AACD,IAAA,MAAM,KAAK,GAAG,iBAAiB,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE;AACtE,QAAA,SAAS,EAAE,IAAI;;;AAGf,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,UAAU,EAAE,6BAA6B;AACzC,QAAA,IAAI,SAAS,KAAK,SAAS,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;AACjD,QAAA,IAAI,EAAE;YACJ,KAAK,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,KAAI;gBACxC,IAAI,CAAC,MAAM,EAAE;oBACX,QAAQ,CACN,SAAS,EACT,QAAQ,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAC1D;gBACH;YACF,CAAC;YACD,MAAM,EAAE,MAAK;gBACX,IAAI,MAAM,IAAI,MAAM;oBAAE;gBACtB,MAAM,GAAG,IAAI;AACb,gBAAA,OAAO,EAAE;YACX,CAAC;AACD,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,YAAY,EAAE,OAAO;AACrB,YAAA,QAAQ,EAAE,MAAM,SAAS;AAC1B,SAAA;AACF,KAAA,CAAC;IACF,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;IAC9B,OAAO;QACL,KAAK,EAAE,MAAK;YACV,MAAM,GAAG,IAAI;YACb,KAAK,CAAC,KAAK,EAAE;QACf,CAAC;KACF;AACH;;;;"}
|
|
@@ -205,11 +205,20 @@ export interface TtscCachedProjectTransform {
|
|
|
205
205
|
projectSnapshotComplete?: boolean;
|
|
206
206
|
/**
|
|
207
207
|
* A locally admitted answer with incomplete host observations cannot be
|
|
208
|
-
* retained for
|
|
209
|
-
*
|
|
210
|
-
*
|
|
208
|
+
* retained for shared or persistent reuse. A separately admitted coherent
|
|
209
|
+
* local success may share first deliveries only in its explicit nonwatching
|
|
210
|
+
* pass (passDeliveryOnly). Successful answers need only explicit unavailable
|
|
211
|
+
* observations; diagnostic admission keeps its existing current-verdict
|
|
212
|
+
* policy. This flag never grants admission itself.
|
|
211
213
|
*/
|
|
212
214
|
freshDeliveryOnly?: boolean;
|
|
215
|
+
/**
|
|
216
|
+
* Coherent local success whose only missing authority is host observation.
|
|
217
|
+
* WARNING (#1713): this grants neither persistent nor pooled reuse. The
|
|
218
|
+
* common proof owner requires an explicit nonwatching pass, a recorded
|
|
219
|
+
* source, first delivery and actual host-cache withdrawal on every delivery.
|
|
220
|
+
*/
|
|
221
|
+
passDeliveryOnly?: boolean;
|
|
213
222
|
/** Absolute path to the directory that owns the tsconfig. */
|
|
214
223
|
projectRoot: string;
|
|
215
224
|
/**
|
|
@@ -205,11 +205,20 @@ export interface TtscCachedProjectTransform {
|
|
|
205
205
|
projectSnapshotComplete?: boolean;
|
|
206
206
|
/**
|
|
207
207
|
* A locally admitted answer with incomplete host observations cannot be
|
|
208
|
-
* retained for
|
|
209
|
-
*
|
|
210
|
-
*
|
|
208
|
+
* retained for shared or persistent reuse. A separately admitted coherent
|
|
209
|
+
* local success may share first deliveries only in its explicit nonwatching
|
|
210
|
+
* pass (passDeliveryOnly). Successful answers need only explicit unavailable
|
|
211
|
+
* observations; diagnostic admission keeps its existing current-verdict
|
|
212
|
+
* policy. This flag never grants admission itself.
|
|
211
213
|
*/
|
|
212
214
|
freshDeliveryOnly?: boolean;
|
|
215
|
+
/**
|
|
216
|
+
* Coherent local success whose only missing authority is host observation.
|
|
217
|
+
* WARNING (#1713): this grants neither persistent nor pooled reuse. The
|
|
218
|
+
* common proof owner requires an explicit nonwatching pass, a recorded
|
|
219
|
+
* source, first delivery and actual host-cache withdrawal on every delivery.
|
|
220
|
+
*/
|
|
221
|
+
passDeliveryOnly?: boolean;
|
|
213
222
|
/** Absolute path to the directory that owns the tsconfig. */
|
|
214
223
|
projectRoot: string;
|
|
215
224
|
/**
|
|
@@ -205,11 +205,20 @@ export interface TtscCachedProjectTransform {
|
|
|
205
205
|
projectSnapshotComplete?: boolean;
|
|
206
206
|
/**
|
|
207
207
|
* A locally admitted answer with incomplete host observations cannot be
|
|
208
|
-
* retained for
|
|
209
|
-
*
|
|
210
|
-
*
|
|
208
|
+
* retained for shared or persistent reuse. A separately admitted coherent
|
|
209
|
+
* local success may share first deliveries only in its explicit nonwatching
|
|
210
|
+
* pass (passDeliveryOnly). Successful answers need only explicit unavailable
|
|
211
|
+
* observations; diagnostic admission keeps its existing current-verdict
|
|
212
|
+
* policy. This flag never grants admission itself.
|
|
211
213
|
*/
|
|
212
214
|
freshDeliveryOnly?: boolean;
|
|
215
|
+
/**
|
|
216
|
+
* Coherent local success whose only missing authority is host observation.
|
|
217
|
+
* WARNING (#1713): this grants neither persistent nor pooled reuse. The
|
|
218
|
+
* common proof owner requires an explicit nonwatching pass, a recorded
|
|
219
|
+
* source, first delivery and actual host-cache withdrawal on every delivery.
|
|
220
|
+
*/
|
|
221
|
+
passDeliveryOnly?: boolean;
|
|
213
222
|
/** Absolute path to the directory that owns the tsconfig. */
|
|
214
223
|
projectRoot: string;
|
|
215
224
|
/**
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { TtscGenerationProof } from "../validation/TtscGenerationProof.cjs";
|
|
1
2
|
import type { TtscCachedProjectTransform } from "./TtscCachedProjectTransform.cjs";
|
|
2
3
|
import type { TtscTransformCache } from "./TtscTransformCache.cjs";
|
|
3
4
|
/**
|
|
@@ -37,4 +38,5 @@ export declare function selectCachedGenerationAction(props: {
|
|
|
37
38
|
generation: Promise<TtscCachedProjectTransform>;
|
|
38
39
|
key: string;
|
|
39
40
|
source: string;
|
|
41
|
+
proof?: TtscGenerationProof.Transaction;
|
|
40
42
|
}): "serve" | "retry" | "capture";
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { TtscGenerationProof } from "../validation/TtscGenerationProof.mjs";
|
|
1
2
|
import type { TtscCachedProjectTransform } from "./TtscCachedProjectTransform.mjs";
|
|
2
3
|
import type { TtscTransformCache } from "./TtscTransformCache.mjs";
|
|
3
4
|
/**
|
|
@@ -37,4 +38,5 @@ export declare function selectCachedGenerationAction(props: {
|
|
|
37
38
|
generation: Promise<TtscCachedProjectTransform>;
|
|
38
39
|
key: string;
|
|
39
40
|
source: string;
|
|
41
|
+
proof?: TtscGenerationProof.Transaction;
|
|
40
42
|
}): "serve" | "retry" | "capture";
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { TtscGenerationProof } from "../validation/TtscGenerationProof";
|
|
1
2
|
import type { TtscCachedProjectTransform } from "./TtscCachedProjectTransform";
|
|
2
3
|
import type { TtscTransformCache } from "./TtscTransformCache";
|
|
3
4
|
/**
|
|
@@ -37,4 +38,5 @@ export declare function selectCachedGenerationAction(props: {
|
|
|
37
38
|
generation: Promise<TtscCachedProjectTransform>;
|
|
38
39
|
key: string;
|
|
39
40
|
source: string;
|
|
41
|
+
proof?: TtscGenerationProof.Transaction;
|
|
40
42
|
}): "serve" | "retry" | "capture";
|
|
@@ -40,7 +40,7 @@ function selectCachedGenerationAction(props) {
|
|
|
40
40
|
projectRoot: props.cached.projectRoot,
|
|
41
41
|
result: props.cached.result,
|
|
42
42
|
}) &&
|
|
43
|
-
matchesCachedSource.matchesCachedSource(props.cached, props.file, props.source, props.epoch)) {
|
|
43
|
+
matchesCachedSource.matchesCachedSource(props.cached, props.file, props.source, props.epoch, props.proof)) {
|
|
44
44
|
return "serve";
|
|
45
45
|
}
|
|
46
46
|
evictGeneration.evictGeneration(props.cache, props.key, props.generation);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectCachedGenerationAction.js","sources":["../../../../src/core/transform/cache/selectCachedGenerationAction.ts"],"sourcesContent":[null],"names":["isVolatileFile","envelopeDerivation","matchesCachedSource","evictGeneration"],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"file":"selectCachedGenerationAction.js","sources":["../../../../src/core/transform/cache/selectCachedGenerationAction.ts"],"sourcesContent":[null],"names":["isVolatileFile","envelopeDerivation","matchesCachedSource","evictGeneration"],"mappings":";;;;;;;AAQA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BG;AACG,SAAU,4BAA4B,CAAC,KAS5C,EAAA;IACC,IACE,CAACA,6BAAc,CAACC,qCAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;QAChD,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,QAAA,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,WAAW;AACrC,QAAA,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM;KAC5B,CAAC;QACFC,uCAAmB,CACjB,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,KAAK,CACZ,EACD;AACA,QAAA,OAAO,OAAO;IAChB;AACA,IAAAC,+BAAe,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,UAAU,CAAC;IACzD,OAAO,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,GAAG,OAAO,GAAG,SAAS;AACxE;;;;"}
|
|
@@ -38,7 +38,7 @@ function selectCachedGenerationAction(props) {
|
|
|
38
38
|
projectRoot: props.cached.projectRoot,
|
|
39
39
|
result: props.cached.result,
|
|
40
40
|
}) &&
|
|
41
|
-
matchesCachedSource(props.cached, props.file, props.source, props.epoch)) {
|
|
41
|
+
matchesCachedSource(props.cached, props.file, props.source, props.epoch, props.proof)) {
|
|
42
42
|
return "serve";
|
|
43
43
|
}
|
|
44
44
|
evictGeneration(props.cache, props.key, props.generation);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectCachedGenerationAction.mjs","sources":["../../../../src/core/transform/cache/selectCachedGenerationAction.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"selectCachedGenerationAction.mjs","sources":["../../../../src/core/transform/cache/selectCachedGenerationAction.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAQA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BG;AACG,SAAU,4BAA4B,CAAC,KAS5C,EAAA;IACC,IACE,CAAC,cAAc,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;QAChD,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,QAAA,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,WAAW;AACrC,QAAA,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM;KAC5B,CAAC;QACF,mBAAmB,CACjB,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,KAAK,CACZ,EACD;AACA,QAAA,OAAO,OAAO;IAChB;AACA,IAAA,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,UAAU,CAAC;IACzD,OAAO,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,GAAG,OAAO,GAAG,SAAS;AACxE;;;;"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { TtscCachedProjectTransform } from "./cache/TtscCachedProjectTransform.cjs";
|
|
2
|
+
import type { TtscTransformCache } from "./cache/TtscTransformCache.cjs";
|
|
3
|
+
import type { TtscTransformHooks } from "./watch/TtscTransformHooks.cjs";
|
|
4
|
+
import type { TtscWatchSelection } from "./watch/TtscWatchSelection.cjs";
|
|
5
|
+
/**
|
|
6
|
+
* Deliver both captured and reused generations through one failure boundary.
|
|
7
|
+
*
|
|
8
|
+
* WARNING (#1713): host capabilities and callbacks apply to every delivery,
|
|
9
|
+
* including cache hits. Incomplete local results must never survive a failed
|
|
10
|
+
* handoff or acquire a persistent record. Stable ordinary generations retain
|
|
11
|
+
* their existing callback-failure recovery policy.
|
|
12
|
+
*
|
|
13
|
+
* A missing program output is an admitted absence: notify the same selection
|
|
14
|
+
* inputs and return control to the host. Compile failure retains its existing
|
|
15
|
+
* terminal policy through selectOrEvict and reports repair inputs.
|
|
16
|
+
*
|
|
17
|
+
* @evidence contracts/common.md#principled-implementation Captured and reused results share lifecycle admission, output selection, diagnostics and host handoff; incomplete ownership is evicted on any failed delivery effect, while missing output remains a host fallthrough.
|
|
18
|
+
* @evidence contracts/common.md#clear-and-simple-design One synchronous boundary removes duplicate initial/cache-hit delivery paths and their divergent callback and cleanup rules.
|
|
19
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts Missing outputs never manufacture transformed bytes or reusable observation authority; incomplete handoff failure cannot leave an owner for a sibling.
|
|
20
|
+
* @evidence contracts/common.md#meaningful-documentation Native prose states per-delivery capability, callback failure, missing-output and compile-failure responsibilities.
|
|
21
|
+
* @evidence contracts/portability.md#os-neutral-implementation Native identities and host spellings remain delegated to the generation's existing output/watch owners.
|
|
22
|
+
* @evidence contracts/performance.md#efficient-algorithms Selection uses generation indexes; diagnostics, output/map work and current host callbacks remain necessary per delivery. Watch input and record derivation retain their owning population costs.
|
|
23
|
+
* @evidence contracts/performance.md#reuse-equivalent-work Initial and reused answers share the exact same operation, while generation-owned indexes and the pass-qualified compiled result retain their separate validity premises.
|
|
24
|
+
* @evidence contracts/performance.md#bound-retention-and-release-resources Fresh-only admission releases capture resources; failed incomplete delivery evicts only its exact Promise. Ordinary selection/terminal and host lifecycle owners retain their established resource policy.
|
|
25
|
+
*/
|
|
26
|
+
export declare function deliverCachedTransform(props: {
|
|
27
|
+
cache: TtscTransformCache | undefined;
|
|
28
|
+
cached: TtscCachedProjectTransform;
|
|
29
|
+
generation: Promise<TtscCachedProjectTransform>;
|
|
30
|
+
key: string;
|
|
31
|
+
epoch: number | undefined;
|
|
32
|
+
file: string;
|
|
33
|
+
source: string;
|
|
34
|
+
hooks: TtscTransformHooks | undefined;
|
|
35
|
+
selection: TtscWatchSelection;
|
|
36
|
+
}): import("./TtscTransformResult.cjs").TtscTransformResult | undefined;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { TtscCachedProjectTransform } from "./cache/TtscCachedProjectTransform.mjs";
|
|
2
|
+
import type { TtscTransformCache } from "./cache/TtscTransformCache.mjs";
|
|
3
|
+
import type { TtscTransformHooks } from "./watch/TtscTransformHooks.mjs";
|
|
4
|
+
import type { TtscWatchSelection } from "./watch/TtscWatchSelection.mjs";
|
|
5
|
+
/**
|
|
6
|
+
* Deliver both captured and reused generations through one failure boundary.
|
|
7
|
+
*
|
|
8
|
+
* WARNING (#1713): host capabilities and callbacks apply to every delivery,
|
|
9
|
+
* including cache hits. Incomplete local results must never survive a failed
|
|
10
|
+
* handoff or acquire a persistent record. Stable ordinary generations retain
|
|
11
|
+
* their existing callback-failure recovery policy.
|
|
12
|
+
*
|
|
13
|
+
* A missing program output is an admitted absence: notify the same selection
|
|
14
|
+
* inputs and return control to the host. Compile failure retains its existing
|
|
15
|
+
* terminal policy through selectOrEvict and reports repair inputs.
|
|
16
|
+
*
|
|
17
|
+
* @evidence contracts/common.md#principled-implementation Captured and reused results share lifecycle admission, output selection, diagnostics and host handoff; incomplete ownership is evicted on any failed delivery effect, while missing output remains a host fallthrough.
|
|
18
|
+
* @evidence contracts/common.md#clear-and-simple-design One synchronous boundary removes duplicate initial/cache-hit delivery paths and their divergent callback and cleanup rules.
|
|
19
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts Missing outputs never manufacture transformed bytes or reusable observation authority; incomplete handoff failure cannot leave an owner for a sibling.
|
|
20
|
+
* @evidence contracts/common.md#meaningful-documentation Native prose states per-delivery capability, callback failure, missing-output and compile-failure responsibilities.
|
|
21
|
+
* @evidence contracts/portability.md#os-neutral-implementation Native identities and host spellings remain delegated to the generation's existing output/watch owners.
|
|
22
|
+
* @evidence contracts/performance.md#efficient-algorithms Selection uses generation indexes; diagnostics, output/map work and current host callbacks remain necessary per delivery. Watch input and record derivation retain their owning population costs.
|
|
23
|
+
* @evidence contracts/performance.md#reuse-equivalent-work Initial and reused answers share the exact same operation, while generation-owned indexes and the pass-qualified compiled result retain their separate validity premises.
|
|
24
|
+
* @evidence contracts/performance.md#bound-retention-and-release-resources Fresh-only admission releases capture resources; failed incomplete delivery evicts only its exact Promise. Ordinary selection/terminal and host lifecycle owners retain their established resource policy.
|
|
25
|
+
*/
|
|
26
|
+
export declare function deliverCachedTransform(props: {
|
|
27
|
+
cache: TtscTransformCache | undefined;
|
|
28
|
+
cached: TtscCachedProjectTransform;
|
|
29
|
+
generation: Promise<TtscCachedProjectTransform>;
|
|
30
|
+
key: string;
|
|
31
|
+
epoch: number | undefined;
|
|
32
|
+
file: string;
|
|
33
|
+
source: string;
|
|
34
|
+
hooks: TtscTransformHooks | undefined;
|
|
35
|
+
selection: TtscWatchSelection;
|
|
36
|
+
}): import("./TtscTransformResult.mjs").TtscTransformResult | undefined;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { TtscCachedProjectTransform } from "./cache/TtscCachedProjectTransform";
|
|
2
|
+
import type { TtscTransformCache } from "./cache/TtscTransformCache";
|
|
3
|
+
import type { TtscTransformHooks } from "./watch/TtscTransformHooks";
|
|
4
|
+
import type { TtscWatchSelection } from "./watch/TtscWatchSelection";
|
|
5
|
+
/**
|
|
6
|
+
* Deliver both captured and reused generations through one failure boundary.
|
|
7
|
+
*
|
|
8
|
+
* WARNING (#1713): host capabilities and callbacks apply to every delivery,
|
|
9
|
+
* including cache hits. Incomplete local results must never survive a failed
|
|
10
|
+
* handoff or acquire a persistent record. Stable ordinary generations retain
|
|
11
|
+
* their existing callback-failure recovery policy.
|
|
12
|
+
*
|
|
13
|
+
* A missing program output is an admitted absence: notify the same selection
|
|
14
|
+
* inputs and return control to the host. Compile failure retains its existing
|
|
15
|
+
* terminal policy through selectOrEvict and reports repair inputs.
|
|
16
|
+
*
|
|
17
|
+
* @evidence contracts/common.md#principled-implementation Captured and reused results share lifecycle admission, output selection, diagnostics and host handoff; incomplete ownership is evicted on any failed delivery effect, while missing output remains a host fallthrough.
|
|
18
|
+
* @evidence contracts/common.md#clear-and-simple-design One synchronous boundary removes duplicate initial/cache-hit delivery paths and their divergent callback and cleanup rules.
|
|
19
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts Missing outputs never manufacture transformed bytes or reusable observation authority; incomplete handoff failure cannot leave an owner for a sibling.
|
|
20
|
+
* @evidence contracts/common.md#meaningful-documentation Native prose states per-delivery capability, callback failure, missing-output and compile-failure responsibilities.
|
|
21
|
+
* @evidence contracts/portability.md#os-neutral-implementation Native identities and host spellings remain delegated to the generation's existing output/watch owners.
|
|
22
|
+
* @evidence contracts/performance.md#efficient-algorithms Selection uses generation indexes; diagnostics, output/map work and current host callbacks remain necessary per delivery. Watch input and record derivation retain their owning population costs.
|
|
23
|
+
* @evidence contracts/performance.md#reuse-equivalent-work Initial and reused answers share the exact same operation, while generation-owned indexes and the pass-qualified compiled result retain their separate validity premises.
|
|
24
|
+
* @evidence contracts/performance.md#bound-retention-and-release-resources Fresh-only admission releases capture resources; failed incomplete delivery evicts only its exact Promise. Ordinary selection/terminal and host lifecycle owners retain their established resource policy.
|
|
25
|
+
*/
|
|
26
|
+
export declare function deliverCachedTransform(props: {
|
|
27
|
+
cache: TtscTransformCache | undefined;
|
|
28
|
+
cached: TtscCachedProjectTransform;
|
|
29
|
+
generation: Promise<TtscCachedProjectTransform>;
|
|
30
|
+
key: string;
|
|
31
|
+
epoch: number | undefined;
|
|
32
|
+
file: string;
|
|
33
|
+
source: string;
|
|
34
|
+
hooks: TtscTransformHooks | undefined;
|
|
35
|
+
selection: TtscWatchSelection;
|
|
36
|
+
}): import("./TtscTransformResult").TtscTransformResult | undefined;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var evictGeneration = require('./cache/evictGeneration.js');
|
|
4
|
+
var selectOrEvict = require('./cache/selectOrEvict.js');
|
|
5
|
+
var reportMissingProgramOutput = require('./diagnostics/reportMissingProgramOutput.js');
|
|
6
|
+
var reportSuccessDiagnostics = require('./diagnostics/reportSuccessDiagnostics.js');
|
|
7
|
+
var TtscMissingProgramOutputError = require('./errors/TtscMissingProgramOutputError.js');
|
|
8
|
+
var createTransformResult = require('./utils/createTransformResult.js');
|
|
9
|
+
var TtscGenerationProof = require('./validation/TtscGenerationProof.js');
|
|
10
|
+
var markCachedSourceServed = require('./validation/markCachedSourceServed.js');
|
|
11
|
+
var notifyFailedGenerationInputs = require('./watch/notifyFailedGenerationInputs.js');
|
|
12
|
+
var notifyVolatileDelivery = require('./watch/notifyVolatileDelivery.js');
|
|
13
|
+
var notifyWatchInputs = require('./watch/notifyWatchInputs.js');
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Deliver both captured and reused generations through one failure boundary.
|
|
17
|
+
*
|
|
18
|
+
* WARNING (#1713): host capabilities and callbacks apply to every delivery,
|
|
19
|
+
* including cache hits. Incomplete local results must never survive a failed
|
|
20
|
+
* handoff or acquire a persistent record. Stable ordinary generations retain
|
|
21
|
+
* their existing callback-failure recovery policy.
|
|
22
|
+
*
|
|
23
|
+
* A missing program output is an admitted absence: notify the same selection
|
|
24
|
+
* inputs and return control to the host. Compile failure retains its existing
|
|
25
|
+
* terminal policy through selectOrEvict and reports repair inputs.
|
|
26
|
+
*
|
|
27
|
+
* @evidence contracts/common.md#principled-implementation Captured and reused results share lifecycle admission, output selection, diagnostics and host handoff; incomplete ownership is evicted on any failed delivery effect, while missing output remains a host fallthrough.
|
|
28
|
+
* @evidence contracts/common.md#clear-and-simple-design One synchronous boundary removes duplicate initial/cache-hit delivery paths and their divergent callback and cleanup rules.
|
|
29
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts Missing outputs never manufacture transformed bytes or reusable observation authority; incomplete handoff failure cannot leave an owner for a sibling.
|
|
30
|
+
* @evidence contracts/common.md#meaningful-documentation Native prose states per-delivery capability, callback failure, missing-output and compile-failure responsibilities.
|
|
31
|
+
* @evidence contracts/portability.md#os-neutral-implementation Native identities and host spellings remain delegated to the generation's existing output/watch owners.
|
|
32
|
+
* @evidence contracts/performance.md#efficient-algorithms Selection uses generation indexes; diagnostics, output/map work and current host callbacks remain necessary per delivery. Watch input and record derivation retain their owning population costs.
|
|
33
|
+
* @evidence contracts/performance.md#reuse-equivalent-work Initial and reused answers share the exact same operation, while generation-owned indexes and the pass-qualified compiled result retain their separate validity premises.
|
|
34
|
+
* @evidence contracts/performance.md#bound-retention-and-release-resources Fresh-only admission releases capture resources; failed incomplete delivery evicts only its exact Promise. Ordinary selection/terminal and host lifecycle owners retain their established resource policy.
|
|
35
|
+
*/
|
|
36
|
+
function deliverCachedTransform(props) {
|
|
37
|
+
const { cache, cached, generation, key, epoch, file, source, hooks, selection, } = props;
|
|
38
|
+
try {
|
|
39
|
+
TtscGenerationProof.TtscGenerationProof.admitFreshOnly(cached, cache, key, generation, epoch, hooks);
|
|
40
|
+
reportSuccessDiagnostics.reportSuccessDiagnostics(cached, epoch);
|
|
41
|
+
let output;
|
|
42
|
+
try {
|
|
43
|
+
output = selectOrEvict.selectOrEvict(cache, key, generation, epoch, {
|
|
44
|
+
file,
|
|
45
|
+
projectRoot: cached.projectRoot,
|
|
46
|
+
result: cached.result,
|
|
47
|
+
tsconfig: cached.tsconfig,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
if (!(error instanceof TtscMissingProgramOutputError.TtscMissingProgramOutputError)) {
|
|
52
|
+
notifyFailedGenerationInputs.notifyFailedGenerationInputs(hooks, cached, file, selection);
|
|
53
|
+
throw error;
|
|
54
|
+
}
|
|
55
|
+
reportMissingProgramOutput.reportMissingProgramOutput(cached, error, epoch);
|
|
56
|
+
notifyWatchInputs.notifyWatchInputs(hooks, cached, file, selection);
|
|
57
|
+
markCachedSourceServed.markCachedSourceServed(cached, file);
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
notifyWatchInputs.notifyWatchInputs(hooks, cached, file, selection);
|
|
61
|
+
markCachedSourceServed.markCachedSourceServed(cached, file);
|
|
62
|
+
notifyVolatileDelivery.notifyVolatileDelivery(hooks, cached, file);
|
|
63
|
+
return createTransformResult.createTransformResult(file, source, output);
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
if (cached.freshDeliveryOnly === true)
|
|
67
|
+
evictGeneration.evictGeneration(cache, key, generation);
|
|
68
|
+
throw error;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
exports.deliverCachedTransform = deliverCachedTransform;
|
|
73
|
+
//# sourceMappingURL=deliverCachedTransform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deliverCachedTransform.js","sources":["../../../src/core/transform/deliverCachedTransform.ts"],"sourcesContent":[null],"names":["TtscGenerationProof","reportSuccessDiagnostics","selectOrEvict","TtscMissingProgramOutputError","notifyFailedGenerationInputs","reportMissingProgramOutput","notifyWatchInputs","markCachedSourceServed","notifyVolatileDelivery","createTransformResult","evictGeneration"],"mappings":";;;;;;;;;;;;;;AAgBA;;;;;;;;;;;;;;;;;;;;AAoBG;AACG,SAAU,sBAAsB,CAAC,KAUtC,EAAA;IACC,MAAM,EACJ,KAAK,EACL,MAAM,EACN,UAAU,EACV,GAAG,EACH,KAAK,EACL,IAAI,EACJ,MAAM,EACN,KAAK,EACL,SAAS,GACV,GAAG,KAAK;AACT,IAAA,IAAI;AACF,QAAAA,uCAAmB,CAAC,cAAc,CAChC,MAAM,EACN,KAAK,EACL,GAAG,EACH,UAAU,EACV,KAAK,EACL,KAAK,CACN;AACD,QAAAC,iDAAwB,CAAC,MAAM,EAAE,KAAK,CAAC;AACvC,QAAA,IAAI,MAAM;AACV,QAAA,IAAI;YACF,MAAM,GAAGC,2BAAa,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE;gBACpD,IAAI;gBACJ,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;AAC1B,aAAA,CAAC;QACJ;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,EAAE,KAAK,YAAYC,2DAA6B,CAAC,EAAE;gBACrDC,yDAA4B,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC;AAC5D,gBAAA,MAAM,KAAK;YACb;AACA,YAAAC,qDAA0B,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC;YAChDC,mCAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC;AACjD,YAAAC,6CAAsB,CAAC,MAAM,EAAE,IAAI,CAAC;AACpC,YAAA,OAAO,SAAS;QAClB;QACAD,mCAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC;AACjD,QAAAC,6CAAsB,CAAC,MAAM,EAAE,IAAI,CAAC;AACpC,QAAAC,6CAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC;QAC3C,OAAOC,2CAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;IACpD;IAAE,OAAO,KAAK,EAAE;AACd,QAAA,IAAI,MAAM,CAAC,iBAAiB,KAAK,IAAI;AACnC,YAAAC,+BAAe,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC;AACzC,QAAA,MAAM,KAAK;IACb;AACF;;;;"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { evictGeneration } from './cache/evictGeneration.mjs';
|
|
2
|
+
import { selectOrEvict } from './cache/selectOrEvict.mjs';
|
|
3
|
+
import { reportMissingProgramOutput } from './diagnostics/reportMissingProgramOutput.mjs';
|
|
4
|
+
import { reportSuccessDiagnostics } from './diagnostics/reportSuccessDiagnostics.mjs';
|
|
5
|
+
import { TtscMissingProgramOutputError } from './errors/TtscMissingProgramOutputError.mjs';
|
|
6
|
+
import { createTransformResult } from './utils/createTransformResult.mjs';
|
|
7
|
+
import { TtscGenerationProof } from './validation/TtscGenerationProof.mjs';
|
|
8
|
+
import { markCachedSourceServed } from './validation/markCachedSourceServed.mjs';
|
|
9
|
+
import { notifyFailedGenerationInputs } from './watch/notifyFailedGenerationInputs.mjs';
|
|
10
|
+
import { notifyVolatileDelivery } from './watch/notifyVolatileDelivery.mjs';
|
|
11
|
+
import { notifyWatchInputs } from './watch/notifyWatchInputs.mjs';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Deliver both captured and reused generations through one failure boundary.
|
|
15
|
+
*
|
|
16
|
+
* WARNING (#1713): host capabilities and callbacks apply to every delivery,
|
|
17
|
+
* including cache hits. Incomplete local results must never survive a failed
|
|
18
|
+
* handoff or acquire a persistent record. Stable ordinary generations retain
|
|
19
|
+
* their existing callback-failure recovery policy.
|
|
20
|
+
*
|
|
21
|
+
* A missing program output is an admitted absence: notify the same selection
|
|
22
|
+
* inputs and return control to the host. Compile failure retains its existing
|
|
23
|
+
* terminal policy through selectOrEvict and reports repair inputs.
|
|
24
|
+
*
|
|
25
|
+
* @evidence contracts/common.md#principled-implementation Captured and reused results share lifecycle admission, output selection, diagnostics and host handoff; incomplete ownership is evicted on any failed delivery effect, while missing output remains a host fallthrough.
|
|
26
|
+
* @evidence contracts/common.md#clear-and-simple-design One synchronous boundary removes duplicate initial/cache-hit delivery paths and their divergent callback and cleanup rules.
|
|
27
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts Missing outputs never manufacture transformed bytes or reusable observation authority; incomplete handoff failure cannot leave an owner for a sibling.
|
|
28
|
+
* @evidence contracts/common.md#meaningful-documentation Native prose states per-delivery capability, callback failure, missing-output and compile-failure responsibilities.
|
|
29
|
+
* @evidence contracts/portability.md#os-neutral-implementation Native identities and host spellings remain delegated to the generation's existing output/watch owners.
|
|
30
|
+
* @evidence contracts/performance.md#efficient-algorithms Selection uses generation indexes; diagnostics, output/map work and current host callbacks remain necessary per delivery. Watch input and record derivation retain their owning population costs.
|
|
31
|
+
* @evidence contracts/performance.md#reuse-equivalent-work Initial and reused answers share the exact same operation, while generation-owned indexes and the pass-qualified compiled result retain their separate validity premises.
|
|
32
|
+
* @evidence contracts/performance.md#bound-retention-and-release-resources Fresh-only admission releases capture resources; failed incomplete delivery evicts only its exact Promise. Ordinary selection/terminal and host lifecycle owners retain their established resource policy.
|
|
33
|
+
*/
|
|
34
|
+
function deliverCachedTransform(props) {
|
|
35
|
+
const { cache, cached, generation, key, epoch, file, source, hooks, selection, } = props;
|
|
36
|
+
try {
|
|
37
|
+
TtscGenerationProof.admitFreshOnly(cached, cache, key, generation, epoch, hooks);
|
|
38
|
+
reportSuccessDiagnostics(cached, epoch);
|
|
39
|
+
let output;
|
|
40
|
+
try {
|
|
41
|
+
output = selectOrEvict(cache, key, generation, epoch, {
|
|
42
|
+
file,
|
|
43
|
+
projectRoot: cached.projectRoot,
|
|
44
|
+
result: cached.result,
|
|
45
|
+
tsconfig: cached.tsconfig,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
if (!(error instanceof TtscMissingProgramOutputError)) {
|
|
50
|
+
notifyFailedGenerationInputs(hooks, cached, file, selection);
|
|
51
|
+
throw error;
|
|
52
|
+
}
|
|
53
|
+
reportMissingProgramOutput(cached, error, epoch);
|
|
54
|
+
notifyWatchInputs(hooks, cached, file, selection);
|
|
55
|
+
markCachedSourceServed(cached, file);
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
notifyWatchInputs(hooks, cached, file, selection);
|
|
59
|
+
markCachedSourceServed(cached, file);
|
|
60
|
+
notifyVolatileDelivery(hooks, cached, file);
|
|
61
|
+
return createTransformResult(file, source, output);
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
if (cached.freshDeliveryOnly === true)
|
|
65
|
+
evictGeneration(cache, key, generation);
|
|
66
|
+
throw error;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export { deliverCachedTransform };
|
|
71
|
+
//# sourceMappingURL=deliverCachedTransform.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deliverCachedTransform.mjs","sources":["../../../src/core/transform/deliverCachedTransform.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;;;AAgBA;;;;;;;;;;;;;;;;;;;;AAoBG;AACG,SAAU,sBAAsB,CAAC,KAUtC,EAAA;IACC,MAAM,EACJ,KAAK,EACL,MAAM,EACN,UAAU,EACV,GAAG,EACH,KAAK,EACL,IAAI,EACJ,MAAM,EACN,KAAK,EACL,SAAS,GACV,GAAG,KAAK;AACT,IAAA,IAAI;AACF,QAAA,mBAAmB,CAAC,cAAc,CAChC,MAAM,EACN,KAAK,EACL,GAAG,EACH,UAAU,EACV,KAAK,EACL,KAAK,CACN;AACD,QAAA,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC;AACvC,QAAA,IAAI,MAAM;AACV,QAAA,IAAI;YACF,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE;gBACpD,IAAI;gBACJ,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;AAC1B,aAAA,CAAC;QACJ;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,EAAE,KAAK,YAAY,6BAA6B,CAAC,EAAE;gBACrD,4BAA4B,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC;AAC5D,gBAAA,MAAM,KAAK;YACb;AACA,YAAA,0BAA0B,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC;YAChD,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC;AACjD,YAAA,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC;AACpC,YAAA,OAAO,SAAS;QAClB;QACA,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC;AACjD,QAAA,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC;AACpC,QAAA,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC;QAC3C,OAAO,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;IACpD;IAAE,OAAO,KAAK,EAAE;AACd,QAAA,IAAI,MAAM,CAAC,iBAAiB,KAAK,IAAI;AACnC,YAAA,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC;AACzC,QAAA,MAAM,KAAK;IACb;AACF;;;;"}
|
|
@@ -21,8 +21,8 @@ import type { FilesystemPathIdentityContext } from "ttsc/path-identity";
|
|
|
21
21
|
* Visits each reported occurrence in graph endpoints/globals/configs,
|
|
22
22
|
* candidates, host inputs and dependency arrays. Native resolve, scratch
|
|
23
23
|
* checks, project-key identity/ancestor/case observations and text hashing
|
|
24
|
-
* precede each own-key membership test
|
|
25
|
-
*
|
|
24
|
+
* precede each own-key membership test after lexical deduplication; repeated
|
|
25
|
+
* declarations pay resolution but no repeated native classification. Entry
|
|
26
26
|
* arrays from Object.entries/Object.values follow producer populations,
|
|
27
27
|
* while the returned set cannot exceed keys present in the project snapshot.
|
|
28
28
|
* @evidenceExclude contracts/performance.md#reuse-equivalent-work
|
|
@@ -21,8 +21,8 @@ import type { FilesystemPathIdentityContext } from "ttsc/path-identity";
|
|
|
21
21
|
* Visits each reported occurrence in graph endpoints/globals/configs,
|
|
22
22
|
* candidates, host inputs and dependency arrays. Native resolve, scratch
|
|
23
23
|
* checks, project-key identity/ancestor/case observations and text hashing
|
|
24
|
-
* precede each own-key membership test
|
|
25
|
-
*
|
|
24
|
+
* precede each own-key membership test after lexical deduplication; repeated
|
|
25
|
+
* declarations pay resolution but no repeated native classification. Entry
|
|
26
26
|
* arrays from Object.entries/Object.values follow producer populations,
|
|
27
27
|
* while the returned set cannot exceed keys present in the project snapshot.
|
|
28
28
|
* @evidenceExclude contracts/performance.md#reuse-equivalent-work
|
|
@@ -21,8 +21,8 @@ import type { FilesystemPathIdentityContext } from "ttsc/path-identity";
|
|
|
21
21
|
* Visits each reported occurrence in graph endpoints/globals/configs,
|
|
22
22
|
* candidates, host inputs and dependency arrays. Native resolve, scratch
|
|
23
23
|
* checks, project-key identity/ancestor/case observations and text hashing
|
|
24
|
-
* precede each own-key membership test
|
|
25
|
-
*
|
|
24
|
+
* precede each own-key membership test after lexical deduplication; repeated
|
|
25
|
+
* declarations pay resolution but no repeated native classification. Entry
|
|
26
26
|
* arrays from Object.entries/Object.values follow producer populations,
|
|
27
27
|
* while the returned set cannot exceed keys present in the project snapshot.
|
|
28
28
|
* @evidenceExclude contracts/performance.md#reuse-equivalent-work
|
|
@@ -25,8 +25,8 @@ var isTransformScratchInput = require('../tsconfig/isTransformScratchInput.js');
|
|
|
25
25
|
* Visits each reported occurrence in graph endpoints/globals/configs,
|
|
26
26
|
* candidates, host inputs and dependency arrays. Native resolve, scratch
|
|
27
27
|
* checks, project-key identity/ancestor/case observations and text hashing
|
|
28
|
-
* precede each own-key membership test
|
|
29
|
-
*
|
|
28
|
+
* precede each own-key membership test after lexical deduplication; repeated
|
|
29
|
+
* declarations pay resolution but no repeated native classification. Entry
|
|
30
30
|
* arrays from Object.entries/Object.values follow producer populations,
|
|
31
31
|
* while the returned set cannot exceed keys present in the project snapshot.
|
|
32
32
|
* @evidenceExclude contracts/performance.md#reuse-equivalent-work
|
|
@@ -42,10 +42,14 @@ function selectDeclaredProjectInputKeys(props) {
|
|
|
42
42
|
}
|
|
43
43
|
const graph = props.result.graph;
|
|
44
44
|
const keys = new Set();
|
|
45
|
+
const seen = new Set();
|
|
45
46
|
const add = (entry) => {
|
|
46
47
|
if (typeof entry !== "string" || entry.length === 0)
|
|
47
48
|
return;
|
|
48
49
|
const absolute = path.resolve(props.projectRoot, entry);
|
|
50
|
+
if (seen.has(absolute))
|
|
51
|
+
return;
|
|
52
|
+
seen.add(absolute);
|
|
49
53
|
if (isTransformScratchInput.isTransformScratchInput(absolute, props.scratchDirectory))
|
|
50
54
|
return;
|
|
51
55
|
const key = toProjectKey.toProjectKey(props.projectRoot, absolute, props.identities);
|