source: frontend/node_modules/webpack-sources/lib/helpers/streamChunksOfRawSource.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 12 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 2.0 KB
Line 
1/*
2 MIT License http://www.opensource.org/licenses/mit-license.php
3 Author Tobias Koppers @sokra
4*/
5
6"use strict";
7
8const getGeneratedSourceInfo = require("./getGeneratedSourceInfo");
9
10/** @typedef {import("./getGeneratedSourceInfo").GeneratedSourceInfo} GeneratedSourceInfo */
11/** @typedef {import("./streamChunks").OnChunk} OnChunk */
12/** @typedef {import("./streamChunks").OnName} OnName */
13/** @typedef {import("./streamChunks").OnSource} OnSource */
14
15/**
16 * @param {string} source source
17 * @param {OnChunk} onChunk on chunk
18 * @param {OnSource} _onSource on source
19 * @param {OnName} _onName on name
20 * @returns {GeneratedSourceInfo} source info
21 *
22 * Single-pass equivalent of `splitIntoLines(source).forEach(emit)` — emits
23 * each line via onChunk while scanning for newlines, so we never allocate
24 * the intermediate array of lines.
25 */
26const streamChunksOfRawSource = (source, onChunk, _onSource, _onName) => {
27 const len = source.length;
28 if (len === 0) {
29 return { generatedLine: 1, generatedColumn: 0 };
30 }
31 let line = 1;
32 let i = 0;
33 while (i < len) {
34 const n = source.indexOf("\n", i);
35 if (n === -1) {
36 // Trailing partial line (no \n). Emit and return its length as the
37 // final column.
38 const lastLine = i === 0 ? source : source.slice(i);
39 onChunk(lastLine, line, 0, -1, -1, -1, -1);
40 return { generatedLine: line, generatedColumn: lastLine.length };
41 }
42 const chunk = n === i ? "\n" : source.slice(i, n + 1);
43 onChunk(chunk, line, 0, -1, -1, -1, -1);
44 line++;
45 i = n + 1;
46 }
47 // Source ended with a newline — the next "logical" line is empty.
48 return { generatedLine: line, generatedColumn: 0 };
49};
50
51/**
52 * @param {string} source source
53 * @param {OnChunk} onChunk on chunk
54 * @param {OnSource} onSource on source
55 * @param {OnName} onName on name
56 * @param {boolean} finalSource is final source
57 * @returns {GeneratedSourceInfo} source info
58 */
59module.exports = (source, onChunk, onSource, onName, finalSource) =>
60 finalSource
61 ? getGeneratedSourceInfo(source)
62 : streamChunksOfRawSource(source, onChunk, onSource, onName);
Note: See TracBrowser for help on using the repository browser.