kea-typegen 1.2.0 → 1.4.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 (164) hide show
  1. package/CHANGELOG.md +72 -31
  2. package/dist/package.json +15 -14
  3. package/dist/src/__tests__/e2e/actions.js +4 -4
  4. package/dist/src/__tests__/e2e/actions.js.map +1 -1
  5. package/dist/src/__tests__/e2e/connect.js +6 -6
  6. package/dist/src/__tests__/e2e/connect.js.map +1 -1
  7. package/dist/src/__tests__/e2e/loaders.js +3 -3
  8. package/dist/src/__tests__/e2e/loaders.js.map +1 -1
  9. package/dist/src/__tests__/e2e/reducers.js +4 -4
  10. package/dist/src/__tests__/e2e/reducers.js.map +1 -1
  11. package/dist/src/__tests__/e2e/selectors.js +3 -3
  12. package/dist/src/__tests__/e2e/selectors.js.map +1 -1
  13. package/dist/src/__tests__/utils.js +7 -7
  14. package/dist/src/__tests__/utils.js.map +1 -1
  15. package/dist/src/cli/typegen.js +5 -3
  16. package/dist/src/cli/typegen.js.map +1 -1
  17. package/dist/src/print/print.d.ts +5 -5
  18. package/dist/src/print/print.js +55 -43
  19. package/dist/src/print/print.js.map +1 -1
  20. package/dist/src/print/printActionCreators.d.ts +1 -2
  21. package/dist/src/print/printActionCreators.js +7 -7
  22. package/dist/src/print/printActionCreators.js.map +1 -1
  23. package/dist/src/print/printActionKeys.d.ts +1 -2
  24. package/dist/src/print/printActionKeys.js +4 -4
  25. package/dist/src/print/printActionKeys.js.map +1 -1
  26. package/dist/src/print/printActionTypes.d.ts +1 -2
  27. package/dist/src/print/printActionTypes.js +4 -4
  28. package/dist/src/print/printActionTypes.js.map +1 -1
  29. package/dist/src/print/printActions.d.ts +1 -2
  30. package/dist/src/print/printActions.js +4 -4
  31. package/dist/src/print/printActions.js.map +1 -1
  32. package/dist/src/print/printConstants.d.ts +1 -2
  33. package/dist/src/print/printConstants.js +2 -2
  34. package/dist/src/print/printConstants.js.map +1 -1
  35. package/dist/src/print/printDefaults.d.ts +1 -2
  36. package/dist/src/print/printDefaults.js +3 -3
  37. package/dist/src/print/printDefaults.js.map +1 -1
  38. package/dist/src/print/printEvents.d.ts +1 -2
  39. package/dist/src/print/printEvents.js +3 -3
  40. package/dist/src/print/printEvents.js.map +1 -1
  41. package/dist/src/print/printInternalExtraInput.d.ts +1 -2
  42. package/dist/src/print/printInternalExtraInput.js +8 -8
  43. package/dist/src/print/printInternalExtraInput.js.map +1 -1
  44. package/dist/src/print/printInternalReducerActions.d.ts +1 -2
  45. package/dist/src/print/printInternalReducerActions.js +3 -4
  46. package/dist/src/print/printInternalReducerActions.js.map +1 -1
  47. package/dist/src/print/printInternalSelectorTypes.d.ts +1 -2
  48. package/dist/src/print/printInternalSelectorTypes.js +3 -3
  49. package/dist/src/print/printInternalSelectorTypes.js.map +1 -1
  50. package/dist/src/print/printKey.d.ts +1 -2
  51. package/dist/src/print/printKey.js +2 -2
  52. package/dist/src/print/printKey.js.map +1 -1
  53. package/dist/src/print/printListeners.d.ts +1 -2
  54. package/dist/src/print/printListeners.js +9 -9
  55. package/dist/src/print/printListeners.js.map +1 -1
  56. package/dist/src/print/printProps.d.ts +1 -2
  57. package/dist/src/print/printProps.js +6 -5
  58. package/dist/src/print/printProps.js.map +1 -1
  59. package/dist/src/print/printReducer.d.ts +1 -2
  60. package/dist/src/print/printReducer.js +6 -6
  61. package/dist/src/print/printReducer.js.map +1 -1
  62. package/dist/src/print/printReducerOptions.d.ts +1 -2
  63. package/dist/src/print/printReducerOptions.js +3 -3
  64. package/dist/src/print/printReducerOptions.js.map +1 -1
  65. package/dist/src/print/printReducers.d.ts +1 -2
  66. package/dist/src/print/printReducers.js +7 -7
  67. package/dist/src/print/printReducers.js.map +1 -1
  68. package/dist/src/print/printSelector.d.ts +1 -2
  69. package/dist/src/print/printSelector.js +4 -4
  70. package/dist/src/print/printSelector.js.map +1 -1
  71. package/dist/src/print/printSelectors.d.ts +1 -2
  72. package/dist/src/print/printSelectors.js +6 -6
  73. package/dist/src/print/printSelectors.js.map +1 -1
  74. package/dist/src/print/printSharedListeners.d.ts +1 -2
  75. package/dist/src/print/printSharedListeners.js +11 -11
  76. package/dist/src/print/printSharedListeners.js.map +1 -1
  77. package/dist/src/print/printValues.d.ts +1 -2
  78. package/dist/src/print/printValues.js +3 -3
  79. package/dist/src/print/printValues.js.map +1 -1
  80. package/dist/src/typegen.js +5 -5
  81. package/dist/src/typegen.js.map +1 -1
  82. package/dist/src/types.d.ts +3 -0
  83. package/dist/src/utils.js +15 -15
  84. package/dist/src/utils.js.map +1 -1
  85. package/dist/src/visit/__tests__/visit.js +2 -2
  86. package/dist/src/visit/__tests__/visit.js.map +1 -1
  87. package/dist/src/visit/visit.js +22 -14
  88. package/dist/src/visit/visit.js.map +1 -1
  89. package/dist/src/visit/visitActions.d.ts +2 -2
  90. package/dist/src/visit/visitActions.js +13 -11
  91. package/dist/src/visit/visitActions.js.map +1 -1
  92. package/dist/src/visit/visitConnect.js +4 -4
  93. package/dist/src/visit/visitConnect.js.map +1 -1
  94. package/dist/src/visit/visitDefaults.js +1 -1
  95. package/dist/src/visit/visitDefaults.js.map +1 -1
  96. package/dist/src/visit/visitKey.js +2 -2
  97. package/dist/src/visit/visitKey.js.map +1 -1
  98. package/dist/src/visit/visitListeners.js +5 -5
  99. package/dist/src/visit/visitListeners.js.map +1 -1
  100. package/dist/src/visit/visitLoaders.d.ts +2 -2
  101. package/dist/src/visit/visitLoaders.js +27 -27
  102. package/dist/src/visit/visitLoaders.js.map +1 -1
  103. package/dist/src/visit/visitProps.js +1 -1
  104. package/dist/src/visit/visitProps.js.map +1 -1
  105. package/dist/src/visit/visitReducers.js +4 -4
  106. package/dist/src/visit/visitReducers.js.map +1 -1
  107. package/dist/src/visit/visitSelectors.js +8 -8
  108. package/dist/src/visit/visitSelectors.js.map +1 -1
  109. package/dist/src/visit/visitSharedListeners.js +5 -5
  110. package/dist/src/visit/visitSharedListeners.js.map +1 -1
  111. package/dist/src/visit/visitWindowValues.js +1 -1
  112. package/dist/src/visit/visitWindowValues.js.map +1 -1
  113. package/dist/src/write/write.d.ts +4 -0
  114. package/dist/src/{import/writeLogicTypeImports.js → write/write.js} +56 -11
  115. package/dist/src/write/write.js.map +1 -0
  116. package/dist/tsconfig.tsbuildinfo +1 -1
  117. package/form-plugin/lib/form-plugin/src/typegen.js +16 -15
  118. package/form-plugin/lib/src/types.d.ts +4 -1
  119. package/form-plugin/package.json +1 -1
  120. package/form-plugin/src/typegen.ts +25 -25
  121. package/form-plugin/tsconfig.json +0 -1
  122. package/form-plugin/yarn.lock +10 -10
  123. package/package.json +15 -14
  124. package/samples/autoImportLogic.ts +9 -3
  125. package/samples/autoImportLogicType.ts +1 -1
  126. package/samples/loadersLogicType.ts +10 -10
  127. package/samples/logicType.ts +4 -4
  128. package/src/__tests__/e2e/__snapshots__/loaders.ts.snap +12 -12
  129. package/src/__tests__/utils.ts +5 -5
  130. package/src/cli/typegen.ts +2 -0
  131. package/src/print/print.ts +65 -36
  132. package/src/print/printActionCreators.ts +12 -15
  133. package/src/print/printActionKeys.ts +5 -6
  134. package/src/print/printActionTypes.ts +6 -7
  135. package/src/print/printActions.ts +6 -13
  136. package/src/print/printConstants.ts +5 -6
  137. package/src/print/printDefaults.ts +5 -6
  138. package/src/print/printEvents.ts +8 -6
  139. package/src/print/printInternalExtraInput.ts +12 -13
  140. package/src/print/printInternalReducerActions.ts +5 -12
  141. package/src/print/printInternalSelectorTypes.ts +7 -8
  142. package/src/print/printKey.ts +2 -2
  143. package/src/print/printListeners.ts +16 -17
  144. package/src/print/printProps.ts +7 -7
  145. package/src/print/printReducer.ts +14 -15
  146. package/src/print/printReducerOptions.ts +4 -5
  147. package/src/print/printReducers.ts +13 -14
  148. package/src/print/printSelector.ts +8 -9
  149. package/src/print/printSelectors.ts +12 -13
  150. package/src/print/printSharedListeners.ts +20 -21
  151. package/src/print/printValues.ts +5 -6
  152. package/src/typegen.ts +4 -4
  153. package/src/types.ts +4 -1
  154. package/src/utils.ts +14 -14
  155. package/src/visit/visit.ts +11 -3
  156. package/src/visit/visitActions.ts +12 -10
  157. package/src/visit/visitListeners.ts +8 -8
  158. package/src/visit/visitLoaders.ts +49 -43
  159. package/src/visit/visitReducers.ts +1 -1
  160. package/src/visit/visitSelectors.ts +3 -3
  161. package/src/visit/visitSharedListeners.ts +8 -10
  162. package/src/{import/writeLogicTypeImports.ts → write/write.ts} +115 -16
  163. package/dist/src/import/writeLogicTypeImports.d.ts +0 -3
  164. package/dist/src/import/writeLogicTypeImports.js.map +0 -1
@@ -5,10 +5,14 @@ import * as fs from 'fs'
5
5
  import { runThroughPrettier } from '../print/print'
6
6
  import * as diff from 'diff'
7
7
  import * as path from 'path'
8
+ import { factory, SyntaxKind } from 'typescript'
8
9
 
10
+ // NOTE:
9
11
  // This is an unfortunate workaround. The TS compiler strips all
10
- // whitespace. This uses "jsdiff" to add them back.
11
- // If it turns out to be flaky, it might be worth rewriting to babel.
12
+ // whitespace AND COMMENTS. This uses "jsdiff" to add back the whitespace,
13
+ // but not the comments.
14
+ //
15
+ // This should be rewritten to babel!
12
16
  // https://github.com/microsoft/TypeScript/issues/843#issuecomment-555932858
13
17
  function addBackNewlines(oldText: string, newText: string) {
14
18
  const patch = diff.parsePatch(diff.createPatch('file', oldText, newText, '', ''))
@@ -31,7 +35,7 @@ function addBackNewlines(oldText: string, newText: string) {
31
35
  return diff.applyPatch(oldText, patch)
32
36
  }
33
37
 
34
- export function writeLogicTypeImports(
38
+ export function writeTypeImports(
35
39
  appOptions: AppOptions,
36
40
  program: ts.Program,
37
41
  filename: string,
@@ -52,18 +56,19 @@ export function writeLogicTypeImports(
52
56
  importLocation = `./${importLocation}`
53
57
  }
54
58
  const createImportDeclaration = () =>
55
- ts.createImportDeclaration(
59
+ factory.createImportDeclaration(
56
60
  undefined,
57
61
  undefined,
58
- ts.createImportClause(
62
+ factory.createImportClause(
63
+ true,
59
64
  undefined,
60
- ts.createNamedImports(
65
+ factory.createNamedImports(
61
66
  allParsedLogics.map((l) =>
62
- ts.createImportSpecifier(undefined, ts.createIdentifier(l.logicTypeName)),
67
+ factory.createImportSpecifier(undefined, undefined, factory.createIdentifier(l.logicTypeName)),
63
68
  ),
64
69
  ),
65
70
  ),
66
- ts.createLiteral(importLocation),
71
+ factory.createStringLiteral(importLocation),
67
72
  )
68
73
 
69
74
  const transformer = <T extends ts.Node>(context: ts.TransformationContext) => {
@@ -77,15 +82,20 @@ export function writeLogicTypeImports(
77
82
  parsedLogicMapByNode.has(node.expression)
78
83
  ) {
79
84
  const { logicTypeName, typeReferencesInLogicInput } = parsedLogicMapByNode.get(node.expression)
80
- return ts.createCall(
85
+ return factory.createCallExpression(
81
86
  node.expression,
82
87
  [
83
- ts.createTypeReferenceNode(
84
- ts.createIdentifier(logicTypeName),
88
+ factory.createTypeReferenceNode(
89
+ factory.createIdentifier(logicTypeName),
85
90
  typeReferencesInLogicInput.size > 0
86
- ? [...typeReferencesInLogicInput.values()].sort().map((type) =>
87
- ts.createTypeReferenceNode(ts.createIdentifier(type), undefined),
88
- )
91
+ ? [...typeReferencesInLogicInput.values()]
92
+ .sort()
93
+ .map((type) =>
94
+ factory.createTypeReferenceNode(
95
+ factory.createIdentifier(type),
96
+ undefined,
97
+ ),
98
+ )
89
99
  : undefined,
90
100
  ),
91
101
  ],
@@ -149,6 +159,97 @@ export function writeLogicTypeImports(
149
159
  }
150
160
  }
151
161
 
162
+ writeFile(sourceFile, transformer, filename)
163
+
164
+ log(`🔥 Import added: ${path.relative(process.cwd(), filename)}`)
165
+ }
166
+
167
+ export function writePaths(appOptions: AppOptions, program: ts.Program, filename: string, parsedLogics: ParsedLogic[]) {
168
+ const { log } = appOptions
169
+ const sourceFile = program.getSourceFile(filename)
170
+ const checker = program.getTypeChecker()
171
+
172
+ const parsedLogicMapByNode = new Map<ts.Node, ParsedLogic>()
173
+ for (const parsedLogic of parsedLogics) {
174
+ parsedLogicMapByNode.set(parsedLogic.node, parsedLogic)
175
+ }
176
+
177
+ const transformer = <T extends ts.Node>(context: ts.TransformationContext) => {
178
+ return (rootNode: T) => {
179
+ function visit(node: ts.Node): ts.Node {
180
+ node = ts.visitEachChild(node, visit, context)
181
+ if (
182
+ ts.isCallExpression(node) &&
183
+ isKeaCall(node.expression, checker) &&
184
+ parsedLogicMapByNode.has(node.expression)
185
+ ) {
186
+ const { path, hasKeyInLogic } = parsedLogicMapByNode.get(node.expression)
187
+ return factory.createCallExpression(
188
+ node.expression,
189
+ node.typeArguments,
190
+ node.arguments.map((argument, i) =>
191
+ i === 0 && ts.isObjectLiteralExpression(argument)
192
+ ? factory.createObjectLiteralExpression(
193
+ [
194
+ hasKeyInLogic
195
+ ? factory.createPropertyAssignment(
196
+ factory.createIdentifier('path'),
197
+ factory.createArrowFunction(
198
+ undefined,
199
+ undefined,
200
+ [
201
+ factory.createParameterDeclaration(
202
+ undefined,
203
+ undefined,
204
+ undefined,
205
+ factory.createIdentifier('key'),
206
+ undefined,
207
+ undefined,
208
+ undefined,
209
+ ),
210
+ ],
211
+ undefined,
212
+ factory.createToken(SyntaxKind.EqualsGreaterThanToken),
213
+ factory.createArrayLiteralExpression(
214
+ [
215
+ ...path.map((str) => factory.createStringLiteral(str)),
216
+ factory.createIdentifier('key'),
217
+ ],
218
+ false,
219
+ ),
220
+ ),
221
+ )
222
+ : factory.createPropertyAssignment(
223
+ factory.createIdentifier('path'),
224
+ factory.createArrayLiteralExpression(
225
+ path.map((str) => factory.createStringLiteral(str)),
226
+ false,
227
+ ),
228
+ ),
229
+ ...argument.properties,
230
+ ],
231
+ true,
232
+ )
233
+ : argument,
234
+ ),
235
+ )
236
+ }
237
+ return node
238
+ }
239
+ return ts.visitNode(rootNode, visit)
240
+ }
241
+ }
242
+
243
+ writeFile(sourceFile, transformer, filename)
244
+
245
+ log(`🔥 Path added: ${path.relative(process.cwd(), filename)}`)
246
+ }
247
+
248
+ function writeFile<T>(
249
+ sourceFile: ts.SourceFile,
250
+ transformer: <T extends ts.Node>(context: ts.TransformationContext) => (rootNode: T) => T,
251
+ filename: string,
252
+ ) {
152
253
  const printer: ts.Printer = ts.createPrinter()
153
254
  const result: ts.TransformationResult<ts.SourceFile> = ts.transform<ts.SourceFile>(sourceFile, [transformer])
154
255
 
@@ -161,6 +262,4 @@ export function writeLogicTypeImports(
161
262
  const newestText = addBackNewlines(oldText, newText)
162
263
 
163
264
  fs.writeFileSync(filename, newestText)
164
-
165
- log(`🔥 Import added: ${path.relative(process.cwd(), filename)}`)
166
265
  }
@@ -1,3 +0,0 @@
1
- import { AppOptions, ParsedLogic } from '../types';
2
- import * as ts from 'typescript';
3
- export declare function writeLogicTypeImports(appOptions: AppOptions, program: ts.Program, filename: string, parsedLogics: ParsedLogic[], allParsedLogics: ParsedLogic[]): void;
@@ -1 +0,0 @@
1
- {"version":3,"file":"writeLogicTypeImports.js","sourceRoot":"","sources":["../../../src/import/writeLogicTypeImports.ts"],"names":[],"mappings":"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"}