script.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.resolveScript = exports.scriptIdentifier = exports.isUseInlineTemplate = exports.setResolvedScript = exports.getResolvedScript = exports.invalidateScript = void 0;
  4. const template_1 = require("./template");
  5. const descriptorCache_1 = require("../descriptorCache");
  6. const compileScript_1 = require("./compiler/compileScript");
  7. const scriptCache = new WeakMap();
  8. function invalidateScript(filename) {
  9. const desc = descriptorCache_1.cache.get(filename);
  10. if (desc) {
  11. scriptCache.delete(desc);
  12. }
  13. }
  14. exports.invalidateScript = invalidateScript;
  15. function getResolvedScript(descriptor) {
  16. return scriptCache.get(descriptor);
  17. }
  18. exports.getResolvedScript = getResolvedScript;
  19. function setResolvedScript(descriptor, script) {
  20. scriptCache.set(descriptor, script);
  21. }
  22. exports.setResolvedScript = setResolvedScript;
  23. // Check if we can use compile template as inlined render function
  24. // inside <script setup>. This can only be done for build because
  25. // inlined template cannot be individually hot updated.
  26. function isUseInlineTemplate(descriptor, isProd) {
  27. return isProd && !!descriptor.scriptSetup && !descriptor.template?.src;
  28. }
  29. exports.isUseInlineTemplate = isUseInlineTemplate;
  30. exports.scriptIdentifier = `_sfc_main`;
  31. function resolveScript(descriptor, options) {
  32. if (!descriptor.script && !descriptor.scriptSetup) {
  33. return null;
  34. }
  35. const cached = getResolvedScript(descriptor);
  36. if (cached) {
  37. return cached;
  38. }
  39. let resolved = null;
  40. resolved = (0, compileScript_1.compileScript)(descriptor, {
  41. ...options.script,
  42. className: options.className || '',
  43. id: descriptor.id,
  44. isProd: options.isProduction,
  45. inlineTemplate: true,
  46. hoistStatic: false,
  47. templateOptions: (0, template_1.resolveTemplateCompilerOptions)(descriptor, options),
  48. sourceMap: options.sourceMap,
  49. defineModel: true,
  50. // genDefaultAs: scriptIdentifier,
  51. });
  52. setResolvedScript(descriptor, resolved);
  53. return resolved;
  54. }
  55. exports.resolveScript = resolveScript;