kea-typegen 3.7.0 → 3.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## 3.7.1 - 2026-06-26
2
+
3
+ Make watch mode incremental. When a watched rebuild can be proven local, regenerate only the changed or affected Kea logic files and keep the existing full-pass fallback for ambiguous changes.
4
+
1
5
  ## 3.7.0 - 2026-06-23
2
6
 
3
7
  Improve performance of typegen. Make type lookups lazier, try to read less files, better --file mode.
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kea-typegen",
3
- "version": "3.7.0",
3
+ "version": "3.7.1",
4
4
  "description": "Generate type definitions for kea logic",
5
5
  "scripts": {
6
6
  "start": "ts-node ./src/cli/typegen.ts",
@@ -1,7 +1,23 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const child_process_1 = require("child_process");
4
+ const fs = require("fs");
5
+ const os = require("os");
4
6
  const path = require("path");
7
+ const ts = require("typescript");
8
+ const watch_1 = require("../watch");
9
+ function writeFile(filePath, source) {
10
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
11
+ fs.writeFileSync(filePath, source);
12
+ }
13
+ function createProgram(fileNames) {
14
+ return ts.createProgram(fileNames, {
15
+ module: ts.ModuleKind.CommonJS,
16
+ moduleResolution: ts.ModuleResolutionKind.NodeJs,
17
+ target: ts.ScriptTarget.ES2020,
18
+ skipLibCheck: true,
19
+ });
20
+ }
5
21
  test('watch mode does not overlap successive typegen passes', async () => {
6
22
  const repoRoot = path.resolve(__dirname, '..', '..');
7
23
  const scriptPath = path.join(repoRoot, 'src/test-support/watch-mode-smoke.js');
@@ -27,6 +43,168 @@ test('watch mode does not overlap successive typegen passes', async () => {
27
43
  expect(payload.started).toBeGreaterThan(1);
28
44
  expect(payload.completed).toBeGreaterThan(0);
29
45
  expect(payload.maxActive).toBe(1);
46
+ expect(payload.incrementalAfterEdit).toBe(true);
47
+ expect(payload.parsedLogicCountsAfterEdit).toContain(1);
48
+ expect(payload.sourceFilePathsAfterEdit.some(Boolean)).toBe(true);
30
49
  expect(result.stderr).toBe('');
31
50
  }, 30000);
51
+ test('watch planner limits a direct logic edit to the changed logic and dependent logics', () => {
52
+ const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'kea-typegen-watch-direct-logic-'));
53
+ try {
54
+ const logicDir = path.join(tempDir, 'src');
55
+ const firstLogicPath = path.join(logicDir, 'firstLogic.ts');
56
+ const secondLogicPath = path.join(logicDir, 'secondLogic.ts');
57
+ const unrelatedLogicPath = path.join(logicDir, 'unrelatedLogic.ts');
58
+ const keaDtsPath = path.join(tempDir, 'node_modules', 'kea', 'index.d.ts');
59
+ writeFile(keaDtsPath, 'export function kea<T = any>(input: any): T\n');
60
+ writeFile(firstLogicPath, [
61
+ "import { kea } from 'kea'",
62
+ '',
63
+ 'export const firstLogic = kea({',
64
+ ' actions: () => ({ first: true }),',
65
+ '})',
66
+ '',
67
+ ].join('\n'));
68
+ writeFile(secondLogicPath, [
69
+ "import { kea } from 'kea'",
70
+ "import { firstLogic } from './firstLogic'",
71
+ '',
72
+ 'export const secondLogic = kea({',
73
+ ' connect: { values: [firstLogic, ["first"]] },',
74
+ '})',
75
+ '',
76
+ ].join('\n'));
77
+ writeFile(unrelatedLogicPath, [
78
+ "import { kea } from 'kea'",
79
+ '',
80
+ 'export const unrelatedLogic = kea({',
81
+ ' actions: () => ({ unrelated: true }),',
82
+ '})',
83
+ '',
84
+ ].join('\n'));
85
+ const program = createProgram([firstLogicPath, secondLogicPath, unrelatedLogicPath]);
86
+ const plan = (0, watch_1.planWatchTypegenPass)(program, [
87
+ { fileName: firstLogicPath, eventKind: ts.FileWatcherEventKind.Changed },
88
+ ]);
89
+ expect(plan).toEqual({
90
+ kind: 'files',
91
+ sourceFilePaths: [firstLogicPath, secondLogicPath].sort(),
92
+ reason: '2 affected Kea logic files',
93
+ });
94
+ }
95
+ finally {
96
+ fs.rmSync(tempDir, { recursive: true, force: true });
97
+ }
98
+ });
99
+ test('watch planner regenerates logics affected by a helper type edit', () => {
100
+ const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'kea-typegen-watch-helper-'));
101
+ try {
102
+ const logicDir = path.join(tempDir, 'src');
103
+ const helperPath = path.join(logicDir, 'helper.ts');
104
+ const logicPath = path.join(logicDir, 'logic.ts');
105
+ const unrelatedLogicPath = path.join(logicDir, 'unrelatedLogic.ts');
106
+ const keaDtsPath = path.join(tempDir, 'node_modules', 'kea', 'index.d.ts');
107
+ writeFile(keaDtsPath, 'export function kea<T = any>(input: any): T\n');
108
+ writeFile(helperPath, 'export interface HelperType { value: string }\n');
109
+ writeFile(logicPath, [
110
+ "import { kea } from 'kea'",
111
+ "import type { HelperType } from './helper'",
112
+ '',
113
+ 'export const logic = kea({',
114
+ ' actions: () => ({ setValue: (value: HelperType) => ({ value }) }),',
115
+ '})',
116
+ '',
117
+ ].join('\n'));
118
+ writeFile(unrelatedLogicPath, [
119
+ "import { kea } from 'kea'",
120
+ '',
121
+ 'export const unrelatedLogic = kea({',
122
+ ' actions: () => ({ unrelated: true }),',
123
+ '})',
124
+ '',
125
+ ].join('\n'));
126
+ const program = createProgram([helperPath, logicPath, unrelatedLogicPath]);
127
+ const plan = (0, watch_1.planWatchTypegenPass)(program, [
128
+ { fileName: helperPath, eventKind: ts.FileWatcherEventKind.Changed },
129
+ ]);
130
+ expect(plan).toEqual({
131
+ kind: 'files',
132
+ sourceFilePaths: [logicPath],
133
+ reason: '1 affected Kea logic file',
134
+ });
135
+ }
136
+ finally {
137
+ fs.rmSync(tempDir, { recursive: true, force: true });
138
+ }
139
+ });
140
+ test('watch planner maps generated type changes back to source logics and dependents', () => {
141
+ const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'kea-typegen-watch-type-file-'));
142
+ try {
143
+ const logicDir = path.join(tempDir, 'src');
144
+ const firstLogicPath = path.join(logicDir, 'firstLogic.ts');
145
+ const firstLogicTypePath = path.join(logicDir, 'firstLogicType.ts');
146
+ const secondLogicPath = path.join(logicDir, 'secondLogic.ts');
147
+ const keaDtsPath = path.join(tempDir, 'node_modules', 'kea', 'index.d.ts');
148
+ writeFile(keaDtsPath, 'export function kea<T = any>(input: any): T\n');
149
+ writeFile(firstLogicTypePath, 'export interface firstLogicType {}\n');
150
+ writeFile(firstLogicPath, [
151
+ "import { kea } from 'kea'",
152
+ "import type { firstLogicType } from './firstLogicType'",
153
+ '',
154
+ 'export const firstLogic = kea<firstLogicType>({',
155
+ ' actions: () => ({ first: true }),',
156
+ '})',
157
+ '',
158
+ ].join('\n'));
159
+ writeFile(secondLogicPath, [
160
+ "import { kea } from 'kea'",
161
+ "import { firstLogic } from './firstLogic'",
162
+ '',
163
+ 'export const secondLogic = kea({',
164
+ ' connect: { actions: [firstLogic, ["first"]] },',
165
+ '})',
166
+ '',
167
+ ].join('\n'));
168
+ const program = createProgram([firstLogicPath, firstLogicTypePath, secondLogicPath]);
169
+ const plan = (0, watch_1.planWatchTypegenPass)(program, [
170
+ { fileName: firstLogicTypePath, eventKind: ts.FileWatcherEventKind.Changed },
171
+ ]);
172
+ expect(plan).toEqual({
173
+ kind: 'files',
174
+ sourceFilePaths: [firstLogicPath, secondLogicPath].sort(),
175
+ reason: '2 affected Kea logic files',
176
+ });
177
+ }
178
+ finally {
179
+ fs.rmSync(tempDir, { recursive: true, force: true });
180
+ }
181
+ });
182
+ test('watch planner falls back to a full pass for deleted files and resetContext changes', () => {
183
+ const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'kea-typegen-watch-full-'));
184
+ try {
185
+ const logicDir = path.join(tempDir, 'src');
186
+ const logicPath = path.join(logicDir, 'logic.ts');
187
+ const contextPath = path.join(logicDir, 'context.ts');
188
+ const keaDtsPath = path.join(tempDir, 'node_modules', 'kea', 'index.d.ts');
189
+ writeFile(keaDtsPath, 'export function kea<T = any>(input: any): T\n');
190
+ writeFile(logicPath, [
191
+ "import { kea } from 'kea'",
192
+ '',
193
+ 'export const logic = kea({',
194
+ ' actions: () => ({ value: true }),',
195
+ '})',
196
+ '',
197
+ ].join('\n'));
198
+ writeFile(contextPath, ["import { resetContext } from 'kea'", '', 'resetContext({ plugins: [] })', ''].join('\n'));
199
+ const program = createProgram([logicPath, contextPath]);
200
+ expect((0, watch_1.planWatchTypegenPass)(program, [{ fileName: logicPath, eventKind: ts.FileWatcherEventKind.Deleted }])).toEqual({ kind: 'full', reason: 'deleted file detected' });
201
+ expect((0, watch_1.planWatchTypegenPass)(program, [{ fileName: contextPath, eventKind: ts.FileWatcherEventKind.Changed }])).toEqual({
202
+ kind: 'full',
203
+ reason: `resetContext changed: ${path.relative(process.cwd(), contextPath)}`,
204
+ });
205
+ }
206
+ finally {
207
+ fs.rmSync(tempDir, { recursive: true, force: true });
208
+ }
209
+ });
32
210
  //# sourceMappingURL=watch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../../src/__tests__/watch.ts"],"names":[],"mappings":";;AAAA,iDAAqC;AACrC,6BAA4B;AAE5B,IAAI,CACA,uDAAuD,EACvD,KAAK,IAAI,EAAE;IACP,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;IACpD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,sCAAsC,CAAC,CAAA;IAE9E,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAC5B,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAChB,MAAM,KAAK,GAAG,IAAA,qBAAK,EAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE;YAChD,GAAG,EAAE,QAAQ;YACb,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE;SAC5C,CAAC,CAAA;QAEF,IAAI,MAAM,GAAG,EAAE,CAAA;QACf,IAAI,MAAM,GAAG,EAAE,CAAA;QAEf,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAA;QAC9B,CAAC,CAAC,CAAA;QAEF,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAA;QAC9B,CAAC,CAAC,CAAA;QAEF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QACzB,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;IAClF,CAAC,CACJ,CAAA;IAED,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAA;IAChC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAE3B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;IAEhD,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;IAC1C,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;IAC5C,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AAClC,CAAC,EACD,KAAK,CACR,CAAA"}
1
+ {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../../src/__tests__/watch.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ const visit_1 = require("./visit/visit");
8
8
  const print_1 = require("./print/print");
9
9
  const package_json_1 = require("../package.json");
10
10
  const cache_1 = require("./cache");
11
+ const watch_1 = require("./watch");
11
12
  if (parseInt(ts.versionMajorMinor.split('.')[0]) < 5) {
12
13
  ;
13
14
  ts.defaultMaximumTruncationLength = Infinity;
@@ -38,8 +39,9 @@ async function runTypeGen(appOptions) {
38
39
  const compilerOptions = loadTsConfig(appOptions.tsConfigPath, log);
39
40
  if (appOptions.watch) {
40
41
  const createProgram = ts.createSemanticDiagnosticsBuilderProgram;
42
+ const watchChangeTracker = (0, watch_1.createWatchChangeTracker)(ts.sys);
41
43
  const host = ts.createWatchCompilerHost(appOptions.tsConfigPath, compilerOptions.options, {
42
- ...ts.sys,
44
+ ...watchChangeTracker.system,
43
45
  writeFile(_path, _data, _writeByteOrderMark) {
44
46
  return null;
45
47
  },
@@ -64,6 +66,7 @@ async function runTypeGen(appOptions) {
64
66
  }
65
67
  const origPostProgramCreate = host.afterProgramCreate;
66
68
  let scheduledProgram;
69
+ let scheduledChanges = [];
67
70
  let runningTypegen = false;
68
71
  const runScheduledTypegen = async () => {
69
72
  if (runningTypegen) {
@@ -73,9 +76,11 @@ async function runTypeGen(appOptions) {
73
76
  try {
74
77
  while (scheduledProgram) {
75
78
  const nextProgram = scheduledProgram;
79
+ const nextChanges = scheduledChanges;
76
80
  scheduledProgram = undefined;
81
+ scheduledChanges = [];
77
82
  try {
78
- await goThroughAllTheFiles(nextProgram, appOptions);
83
+ await goThroughWatchTypegenPlan(nextProgram, appOptions, (0, watch_1.planWatchTypegenPass)(nextProgram, nextChanges));
79
84
  }
80
85
  catch (error) {
81
86
  console.error('⛔ Error running kea-typegen in watch mode');
@@ -92,8 +97,10 @@ async function runTypeGen(appOptions) {
92
97
  };
93
98
  host.afterProgramCreate = (prog) => {
94
99
  program = prog.getProgram();
100
+ const changes = watchChangeTracker.consume();
95
101
  origPostProgramCreate === null || origPostProgramCreate === void 0 ? void 0 : origPostProgramCreate(prog);
96
102
  scheduledProgram = program;
103
+ scheduledChanges.push(...changes);
97
104
  void runScheduledTypegen();
98
105
  };
99
106
  ts.createWatchProgram(host);
@@ -124,6 +131,35 @@ async function runTypeGen(appOptions) {
124
131
  }
125
132
  return response;
126
133
  }
134
+ async function goThroughWatchTypegenPlan(program, appOptions, plan) {
135
+ if (plan.kind === 'skip') {
136
+ if (appOptions.verbose) {
137
+ appOptions.log(`⏭️ Skipping typegen watch pass: ${plan.reason}`);
138
+ }
139
+ return { filesToWrite: 0, writtenFiles: 0, filesToModify: 0 };
140
+ }
141
+ if (plan.kind === 'full') {
142
+ if (appOptions.verbose) {
143
+ appOptions.log(`🔎 Running full typegen watch pass: ${plan.reason}`);
144
+ }
145
+ return await goThroughAllTheFiles(program, appOptions);
146
+ }
147
+ if (appOptions.verbose) {
148
+ appOptions.log(`🎯 Running incremental typegen watch pass: ${plan.reason}`);
149
+ }
150
+ const response = { filesToWrite: 0, writtenFiles: 0, filesToModify: 0 };
151
+ for (const sourceFilePath of plan.sourceFilePaths) {
152
+ const fileResponse = await goThroughAllTheFiles(program, {
153
+ ...appOptions,
154
+ delete: false,
155
+ sourceFilePath,
156
+ });
157
+ response.filesToWrite += fileResponse.filesToWrite;
158
+ response.writtenFiles += fileResponse.writtenFiles;
159
+ response.filesToModify += fileResponse.filesToModify;
160
+ }
161
+ return response;
162
+ }
127
163
  if (program && !appOptions.watch && appOptions.sourceFilePath) {
128
164
  await goThroughAllTheFiles(program, appOptions);
129
165
  if (appOptions.write) {
@@ -1 +1 @@
1
- {"version":3,"file":"typegen.js","sourceRoot":"","sources":["../../src/typegen.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"typegen.js","sourceRoot":"","sources":["../../src/typegen.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import * as ts from 'typescript';
2
+ export interface WatchFileChange {
3
+ fileName: string;
4
+ eventKind: ts.FileWatcherEventKind;
5
+ }
6
+ export type WatchTypegenPlan = {
7
+ kind: 'full';
8
+ reason: string;
9
+ } | {
10
+ kind: 'files';
11
+ sourceFilePaths: string[];
12
+ reason: string;
13
+ } | {
14
+ kind: 'skip';
15
+ reason: string;
16
+ };
17
+ export interface WatchChangeTracker {
18
+ system: ts.System;
19
+ consume(): WatchFileChange[];
20
+ }
21
+ export declare function createWatchChangeTracker(baseSystem: ts.System): WatchChangeTracker;
22
+ export declare function planWatchTypegenPass(program: ts.Program, changes: WatchFileChange[]): WatchTypegenPlan;
@@ -0,0 +1,183 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createWatchChangeTracker = createWatchChangeTracker;
4
+ exports.planWatchTypegenPass = planWatchTypegenPass;
5
+ const fs = require("fs");
6
+ const path = require("path");
7
+ const ts = require("typescript");
8
+ const utils_1 = require("./utils");
9
+ const KEA_CALL_REGEX = /\bkea\s*[<(]/;
10
+ const SOURCE_EXTENSIONS = ['.ts', '.tsx', '.js', '.jsx', '.mjs', '.mjsx'];
11
+ const TYPEGEN_FILE_REGEX = /(^|\.|\/)typegen\.[tj]s$/;
12
+ const MAX_INCREMENTAL_CHANGED_FILES = 50;
13
+ function createWatchChangeTracker(baseSystem) {
14
+ const changes = new Map();
15
+ const track = (fileName, eventKind) => {
16
+ changes.set(path.resolve(fileName), { fileName: path.resolve(fileName), eventKind });
17
+ };
18
+ const system = {
19
+ ...baseSystem,
20
+ watchFile(fileName, callback, pollingInterval, options) {
21
+ return baseSystem.watchFile(fileName, (changedFileName, eventKind, modifiedTime) => {
22
+ track(changedFileName, eventKind);
23
+ callback(changedFileName, eventKind, modifiedTime);
24
+ }, pollingInterval, options);
25
+ },
26
+ watchDirectory(fileName, callback, recursive, options) {
27
+ return baseSystem.watchDirectory(fileName, (changedFileName) => {
28
+ track(changedFileName, ts.FileWatcherEventKind.Created);
29
+ callback(changedFileName);
30
+ }, recursive, options);
31
+ },
32
+ };
33
+ return {
34
+ system,
35
+ consume() {
36
+ const currentChanges = [...changes.values()];
37
+ changes.clear();
38
+ return currentChanges;
39
+ },
40
+ };
41
+ }
42
+ function planWatchTypegenPass(program, changes) {
43
+ if (changes.length === 0) {
44
+ return { kind: 'full', reason: 'initial watch pass' };
45
+ }
46
+ const normalizedChanges = dedupeChanges(changes);
47
+ if (normalizedChanges.length > MAX_INCREMENTAL_CHANGED_FILES) {
48
+ return { kind: 'full', reason: `${normalizedChanges.length} files changed` };
49
+ }
50
+ if (normalizedChanges.some((change) => change.eventKind === ts.FileWatcherEventKind.Deleted)) {
51
+ return { kind: 'full', reason: 'deleted file detected' };
52
+ }
53
+ const sourceFilesByPath = getSourceFilesByPath(program);
54
+ const reverseDependencies = buildReverseDependencyMap(program);
55
+ const queue = [];
56
+ for (const change of normalizedChanges) {
57
+ const changedPath = path.resolve(change.fileName);
58
+ if (isTypegenModuleFile(changedPath)) {
59
+ return { kind: 'full', reason: `typegen module changed: ${path.relative(process.cwd(), changedPath)}` };
60
+ }
61
+ const sourceFile = sourceFilesByPath.get(changedPath);
62
+ if (sourceFile === null || sourceFile === void 0 ? void 0 : sourceFile.text.includes('resetContext')) {
63
+ return { kind: 'full', reason: `resetContext changed: ${path.relative(process.cwd(), changedPath)}` };
64
+ }
65
+ if (isGeneratedTypeFile(changedPath)) {
66
+ queue.push(...sourcePathsForTypeFile(changedPath, sourceFilesByPath));
67
+ queue.push(changedPath);
68
+ continue;
69
+ }
70
+ if (sourceFile) {
71
+ if (sourceFile.isDeclarationFile) {
72
+ return {
73
+ kind: 'full',
74
+ reason: `declaration file changed: ${path.relative(process.cwd(), changedPath)}`,
75
+ };
76
+ }
77
+ queue.push(changedPath);
78
+ continue;
79
+ }
80
+ if (isSourceLikeFile(changedPath) && fs.existsSync(changedPath)) {
81
+ return {
82
+ kind: 'full',
83
+ reason: `new source file outside program: ${path.relative(process.cwd(), changedPath)}`,
84
+ };
85
+ }
86
+ }
87
+ const affectedLogicFiles = collectAffectedLogicFiles(queue, sourceFilesByPath, reverseDependencies);
88
+ if (affectedLogicFiles.length === 0) {
89
+ return { kind: 'skip', reason: 'no affected Kea logic files' };
90
+ }
91
+ return {
92
+ kind: 'files',
93
+ sourceFilePaths: affectedLogicFiles,
94
+ reason: `${affectedLogicFiles.length} affected Kea logic file${affectedLogicFiles.length === 1 ? '' : 's'}`,
95
+ };
96
+ }
97
+ function dedupeChanges(changes) {
98
+ const deduped = new Map();
99
+ for (const change of changes) {
100
+ deduped.set(path.resolve(change.fileName), { ...change, fileName: path.resolve(change.fileName) });
101
+ }
102
+ return [...deduped.values()];
103
+ }
104
+ function getSourceFilesByPath(program) {
105
+ const sourceFilesByPath = new Map();
106
+ for (const sourceFile of program.getSourceFiles()) {
107
+ sourceFilesByPath.set(path.resolve(sourceFile.fileName), sourceFile);
108
+ }
109
+ return sourceFilesByPath;
110
+ }
111
+ function buildReverseDependencyMap(program) {
112
+ const checker = program.getTypeChecker();
113
+ const reverseDependencies = new Map();
114
+ for (const sourceFile of program.getSourceFiles()) {
115
+ if (sourceFile.isDeclarationFile) {
116
+ continue;
117
+ }
118
+ const importerPath = path.resolve(sourceFile.fileName);
119
+ ts.forEachChild(sourceFile, function visit(node) {
120
+ if (ts.isImportDeclaration(node)) {
121
+ const importedFileName = (0, utils_1.getFilenameForImportDeclaration)(checker, node);
122
+ if (importedFileName) {
123
+ const importedPath = path.resolve(importedFileName);
124
+ let importers = reverseDependencies.get(importedPath);
125
+ if (!importers) {
126
+ importers = new Set();
127
+ reverseDependencies.set(importedPath, importers);
128
+ }
129
+ importers.add(importerPath);
130
+ }
131
+ }
132
+ ts.forEachChild(node, visit);
133
+ });
134
+ }
135
+ return reverseDependencies;
136
+ }
137
+ function collectAffectedLogicFiles(startPaths, sourceFilesByPath, reverseDependencies) {
138
+ var _a;
139
+ const visited = new Set();
140
+ const queue = startPaths.map((filePath) => path.resolve(filePath));
141
+ const affectedLogicFiles = new Set();
142
+ while (queue.length > 0) {
143
+ const currentPath = queue.shift();
144
+ if (visited.has(currentPath)) {
145
+ continue;
146
+ }
147
+ visited.add(currentPath);
148
+ const sourceFile = sourceFilesByPath.get(currentPath);
149
+ if (sourceFile &&
150
+ !sourceFile.isDeclarationFile &&
151
+ !isGeneratedTypeFile(currentPath) &&
152
+ sourceFileMightContainKeaCall(sourceFile)) {
153
+ affectedLogicFiles.add(currentPath);
154
+ }
155
+ if (isGeneratedTypeFile(currentPath)) {
156
+ queue.push(...sourcePathsForTypeFile(currentPath, sourceFilesByPath));
157
+ }
158
+ for (const importerPath of (_a = reverseDependencies.get(currentPath)) !== null && _a !== void 0 ? _a : []) {
159
+ queue.push(importerPath);
160
+ }
161
+ }
162
+ return [...affectedLogicFiles].sort();
163
+ }
164
+ function sourcePathsForTypeFile(typeFilePath, sourceFilesByPath) {
165
+ if (!isGeneratedTypeFile(typeFilePath)) {
166
+ return [];
167
+ }
168
+ const sourceBasePath = typeFilePath.slice(0, -'Type.ts'.length);
169
+ return SOURCE_EXTENSIONS.map((extension) => `${sourceBasePath}${extension}`).filter((sourcePath) => sourceFilesByPath.has(path.resolve(sourcePath)));
170
+ }
171
+ function isGeneratedTypeFile(filePath) {
172
+ return filePath.endsWith('Type.ts');
173
+ }
174
+ function isSourceLikeFile(filePath) {
175
+ return SOURCE_EXTENSIONS.some((extension) => filePath.endsWith(extension));
176
+ }
177
+ function isTypegenModuleFile(filePath) {
178
+ return TYPEGEN_FILE_REGEX.test(filePath.split(path.sep).join('/'));
179
+ }
180
+ function sourceFileMightContainKeaCall(sourceFile) {
181
+ return KEA_CALL_REGEX.test(sourceFile.text);
182
+ }
183
+ //# sourceMappingURL=watch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/watch.ts"],"names":[],"mappings":"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"}