kea-typegen 3.7.0 → 3.8.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.
- package/CHANGELOG.md +9 -0
- package/dist/package.json +3 -1
- package/dist/src/__tests__/inline.d.ts +1 -0
- package/dist/src/__tests__/inline.js +224 -0
- package/dist/src/__tests__/inline.js.map +1 -0
- package/dist/src/__tests__/watch.js +178 -0
- package/dist/src/__tests__/watch.js.map +1 -1
- package/dist/src/cli/typegen.js +4 -0
- package/dist/src/cli/typegen.js.map +1 -1
- package/dist/src/print/print.d.ts +6 -0
- package/dist/src/print/print.js +59 -42
- package/dist/src/print/print.js.map +1 -1
- package/dist/src/typegen.js +38 -2
- package/dist/src/typegen.js.map +1 -1
- package/dist/src/types.d.ts +1 -0
- package/dist/src/utils.d.ts +4 -0
- package/dist/src/utils.js +55 -0
- package/dist/src/utils.js.map +1 -1
- package/dist/src/visit/visit.js +6 -0
- package/dist/src/visit/visit.js.map +1 -1
- package/dist/src/watch.d.ts +22 -0
- package/dist/src/watch.js +183 -0
- package/dist/src/watch.js.map +1 -0
- package/dist/src/write/writeInlineLogicTypes.d.ts +8 -0
- package/dist/src/write/writeInlineLogicTypes.js +236 -0
- package/dist/src/write/writeInlineLogicTypes.js.map +1 -0
- package/dist/src/write/writeTypeImports.d.ts +8 -0
- package/dist/src/write/writeTypeImports.js +3 -0
- package/dist/src/write/writeTypeImports.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -1
- package/samples/manualTypedLogic.ts +20 -0
- package/samples-inline/counterLogic.ts +36 -0
- package/samples-inline/manualLogic.ts +20 -0
- package/samples-inline/profileLogic.ts +30 -0
- package/samples-inline/searchLogic.ts +30 -0
- package/samples-inline/tsconfig.json +17 -0
- package/samples-inline/types.ts +5 -0
- package/src/__tests__/inline.ts +266 -0
- package/src/__tests__/watch.ts +259 -32
- package/src/cli/typegen.ts +4 -0
- package/src/print/print.ts +102 -57
- package/src/test-support/watch-mode-smoke.js +39 -4
- package/src/test-support/write-mode-smoke.js +6 -1
- package/src/typegen.ts +53 -2
- package/src/types.ts +2 -0
- package/src/utils.ts +81 -0
- package/src/visit/visit.ts +14 -0
- package/src/watch.ts +261 -0
- package/src/write/writeInlineLogicTypes.ts +305 -0
- package/src/write/writeTypeImports.ts +4 -4
- package/tsconfig.json +1 -0
|
@@ -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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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as ts from 'typescript';
|
|
2
|
+
import { AppOptions, ParsedLogic } from '../types';
|
|
3
|
+
export declare const INLINE_TYPE_MARKER = " Generated by kea-typegen. DO NOT EDIT THIS BLOCK MANUALLY.";
|
|
4
|
+
export declare function printInlineLogicType(parsedLogic: ParsedLogic): string;
|
|
5
|
+
export declare function writeInlineLogicTypes(program: ts.Program, appOptions: AppOptions, filename: string, parsedLogics: ParsedLogic[], nodeModulesPath: string, shouldIgnore: (absolutePath: string) => boolean): Promise<{
|
|
6
|
+
filesToWrite: number;
|
|
7
|
+
writtenFiles: number;
|
|
8
|
+
}>;
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.INLINE_TYPE_MARKER = void 0;
|
|
4
|
+
exports.printInlineLogicType = printInlineLogicType;
|
|
5
|
+
exports.writeInlineLogicTypes = writeInlineLogicTypes;
|
|
6
|
+
const ts = require("typescript");
|
|
7
|
+
const fs = require("fs");
|
|
8
|
+
const osPath = require("path");
|
|
9
|
+
const typescript_1 = require("typescript");
|
|
10
|
+
const print_1 = require("../print/print");
|
|
11
|
+
const printValues_1 = require("../print/printValues");
|
|
12
|
+
const utils_1 = require("../utils");
|
|
13
|
+
const writeTypeImports_1 = require("./writeTypeImports");
|
|
14
|
+
exports.INLINE_TYPE_MARKER = ' Generated by kea-typegen. DO NOT EDIT THIS BLOCK MANUALLY.';
|
|
15
|
+
function printInlineLogicType(parsedLogic) {
|
|
16
|
+
const statements = [];
|
|
17
|
+
const typeArguments = [];
|
|
18
|
+
const createExportedInterface = (name, members) => typescript_1.factory.createInterfaceDeclaration([typescript_1.factory.createModifier(typescript_1.SyntaxKind.ExportKeyword)], typescript_1.factory.createIdentifier(name), undefined, undefined, members);
|
|
19
|
+
const addSection = (suffix, members) => {
|
|
20
|
+
if (members.length > 0) {
|
|
21
|
+
const name = `${parsedLogic.logicName}${suffix}`;
|
|
22
|
+
statements.push(createExportedInterface(name, members));
|
|
23
|
+
typeArguments.push(typescript_1.factory.createTypeReferenceNode(typescript_1.factory.createIdentifier(name), undefined));
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
typeArguments.push(typescript_1.factory.createTypeLiteralNode([]));
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
addSection('Values', (0, printValues_1.printValues)(parsedLogic).members);
|
|
30
|
+
addSection('Actions', parsedLogic.actions.map(({ name, parameters, returnTypeNode }) => typescript_1.factory.createPropertySignature(undefined, typescript_1.factory.createIdentifier(name), undefined, typescript_1.factory.createFunctionTypeNode(undefined, parameters, returnTypeNode))));
|
|
31
|
+
if (parsedLogic.propsType) {
|
|
32
|
+
if (ts.isTypeLiteralNode(parsedLogic.propsType)) {
|
|
33
|
+
addSection('Props', parsedLogic.propsType.members);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
typeArguments.push(parsedLogic.propsType);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
statements.push(typescript_1.factory.createTypeAliasDeclaration([typescript_1.factory.createModifier(typescript_1.SyntaxKind.ExportKeyword)], typescript_1.factory.createIdentifier(parsedLogic.logicTypeName), undefined, typescript_1.factory.createTypeReferenceNode(typescript_1.factory.createIdentifier('MakeLogicType'), typeArguments)));
|
|
40
|
+
ts.addSyntheticLeadingComment(statements[0], typescript_1.SyntaxKind.SingleLineCommentTrivia, exports.INLINE_TYPE_MARKER, true);
|
|
41
|
+
return statements.map(print_1.nodeToString).join('\n\n');
|
|
42
|
+
}
|
|
43
|
+
async function writeInlineLogicTypes(program, appOptions, filename, parsedLogics, nodeModulesPath, shouldIgnore) {
|
|
44
|
+
var _a;
|
|
45
|
+
const { log } = appOptions;
|
|
46
|
+
const unchanged = { filesToWrite: 0, writtenFiles: 0 };
|
|
47
|
+
if (!filename.match(/\.tsx?$/)) {
|
|
48
|
+
return unchanged;
|
|
49
|
+
}
|
|
50
|
+
const sourceFile = program.getSourceFile(filename);
|
|
51
|
+
if (!sourceFile) {
|
|
52
|
+
throw new Error(`Could not find source file: ${filename}`);
|
|
53
|
+
}
|
|
54
|
+
const rawCode = sourceFile.text;
|
|
55
|
+
const edits = [];
|
|
56
|
+
const managedLogics = [];
|
|
57
|
+
for (const parsedLogic of parsedLogics) {
|
|
58
|
+
const existingDeclaration = sourceFile.statements.find((statement) => (ts.isTypeAliasDeclaration(statement) || ts.isInterfaceDeclaration(statement)) &&
|
|
59
|
+
statement.name.text === parsedLogic.logicTypeName);
|
|
60
|
+
if (existingDeclaration && !(0, utils_1.isGeneratedInlineBlock)(existingDeclaration, parsedLogic.logicName)) {
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
managedLogics.push(parsedLogic);
|
|
64
|
+
const printedBlock = printInlineLogicType(parsedLogic);
|
|
65
|
+
const block = (appOptions.prettier === false ? printedBlock : await (0, print_1.runThroughPrettier)(printedBlock, filename)).trimEnd();
|
|
66
|
+
if (existingDeclaration) {
|
|
67
|
+
const blockStatements = (0, utils_1.getInlineBlockStatements)(existingDeclaration, parsedLogic.logicName);
|
|
68
|
+
const start = getBlockStart(blockStatements[0], sourceFile);
|
|
69
|
+
const end = existingDeclaration.getEnd();
|
|
70
|
+
if (rawCode.slice(start, end) !== block) {
|
|
71
|
+
edits.push({ start, end, text: block });
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
const statement = getTopLevelStatement(parsedLogic.node);
|
|
76
|
+
const insertPos = statement.getStart(sourceFile);
|
|
77
|
+
edits.push({ start: insertPos, end: insertPos, text: `${block}\n\n` });
|
|
78
|
+
}
|
|
79
|
+
const callExpression = parsedLogic.node.parent;
|
|
80
|
+
if (ts.isCallExpression(callExpression)) {
|
|
81
|
+
const start = callExpression.expression.getEnd();
|
|
82
|
+
const end = callExpression.typeArguments ? (0, writeTypeImports_1.getTypeArgumentInsertEnd)(callExpression, sourceFile) : start;
|
|
83
|
+
const text = `<${parsedLogic.logicTypeName}>`;
|
|
84
|
+
if (rawCode.slice(start, end) !== text) {
|
|
85
|
+
edits.push({ start, end, text });
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (managedLogics.length > 0) {
|
|
90
|
+
const importDeclarations = sourceFile.statements.filter(ts.isImportDeclaration);
|
|
91
|
+
const newImportLines = [];
|
|
92
|
+
if (!importsMakeLogicType(importDeclarations)) {
|
|
93
|
+
const keaNamedImport = importDeclarations.find((declaration) => {
|
|
94
|
+
var _a;
|
|
95
|
+
return ts.isStringLiteralLike(declaration.moduleSpecifier) &&
|
|
96
|
+
declaration.moduleSpecifier.text === 'kea' &&
|
|
97
|
+
((_a = declaration.importClause) === null || _a === void 0 ? void 0 : _a.namedBindings) &&
|
|
98
|
+
ts.isNamedImports(declaration.importClause.namedBindings) &&
|
|
99
|
+
declaration.importClause.namedBindings.elements.length > 0;
|
|
100
|
+
});
|
|
101
|
+
if (keaNamedImport) {
|
|
102
|
+
const firstElement = keaNamedImport.importClause.namedBindings.elements[0];
|
|
103
|
+
const pos = firstElement.getStart(sourceFile);
|
|
104
|
+
edits.push({ start: pos, end: pos, text: 'MakeLogicType, ' });
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
newImportLines.push(`import type { MakeLogicType } from 'kea'`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
const typeFileNameBase = parsedLogics[0].typeFileName.replace(/\.[tj]sx?$/, '');
|
|
111
|
+
for (const declaration of importDeclarations) {
|
|
112
|
+
if (!ts.isStringLiteralLike(declaration.moduleSpecifier)) {
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
const specifier = declaration.moduleSpecifier.text;
|
|
116
|
+
if (!specifier.startsWith('.')) {
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
if (osPath.resolve(osPath.dirname(filename), specifier) === typeFileNameBase) {
|
|
120
|
+
const start = declaration.getStart(sourceFile);
|
|
121
|
+
let end = declaration.getEnd();
|
|
122
|
+
if (rawCode[end] === '\n') {
|
|
123
|
+
end += 1;
|
|
124
|
+
}
|
|
125
|
+
edits.push({ start, end, text: '' });
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
const knownNames = collectKnownTypeNames(sourceFile);
|
|
129
|
+
for (const parsedLogic of parsedLogics) {
|
|
130
|
+
knownNames.add(parsedLogic.logicTypeName);
|
|
131
|
+
}
|
|
132
|
+
const mergedTypeReferences = {};
|
|
133
|
+
for (const parsedLogic of managedLogics) {
|
|
134
|
+
for (const [file, names] of Object.entries(parsedLogic.typeReferencesToImportFromFiles)) {
|
|
135
|
+
mergedTypeReferences[file] = (_a = mergedTypeReferences[file]) !== null && _a !== void 0 ? _a : new Set();
|
|
136
|
+
for (const name of names) {
|
|
137
|
+
mergedTypeReferences[file].add(name);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
for (const entry of (0, print_1.buildTypeImportEntries)(mergedTypeReferences, filename, nodeModulesPath, shouldIgnore)) {
|
|
142
|
+
const absolutePath = entry.fullPath.startsWith('.')
|
|
143
|
+
? osPath.resolve(osPath.dirname(filename), entry.fullPath)
|
|
144
|
+
: entry.fullPath;
|
|
145
|
+
if (absolutePath === filename || absolutePath === parsedLogics[0].typeFileName) {
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
const missing = entry.list.filter((name) => !knownNames.has(name));
|
|
149
|
+
missing.forEach((name) => knownNames.add(name));
|
|
150
|
+
if (missing.length > 0) {
|
|
151
|
+
newImportLines.push(`import type { ${missing.join(', ')} } from '${entry.finalPath}'`);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
if (newImportLines.length > 0) {
|
|
155
|
+
const insertPos = (0, writeTypeImports_1.getImportInsertPosition)(sourceFile, rawCode);
|
|
156
|
+
const text = importDeclarations.length > 0
|
|
157
|
+
? `\n${newImportLines.join('\n')}${rawCode.slice(insertPos, insertPos + 1) === '\n' ? '' : '\n'}`
|
|
158
|
+
: `${newImportLines.join('\n')}\n`;
|
|
159
|
+
edits.push({ start: insertPos, end: insertPos, text });
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
if (edits.length === 0) {
|
|
163
|
+
if (appOptions.verbose) {
|
|
164
|
+
log(`🤷 Unchanged: ${osPath.relative(process.cwd(), filename)}`);
|
|
165
|
+
}
|
|
166
|
+
return unchanged;
|
|
167
|
+
}
|
|
168
|
+
if (!appOptions.write) {
|
|
169
|
+
log(`❌ Will not write inline logic types: ${osPath.relative(process.cwd(), filename)}`);
|
|
170
|
+
return { filesToWrite: 1, writtenFiles: 0 };
|
|
171
|
+
}
|
|
172
|
+
const editedCode = (0, writeTypeImports_1.applyTextEdits)(rawCode, edits);
|
|
173
|
+
const newText = appOptions.prettier === false ? editedCode : await (0, print_1.runThroughPrettier)(editedCode, filename);
|
|
174
|
+
fs.writeFileSync(filename, newText);
|
|
175
|
+
log(`🔥 Writing inline logic types: ${osPath.relative(process.cwd(), filename)}`);
|
|
176
|
+
return { filesToWrite: 1, writtenFiles: 1 };
|
|
177
|
+
}
|
|
178
|
+
function getBlockStart(declaration, sourceFile) {
|
|
179
|
+
var _a;
|
|
180
|
+
const ranges = (_a = ts.getLeadingCommentRanges(sourceFile.text, declaration.pos)) !== null && _a !== void 0 ? _a : [];
|
|
181
|
+
const marker = ranges.find(({ pos, end }) => sourceFile.text.slice(pos, end).includes('kea-typegen'));
|
|
182
|
+
return marker ? marker.pos : declaration.getStart(sourceFile);
|
|
183
|
+
}
|
|
184
|
+
function getTopLevelStatement(node) {
|
|
185
|
+
let statement = node;
|
|
186
|
+
while (statement.parent && !ts.isSourceFile(statement.parent)) {
|
|
187
|
+
statement = statement.parent;
|
|
188
|
+
}
|
|
189
|
+
return statement;
|
|
190
|
+
}
|
|
191
|
+
function importsMakeLogicType(importDeclarations) {
|
|
192
|
+
return importDeclarations.some((declaration) => {
|
|
193
|
+
var _a;
|
|
194
|
+
return ts.isStringLiteralLike(declaration.moduleSpecifier) &&
|
|
195
|
+
declaration.moduleSpecifier.text === 'kea' &&
|
|
196
|
+
((_a = declaration.importClause) === null || _a === void 0 ? void 0 : _a.namedBindings) &&
|
|
197
|
+
ts.isNamedImports(declaration.importClause.namedBindings) &&
|
|
198
|
+
declaration.importClause.namedBindings.elements.some((element) => element.name.text === 'MakeLogicType' && !element.propertyName);
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
function collectKnownTypeNames(sourceFile) {
|
|
202
|
+
const names = new Set();
|
|
203
|
+
for (const statement of sourceFile.statements) {
|
|
204
|
+
if (ts.isImportDeclaration(statement) && statement.importClause) {
|
|
205
|
+
if (statement.importClause.name) {
|
|
206
|
+
names.add(statement.importClause.name.text);
|
|
207
|
+
}
|
|
208
|
+
const namedBindings = statement.importClause.namedBindings;
|
|
209
|
+
if (namedBindings) {
|
|
210
|
+
if (ts.isNamedImports(namedBindings)) {
|
|
211
|
+
namedBindings.elements.forEach((element) => names.add(element.name.text));
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
names.add(namedBindings.name.text);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
else if ((ts.isTypeAliasDeclaration(statement) ||
|
|
219
|
+
ts.isInterfaceDeclaration(statement) ||
|
|
220
|
+
ts.isClassDeclaration(statement) ||
|
|
221
|
+
ts.isEnumDeclaration(statement) ||
|
|
222
|
+
ts.isFunctionDeclaration(statement)) &&
|
|
223
|
+
statement.name) {
|
|
224
|
+
names.add(statement.name.text);
|
|
225
|
+
}
|
|
226
|
+
else if (ts.isVariableStatement(statement)) {
|
|
227
|
+
for (const declaration of statement.declarationList.declarations) {
|
|
228
|
+
if (ts.isIdentifier(declaration.name)) {
|
|
229
|
+
names.add(declaration.name.text);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
return names;
|
|
235
|
+
}
|
|
236
|
+
//# sourceMappingURL=writeInlineLogicTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writeInlineLogicTypes.js","sourceRoot":"","sources":["../../../src/write/writeInlineLogicTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,11 @@
|
|
|
1
1
|
import { AppOptions, ParsedLogic } from '../types';
|
|
2
2
|
import * as ts from 'typescript';
|
|
3
|
+
export interface TextEdit {
|
|
4
|
+
start: number;
|
|
5
|
+
end: number;
|
|
6
|
+
text: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function applyTextEdits(source: string, edits: TextEdit[]): string;
|
|
9
|
+
export declare function getImportInsertPosition(sourceFile: ts.SourceFile, rawCode: string): number;
|
|
10
|
+
export declare function getTypeArgumentInsertEnd(callExpression: ts.CallExpression, sourceFile: ts.SourceFile): number;
|
|
3
11
|
export declare function writeTypeImports(appOptions: AppOptions, program: ts.Program, filename: string, logicsNeedingImports: ParsedLogic[], parsedLogics: ParsedLogic[]): Promise<void>;
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.applyTextEdits = applyTextEdits;
|
|
4
|
+
exports.getImportInsertPosition = getImportInsertPosition;
|
|
5
|
+
exports.getTypeArgumentInsertEnd = getTypeArgumentInsertEnd;
|
|
3
6
|
exports.writeTypeImports = writeTypeImports;
|
|
4
7
|
const ts = require("typescript");
|
|
5
8
|
const osPath = require("path");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writeTypeImports.js","sourceRoot":"","sources":["../../../src/write/writeTypeImports.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"writeTypeImports.js","sourceRoot":"","sources":["../../../src/write/writeTypeImports.ts"],"names":[],"mappings":"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"}
|