@ttsc/unplugin 0.34.1 → 0.34.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (262) hide show
  1. package/README.md +1 -0
  2. package/lib/api.js +4 -0
  3. package/lib/api.js.map +1 -1
  4. package/lib/api.mjs +2 -0
  5. package/lib/api.mjs.map +1 -1
  6. package/lib/core/bridge/TtscProjectRecord.d.cts +4 -1
  7. package/lib/core/bridge/TtscProjectRecord.d.mts +4 -1
  8. package/lib/core/bridge/TtscProjectRecord.d.ts +4 -1
  9. package/lib/core/bridge/projectRecordArgumentsMatch.d.cts +18 -0
  10. package/lib/core/bridge/projectRecordArgumentsMatch.d.mts +18 -0
  11. package/lib/core/bridge/projectRecordArgumentsMatch.d.ts +18 -0
  12. package/lib/core/bridge/projectRecordArgumentsMatch.js +36 -0
  13. package/lib/core/bridge/projectRecordArgumentsMatch.js.map +1 -0
  14. package/lib/core/bridge/projectRecordArgumentsMatch.mjs +34 -0
  15. package/lib/core/bridge/projectRecordArgumentsMatch.mjs.map +1 -0
  16. package/lib/core/bridge/projectRecordMoved.d.cts +14 -12
  17. package/lib/core/bridge/projectRecordMoved.d.mts +14 -12
  18. package/lib/core/bridge/projectRecordMoved.d.ts +14 -12
  19. package/lib/core/bridge/projectRecordMoved.js +17 -12
  20. package/lib/core/bridge/projectRecordMoved.js.map +1 -1
  21. package/lib/core/bridge/projectRecordMoved.mjs +17 -12
  22. package/lib/core/bridge/projectRecordMoved.mjs.map +1 -1
  23. package/lib/core/bridge/readProjectRecordFile.d.cts +4 -3
  24. package/lib/core/bridge/readProjectRecordFile.d.mts +4 -3
  25. package/lib/core/bridge/readProjectRecordFile.d.ts +4 -3
  26. package/lib/core/bridge/readProjectRecordFile.js +26 -3
  27. package/lib/core/bridge/readProjectRecordFile.js.map +1 -1
  28. package/lib/core/bridge/readProjectRecordFile.mjs +26 -3
  29. package/lib/core/bridge/readProjectRecordFile.mjs.map +1 -1
  30. package/lib/core/bridge/refreshProjectRecordFile.d.cts +3 -2
  31. package/lib/core/bridge/refreshProjectRecordFile.d.mts +3 -2
  32. package/lib/core/bridge/refreshProjectRecordFile.d.ts +3 -2
  33. package/lib/core/bridge/refreshProjectRecordFile.js +9 -3
  34. package/lib/core/bridge/refreshProjectRecordFile.js.map +1 -1
  35. package/lib/core/bridge/refreshProjectRecordFile.mjs +9 -3
  36. package/lib/core/bridge/refreshProjectRecordFile.mjs.map +1 -1
  37. package/lib/core/bridge/refreshProjectRecordFiles.d.cts +1 -1
  38. package/lib/core/bridge/refreshProjectRecordFiles.d.mts +1 -1
  39. package/lib/core/bridge/refreshProjectRecordFiles.d.ts +1 -1
  40. package/lib/core/bridge/refreshProjectRecordFiles.js +2 -2
  41. package/lib/core/bridge/refreshProjectRecordFiles.js.map +1 -1
  42. package/lib/core/bridge/refreshProjectRecordFiles.mjs +2 -2
  43. package/lib/core/bridge/refreshProjectRecordFiles.mjs.map +1 -1
  44. package/lib/core/index.d.cts +2 -0
  45. package/lib/core/index.d.mts +2 -0
  46. package/lib/core/index.d.ts +2 -0
  47. package/lib/core/index.js +4 -0
  48. package/lib/core/index.js.map +1 -1
  49. package/lib/core/index.mjs +2 -0
  50. package/lib/core/index.mjs.map +1 -1
  51. package/lib/core/next/next.js +5 -2
  52. package/lib/core/next/next.js.map +1 -1
  53. package/lib/core/next/next.mjs +5 -2
  54. package/lib/core/next/next.mjs.map +1 -1
  55. package/lib/core/options/ResolvedTtscUnpluginOptions.d.cts +2 -0
  56. package/lib/core/options/ResolvedTtscUnpluginOptions.d.mts +2 -0
  57. package/lib/core/options/ResolvedTtscUnpluginOptions.d.ts +2 -0
  58. package/lib/core/options/TtscUnpluginOptions.d.cts +8 -0
  59. package/lib/core/options/TtscUnpluginOptions.d.mts +8 -0
  60. package/lib/core/options/TtscUnpluginOptions.d.ts +8 -0
  61. package/lib/core/options/resolveOptions.d.cts +4 -3
  62. package/lib/core/options/resolveOptions.d.mts +4 -3
  63. package/lib/core/options/resolveOptions.d.ts +4 -3
  64. package/lib/core/options/resolveOptions.js +5 -3
  65. package/lib/core/options/resolveOptions.js.map +1 -1
  66. package/lib/core/options/resolveOptions.mjs +5 -3
  67. package/lib/core/options/resolveOptions.mjs.map +1 -1
  68. package/lib/core/rollup/rollupDeliveryOptions.d.cts +6 -6
  69. package/lib/core/rollup/rollupDeliveryOptions.d.mts +6 -6
  70. package/lib/core/rollup/rollupDeliveryOptions.d.ts +6 -6
  71. package/lib/core/rollup/rollupDeliveryOptions.js +9 -6
  72. package/lib/core/rollup/rollupDeliveryOptions.js.map +1 -1
  73. package/lib/core/rollup/rollupDeliveryOptions.mjs +9 -6
  74. package/lib/core/rollup/rollupDeliveryOptions.mjs.map +1 -1
  75. package/lib/core/transform/cache/TRANSFORM_CACHE_MEMBERSHIP_POLICIES.d.cts +10 -0
  76. package/lib/core/transform/cache/TRANSFORM_CACHE_MEMBERSHIP_POLICIES.d.mts +10 -0
  77. package/lib/core/transform/cache/TRANSFORM_CACHE_MEMBERSHIP_POLICIES.d.ts +10 -0
  78. package/lib/core/transform/cache/TRANSFORM_CACHE_MEMBERSHIP_POLICIES.js +13 -0
  79. package/lib/core/transform/cache/TRANSFORM_CACHE_MEMBERSHIP_POLICIES.js.map +1 -0
  80. package/lib/core/transform/cache/TRANSFORM_CACHE_MEMBERSHIP_POLICIES.mjs +11 -0
  81. package/lib/core/transform/cache/TRANSFORM_CACHE_MEMBERSHIP_POLICIES.mjs.map +1 -0
  82. package/lib/core/transform/cache/TtscCachedProjectTransform.d.cts +6 -0
  83. package/lib/core/transform/cache/TtscCachedProjectTransform.d.mts +6 -0
  84. package/lib/core/transform/cache/TtscCachedProjectTransform.d.ts +6 -0
  85. package/lib/core/transform/cache/createTransformCacheKey.d.cts +11 -8
  86. package/lib/core/transform/cache/createTransformCacheKey.d.mts +11 -8
  87. package/lib/core/transform/cache/createTransformCacheKey.d.ts +11 -8
  88. package/lib/core/transform/cache/createTransformCacheKey.js +11 -8
  89. package/lib/core/transform/cache/createTransformCacheKey.js.map +1 -1
  90. package/lib/core/transform/cache/createTransformCacheKey.mjs +11 -8
  91. package/lib/core/transform/cache/createTransformCacheKey.mjs.map +1 -1
  92. package/lib/core/transform/generation/TtscCompilerMembershipHint.d.cts +20 -0
  93. package/lib/core/transform/generation/TtscCompilerMembershipHint.d.mts +20 -0
  94. package/lib/core/transform/generation/TtscCompilerMembershipHint.d.ts +20 -0
  95. package/lib/core/transform/generation/applyCompilerMembership.d.cts +15 -0
  96. package/lib/core/transform/generation/applyCompilerMembership.d.mts +15 -0
  97. package/lib/core/transform/generation/applyCompilerMembership.d.ts +15 -0
  98. package/lib/core/transform/generation/applyCompilerMembership.js +41 -0
  99. package/lib/core/transform/generation/applyCompilerMembership.js.map +1 -0
  100. package/lib/core/transform/generation/applyCompilerMembership.mjs +39 -0
  101. package/lib/core/transform/generation/applyCompilerMembership.mjs.map +1 -0
  102. package/lib/core/transform/generation/captureTransformGeneration.d.cts +7 -0
  103. package/lib/core/transform/generation/captureTransformGeneration.d.mts +7 -0
  104. package/lib/core/transform/generation/captureTransformGeneration.d.ts +7 -0
  105. package/lib/core/transform/generation/captureTransformGeneration.js +20 -7
  106. package/lib/core/transform/generation/captureTransformGeneration.js.map +1 -1
  107. package/lib/core/transform/generation/captureTransformGeneration.mjs +20 -7
  108. package/lib/core/transform/generation/captureTransformGeneration.mjs.map +1 -1
  109. package/lib/core/transform/generation/onlyLearnedCompileFacts.d.cts +5 -5
  110. package/lib/core/transform/generation/onlyLearnedCompileFacts.d.mts +5 -5
  111. package/lib/core/transform/generation/onlyLearnedCompileFacts.d.ts +5 -5
  112. package/lib/core/transform/generation/onlyLearnedCompileFacts.js +7 -5
  113. package/lib/core/transform/generation/onlyLearnedCompileFacts.js.map +1 -1
  114. package/lib/core/transform/generation/onlyLearnedCompileFacts.mjs +7 -5
  115. package/lib/core/transform/generation/onlyLearnedCompileFacts.mjs.map +1 -1
  116. package/lib/core/transform/generation/primeCompilerMembership.d.cts +22 -0
  117. package/lib/core/transform/generation/primeCompilerMembership.d.mts +22 -0
  118. package/lib/core/transform/generation/primeCompilerMembership.d.ts +22 -0
  119. package/lib/core/transform/generation/primeCompilerMembership.js +32 -0
  120. package/lib/core/transform/generation/primeCompilerMembership.js.map +1 -0
  121. package/lib/core/transform/generation/primeCompilerMembership.mjs +30 -0
  122. package/lib/core/transform/generation/primeCompilerMembership.mjs.map +1 -0
  123. package/lib/core/transform/generation/selectReportedMembershipPolicy.d.cts +7 -7
  124. package/lib/core/transform/generation/selectReportedMembershipPolicy.d.mts +7 -7
  125. package/lib/core/transform/generation/selectReportedMembershipPolicy.d.ts +7 -7
  126. package/lib/core/transform/generation/selectReportedMembershipPolicy.js +43 -9
  127. package/lib/core/transform/generation/selectReportedMembershipPolicy.js.map +1 -1
  128. package/lib/core/transform/generation/selectReportedMembershipPolicy.mjs +43 -9
  129. package/lib/core/transform/generation/selectReportedMembershipPolicy.mjs.map +1 -1
  130. package/lib/core/transform/generation/transformProject.d.cts +7 -0
  131. package/lib/core/transform/generation/transformProject.d.mts +7 -0
  132. package/lib/core/transform/generation/transformProject.d.ts +7 -0
  133. package/lib/core/transform/generation/transformProject.js +3 -0
  134. package/lib/core/transform/generation/transformProject.js.map +1 -1
  135. package/lib/core/transform/generation/transformProject.mjs +3 -0
  136. package/lib/core/transform/generation/transformProject.mjs.map +1 -1
  137. package/lib/core/transform/project/isPossibleProgramFileName.d.cts +13 -11
  138. package/lib/core/transform/project/isPossibleProgramFileName.d.mts +13 -11
  139. package/lib/core/transform/project/isPossibleProgramFileName.d.ts +13 -11
  140. package/lib/core/transform/project/isPossibleProgramFileName.js +21 -13
  141. package/lib/core/transform/project/isPossibleProgramFileName.js.map +1 -1
  142. package/lib/core/transform/project/isPossibleProgramFileName.mjs +21 -13
  143. package/lib/core/transform/project/isPossibleProgramFileName.mjs.map +1 -1
  144. package/lib/core/transform/session/sharedCompileIdentity.d.cts +8 -5
  145. package/lib/core/transform/session/sharedCompileIdentity.d.mts +8 -5
  146. package/lib/core/transform/session/sharedCompileIdentity.d.ts +8 -5
  147. package/lib/core/transform/session/sharedCompileIdentity.js +8 -5
  148. package/lib/core/transform/session/sharedCompileIdentity.js.map +1 -1
  149. package/lib/core/transform/session/sharedCompileIdentity.mjs +8 -5
  150. package/lib/core/transform/session/sharedCompileIdentity.mjs.map +1 -1
  151. package/lib/core/transform/transformTtsc.js +18 -0
  152. package/lib/core/transform/transformTtsc.js.map +1 -1
  153. package/lib/core/transform/transformTtsc.mjs +18 -0
  154. package/lib/core/transform/transformTtsc.mjs.map +1 -1
  155. package/lib/core/transform/tsconfig/TtscCompilerArgumentsWitness.d.cts +19 -0
  156. package/lib/core/transform/tsconfig/TtscCompilerArgumentsWitness.d.mts +19 -0
  157. package/lib/core/transform/tsconfig/TtscCompilerArgumentsWitness.d.ts +19 -0
  158. package/lib/core/transform/tsconfig/captureCompilerArguments.d.cts +14 -0
  159. package/lib/core/transform/tsconfig/captureCompilerArguments.d.mts +14 -0
  160. package/lib/core/transform/tsconfig/captureCompilerArguments.d.ts +14 -0
  161. package/lib/core/transform/tsconfig/captureCompilerArguments.js +26 -0
  162. package/lib/core/transform/tsconfig/captureCompilerArguments.js.map +1 -0
  163. package/lib/core/transform/tsconfig/captureCompilerArguments.mjs +24 -0
  164. package/lib/core/transform/tsconfig/captureCompilerArguments.mjs.map +1 -0
  165. package/lib/core/transform/tsconfig/compilerEnvironmentIdentity.d.cts +13 -0
  166. package/lib/core/transform/tsconfig/compilerEnvironmentIdentity.d.mts +13 -0
  167. package/lib/core/transform/tsconfig/compilerEnvironmentIdentity.d.ts +13 -0
  168. package/lib/core/transform/tsconfig/compilerEnvironmentIdentity.js +23 -0
  169. package/lib/core/transform/tsconfig/compilerEnvironmentIdentity.js.map +1 -0
  170. package/lib/core/transform/tsconfig/compilerEnvironmentIdentity.mjs +21 -0
  171. package/lib/core/transform/tsconfig/compilerEnvironmentIdentity.mjs.map +1 -0
  172. package/lib/core/transform/tsconfig/resolveCompilerEnvironment.d.cts +17 -0
  173. package/lib/core/transform/tsconfig/resolveCompilerEnvironment.d.mts +17 -0
  174. package/lib/core/transform/tsconfig/resolveCompilerEnvironment.d.ts +17 -0
  175. package/lib/core/transform/tsconfig/resolveCompilerEnvironment.js +57 -0
  176. package/lib/core/transform/tsconfig/resolveCompilerEnvironment.js.map +1 -0
  177. package/lib/core/transform/tsconfig/resolveCompilerEnvironment.mjs +55 -0
  178. package/lib/core/transform/tsconfig/resolveCompilerEnvironment.mjs.map +1 -0
  179. package/lib/core/transform/tsconfig/transformScratchEnvironment.d.cts +6 -6
  180. package/lib/core/transform/tsconfig/transformScratchEnvironment.d.mts +6 -6
  181. package/lib/core/transform/tsconfig/transformScratchEnvironment.d.ts +6 -6
  182. package/lib/core/transform/tsconfig/transformScratchEnvironment.js +7 -7
  183. package/lib/core/transform/tsconfig/transformScratchEnvironment.js.map +1 -1
  184. package/lib/core/transform/tsconfig/transformScratchEnvironment.mjs +7 -7
  185. package/lib/core/transform/tsconfig/transformScratchEnvironment.mjs.map +1 -1
  186. package/lib/core/transform/watch/notifyProjectRecord.js +3 -0
  187. package/lib/core/transform/watch/notifyProjectRecord.js.map +1 -1
  188. package/lib/core/transform/watch/notifyProjectRecord.mjs +3 -0
  189. package/lib/core/transform/watch/notifyProjectRecord.mjs.map +1 -1
  190. package/lib/core/tsconfig/ITtscProjectMembershipPolicy.d.cts +14 -1
  191. package/lib/core/tsconfig/ITtscProjectMembershipPolicy.d.mts +14 -1
  192. package/lib/core/tsconfig/ITtscProjectMembershipPolicy.d.ts +14 -1
  193. package/lib/core/tsconfig/mergeMembershipPolicyOverlay.d.cts +4 -3
  194. package/lib/core/tsconfig/mergeMembershipPolicyOverlay.d.mts +4 -3
  195. package/lib/core/tsconfig/mergeMembershipPolicyOverlay.d.ts +4 -3
  196. package/lib/core/tsconfig/mergeMembershipPolicyOverlay.js +36 -6
  197. package/lib/core/tsconfig/mergeMembershipPolicyOverlay.js.map +1 -1
  198. package/lib/core/tsconfig/mergeMembershipPolicyOverlay.mjs +36 -6
  199. package/lib/core/tsconfig/mergeMembershipPolicyOverlay.mjs.map +1 -1
  200. package/lib/core/tsconfig/readProjectMembershipPolicy.d.cts +3 -2
  201. package/lib/core/tsconfig/readProjectMembershipPolicy.d.mts +3 -2
  202. package/lib/core/tsconfig/readProjectMembershipPolicy.d.ts +3 -2
  203. package/lib/core/tsconfig/readProjectMembershipPolicy.js +49 -15
  204. package/lib/core/tsconfig/readProjectMembershipPolicy.js.map +1 -1
  205. package/lib/core/tsconfig/readProjectMembershipPolicy.mjs +49 -15
  206. package/lib/core/tsconfig/readProjectMembershipPolicy.mjs.map +1 -1
  207. package/lib/core/tsconfig/resolveMembershipInputExtensions.d.cts +16 -0
  208. package/lib/core/tsconfig/resolveMembershipInputExtensions.d.mts +16 -0
  209. package/lib/core/tsconfig/resolveMembershipInputExtensions.d.ts +16 -0
  210. package/lib/core/tsconfig/resolveMembershipInputExtensions.js +45 -0
  211. package/lib/core/tsconfig/resolveMembershipInputExtensions.js.map +1 -0
  212. package/lib/core/tsconfig/resolveMembershipInputExtensions.mjs +43 -0
  213. package/lib/core/tsconfig/resolveMembershipInputExtensions.mjs.map +1 -0
  214. package/lib/core/turbopack/turbopack.d.cts +2 -2
  215. package/lib/core/turbopack/turbopack.d.mts +2 -2
  216. package/lib/core/turbopack/turbopack.d.ts +2 -2
  217. package/lib/core/turbopack/turbopack.js +15 -7
  218. package/lib/core/turbopack/turbopack.js.map +1 -1
  219. package/lib/core/turbopack/turbopack.mjs +15 -7
  220. package/lib/core/turbopack/turbopack.mjs.map +1 -1
  221. package/lib/core/unplugin.js +21 -8
  222. package/lib/core/unplugin.js.map +1 -1
  223. package/lib/core/unplugin.mjs +21 -8
  224. package/lib/core/unplugin.mjs.map +1 -1
  225. package/package.json +3 -3
  226. package/src/core/bridge/TtscProjectRecord.ts +4 -1
  227. package/src/core/bridge/projectRecordArgumentsMatch.ts +37 -0
  228. package/src/core/bridge/projectRecordMoved.ts +17 -11
  229. package/src/core/bridge/readProjectRecordFile.ts +39 -3
  230. package/src/core/bridge/refreshProjectRecordFile.ts +9 -2
  231. package/src/core/bridge/refreshProjectRecordFiles.ts +7 -1
  232. package/src/core/index.ts +2 -0
  233. package/src/core/next/next.ts +18 -2
  234. package/src/core/options/ResolvedTtscUnpluginOptions.ts +3 -0
  235. package/src/core/options/TtscUnpluginOptions.ts +9 -0
  236. package/src/core/options/resolveOptions.ts +5 -3
  237. package/src/core/rollup/rollupDeliveryOptions.ts +9 -5
  238. package/src/core/transform/cache/TRANSFORM_CACHE_MEMBERSHIP_POLICIES.ts +14 -0
  239. package/src/core/transform/cache/TtscCachedProjectTransform.ts +7 -0
  240. package/src/core/transform/cache/createTransformCacheKey.ts +13 -8
  241. package/src/core/transform/generation/TtscCompilerMembershipHint.ts +24 -0
  242. package/src/core/transform/generation/applyCompilerMembership.ts +44 -0
  243. package/src/core/transform/generation/captureTransformGeneration.ts +43 -10
  244. package/src/core/transform/generation/onlyLearnedCompileFacts.ts +7 -5
  245. package/src/core/transform/generation/primeCompilerMembership.ts +39 -0
  246. package/src/core/transform/generation/selectReportedMembershipPolicy.ts +59 -13
  247. package/src/core/transform/generation/transformProject.ts +12 -0
  248. package/src/core/transform/project/isPossibleProgramFileName.ts +28 -15
  249. package/src/core/transform/session/sharedCompileIdentity.ts +10 -5
  250. package/src/core/transform/transformTtsc.ts +21 -0
  251. package/src/core/transform/tsconfig/TtscCompilerArgumentsWitness.ts +19 -0
  252. package/src/core/transform/tsconfig/captureCompilerArguments.ts +25 -0
  253. package/src/core/transform/tsconfig/compilerEnvironmentIdentity.ts +20 -0
  254. package/src/core/transform/tsconfig/resolveCompilerEnvironment.ts +61 -0
  255. package/src/core/transform/tsconfig/transformScratchEnvironment.ts +7 -6
  256. package/src/core/transform/watch/notifyProjectRecord.ts +3 -0
  257. package/src/core/tsconfig/ITtscProjectMembershipPolicy.ts +15 -1
  258. package/src/core/tsconfig/mergeMembershipPolicyOverlay.ts +31 -6
  259. package/src/core/tsconfig/readProjectMembershipPolicy.ts +61 -17
  260. package/src/core/tsconfig/resolveMembershipInputExtensions.ts +45 -0
  261. package/src/core/turbopack/turbopack.ts +27 -7
  262. package/src/core/unplugin.ts +34 -9
@@ -4,6 +4,7 @@ var JAVASCRIPT_INPUT_EXTENSIONS = require('./JAVASCRIPT_INPUT_EXTENSIONS.js');
4
4
  var OUTPUT_DIRECTORY_OPTIONS = require('./OUTPUT_DIRECTORY_OPTIONS.js');
5
5
  var flattenDirectoryExclusionOrigins = require('./flattenDirectoryExclusionOrigins.js');
6
6
  var resolveConfigDirTemplatePath = require('./resolveConfigDirTemplatePath.js');
7
+ var resolveMembershipInputExtensions = require('./resolveMembershipInputExtensions.js');
7
8
 
8
9
  /**
9
10
  * Apply the caller's compiler-options overlay on top of a policy read from the
@@ -15,9 +16,10 @@ var resolveConfigDirTemplatePath = require('./resolveConfigDirTemplatePath.js');
15
16
  * turns it off gets the narrower rule for the same reason.
16
17
  *
17
18
  * @evidence contracts/common.md#principled-implementation
18
- * Explicit boolean overlays update extension admission and output path
19
- * overlays update their own exclusion provenance. Null removes an output
20
- * directory; missing legacy provenance preserves explicit exclusions.
19
+ * Extension option provenance preserves explicit false and null clearing
20
+ * while recomputing implicit JavaScript and JSON defaults. Mapper suffixes
21
+ * remain independent. Output paths update their own exclusion provenance;
22
+ * missing legacy provenance preserves authored extension/exclusion lists.
21
23
  *
22
24
  * @evidence contracts/common.md#clear-and-simple-design
23
25
  * The operation clones extension and exclusion state rather than mutating
@@ -63,8 +65,33 @@ function mergeMembershipPolicyOverlay(policy, compilerOptions, baseDir) {
63
65
  }
64
66
  }
65
67
  };
66
- applyFlag("allowJs", JAVASCRIPT_INPUT_EXTENSIONS.JAVASCRIPT_INPUT_EXTENSIONS);
67
- applyFlag("resolveJsonModule", [".json"]);
68
+ const extensionOptionOrigins = policy.extensionOptionOrigins === undefined
69
+ ? undefined
70
+ : { ...policy.extensionOptionOrigins };
71
+ if (extensionOptionOrigins === undefined) {
72
+ applyFlag("allowJs", JAVASCRIPT_INPUT_EXTENSIONS.JAVASCRIPT_INPUT_EXTENSIONS);
73
+ applyFlag("resolveJsonModule", [".json"]);
74
+ }
75
+ else {
76
+ for (const key of ["allowJs", "checkJs", "resolveJsonModule"]) {
77
+ if (!Object.hasOwn(compilerOptions, key))
78
+ continue;
79
+ const value = compilerOptions[key];
80
+ if (value === null)
81
+ delete extensionOptionOrigins[key];
82
+ else if (typeof value === "boolean")
83
+ extensionOptionOrigins[key] = value;
84
+ }
85
+ for (const key of ["module", "moduleResolution"]) {
86
+ if (!Object.hasOwn(compilerOptions, key))
87
+ continue;
88
+ const value = compilerOptions[key];
89
+ if (value === null)
90
+ delete extensionOptionOrigins[key];
91
+ else if (typeof value === "string")
92
+ extensionOptionOrigins[key] = value;
93
+ }
94
+ }
68
95
  const inheritedOrigins = policy.directoryExclusionOrigins;
69
96
  const directoryExclusionOrigins = {
70
97
  declarationDir: inheritedOrigins?.declarationDir,
@@ -85,7 +112,10 @@ function mergeMembershipPolicyOverlay(policy, compilerOptions, baseDir) {
85
112
  rootFileSpecs: policy.rootFileSpecs,
86
113
  directoryExclusionOrigins,
87
114
  excludedDirectories: flattenDirectoryExclusionOrigins.flattenDirectoryExclusionOrigins(directoryExclusionOrigins),
88
- inputExtensions: [...inputExtensions],
115
+ extensionOptionOrigins,
116
+ inputExtensions: extensionOptionOrigins === undefined
117
+ ? [...inputExtensions]
118
+ : resolveMembershipInputExtensions.resolveMembershipInputExtensions(extensionOptionOrigins),
89
119
  sources: policy.sources,
90
120
  useCaseSensitiveFileNames: policy.useCaseSensitiveFileNames,
91
121
  };
@@ -1 +1 @@
1
- {"version":3,"file":"mergeMembershipPolicyOverlay.js","sources":["../../../src/core/tsconfig/mergeMembershipPolicyOverlay.ts"],"sourcesContent":[null],"names":["JAVASCRIPT_INPUT_EXTENSIONS","OUTPUT_DIRECTORY_OPTIONS","resolveConfigDirTemplatePath","flattenDirectoryExclusionOrigins"],"mappings":";;;;;;;AAMA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCG;SACa,4BAA4B,CAC1C,MAAoC,EACpC,eAAwC,EACxC,OAAe,EAAA;IAEf,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC;AACvD,IAAA,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,UAA6B,KAAU;AACrE,QAAA,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC;AAClC,QAAA,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;YAC9B;QACF;AACA,QAAA,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;YAClC,IAAI,KAAK,EAAE;AACT,gBAAA,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC;YAChC;iBAAO;AACL,gBAAA,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC;YACnC;QACF;AACF,IAAA,CAAC;AACD,IAAA,SAAS,CAAC,SAAS,EAAEA,uDAA2B,CAAC;AACjD,IAAA,SAAS,CAAC,mBAAmB,EAAE,CAAC,OAAO,CAAC,CAAC;AAEzC,IAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,yBAAyB;AACzD,IAAA,MAAM,yBAAyB,GAK3B;QACF,cAAc,EAAE,gBAAgB,EAAE,cAAc;AAChD,QAAA,OAAO,EAAE,CAAC,IAAI,gBAAgB,EAAE,OAAO,IAAI,MAAM,CAAC,mBAAmB,CAAC,CAAC;QACvE,MAAM,EAAE,gBAAgB,EAAE,MAAM;AAChC,QAAA,2BAA2B,EACzB,gBAAgB,EAAE,2BAA2B,IAAI,IAAI;KACxD;AACD,IAAA,KAAK,MAAM,GAAG,IAAIC,iDAAwB,EAAE;AAC1C,QAAA,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC;AAClC,QAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAClB,YAAA,OAAO,yBAAyB,CAAC,GAAG,CAAC;QACvC;AAAO,aAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YACpC,yBAAyB,CAAC,GAAG,CAAC,GAAGC,yDAA4B,CAC3D,OAAO,EACP,KAAK,CACN;QACH;IACF;IACA,OAAO;QACL,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,yBAAyB;AACzB,QAAA,mBAAmB,EAAEC,iEAAgC,CACnD,yBAAyB,CAC1B;AACD,QAAA,eAAe,EAAE,CAAC,GAAG,eAAe,CAAC;QACrC,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,yBAAyB,EAAE,MAAM,CAAC,yBAAyB;KAC5D;AACH;;;;"}
1
+ {"version":3,"file":"mergeMembershipPolicyOverlay.js","sources":["../../../src/core/tsconfig/mergeMembershipPolicyOverlay.ts"],"sourcesContent":[null],"names":["JAVASCRIPT_INPUT_EXTENSIONS","OUTPUT_DIRECTORY_OPTIONS","resolveConfigDirTemplatePath","flattenDirectoryExclusionOrigins","resolveMembershipInputExtensions"],"mappings":"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"}
@@ -2,6 +2,7 @@ import { JAVASCRIPT_INPUT_EXTENSIONS } from './JAVASCRIPT_INPUT_EXTENSIONS.mjs';
2
2
  import { OUTPUT_DIRECTORY_OPTIONS } from './OUTPUT_DIRECTORY_OPTIONS.mjs';
3
3
  import { flattenDirectoryExclusionOrigins } from './flattenDirectoryExclusionOrigins.mjs';
4
4
  import { resolveConfigDirTemplatePath } from './resolveConfigDirTemplatePath.mjs';
5
+ import { resolveMembershipInputExtensions } from './resolveMembershipInputExtensions.mjs';
5
6
 
6
7
  /**
7
8
  * Apply the caller's compiler-options overlay on top of a policy read from the
@@ -13,9 +14,10 @@ import { resolveConfigDirTemplatePath } from './resolveConfigDirTemplatePath.mjs
13
14
  * turns it off gets the narrower rule for the same reason.
14
15
  *
15
16
  * @evidence contracts/common.md#principled-implementation
16
- * Explicit boolean overlays update extension admission and output path
17
- * overlays update their own exclusion provenance. Null removes an output
18
- * directory; missing legacy provenance preserves explicit exclusions.
17
+ * Extension option provenance preserves explicit false and null clearing
18
+ * while recomputing implicit JavaScript and JSON defaults. Mapper suffixes
19
+ * remain independent. Output paths update their own exclusion provenance;
20
+ * missing legacy provenance preserves authored extension/exclusion lists.
19
21
  *
20
22
  * @evidence contracts/common.md#clear-and-simple-design
21
23
  * The operation clones extension and exclusion state rather than mutating
@@ -61,8 +63,33 @@ function mergeMembershipPolicyOverlay(policy, compilerOptions, baseDir) {
61
63
  }
62
64
  }
63
65
  };
64
- applyFlag("allowJs", JAVASCRIPT_INPUT_EXTENSIONS);
65
- applyFlag("resolveJsonModule", [".json"]);
66
+ const extensionOptionOrigins = policy.extensionOptionOrigins === undefined
67
+ ? undefined
68
+ : { ...policy.extensionOptionOrigins };
69
+ if (extensionOptionOrigins === undefined) {
70
+ applyFlag("allowJs", JAVASCRIPT_INPUT_EXTENSIONS);
71
+ applyFlag("resolveJsonModule", [".json"]);
72
+ }
73
+ else {
74
+ for (const key of ["allowJs", "checkJs", "resolveJsonModule"]) {
75
+ if (!Object.hasOwn(compilerOptions, key))
76
+ continue;
77
+ const value = compilerOptions[key];
78
+ if (value === null)
79
+ delete extensionOptionOrigins[key];
80
+ else if (typeof value === "boolean")
81
+ extensionOptionOrigins[key] = value;
82
+ }
83
+ for (const key of ["module", "moduleResolution"]) {
84
+ if (!Object.hasOwn(compilerOptions, key))
85
+ continue;
86
+ const value = compilerOptions[key];
87
+ if (value === null)
88
+ delete extensionOptionOrigins[key];
89
+ else if (typeof value === "string")
90
+ extensionOptionOrigins[key] = value;
91
+ }
92
+ }
66
93
  const inheritedOrigins = policy.directoryExclusionOrigins;
67
94
  const directoryExclusionOrigins = {
68
95
  declarationDir: inheritedOrigins?.declarationDir,
@@ -83,7 +110,10 @@ function mergeMembershipPolicyOverlay(policy, compilerOptions, baseDir) {
83
110
  rootFileSpecs: policy.rootFileSpecs,
84
111
  directoryExclusionOrigins,
85
112
  excludedDirectories: flattenDirectoryExclusionOrigins(directoryExclusionOrigins),
86
- inputExtensions: [...inputExtensions],
113
+ extensionOptionOrigins,
114
+ inputExtensions: extensionOptionOrigins === undefined
115
+ ? [...inputExtensions]
116
+ : resolveMembershipInputExtensions(extensionOptionOrigins),
87
117
  sources: policy.sources,
88
118
  useCaseSensitiveFileNames: policy.useCaseSensitiveFileNames,
89
119
  };
@@ -1 +1 @@
1
- {"version":3,"file":"mergeMembershipPolicyOverlay.mjs","sources":["../../../src/core/tsconfig/mergeMembershipPolicyOverlay.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAMA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCG;SACa,4BAA4B,CAC1C,MAAoC,EACpC,eAAwC,EACxC,OAAe,EAAA;IAEf,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC;AACvD,IAAA,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,UAA6B,KAAU;AACrE,QAAA,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC;AAClC,QAAA,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;YAC9B;QACF;AACA,QAAA,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;YAClC,IAAI,KAAK,EAAE;AACT,gBAAA,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC;YAChC;iBAAO;AACL,gBAAA,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC;YACnC;QACF;AACF,IAAA,CAAC;AACD,IAAA,SAAS,CAAC,SAAS,EAAE,2BAA2B,CAAC;AACjD,IAAA,SAAS,CAAC,mBAAmB,EAAE,CAAC,OAAO,CAAC,CAAC;AAEzC,IAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,yBAAyB;AACzD,IAAA,MAAM,yBAAyB,GAK3B;QACF,cAAc,EAAE,gBAAgB,EAAE,cAAc;AAChD,QAAA,OAAO,EAAE,CAAC,IAAI,gBAAgB,EAAE,OAAO,IAAI,MAAM,CAAC,mBAAmB,CAAC,CAAC;QACvE,MAAM,EAAE,gBAAgB,EAAE,MAAM;AAChC,QAAA,2BAA2B,EACzB,gBAAgB,EAAE,2BAA2B,IAAI,IAAI;KACxD;AACD,IAAA,KAAK,MAAM,GAAG,IAAI,wBAAwB,EAAE;AAC1C,QAAA,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC;AAClC,QAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAClB,YAAA,OAAO,yBAAyB,CAAC,GAAG,CAAC;QACvC;AAAO,aAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YACpC,yBAAyB,CAAC,GAAG,CAAC,GAAG,4BAA4B,CAC3D,OAAO,EACP,KAAK,CACN;QACH;IACF;IACA,OAAO;QACL,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,yBAAyB;AACzB,QAAA,mBAAmB,EAAE,gCAAgC,CACnD,yBAAyB,CAC1B;AACD,QAAA,eAAe,EAAE,CAAC,GAAG,eAAe,CAAC;QACrC,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,yBAAyB,EAAE,MAAM,CAAC,yBAAyB;KAC5D;AACH;;;;"}
1
+ {"version":3,"file":"mergeMembershipPolicyOverlay.mjs","sources":["../../../src/core/tsconfig/mergeMembershipPolicyOverlay.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -10,7 +10,8 @@ import type { ITtscProjectMembershipPolicy } from "./ITtscProjectMembershipPolic
10
10
  * root matcher still applies extension, package and hidden-path admission; this
11
11
  * policy does not enumerate every dependency in the compiler program.
12
12
  *
13
- * `allowJs` and `resolveJsonModule` extend root-discovery suffixes, not the
13
+ * `allowJs` (implicitly enabled by `checkJs`), effective `resolveJsonModule`
14
+ * and literal content mapper extensions prime root-discovery suffixes, not the
14
15
  * complete set of imported or externally observed program inputs. `outDir`,
15
16
  * `declarationDir`, and plain `exclude` entries supply conservative directory
16
17
  * exclusions for that discovery walk. TypeScript supplies the two output
@@ -33,7 +34,7 @@ import type { ITtscProjectMembershipPolicy } from "./ITtscProjectMembershipPolic
33
34
  *
34
35
  * @evidence contracts/common.md#clear-and-simple-design
35
36
  * Shared declaration readers own inheritance; this operation assembles one
36
- * policy and keeps exclusion provenance so overlays can change output defaults.
37
+ * policy and keeps extension and exclusion provenance so overlays can recompute defaults. Own null options clear inherited declarations before default resolution.
37
38
  *
38
39
  * @evidence contracts/portability.md#os-neutral-implementation
39
40
  * Node native paths anchor config-derived patterns; regular and native
@@ -10,7 +10,8 @@ import type { ITtscProjectMembershipPolicy } from "./ITtscProjectMembershipPolic
10
10
  * root matcher still applies extension, package and hidden-path admission; this
11
11
  * policy does not enumerate every dependency in the compiler program.
12
12
  *
13
- * `allowJs` and `resolveJsonModule` extend root-discovery suffixes, not the
13
+ * `allowJs` (implicitly enabled by `checkJs`), effective `resolveJsonModule`
14
+ * and literal content mapper extensions prime root-discovery suffixes, not the
14
15
  * complete set of imported or externally observed program inputs. `outDir`,
15
16
  * `declarationDir`, and plain `exclude` entries supply conservative directory
16
17
  * exclusions for that discovery walk. TypeScript supplies the two output
@@ -33,7 +34,7 @@ import type { ITtscProjectMembershipPolicy } from "./ITtscProjectMembershipPolic
33
34
  *
34
35
  * @evidence contracts/common.md#clear-and-simple-design
35
36
  * Shared declaration readers own inheritance; this operation assembles one
36
- * policy and keeps exclusion provenance so overlays can change output defaults.
37
+ * policy and keeps extension and exclusion provenance so overlays can recompute defaults. Own null options clear inherited declarations before default resolution.
37
38
  *
38
39
  * @evidence contracts/portability.md#os-neutral-implementation
39
40
  * Node native paths anchor config-derived patterns; regular and native
@@ -10,7 +10,8 @@ import type { ITtscProjectMembershipPolicy } from "./ITtscProjectMembershipPolic
10
10
  * root matcher still applies extension, package and hidden-path admission; this
11
11
  * policy does not enumerate every dependency in the compiler program.
12
12
  *
13
- * `allowJs` and `resolveJsonModule` extend root-discovery suffixes, not the
13
+ * `allowJs` (implicitly enabled by `checkJs`), effective `resolveJsonModule`
14
+ * and literal content mapper extensions prime root-discovery suffixes, not the
14
15
  * complete set of imported or externally observed program inputs. `outDir`,
15
16
  * `declarationDir`, and plain `exclude` entries supply conservative directory
16
17
  * exclusions for that discovery walk. TypeScript supplies the two output
@@ -33,7 +34,7 @@ import type { ITtscProjectMembershipPolicy } from "./ITtscProjectMembershipPolic
33
34
  *
34
35
  * @evidence contracts/common.md#clear-and-simple-design
35
36
  * Shared declaration readers own inheritance; this operation assembles one
36
- * policy and keeps exclusion provenance so overlays can change output defaults.
37
+ * policy and keeps extension and exclusion provenance so overlays can recompute defaults. Own null options clear inherited declarations before default resolution.
37
38
  *
38
39
  * @evidence contracts/portability.md#os-neutral-implementation
39
40
  * Node native paths anchor config-derived patterns; regular and native
@@ -1,8 +1,6 @@
1
1
  'use strict';
2
2
 
3
3
  var path = require('node:path');
4
- var TYPESCRIPT_TRANSFORM_EXTENSIONS = require('../source/TYPESCRIPT_TRANSFORM_EXTENSIONS.js');
5
- var JAVASCRIPT_INPUT_EXTENSIONS = require('./JAVASCRIPT_INPUT_EXTENSIONS.js');
6
4
  var OUTPUT_DIRECTORY_OPTIONS = require('./OUTPUT_DIRECTORY_OPTIONS.js');
7
5
  var TsconfigReadTransaction = require('./TsconfigReadTransaction.js');
8
6
  var absolutizePathsTarget = require('./absolutizePathsTarget.js');
@@ -11,6 +9,7 @@ var findDeclaredValue = require('./findDeclaredValue.js');
11
9
  var flattenDirectoryExclusionOrigins = require('./flattenDirectoryExclusionOrigins.js');
12
10
  var normalizeTypeScriptPathSeparators = require('./normalizeTypeScriptPathSeparators.js');
13
11
  var resolveConfigDirTemplatePath = require('./resolveConfigDirTemplatePath.js');
12
+ var resolveMembershipInputExtensions = require('./resolveMembershipInputExtensions.js');
14
13
  var resolveNativeRootPath = require('./resolveNativeRootPath.js');
15
14
  var resolveRealPath = require('./resolveRealPath.js');
16
15
 
@@ -27,7 +26,8 @@ const DEFAULT_INCLUDE_SPEC = "**/*";
27
26
  * root matcher still applies extension, package and hidden-path admission; this
28
27
  * policy does not enumerate every dependency in the compiler program.
29
28
  *
30
- * `allowJs` and `resolveJsonModule` extend root-discovery suffixes, not the
29
+ * `allowJs` (implicitly enabled by `checkJs`), effective `resolveJsonModule`
30
+ * and literal content mapper extensions prime root-discovery suffixes, not the
31
31
  * complete set of imported or externally observed program inputs. `outDir`,
32
32
  * `declarationDir`, and plain `exclude` entries supply conservative directory
33
33
  * exclusions for that discovery walk. TypeScript supplies the two output
@@ -50,7 +50,7 @@ const DEFAULT_INCLUDE_SPEC = "**/*";
50
50
  *
51
51
  * @evidence contracts/common.md#clear-and-simple-design
52
52
  * Shared declaration readers own inheritance; this operation assembles one
53
- * policy and keeps exclusion provenance so overlays can change output defaults.
53
+ * policy and keeps extension and exclusion provenance so overlays can recompute defaults. Own null options clear inherited declarations before default resolution.
54
54
  *
55
55
  * @evidence contracts/portability.md#os-neutral-implementation
56
56
  * Node native paths anchor config-derived patterns; regular and native
@@ -107,17 +107,42 @@ function readProjectMembershipPolicy(tsconfig) {
107
107
  nativepath: resolveNativeRootPath.resolveNativeRootPath(configDir),
108
108
  },
109
109
  };
110
- const flag = (key) => findDeclaredValue.findDeclaredValue(resolved, (parsed) => {
111
- const value = parsed
112
- .compilerOptions?.[key];
110
+ const option = (key) => findDeclaredValue.findDeclaredValue(resolved, (parsed) => {
111
+ const options = parsed.compilerOptions;
112
+ // Boxing null stops inheritance: upstream clears the inherited value.
113
+ return options !== null &&
114
+ typeof options === "object" &&
115
+ Object.hasOwn(options, key)
116
+ ? { value: options[key] }
117
+ : undefined;
118
+ }, new Set(), sources, configs)?.value.value;
119
+ const booleanOption = (key) => {
120
+ const value = option(key);
113
121
  return typeof value === "boolean" ? value : undefined;
114
- }, new Set(), sources, configs)?.value === true;
115
- const inputExtensions = [...TYPESCRIPT_TRANSFORM_EXTENSIONS.TYPESCRIPT_TRANSFORM_EXTENSIONS];
116
- if (flag("allowJs")) {
117
- inputExtensions.push(...JAVASCRIPT_INPUT_EXTENSIONS.JAVASCRIPT_INPUT_EXTENSIONS);
118
- }
119
- if (flag("resolveJsonModule")) {
120
- inputExtensions.push(".json");
122
+ };
123
+ const stringOption = (key) => {
124
+ const value = option(key);
125
+ return typeof value === "string" ? value : undefined;
126
+ };
127
+ const extensions = new Set();
128
+ const mappers = findDeclaredValue.findDeclaredValue(resolved, (parsed) => {
129
+ if (!Object.prototype.hasOwnProperty.call(parsed, "contentMappers"))
130
+ return undefined;
131
+ const value = parsed.contentMappers;
132
+ return Array.isArray(value) ? value : [];
133
+ }, new Set(), sources, configs)?.value ?? [];
134
+ for (const mapper of mappers) {
135
+ const declaredExtensions = mapper !== null && typeof mapper === "object"
136
+ ? mapper.extensions
137
+ : undefined;
138
+ if (!Array.isArray(declaredExtensions))
139
+ continue;
140
+ for (const extension of declaredExtensions)
141
+ if (typeof extension === "string" &&
142
+ extension.length > 1 &&
143
+ extension.startsWith(".") &&
144
+ !/[\\/]/.test(extension))
145
+ extensions.add(extension);
121
146
  }
122
147
  const directoryExclusionOrigins = { exclude: [], useImplicitOutputExclusions: true };
123
148
  for (const key of OUTPUT_DIRECTORY_OPTIONS.OUTPUT_DIRECTORY_OPTIONS) {
@@ -166,11 +191,20 @@ function readProjectMembershipPolicy(tsconfig) {
166
191
  directoryExclusionOrigins.exclude.push(resolveConfigDirTemplatePath.resolveConfigDirTemplatePath(excludeList.baseDir, plain, path.dirname(resolved)));
167
192
  }
168
193
  }
194
+ const extensionOptionOrigins = {
195
+ allowJs: booleanOption("allowJs"),
196
+ checkJs: booleanOption("checkJs"),
197
+ resolveJsonModule: booleanOption("resolveJsonModule"),
198
+ module: stringOption("module"),
199
+ moduleResolution: stringOption("moduleResolution"),
200
+ mapperExtensions: [...extensions],
201
+ };
169
202
  return {
170
203
  rootFileSpecs,
171
204
  directoryExclusionOrigins,
172
205
  excludedDirectories: flattenDirectoryExclusionOrigins.flattenDirectoryExclusionOrigins(directoryExclusionOrigins),
173
- inputExtensions,
206
+ extensionOptionOrigins,
207
+ inputExtensions: resolveMembershipInputExtensions.resolveMembershipInputExtensions(extensionOptionOrigins),
174
208
  sources: [...sources],
175
209
  };
176
210
  }
@@ -1 +1 @@
1
- {"version":3,"file":"readProjectMembershipPolicy.js","sources":["../../../src/core/tsconfig/readProjectMembershipPolicy.ts"],"sourcesContent":[null],"names":["TsconfigReadTransaction","findDeclaredFileSpecs","absolutizePathsTarget","resolveRealPath","resolveNativeRootPath","findDeclaredValue","TYPESCRIPT_TRANSFORM_EXTENSIONS","JAVASCRIPT_INPUT_EXTENSIONS","OUTPUT_DIRECTORY_OPTIONS","resolveConfigDirTemplatePath","normalizeTypeScriptPathSeparators","flattenDirectoryExclusionOrigins"],"mappings":"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"}
1
+ {"version":3,"file":"readProjectMembershipPolicy.js","sources":["../../../src/core/tsconfig/readProjectMembershipPolicy.ts"],"sourcesContent":[null],"names":["TsconfigReadTransaction","findDeclaredFileSpecs","absolutizePathsTarget","resolveRealPath","resolveNativeRootPath","findDeclaredValue","OUTPUT_DIRECTORY_OPTIONS","resolveConfigDirTemplatePath","normalizeTypeScriptPathSeparators","flattenDirectoryExclusionOrigins","resolveMembershipInputExtensions"],"mappings":"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"}
@@ -1,6 +1,4 @@
1
1
  import path from 'node:path';
2
- import { TYPESCRIPT_TRANSFORM_EXTENSIONS } from '../source/TYPESCRIPT_TRANSFORM_EXTENSIONS.mjs';
3
- import { JAVASCRIPT_INPUT_EXTENSIONS } from './JAVASCRIPT_INPUT_EXTENSIONS.mjs';
4
2
  import { OUTPUT_DIRECTORY_OPTIONS } from './OUTPUT_DIRECTORY_OPTIONS.mjs';
5
3
  import { TsconfigReadTransaction } from './TsconfigReadTransaction.mjs';
6
4
  import { absolutizePathsTarget } from './absolutizePathsTarget.mjs';
@@ -9,6 +7,7 @@ import { findDeclaredValue } from './findDeclaredValue.mjs';
9
7
  import { flattenDirectoryExclusionOrigins } from './flattenDirectoryExclusionOrigins.mjs';
10
8
  import { normalizeTypeScriptPathSeparators } from './normalizeTypeScriptPathSeparators.mjs';
11
9
  import { resolveConfigDirTemplatePath } from './resolveConfigDirTemplatePath.mjs';
10
+ import { resolveMembershipInputExtensions } from './resolveMembershipInputExtensions.mjs';
12
11
  import { resolveNativeRootPath } from './resolveNativeRootPath.mjs';
13
12
  import { resolveRealPath } from './resolveRealPath.mjs';
14
13
 
@@ -25,7 +24,8 @@ const DEFAULT_INCLUDE_SPEC = "**/*";
25
24
  * root matcher still applies extension, package and hidden-path admission; this
26
25
  * policy does not enumerate every dependency in the compiler program.
27
26
  *
28
- * `allowJs` and `resolveJsonModule` extend root-discovery suffixes, not the
27
+ * `allowJs` (implicitly enabled by `checkJs`), effective `resolveJsonModule`
28
+ * and literal content mapper extensions prime root-discovery suffixes, not the
29
29
  * complete set of imported or externally observed program inputs. `outDir`,
30
30
  * `declarationDir`, and plain `exclude` entries supply conservative directory
31
31
  * exclusions for that discovery walk. TypeScript supplies the two output
@@ -48,7 +48,7 @@ const DEFAULT_INCLUDE_SPEC = "**/*";
48
48
  *
49
49
  * @evidence contracts/common.md#clear-and-simple-design
50
50
  * Shared declaration readers own inheritance; this operation assembles one
51
- * policy and keeps exclusion provenance so overlays can change output defaults.
51
+ * policy and keeps extension and exclusion provenance so overlays can recompute defaults. Own null options clear inherited declarations before default resolution.
52
52
  *
53
53
  * @evidence contracts/portability.md#os-neutral-implementation
54
54
  * Node native paths anchor config-derived patterns; regular and native
@@ -105,17 +105,42 @@ function readProjectMembershipPolicy(tsconfig) {
105
105
  nativepath: resolveNativeRootPath(configDir),
106
106
  },
107
107
  };
108
- const flag = (key) => findDeclaredValue(resolved, (parsed) => {
109
- const value = parsed
110
- .compilerOptions?.[key];
108
+ const option = (key) => findDeclaredValue(resolved, (parsed) => {
109
+ const options = parsed.compilerOptions;
110
+ // Boxing null stops inheritance: upstream clears the inherited value.
111
+ return options !== null &&
112
+ typeof options === "object" &&
113
+ Object.hasOwn(options, key)
114
+ ? { value: options[key] }
115
+ : undefined;
116
+ }, new Set(), sources, configs)?.value.value;
117
+ const booleanOption = (key) => {
118
+ const value = option(key);
111
119
  return typeof value === "boolean" ? value : undefined;
112
- }, new Set(), sources, configs)?.value === true;
113
- const inputExtensions = [...TYPESCRIPT_TRANSFORM_EXTENSIONS];
114
- if (flag("allowJs")) {
115
- inputExtensions.push(...JAVASCRIPT_INPUT_EXTENSIONS);
116
- }
117
- if (flag("resolveJsonModule")) {
118
- inputExtensions.push(".json");
120
+ };
121
+ const stringOption = (key) => {
122
+ const value = option(key);
123
+ return typeof value === "string" ? value : undefined;
124
+ };
125
+ const extensions = new Set();
126
+ const mappers = findDeclaredValue(resolved, (parsed) => {
127
+ if (!Object.prototype.hasOwnProperty.call(parsed, "contentMappers"))
128
+ return undefined;
129
+ const value = parsed.contentMappers;
130
+ return Array.isArray(value) ? value : [];
131
+ }, new Set(), sources, configs)?.value ?? [];
132
+ for (const mapper of mappers) {
133
+ const declaredExtensions = mapper !== null && typeof mapper === "object"
134
+ ? mapper.extensions
135
+ : undefined;
136
+ if (!Array.isArray(declaredExtensions))
137
+ continue;
138
+ for (const extension of declaredExtensions)
139
+ if (typeof extension === "string" &&
140
+ extension.length > 1 &&
141
+ extension.startsWith(".") &&
142
+ !/[\\/]/.test(extension))
143
+ extensions.add(extension);
119
144
  }
120
145
  const directoryExclusionOrigins = { exclude: [], useImplicitOutputExclusions: true };
121
146
  for (const key of OUTPUT_DIRECTORY_OPTIONS) {
@@ -164,11 +189,20 @@ function readProjectMembershipPolicy(tsconfig) {
164
189
  directoryExclusionOrigins.exclude.push(resolveConfigDirTemplatePath(excludeList.baseDir, plain, path.dirname(resolved)));
165
190
  }
166
191
  }
192
+ const extensionOptionOrigins = {
193
+ allowJs: booleanOption("allowJs"),
194
+ checkJs: booleanOption("checkJs"),
195
+ resolveJsonModule: booleanOption("resolveJsonModule"),
196
+ module: stringOption("module"),
197
+ moduleResolution: stringOption("moduleResolution"),
198
+ mapperExtensions: [...extensions],
199
+ };
167
200
  return {
168
201
  rootFileSpecs,
169
202
  directoryExclusionOrigins,
170
203
  excludedDirectories: flattenDirectoryExclusionOrigins(directoryExclusionOrigins),
171
- inputExtensions,
204
+ extensionOptionOrigins,
205
+ inputExtensions: resolveMembershipInputExtensions(extensionOptionOrigins),
172
206
  sources: [...sources],
173
207
  };
174
208
  }
@@ -1 +1 @@
1
- {"version":3,"file":"readProjectMembershipPolicy.mjs","sources":["../../../src/core/tsconfig/readProjectMembershipPolicy.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"readProjectMembershipPolicy.mjs","sources":["../../../src/core/tsconfig/readProjectMembershipPolicy.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { ITtscProjectMembershipPolicy } from "./ITtscProjectMembershipPolicy.cjs";
2
+ /**
3
+ * Prime suffix admission from explicit options and pinned TypeScript-Go
4
+ * defaults. Native membership reports still decide whether a primed walk was
5
+ * valid.
6
+ *
7
+ * @evidence contracts/common.md#principled-implementation Pinned 7.0 and 7.1 GetAllowJS, GetResolveJsonModule and GetModuleResolutionKind define these defaults: allowJs overrides checkJs; Node20/NodeNext enable implicit JSON; other modules use effective Bundler resolution unless Node16/18 or an explicit modern node resolution applies.
8
+ * @evidence contracts/common.md#clear-and-simple-design One pure resolver serves config inheritance and compiler-option overlays; declared mapper suffixes are unioned independently of built-in flags.
9
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts Constants describe upstream option semantics for supported targets, without consumer names or treating prediction as a native proof.
10
+ * @evidence contracts/common.md#meaningful-documentation Prose states the provisional role and native authority; the origins type documents missing options and mapper ownership.
11
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation Only compiler option labels and extension strings are interpreted; no filesystem path or process boundary is crossed.
12
+ * @evidence contracts/performance.md#efficient-algorithms Fixed option branches and one Set union cost O(mapper suffix count and text); output storage follows unique suffixes.
13
+ * @evidenceExclude contracts/performance.md#reuse-equivalent-work Resolves one supplied option value without coordinating requests or retaining a memo.
14
+ * @evidenceExclude contracts/performance.md#bound-retention-and-release-resources The returned array transfers to the caller; no handle or history is retained.
15
+ */
16
+ export declare function resolveMembershipInputExtensions(origins: NonNullable<ITtscProjectMembershipPolicy["extensionOptionOrigins"]>): string[];
@@ -0,0 +1,16 @@
1
+ import type { ITtscProjectMembershipPolicy } from "./ITtscProjectMembershipPolicy.mjs";
2
+ /**
3
+ * Prime suffix admission from explicit options and pinned TypeScript-Go
4
+ * defaults. Native membership reports still decide whether a primed walk was
5
+ * valid.
6
+ *
7
+ * @evidence contracts/common.md#principled-implementation Pinned 7.0 and 7.1 GetAllowJS, GetResolveJsonModule and GetModuleResolutionKind define these defaults: allowJs overrides checkJs; Node20/NodeNext enable implicit JSON; other modules use effective Bundler resolution unless Node16/18 or an explicit modern node resolution applies.
8
+ * @evidence contracts/common.md#clear-and-simple-design One pure resolver serves config inheritance and compiler-option overlays; declared mapper suffixes are unioned independently of built-in flags.
9
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts Constants describe upstream option semantics for supported targets, without consumer names or treating prediction as a native proof.
10
+ * @evidence contracts/common.md#meaningful-documentation Prose states the provisional role and native authority; the origins type documents missing options and mapper ownership.
11
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation Only compiler option labels and extension strings are interpreted; no filesystem path or process boundary is crossed.
12
+ * @evidence contracts/performance.md#efficient-algorithms Fixed option branches and one Set union cost O(mapper suffix count and text); output storage follows unique suffixes.
13
+ * @evidenceExclude contracts/performance.md#reuse-equivalent-work Resolves one supplied option value without coordinating requests or retaining a memo.
14
+ * @evidenceExclude contracts/performance.md#bound-retention-and-release-resources The returned array transfers to the caller; no handle or history is retained.
15
+ */
16
+ export declare function resolveMembershipInputExtensions(origins: NonNullable<ITtscProjectMembershipPolicy["extensionOptionOrigins"]>): string[];
@@ -0,0 +1,16 @@
1
+ import type { ITtscProjectMembershipPolicy } from "./ITtscProjectMembershipPolicy";
2
+ /**
3
+ * Prime suffix admission from explicit options and pinned TypeScript-Go
4
+ * defaults. Native membership reports still decide whether a primed walk was
5
+ * valid.
6
+ *
7
+ * @evidence contracts/common.md#principled-implementation Pinned 7.0 and 7.1 GetAllowJS, GetResolveJsonModule and GetModuleResolutionKind define these defaults: allowJs overrides checkJs; Node20/NodeNext enable implicit JSON; other modules use effective Bundler resolution unless Node16/18 or an explicit modern node resolution applies.
8
+ * @evidence contracts/common.md#clear-and-simple-design One pure resolver serves config inheritance and compiler-option overlays; declared mapper suffixes are unioned independently of built-in flags.
9
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts Constants describe upstream option semantics for supported targets, without consumer names or treating prediction as a native proof.
10
+ * @evidence contracts/common.md#meaningful-documentation Prose states the provisional role and native authority; the origins type documents missing options and mapper ownership.
11
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation Only compiler option labels and extension strings are interpreted; no filesystem path or process boundary is crossed.
12
+ * @evidence contracts/performance.md#efficient-algorithms Fixed option branches and one Set union cost O(mapper suffix count and text); output storage follows unique suffixes.
13
+ * @evidenceExclude contracts/performance.md#reuse-equivalent-work Resolves one supplied option value without coordinating requests or retaining a memo.
14
+ * @evidenceExclude contracts/performance.md#bound-retention-and-release-resources The returned array transfers to the caller; no handle or history is retained.
15
+ */
16
+ export declare function resolveMembershipInputExtensions(origins: NonNullable<ITtscProjectMembershipPolicy["extensionOptionOrigins"]>): string[];
@@ -0,0 +1,45 @@
1
+ 'use strict';
2
+
3
+ var TYPESCRIPT_TRANSFORM_EXTENSIONS = require('../source/TYPESCRIPT_TRANSFORM_EXTENSIONS.js');
4
+ var JAVASCRIPT_INPUT_EXTENSIONS = require('./JAVASCRIPT_INPUT_EXTENSIONS.js');
5
+
6
+ /**
7
+ * Prime suffix admission from explicit options and pinned TypeScript-Go
8
+ * defaults. Native membership reports still decide whether a primed walk was
9
+ * valid.
10
+ *
11
+ * @evidence contracts/common.md#principled-implementation Pinned 7.0 and 7.1 GetAllowJS, GetResolveJsonModule and GetModuleResolutionKind define these defaults: allowJs overrides checkJs; Node20/NodeNext enable implicit JSON; other modules use effective Bundler resolution unless Node16/18 or an explicit modern node resolution applies.
12
+ * @evidence contracts/common.md#clear-and-simple-design One pure resolver serves config inheritance and compiler-option overlays; declared mapper suffixes are unioned independently of built-in flags.
13
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts Constants describe upstream option semantics for supported targets, without consumer names or treating prediction as a native proof.
14
+ * @evidence contracts/common.md#meaningful-documentation Prose states the provisional role and native authority; the origins type documents missing options and mapper ownership.
15
+ * @evidenceExclude contracts/portability.md#os-neutral-implementation Only compiler option labels and extension strings are interpreted; no filesystem path or process boundary is crossed.
16
+ * @evidence contracts/performance.md#efficient-algorithms Fixed option branches and one Set union cost O(mapper suffix count and text); output storage follows unique suffixes.
17
+ * @evidenceExclude contracts/performance.md#reuse-equivalent-work Resolves one supplied option value without coordinating requests or retaining a memo.
18
+ * @evidenceExclude contracts/performance.md#bound-retention-and-release-resources The returned array transfers to the caller; no handle or history is retained.
19
+ */
20
+ function resolveMembershipInputExtensions(origins) {
21
+ const extensions = new Set(TYPESCRIPT_TRANSFORM_EXTENSIONS.TYPESCRIPT_TRANSFORM_EXTENSIONS);
22
+ if (origins.allowJs ?? origins.checkJs)
23
+ for (const extension of JAVASCRIPT_INPUT_EXTENSIONS.JAVASCRIPT_INPUT_EXTENSIONS)
24
+ extensions.add(extension);
25
+ const module = origins.module?.toLowerCase();
26
+ const resolution = origins.moduleResolution?.toLowerCase();
27
+ const modernResolution = resolution === "node16" ||
28
+ resolution === "nodenext" ||
29
+ resolution === "bundler";
30
+ const bundler = modernResolution
31
+ ? resolution === "bundler"
32
+ : module !== "node16" &&
33
+ module !== "node18" &&
34
+ module !== "node20" &&
35
+ module !== "nodenext";
36
+ if (origins.resolveJsonModule ??
37
+ (module === "node20" || module === "nodenext" || bundler))
38
+ extensions.add(".json");
39
+ for (const extension of origins.mapperExtensions)
40
+ extensions.add(extension);
41
+ return [...extensions];
42
+ }
43
+
44
+ exports.resolveMembershipInputExtensions = resolveMembershipInputExtensions;
45
+ //# sourceMappingURL=resolveMembershipInputExtensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveMembershipInputExtensions.js","sources":["../../../src/core/tsconfig/resolveMembershipInputExtensions.ts"],"sourcesContent":[null],"names":["TYPESCRIPT_TRANSFORM_EXTENSIONS","JAVASCRIPT_INPUT_EXTENSIONS"],"mappings":";;;;;AAIA;;;;;;;;;;;;;AAaG;AACG,SAAU,gCAAgC,CAC9C,OAA4E,EAAA;AAE5E,IAAA,MAAM,UAAU,GAAG,IAAI,GAAG,CAACA,+DAA+B,CAAC;AAC3D,IAAA,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO;QACpC,KAAK,MAAM,SAAS,IAAIC,uDAA2B;AACjD,YAAA,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;IAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE;IAC5C,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,EAAE,WAAW,EAAE;AAC1D,IAAA,MAAM,gBAAgB,GACpB,UAAU,KAAK,QAAQ;AACvB,QAAA,UAAU,KAAK,UAAU;QACzB,UAAU,KAAK,SAAS;IAC1B,MAAM,OAAO,GAAG;UACZ,UAAU,KAAK;UACf,MAAM,KAAK,QAAQ;AACnB,YAAA,MAAM,KAAK,QAAQ;AACnB,YAAA,MAAM,KAAK,QAAQ;YACnB,MAAM,KAAK,UAAU;IACzB,IACE,OAAO,CAAC,iBAAiB;SACxB,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,UAAU,IAAI,OAAO,CAAC;AAEzD,QAAA,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC;AACzB,IAAA,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,gBAAgB;AAAE,QAAA,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;AAC3E,IAAA,OAAO,CAAC,GAAG,UAAU,CAAC;AACxB;;;;"}