@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.
- package/README.md +1 -0
- package/lib/api.js +4 -0
- package/lib/api.js.map +1 -1
- package/lib/api.mjs +2 -0
- package/lib/api.mjs.map +1 -1
- package/lib/core/bridge/TtscProjectRecord.d.cts +4 -1
- package/lib/core/bridge/TtscProjectRecord.d.mts +4 -1
- package/lib/core/bridge/TtscProjectRecord.d.ts +4 -1
- package/lib/core/bridge/projectRecordArgumentsMatch.d.cts +18 -0
- package/lib/core/bridge/projectRecordArgumentsMatch.d.mts +18 -0
- package/lib/core/bridge/projectRecordArgumentsMatch.d.ts +18 -0
- package/lib/core/bridge/projectRecordArgumentsMatch.js +36 -0
- package/lib/core/bridge/projectRecordArgumentsMatch.js.map +1 -0
- package/lib/core/bridge/projectRecordArgumentsMatch.mjs +34 -0
- package/lib/core/bridge/projectRecordArgumentsMatch.mjs.map +1 -0
- package/lib/core/bridge/projectRecordMoved.d.cts +14 -12
- package/lib/core/bridge/projectRecordMoved.d.mts +14 -12
- package/lib/core/bridge/projectRecordMoved.d.ts +14 -12
- package/lib/core/bridge/projectRecordMoved.js +17 -12
- package/lib/core/bridge/projectRecordMoved.js.map +1 -1
- package/lib/core/bridge/projectRecordMoved.mjs +17 -12
- package/lib/core/bridge/projectRecordMoved.mjs.map +1 -1
- package/lib/core/bridge/readProjectRecordFile.d.cts +4 -3
- package/lib/core/bridge/readProjectRecordFile.d.mts +4 -3
- package/lib/core/bridge/readProjectRecordFile.d.ts +4 -3
- package/lib/core/bridge/readProjectRecordFile.js +26 -3
- package/lib/core/bridge/readProjectRecordFile.js.map +1 -1
- package/lib/core/bridge/readProjectRecordFile.mjs +26 -3
- package/lib/core/bridge/readProjectRecordFile.mjs.map +1 -1
- package/lib/core/bridge/refreshProjectRecordFile.d.cts +3 -2
- package/lib/core/bridge/refreshProjectRecordFile.d.mts +3 -2
- package/lib/core/bridge/refreshProjectRecordFile.d.ts +3 -2
- package/lib/core/bridge/refreshProjectRecordFile.js +9 -3
- package/lib/core/bridge/refreshProjectRecordFile.js.map +1 -1
- package/lib/core/bridge/refreshProjectRecordFile.mjs +9 -3
- package/lib/core/bridge/refreshProjectRecordFile.mjs.map +1 -1
- package/lib/core/bridge/refreshProjectRecordFiles.d.cts +1 -1
- package/lib/core/bridge/refreshProjectRecordFiles.d.mts +1 -1
- package/lib/core/bridge/refreshProjectRecordFiles.d.ts +1 -1
- package/lib/core/bridge/refreshProjectRecordFiles.js +2 -2
- package/lib/core/bridge/refreshProjectRecordFiles.js.map +1 -1
- package/lib/core/bridge/refreshProjectRecordFiles.mjs +2 -2
- package/lib/core/bridge/refreshProjectRecordFiles.mjs.map +1 -1
- package/lib/core/index.d.cts +2 -0
- package/lib/core/index.d.mts +2 -0
- package/lib/core/index.d.ts +2 -0
- package/lib/core/index.js +4 -0
- package/lib/core/index.js.map +1 -1
- package/lib/core/index.mjs +2 -0
- package/lib/core/index.mjs.map +1 -1
- package/lib/core/next/next.js +5 -2
- package/lib/core/next/next.js.map +1 -1
- package/lib/core/next/next.mjs +5 -2
- package/lib/core/next/next.mjs.map +1 -1
- package/lib/core/options/ResolvedTtscUnpluginOptions.d.cts +2 -0
- package/lib/core/options/ResolvedTtscUnpluginOptions.d.mts +2 -0
- package/lib/core/options/ResolvedTtscUnpluginOptions.d.ts +2 -0
- package/lib/core/options/TtscUnpluginOptions.d.cts +8 -0
- package/lib/core/options/TtscUnpluginOptions.d.mts +8 -0
- package/lib/core/options/TtscUnpluginOptions.d.ts +8 -0
- package/lib/core/options/resolveOptions.d.cts +4 -3
- package/lib/core/options/resolveOptions.d.mts +4 -3
- package/lib/core/options/resolveOptions.d.ts +4 -3
- package/lib/core/options/resolveOptions.js +5 -3
- package/lib/core/options/resolveOptions.js.map +1 -1
- package/lib/core/options/resolveOptions.mjs +5 -3
- package/lib/core/options/resolveOptions.mjs.map +1 -1
- package/lib/core/rollup/rollupDeliveryOptions.d.cts +6 -6
- package/lib/core/rollup/rollupDeliveryOptions.d.mts +6 -6
- package/lib/core/rollup/rollupDeliveryOptions.d.ts +6 -6
- package/lib/core/rollup/rollupDeliveryOptions.js +9 -6
- package/lib/core/rollup/rollupDeliveryOptions.js.map +1 -1
- package/lib/core/rollup/rollupDeliveryOptions.mjs +9 -6
- package/lib/core/rollup/rollupDeliveryOptions.mjs.map +1 -1
- package/lib/core/transform/cache/TRANSFORM_CACHE_MEMBERSHIP_POLICIES.d.cts +10 -0
- package/lib/core/transform/cache/TRANSFORM_CACHE_MEMBERSHIP_POLICIES.d.mts +10 -0
- package/lib/core/transform/cache/TRANSFORM_CACHE_MEMBERSHIP_POLICIES.d.ts +10 -0
- package/lib/core/transform/cache/TRANSFORM_CACHE_MEMBERSHIP_POLICIES.js +13 -0
- package/lib/core/transform/cache/TRANSFORM_CACHE_MEMBERSHIP_POLICIES.js.map +1 -0
- package/lib/core/transform/cache/TRANSFORM_CACHE_MEMBERSHIP_POLICIES.mjs +11 -0
- package/lib/core/transform/cache/TRANSFORM_CACHE_MEMBERSHIP_POLICIES.mjs.map +1 -0
- package/lib/core/transform/cache/TtscCachedProjectTransform.d.cts +6 -0
- package/lib/core/transform/cache/TtscCachedProjectTransform.d.mts +6 -0
- package/lib/core/transform/cache/TtscCachedProjectTransform.d.ts +6 -0
- package/lib/core/transform/cache/createTransformCacheKey.d.cts +11 -8
- package/lib/core/transform/cache/createTransformCacheKey.d.mts +11 -8
- package/lib/core/transform/cache/createTransformCacheKey.d.ts +11 -8
- package/lib/core/transform/cache/createTransformCacheKey.js +11 -8
- package/lib/core/transform/cache/createTransformCacheKey.js.map +1 -1
- package/lib/core/transform/cache/createTransformCacheKey.mjs +11 -8
- package/lib/core/transform/cache/createTransformCacheKey.mjs.map +1 -1
- package/lib/core/transform/generation/TtscCompilerMembershipHint.d.cts +20 -0
- package/lib/core/transform/generation/TtscCompilerMembershipHint.d.mts +20 -0
- package/lib/core/transform/generation/TtscCompilerMembershipHint.d.ts +20 -0
- package/lib/core/transform/generation/applyCompilerMembership.d.cts +15 -0
- package/lib/core/transform/generation/applyCompilerMembership.d.mts +15 -0
- package/lib/core/transform/generation/applyCompilerMembership.d.ts +15 -0
- package/lib/core/transform/generation/applyCompilerMembership.js +41 -0
- package/lib/core/transform/generation/applyCompilerMembership.js.map +1 -0
- package/lib/core/transform/generation/applyCompilerMembership.mjs +39 -0
- package/lib/core/transform/generation/applyCompilerMembership.mjs.map +1 -0
- package/lib/core/transform/generation/captureTransformGeneration.d.cts +7 -0
- package/lib/core/transform/generation/captureTransformGeneration.d.mts +7 -0
- package/lib/core/transform/generation/captureTransformGeneration.d.ts +7 -0
- package/lib/core/transform/generation/captureTransformGeneration.js +20 -7
- package/lib/core/transform/generation/captureTransformGeneration.js.map +1 -1
- package/lib/core/transform/generation/captureTransformGeneration.mjs +20 -7
- package/lib/core/transform/generation/captureTransformGeneration.mjs.map +1 -1
- package/lib/core/transform/generation/onlyLearnedCompileFacts.d.cts +5 -5
- package/lib/core/transform/generation/onlyLearnedCompileFacts.d.mts +5 -5
- package/lib/core/transform/generation/onlyLearnedCompileFacts.d.ts +5 -5
- package/lib/core/transform/generation/onlyLearnedCompileFacts.js +7 -5
- package/lib/core/transform/generation/onlyLearnedCompileFacts.js.map +1 -1
- package/lib/core/transform/generation/onlyLearnedCompileFacts.mjs +7 -5
- package/lib/core/transform/generation/onlyLearnedCompileFacts.mjs.map +1 -1
- package/lib/core/transform/generation/primeCompilerMembership.d.cts +22 -0
- package/lib/core/transform/generation/primeCompilerMembership.d.mts +22 -0
- package/lib/core/transform/generation/primeCompilerMembership.d.ts +22 -0
- package/lib/core/transform/generation/primeCompilerMembership.js +32 -0
- package/lib/core/transform/generation/primeCompilerMembership.js.map +1 -0
- package/lib/core/transform/generation/primeCompilerMembership.mjs +30 -0
- package/lib/core/transform/generation/primeCompilerMembership.mjs.map +1 -0
- package/lib/core/transform/generation/selectReportedMembershipPolicy.d.cts +7 -7
- package/lib/core/transform/generation/selectReportedMembershipPolicy.d.mts +7 -7
- package/lib/core/transform/generation/selectReportedMembershipPolicy.d.ts +7 -7
- package/lib/core/transform/generation/selectReportedMembershipPolicy.js +43 -9
- package/lib/core/transform/generation/selectReportedMembershipPolicy.js.map +1 -1
- package/lib/core/transform/generation/selectReportedMembershipPolicy.mjs +43 -9
- package/lib/core/transform/generation/selectReportedMembershipPolicy.mjs.map +1 -1
- package/lib/core/transform/generation/transformProject.d.cts +7 -0
- package/lib/core/transform/generation/transformProject.d.mts +7 -0
- package/lib/core/transform/generation/transformProject.d.ts +7 -0
- package/lib/core/transform/generation/transformProject.js +3 -0
- package/lib/core/transform/generation/transformProject.js.map +1 -1
- package/lib/core/transform/generation/transformProject.mjs +3 -0
- package/lib/core/transform/generation/transformProject.mjs.map +1 -1
- package/lib/core/transform/project/isPossibleProgramFileName.d.cts +13 -11
- package/lib/core/transform/project/isPossibleProgramFileName.d.mts +13 -11
- package/lib/core/transform/project/isPossibleProgramFileName.d.ts +13 -11
- package/lib/core/transform/project/isPossibleProgramFileName.js +21 -13
- package/lib/core/transform/project/isPossibleProgramFileName.js.map +1 -1
- package/lib/core/transform/project/isPossibleProgramFileName.mjs +21 -13
- package/lib/core/transform/project/isPossibleProgramFileName.mjs.map +1 -1
- package/lib/core/transform/session/sharedCompileIdentity.d.cts +8 -5
- package/lib/core/transform/session/sharedCompileIdentity.d.mts +8 -5
- package/lib/core/transform/session/sharedCompileIdentity.d.ts +8 -5
- package/lib/core/transform/session/sharedCompileIdentity.js +8 -5
- package/lib/core/transform/session/sharedCompileIdentity.js.map +1 -1
- package/lib/core/transform/session/sharedCompileIdentity.mjs +8 -5
- package/lib/core/transform/session/sharedCompileIdentity.mjs.map +1 -1
- package/lib/core/transform/transformTtsc.js +18 -0
- package/lib/core/transform/transformTtsc.js.map +1 -1
- package/lib/core/transform/transformTtsc.mjs +18 -0
- package/lib/core/transform/transformTtsc.mjs.map +1 -1
- package/lib/core/transform/tsconfig/TtscCompilerArgumentsWitness.d.cts +19 -0
- package/lib/core/transform/tsconfig/TtscCompilerArgumentsWitness.d.mts +19 -0
- package/lib/core/transform/tsconfig/TtscCompilerArgumentsWitness.d.ts +19 -0
- package/lib/core/transform/tsconfig/captureCompilerArguments.d.cts +14 -0
- package/lib/core/transform/tsconfig/captureCompilerArguments.d.mts +14 -0
- package/lib/core/transform/tsconfig/captureCompilerArguments.d.ts +14 -0
- package/lib/core/transform/tsconfig/captureCompilerArguments.js +26 -0
- package/lib/core/transform/tsconfig/captureCompilerArguments.js.map +1 -0
- package/lib/core/transform/tsconfig/captureCompilerArguments.mjs +24 -0
- package/lib/core/transform/tsconfig/captureCompilerArguments.mjs.map +1 -0
- package/lib/core/transform/tsconfig/compilerEnvironmentIdentity.d.cts +13 -0
- package/lib/core/transform/tsconfig/compilerEnvironmentIdentity.d.mts +13 -0
- package/lib/core/transform/tsconfig/compilerEnvironmentIdentity.d.ts +13 -0
- package/lib/core/transform/tsconfig/compilerEnvironmentIdentity.js +23 -0
- package/lib/core/transform/tsconfig/compilerEnvironmentIdentity.js.map +1 -0
- package/lib/core/transform/tsconfig/compilerEnvironmentIdentity.mjs +21 -0
- package/lib/core/transform/tsconfig/compilerEnvironmentIdentity.mjs.map +1 -0
- package/lib/core/transform/tsconfig/resolveCompilerEnvironment.d.cts +17 -0
- package/lib/core/transform/tsconfig/resolveCompilerEnvironment.d.mts +17 -0
- package/lib/core/transform/tsconfig/resolveCompilerEnvironment.d.ts +17 -0
- package/lib/core/transform/tsconfig/resolveCompilerEnvironment.js +57 -0
- package/lib/core/transform/tsconfig/resolveCompilerEnvironment.js.map +1 -0
- package/lib/core/transform/tsconfig/resolveCompilerEnvironment.mjs +55 -0
- package/lib/core/transform/tsconfig/resolveCompilerEnvironment.mjs.map +1 -0
- package/lib/core/transform/tsconfig/transformScratchEnvironment.d.cts +6 -6
- package/lib/core/transform/tsconfig/transformScratchEnvironment.d.mts +6 -6
- package/lib/core/transform/tsconfig/transformScratchEnvironment.d.ts +6 -6
- package/lib/core/transform/tsconfig/transformScratchEnvironment.js +7 -7
- package/lib/core/transform/tsconfig/transformScratchEnvironment.js.map +1 -1
- package/lib/core/transform/tsconfig/transformScratchEnvironment.mjs +7 -7
- package/lib/core/transform/tsconfig/transformScratchEnvironment.mjs.map +1 -1
- package/lib/core/transform/watch/notifyProjectRecord.js +3 -0
- package/lib/core/transform/watch/notifyProjectRecord.js.map +1 -1
- package/lib/core/transform/watch/notifyProjectRecord.mjs +3 -0
- package/lib/core/transform/watch/notifyProjectRecord.mjs.map +1 -1
- package/lib/core/tsconfig/ITtscProjectMembershipPolicy.d.cts +14 -1
- package/lib/core/tsconfig/ITtscProjectMembershipPolicy.d.mts +14 -1
- package/lib/core/tsconfig/ITtscProjectMembershipPolicy.d.ts +14 -1
- package/lib/core/tsconfig/mergeMembershipPolicyOverlay.d.cts +4 -3
- package/lib/core/tsconfig/mergeMembershipPolicyOverlay.d.mts +4 -3
- package/lib/core/tsconfig/mergeMembershipPolicyOverlay.d.ts +4 -3
- package/lib/core/tsconfig/mergeMembershipPolicyOverlay.js +36 -6
- package/lib/core/tsconfig/mergeMembershipPolicyOverlay.js.map +1 -1
- package/lib/core/tsconfig/mergeMembershipPolicyOverlay.mjs +36 -6
- package/lib/core/tsconfig/mergeMembershipPolicyOverlay.mjs.map +1 -1
- package/lib/core/tsconfig/readProjectMembershipPolicy.d.cts +3 -2
- package/lib/core/tsconfig/readProjectMembershipPolicy.d.mts +3 -2
- package/lib/core/tsconfig/readProjectMembershipPolicy.d.ts +3 -2
- package/lib/core/tsconfig/readProjectMembershipPolicy.js +49 -15
- package/lib/core/tsconfig/readProjectMembershipPolicy.js.map +1 -1
- package/lib/core/tsconfig/readProjectMembershipPolicy.mjs +49 -15
- package/lib/core/tsconfig/readProjectMembershipPolicy.mjs.map +1 -1
- package/lib/core/tsconfig/resolveMembershipInputExtensions.d.cts +16 -0
- package/lib/core/tsconfig/resolveMembershipInputExtensions.d.mts +16 -0
- package/lib/core/tsconfig/resolveMembershipInputExtensions.d.ts +16 -0
- package/lib/core/tsconfig/resolveMembershipInputExtensions.js +45 -0
- package/lib/core/tsconfig/resolveMembershipInputExtensions.js.map +1 -0
- package/lib/core/tsconfig/resolveMembershipInputExtensions.mjs +43 -0
- package/lib/core/tsconfig/resolveMembershipInputExtensions.mjs.map +1 -0
- package/lib/core/turbopack/turbopack.d.cts +2 -2
- package/lib/core/turbopack/turbopack.d.mts +2 -2
- package/lib/core/turbopack/turbopack.d.ts +2 -2
- package/lib/core/turbopack/turbopack.js +15 -7
- package/lib/core/turbopack/turbopack.js.map +1 -1
- package/lib/core/turbopack/turbopack.mjs +15 -7
- package/lib/core/turbopack/turbopack.mjs.map +1 -1
- package/lib/core/unplugin.js +21 -8
- package/lib/core/unplugin.js.map +1 -1
- package/lib/core/unplugin.mjs +21 -8
- package/lib/core/unplugin.mjs.map +1 -1
- package/package.json +3 -3
- package/src/core/bridge/TtscProjectRecord.ts +4 -1
- package/src/core/bridge/projectRecordArgumentsMatch.ts +37 -0
- package/src/core/bridge/projectRecordMoved.ts +17 -11
- package/src/core/bridge/readProjectRecordFile.ts +39 -3
- package/src/core/bridge/refreshProjectRecordFile.ts +9 -2
- package/src/core/bridge/refreshProjectRecordFiles.ts +7 -1
- package/src/core/index.ts +2 -0
- package/src/core/next/next.ts +18 -2
- package/src/core/options/ResolvedTtscUnpluginOptions.ts +3 -0
- package/src/core/options/TtscUnpluginOptions.ts +9 -0
- package/src/core/options/resolveOptions.ts +5 -3
- package/src/core/rollup/rollupDeliveryOptions.ts +9 -5
- package/src/core/transform/cache/TRANSFORM_CACHE_MEMBERSHIP_POLICIES.ts +14 -0
- package/src/core/transform/cache/TtscCachedProjectTransform.ts +7 -0
- package/src/core/transform/cache/createTransformCacheKey.ts +13 -8
- package/src/core/transform/generation/TtscCompilerMembershipHint.ts +24 -0
- package/src/core/transform/generation/applyCompilerMembership.ts +44 -0
- package/src/core/transform/generation/captureTransformGeneration.ts +43 -10
- package/src/core/transform/generation/onlyLearnedCompileFacts.ts +7 -5
- package/src/core/transform/generation/primeCompilerMembership.ts +39 -0
- package/src/core/transform/generation/selectReportedMembershipPolicy.ts +59 -13
- package/src/core/transform/generation/transformProject.ts +12 -0
- package/src/core/transform/project/isPossibleProgramFileName.ts +28 -15
- package/src/core/transform/session/sharedCompileIdentity.ts +10 -5
- package/src/core/transform/transformTtsc.ts +21 -0
- package/src/core/transform/tsconfig/TtscCompilerArgumentsWitness.ts +19 -0
- package/src/core/transform/tsconfig/captureCompilerArguments.ts +25 -0
- package/src/core/transform/tsconfig/compilerEnvironmentIdentity.ts +20 -0
- package/src/core/transform/tsconfig/resolveCompilerEnvironment.ts +61 -0
- package/src/core/transform/tsconfig/transformScratchEnvironment.ts +7 -6
- package/src/core/transform/watch/notifyProjectRecord.ts +3 -0
- package/src/core/tsconfig/ITtscProjectMembershipPolicy.ts +15 -1
- package/src/core/tsconfig/mergeMembershipPolicyOverlay.ts +31 -6
- package/src/core/tsconfig/readProjectMembershipPolicy.ts +61 -17
- package/src/core/tsconfig/resolveMembershipInputExtensions.ts +45 -0
- package/src/core/turbopack/turbopack.ts +27 -7
- package/src/core/unplugin.ts +34 -9
|
@@ -3,6 +3,7 @@ import { JAVASCRIPT_INPUT_EXTENSIONS } from "./JAVASCRIPT_INPUT_EXTENSIONS";
|
|
|
3
3
|
import { OUTPUT_DIRECTORY_OPTIONS } from "./OUTPUT_DIRECTORY_OPTIONS";
|
|
4
4
|
import { flattenDirectoryExclusionOrigins } from "./flattenDirectoryExclusionOrigins";
|
|
5
5
|
import { resolveConfigDirTemplatePath } from "./resolveConfigDirTemplatePath";
|
|
6
|
+
import { resolveMembershipInputExtensions } from "./resolveMembershipInputExtensions";
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
* Apply the caller's compiler-options overlay on top of a policy read from the
|
|
@@ -14,9 +15,10 @@ import { resolveConfigDirTemplatePath } from "./resolveConfigDirTemplatePath";
|
|
|
14
15
|
* turns it off gets the narrower rule for the same reason.
|
|
15
16
|
*
|
|
16
17
|
* @evidence contracts/common.md#principled-implementation
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
18
|
+
* Extension option provenance preserves explicit false and null clearing
|
|
19
|
+
* while recomputing implicit JavaScript and JSON defaults. Mapper suffixes
|
|
20
|
+
* remain independent. Output paths update their own exclusion provenance;
|
|
21
|
+
* missing legacy provenance preserves authored extension/exclusion lists.
|
|
20
22
|
*
|
|
21
23
|
* @evidence contracts/common.md#clear-and-simple-design
|
|
22
24
|
* The operation clones extension and exclusion state rather than mutating
|
|
@@ -65,8 +67,27 @@ export function mergeMembershipPolicyOverlay(
|
|
|
65
67
|
}
|
|
66
68
|
}
|
|
67
69
|
};
|
|
68
|
-
|
|
69
|
-
|
|
70
|
+
const extensionOptionOrigins =
|
|
71
|
+
policy.extensionOptionOrigins === undefined
|
|
72
|
+
? undefined
|
|
73
|
+
: { ...policy.extensionOptionOrigins };
|
|
74
|
+
if (extensionOptionOrigins === undefined) {
|
|
75
|
+
applyFlag("allowJs", JAVASCRIPT_INPUT_EXTENSIONS);
|
|
76
|
+
applyFlag("resolveJsonModule", [".json"]);
|
|
77
|
+
} else {
|
|
78
|
+
for (const key of ["allowJs", "checkJs", "resolveJsonModule"] as const) {
|
|
79
|
+
if (!Object.hasOwn(compilerOptions, key)) continue;
|
|
80
|
+
const value = compilerOptions[key];
|
|
81
|
+
if (value === null) delete extensionOptionOrigins[key];
|
|
82
|
+
else if (typeof value === "boolean") extensionOptionOrigins[key] = value;
|
|
83
|
+
}
|
|
84
|
+
for (const key of ["module", "moduleResolution"] as const) {
|
|
85
|
+
if (!Object.hasOwn(compilerOptions, key)) continue;
|
|
86
|
+
const value = compilerOptions[key];
|
|
87
|
+
if (value === null) delete extensionOptionOrigins[key];
|
|
88
|
+
else if (typeof value === "string") extensionOptionOrigins[key] = value;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
70
91
|
|
|
71
92
|
const inheritedOrigins = policy.directoryExclusionOrigins;
|
|
72
93
|
const directoryExclusionOrigins: {
|
|
@@ -98,7 +119,11 @@ export function mergeMembershipPolicyOverlay(
|
|
|
98
119
|
excludedDirectories: flattenDirectoryExclusionOrigins(
|
|
99
120
|
directoryExclusionOrigins,
|
|
100
121
|
),
|
|
101
|
-
|
|
122
|
+
extensionOptionOrigins,
|
|
123
|
+
inputExtensions:
|
|
124
|
+
extensionOptionOrigins === undefined
|
|
125
|
+
? [...inputExtensions]
|
|
126
|
+
: resolveMembershipInputExtensions(extensionOptionOrigins),
|
|
102
127
|
sources: policy.sources,
|
|
103
128
|
useCaseSensitiveFileNames: policy.useCaseSensitiveFileNames,
|
|
104
129
|
};
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
|
|
3
|
-
import { TYPESCRIPT_TRANSFORM_EXTENSIONS } from "../source/TYPESCRIPT_TRANSFORM_EXTENSIONS";
|
|
4
3
|
import type { ITtscProjectMembershipPolicy } from "./ITtscProjectMembershipPolicy";
|
|
5
|
-
import { JAVASCRIPT_INPUT_EXTENSIONS } from "./JAVASCRIPT_INPUT_EXTENSIONS";
|
|
6
4
|
import { OUTPUT_DIRECTORY_OPTIONS } from "./OUTPUT_DIRECTORY_OPTIONS";
|
|
7
5
|
import { TsconfigReadTransaction } from "./TsconfigReadTransaction";
|
|
8
6
|
import { absolutizePathsTarget } from "./absolutizePathsTarget";
|
|
@@ -11,6 +9,7 @@ import { findDeclaredValue } from "./findDeclaredValue";
|
|
|
11
9
|
import { flattenDirectoryExclusionOrigins } from "./flattenDirectoryExclusionOrigins";
|
|
12
10
|
import { normalizeTypeScriptPathSeparators } from "./normalizeTypeScriptPathSeparators";
|
|
13
11
|
import { resolveConfigDirTemplatePath } from "./resolveConfigDirTemplatePath";
|
|
12
|
+
import { resolveMembershipInputExtensions } from "./resolveMembershipInputExtensions";
|
|
14
13
|
import { resolveNativeRootPath } from "./resolveNativeRootPath";
|
|
15
14
|
import { resolveRealPath } from "./resolveRealPath";
|
|
16
15
|
|
|
@@ -28,7 +27,8 @@ const DEFAULT_INCLUDE_SPEC = "**/*";
|
|
|
28
27
|
* root matcher still applies extension, package and hidden-path admission; this
|
|
29
28
|
* policy does not enumerate every dependency in the compiler program.
|
|
30
29
|
*
|
|
31
|
-
* `allowJs`
|
|
30
|
+
* `allowJs` (implicitly enabled by `checkJs`), effective `resolveJsonModule`
|
|
31
|
+
* and literal content mapper extensions prime root-discovery suffixes, not the
|
|
32
32
|
* complete set of imported or externally observed program inputs. `outDir`,
|
|
33
33
|
* `declarationDir`, and plain `exclude` entries supply conservative directory
|
|
34
34
|
* exclusions for that discovery walk. TypeScript supplies the two output
|
|
@@ -51,7 +51,7 @@ const DEFAULT_INCLUDE_SPEC = "**/*";
|
|
|
51
51
|
*
|
|
52
52
|
* @evidence contracts/common.md#clear-and-simple-design
|
|
53
53
|
* Shared declaration readers own inheritance; this operation assembles one
|
|
54
|
-
* policy and keeps exclusion provenance so overlays can
|
|
54
|
+
* policy and keeps extension and exclusion provenance so overlays can recompute defaults. Own null options clear inherited declarations before default resolution.
|
|
55
55
|
*
|
|
56
56
|
* @evidence contracts/portability.md#os-neutral-implementation
|
|
57
57
|
* Node native paths anchor config-derived patterns; regular and native
|
|
@@ -117,25 +117,60 @@ export function readProjectMembershipPolicy(
|
|
|
117
117
|
nativepath: resolveNativeRootPath(configDir),
|
|
118
118
|
},
|
|
119
119
|
};
|
|
120
|
-
const
|
|
120
|
+
const option = (key: string): unknown =>
|
|
121
121
|
findDeclaredValue(
|
|
122
122
|
resolved,
|
|
123
123
|
(parsed) => {
|
|
124
|
-
const
|
|
125
|
-
|
|
126
|
-
|
|
124
|
+
const options = (
|
|
125
|
+
parsed as { compilerOptions?: Record<string, unknown> }
|
|
126
|
+
).compilerOptions;
|
|
127
|
+
// Boxing null stops inheritance: upstream clears the inherited value.
|
|
128
|
+
return options !== null &&
|
|
129
|
+
typeof options === "object" &&
|
|
130
|
+
Object.hasOwn(options, key)
|
|
131
|
+
? { value: options[key] }
|
|
132
|
+
: undefined;
|
|
127
133
|
},
|
|
128
134
|
new Set(),
|
|
129
135
|
sources,
|
|
130
136
|
configs,
|
|
131
|
-
)?.value
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
137
|
+
)?.value.value;
|
|
138
|
+
const booleanOption = (key: string): boolean | undefined => {
|
|
139
|
+
const value = option(key);
|
|
140
|
+
return typeof value === "boolean" ? value : undefined;
|
|
141
|
+
};
|
|
142
|
+
const stringOption = (key: string): string | undefined => {
|
|
143
|
+
const value = option(key);
|
|
144
|
+
return typeof value === "string" ? value : undefined;
|
|
145
|
+
};
|
|
146
|
+
const extensions = new Set<string>();
|
|
147
|
+
const mappers =
|
|
148
|
+
findDeclaredValue(
|
|
149
|
+
resolved,
|
|
150
|
+
(parsed) => {
|
|
151
|
+
if (!Object.prototype.hasOwnProperty.call(parsed, "contentMappers"))
|
|
152
|
+
return undefined;
|
|
153
|
+
const value = (parsed as { contentMappers?: unknown }).contentMappers;
|
|
154
|
+
return Array.isArray(value) ? value : [];
|
|
155
|
+
},
|
|
156
|
+
new Set(),
|
|
157
|
+
sources,
|
|
158
|
+
configs,
|
|
159
|
+
)?.value ?? [];
|
|
160
|
+
for (const mapper of mappers) {
|
|
161
|
+
const declaredExtensions =
|
|
162
|
+
mapper !== null && typeof mapper === "object"
|
|
163
|
+
? (mapper as { extensions?: unknown }).extensions
|
|
164
|
+
: undefined;
|
|
165
|
+
if (!Array.isArray(declaredExtensions)) continue;
|
|
166
|
+
for (const extension of declaredExtensions)
|
|
167
|
+
if (
|
|
168
|
+
typeof extension === "string" &&
|
|
169
|
+
extension.length > 1 &&
|
|
170
|
+
extension.startsWith(".") &&
|
|
171
|
+
!/[\\/]/.test(extension)
|
|
172
|
+
)
|
|
173
|
+
extensions.add(extension);
|
|
139
174
|
}
|
|
140
175
|
|
|
141
176
|
const directoryExclusionOrigins: {
|
|
@@ -221,13 +256,22 @@ export function readProjectMembershipPolicy(
|
|
|
221
256
|
);
|
|
222
257
|
}
|
|
223
258
|
}
|
|
259
|
+
const extensionOptionOrigins = {
|
|
260
|
+
allowJs: booleanOption("allowJs"),
|
|
261
|
+
checkJs: booleanOption("checkJs"),
|
|
262
|
+
resolveJsonModule: booleanOption("resolveJsonModule"),
|
|
263
|
+
module: stringOption("module"),
|
|
264
|
+
moduleResolution: stringOption("moduleResolution"),
|
|
265
|
+
mapperExtensions: [...extensions],
|
|
266
|
+
};
|
|
224
267
|
return {
|
|
225
268
|
rootFileSpecs,
|
|
226
269
|
directoryExclusionOrigins,
|
|
227
270
|
excludedDirectories: flattenDirectoryExclusionOrigins(
|
|
228
271
|
directoryExclusionOrigins,
|
|
229
272
|
),
|
|
230
|
-
|
|
273
|
+
extensionOptionOrigins,
|
|
274
|
+
inputExtensions: resolveMembershipInputExtensions(extensionOptionOrigins),
|
|
231
275
|
sources: [...sources],
|
|
232
276
|
};
|
|
233
277
|
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { TYPESCRIPT_TRANSFORM_EXTENSIONS } from "../source/TYPESCRIPT_TRANSFORM_EXTENSIONS";
|
|
2
|
+
import type { ITtscProjectMembershipPolicy } from "./ITtscProjectMembershipPolicy";
|
|
3
|
+
import { JAVASCRIPT_INPUT_EXTENSIONS } from "./JAVASCRIPT_INPUT_EXTENSIONS";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Prime suffix admission from explicit options and pinned TypeScript-Go
|
|
7
|
+
* defaults. Native membership reports still decide whether a primed walk was
|
|
8
|
+
* valid.
|
|
9
|
+
*
|
|
10
|
+
* @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.
|
|
11
|
+
* @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.
|
|
12
|
+
* @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.
|
|
13
|
+
* @evidence contracts/common.md#meaningful-documentation Prose states the provisional role and native authority; the origins type documents missing options and mapper ownership.
|
|
14
|
+
* @evidenceExclude contracts/portability.md#os-neutral-implementation Only compiler option labels and extension strings are interpreted; no filesystem path or process boundary is crossed.
|
|
15
|
+
* @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.
|
|
16
|
+
* @evidenceExclude contracts/performance.md#reuse-equivalent-work Resolves one supplied option value without coordinating requests or retaining a memo.
|
|
17
|
+
* @evidenceExclude contracts/performance.md#bound-retention-and-release-resources The returned array transfers to the caller; no handle or history is retained.
|
|
18
|
+
*/
|
|
19
|
+
export function resolveMembershipInputExtensions(
|
|
20
|
+
origins: NonNullable<ITtscProjectMembershipPolicy["extensionOptionOrigins"]>,
|
|
21
|
+
): string[] {
|
|
22
|
+
const extensions = new Set(TYPESCRIPT_TRANSFORM_EXTENSIONS);
|
|
23
|
+
if (origins.allowJs ?? origins.checkJs)
|
|
24
|
+
for (const extension of JAVASCRIPT_INPUT_EXTENSIONS)
|
|
25
|
+
extensions.add(extension);
|
|
26
|
+
const module = origins.module?.toLowerCase();
|
|
27
|
+
const resolution = origins.moduleResolution?.toLowerCase();
|
|
28
|
+
const modernResolution =
|
|
29
|
+
resolution === "node16" ||
|
|
30
|
+
resolution === "nodenext" ||
|
|
31
|
+
resolution === "bundler";
|
|
32
|
+
const bundler = modernResolution
|
|
33
|
+
? resolution === "bundler"
|
|
34
|
+
: module !== "node16" &&
|
|
35
|
+
module !== "node18" &&
|
|
36
|
+
module !== "node20" &&
|
|
37
|
+
module !== "nodenext";
|
|
38
|
+
if (
|
|
39
|
+
origins.resolveJsonModule ??
|
|
40
|
+
(module === "node20" || module === "nodenext" || bundler)
|
|
41
|
+
)
|
|
42
|
+
extensions.add(".json");
|
|
43
|
+
for (const extension of origins.mapperExtensions) extensions.add(extension);
|
|
44
|
+
return [...extensions];
|
|
45
|
+
}
|
|
@@ -10,6 +10,8 @@ import { TtscCompileFailureError } from "../transform/errors/TtscCompileFailureE
|
|
|
10
10
|
import { readTtscTransformSession } from "../transform/session/readTtscTransformSession";
|
|
11
11
|
import { shareTtscTransformCache } from "../transform/session/shareTtscTransformCache";
|
|
12
12
|
import { transformTtsc } from "../transform/transformTtsc";
|
|
13
|
+
import { captureCompilerArguments } from "../transform/tsconfig/captureCompilerArguments";
|
|
14
|
+
import { resolveCompilerEnvironment } from "../transform/tsconfig/resolveCompilerEnvironment";
|
|
13
15
|
import type { TtscProjectRegistration } from "../transform/watch/TtscProjectRegistration";
|
|
14
16
|
import type { TtscTransformHooks } from "../transform/watch/TtscTransformHooks";
|
|
15
17
|
import type { TtscTurbopackLoaderContext } from "./TtscTurbopackLoaderContext";
|
|
@@ -39,7 +41,9 @@ let bridge: HostWatchBridge | undefined;
|
|
|
39
41
|
* The tool directories whose record inventory this worker has attempted for a
|
|
40
42
|
* one-shot build, for a loader wired by hand, without `withTtsc`.
|
|
41
43
|
*/
|
|
42
|
-
const refreshed = new
|
|
44
|
+
const refreshed = new Map<string, string>();
|
|
45
|
+
/** Last invocation admitted to the watching worker's record inventory. */
|
|
46
|
+
let bridgeArgumentsIdentity: string | undefined;
|
|
43
47
|
|
|
44
48
|
/**
|
|
45
49
|
* Standalone webpack-loader entrypoint for Turbopack.
|
|
@@ -93,7 +97,7 @@ const refreshed = new Set<string>();
|
|
|
93
97
|
* Inclusion and shallow option/hook adaptation retain path/own-key text work.
|
|
94
98
|
* Shared transform validation pays current native identity, byte/list/graph
|
|
95
99
|
* proofs and compiler misses/map delivery; it is not one constant lookup.
|
|
96
|
-
* First inventory per tool root adds record parse/replay/IO, while watching
|
|
100
|
+
* First inventory per tool root and changed invocation adds record parse/replay/IO, while watching
|
|
97
101
|
* registration adds qualified observer work and error modules serialize errors.
|
|
98
102
|
* @evidence contracts/performance.md#reuse-equivalent-work
|
|
99
103
|
* A worker cache shares validated project generations across loader calls;
|
|
@@ -101,7 +105,7 @@ const refreshed = new Set<string>();
|
|
|
101
105
|
* boundary every hit qualifies current producer proofs before selecting output;
|
|
102
106
|
* native observer authority may avoid rereading proven unchanged populations.
|
|
103
107
|
* @evidence contracts/performance.md#bound-retention-and-release-resources
|
|
104
|
-
* The worker owns its cache, bridge and refreshed-root
|
|
108
|
+
* The worker owns its cache, bridge and refreshed-root identity map for its lifetime.
|
|
105
109
|
* Turbopack exposes no loader teardown hook, so native live resources rely on
|
|
106
110
|
* worker lifetime rather than this function's explicit join/close. Persistent
|
|
107
111
|
* session storage has its own pruning owner; no count/byte cap or descendant
|
|
@@ -149,6 +153,9 @@ export function turbopack(
|
|
|
149
153
|
const projectRoot = this.rootContext ?? process.cwd();
|
|
150
154
|
const toolDirectory = hostToolDirectory(projectRoot);
|
|
151
155
|
const loaderOptions = bindings.readOptions();
|
|
156
|
+
const compilerArguments = captureCompilerArguments(
|
|
157
|
+
resolveCompilerEnvironment(loaderOptions.runExternalCode),
|
|
158
|
+
).identity;
|
|
152
159
|
// Turbopack gives a loader no build start, so the records are proven at the
|
|
153
160
|
// process's first delivery. A watching worker's bridge takes every record as
|
|
154
161
|
// it opens, proving them as it does, and observes the projects the worker
|
|
@@ -162,12 +169,25 @@ export function turbopack(
|
|
|
162
169
|
if (watching && addDependency !== undefined) {
|
|
163
170
|
if (bridge === undefined) {
|
|
164
171
|
bridge = openHostWatchBridge(projectRoot);
|
|
165
|
-
|
|
172
|
+
}
|
|
173
|
+
if (bridgeArgumentsIdentity !== compilerArguments) {
|
|
174
|
+
bridgeArgumentsIdentity = compilerArguments;
|
|
175
|
+
refreshProjectRecordFiles(
|
|
176
|
+
toolDirectory,
|
|
177
|
+
bridge,
|
|
178
|
+
undefined,
|
|
179
|
+
compilerArguments,
|
|
180
|
+
);
|
|
166
181
|
}
|
|
167
182
|
bridgeStartedAt = bridge.begin();
|
|
168
|
-
} else if (
|
|
169
|
-
refreshed.
|
|
170
|
-
refreshProjectRecordFiles(
|
|
183
|
+
} else if (refreshed.get(toolDirectory) !== compilerArguments) {
|
|
184
|
+
refreshed.set(toolDirectory, compilerArguments);
|
|
185
|
+
refreshProjectRecordFiles(
|
|
186
|
+
toolDirectory,
|
|
187
|
+
undefined,
|
|
188
|
+
undefined,
|
|
189
|
+
compilerArguments,
|
|
190
|
+
);
|
|
171
191
|
}
|
|
172
192
|
const hooks: TtscTransformHooks = {
|
|
173
193
|
exactPath: true,
|
package/src/core/unplugin.ts
CHANGED
|
@@ -36,6 +36,9 @@ import { resetTtscTransformCache } from "./transform/cache/resetTtscTransformCac
|
|
|
36
36
|
import { sharedBuildTransformCache } from "./transform/cache/sharedBuildTransformCache";
|
|
37
37
|
import { hostDeclaresPolling } from "./transform/tracker/hostDeclaresPolling";
|
|
38
38
|
import { transformTtsc } from "./transform/transformTtsc";
|
|
39
|
+
import { captureCompilerArguments } from "./transform/tsconfig/captureCompilerArguments";
|
|
40
|
+
import { compilerEnvironmentIdentity } from "./transform/tsconfig/compilerEnvironmentIdentity";
|
|
41
|
+
import { resolveCompilerEnvironment } from "./transform/tsconfig/resolveCompilerEnvironment";
|
|
39
42
|
import { isHostWrapperQuery } from "./transform/utils/isHostWrapperQuery";
|
|
40
43
|
import { stripQuery } from "./transform/utils/stripQuery";
|
|
41
44
|
import type { TtscProjectRegistration } from "./transform/watch/TtscProjectRegistration";
|
|
@@ -96,6 +99,7 @@ const unpluginFactory: UnpluginFactory<
|
|
|
96
99
|
// channel cannot observe, opened by the session's first watching delivery
|
|
97
100
|
// and closed where the session ends (samchon/ttsc#1388).
|
|
98
101
|
let bridge: HostWatchBridge | undefined;
|
|
102
|
+
let recordArgumentsIdentity: string | undefined;
|
|
99
103
|
// The bridge's change sequence when the current pass opened. A pass proves
|
|
100
104
|
// the generation once, at its first delivery, and serves every later module
|
|
101
105
|
// of the pass from it, so a delivery may carry a state a change since the
|
|
@@ -176,13 +180,28 @@ const unpluginFactory: UnpluginFactory<
|
|
|
176
180
|
(context.getNativeBuildContext?.() !== undefined ||
|
|
177
181
|
context.meta?.rollupVersion === undefined);
|
|
178
182
|
// The options a delivery to Rollup is compiled under, read again once the
|
|
179
|
-
// aliases Vite resolves change.
|
|
180
|
-
let deliveryOptions:
|
|
183
|
+
// aliases Vite resolves or the effective compiler argument transport change.
|
|
184
|
+
let deliveryOptions:
|
|
185
|
+
| { aliases: unknown; environment: string; identity: string }
|
|
186
|
+
| undefined;
|
|
181
187
|
const currentDeliveryOptions = (): string => {
|
|
182
|
-
|
|
188
|
+
const compilerEnvironment = resolveCompilerEnvironment(
|
|
189
|
+
options.runExternalCode,
|
|
190
|
+
);
|
|
191
|
+
const environment = compilerEnvironmentIdentity(compilerEnvironment);
|
|
192
|
+
if (
|
|
193
|
+
deliveryOptions === undefined ||
|
|
194
|
+
deliveryOptions.aliases !== aliases ||
|
|
195
|
+
deliveryOptions.environment !== environment
|
|
196
|
+
)
|
|
183
197
|
deliveryOptions = {
|
|
184
198
|
aliases,
|
|
185
|
-
|
|
199
|
+
environment,
|
|
200
|
+
identity: rollupDeliveryOptions(
|
|
201
|
+
options,
|
|
202
|
+
createAliasPaths(aliases),
|
|
203
|
+
compilerEnvironment,
|
|
204
|
+
),
|
|
186
205
|
};
|
|
187
206
|
return deliveryOptions.identity;
|
|
188
207
|
};
|
|
@@ -494,7 +513,8 @@ const unpluginFactory: UnpluginFactory<
|
|
|
494
513
|
// opens for its first pass and takes every record, so a project the
|
|
495
514
|
// host restores whole from its cache, with no delivery in this
|
|
496
515
|
// process, is observed from then on; a later pass of that session
|
|
497
|
-
// has the bridge observing already
|
|
516
|
+
// has the bridge observing already; changed compiler arguments require
|
|
517
|
+
// a new inventory too. A one-shot host proves the
|
|
498
518
|
// records at each start. A host whose cache the adapter answers module
|
|
499
519
|
// by module, or that keeps none, has nothing for either to cover.
|
|
500
520
|
const opening = bridge === undefined;
|
|
@@ -506,12 +526,17 @@ const unpluginFactory: UnpluginFactory<
|
|
|
506
526
|
);
|
|
507
527
|
}
|
|
508
528
|
passStartedAt = bridge?.begin();
|
|
509
|
-
if (
|
|
529
|
+
if (restoresUnanswered(this)) {
|
|
530
|
+
const identity = captureCompilerArguments(
|
|
531
|
+
resolveCompilerEnvironment(options.runExternalCode),
|
|
532
|
+
).identity;
|
|
533
|
+
const argumentsChanged = recordArgumentsIdentity !== identity;
|
|
534
|
+
recordArgumentsIdentity = identity;
|
|
510
535
|
// Below the root, and in the fallback a host that cannot write there
|
|
511
536
|
// keeps its records in (samchon/ttsc#1480).
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
537
|
+
if (opening || argumentsChanged)
|
|
538
|
+
for (const directory of recordDirectories())
|
|
539
|
+
refreshProjectRecordFiles(directory, bridge, undefined, identity);
|
|
515
540
|
}
|
|
516
541
|
}
|
|
517
542
|
},
|