@makano/rew 1.2.88 → 1.2.89

Sign up to get free protection for your applications and to get access to all the features.
@@ -247,7 +247,7 @@ function useImp(token, options){
247
247
  token.value = dem+packageName+dem;
248
248
  const file = packageName.startsWith('./') || packageName.startsWith('../');
249
249
  if(!(file) && packageName.match('/')) packageName = packageName.split('/').pop();
250
- if(file) packageName = packageName.replace(path.extname(packageName), '.h.coffee');
250
+ if(file) packageName = path.extname(packageName) ? packageName.replace(path.extname(packageName), '.h.coffee') : packageName;
251
251
  if(file && !packageName.endsWith('.h.coffee')) packageName += '.h.coffee';
252
252
  straceLog('IMP() with HEADER for', packageName);
253
253
  return includeFile(packageName, options);
@@ -581,8 +581,9 @@ const cpl = (module.exports.compile = function (file, options = {}) {
581
581
  ...(doJSX ? [[babelReact, { throwIfNamespace: false, pragmaFrag: options.jsxPragmaFrag || execOptions.jsxPragmaFrag, pragma: options.jsxPragma || execOptions.jsxPragma }]] : [])
582
582
  ],
583
583
  plugins: [
584
- ...(doDecorators ? [[require('@babel/plugin-proposal-decorators'), { version: '2023-05' }], [require('@babel/plugin-proposal-class-properties'), { loose: true }], [require('@babel/plugin-transform-class-static-block'), {}]] : [])
585
- ],
584
+ ...(doDecorators ? [[require('@babel/plugin-proposal-decorators'), { version: '2023-05' }], [require('@babel/plugin-proposal-class-properties'), { loose: true }], [require('@babel/plugin-transform-class-static-block'), {}]] : []),
585
+ // doJSX ? require('./jsx') : null
586
+ ].filter(Boolean),
586
587
  }).code;
587
588
  }
588
589
 
@@ -0,0 +1,67 @@
1
+ // customJSXIdentifierPlugin.js
2
+ module.exports = function customJSXIdentifierPlugin({ types: t }) {
3
+ return {
4
+ visitor: {
5
+ FunctionDeclaration(path) {
6
+ if (containsJSXReturn(path.node.body.body, t)) {
7
+ addJSXReturnFlag(path, path.node.id.name, t);
8
+ }
9
+ },
10
+ FunctionExpression(path) {
11
+ if (containsJSXReturn(path.node.body.body, t)) {
12
+ handleFunctionExpressionOrArrow(path, t);
13
+ }
14
+ },
15
+ ArrowFunctionExpression(path) {
16
+ if (t.isJSXElement(path.node.body) || (t.isBlockStatement(path.node.body) && containsJSXReturn(path.node.body.body, t))) {
17
+ handleFunctionExpressionOrArrow(path, t);
18
+ }
19
+ },
20
+ }
21
+ };
22
+ };
23
+
24
+ function containsJSXReturn(body, t) {
25
+ return body.some(statement => t.isReturnStatement(statement) && t.isJSXElement(statement.argument));
26
+ }
27
+
28
+ function addJSXReturnFlag(path, functionName, t) {
29
+ path.insertAfter(
30
+ t.expressionStatement(
31
+ t.assignmentExpression(
32
+ '=',
33
+ t.memberExpression(t.identifier(functionName), t.identifier('__returnsJSX')),
34
+ t.booleanLiteral(true)
35
+ )
36
+ )
37
+ );
38
+ }
39
+
40
+ function handleFunctionExpressionOrArrow(path, t) {
41
+ // Check for variable declaration
42
+ if (t.isVariableDeclarator(path.parent) && t.isIdentifier(path.parent.id)) {
43
+ const functionName = path.parent.id.name;
44
+ path.findParent(p => p.isVariableDeclaration()).insertAfter(
45
+ t.expressionStatement(
46
+ t.assignmentExpression(
47
+ '=',
48
+ t.memberExpression(t.identifier(functionName), t.identifier('__returnsJSX')),
49
+ t.booleanLiteral(true)
50
+ )
51
+ )
52
+ );
53
+ }
54
+ // Check for variable assignment
55
+ else if (t.isAssignmentExpression(path.parent) && t.isIdentifier(path.parent.left)) {
56
+ const functionName = path.parent.left.name;
57
+ path.parentPath.insertAfter(
58
+ t.expressionStatement(
59
+ t.assignmentExpression(
60
+ '=',
61
+ t.memberExpression(t.identifier(functionName), t.identifier('__returnsJSX')),
62
+ t.booleanLiteral(true)
63
+ )
64
+ )
65
+ );
66
+ }
67
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@makano/rew",
3
- "version": "1.2.88",
3
+ "version": "1.2.89",
4
4
  "description": "A simple coffescript runtime and app manager",
5
5
  "main": "main.js",
6
6
  "directories": {