WXL
4 天以前 2cc85c64f1c64a2dbaeae276a3e2ca8420de76b7
node_modules/webpack-sources/lib/helpers/getFromStreamChunks.js
@@ -15,6 +15,75 @@
/** @typedef {{ streamChunks: StreamChunksFunction }} SourceLikeWithStreamChunks */
/**
 * @param {SourceLikeWithStreamChunks} source source
 * @param {Options=} options options
 * @returns {RawSourceMap | null} map
 */
module.exports.getMap = (source, options) => {
   let mappings = "";
   /** @type {(string | null)[]} */
   const potentialSources = [];
   /** @type {(string | null)[]} */
   const potentialSourcesContent = [];
   /** @type {(string | null)[]} */
   const potentialNames = [];
   const addMapping = createMappingsSerializer(options);
   source.streamChunks(
      { ...options, source: false, finalSource: true },
      (
         chunk,
         generatedLine,
         generatedColumn,
         sourceIndex,
         originalLine,
         originalColumn,
         nameIndex,
      ) => {
         mappings += addMapping(
            generatedLine,
            generatedColumn,
            sourceIndex,
            originalLine,
            originalColumn,
            nameIndex,
         );
      },
      (sourceIndex, source, sourceContent) => {
         while (potentialSources.length < sourceIndex) {
            potentialSources.push(null);
         }
         potentialSources[sourceIndex] = source;
         if (sourceContent !== undefined) {
            while (potentialSourcesContent.length < sourceIndex) {
               potentialSourcesContent.push(null);
            }
            potentialSourcesContent[sourceIndex] = sourceContent;
         }
      },
      (nameIndex, name) => {
         while (potentialNames.length < nameIndex) {
            potentialNames.push(null);
         }
         potentialNames[nameIndex] = name;
      },
   );
   return mappings.length > 0
      ? {
            version: 3,
            file: "x",
            mappings,
            // We handle broken sources as `null`, in spec this field should be string, but no information what we should do in such cases if we change type it will be breaking change
            sources: /** @type {string[]} */ (potentialSources),
            sourcesContent:
               potentialSourcesContent.length > 0
                  ? /** @type {string[]} */ (potentialSourcesContent)
                  : undefined,
            names: /** @type {string[]} */ (potentialNames),
         }
      : null;
};
/**
 * @param {SourceLikeWithStreamChunks} inputSource input source
 * @param {Options=} options options
 * @returns {SourceAndMap} map
@@ -87,73 +156,4 @@
               }
            : null,
   };
};
/**
 * @param {SourceLikeWithStreamChunks} source source
 * @param {Options=} options options
 * @returns {RawSourceMap | null} map
 */
module.exports.getMap = (source, options) => {
   let mappings = "";
   /** @type {(string | null)[]} */
   const potentialSources = [];
   /** @type {(string | null)[]} */
   const potentialSourcesContent = [];
   /** @type {(string | null)[]} */
   const potentialNames = [];
   const addMapping = createMappingsSerializer(options);
   source.streamChunks(
      { ...options, source: false, finalSource: true },
      (
         chunk,
         generatedLine,
         generatedColumn,
         sourceIndex,
         originalLine,
         originalColumn,
         nameIndex,
      ) => {
         mappings += addMapping(
            generatedLine,
            generatedColumn,
            sourceIndex,
            originalLine,
            originalColumn,
            nameIndex,
         );
      },
      (sourceIndex, source, sourceContent) => {
         while (potentialSources.length < sourceIndex) {
            potentialSources.push(null);
         }
         potentialSources[sourceIndex] = source;
         if (sourceContent !== undefined) {
            while (potentialSourcesContent.length < sourceIndex) {
               potentialSourcesContent.push(null);
            }
            potentialSourcesContent[sourceIndex] = sourceContent;
         }
      },
      (nameIndex, name) => {
         while (potentialNames.length < nameIndex) {
            potentialNames.push(null);
         }
         potentialNames[nameIndex] = name;
      },
   );
   return mappings.length > 0
      ? {
            version: 3,
            file: "x",
            mappings,
            // We handle broken sources as `null`, in spec this field should be string, but no information what we should do in such cases if we change type it will be breaking change
            sources: /** @type {string[]} */ (potentialSources),
            sourcesContent:
               potentialSourcesContent.length > 0
                  ? /** @type {string[]} */ (potentialSourcesContent)
                  : undefined,
            names: /** @type {string[]} */ (potentialNames),
         }
      : null;
};