chunk-44ONIEX7.js 6.1 KB

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