ttsc 0.18.4 → 0.19.0

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 (137) hide show
  1. package/README.md +5 -6
  2. package/cmd/graphbench/main.go +1 -1
  3. package/cmd/platform/main.go +1 -48
  4. package/cmd/ttsc/build_branches_test.go +5 -1
  5. package/cmd/ttsc/main.go +0 -50
  6. package/cmd/ttsc/main_alias_branches_test.go +6 -12
  7. package/cmd/ttscgraph/dump.go +13 -3
  8. package/cmd/ttscserver/main.go +5 -3
  9. package/driver/lsp.go +13 -1
  10. package/driver/plugins.go +35 -0
  11. package/driver/program.go +7 -8
  12. package/driver/rewrite.go +381 -21
  13. package/go.mod +1 -0
  14. package/internal/graph/build.go +297 -3
  15. package/internal/graph/build_records_a_node_per_top_level_declaration_test.go +16 -2
  16. package/internal/graph/diagnostics.go +5 -4
  17. package/internal/graph/dump.go +60 -4
  18. package/internal/graph/dump_is_a_function_of_the_source_test.go +71 -0
  19. package/internal/graph/dump_serializes_the_full_graph_test.go +16 -4
  20. package/internal/graph/edges.go +122 -11
  21. package/internal/graph/exports.go +74 -17
  22. package/internal/graph/graph.go +33 -1
  23. package/internal/graph/node_identity_is_position_invariant_test.go +4 -2
  24. package/internal/graph/resolve.go +24 -0
  25. package/internal/graphsymbols/provider.go +50 -14
  26. package/internal/lspserver/lsp_native_plugin_source.go +77 -23
  27. package/internal/lspserver/lsp_plugin.go +19 -2
  28. package/internal/lspserver/lsp_proxy.go +244 -52
  29. package/internal/lspserver/lsp_server.go +35 -27
  30. package/internal/lspserver/lsp_symbols.go +25 -16
  31. package/lib/TtscCompiler.d.ts +10 -0
  32. package/lib/TtscCompiler.js +24 -6
  33. package/lib/TtscCompiler.js.map +1 -1
  34. package/lib/TtscService.js +9 -7
  35. package/lib/TtscService.js.map +1 -1
  36. package/lib/compiler/internal/compileProjectInMemory.js +1 -0
  37. package/lib/compiler/internal/compileProjectInMemory.js.map +1 -1
  38. package/lib/compiler/internal/project/createNativeProjectContextArgs.d.ts +3 -0
  39. package/lib/compiler/internal/project/createNativeProjectContextArgs.js +14 -0
  40. package/lib/compiler/internal/project/createNativeProjectContextArgs.js.map +1 -0
  41. package/lib/compiler/internal/project/readProjectConfig.js +53 -4
  42. package/lib/compiler/internal/project/readProjectConfig.js.map +1 -1
  43. package/lib/compiler/internal/project/resolveProjectConfig.d.ts +9 -2
  44. package/lib/compiler/internal/project/resolveProjectConfig.js +45 -16
  45. package/lib/compiler/internal/project/resolveProjectConfig.js.map +1 -1
  46. package/lib/compiler/internal/residentTransformProcess.d.ts +16 -5
  47. package/lib/compiler/internal/residentTransformProcess.js +68 -20
  48. package/lib/compiler/internal/residentTransformProcess.js.map +1 -1
  49. package/lib/compiler/internal/runBuild.d.ts +11 -0
  50. package/lib/compiler/internal/runBuild.js +44 -8
  51. package/lib/compiler/internal/runBuild.js.map +1 -1
  52. package/lib/compiler/internal/runSingleFileEmit.js +7 -4
  53. package/lib/compiler/internal/runSingleFileEmit.js.map +1 -1
  54. package/lib/compiler/internal/sharedHostHelpers.d.ts +16 -0
  55. package/lib/compiler/internal/sharedHostHelpers.js +23 -0
  56. package/lib/compiler/internal/sharedHostHelpers.js.map +1 -1
  57. package/lib/compiler/internal/startResidentTransform.js +18 -1
  58. package/lib/compiler/internal/startResidentTransform.js.map +1 -1
  59. package/lib/compiler/internal/transformProjectInMemory.js +34 -8
  60. package/lib/compiler/internal/transformProjectInMemory.js.map +1 -1
  61. package/lib/flags/parser.d.ts +17 -0
  62. package/lib/flags/parser.js +11 -1
  63. package/lib/flags/parser.js.map +1 -1
  64. package/lib/flags/schema.js +7 -0
  65. package/lib/flags/schema.js.map +1 -1
  66. package/lib/launcher/internal/prepareExecution.js +21 -2
  67. package/lib/launcher/internal/prepareExecution.js.map +1 -1
  68. package/lib/launcher/internal/runTtsc.js +13 -53
  69. package/lib/launcher/internal/runTtsc.js.map +1 -1
  70. package/lib/launcher/internal/runTtscserver.js +11 -0
  71. package/lib/launcher/internal/runTtscserver.js.map +1 -1
  72. package/lib/launcher/internal/runTtsx.js +27 -11
  73. package/lib/launcher/internal/runTtsx.js.map +1 -1
  74. package/lib/launcher/internal/runtimeHooks.d.ts +81 -0
  75. package/lib/launcher/internal/runtimeHooks.js +632 -43
  76. package/lib/launcher/internal/runtimeHooks.js.map +1 -1
  77. package/lib/launcher/internal/servedSourceMap.d.ts +25 -0
  78. package/lib/launcher/internal/servedSourceMap.js +164 -0
  79. package/lib/launcher/internal/servedSourceMap.js.map +1 -0
  80. package/lib/plugin/internal/buildSourcePlugin.d.ts +146 -2
  81. package/lib/plugin/internal/buildSourcePlugin.js +651 -113
  82. package/lib/plugin/internal/buildSourcePlugin.js.map +1 -1
  83. package/lib/plugin/internal/loadProjectPlugins.d.ts +7 -0
  84. package/lib/plugin/internal/loadProjectPlugins.js +33 -10
  85. package/lib/plugin/internal/loadProjectPlugins.js.map +1 -1
  86. package/lib/structures/ITtscCompilerContext.d.ts +16 -2
  87. package/lib/structures/ITtscPluginCapabilities.d.ts +8 -0
  88. package/lib/structures/ITtscPluginFactoryContext.d.ts +14 -0
  89. package/lib/structures/internal/ITtscParsedProjectConfig.d.ts +3 -0
  90. package/lib/structures/internal/ITtscProjectIdentity.d.ts +17 -0
  91. package/lib/structures/internal/ITtscProjectIdentity.js +3 -0
  92. package/lib/structures/internal/ITtscProjectIdentity.js.map +1 -0
  93. package/lib/structures/internal/TtscCommonOptions.d.ts +8 -0
  94. package/package.json +11 -8
  95. package/shim/ast/lint.go +10 -0
  96. package/shim/ast/shim.go +44 -0
  97. package/shim/checker/enums_gen.go +19 -0
  98. package/shim/checker/shim.go +130 -0
  99. package/shim/diagnosticwriter/lint.go +30 -3
  100. package/shim/scanner/regexp.go +27 -0
  101. package/src/TtscCompiler.ts +25 -6
  102. package/src/TtscService.ts +15 -7
  103. package/src/compiler/internal/compileProjectInMemory.ts +1 -0
  104. package/src/compiler/internal/project/createNativeProjectContextArgs.ts +15 -0
  105. package/src/compiler/internal/project/readProjectConfig.ts +61 -5
  106. package/src/compiler/internal/project/resolveProjectConfig.ts +51 -21
  107. package/src/compiler/internal/residentTransformProcess.ts +95 -21
  108. package/src/compiler/internal/runBuild.ts +76 -9
  109. package/src/compiler/internal/runSingleFileEmit.ts +7 -4
  110. package/src/compiler/internal/sharedHostHelpers.ts +24 -0
  111. package/src/compiler/internal/startResidentTransform.ts +21 -1
  112. package/src/compiler/internal/transformProjectInMemory.ts +49 -6
  113. package/src/flags/parser.ts +28 -1
  114. package/src/flags/schema.ts +8 -0
  115. package/src/launcher/internal/prepareExecution.ts +22 -2
  116. package/src/launcher/internal/runTtsc.ts +13 -61
  117. package/src/launcher/internal/runTtscserver.ts +14 -0
  118. package/src/launcher/internal/runTtsx.ts +28 -13
  119. package/src/launcher/internal/runtimeHooks.ts +771 -53
  120. package/src/launcher/internal/servedSourceMap.ts +183 -0
  121. package/src/plugin/internal/buildSourcePlugin.ts +859 -122
  122. package/src/plugin/internal/loadProjectPlugins.ts +36 -6
  123. package/src/structures/ITtscCompilerContext.ts +17 -2
  124. package/src/structures/ITtscPluginCapabilities.ts +9 -0
  125. package/src/structures/ITtscPluginFactoryContext.ts +15 -0
  126. package/src/structures/internal/ITtscParsedProjectConfig.ts +3 -0
  127. package/src/structures/internal/ITtscProjectIdentity.ts +17 -0
  128. package/src/structures/internal/TtscCommonOptions.ts +8 -0
  129. package/tools/shim_audit/baseline.json +16 -7
  130. package/tools/shim_audit/main.go +777 -71
  131. package/tools/shim_audit/main_test.go +28 -1
  132. package/tools/shim_audit/producer_exemptions_require_rationale_test.go +42 -0
  133. package/tools/shim_audit/producer_surface_includes_exposed_methods_test.go +154 -0
  134. package/tools/shim_audit/producer_surface_rejects_unproducible_reference_test.go +142 -0
  135. package/utility/host.go +46 -20
  136. package/utility/serve.go +1 -1
  137. package/shim/checker/signature_api_completeness.go +0 -58
@@ -48,7 +48,12 @@ type PackageManifest = {
48
48
  * @param options.cwd - Working directory for resolving relative paths.
49
49
  * @param options.entries - Explicit plugin entries; `false` disables all
50
50
  * plugins (skips both tsconfig entries and package auto-discovery).
51
+ * @param options.env - Effective environment for source-plugin builds and the
52
+ * `ttsx` descriptor child (`{ ...process.env, ...context.env }`). Defaults to
53
+ * `process.env` for CLI callers, so ambient behavior is unchanged.
51
54
  * @param options.file - Path to the tsconfig/jsconfig file.
55
+ * @param options.pluginConfigDir - Caller-declared anchor for plugin
56
+ * config-file discovery (see `ITtscPluginFactoryContext.pluginConfigDir`).
52
57
  * @param options.projectRoot - Override the project root directory.
53
58
  * @param options.tsconfig - Alias for `file`.
54
59
  */
@@ -57,13 +62,16 @@ export function loadProjectPlugins(options: {
57
62
  cacheDir?: string;
58
63
  cwd?: string;
59
64
  entries?: readonly ITtscProjectPluginConfig[] | false;
65
+ env?: NodeJS.ProcessEnv;
60
66
  file?: string;
67
+ pluginConfigDir?: string;
61
68
  projectRoot?: string;
62
69
  tsconfig?: string;
63
70
  }): {
64
71
  nativePlugins: ITtscLoadedNativePlugin[];
65
72
  project: ITtscParsedProjectConfig;
66
73
  } {
74
+ const effectiveEnv = options.env ?? process.env;
67
75
  const project = readProjectConfig({
68
76
  cwd: options.cwd,
69
77
  file: options.file,
@@ -83,9 +91,13 @@ export function loadProjectPlugins(options: {
83
91
  };
84
92
  }
85
93
 
94
+ const cwd = path.resolve(options.cwd ?? process.cwd());
86
95
  const context = {
87
96
  binary: options.binary,
88
- cwd: path.resolve(options.cwd ?? process.cwd()),
97
+ cwd,
98
+ ...(options.pluginConfigDir === undefined || options.pluginConfigDir === ""
99
+ ? {}
100
+ : { pluginConfigDir: path.resolve(cwd, options.pluginConfigDir) }),
89
101
  projectRoot: project.root,
90
102
  tsconfig: project.path,
91
103
  };
@@ -96,6 +108,7 @@ export function loadProjectPlugins(options: {
96
108
  entry.config,
97
109
  { ...context, plugin: entry.config },
98
110
  entry.baseDir,
111
+ effectiveEnv,
99
112
  ),
100
113
  ),
101
114
  );
@@ -156,6 +169,7 @@ export function loadProjectPlugins(options: {
156
169
  baseDir: context.projectRoot,
157
170
  cacheDir: options.cacheDir,
158
171
  contributors: mergeContributors(record.contributors, hostContributors),
172
+ env: effectiveEnv,
159
173
  pluginName: record.label,
160
174
  source: record.source,
161
175
  ttscVersion,
@@ -169,6 +183,7 @@ export function loadProjectPlugins(options: {
169
183
  baseDir: context.projectRoot,
170
184
  cacheDir: options.cacheDir,
171
185
  contributors: linkedContributors,
186
+ env: effectiveEnv,
172
187
  label: "linked plugin host",
173
188
  pluginName: "linked-plugin-host",
174
189
  source: path.join(ttscPackageRoot(), "cmd", "utility-host"),
@@ -190,6 +205,7 @@ export function loadProjectPlugins(options: {
190
205
  baseDir: context.projectRoot,
191
206
  cacheDir: options.cacheDir,
192
207
  contributors: record.contributors,
208
+ env: effectiveEnv,
193
209
  pluginName: record.label,
194
210
  source: record.source,
195
211
  ttscVersion,
@@ -572,6 +588,7 @@ function loadPluginEntry(
572
588
  entry: ITtscProjectPluginConfig,
573
589
  base: Omit<ITtscPluginFactoryContext, "dirname" | "filename">,
574
590
  baseDir: string,
591
+ effectiveEnv: NodeJS.ProcessEnv,
575
592
  ): ITtscPlugin {
576
593
  return withPluginLoaderEnv(() => {
577
594
  const specifier = entry.transform;
@@ -592,7 +609,7 @@ function loadPluginEntry(
592
609
  dirname: path.dirname(request),
593
610
  filename: request,
594
611
  };
595
- const mod = requirePluginEntry(request, context) as {
612
+ const mod = requirePluginEntry(request, context, effectiveEnv) as {
596
613
  createTtscPlugin?: TtscPluginFactory;
597
614
  default?: ITtscPlugin | TtscPluginFactory;
598
615
  } & Partial<Record<"plugin", ITtscPlugin | TtscPluginFactory>>;
@@ -639,6 +656,7 @@ function loadPluginEntry(
639
656
  function requirePluginEntry(
640
657
  request: string,
641
658
  context: ITtscPluginFactoryContext,
659
+ effectiveEnv: NodeJS.ProcessEnv,
642
660
  ): unknown {
643
661
  try {
644
662
  return require(request);
@@ -646,7 +664,7 @@ function requirePluginEntry(
646
664
  if (!TS_SOURCE_PATTERN.test(request)) {
647
665
  throw error;
648
666
  }
649
- const descriptor = loadDescriptorViaTtsx(request, context);
667
+ const descriptor = loadDescriptorViaTtsx(request, context, effectiveEnv);
650
668
  if (descriptor === undefined) {
651
669
  throw error;
652
670
  }
@@ -666,9 +684,16 @@ const TS_SOURCE_PATTERN = /\.(?:[cm]?ts|tsx)$/i;
666
684
  function loadDescriptorViaTtsx(
667
685
  request: string,
668
686
  context: ITtscPluginFactoryContext,
687
+ effectiveEnv: NodeJS.ProcessEnv,
669
688
  ): unknown {
670
- const node = process.env.TTSC_NODE_BINARY ?? process.execPath;
671
- const ttsx = process.env.TTSC_TTSX_BINARY;
689
+ // Binary discovery prefers the instance environment, then the ambient
690
+ // process.env (where `withPluginLoaderEnv` injects ttsc's own node/ttsx paths
691
+ // just before this runs), then the running interpreter.
692
+ const node =
693
+ effectiveEnv.TTSC_NODE_BINARY ??
694
+ process.env.TTSC_NODE_BINARY ??
695
+ process.execPath;
696
+ const ttsx = effectiveEnv.TTSC_TTSX_BINARY ?? process.env.TTSC_TTSX_BINARY;
672
697
  if (ttsx === undefined || ttsx.length === 0) {
673
698
  return undefined;
674
699
  }
@@ -708,7 +733,12 @@ function loadDescriptorViaTtsx(
708
733
  cwd: context.projectRoot,
709
734
  encoding: "utf8",
710
735
  env: {
711
- ...process.env,
736
+ ...effectiveEnv,
737
+ // Carry ttsc's own node/ttsx locators explicitly so the child (which
738
+ // may recurse into further descriptor loads) finds them even when the
739
+ // instance-env snapshot predates `withPluginLoaderEnv`.
740
+ TTSC_NODE_BINARY: node,
741
+ TTSC_TTSX_BINARY: ttsx,
712
742
  TTSC_PLUGIN_CONTEXT: JSON.stringify({
713
743
  binary: context.binary,
714
744
  cwd: context.cwd,
@@ -46,6 +46,21 @@ export interface ITtscCompilerContext {
46
46
  */
47
47
  projectRoot?: string;
48
48
 
49
+ /**
50
+ * Directory that anchors plugin config-file discovery and relative
51
+ * `configFile` resolution.
52
+ *
53
+ * Leave this unset so plugins anchor at the directory of the resolved
54
+ * {@link ITtscCompilerContext.tsconfig} as usual. Embedders that compile
55
+ * through a generated tsconfig outside the project (the bundler adapters'
56
+ * alias overlay, for example) set it to the real project directory; ttsc
57
+ * forwards the value to every plugin process as `TTSC_PLUGIN_CONFIG_DIR`, so
58
+ * `banner.config.*` / `strip.config.*` / `lint.config.*` discovery walks the
59
+ * project instead of the generated tsconfig's temp-dir ancestry. Relative
60
+ * paths are resolved from {@link ITtscCompilerContext.cwd}.
61
+ */
62
+ pluginConfigDir?: string;
63
+
49
64
  /**
50
65
  * Explicit TypeScript-Go executable for controlled embedding.
51
66
  *
@@ -74,8 +89,8 @@ export interface ITtscCompilerContext {
74
89
  *
75
90
  * Relative paths are resolved from {@link ITtscCompilerContext.cwd}. When
76
91
  * omitted, ttsc uses its normal cache location: `TTSC_CACHE_DIR` when
77
- * present, otherwise the user-level ttsc cache shared by projects on the same
78
- * machine.
92
+ * present, otherwise the project-local cache at the workspace root's
93
+ * `node_modules/.cache/ttsc`. ttsc keeps no machine-global cache.
79
94
  *
80
95
  * The same cache stores source-plugin binaries and the lazily built native
81
96
  * compiler host used for in-memory API compilation.
@@ -37,6 +37,15 @@ export interface ITtscPluginCapabilities {
37
37
  */
38
38
  lsp?: boolean;
39
39
 
40
+ /**
41
+ * Whether the sidecar accepts ttsc's `--project-context-json` identity
42
+ * protocol. The payload keeps lexical selection paths, physical Program
43
+ * paths, and explicit overrides as separate fields.
44
+ *
45
+ * @default false
46
+ */
47
+ projectContextArgs?: boolean;
48
+
40
49
  /**
41
50
  * Whether the sidecar accepts `--singleThreaded` and `--checkers` on its
42
51
  * command line. The lint sidecar parses both flags via `parseSubcommandFlags`
@@ -66,6 +66,21 @@ export interface ITtscPluginFactoryContext<T = ITtscProjectPluginConfig> {
66
66
  */
67
67
  plugin: T;
68
68
 
69
+ /**
70
+ * Caller-declared anchor for plugin config-file discovery and relative
71
+ * `configFile` resolution.
72
+ *
73
+ * Absent for ordinary invocations, where a factory anchors config discovery
74
+ * at the {@link ITtscPluginFactoryContext.tsconfig} directory. Present when
75
+ * the embedder compiles through a generated tsconfig outside the project (the
76
+ * bundler adapters' alias overlay): it names the real project directory, and
77
+ * a factory that discovers its own config file should anchor there instead of
78
+ * the generated tsconfig's temp-dir ancestry. Mirrors the
79
+ * `TTSC_PLUGIN_CONFIG_DIR` environment variable ttsc sets for native plugin
80
+ * processes.
81
+ */
82
+ pluginConfigDir?: string;
83
+
69
84
  /**
70
85
  * Project root used as the native plugin working directory and package
71
86
  * discovery base.
@@ -1,4 +1,5 @@
1
1
  import type { ITtscProjectPluginConfig } from "../ITtscProjectPluginConfig";
2
+ import type { ITtscProjectIdentity } from "./ITtscProjectIdentity";
2
3
 
3
4
  /** Resolved project config subset used inside the ttsc host. */
4
5
  export interface ITtscParsedProjectConfig {
@@ -9,6 +10,8 @@ export interface ITtscParsedProjectConfig {
9
10
  /** Project plugin entries after inheritance resolution. */
10
11
  plugins: ITtscProjectPluginConfig[];
11
12
  } & Record<string, unknown>;
13
+ /** Lexical and physical identities retained for native plugin contexts. */
14
+ identity: Omit<ITtscProjectIdentity, "pluginConfigOrigin">;
12
15
  /** Absolute path to the resolved tsconfig/jsconfig. */
13
16
  path: string;
14
17
  /** Directory that declared each inherited plugin entry. */
@@ -0,0 +1,17 @@
1
+ /** Separate lexical and physical identities for one selected project. */
2
+ export interface ITtscProjectIdentity {
3
+ /** Caller working directory before filesystem canonicalization. */
4
+ invocationCwd: string;
5
+ /** Caller-selected config spelling before filesystem canonicalization. */
6
+ logicalConfigPath: string;
7
+ /** Directory containing the caller-selected config spelling. */
8
+ logicalProjectRoot: string;
9
+ /** Realpath-resolved config used to load the TypeScript Program. */
10
+ physicalConfigPath: string;
11
+ /** Realpath-resolved root supplied to the TypeScript Program host. */
12
+ physicalProjectRoot: string;
13
+ /** Caller-declared project-root override, when present. */
14
+ explicitProjectRoot?: string;
15
+ /** Caller-declared plugin-config discovery origin, when present. */
16
+ pluginConfigOrigin?: string;
17
+ }
@@ -16,6 +16,14 @@ export interface TtscCommonOptions {
16
16
  cwd?: string;
17
17
  /** Project root override for generated tsconfig wrappers. */
18
18
  projectRoot?: string;
19
+ /**
20
+ * Directory that anchors plugin config-file discovery and relative
21
+ * `configFile` resolution (forwarded to plugin processes as
22
+ * `TTSC_PLUGIN_CONFIG_DIR`). Set by build integrations that compile through a
23
+ * generated tsconfig outside the project; when omitted, plugins anchor at the
24
+ * tsconfig's own directory.
25
+ */
26
+ pluginConfigDir?: string;
19
27
  /** Environment variables merged over `process.env` for child processes. */
20
28
  env?: NodeJS.ProcessEnv;
21
29
  /** Explicit root directory for compiled source-plugin cache artifacts. */
@@ -1,5 +1,5 @@
1
1
  {
2
- "note": "Accepted TIER-2 (reachable funcs) and TIER-3 (escaping types) shim gaps. The gate fails on any gap NOT listed here; expose a symbol and remove its line, or run -write-baseline to accept new ones deliberately. TIER-1 enum gaps are never listed — they are zero-tolerance (run -fix).",
2
+ "note": "Accepted TIER-2 (reachable funcs) and TIER-3 (escaping types) shim gaps. The gate fails on any gap NOT listed here; expose a symbol and remove its line, or run -write-baseline to accept new ones deliberately. TIER-1 enum and PRODUCER gaps are zero-tolerance; producer_exemptions must name genuine roots or ownership boundaries with non-empty rationales.",
3
3
  "accepted": [
4
4
  "ESCAPE|checker|ConditionalType",
5
5
  "ESCAPE|checker|ConstrainedType",
@@ -18,7 +18,6 @@
18
18
  "ESCAPE|checker|NodeBuilder",
19
19
  "ESCAPE|checker|NodeBuilderContext",
20
20
  "ESCAPE|checker|ObjectType",
21
- "ESCAPE|checker|Program",
22
21
  "ESCAPE|checker|ReverseMappedType",
23
22
  "ESCAPE|checker|SignatureFlags",
24
23
  "ESCAPE|checker|StringMappingType",
@@ -27,7 +26,6 @@
27
26
  "ESCAPE|checker|SymbolFormatFlags",
28
27
  "ESCAPE|checker|SymbolTrackerImpl",
29
28
  "ESCAPE|checker|TemplateLiteralType",
30
- "ESCAPE|checker|Tracer",
31
29
  "ESCAPE|checker|TupleType",
32
30
  "ESCAPE|checker|TypeFormatFlags",
33
31
  "ESCAPE|checker|TypeId",
@@ -93,7 +91,6 @@
93
91
  "FUNC|ast|GetAssignmentTarget",
94
92
  "FUNC|ast|GetBinaryOperatorPrecedence",
95
93
  "FUNC|ast|GetClassLikeDeclarationOfSymbol",
96
- "FUNC|ast|GetCombinedModifierFlags",
97
94
  "FUNC|ast|GetContainingClass",
98
95
  "FUNC|ast|GetContainingFunction",
99
96
  "FUNC|ast|GetDeclarationContainer",
@@ -237,7 +234,6 @@
237
234
  "FUNC|ast|IsComputedPropertyName",
238
235
  "FUNC|ast|IsConditionalExpression",
239
236
  "FUNC|ast|IsConditionalTypeNode",
240
- "FUNC|ast|IsConstAssertion",
241
237
  "FUNC|ast|IsConstTypeReference",
242
238
  "FUNC|ast|IsConstructSignatureDeclaration",
243
239
  "FUNC|ast|IsConstructorDeclaration",
@@ -498,7 +494,6 @@
498
494
  "FUNC|ast|IsParseTreeNode",
499
495
  "FUNC|ast|IsPartOfExclusivelyTypeOnlyImportOrExportDeclaration",
500
496
  "FUNC|ast|IsPartOfParameterDeclaration",
501
- "FUNC|ast|IsPartOfTypeNode",
502
497
  "FUNC|ast|IsPartOfTypeOnlyImportOrExportDeclaration",
503
498
  "FUNC|ast|IsPartOfTypeQuery",
504
499
  "FUNC|ast|IsPartiallyEmittedExpression",
@@ -701,5 +696,19 @@
701
696
  "FUNC|transformers|IsOriginalNodeSingleLine",
702
697
  "FUNC|transformers|MoveRangePastDecorators",
703
698
  "FUNC|transformers|MoveRangePastModifiers"
704
- ]
699
+ ],
700
+ "producer_exemptions": {
701
+ "ast.FileReference": "File references are caller-owned value records and are also available from parser-produced SourceFile directive fields.",
702
+ "checker.Tracer": "NewChecker accepts nil when tracing is disabled; a non-nil tracer is an optional host-owned facility.",
703
+ "checker.VerbosityContext": "Checker formatting methods accept nil for default output; non-nil verbosity state is optional caller-owned formatting context.",
704
+ "core.BuildOptions": "Build options are caller-owned configuration data that can be allocated through the exported type alias.",
705
+ "core.ParsedOptions": "SetParsedOptions is an upstream mutation hook on ParsedCommandLine; shim consumers obtain populated commands from the exported parse operations instead.",
706
+ "core.WatchOptions": "Watch options are caller-owned configuration data that can be allocated through the exported type alias.",
707
+ "lsp.ServerOptions": "Server options are caller-owned configuration data that can be allocated through the exported type alias.",
708
+ "lsp/lsproto.FileSystemWatcher": "WatchFiles receives protocol payloads owned by the LSP host; plugin callers do not construct the internal transport type.",
709
+ "lsp/lsproto.PublishDiagnosticsParams": "PublishDiagnostics receives protocol payloads owned by the LSP host; plugin callers do not construct the internal transport type.",
710
+ "scanner.SkipTriviaOptions": "Trivia options are caller-owned configuration data that can be allocated through the exported type alias.",
711
+ "sourcemap.Generator": "Printer.Write is an upstream emit hook whose generator is compiler-owned; plugin emit uses the exported compiler and printer entry points.",
712
+ "tsoptions.ExtendedConfigCacheEntry": "ParseExtendedConfig accepts a nil optional cache and produces the first entry without requiring a prior cache result."
713
+ }
705
714
  }