chunk-WRE7G5OD.js 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }// src/core/utils.ts
  2. var _path = require('path');
  3. var _process = require('process'); var _process2 = _interopRequireDefault(_process);
  4. var _minimatch = require('minimatch');
  5. var _resolve = require('resolve'); var _resolve2 = _interopRequireDefault(_resolve);
  6. var _utils = require('@antfu/utils');
  7. var _localpkg = require('local-pkg');
  8. // src/core/constants.ts
  9. var DISABLE_COMMENT = "/* unplugin-vue-components disabled */";
  10. var DIRECTIVE_IMPORT_PREFIX = "v";
  11. // src/core/utils.ts
  12. var isSSR = Boolean(_process2.default.env.SSR || _process2.default.env.SSG || _process2.default.env.VITE_SSR || _process2.default.env.VITE_SSG);
  13. function pascalCase(str) {
  14. return capitalize(camelCase(str));
  15. }
  16. function camelCase(str) {
  17. return str.replace(/-(\w)/g, (_, c) => c ? c.toUpperCase() : "");
  18. }
  19. function kebabCase(key) {
  20. const result = key.replace(/([A-Z])/g, " $1").trim();
  21. return result.split(" ").join("-").toLowerCase();
  22. }
  23. function capitalize(str) {
  24. return str.charAt(0).toUpperCase() + str.slice(1);
  25. }
  26. function parseId(id) {
  27. const index = id.indexOf("?");
  28. if (index < 0) {
  29. return { path: id, query: {} };
  30. } else {
  31. const query = Object.fromEntries(new URLSearchParams(id.slice(index)));
  32. return {
  33. path: id.slice(0, index),
  34. query
  35. };
  36. }
  37. }
  38. function isEmpty(value) {
  39. if (!value || value === null || value === void 0 || Array.isArray(value) && Object.keys(value).length <= 0)
  40. return true;
  41. else
  42. return false;
  43. }
  44. function matchGlobs(filepath, globs) {
  45. for (const glob of globs) {
  46. if (_minimatch.minimatch.call(void 0, _utils.slash.call(void 0, filepath), glob))
  47. return true;
  48. }
  49. return false;
  50. }
  51. function getTransformedPath(path, importPathTransform) {
  52. if (importPathTransform) {
  53. const result = importPathTransform(path);
  54. if (result != null)
  55. path = result;
  56. }
  57. return path;
  58. }
  59. function stringifyImport(info) {
  60. if (typeof info === "string")
  61. return `import '${info}'`;
  62. if (!info.as)
  63. return `import '${info.from}'`;
  64. else if (info.name)
  65. return `import { ${info.name} as ${info.as} } from '${info.from}'`;
  66. else
  67. return `import ${info.as} from '${info.from}'`;
  68. }
  69. function normalizeComponentInfo(info) {
  70. if ("path" in info) {
  71. return {
  72. from: info.path,
  73. as: info.name,
  74. name: info.importName,
  75. sideEffects: info.sideEffects
  76. };
  77. }
  78. return info;
  79. }
  80. function stringifyComponentImport({ as: name, from: path, name: importName, sideEffects }, ctx) {
  81. path = getTransformedPath(path, ctx.options.importPathTransform);
  82. const imports = [
  83. stringifyImport({ as: name, from: path, name: importName })
  84. ];
  85. if (sideEffects)
  86. _utils.toArray.call(void 0, sideEffects).forEach((i) => imports.push(stringifyImport(i)));
  87. return imports.join(";");
  88. }
  89. function getNameFromFilePath(filePath, options) {
  90. const { resolvedDirs, directoryAsNamespace, globalNamespaces, collapseSamePrefixes, root } = options;
  91. const parsedFilePath = _path.parse.call(void 0, _utils.slash.call(void 0, filePath));
  92. let strippedPath = "";
  93. for (const dir of resolvedDirs) {
  94. if (parsedFilePath.dir.startsWith(dir)) {
  95. strippedPath = parsedFilePath.dir.slice(dir.length);
  96. break;
  97. }
  98. }
  99. let folders = strippedPath.slice(1).split("/").filter(Boolean);
  100. let filename = parsedFilePath.name;
  101. if (filename === "index" && !directoryAsNamespace) {
  102. if (isEmpty(folders))
  103. folders = parsedFilePath.dir.slice(root.length + 1).split("/").filter(Boolean);
  104. filename = `${folders.slice(-1)[0]}`;
  105. return filename;
  106. }
  107. if (directoryAsNamespace) {
  108. if (globalNamespaces.some((name) => folders.includes(name)))
  109. folders = folders.filter((f) => !globalNamespaces.includes(f));
  110. folders = folders.map((f) => f.replace(/[^a-zA-Z0-9\-]/g, ""));
  111. if (filename.toLowerCase() === "index")
  112. filename = "";
  113. if (!isEmpty(folders)) {
  114. let namespaced = [...folders, filename];
  115. if (collapseSamePrefixes) {
  116. const collapsed = [];
  117. for (const fileOrFolderName of namespaced) {
  118. let cumulativePrefix = "";
  119. let didCollapse = false;
  120. for (const parentFolder of [...collapsed].reverse()) {
  121. cumulativePrefix = `${capitalize(parentFolder)}${cumulativePrefix}`;
  122. if (pascalCase(fileOrFolderName).startsWith(pascalCase(cumulativePrefix))) {
  123. const collapseSamePrefix = fileOrFolderName.slice(cumulativePrefix.length);
  124. collapsed.push(collapseSamePrefix);
  125. didCollapse = true;
  126. break;
  127. }
  128. }
  129. if (!didCollapse)
  130. collapsed.push(fileOrFolderName);
  131. }
  132. namespaced = collapsed;
  133. }
  134. filename = namespaced.filter(Boolean).join("-");
  135. }
  136. return filename;
  137. }
  138. return filename;
  139. }
  140. function resolveAlias(filepath, alias) {
  141. const result = filepath;
  142. if (Array.isArray(alias)) {
  143. for (const { find, replacement } of alias)
  144. result.replace(find, replacement);
  145. }
  146. return result;
  147. }
  148. async function getPkgVersion(pkgName, defaultVersion) {
  149. var _a;
  150. try {
  151. const isExist = _localpkg.isPackageExists.call(void 0, pkgName);
  152. if (isExist) {
  153. const pkg = await _localpkg.getPackageInfo.call(void 0, pkgName);
  154. return (_a = pkg == null ? void 0 : pkg.version) != null ? _a : defaultVersion;
  155. } else {
  156. return defaultVersion;
  157. }
  158. } catch (err) {
  159. console.error(err);
  160. return defaultVersion;
  161. }
  162. }
  163. function shouldTransform(code) {
  164. if (code.includes(DISABLE_COMMENT))
  165. return false;
  166. return true;
  167. }
  168. function resolveImportPath(importName) {
  169. return _resolve2.default.sync(importName, {
  170. preserveSymlinks: false
  171. });
  172. }
  173. exports.DISABLE_COMMENT = DISABLE_COMMENT; exports.DIRECTIVE_IMPORT_PREFIX = DIRECTIVE_IMPORT_PREFIX; exports.isSSR = isSSR; exports.pascalCase = pascalCase; exports.camelCase = camelCase; exports.kebabCase = kebabCase; exports.parseId = parseId; exports.matchGlobs = matchGlobs; exports.getTransformedPath = getTransformedPath; exports.normalizeComponentInfo = normalizeComponentInfo; exports.stringifyComponentImport = stringifyComponentImport; exports.getNameFromFilePath = getNameFromFilePath; exports.resolveAlias = resolveAlias; exports.getPkgVersion = getPkgVersion; exports.shouldTransform = shouldTransform; exports.resolveImportPath = resolveImportPath;