@codeyam/codeyam-cli 0.1.0-staging.1 → 0.1.0-staging.8aea589

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 (111) hide show
  1. package/analyzer-template/.build-info.json +7 -7
  2. package/analyzer-template/log.txt +3 -3
  3. package/analyzer-template/packages/ai/src/lib/generateChangesEntityKeyAttributes.ts +51 -107
  4. package/analyzer-template/packages/ai/src/lib/generateEntityKeyAttributes.ts +36 -183
  5. package/analyzer-template/packages/analyze/src/lib/FileAnalyzer.ts +34 -0
  6. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.ts +238 -0
  7. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getDeclaredEntityNode.ts +25 -0
  8. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/index.ts +2 -0
  9. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getNextRoutePath.d.ts.map +1 -1
  10. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getNextRoutePath.js +3 -2
  11. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getNextRoutePath.js.map +1 -1
  12. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getNextRoutePath.d.ts.map +1 -1
  13. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getNextRoutePath.js +3 -2
  14. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getNextRoutePath.js.map +1 -1
  15. package/analyzer-template/packages/utils/src/lib/frameworks/getNextRoutePath.ts +6 -2
  16. package/analyzer-template/project/writeUniversalMocks.ts +6 -2
  17. package/background/src/lib/virtualized/project/writeUniversalMocks.js +3 -2
  18. package/background/src/lib/virtualized/project/writeUniversalMocks.js.map +1 -1
  19. package/codeyam-cli/scripts/apply-setup.js +288 -0
  20. package/codeyam-cli/scripts/apply-setup.js.map +1 -0
  21. package/codeyam-cli/scripts/extract-setup.js +130 -0
  22. package/codeyam-cli/scripts/extract-setup.js.map +1 -0
  23. package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js +238 -0
  24. package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js.map +1 -0
  25. package/codeyam-cli/src/utils/analysisRunner.js +4 -3
  26. package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
  27. package/codeyam-cli/src/utils/backgroundServer.js +25 -5
  28. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  29. package/codeyam-cli/src/utils/fileWatcher.js +75 -5
  30. package/codeyam-cli/src/utils/fileWatcher.js.map +1 -1
  31. package/codeyam-cli/src/utils/queue/job.js +3 -2
  32. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  33. package/codeyam-cli/src/webserver/app/lib/database.js +13 -0
  34. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  35. package/codeyam-cli/src/webserver/backgroundServer.js +15 -35
  36. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  37. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-rqv54FUY.js +1 -0
  38. package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-Dh-FldQK.js → InteractivePreview-B0oiPem-.js} +1 -1
  39. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-DqXXjAJ7.js +3 -0
  40. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-Dp6DC845.js → LogViewer-BKKG1s2B.js} +1 -1
  41. package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-xwuhwsZH.js → SafeScreenshot-DU_jxCPD.js} +1 -1
  42. package/codeyam-cli/src/webserver/build/client/assets/ScenarioPreview-5DY-YIxu.js +6 -0
  43. package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-M2QuSHKC.js → ScenarioViewer-DmjXUj6m.js} +2 -2
  44. package/codeyam-cli/src/webserver/build/client/assets/_index-DvSrcxsk.js +1 -0
  45. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-CsaMd9mb.js +10 -0
  46. package/codeyam-cli/src/webserver/build/client/assets/chart-column-VXBS6qOn.js +1 -0
  47. package/codeyam-cli/src/webserver/build/client/assets/circle-alert-n5GUC2AS.js +1 -0
  48. package/codeyam-cli/src/webserver/build/client/assets/clock-DKqtX8js.js +1 -0
  49. package/codeyam-cli/src/webserver/build/client/assets/{components-CAx5ONX_.js → components-Dj-Ggnl2.js} +1 -1
  50. package/codeyam-cli/src/webserver/build/client/assets/{dev.empty-DGy3zrli.js → dev.empty-BbR3FwNc.js} +1 -1
  51. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-1Z6D0fLM.js → entity._sha._-BHiWkb_W.js} +7 -7
  52. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.create-scenario-ChAdTrrU.js → entity._sha_.create-scenario-L7M9Vr5z.js} +1 -1
  53. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-D9L7267w.js → entity._sha_.edit._scenarioId-C9w-q7P3.js} +1 -1
  54. package/codeyam-cli/src/webserver/build/client/assets/{entityVersioning-DO2gCvXv.js → entityVersioning-Bk_YB1jM.js} +1 -1
  55. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-C6FRgjPr.js → entry.client-CdGoUs8A.js} +1 -1
  56. package/codeyam-cli/src/webserver/build/client/assets/file-text-B6Er7j5k.js +1 -0
  57. package/codeyam-cli/src/webserver/build/client/assets/files-KcDVw1FY.js +1 -0
  58. package/codeyam-cli/src/webserver/build/client/assets/git-B9uZ8eSJ.js +12 -0
  59. package/codeyam-cli/src/webserver/build/client/assets/globals-B0f88RTV.css +1 -0
  60. package/codeyam-cli/src/webserver/build/client/assets/loader-circle-v3c6DFp4.js +1 -0
  61. package/codeyam-cli/src/webserver/build/client/assets/manifest-fca08d7e.js +1 -0
  62. package/codeyam-cli/src/webserver/build/client/assets/root-Cf8VBqIb.js +16 -0
  63. package/codeyam-cli/src/webserver/build/client/assets/search-DA14wXpu.js +1 -0
  64. package/codeyam-cli/src/webserver/build/client/assets/settings-COJUrwGu.js +1 -0
  65. package/codeyam-cli/src/webserver/build/client/assets/{settings-Hbf8b7J_.js → settings-NU_ZquhK.js} +1 -1
  66. package/codeyam-cli/src/webserver/build/client/assets/simulations-CNaMJ-nR.js +1 -0
  67. package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-BBlyqxij.js → useLastLogLine-Lumm1t01.js} +1 -1
  68. package/codeyam-cli/src/webserver/build/client/assets/useToast-BRShB17p.js +1 -0
  69. package/codeyam-cli/src/webserver/build/client/assets/zap-BvukH0eN.js +1 -0
  70. package/codeyam-cli/src/webserver/build/client/favicon.svg +13 -0
  71. package/codeyam-cli/src/webserver/build/server/assets/{index-eAULANMV.js → index-DHr4rT4u.js} +1 -1
  72. package/codeyam-cli/src/webserver/build/server/assets/server-build-Bi1mj14J.js +166 -0
  73. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  74. package/codeyam-cli/src/webserver/build-info.json +5 -5
  75. package/codeyam-cli/src/webserver/public/favicon.svg +13 -0
  76. package/codeyam-cli/templates/codeyam-setup-skill.md +24 -18
  77. package/package.json +1 -1
  78. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js +51 -107
  79. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js.map +1 -1
  80. package/packages/ai/src/lib/generateEntityKeyAttributes.js +36 -183
  81. package/packages/ai/src/lib/generateEntityKeyAttributes.js.map +1 -1
  82. package/packages/analyze/src/lib/FileAnalyzer.js +28 -0
  83. package/packages/analyze/src/lib/FileAnalyzer.js.map +1 -1
  84. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js +191 -0
  85. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js.map +1 -0
  86. package/packages/analyze/src/lib/asts/sourceFiles/getDeclaredEntityNode.js +16 -0
  87. package/packages/analyze/src/lib/asts/sourceFiles/getDeclaredEntityNode.js.map +1 -0
  88. package/packages/analyze/src/lib/asts/sourceFiles/index.js +2 -0
  89. package/packages/analyze/src/lib/asts/sourceFiles/index.js.map +1 -1
  90. package/packages/utils/src/lib/frameworks/getNextRoutePath.js +3 -2
  91. package/packages/utils/src/lib/frameworks/getNextRoutePath.js.map +1 -1
  92. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-GqWwt5wG.js +0 -1
  93. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-p0fuyqGQ.js +0 -3
  94. package/codeyam-cli/src/webserver/build/client/assets/ScenarioPreview-Bl2IRh55.js +0 -1
  95. package/codeyam-cli/src/webserver/build/client/assets/_index-CAVtep9Q.js +0 -1
  96. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-CLmzsLsT.js +0 -10
  97. package/codeyam-cli/src/webserver/build/client/assets/chart-column-B2I7jQx2.js +0 -1
  98. package/codeyam-cli/src/webserver/build/client/assets/circle-alert-GwwOAbhw.js +0 -1
  99. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-CgyOwWip.js +0 -1
  100. package/codeyam-cli/src/webserver/build/client/assets/files-C3-cQjgv.js +0 -1
  101. package/codeyam-cli/src/webserver/build/client/assets/git-Dp4EB9nv.js +0 -12
  102. package/codeyam-cli/src/webserver/build/client/assets/globals-Da3jt49-.css +0 -1
  103. package/codeyam-cli/src/webserver/build/client/assets/loader-circle-DN7Vr40D.js +0 -1
  104. package/codeyam-cli/src/webserver/build/client/assets/manifest-172a4629.js +0 -1
  105. package/codeyam-cli/src/webserver/build/client/assets/root-COyVTsPq.js +0 -16
  106. package/codeyam-cli/src/webserver/build/client/assets/search-CvyP_1Lo.js +0 -1
  107. package/codeyam-cli/src/webserver/build/client/assets/settings-MZc4XdmE.js +0 -1
  108. package/codeyam-cli/src/webserver/build/client/assets/simulations-BMBi0VzO.js +0 -1
  109. package/codeyam-cli/src/webserver/build/client/assets/useToast-C_VxoXTh.js +0 -1
  110. package/codeyam-cli/src/webserver/build/client/assets/zap-B4gsLUZQ.js +0 -1
  111. package/codeyam-cli/src/webserver/build/server/assets/server-build-lutv16q5.js +0 -161
@@ -0,0 +1,238 @@
1
+ import ts from 'typescript';
2
+
3
+ interface GetAllDeclaredEntityNodesArgs {
4
+ sourceFile: ts.SourceFile;
5
+ possibleIdentifierNode?: ts.Node;
6
+ entityNode?: ts.Node;
7
+ entities?: { [key: string]: ts.Node };
8
+ }
9
+
10
+ /**
11
+ * Returns all declared entity nodes in a source file.
12
+ *
13
+ * Unlike getAllEntityNodes, this function only returns actual declarations
14
+ * (variables, functions, classes, interfaces, types, enums, exports).
15
+ * It does NOT include identifier references in initializers or call expressions.
16
+ *
17
+ * Use this when you need to find entities that can be replaced/mocked.
18
+ * Use getAllEntityNodes when you need to track all identifiers (e.g., for dependency analysis).
19
+ */
20
+ export function getAllDeclaredEntityNodes({
21
+ sourceFile,
22
+ possibleIdentifierNode,
23
+ entityNode,
24
+ entities = {},
25
+ }: GetAllDeclaredEntityNodesArgs): { [key: string]: ts.Node } {
26
+ try {
27
+ if (!possibleIdentifierNode) {
28
+ possibleIdentifierNode = sourceFile;
29
+ }
30
+
31
+ // Handle direct Identifier (e.g., from declaration.name)
32
+ if (ts.isIdentifier(possibleIdentifierNode)) {
33
+ if (!entities[possibleIdentifierNode.text]) {
34
+ entities[possibleIdentifierNode.text] =
35
+ entityNode ?? possibleIdentifierNode;
36
+ }
37
+ return entities;
38
+ }
39
+
40
+ if (ts.isBindingElement(possibleIdentifierNode)) {
41
+ const lastChild = possibleIdentifierNode.getChildAt(
42
+ possibleIdentifierNode.getChildCount(sourceFile) - 1,
43
+ );
44
+
45
+ if (ts.isIdentifier(lastChild)) {
46
+ entities[lastChild.text] = entityNode;
47
+ } else if (
48
+ ts.isObjectBindingPattern(lastChild) ||
49
+ ts.isArrayBindingPattern(lastChild)
50
+ ) {
51
+ entities = {
52
+ ...entities,
53
+ ...getAllDeclaredEntityNodes({
54
+ sourceFile,
55
+ possibleIdentifierNode: lastChild,
56
+ entityNode,
57
+ entities,
58
+ }),
59
+ };
60
+ }
61
+ return entities;
62
+ }
63
+
64
+ possibleIdentifierNode.forEachChild((child) => {
65
+ try {
66
+ const safeEntityNode = entityNode ?? child;
67
+
68
+ // For VariableDeclaration, only traverse the name (not the initializer)
69
+ // This prevents registering identifier references as declarations
70
+ if (ts.isVariableDeclaration(child)) {
71
+ entities = {
72
+ ...getAllDeclaredEntityNodes({
73
+ sourceFile,
74
+ possibleIdentifierNode: child.name,
75
+ entityNode: safeEntityNode,
76
+ entities,
77
+ }),
78
+ ...entities,
79
+ };
80
+ } else if (
81
+ ts.isBindingElement(child) ||
82
+ ts.isModuleDeclaration(child) ||
83
+ ts.isNamedExports(child)
84
+ ) {
85
+ entities = {
86
+ ...getAllDeclaredEntityNodes({
87
+ sourceFile,
88
+ possibleIdentifierNode: child,
89
+ entityNode: safeEntityNode,
90
+ entities,
91
+ }),
92
+ ...entities,
93
+ };
94
+ }
95
+
96
+ if (ts.isVariableDeclarationList(child)) {
97
+ child.declarations.forEach((declaration) => {
98
+ entities = {
99
+ ...getAllDeclaredEntityNodes({
100
+ sourceFile,
101
+ possibleIdentifierNode: declaration.name,
102
+ entityNode: safeEntityNode,
103
+ entities,
104
+ }),
105
+ ...entities,
106
+ };
107
+ });
108
+ }
109
+
110
+ if (ts.isVariableStatement(child)) {
111
+ entities = {
112
+ ...getAllDeclaredEntityNodes({
113
+ sourceFile,
114
+ possibleIdentifierNode: child.declarationList,
115
+ entityNode: safeEntityNode,
116
+ entities,
117
+ }),
118
+ ...entities,
119
+ };
120
+ }
121
+
122
+ if (ts.isObjectBindingPattern(child)) {
123
+ const entityNodes = child.elements.reduce((acc, element) => {
124
+ return {
125
+ ...getAllDeclaredEntityNodes({
126
+ sourceFile,
127
+ possibleIdentifierNode: element,
128
+ entityNode: safeEntityNode,
129
+ entities,
130
+ }),
131
+ ...acc,
132
+ };
133
+ }, {});
134
+
135
+ for (const key in entityNodes) {
136
+ entities[key] = safeEntityNode;
137
+ }
138
+ }
139
+
140
+ if (ts.isArrayBindingPattern(child)) {
141
+ entities = {
142
+ ...entities,
143
+ ...child.elements.reduce((acc, element) => {
144
+ return {
145
+ ...getAllDeclaredEntityNodes({
146
+ sourceFile,
147
+ possibleIdentifierNode: element,
148
+ entityNode: safeEntityNode,
149
+ entities,
150
+ }),
151
+ ...acc,
152
+ };
153
+ }, {}),
154
+ };
155
+ }
156
+
157
+ if (
158
+ ts.isFunctionDeclaration(child) ||
159
+ ts.isTypeAliasDeclaration(child) ||
160
+ ts.isInterfaceDeclaration(child) ||
161
+ ts.isClassDeclaration(child) ||
162
+ ts.isEnumDeclaration(child)
163
+ ) {
164
+ if (!entities[child.name?.text ?? 'default']) {
165
+ entities[child.name?.text ?? 'default'] = safeEntityNode;
166
+
167
+ if (ts.isFunctionDeclaration(child) && child.modifiers) {
168
+ const isDefaultExport =
169
+ child.modifiers.some(
170
+ (modifier) => modifier.kind === ts.SyntaxKind.DefaultKeyword,
171
+ ) &&
172
+ child.modifiers.some(
173
+ (modifier) => modifier.kind === ts.SyntaxKind.ExportKeyword,
174
+ );
175
+
176
+ if (isDefaultExport) {
177
+ entities['default'] = safeEntityNode;
178
+ }
179
+ }
180
+ }
181
+ }
182
+
183
+ if (ts.isExportDeclaration(child)) {
184
+ if (child.exportClause) {
185
+ entities = {
186
+ ...getAllDeclaredEntityNodes({
187
+ sourceFile,
188
+ possibleIdentifierNode: child.exportClause,
189
+ entityNode: safeEntityNode,
190
+ entities,
191
+ }),
192
+ ...entities,
193
+ };
194
+ }
195
+ }
196
+
197
+ if (ts.isExportAssignment(child)) {
198
+ // For declared entities, always point to the export statement itself
199
+ // (not the original declaration) so mock replacement works correctly.
200
+ // e.g., for `export default prisma;`, we want to replace the export
201
+ // statement, not the prisma variable declaration.
202
+ entities['default'] = safeEntityNode;
203
+ }
204
+
205
+ if (ts.isExportSpecifier(child)) {
206
+ const nameText = child.name.getText(sourceFile);
207
+ if (child.propertyName) {
208
+ const propertyNameText = child.propertyName.getText(sourceFile);
209
+ entities[nameText] = entities[propertyNameText] ?? safeEntityNode;
210
+ if (propertyNameText !== 'default' && !entities[propertyNameText]) {
211
+ entities[propertyNameText] = safeEntityNode;
212
+ }
213
+ } else {
214
+ entities[nameText] = entities[nameText] ?? safeEntityNode;
215
+ }
216
+ }
217
+ } catch (e) {
218
+ console.log(
219
+ 'CodeYam Error: Error Getting All Declared Entity Nodes Child',
220
+ ts.SyntaxKind[child.kind],
221
+ child.getText(sourceFile),
222
+ e,
223
+ );
224
+ throw e;
225
+ }
226
+ });
227
+
228
+ return entities;
229
+ } catch (e) {
230
+ console.log(
231
+ 'CodeYam Error: Error Getting All Declared Entity Nodes',
232
+ ts.SyntaxKind[possibleIdentifierNode.kind],
233
+ possibleIdentifierNode.getText(sourceFile),
234
+ e,
235
+ );
236
+ throw e;
237
+ }
238
+ }
@@ -0,0 +1,25 @@
1
+ import ts from 'typescript';
2
+ import * as lib from '../../index';
3
+
4
+ /**
5
+ * Get the AST node for a declared entity by name.
6
+ * Unlike getEntityNode, this only finds actual declarations (not identifier references).
7
+ */
8
+ export function getDeclaredEntityNode({
9
+ entityName,
10
+ sourceFile,
11
+ }: {
12
+ entityName: string;
13
+ sourceFile: ts.SourceFile;
14
+ }) {
15
+ const entityNodes = lib.asts.sourceFiles.getAllDeclaredEntityNodes({
16
+ sourceFile,
17
+ });
18
+ const entityNode = entityNodes[entityName];
19
+
20
+ if (!entityNode) {
21
+ throw new Error('getDeclaredEntityNode: Entity not found');
22
+ }
23
+
24
+ return entityNode;
25
+ }
@@ -11,7 +11,9 @@ export { getSourceFilesForAllImports } from './getSourceFilesForAllImports';
11
11
  export { getImportMappings } from './getImportMappings';
12
12
  export { getAllEntities } from './getAllEntities';
13
13
  export { getAllEntityNodes } from './getAllEntityNodes';
14
+ export { getAllDeclaredEntityNodes } from './getAllDeclaredEntityNodes';
14
15
  export { getEntityNode } from './getEntityNode';
16
+ export { getDeclaredEntityNode } from './getDeclaredEntityNode';
15
17
  export { getAllExports } from './getAllExports';
16
18
  export { getAllExportedNodes } from './getAllExportedNodes';
17
19
  export { getImportsAnalysis } from './getImportsAnalysis';
@@ -1 +1 @@
1
- {"version":3,"file":"getNextRoutePath.d.ts","sourceRoot":"","sources":["../../../../../../utils/src/lib/frameworks/getNextRoutePath.ts"],"names":[],"mappings":"AACA,OAAO,EACL,QAAQ,EACR,cAAc,EACd,IAAI,EACJ,OAAO,EACP,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAGxB,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,IAAI,EACJ,MAAM,EACN,YAAY,EACZ,OAAO,EACP,SAAS,EACT,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,IAAI,CAAC;IACf,MAAM,EAAE,cAAc,CAAC;IACvB,YAAY,EAAE,QAAQ,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7B,UAuBA"}
1
+ {"version":3,"file":"getNextRoutePath.d.ts","sourceRoot":"","sources":["../../../../../../utils/src/lib/frameworks/getNextRoutePath.ts"],"names":[],"mappings":"AACA,OAAO,EACL,QAAQ,EACR,cAAc,EACd,IAAI,EACJ,OAAO,EACP,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAGxB,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,IAAI,EACJ,MAAM,EACN,YAAY,EACZ,OAAO,EACP,SAAS,EACT,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,IAAI,CAAC;IACf,MAAM,EAAE,cAAc,CAAC;IACvB,YAAY,EAAE,QAAQ,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7B,UA2BA"}
@@ -1,11 +1,12 @@
1
- import { safeFileName } from '~codeyam/utils';
1
+ import { getAppDirectoryForFile, safeFileName } from '~codeyam/utils';
2
2
  import { PROJECT_RELATIVE_PATH } from '~codeyam/utils';
3
3
  export default function getNextRoutePath({ file, entity, rootAnalysis, project, framework, scenario, }) {
4
4
  const routePath = file.path.split('/').slice(1);
5
5
  const scenarioSlug = scenario ? safeFileName(scenario.name) : undefined;
6
+ const appDirectory = getAppDirectoryForFile(file.path, project.metadata?.webapps);
6
7
  const pathComponents = [
7
8
  PROJECT_RELATIVE_PATH,
8
- 'app',
9
+ appDirectory,
9
10
  'static',
10
11
  project.slug,
11
12
  rootAnalysis.id,
@@ -1 +1 @@
1
- {"version":3,"file":"getNextRoutePath.js","sourceRoot":"","sources":["../../../../../../utils/src/lib/frameworks/getNextRoutePath.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAQ9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,IAAI,EACJ,MAAM,EACN,YAAY,EACZ,OAAO,EACP,SAAS,EACT,QAAQ,GAST;IACC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACxE,MAAM,cAAc,GAAG;QACrB,qBAAqB;QACrB,KAAK;QACL,QAAQ;QACR,OAAO,CAAC,IAAI;QACZ,YAAY,CAAC,EAAE;QACf,YAAY,CAAC,YAAY,CAAC,UAAU,CAAC;QACrC,YAAY;QACZ,GAAG,SAAS;KACb,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClB,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE1C,OAAO,CAAC,GAAG,CACT,iCAAiC,EACjC,IAAI,CAAC,IAAI,EACT,MAAM,CAAC,IAAI,EACX,QAAQ,CACT,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"getNextRoutePath.js","sourceRoot":"","sources":["../../../../../../utils/src/lib/frameworks/getNextRoutePath.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAQtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,IAAI,EACJ,MAAM,EACN,YAAY,EACZ,OAAO,EACP,SAAS,EACT,QAAQ,GAST;IACC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACxE,MAAM,YAAY,GAAG,sBAAsB,CACzC,IAAI,CAAC,IAAI,EACT,OAAO,CAAC,QAAQ,EAAE,OAAO,CAC1B,CAAC;IACF,MAAM,cAAc,GAAG;QACrB,qBAAqB;QACrB,YAAY;QACZ,QAAQ;QACR,OAAO,CAAC,IAAI;QACZ,YAAY,CAAC,EAAE;QACf,YAAY,CAAC,YAAY,CAAC,UAAU,CAAC;QACrC,YAAY;QACZ,GAAG,SAAS;KACb,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClB,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE1C,OAAO,CAAC,GAAG,CACT,iCAAiC,EACjC,IAAI,CAAC,IAAI,EACT,MAAM,CAAC,IAAI,EACX,QAAQ,CACT,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"getNextRoutePath.d.ts","sourceRoot":"","sources":["../../../../../src/lib/frameworks/getNextRoutePath.ts"],"names":[],"mappings":"AACA,OAAO,EACL,QAAQ,EACR,cAAc,EACd,IAAI,EACJ,OAAO,EACP,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAGxB,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,IAAI,EACJ,MAAM,EACN,YAAY,EACZ,OAAO,EACP,SAAS,EACT,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,IAAI,CAAC;IACf,MAAM,EAAE,cAAc,CAAC;IACvB,YAAY,EAAE,QAAQ,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7B,UAuBA"}
1
+ {"version":3,"file":"getNextRoutePath.d.ts","sourceRoot":"","sources":["../../../../../src/lib/frameworks/getNextRoutePath.ts"],"names":[],"mappings":"AACA,OAAO,EACL,QAAQ,EACR,cAAc,EACd,IAAI,EACJ,OAAO,EACP,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAGxB,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,IAAI,EACJ,MAAM,EACN,YAAY,EACZ,OAAO,EACP,SAAS,EACT,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,IAAI,CAAC;IACf,MAAM,EAAE,cAAc,CAAC;IACvB,YAAY,EAAE,QAAQ,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7B,UA2BA"}
@@ -1,11 +1,12 @@
1
- import { safeFileName } from '~codeyam/utils';
1
+ import { getAppDirectoryForFile, safeFileName } from '~codeyam/utils';
2
2
  import { PROJECT_RELATIVE_PATH } from '~codeyam/utils';
3
3
  export default function getNextRoutePath({ file, entity, rootAnalysis, project, framework, scenario, }) {
4
4
  const routePath = file.path.split('/').slice(1);
5
5
  const scenarioSlug = scenario ? safeFileName(scenario.name) : undefined;
6
+ const appDirectory = getAppDirectoryForFile(file.path, project.metadata?.webapps);
6
7
  const pathComponents = [
7
8
  PROJECT_RELATIVE_PATH,
8
- 'app',
9
+ appDirectory,
9
10
  'static',
10
11
  project.slug,
11
12
  rootAnalysis.id,
@@ -1 +1 @@
1
- {"version":3,"file":"getNextRoutePath.js","sourceRoot":"","sources":["../../../../../src/lib/frameworks/getNextRoutePath.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAQ9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,IAAI,EACJ,MAAM,EACN,YAAY,EACZ,OAAO,EACP,SAAS,EACT,QAAQ,GAST;IACC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACxE,MAAM,cAAc,GAAG;QACrB,qBAAqB;QACrB,KAAK;QACL,QAAQ;QACR,OAAO,CAAC,IAAI;QACZ,YAAY,CAAC,EAAE;QACf,YAAY,CAAC,YAAY,CAAC,UAAU,CAAC;QACrC,YAAY;QACZ,GAAG,SAAS;KACb,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClB,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE1C,OAAO,CAAC,GAAG,CACT,iCAAiC,EACjC,IAAI,CAAC,IAAI,EACT,MAAM,CAAC,IAAI,EACX,QAAQ,CACT,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"getNextRoutePath.js","sourceRoot":"","sources":["../../../../../src/lib/frameworks/getNextRoutePath.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAQtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,IAAI,EACJ,MAAM,EACN,YAAY,EACZ,OAAO,EACP,SAAS,EACT,QAAQ,GAST;IACC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACxE,MAAM,YAAY,GAAG,sBAAsB,CACzC,IAAI,CAAC,IAAI,EACT,OAAO,CAAC,QAAQ,EAAE,OAAO,CAC1B,CAAC;IACF,MAAM,cAAc,GAAG;QACrB,qBAAqB;QACrB,YAAY;QACZ,QAAQ;QACR,OAAO,CAAC,IAAI;QACZ,YAAY,CAAC,EAAE;QACf,YAAY,CAAC,YAAY,CAAC,UAAU,CAAC;QACrC,YAAY;QACZ,GAAG,SAAS;KACb,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClB,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE1C,OAAO,CAAC,GAAG,CACT,iCAAiC,EACjC,IAAI,CAAC,IAAI,EACT,MAAM,CAAC,IAAI,EACX,QAAQ,CACT,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { safeFileName } from '~codeyam/utils';
1
+ import { getAppDirectoryForFile, safeFileName } from '~codeyam/utils';
2
2
  import {
3
3
  Analysis,
4
4
  ReadonlyEntity,
@@ -26,9 +26,13 @@ export default function getNextRoutePath({
26
26
  }) {
27
27
  const routePath = file.path.split('/').slice(1);
28
28
  const scenarioSlug = scenario ? safeFileName(scenario.name) : undefined;
29
+ const appDirectory = getAppDirectoryForFile(
30
+ file.path,
31
+ project.metadata?.webapps,
32
+ );
29
33
  const pathComponents = [
30
34
  PROJECT_RELATIVE_PATH,
31
- 'app',
35
+ appDirectory,
32
36
  'static',
33
37
  project.slug,
34
38
  rootAnalysis.id,
@@ -60,8 +60,12 @@ export default async function writeUniversalMocks({
60
60
  universalMock.filePath,
61
61
  );
62
62
  const fileAnalyzer = projectAnalyzer.getFileAnalyzer(file);
63
- if (fileAnalyzer.getAllEntityNodes()[universalMock.entityName]) {
64
- const entityCode = fileAnalyzer.getEntityCode(
63
+
64
+ // Use getAllDeclaredEntityNodes to avoid incorrectly matching identifier references
65
+ if (
66
+ fileAnalyzer.getAllDeclaredEntityNodes()[universalMock.entityName]
67
+ ) {
68
+ const entityCode = fileAnalyzer.getDeclaredEntityCode(
65
69
  universalMock.entityName,
66
70
  );
67
71
  mockContent = file.content.replace(entityCode, universalMock.content);
@@ -24,8 +24,9 @@ export default async function writeUniversalMocks({ analysis, projectAnalyzer, f
24
24
  mockContent = file.content;
25
25
  mockPath = path.join(rootPath ?? PROJECT_RELATIVE_PATH, universalMock.filePath);
26
26
  const fileAnalyzer = projectAnalyzer.getFileAnalyzer(file);
27
- if (fileAnalyzer.getAllEntityNodes()[universalMock.entityName]) {
28
- const entityCode = fileAnalyzer.getEntityCode(universalMock.entityName);
27
+ // Use getAllDeclaredEntityNodes to avoid incorrectly matching identifier references
28
+ if (fileAnalyzer.getAllDeclaredEntityNodes()[universalMock.entityName]) {
29
+ const entityCode = fileAnalyzer.getDeclaredEntityCode(universalMock.entityName);
29
30
  mockContent = file.content.replace(entityCode, universalMock.content);
30
31
  }
31
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"writeUniversalMocks.js","sourceRoot":"","sources":["../../../../../../../background/src/lib/virtualized/project/writeUniversalMocks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"writeUniversalMocks.js","sourceRoot":"","sources":["../../../../../../../background/src/lib/virtualized/project/writeUniversalMocks.ts"],"names":[],"mappings":"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"}