context-DwbtaXxf.cjs 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. //#region rolldown:runtime
  2. var __create = Object.create;
  3. var __defProp = Object.defineProperty;
  4. var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
  5. var __getOwnPropNames = Object.getOwnPropertyNames;
  6. var __getProtoOf = Object.getPrototypeOf;
  7. var __hasOwnProp = Object.prototype.hasOwnProperty;
  8. var __copyProps = (to, from, except, desc) => {
  9. if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
  10. key = keys[i];
  11. if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
  12. get: ((k) => from[k]).bind(null, key),
  13. enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
  14. });
  15. }
  16. return to;
  17. };
  18. var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
  19. value: mod,
  20. enumerable: true
  21. }) : target, mod));
  22. //#endregion
  23. const node_path = __toESM(require("node:path"));
  24. const picomatch = __toESM(require("picomatch"));
  25. const acorn = __toESM(require("acorn"));
  26. //#region src/utils/general.ts
  27. function toArray(array) {
  28. array = array || [];
  29. if (Array.isArray(array)) return array;
  30. return [array];
  31. }
  32. //#endregion
  33. //#region src/utils/filter.ts
  34. const BACKSLASH_REGEX = /\\/g;
  35. function normalize(path) {
  36. return path.replace(BACKSLASH_REGEX, "/");
  37. }
  38. const ABSOLUTE_PATH_REGEX = /^(?:\/|(?:[A-Z]:)?[/\\|])/i;
  39. function isAbsolute(path) {
  40. return ABSOLUTE_PATH_REGEX.test(path);
  41. }
  42. function getMatcherString(glob, cwd) {
  43. if (glob.startsWith("**") || isAbsolute(glob)) return normalize(glob);
  44. const resolved = (0, node_path.resolve)(cwd, glob);
  45. return normalize(resolved);
  46. }
  47. function patternToIdFilter(pattern) {
  48. if (pattern instanceof RegExp) return (id) => {
  49. const normalizedId = normalize(id);
  50. const result = pattern.test(normalizedId);
  51. pattern.lastIndex = 0;
  52. return result;
  53. };
  54. const cwd = process.cwd();
  55. const glob = getMatcherString(pattern, cwd);
  56. const matcher = (0, picomatch.default)(glob, { dot: true });
  57. return (id) => {
  58. const normalizedId = normalize(id);
  59. return matcher(normalizedId);
  60. };
  61. }
  62. function patternToCodeFilter(pattern) {
  63. if (pattern instanceof RegExp) return (code) => {
  64. const result = pattern.test(code);
  65. pattern.lastIndex = 0;
  66. return result;
  67. };
  68. return (code) => code.includes(pattern);
  69. }
  70. function createFilter(exclude, include) {
  71. if (!exclude && !include) return;
  72. return (input) => {
  73. if (exclude?.some((filter) => filter(input))) return false;
  74. if (include?.some((filter) => filter(input))) return true;
  75. return !(include && include.length > 0);
  76. };
  77. }
  78. function normalizeFilter(filter) {
  79. if (typeof filter === "string" || filter instanceof RegExp) return { include: [filter] };
  80. if (Array.isArray(filter)) return { include: filter };
  81. return {
  82. exclude: filter.exclude ? toArray(filter.exclude) : void 0,
  83. include: filter.include ? toArray(filter.include) : void 0
  84. };
  85. }
  86. function createIdFilter(filter) {
  87. if (!filter) return;
  88. const { exclude, include } = normalizeFilter(filter);
  89. const excludeFilter = exclude?.map(patternToIdFilter);
  90. const includeFilter = include?.map(patternToIdFilter);
  91. return createFilter(excludeFilter, includeFilter);
  92. }
  93. function createCodeFilter(filter) {
  94. if (!filter) return;
  95. const { exclude, include } = normalizeFilter(filter);
  96. const excludeFilter = exclude?.map(patternToCodeFilter);
  97. const includeFilter = include?.map(patternToCodeFilter);
  98. return createFilter(excludeFilter, includeFilter);
  99. }
  100. function createFilterForId(filter) {
  101. const filterFunction = createIdFilter(filter);
  102. return filterFunction ? (id) => !!filterFunction(id) : void 0;
  103. }
  104. function createFilterForTransform(idFilter, codeFilter) {
  105. if (!idFilter && !codeFilter) return;
  106. const idFilterFunction = createIdFilter(idFilter);
  107. const codeFilterFunction = createCodeFilter(codeFilter);
  108. return (id, code) => {
  109. let fallback = true;
  110. if (idFilterFunction) fallback &&= idFilterFunction(id);
  111. if (!fallback) return false;
  112. if (codeFilterFunction) fallback &&= codeFilterFunction(code);
  113. return fallback;
  114. };
  115. }
  116. function normalizeObjectHook(name, hook) {
  117. let handler;
  118. let filter;
  119. if (typeof hook === "function") handler = hook;
  120. else {
  121. handler = hook.handler;
  122. const hookFilter = hook.filter;
  123. if (name === "resolveId" || name === "load") filter = createFilterForId(hookFilter?.id);
  124. else filter = createFilterForTransform(hookFilter?.id, hookFilter?.code);
  125. }
  126. return {
  127. handler,
  128. filter: filter || (() => true)
  129. };
  130. }
  131. //#endregion
  132. //#region src/utils/context.ts
  133. function parse(code, opts = {}) {
  134. return acorn.Parser.parse(code, {
  135. sourceType: "module",
  136. ecmaVersion: "latest",
  137. locations: true,
  138. ...opts
  139. });
  140. }
  141. //#endregion
  142. Object.defineProperty(exports, '__toESM', {
  143. enumerable: true,
  144. get: function () {
  145. return __toESM;
  146. }
  147. });
  148. Object.defineProperty(exports, 'normalizeObjectHook', {
  149. enumerable: true,
  150. get: function () {
  151. return normalizeObjectHook;
  152. }
  153. });
  154. Object.defineProperty(exports, 'parse', {
  155. enumerable: true,
  156. get: function () {
  157. return parse;
  158. }
  159. });
  160. Object.defineProperty(exports, 'toArray', {
  161. enumerable: true,
  162. get: function () {
  163. return toArray;
  164. }
  165. });