template.js 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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.addMiniProgramTemplateFilter = exports.clearMiniProgramTemplateFilter = exports.addMiniProgramTemplateFile = exports.clearMiniProgramTemplateFiles = exports.findMiniProgramTemplateFiles = void 0;
  7. const path_1 = __importDefault(require("path"));
  8. const uni_shared_1 = require("@dcloudio/uni-shared");
  9. const utils_1 = require("../utils");
  10. const templateFilesCache = new Map();
  11. const templateFiltersCache = new Map();
  12. function relativeFilterFilename(filename, filter) {
  13. if (!filter.src) {
  14. return '';
  15. }
  16. return ('./' +
  17. (0, utils_1.normalizeMiniProgramFilename)(path_1.default.relative(path_1.default.dirname(filename), filter.src)));
  18. }
  19. function findMiniProgramTemplateFiles(genFilter) {
  20. const files = Object.create(null);
  21. templateFilesCache.forEach((code, filename) => {
  22. if (!genFilter) {
  23. files[filename] = code;
  24. }
  25. else {
  26. const filters = getMiniProgramTemplateFilters(filename);
  27. if (filters && filters.length) {
  28. files[filename] =
  29. filters
  30. .map((filter) => genFilter(filter, relativeFilterFilename(filename, filter)))
  31. .join(uni_shared_1.LINEFEED) +
  32. uni_shared_1.LINEFEED +
  33. code;
  34. }
  35. else {
  36. files[filename] = code;
  37. }
  38. }
  39. });
  40. return files;
  41. }
  42. exports.findMiniProgramTemplateFiles = findMiniProgramTemplateFiles;
  43. function clearMiniProgramTemplateFiles() {
  44. templateFilesCache.clear();
  45. }
  46. exports.clearMiniProgramTemplateFiles = clearMiniProgramTemplateFiles;
  47. function addMiniProgramTemplateFile(filename, code) {
  48. templateFilesCache.set(filename, code);
  49. }
  50. exports.addMiniProgramTemplateFile = addMiniProgramTemplateFile;
  51. function getMiniProgramTemplateFilters(filename) {
  52. return templateFiltersCache.get(filename);
  53. }
  54. function clearMiniProgramTemplateFilter(filename) {
  55. templateFiltersCache.delete(filename);
  56. }
  57. exports.clearMiniProgramTemplateFilter = clearMiniProgramTemplateFilter;
  58. function addMiniProgramTemplateFilter(filename, filter) {
  59. const filters = templateFiltersCache.get(filename);
  60. if (filters) {
  61. const filterIndex = filters.findIndex((f) => f.id === filter.id);
  62. if (filterIndex > -1) {
  63. filters.splice(filterIndex, 1, filter);
  64. }
  65. else {
  66. filters.push(filter);
  67. }
  68. }
  69. else {
  70. templateFiltersCache.set(filename, [filter]);
  71. }
  72. }
  73. exports.addMiniProgramTemplateFilter = addMiniProgramTemplateFilter;