utils.js 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. "use strict";
  2. var __importDefault = (this && this.__importDefault) || function (mod) {
  3. return (mod && mod.__esModule) ? mod : { "default": mod };
  4. };
  5. Object.defineProperty(exports, "__esModule", { value: true });
  6. exports.addEasyComponentAutoImports = exports.onCompilerError = exports.rewriteObjectExpression = exports.genRenderFunctionDecl = exports.__COMPAT__ = exports.__BROWSER__ = exports.__DEV__ = void 0;
  7. const path_1 = __importDefault(require("path"));
  8. const compiler_core_1 = require("@vue/compiler-core");
  9. const compiler_sfc_1 = require("@vue/compiler-sfc");
  10. const parser_1 = require("@babel/parser");
  11. const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
  12. const transformExpression_1 = require("./transforms/transformExpression");
  13. exports.__DEV__ = true;
  14. exports.__BROWSER__ = false;
  15. exports.__COMPAT__ = false;
  16. function genRenderFunctionDecl({ className = '', }) {
  17. // if(inline){
  18. // return `(): VNode | null =>`
  19. // }
  20. // 调整返回值类型为 any | null, 支持 <template>some text</template>
  21. return `function ${className}Render(): any | null`;
  22. }
  23. exports.genRenderFunctionDecl = genRenderFunctionDecl;
  24. function rewriteObjectExpression(exp, context) {
  25. const source = (0, transformExpression_1.stringifyExpression)(exp);
  26. if (source.includes('{')) {
  27. const s = new compiler_sfc_1.MagicString(source);
  28. const ast = (0, parser_1.parseExpression)(source, {
  29. plugins: context.expressionPlugins,
  30. });
  31. (0, compiler_sfc_1.walk)(ast, {
  32. enter(node) {
  33. if (node.type === 'ObjectExpression') {
  34. s.prependLeft(node.start, node.properties.length > 0
  35. ? 'utsMapOf('
  36. : 'utsMapOf<string, any | null>(');
  37. s.prependRight(node.end, ')');
  38. }
  39. },
  40. });
  41. return (0, compiler_core_1.createSimpleExpression)(s.toString(), false, exp.loc);
  42. }
  43. }
  44. exports.rewriteObjectExpression = rewriteObjectExpression;
  45. function onCompilerError(error) { }
  46. exports.onCompilerError = onCompilerError;
  47. function addEasyComponentAutoImports(easyComponentAutoImports, rootDir, tagName, fileName) {
  48. // 内置easycom,如 unicloud-db
  49. if (fileName.includes('@dcloudio')) {
  50. return;
  51. }
  52. rootDir = (0, uni_cli_shared_1.normalizePath)(rootDir);
  53. if (path_1.default.isAbsolute(fileName) && fileName.startsWith(rootDir)) {
  54. fileName = '@/' + (0, uni_cli_shared_1.normalizePath)(path_1.default.relative(rootDir, fileName));
  55. }
  56. easyComponentAutoImports[fileName] = [
  57. (0, uni_cli_shared_1.genUTSComponentPublicInstanceImported)(rootDir, fileName),
  58. (0, uni_cli_shared_1.genUTSComponentPublicInstanceIdent)(tagName),
  59. ];
  60. }
  61. exports.addEasyComponentAutoImports = addEasyComponentAutoImports;