@depup/base44__vite-plugin 1.0.4-depup.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 (167) hide show
  1. package/README.md +34 -0
  2. package/changes.json +22 -0
  3. package/compat/agents.cjs +13 -0
  4. package/compat/base44Client.cjs +6 -0
  5. package/compat/entities.cjs +25 -0
  6. package/compat/functions.cjs +9 -0
  7. package/compat/integrations.cjs +9 -0
  8. package/dist/ErrorOverlay.d.ts +12 -0
  9. package/dist/ErrorOverlay.d.ts.map +1 -0
  10. package/dist/ErrorOverlay.js +51 -0
  11. package/dist/ErrorOverlay.js.map +1 -0
  12. package/dist/bridge.d.ts +8 -0
  13. package/dist/bridge.d.ts.map +1 -0
  14. package/dist/bridge.js +8 -0
  15. package/dist/bridge.js.map +1 -0
  16. package/dist/capabilities/inline-edit/controller.d.ts +3 -0
  17. package/dist/capabilities/inline-edit/controller.d.ts.map +1 -0
  18. package/dist/capabilities/inline-edit/controller.js +203 -0
  19. package/dist/capabilities/inline-edit/controller.js.map +1 -0
  20. package/dist/capabilities/inline-edit/dom-utils.d.ts +7 -0
  21. package/dist/capabilities/inline-edit/dom-utils.d.ts.map +1 -0
  22. package/dist/capabilities/inline-edit/dom-utils.js +59 -0
  23. package/dist/capabilities/inline-edit/dom-utils.js.map +1 -0
  24. package/dist/capabilities/inline-edit/index.d.ts +3 -0
  25. package/dist/capabilities/inline-edit/index.d.ts.map +1 -0
  26. package/dist/capabilities/inline-edit/index.js +2 -0
  27. package/dist/capabilities/inline-edit/index.js.map +1 -0
  28. package/dist/capabilities/inline-edit/types.d.ts +29 -0
  29. package/dist/capabilities/inline-edit/types.d.ts.map +1 -0
  30. package/dist/capabilities/inline-edit/types.js +2 -0
  31. package/dist/capabilities/inline-edit/types.js.map +1 -0
  32. package/dist/consts.d.ts +11 -0
  33. package/dist/consts.d.ts.map +1 -0
  34. package/dist/consts.js +11 -0
  35. package/dist/consts.js.map +1 -0
  36. package/dist/error-overlay-plugin.d.ts +3 -0
  37. package/dist/error-overlay-plugin.d.ts.map +1 -0
  38. package/dist/error-overlay-plugin.js +15 -0
  39. package/dist/error-overlay-plugin.js.map +1 -0
  40. package/dist/html-injections-plugin.d.ts +8 -0
  41. package/dist/html-injections-plugin.d.ts.map +1 -0
  42. package/dist/html-injections-plugin.js +132 -0
  43. package/dist/html-injections-plugin.js.map +1 -0
  44. package/dist/index.d.ts +9 -0
  45. package/dist/index.d.ts.map +1 -0
  46. package/dist/index.js +158 -0
  47. package/dist/index.js.map +1 -0
  48. package/dist/injections/layer-dropdown/consts.d.ts +20 -0
  49. package/dist/injections/layer-dropdown/consts.d.ts.map +1 -0
  50. package/dist/injections/layer-dropdown/consts.js +41 -0
  51. package/dist/injections/layer-dropdown/consts.js.map +1 -0
  52. package/dist/injections/layer-dropdown/controller.d.ts +4 -0
  53. package/dist/injections/layer-dropdown/controller.d.ts.map +1 -0
  54. package/dist/injections/layer-dropdown/controller.js +88 -0
  55. package/dist/injections/layer-dropdown/controller.js.map +1 -0
  56. package/dist/injections/layer-dropdown/dropdown-ui.d.ts +13 -0
  57. package/dist/injections/layer-dropdown/dropdown-ui.d.ts.map +1 -0
  58. package/dist/injections/layer-dropdown/dropdown-ui.js +186 -0
  59. package/dist/injections/layer-dropdown/dropdown-ui.js.map +1 -0
  60. package/dist/injections/layer-dropdown/types.d.ts +26 -0
  61. package/dist/injections/layer-dropdown/types.d.ts.map +1 -0
  62. package/dist/injections/layer-dropdown/types.js +3 -0
  63. package/dist/injections/layer-dropdown/types.js.map +1 -0
  64. package/dist/injections/layer-dropdown/utils.d.ts +25 -0
  65. package/dist/injections/layer-dropdown/utils.d.ts.map +1 -0
  66. package/dist/injections/layer-dropdown/utils.js +143 -0
  67. package/dist/injections/layer-dropdown/utils.js.map +1 -0
  68. package/dist/injections/navigation-notifier.d.ts +2 -0
  69. package/dist/injections/navigation-notifier.d.ts.map +1 -0
  70. package/dist/injections/navigation-notifier.js +34 -0
  71. package/dist/injections/navigation-notifier.js.map +1 -0
  72. package/dist/injections/sandbox-hmr-notifier.d.ts +2 -0
  73. package/dist/injections/sandbox-hmr-notifier.d.ts.map +1 -0
  74. package/dist/injections/sandbox-hmr-notifier.js +10 -0
  75. package/dist/injections/sandbox-hmr-notifier.js.map +1 -0
  76. package/dist/injections/sandbox-mount-observer.d.ts +2 -0
  77. package/dist/injections/sandbox-mount-observer.d.ts.map +1 -0
  78. package/dist/injections/sandbox-mount-observer.js +18 -0
  79. package/dist/injections/sandbox-mount-observer.js.map +1 -0
  80. package/dist/injections/unhandled-errors-handlers.d.ts +2 -0
  81. package/dist/injections/unhandled-errors-handlers.d.ts.map +1 -0
  82. package/dist/injections/unhandled-errors-handlers.js +93 -0
  83. package/dist/injections/unhandled-errors-handlers.js.map +1 -0
  84. package/dist/injections/utils.d.ts +65 -0
  85. package/dist/injections/utils.d.ts.map +1 -0
  86. package/dist/injections/utils.js +186 -0
  87. package/dist/injections/utils.js.map +1 -0
  88. package/dist/injections/visual-edit-agent.d.ts +2 -0
  89. package/dist/injections/visual-edit-agent.d.ts.map +1 -0
  90. package/dist/injections/visual-edit-agent.js +583 -0
  91. package/dist/injections/visual-edit-agent.js.map +1 -0
  92. package/dist/jsx-processor.d.ts +17 -0
  93. package/dist/jsx-processor.d.ts.map +1 -0
  94. package/dist/jsx-processor.js +129 -0
  95. package/dist/jsx-processor.js.map +1 -0
  96. package/dist/jsx-utils.d.ts +16 -0
  97. package/dist/jsx-utils.d.ts.map +1 -0
  98. package/dist/jsx-utils.js +98 -0
  99. package/dist/jsx-utils.js.map +1 -0
  100. package/dist/processors/collection-id-processor.d.ts +20 -0
  101. package/dist/processors/collection-id-processor.d.ts.map +1 -0
  102. package/dist/processors/collection-id-processor.js +182 -0
  103. package/dist/processors/collection-id-processor.js.map +1 -0
  104. package/dist/processors/collection-item-field-processor.d.ts +39 -0
  105. package/dist/processors/collection-item-field-processor.d.ts.map +1 -0
  106. package/dist/processors/collection-item-field-processor.js +289 -0
  107. package/dist/processors/collection-item-field-processor.js.map +1 -0
  108. package/dist/processors/collection-item-id-processor.d.ts +12 -0
  109. package/dist/processors/collection-item-id-processor.d.ts.map +1 -0
  110. package/dist/processors/collection-item-id-processor.js +50 -0
  111. package/dist/processors/collection-item-id-processor.js.map +1 -0
  112. package/dist/processors/static-array-processor.d.ts +28 -0
  113. package/dist/processors/static-array-processor.d.ts.map +1 -0
  114. package/dist/processors/static-array-processor.js +173 -0
  115. package/dist/processors/static-array-processor.js.map +1 -0
  116. package/dist/processors/utils/collection-tracing-utils.d.ts +36 -0
  117. package/dist/processors/utils/collection-tracing-utils.d.ts.map +1 -0
  118. package/dist/processors/utils/collection-tracing-utils.js +390 -0
  119. package/dist/processors/utils/collection-tracing-utils.js.map +1 -0
  120. package/dist/processors/utils/shared-utils.d.ts +96 -0
  121. package/dist/processors/utils/shared-utils.d.ts.map +1 -0
  122. package/dist/processors/utils/shared-utils.js +600 -0
  123. package/dist/processors/utils/shared-utils.js.map +1 -0
  124. package/dist/statics/index.mjs +16 -0
  125. package/dist/statics/index.mjs.map +1 -0
  126. package/dist/utils.d.ts +2 -0
  127. package/dist/utils.d.ts.map +1 -0
  128. package/dist/utils.js +22 -0
  129. package/dist/utils.js.map +1 -0
  130. package/dist/visual-edit-plugin.d.ts +3 -0
  131. package/dist/visual-edit-plugin.d.ts.map +1 -0
  132. package/dist/visual-edit-plugin.js +100 -0
  133. package/dist/visual-edit-plugin.js.map +1 -0
  134. package/package.json +75 -0
  135. package/src/ErrorOverlay.ts +71 -0
  136. package/src/bridge.ts +8 -0
  137. package/src/capabilities/inline-edit/controller.ts +254 -0
  138. package/src/capabilities/inline-edit/dom-utils.ts +58 -0
  139. package/src/capabilities/inline-edit/index.ts +2 -0
  140. package/src/capabilities/inline-edit/types.ts +35 -0
  141. package/src/consts.ts +11 -0
  142. package/src/error-overlay-plugin.ts +19 -0
  143. package/src/html-injections-plugin.ts +166 -0
  144. package/src/index.ts +225 -0
  145. package/src/injections/layer-dropdown/LAYERS.md +258 -0
  146. package/src/injections/layer-dropdown/consts.ts +51 -0
  147. package/src/injections/layer-dropdown/controller.ts +109 -0
  148. package/src/injections/layer-dropdown/dropdown-ui.ts +242 -0
  149. package/src/injections/layer-dropdown/types.ts +30 -0
  150. package/src/injections/layer-dropdown/utils.ts +175 -0
  151. package/src/injections/navigation-notifier.ts +43 -0
  152. package/src/injections/sandbox-hmr-notifier.ts +8 -0
  153. package/src/injections/sandbox-mount-observer.ts +25 -0
  154. package/src/injections/unhandled-errors-handlers.ts +114 -0
  155. package/src/injections/utils.ts +208 -0
  156. package/src/injections/visual-edit-agent.ts +706 -0
  157. package/src/jsx-processor.ts +169 -0
  158. package/src/jsx-utils.ts +131 -0
  159. package/src/processors/collection-id-processor.ts +261 -0
  160. package/src/processors/collection-item-field-processor.ts +439 -0
  161. package/src/processors/collection-item-id-processor.ts +69 -0
  162. package/src/processors/static-array-processor.ts +260 -0
  163. package/src/processors/utils/collection-tracing-utils.ts +507 -0
  164. package/src/processors/utils/shared-utils.ts +785 -0
  165. package/src/utils.ts +27 -0
  166. package/src/visual-edit-plugin.md +358 -0
  167. package/src/visual-edit-plugin.ts +110 -0
@@ -0,0 +1,600 @@
1
+ import { JSXUtils } from "../../jsx-utils.js";
2
+ import { ALLOWED_CUSTOM_COMPONENTS, EXCLUDED_FIELDS } from "../../consts.js";
3
+ export class JSXAttributeUtils {
4
+ types;
5
+ constructor(types) {
6
+ this.types = types;
7
+ }
8
+ hasAttribute(path, attributeName) {
9
+ return path.node.attributes.some((attr) => this.types.isJSXAttribute(attr) &&
10
+ JSXUtils.getAttributeName(attr) === attributeName);
11
+ }
12
+ getAttributeValue(path, attributeName) {
13
+ for (const attr of path.node.attributes) {
14
+ if (this.types.isJSXAttribute(attr) &&
15
+ JSXUtils.getAttributeName(attr) === attributeName) {
16
+ return attr.value;
17
+ }
18
+ }
19
+ return null;
20
+ }
21
+ getAttributeStringValue(path, attributeName) {
22
+ const value = this.getAttributeValue(path, attributeName);
23
+ if (value && this.types.isStringLiteral(value)) {
24
+ return value.value;
25
+ }
26
+ return null;
27
+ }
28
+ addStringAttribute(path, attributeName, value) {
29
+ if (!this.hasAttribute(path, attributeName)) {
30
+ path.node.attributes.push(this.types.jsxAttribute(this.types.jsxIdentifier(attributeName), this.types.stringLiteral(value)));
31
+ }
32
+ }
33
+ addExpressionAttribute(path, attributeName, expression) {
34
+ if (!this.hasAttribute(path, attributeName)) {
35
+ path.node.attributes.push(this.types.jsxAttribute(this.types.jsxIdentifier(attributeName), this.types.jsxExpressionContainer(expression)));
36
+ }
37
+ }
38
+ findAncestorWithAttribute(path, attributeName) {
39
+ let current = path.parentPath;
40
+ while (current) {
41
+ if (current.isJSXElement()) {
42
+ const opening = current.get("openingElement");
43
+ if (this.hasAttribute(opening, attributeName)) {
44
+ return opening;
45
+ }
46
+ }
47
+ current = current.parentPath;
48
+ }
49
+ return null;
50
+ }
51
+ }
52
+ export class PathNavigationUtils {
53
+ types;
54
+ constructor(types) {
55
+ this.types = types;
56
+ }
57
+ findParentJSXElement(path) {
58
+ let current = path.parentPath;
59
+ while (current) {
60
+ if (current.isJSXElement())
61
+ return current;
62
+ current = current.parentPath;
63
+ }
64
+ return null;
65
+ }
66
+ findEnclosingFunction(path) {
67
+ let current = path.parentPath;
68
+ while (current) {
69
+ if (current.isFunction())
70
+ return current;
71
+ current = current.parentPath;
72
+ }
73
+ return null;
74
+ }
75
+ findReturnStatement(path) {
76
+ let current = path.parentPath;
77
+ while (current) {
78
+ if (current.isReturnStatement())
79
+ return current;
80
+ current = current.parentPath;
81
+ }
82
+ return null;
83
+ }
84
+ isRootReturnElement(path) {
85
+ const jsxElement = path.parentPath;
86
+ if (!jsxElement?.isJSXElement())
87
+ return false;
88
+ const parent = jsxElement.parentPath;
89
+ if (!parent)
90
+ return false;
91
+ if (parent.isReturnStatement())
92
+ return true;
93
+ if (parent.isArrowFunctionExpression())
94
+ return true;
95
+ if (parent.isParenthesizedExpression()) {
96
+ const grandparent = parent.parentPath;
97
+ if (grandparent?.isReturnStatement())
98
+ return true;
99
+ if (grandparent?.isArrowFunctionExpression())
100
+ return true;
101
+ }
102
+ return false;
103
+ }
104
+ findDOMElementTarget(path) {
105
+ if (this.isDOMOrAllowedElement(path))
106
+ return path;
107
+ let current = path.parentPath;
108
+ while (current) {
109
+ if (current.isJSXElement()) {
110
+ const opening = current.get("openingElement");
111
+ if (this.isDOMOrAllowedElement(opening))
112
+ return opening;
113
+ }
114
+ current = current.parentPath;
115
+ }
116
+ return null;
117
+ }
118
+ isDOMOrAllowedElement(path) {
119
+ const name = JSXUtils.getElementName(path.node);
120
+ if (!name)
121
+ return false;
122
+ if (name.charAt(0) === name.charAt(0).toLowerCase())
123
+ return true;
124
+ return ALLOWED_CUSTOM_COMPONENTS.includes(name);
125
+ }
126
+ }
127
+ export class ExpressionAnalysisUtils {
128
+ types;
129
+ constructor(types) {
130
+ this.types = types;
131
+ }
132
+ isIdAccess(node) {
133
+ if (!this.types.isMemberExpression(node))
134
+ return false;
135
+ if (this.types.isIdentifier(node.property)) {
136
+ return node.property.name === "_id" || node.property.name === "id";
137
+ }
138
+ if (this.types.isStringLiteral(node.property)) {
139
+ return node.property.value === "_id" || node.property.value === "id";
140
+ }
141
+ return false;
142
+ }
143
+ isItemsAccess(node) {
144
+ return (this.types.isMemberExpression(node) &&
145
+ this.types.isIdentifier(node.property) &&
146
+ node.property.name === "items");
147
+ }
148
+ isLengthAccess(node) {
149
+ return (this.types.isMemberExpression(node) &&
150
+ this.types.isIdentifier(node.property) &&
151
+ node.property.name === "length");
152
+ }
153
+ extractRootIdentifier(node) {
154
+ if (this.types.isIdentifier(node))
155
+ return node;
156
+ if (this.types.isMemberExpression(node)) {
157
+ return this.extractRootIdentifier(node.object);
158
+ }
159
+ if (this.types.isOptionalMemberExpression(node)) {
160
+ return this.extractRootIdentifier(node.object);
161
+ }
162
+ if (this.types.isCallExpression(node) && this.types.isMemberExpression(node.callee)) {
163
+ return this.extractRootIdentifier(node.callee.object);
164
+ }
165
+ return null;
166
+ }
167
+ unwrapLogicalExpression(node) {
168
+ if (this.types.isLogicalExpression(node)) {
169
+ if (node.operator === "&&")
170
+ return node.right;
171
+ if (node.operator === "||" || node.operator === "??") {
172
+ return node.left;
173
+ }
174
+ }
175
+ return node;
176
+ }
177
+ collectMemberExpressionPath(node) {
178
+ const parts = [];
179
+ let current = node;
180
+ while (this.types.isMemberExpression(current) ||
181
+ this.types.isOptionalMemberExpression(current)) {
182
+ const prop = current.property;
183
+ if (this.types.isIdentifier(prop)) {
184
+ parts.unshift(prop.name);
185
+ }
186
+ else if (this.types.isStringLiteral(prop)) {
187
+ parts.unshift(prop.value);
188
+ }
189
+ current = current.object;
190
+ }
191
+ if (this.types.isIdentifier(current)) {
192
+ parts.unshift(current.name);
193
+ }
194
+ return parts;
195
+ }
196
+ createOptionalChainExpression(node) {
197
+ const object = this.types.isOptionalMemberExpression(node.object)
198
+ ? node.object
199
+ : this.types.isMemberExpression(node.object)
200
+ ? this.createOptionalChainExpression(node.object)
201
+ : node.object;
202
+ const property = node.property;
203
+ return this.types.optionalMemberExpression(object, property, node.computed, true);
204
+ }
205
+ getFieldPathFromExpression(node, rootName) {
206
+ const parts = this.collectMemberExpressionPath(node);
207
+ if (parts.length < 2)
208
+ return null;
209
+ if (parts[0] !== rootName)
210
+ return null;
211
+ const fieldParts = parts.slice(1);
212
+ const fieldPath = fieldParts.join(".");
213
+ if (EXCLUDED_FIELDS.includes(fieldPath))
214
+ return null;
215
+ return fieldPath;
216
+ }
217
+ }
218
+ export class BindingUtils {
219
+ types;
220
+ constructor(types) {
221
+ this.types = types;
222
+ }
223
+ isFunctionParameter(identifierName, path) {
224
+ const fn = path.getFunctionParent();
225
+ if (!fn)
226
+ return false;
227
+ const params = fn.get("params");
228
+ for (const param of (Array.isArray(params) ? params : [params])) {
229
+ if (param.isIdentifier() && param.node.name === identifierName) {
230
+ return true;
231
+ }
232
+ if (param.isObjectPattern()) {
233
+ for (const prop of param.get("properties")) {
234
+ if (prop.isObjectProperty() &&
235
+ this.types.isIdentifier(prop.node.value) &&
236
+ prop.node.value.name === identifierName) {
237
+ return true;
238
+ }
239
+ }
240
+ }
241
+ if (param.isArrayPattern()) {
242
+ for (const el of param.get("elements")) {
243
+ if (el.isIdentifier() && el.node.name === identifierName) {
244
+ return true;
245
+ }
246
+ }
247
+ }
248
+ }
249
+ return false;
250
+ }
251
+ isUseStateCall(init) {
252
+ if (!init.isCallExpression())
253
+ return null;
254
+ const callee = init.get("callee");
255
+ if (!callee.isIdentifier() || callee.node.name !== "useState")
256
+ return null;
257
+ const declarator = init.parentPath;
258
+ if (!declarator?.isVariableDeclarator())
259
+ return null;
260
+ const id = declarator.get("id");
261
+ if (!id.isArrayPattern())
262
+ return null;
263
+ const elements = id.get("elements");
264
+ const setterEl = elements[1];
265
+ const setterName = setterEl && setterEl.isIdentifier() ? setterEl.node.name : null;
266
+ return { stateIndex: 0, setterName };
267
+ }
268
+ isPromiseAllCall(init) {
269
+ if (!init.isAwaitExpression()) {
270
+ if (init.isCallExpression()) {
271
+ const callee = init.get("callee");
272
+ return this.isPromiseAllCallee(callee);
273
+ }
274
+ return false;
275
+ }
276
+ const argument = init.get("argument");
277
+ if (!argument.isCallExpression())
278
+ return false;
279
+ const callee = argument.get("callee");
280
+ return this.isPromiseAllCallee(callee);
281
+ }
282
+ isPromiseAllCallee(callee) {
283
+ if (!callee.isMemberExpression())
284
+ return false;
285
+ const obj = callee.get("object");
286
+ const prop = callee.get("property");
287
+ return (obj.isIdentifier() &&
288
+ obj.node.name === "Promise" &&
289
+ prop.isIdentifier() &&
290
+ prop.node.name === "all");
291
+ }
292
+ extractDestructuredProperties(pattern) {
293
+ const properties = [];
294
+ for (const prop of pattern.properties) {
295
+ if (this.types.isObjectProperty(prop)) {
296
+ if (this.types.isIdentifier(prop.key)) {
297
+ properties.push(prop.key.name);
298
+ }
299
+ else if (this.types.isStringLiteral(prop.key)) {
300
+ properties.push(prop.key.value);
301
+ }
302
+ }
303
+ }
304
+ return properties;
305
+ }
306
+ findSetterCallInScope(setterName, scope) {
307
+ let result = null;
308
+ scope.traverse({
309
+ CallExpression(callPath) {
310
+ if (result)
311
+ return;
312
+ const callee = callPath.get("callee");
313
+ if (callee.isIdentifier() && callee.node.name === setterName) {
314
+ result = callPath;
315
+ }
316
+ },
317
+ });
318
+ return result;
319
+ }
320
+ }
321
+ export class CallExpressionUtils {
322
+ types;
323
+ constructor(types) {
324
+ this.types = types;
325
+ }
326
+ isGetAllCall(node) {
327
+ const callee = node.callee;
328
+ if (!this.types.isMemberExpression(callee))
329
+ return null;
330
+ const obj = callee.object;
331
+ const prop = callee.property;
332
+ if (!this.types.isIdentifier(obj) ||
333
+ !this.types.isIdentifier(prop) ||
334
+ prop.name !== "getAll") {
335
+ return null;
336
+ }
337
+ const args = node.arguments;
338
+ if (args.length < 1)
339
+ return null;
340
+ const firstArg = args[0];
341
+ if (!this.types.isStringLiteral(firstArg))
342
+ return null;
343
+ const collectionName = firstArg.value;
344
+ const references = this.extractReferencesFromArg(args[1]);
345
+ return { collectionName, references };
346
+ }
347
+ isGetByIdCall(node) {
348
+ const callee = node.callee;
349
+ if (!this.types.isMemberExpression(callee))
350
+ return null;
351
+ const obj = callee.object;
352
+ const prop = callee.property;
353
+ if (!this.types.isIdentifier(obj) ||
354
+ !this.types.isIdentifier(prop) ||
355
+ prop.name !== "getById") {
356
+ return null;
357
+ }
358
+ const args = node.arguments;
359
+ if (args.length < 1)
360
+ return null;
361
+ const firstArg = args[0];
362
+ if (!this.types.isStringLiteral(firstArg))
363
+ return null;
364
+ const collectionName = firstArg.value;
365
+ const multiRefFields = this.extractMultiRefFromOptions(args[2]);
366
+ return { collectionName, multiRefFields };
367
+ }
368
+ extractReferencesFromArg(arg) {
369
+ if (!arg || !this.types.isArrayExpression(arg))
370
+ return [];
371
+ return arg.elements
372
+ .filter((el) => this.types.isStringLiteral(el))
373
+ .map((el) => el.value);
374
+ }
375
+ extractMultiRefFromOptions(arg) {
376
+ if (!arg || !this.types.isObjectExpression(arg))
377
+ return [];
378
+ for (const prop of arg.properties) {
379
+ if (this.types.isObjectProperty(prop) &&
380
+ this.types.isIdentifier(prop.key) &&
381
+ prop.key.name === "multiRef" &&
382
+ this.types.isArrayExpression(prop.value)) {
383
+ return prop.value.elements
384
+ .filter((el) => this.types.isStringLiteral(el))
385
+ .map((el) => el.value);
386
+ }
387
+ }
388
+ return [];
389
+ }
390
+ isArrayMethod(node, methodName) {
391
+ const callee = node.callee;
392
+ return (this.types.isMemberExpression(callee) &&
393
+ this.types.isIdentifier(callee.property) &&
394
+ callee.property.name === methodName);
395
+ }
396
+ isChainedArrayMethod(node) {
397
+ const chainMethods = ["filter", "sort", "slice", "concat", "reverse", "flat"];
398
+ return chainMethods.some((m) => this.isArrayMethod(node, m));
399
+ }
400
+ /**
401
+ * Detect base44.entities.EntityName.list() or .getAll() patterns.
402
+ * Returns the entity name as the collection name.
403
+ */
404
+ isBase44EntityListCall(node) {
405
+ const callee = node.callee;
406
+ if (!this.types.isMemberExpression(callee))
407
+ return null;
408
+ const method = callee.property;
409
+ if (!this.types.isIdentifier(method) ||
410
+ (method.name !== "list" && method.name !== "getAll")) {
411
+ return null;
412
+ }
413
+ const entityAccess = callee.object;
414
+ if (!this.types.isMemberExpression(entityAccess))
415
+ return null;
416
+ const entityName = entityAccess.property;
417
+ if (!this.types.isIdentifier(entityName))
418
+ return null;
419
+ const entitiesAccess = entityAccess.object;
420
+ if (!this.types.isMemberExpression(entitiesAccess))
421
+ return null;
422
+ const entitiesProp = entitiesAccess.property;
423
+ if (!this.types.isIdentifier(entitiesProp) ||
424
+ entitiesProp.name !== "entities") {
425
+ return null;
426
+ }
427
+ return { collectionName: entityName.name };
428
+ }
429
+ /**
430
+ * Detect base44.entities.EntityName.getById() or .get() patterns.
431
+ */
432
+ isBase44EntityGetCall(node) {
433
+ const callee = node.callee;
434
+ if (!this.types.isMemberExpression(callee))
435
+ return null;
436
+ const method = callee.property;
437
+ if (!this.types.isIdentifier(method) ||
438
+ (method.name !== "get" && method.name !== "getById")) {
439
+ return null;
440
+ }
441
+ const entityAccess = callee.object;
442
+ if (!this.types.isMemberExpression(entityAccess))
443
+ return null;
444
+ const entityName = entityAccess.property;
445
+ if (!this.types.isIdentifier(entityName))
446
+ return null;
447
+ const entitiesAccess = entityAccess.object;
448
+ if (!this.types.isMemberExpression(entitiesAccess))
449
+ return null;
450
+ const entitiesProp = entitiesAccess.property;
451
+ if (!this.types.isIdentifier(entitiesProp) ||
452
+ entitiesProp.name !== "entities") {
453
+ return null;
454
+ }
455
+ return { collectionName: entityName.name };
456
+ }
457
+ getCallbackArgument(callExpr) {
458
+ const firstArg = callExpr.arguments[0];
459
+ if (this.types.isArrowFunctionExpression(firstArg) ||
460
+ this.types.isFunctionExpression(firstArg)) {
461
+ return firstArg;
462
+ }
463
+ return null;
464
+ }
465
+ }
466
+ export class StaticValueUtils {
467
+ types;
468
+ constructor(types) {
469
+ this.types = types;
470
+ }
471
+ isPrimitiveLiteral(path) {
472
+ return (path.isStringLiteral() ||
473
+ path.isNumericLiteral() ||
474
+ path.isBooleanLiteral() ||
475
+ path.isNullLiteral());
476
+ }
477
+ isStaticValue(path, visited = new Set()) {
478
+ if (this.isPrimitiveLiteral(path))
479
+ return true;
480
+ if (path.isIdentifier())
481
+ return this.isStaticIdentifier(path, visited);
482
+ if (path.isObjectExpression())
483
+ return this.isStaticObject(path, visited);
484
+ if (path.isArrayExpression())
485
+ return this.isStaticArrayExpression(path, visited);
486
+ return false;
487
+ }
488
+ isStaticIdentifier(path, visited = new Set()) {
489
+ const binding = path.scope.getBinding(path.node.name);
490
+ if (!binding)
491
+ return false;
492
+ if (binding.kind === "module")
493
+ return true;
494
+ if (binding.kind === "const" && binding.path.isVariableDeclarator()) {
495
+ const name = path.node.name;
496
+ if (visited.has(name))
497
+ return false;
498
+ visited.add(name);
499
+ const init = binding.path.get("init");
500
+ if (init.hasNode()) {
501
+ return this.isStaticValue(init, visited);
502
+ }
503
+ }
504
+ return false;
505
+ }
506
+ isStaticObject(path, visited = new Set()) {
507
+ return path.get("properties").every((prop) => {
508
+ if (!prop.isObjectProperty())
509
+ return false;
510
+ return this.isStaticValue(prop.get("value"), visited);
511
+ });
512
+ }
513
+ isStaticArrayExpression(arrayExpression, visited = new Set()) {
514
+ return arrayExpression.get("elements").every((element) => {
515
+ if (!element.node || element.isSpreadElement())
516
+ return true;
517
+ return this.isStaticValue(element, visited);
518
+ });
519
+ }
520
+ isDerivedFromStaticData(identifierName, path) {
521
+ const binding = path.scope.getBinding(identifierName);
522
+ if (!binding)
523
+ return false;
524
+ if (binding.path.isVariableDeclarator()) {
525
+ const init = binding.path.get("init");
526
+ if (init.isArrayExpression() || init.isObjectExpression()) {
527
+ return this.isStaticValue(init);
528
+ }
529
+ }
530
+ const fnParent = path.getFunctionParent();
531
+ if (!fnParent)
532
+ return false;
533
+ const params = fnParent.get("params");
534
+ for (const param of (Array.isArray(params) ? params : [params])) {
535
+ if (param.isIdentifier() && param.node.name === identifierName) {
536
+ const mapCall = fnParent.parentPath;
537
+ if (mapCall?.isCallExpression()) {
538
+ const callee = mapCall.get("callee");
539
+ if (callee.isMemberExpression() &&
540
+ callee.get("property").isIdentifier()) {
541
+ const propName = callee.get("property").node.name;
542
+ if (propName === "map" || propName === "flatMap") {
543
+ const arrayObj = callee.get("object");
544
+ if (arrayObj.isIdentifier()) {
545
+ return this.isDerivedFromStaticData(arrayObj.node.name, arrayObj);
546
+ }
547
+ if (arrayObj.isArrayExpression()) {
548
+ return this.isStaticArrayExpression(arrayObj);
549
+ }
550
+ }
551
+ }
552
+ }
553
+ }
554
+ }
555
+ return false;
556
+ }
557
+ }
558
+ export class TypeCheckUtils {
559
+ types;
560
+ constructor(types) {
561
+ this.types = types;
562
+ }
563
+ isArrayIsArrayCheck(node) {
564
+ if (!this.types.isCallExpression(node))
565
+ return false;
566
+ const callee = node.callee;
567
+ return (this.types.isMemberExpression(callee) &&
568
+ this.types.isIdentifier(callee.object) &&
569
+ callee.object.name === "Array" &&
570
+ this.types.isIdentifier(callee.property) &&
571
+ callee.property.name === "isArray");
572
+ }
573
+ isTypeofObjectCheck(node) {
574
+ if (!this.types.isBinaryExpression(node))
575
+ return false;
576
+ if (node.operator !== "===" && node.operator !== "==")
577
+ return false;
578
+ const isTypeof = (side) => this.types.isUnaryExpression(side) && side.operator === "typeof";
579
+ const isObjectString = (side) => this.types.isStringLiteral(side) && side.value === "object";
580
+ return ((isTypeof(node.left) &&
581
+ isObjectString(node.right)) ||
582
+ (isObjectString(node.left) &&
583
+ isTypeof(node.right)));
584
+ }
585
+ isReferenceTypeCheck(node) {
586
+ return this.isArrayIsArrayCheck(node) || this.isTypeofObjectCheck(node);
587
+ }
588
+ isLengthCheck(node) {
589
+ if (this.types.isMemberExpression(node)) {
590
+ return (this.types.isIdentifier(node.property) &&
591
+ node.property.name === "length");
592
+ }
593
+ if (this.types.isOptionalMemberExpression(node)) {
594
+ return (this.types.isIdentifier(node.property) &&
595
+ node.property.name === "length");
596
+ }
597
+ return false;
598
+ }
599
+ }
600
+ //# sourceMappingURL=shared-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-utils.js","sourceRoot":"","sources":["../../../src/processors/utils/shared-utils.ts"],"names":[],"mappings":"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"}