kea-typegen 3.7.1 → 3.8.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.
Files changed (51) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/README.md +33 -0
  3. package/dist/package.json +3 -1
  4. package/dist/src/__tests__/inline.d.ts +1 -0
  5. package/dist/src/__tests__/inline.js +606 -0
  6. package/dist/src/__tests__/inline.js.map +1 -0
  7. package/dist/src/cache.d.ts +1 -0
  8. package/dist/src/cache.js +19 -0
  9. package/dist/src/cache.js.map +1 -1
  10. package/dist/src/cli/typegen.js +9 -0
  11. package/dist/src/cli/typegen.js.map +1 -1
  12. package/dist/src/print/print.d.ts +6 -0
  13. package/dist/src/print/print.js +61 -42
  14. package/dist/src/print/print.js.map +1 -1
  15. package/dist/src/types.d.ts +9 -0
  16. package/dist/src/utils.d.ts +6 -0
  17. package/dist/src/utils.js +82 -1
  18. package/dist/src/utils.js.map +1 -1
  19. package/dist/src/visit/visit.js +7 -0
  20. package/dist/src/visit/visit.js.map +1 -1
  21. package/dist/src/visit/visitConnect.js +40 -0
  22. package/dist/src/visit/visitConnect.js.map +1 -1
  23. package/dist/src/visit/visitSelectors.js +14 -1
  24. package/dist/src/visit/visitSelectors.js.map +1 -1
  25. package/dist/src/write/writeInlineLogicTypes.d.ts +8 -0
  26. package/dist/src/write/writeInlineLogicTypes.js +259 -0
  27. package/dist/src/write/writeInlineLogicTypes.js.map +1 -0
  28. package/dist/src/write/writeTypeImports.d.ts +8 -0
  29. package/dist/src/write/writeTypeImports.js +3 -0
  30. package/dist/src/write/writeTypeImports.js.map +1 -1
  31. package/dist/tsconfig.tsbuildinfo +1 -1
  32. package/package.json +3 -1
  33. package/samples/manualTypedLogic.ts +20 -0
  34. package/samples-inline/counterLogic.ts +37 -0
  35. package/samples-inline/manualLogic.ts +20 -0
  36. package/samples-inline/profileLogic.ts +31 -0
  37. package/samples-inline/searchLogic.ts +32 -0
  38. package/samples-inline/tsconfig.json +17 -0
  39. package/samples-inline/types.ts +5 -0
  40. package/src/__tests__/inline.ts +747 -0
  41. package/src/cache.ts +19 -0
  42. package/src/cli/typegen.ts +10 -0
  43. package/src/print/print.ts +106 -59
  44. package/src/types.ts +15 -0
  45. package/src/utils.ts +124 -1
  46. package/src/visit/visit.ts +15 -0
  47. package/src/visit/visitConnect.ts +50 -0
  48. package/src/visit/visitSelectors.ts +26 -1
  49. package/src/write/writeInlineLogicTypes.ts +354 -0
  50. package/src/write/writeTypeImports.ts +4 -4
  51. package/tsconfig.json +1 -0
@@ -0,0 +1,606 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const fs = require("fs");
4
+ const os = require("os");
5
+ const path = require("path");
6
+ const ts = require("typescript");
7
+ const utils_1 = require("../utils");
8
+ const visit_1 = require("../visit/visit");
9
+ const print_1 = require("../print/print");
10
+ describe('manually typed logics', () => {
11
+ test('skips logics typed with MakeLogicType', () => {
12
+ const logicSource = `
13
+ import { kea, MakeLogicType } from 'kea'
14
+
15
+ interface Values { name: string }
16
+ interface Actions { updateName: (name: string) => { name: string } }
17
+
18
+ const logic = kea<MakeLogicType<Values, Actions>>({
19
+ actions: () => ({
20
+ updateName: (name: string) => ({ name }),
21
+ }),
22
+ })
23
+ `;
24
+ expect((0, visit_1.visitProgram)((0, utils_1.programFromSource)(logicSource)).length).toBe(0);
25
+ });
26
+ test('skips logics typed with a custom local type, even when named like a generated one', () => {
27
+ const logicSource = `
28
+ import { kea, MakeLogicType } from 'kea'
29
+
30
+ export type logicType = MakeLogicType<{ name: string }, { updateName: (name: string) => { name: string } }>
31
+
32
+ const logic = kea<logicType>({
33
+ actions: () => ({
34
+ updateName: (name: string) => ({ name }),
35
+ }),
36
+ })
37
+ `;
38
+ expect((0, visit_1.visitProgram)((0, utils_1.programFromSource)(logicSource)).length).toBe(0);
39
+ });
40
+ test('does not skip local logic types carrying the kea-typegen marker', () => {
41
+ const logicSource = `
42
+ import { kea, MakeLogicType } from 'kea'
43
+
44
+ // Generated by kea-typegen. DO NOT EDIT THIS BLOCK MANUALLY.
45
+ export type logicType = MakeLogicType<{ name: string }, { updateName: (name: string) => { name: string } }>
46
+
47
+ const logic = kea<logicType>({
48
+ actions: () => ({
49
+ updateName: (name: string) => ({ name }),
50
+ }),
51
+ })
52
+ `;
53
+ const parsedLogics = (0, visit_1.visitProgram)((0, utils_1.programFromSource)(logicSource));
54
+ expect(parsedLogics.length).toBe(1);
55
+ expect(parsedLogics[0].actions.map((a) => a.name)).toEqual(['updateName']);
56
+ });
57
+ test('does not skip generated blocks where the marker sits on the values interface', () => {
58
+ const logicSource = `
59
+ import { kea, MakeLogicType } from 'kea'
60
+
61
+ // Generated by kea-typegen. DO NOT EDIT THIS BLOCK MANUALLY.
62
+ export interface logicValues { name: string }
63
+
64
+ export interface logicActions { updateName: (name: string) => { name: string } }
65
+
66
+ export type logicType = MakeLogicType<logicValues, logicActions>
67
+
68
+ const logic = kea<logicType>({
69
+ actions: () => ({
70
+ updateName: (name: string) => ({ name }),
71
+ }),
72
+ })
73
+ `;
74
+ const parsedLogics = (0, visit_1.visitProgram)((0, utils_1.programFromSource)(logicSource));
75
+ expect(parsedLogics.length).toBe(1);
76
+ });
77
+ test('does not skip logics with a generated type that does not resolve yet', () => {
78
+ const logicSource = `
79
+ import { kea } from 'kea'
80
+
81
+ const logic = kea<logicType>({
82
+ actions: () => ({
83
+ updateName: (name: string) => ({ name }),
84
+ }),
85
+ })
86
+ `;
87
+ expect((0, visit_1.visitProgram)((0, utils_1.programFromSource)(logicSource)).length).toBe(1);
88
+ });
89
+ });
90
+ describe('inline mode', () => {
91
+ const createProgram = (fileNames) => ts.createProgram(fileNames, {
92
+ module: ts.ModuleKind.CommonJS,
93
+ moduleResolution: ts.ModuleResolutionKind.NodeJs,
94
+ target: ts.ScriptTarget.ES2020,
95
+ skipLibCheck: true,
96
+ });
97
+ test('writes and updates MakeLogicType blocks above the logic', async () => {
98
+ var _a, _b, _c, _d;
99
+ const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'kea-typegen-inline-'));
100
+ try {
101
+ const logicDir = path.join(tempDir, 'src');
102
+ const logicPath = path.join(logicDir, 'logic.ts');
103
+ const logicTypePath = path.join(logicDir, 'logicType.ts');
104
+ const keaDtsPath = path.join(tempDir, 'node_modules', 'kea', 'index.d.ts');
105
+ fs.mkdirSync(path.dirname(keaDtsPath), { recursive: true });
106
+ fs.mkdirSync(logicDir, { recursive: true });
107
+ fs.writeFileSync(keaDtsPath, [
108
+ 'export function kea<T = any>(input: any): T',
109
+ 'export interface MakeLogicType<V = any, A = any, P = any> {}',
110
+ '',
111
+ ].join('\n'));
112
+ fs.writeFileSync(logicPath, [
113
+ "import { kea } from 'kea'",
114
+ '',
115
+ 'export const logic = kea({',
116
+ ' props: {} as { id: number },',
117
+ ' actions: () => ({',
118
+ ' setValue: (value: string) => ({ value }),',
119
+ ' }),',
120
+ ' reducers: () => ({',
121
+ " value: ['' as string, { setValue: (_, { value }) => value }],",
122
+ ' }),',
123
+ '})',
124
+ '',
125
+ ].join('\n'));
126
+ const appOptions = {
127
+ rootPath: logicDir,
128
+ typesPath: logicDir,
129
+ packageJsonPath: path.join(tempDir, 'package.json'),
130
+ inline: true,
131
+ write: true,
132
+ log: () => { },
133
+ };
134
+ const program = createProgram([logicPath]);
135
+ const parsedLogics = (0, visit_1.visitProgram)(program, appOptions);
136
+ expect(parsedLogics.length).toBe(1);
137
+ const response = await (0, print_1.printToFiles)(program, appOptions, parsedLogics);
138
+ expect(response.writtenFiles).toBe(1);
139
+ const writtenLogic = fs.readFileSync(logicPath, 'utf8');
140
+ expect(writtenLogic).toContain("import { MakeLogicType, kea } from 'kea'");
141
+ expect(writtenLogic).toContain('// Generated by kea-typegen. DO NOT EDIT THIS BLOCK MANUALLY.');
142
+ expect(writtenLogic).toContain('export interface logicValues {');
143
+ expect(writtenLogic).toContain('export interface logicActions {');
144
+ expect(writtenLogic).toContain('export interface logicProps {');
145
+ expect(writtenLogic).toContain('export type logicType = MakeLogicType<logicValues, logicActions, logicProps>');
146
+ expect(writtenLogic).toContain('export const logic = kea<logicType>({');
147
+ expect(writtenLogic).toContain('value: string');
148
+ expect(writtenLogic).toContain('setValue: (value: string) =>');
149
+ expect(fs.existsSync(logicTypePath)).toBe(false);
150
+ const secondProgram = createProgram([logicPath]);
151
+ const secondParsedLogics = (0, visit_1.visitProgram)(secondProgram, appOptions);
152
+ expect(secondParsedLogics.length).toBe(1);
153
+ const secondResponse = await (0, print_1.printToFiles)(secondProgram, appOptions, secondParsedLogics);
154
+ expect(secondResponse).toEqual({ filesToWrite: 0, writtenFiles: 0, filesToModify: 0 });
155
+ expect(fs.readFileSync(logicPath, 'utf8')).toBe(writtenLogic);
156
+ fs.writeFileSync(logicPath, fs
157
+ .readFileSync(logicPath, 'utf8')
158
+ .replace('setValue: (value: string) => ({ value }),', 'setValue: (value: string) => ({ value }),\n reset: true,'));
159
+ const thirdProgram = createProgram([logicPath]);
160
+ const thirdResponse = await (0, print_1.printToFiles)(thirdProgram, appOptions, (0, visit_1.visitProgram)(thirdProgram, appOptions));
161
+ expect(thirdResponse.writtenFiles).toBe(1);
162
+ const updatedLogic = fs.readFileSync(logicPath, 'utf8');
163
+ expect(updatedLogic).toContain('reset: ');
164
+ expect((_a = updatedLogic.match(/export type logicType = MakeLogicType</g)) === null || _a === void 0 ? void 0 : _a.length).toBe(1);
165
+ expect((_b = updatedLogic.match(/export interface logicValues \{/g)) === null || _b === void 0 ? void 0 : _b.length).toBe(1);
166
+ expect((_c = updatedLogic.match(/export interface logicActions \{/g)) === null || _c === void 0 ? void 0 : _c.length).toBe(1);
167
+ expect((_d = updatedLogic.match(/DO NOT EDIT THIS BLOCK MANUALLY/g)) === null || _d === void 0 ? void 0 : _d.length).toBe(3);
168
+ }
169
+ finally {
170
+ fs.rmSync(tempDir, { recursive: true, force: true });
171
+ }
172
+ });
173
+ test('replaces the old logicType.ts import when switching to inline mode', async () => {
174
+ const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'kea-typegen-inline-migrate-'));
175
+ try {
176
+ const logicDir = path.join(tempDir, 'src');
177
+ const logicPath = path.join(logicDir, 'logic.ts');
178
+ const logicTypePath = path.join(logicDir, 'logicType.ts');
179
+ const keaDtsPath = path.join(tempDir, 'node_modules', 'kea', 'index.d.ts');
180
+ fs.mkdirSync(path.dirname(keaDtsPath), { recursive: true });
181
+ fs.mkdirSync(logicDir, { recursive: true });
182
+ fs.writeFileSync(keaDtsPath, [
183
+ 'export function kea<T = any>(input: any): T',
184
+ 'export interface MakeLogicType<V = any, A = any, P = any> {}',
185
+ '',
186
+ ].join('\n'));
187
+ fs.writeFileSync(logicTypePath, 'export interface logicType {}\n');
188
+ fs.writeFileSync(logicPath, [
189
+ "import { kea } from 'kea'",
190
+ "import type { logicType } from './logicType'",
191
+ '',
192
+ 'export const logic = kea<logicType>({',
193
+ ' actions: () => ({',
194
+ ' setValue: (value: string) => ({ value }),',
195
+ ' }),',
196
+ '})',
197
+ '',
198
+ ].join('\n'));
199
+ const appOptions = {
200
+ rootPath: logicDir,
201
+ typesPath: logicDir,
202
+ packageJsonPath: path.join(tempDir, 'package.json'),
203
+ inline: true,
204
+ write: true,
205
+ delete: true,
206
+ log: () => { },
207
+ };
208
+ const program = createProgram([logicPath]);
209
+ const response = await (0, print_1.printToFiles)(program, appOptions, (0, visit_1.visitProgram)(program, appOptions));
210
+ expect(response.writtenFiles).toBe(1);
211
+ const writtenLogic = fs.readFileSync(logicPath, 'utf8');
212
+ expect(writtenLogic).not.toContain("from './logicType'");
213
+ expect(writtenLogic).toContain("import { MakeLogicType, kea } from 'kea'");
214
+ expect(writtenLogic).toContain('export interface logicActions {');
215
+ expect(writtenLogic).toContain('export type logicType = MakeLogicType<{}, logicActions>');
216
+ expect(writtenLogic).toContain('export const logic = kea<logicType>({');
217
+ expect(fs.existsSync(logicTypePath)).toBe(false);
218
+ }
219
+ finally {
220
+ fs.rmSync(tempDir, { recursive: true, force: true });
221
+ }
222
+ });
223
+ test('leaves a reformatted but semantically identical block alone', async () => {
224
+ const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'kea-typegen-inline-reformat-'));
225
+ try {
226
+ const logicDir = path.join(tempDir, 'src');
227
+ const logicPath = path.join(logicDir, 'logic.ts');
228
+ const keaDtsPath = path.join(tempDir, 'node_modules', 'kea', 'index.d.ts');
229
+ fs.mkdirSync(path.dirname(keaDtsPath), { recursive: true });
230
+ fs.mkdirSync(logicDir, { recursive: true });
231
+ fs.writeFileSync(keaDtsPath, [
232
+ 'export function kea<T = any>(input: any): T',
233
+ 'export interface MakeLogicType<V = any, A = any, P = any> {}',
234
+ '',
235
+ ].join('\n'));
236
+ fs.writeFileSync(logicPath, [
237
+ "import { MakeLogicType, kea } from 'kea'",
238
+ '',
239
+ 'export const logic = kea({',
240
+ ' actions: () => ({',
241
+ ' setValue: (value: string | number) => ({ value }),',
242
+ ' }),',
243
+ '})',
244
+ '',
245
+ ].join('\n'));
246
+ const appOptions = {
247
+ rootPath: logicDir,
248
+ typesPath: logicDir,
249
+ packageJsonPath: path.join(tempDir, 'package.json'),
250
+ inline: true,
251
+ write: true,
252
+ log: () => { },
253
+ };
254
+ const program = createProgram([logicPath]);
255
+ await (0, print_1.printToFiles)(program, appOptions, (0, visit_1.visitProgram)(program, appOptions));
256
+ const formatted = fs
257
+ .readFileSync(logicPath, 'utf8')
258
+ .replace(/;$/gm, '')
259
+ .replace(/value: string \| number\) =>/g, 'value:\n | string\n | number\n ) =>');
260
+ fs.writeFileSync(logicPath, formatted);
261
+ const secondProgram = createProgram([logicPath]);
262
+ const secondResponse = await (0, print_1.printToFiles)(secondProgram, appOptions, (0, visit_1.visitProgram)(secondProgram, appOptions));
263
+ expect(secondResponse).toEqual({ filesToWrite: 0, writtenFiles: 0, filesToModify: 0 });
264
+ expect(fs.readFileSync(logicPath, 'utf8')).toBe(formatted);
265
+ }
266
+ finally {
267
+ fs.rmSync(tempDir, { recursive: true, force: true });
268
+ }
269
+ });
270
+ test('keeps leading comments attached to the logic when inserting the block', async () => {
271
+ const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'kea-typegen-inline-comments-'));
272
+ try {
273
+ const logicDir = path.join(tempDir, 'src');
274
+ const logicPath = path.join(logicDir, 'logic.ts');
275
+ const keaDtsPath = path.join(tempDir, 'node_modules', 'kea', 'index.d.ts');
276
+ fs.mkdirSync(path.dirname(keaDtsPath), { recursive: true });
277
+ fs.mkdirSync(logicDir, { recursive: true });
278
+ fs.writeFileSync(keaDtsPath, [
279
+ 'export function kea<T = any>(input: any): T',
280
+ 'export interface MakeLogicType<V = any, A = any, P = any> {}',
281
+ '',
282
+ ].join('\n'));
283
+ fs.writeFileSync(logicPath, [
284
+ "import { kea } from 'kea'",
285
+ '',
286
+ '// this comment describes the logic and must stay attached to it',
287
+ 'export const logic = kea({',
288
+ ' actions: () => ({',
289
+ ' setValue: (value: string) => ({ value }),',
290
+ ' }),',
291
+ '})',
292
+ '',
293
+ ].join('\n'));
294
+ const appOptions = {
295
+ rootPath: logicDir,
296
+ typesPath: logicDir,
297
+ packageJsonPath: path.join(tempDir, 'package.json'),
298
+ inline: true,
299
+ write: true,
300
+ log: () => { },
301
+ };
302
+ const program = createProgram([logicPath]);
303
+ const response = await (0, print_1.printToFiles)(program, appOptions, (0, visit_1.visitProgram)(program, appOptions));
304
+ expect(response.writtenFiles).toBe(1);
305
+ const writtenLogic = fs.readFileSync(logicPath, 'utf8');
306
+ expect(writtenLogic).toContain([
307
+ '// this comment describes the logic and must stay attached to it',
308
+ 'export const logic = kea<logicType>({',
309
+ ].join('\n'));
310
+ expect(writtenLogic.indexOf('DO NOT EDIT THIS BLOCK MANUALLY')).toBeLessThan(writtenLogic.indexOf('// this comment describes the logic'));
311
+ }
312
+ finally {
313
+ fs.rmSync(tempDir, { recursive: true, force: true });
314
+ }
315
+ });
316
+ test('annotates untyped selector combiner parameters', async () => {
317
+ const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'kea-typegen-inline-selectors-'));
318
+ try {
319
+ const logicDir = path.join(tempDir, 'src');
320
+ const logicPath = path.join(logicDir, 'logic.ts');
321
+ const keaDtsPath = path.join(tempDir, 'node_modules', 'kea', 'index.d.ts');
322
+ fs.mkdirSync(path.dirname(keaDtsPath), { recursive: true });
323
+ fs.mkdirSync(logicDir, { recursive: true });
324
+ fs.writeFileSync(keaDtsPath, [
325
+ 'export function kea<T = any>(input: any): T',
326
+ 'export interface MakeLogicType<V = any, A = any, P = any> {}',
327
+ '',
328
+ ].join('\n'));
329
+ fs.writeFileSync(logicPath, [
330
+ "import { kea } from 'kea'",
331
+ '',
332
+ 'export const logic = kea({',
333
+ ' actions: () => ({',
334
+ ' setCounter: (counter: number) => ({ counter }),',
335
+ ' }),',
336
+ ' reducers: () => ({',
337
+ ' counter: [0 as number, { setCounter: (_, { counter }) => counter }],',
338
+ ' }),',
339
+ ' selectors: () => ({',
340
+ ' doubleCounter: [(s): [() => number] => [s.counter], (counter) => counter * 2],',
341
+ ' typedCounter: [(s): [() => number] => [s.counter], (counter: number) => counter * 3],',
342
+ ' }),',
343
+ '})',
344
+ '',
345
+ ].join('\n'));
346
+ const appOptions = {
347
+ rootPath: logicDir,
348
+ typesPath: logicDir,
349
+ packageJsonPath: path.join(tempDir, 'package.json'),
350
+ inline: true,
351
+ write: true,
352
+ log: () => { },
353
+ };
354
+ const program = createProgram([logicPath]);
355
+ const response = await (0, print_1.printToFiles)(program, appOptions, (0, visit_1.visitProgram)(program, appOptions));
356
+ expect(response.writtenFiles).toBe(1);
357
+ const writtenLogic = fs.readFileSync(logicPath, 'utf8');
358
+ expect(writtenLogic).toContain('(counter: number) => counter * 2');
359
+ expect(writtenLogic).toContain('(counter: number) => counter * 3');
360
+ const secondProgram = createProgram([logicPath]);
361
+ const secondResponse = await (0, print_1.printToFiles)(secondProgram, appOptions, (0, visit_1.visitProgram)(secondProgram, appOptions));
362
+ expect(secondResponse).toEqual({ filesToWrite: 0, writtenFiles: 0, filesToModify: 0 });
363
+ }
364
+ finally {
365
+ fs.rmSync(tempDir, { recursive: true, force: true });
366
+ }
367
+ });
368
+ });
369
+ describe('mixed mode with inlinePaths', () => {
370
+ const createProgram = (fileNames) => ts.createProgram(fileNames, {
371
+ module: ts.ModuleKind.CommonJS,
372
+ moduleResolution: ts.ModuleResolutionKind.NodeJs,
373
+ target: ts.ScriptTarget.ES2020,
374
+ skipLibCheck: true,
375
+ });
376
+ const writeKeaDts = (tempDir) => {
377
+ const keaDtsPath = path.join(tempDir, 'node_modules', 'kea', 'index.d.ts');
378
+ fs.mkdirSync(path.dirname(keaDtsPath), { recursive: true });
379
+ fs.writeFileSync(keaDtsPath, [
380
+ 'export function kea<T = any>(input: any): T',
381
+ 'export interface MakeLogicType<V = any, A = any, P = any> {}',
382
+ '',
383
+ ].join('\n'));
384
+ };
385
+ const simpleLogicSource = [
386
+ "import { kea } from 'kea'",
387
+ '',
388
+ 'export const logic = kea({',
389
+ ' actions: () => ({',
390
+ ' setValue: (value: string) => ({ value }),',
391
+ ' }),',
392
+ '})',
393
+ '',
394
+ ].join('\n');
395
+ test('files under inlinePaths go inline, everything else keeps logicType.ts', async () => {
396
+ const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'kea-typegen-inline-paths-'));
397
+ try {
398
+ const rootDir = path.join(tempDir, 'src');
399
+ const inlineDir = path.join(rootDir, 'scenes', 'inlined');
400
+ const classicDir = path.join(rootDir, 'scenes', 'classic');
401
+ const inlineLogicPath = path.join(inlineDir, 'inlinedLogic.ts');
402
+ const classicLogicPath = path.join(classicDir, 'classicLogic.ts');
403
+ writeKeaDts(tempDir);
404
+ fs.mkdirSync(inlineDir, { recursive: true });
405
+ fs.mkdirSync(classicDir, { recursive: true });
406
+ fs.writeFileSync(inlineLogicPath, simpleLogicSource.replace('export const logic', 'export const inlinedLogic'));
407
+ fs.writeFileSync(classicLogicPath, simpleLogicSource.replace('export const logic', 'export const classicLogic'));
408
+ const appOptions = {
409
+ rootPath: rootDir,
410
+ typesPath: rootDir,
411
+ packageJsonPath: path.join(tempDir, 'package.json'),
412
+ inlinePaths: [path.join(rootDir, 'scenes', 'inlined')],
413
+ write: true,
414
+ delete: true,
415
+ log: () => { },
416
+ };
417
+ const program = createProgram([inlineLogicPath, classicLogicPath]);
418
+ await (0, print_1.printToFiles)(program, appOptions, (0, visit_1.visitProgram)(program, appOptions));
419
+ const writtenInlineLogic = fs.readFileSync(inlineLogicPath, 'utf8');
420
+ expect(writtenInlineLogic).toContain('// Generated by kea-typegen. DO NOT EDIT THIS BLOCK MANUALLY.');
421
+ expect(writtenInlineLogic).toContain('export type inlinedLogicType = MakeLogicType<{}, inlinedLogicActions>');
422
+ expect(fs.existsSync(path.join(inlineDir, 'inlinedLogicType.ts'))).toBe(false);
423
+ const writtenClassicLogic = fs.readFileSync(classicLogicPath, 'utf8');
424
+ expect(writtenClassicLogic).not.toContain('MakeLogicType');
425
+ expect(fs.existsSync(path.join(classicDir, 'classicLogicType.ts'))).toBe(true);
426
+ }
427
+ finally {
428
+ fs.rmSync(tempDir, { recursive: true, force: true });
429
+ }
430
+ });
431
+ test('relative inlinePaths resolve against rootPath', async () => {
432
+ const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'kea-typegen-inline-paths-relative-'));
433
+ try {
434
+ const rootDir = path.join(tempDir, 'src');
435
+ const inlineDir = path.join(rootDir, 'scenes', 'inlined');
436
+ const inlineLogicPath = path.join(inlineDir, 'inlinedLogic.ts');
437
+ writeKeaDts(tempDir);
438
+ fs.mkdirSync(inlineDir, { recursive: true });
439
+ fs.writeFileSync(inlineLogicPath, simpleLogicSource.replace('export const logic', 'export const inlinedLogic'));
440
+ const appOptions = {
441
+ rootPath: rootDir,
442
+ typesPath: rootDir,
443
+ packageJsonPath: path.join(tempDir, 'package.json'),
444
+ inlinePaths: ['./scenes/inlined'],
445
+ write: true,
446
+ log: () => { },
447
+ };
448
+ const program = createProgram([inlineLogicPath]);
449
+ await (0, print_1.printToFiles)(program, appOptions, (0, visit_1.visitProgram)(program, appOptions));
450
+ expect(fs.readFileSync(inlineLogicPath, 'utf8')).toContain('// Generated by kea-typegen. DO NOT EDIT THIS BLOCK MANUALLY.');
451
+ expect(fs.existsSync(path.join(inlineDir, 'inlinedLogicType.ts'))).toBe(false);
452
+ }
453
+ finally {
454
+ fs.rmSync(tempDir, { recursive: true, force: true });
455
+ }
456
+ });
457
+ test('connected actions from an inline (MakeLogicType) logic land in the consuming logic type', async () => {
458
+ const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'kea-typegen-inline-connect-'));
459
+ try {
460
+ const rootDir = path.join(tempDir, 'src');
461
+ const inlineLogicPath = path.join(rootDir, 'inlinedLogic.ts');
462
+ const consumerLogicPath = path.join(rootDir, 'consumerLogic.ts');
463
+ const keaDtsPath = path.join(tempDir, 'node_modules', 'kea', 'index.d.ts');
464
+ fs.mkdirSync(path.dirname(keaDtsPath), { recursive: true });
465
+ fs.mkdirSync(rootDir, { recursive: true });
466
+ fs.writeFileSync(keaDtsPath, [
467
+ 'export function kea<T = any>(input: any): T',
468
+ 'export type AnyFunction = (...args: any) => any',
469
+ 'export interface MakeLogicType<V = any, A = any, P = any> {',
470
+ ' actionCreators: {',
471
+ ' [K in keyof A]: A[K] extends AnyFunction',
472
+ ' ? (...args: Parameters<A[K]>) => { type: string; payload: ReturnType<A[K]> }',
473
+ ' : never',
474
+ ' }',
475
+ ' values: V',
476
+ '}',
477
+ '',
478
+ ].join('\n'));
479
+ fs.writeFileSync(inlineLogicPath, [
480
+ "import { MakeLogicType, kea } from 'kea'",
481
+ '',
482
+ '// Generated by kea-typegen. DO NOT EDIT THIS BLOCK MANUALLY.',
483
+ 'export interface inlinedLogicValues {',
484
+ ' value: string',
485
+ '}',
486
+ '',
487
+ 'export interface inlinedLogicActions {',
488
+ ' setValue: (value: string) => {',
489
+ ' value: string',
490
+ ' }',
491
+ '}',
492
+ '',
493
+ 'export type inlinedLogicType = MakeLogicType<inlinedLogicValues, inlinedLogicActions>',
494
+ '',
495
+ 'export const inlinedLogic = kea<inlinedLogicType>({',
496
+ ' actions: () => ({',
497
+ ' setValue: (value: string) => ({ value }),',
498
+ ' }),',
499
+ ' reducers: () => ({',
500
+ " value: ['' as string, { setValue: (_, { value }) => value }],",
501
+ ' }),',
502
+ '})',
503
+ '',
504
+ ].join('\n'));
505
+ fs.writeFileSync(consumerLogicPath, [
506
+ "import { kea } from 'kea'",
507
+ '',
508
+ "import { inlinedLogic } from './inlinedLogic'",
509
+ '',
510
+ 'export const consumerLogic = kea({',
511
+ ' connect: {',
512
+ " actions: [inlinedLogic, ['setValue']],",
513
+ " values: [inlinedLogic, ['value']],",
514
+ ' },',
515
+ '})',
516
+ '',
517
+ ].join('\n'));
518
+ const inlineConsumerDir = path.join(rootDir, 'inlineConsumer');
519
+ const inlineConsumerLogicPath = path.join(inlineConsumerDir, 'inlineConsumerLogic.ts');
520
+ fs.mkdirSync(inlineConsumerDir, { recursive: true });
521
+ fs.writeFileSync(inlineConsumerLogicPath, [
522
+ "import { kea } from 'kea'",
523
+ '',
524
+ "import { inlinedLogic } from '../inlinedLogic'",
525
+ '',
526
+ 'export const inlineConsumerLogic = kea({',
527
+ ' connect: {',
528
+ " actions: [inlinedLogic, ['setValue']],",
529
+ " values: [inlinedLogic, ['value']],",
530
+ ' },',
531
+ '})',
532
+ '',
533
+ ].join('\n'));
534
+ const appOptions = {
535
+ rootPath: rootDir,
536
+ typesPath: rootDir,
537
+ packageJsonPath: path.join(tempDir, 'package.json'),
538
+ inlinePaths: [inlineConsumerDir],
539
+ write: true,
540
+ log: () => { },
541
+ };
542
+ const program = createProgram([inlineLogicPath, consumerLogicPath, inlineConsumerLogicPath]);
543
+ await (0, print_1.printToFiles)(program, appOptions, (0, visit_1.visitProgram)(program, appOptions));
544
+ const consumerType = fs.readFileSync(path.join(rootDir, 'consumerLogicType.ts'), 'utf8');
545
+ expect(consumerType).toContain('setValue: (value: string) => void');
546
+ expect(consumerType).toContain('value: string');
547
+ const inlineConsumer = fs.readFileSync(inlineConsumerLogicPath, 'utf8');
548
+ expect(inlineConsumer).toMatch(/value: string.* \/\/ inlinedLogic/);
549
+ expect(inlineConsumer).toMatch(/\};? \/\/ inlinedLogic/);
550
+ const secondProgram = createProgram([inlineLogicPath, consumerLogicPath, inlineConsumerLogicPath]);
551
+ const secondResponse = await (0, print_1.printToFiles)(secondProgram, appOptions, (0, visit_1.visitProgram)(secondProgram, appOptions));
552
+ expect(secondResponse).toEqual({ filesToWrite: 0, writtenFiles: 0, filesToModify: 0 });
553
+ }
554
+ finally {
555
+ fs.rmSync(tempDir, { recursive: true, force: true });
556
+ }
557
+ });
558
+ test('files that already carry an inline block stay inline without any inline options', async () => {
559
+ var _a;
560
+ const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'kea-typegen-inline-sticky-'));
561
+ try {
562
+ const rootDir = path.join(tempDir, 'src');
563
+ const logicPath = path.join(rootDir, 'stickyLogic.ts');
564
+ writeKeaDts(tempDir);
565
+ fs.mkdirSync(rootDir, { recursive: true });
566
+ fs.writeFileSync(logicPath, [
567
+ "import { MakeLogicType, kea } from 'kea'",
568
+ '',
569
+ '// Generated by kea-typegen. DO NOT EDIT THIS BLOCK MANUALLY.',
570
+ 'export interface stickyLogicActions {',
571
+ ' setValue: (value: string) => {',
572
+ ' value: string',
573
+ ' }',
574
+ '}',
575
+ '',
576
+ 'export type stickyLogicType = MakeLogicType<{}, stickyLogicActions>',
577
+ '',
578
+ 'export const stickyLogic = kea<stickyLogicType>({',
579
+ ' actions: () => ({',
580
+ ' setValue: (value: string) => ({ value }),',
581
+ ' setOther: (other: number) => ({ other }),',
582
+ ' }),',
583
+ '})',
584
+ '',
585
+ ].join('\n'));
586
+ const appOptions = {
587
+ rootPath: rootDir,
588
+ typesPath: rootDir,
589
+ packageJsonPath: path.join(tempDir, 'package.json'),
590
+ write: true,
591
+ log: () => { },
592
+ };
593
+ const program = createProgram([logicPath]);
594
+ const response = await (0, print_1.printToFiles)(program, appOptions, (0, visit_1.visitProgram)(program, appOptions));
595
+ expect(response.writtenFiles).toBe(1);
596
+ const writtenLogic = fs.readFileSync(logicPath, 'utf8');
597
+ expect(writtenLogic).toContain('setOther: (other: number) =>');
598
+ expect((_a = writtenLogic.match(/DO NOT EDIT THIS BLOCK MANUALLY/g)) === null || _a === void 0 ? void 0 : _a.length).toBe(1);
599
+ expect(fs.existsSync(path.join(rootDir, 'stickyLogicType.ts'))).toBe(false);
600
+ }
601
+ finally {
602
+ fs.rmSync(tempDir, { recursive: true, force: true });
603
+ }
604
+ });
605
+ });
606
+ //# sourceMappingURL=inline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inline.js","sourceRoot":"","sources":["../../../src/__tests__/inline.ts"],"names":[],"mappings":"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"}
@@ -3,3 +3,4 @@ import { Program } from 'typescript';
3
3
  export declare function cachePath(appOptions: AppOptions, fileName: string): string;
4
4
  export declare function restoreCachedTypes(program: Program, appOptions: AppOptions, log: (msg: string) => void): boolean;
5
5
  export declare function cacheWrittenFile(fileName: string, appOptions: AppOptions): void;
6
+ export declare function deleteCachedFile(fileName: string, appOptions: AppOptions): void;