| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.uniPostSourceMapPlugin = void 0;
- const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
- const path_1 = require("path");
- function uniPostSourceMapPlugin() {
- return {
- name: 'uni:post-sourcemap',
- apply: 'serve',
- enforce: 'post',
- configureServer(server) {
- // cli 工程呢?
- // 重要:hack 了 _pendingRequests,来修改 map
- const pendingRequests = new PendingRequests();
- pendingRequests._server = server;
- pendingRequests._inputDir = (0, uni_cli_shared_1.normalizePath)(process.env.UNI_INPUT_DIR);
- // @ts-expect-error
- server._pendingRequests = pendingRequests;
- },
- };
- }
- exports.uniPostSourceMapPlugin = uniPostSourceMapPlugin;
- class PendingRequests extends Map {
- set(key, value) {
- const then = value.request.then;
- // @ts-expect-error
- value.request.then = (onFulfilled, onRejected) => {
- // @ts-expect-error
- return then.call(value.request, (request) => {
- const map = request?.map;
- if (map) {
- // @ts-expect-error
- const mod = this._server.moduleGraph._getUnresolvedUrlToModule(key);
- if (mod && mod.file && (0, path_1.isAbsolute)(mod.file)) {
- const dir = (0, uni_cli_shared_1.normalizePath)((0, path_1.dirname)(mod.file));
- if (dir.startsWith(this._inputDir)) {
- for (let sourcesIndex = 0; sourcesIndex < map.sources.length; ++sourcesIndex) {
- const sourcePath = map.sources[sourcesIndex];
- if (sourcePath) {
- // 将相对路径转换为绝对路径
- if (!(0, path_1.isAbsolute)(sourcePath)) {
- map.sources[sourcesIndex] = (0, uni_cli_shared_1.normalizePath)((0, path_1.join)(dir, sourcePath));
- }
- }
- }
- }
- }
- }
- return onFulfilled?.(request);
- }, onRejected);
- };
- return super.set(key, value);
- }
- }
|