diff --git a/packages/angular_devkit/build_angular/src/tools/sass/lexer.ts b/packages/angular_devkit/build_angular/src/tools/sass/lexer.ts index 9d35edb33a41..abd9a65eb556 100644 --- a/packages/angular_devkit/build_angular/src/tools/sass/lexer.ts +++ b/packages/angular_devkit/build_angular/src/tools/sass/lexer.ts @@ -167,101 +167,3 @@ export function* findUrls( } } } - -/** - * Scans a CSS or Sass file and locates all valid import/use directive values as defined by the - * syntax specification. - * @param contents A string containing a CSS or Sass file to scan. - * @returns An iterable that yields each CSS directive value found. - */ -export function* findImports( - contents: string, -): Iterable<{ start: number; end: number; specifier: string }> { - yield* find(contents, '@import '); - yield* find(contents, '@use '); -} - -/** - * Scans a CSS or Sass file and locates all valid function/directive values as defined by the - * syntax specification. - * @param contents A string containing a CSS or Sass file to scan. - * @param prefix The prefix to start a valid segment. - * @returns An iterable that yields each CSS url function value found. - */ -function* find( - contents: string, - prefix: string, -): Iterable<{ start: number; end: number; specifier: string }> { - let pos = 0; - let width = 1; - let current = -1; - const next = () => { - pos += width; - current = contents.codePointAt(pos) ?? -1; - width = current > 0xffff ? 2 : 1; - - return current; - }; - - // Based on https://www.w3.org/TR/css-syntax-3/#consume-ident-like-token - while ((pos = contents.indexOf(prefix, pos)) !== -1) { - // Set to position of the last character in prefix - pos += prefix.length - 1; - width = 1; - - // Consume all leading whitespace - while (isWhitespace(next())) { - /* empty */ - } - - // Initialize URL state - const url = { start: pos, end: -1, specifier: '' }; - let complete = false; - - // If " or ', then consume the value as a string - if (current === 0x0022 || current === 0x0027) { - const ending = current; - // Based on https://www.w3.org/TR/css-syntax-3/#consume-string-token - while (!complete) { - switch (next()) { - case -1: // EOF - return; - case 0x000a: // line feed - case 0x000c: // form feed - case 0x000d: // carriage return - // Invalid - complete = true; - break; - case 0x005c: // \ -- character escape - // If not EOF or newline, add the character after the escape - switch (next()) { - case -1: - return; - case 0x000a: // line feed - case 0x000c: // form feed - case 0x000d: // carriage return - // Skip when inside a string - break; - default: - // TODO: Handle hex escape codes - url.specifier += String.fromCodePoint(current); - break; - } - break; - case ending: - // Full string position should include the quotes for replacement - url.end = pos + 1; - complete = true; - yield url; - break; - default: - url.specifier += String.fromCodePoint(current); - break; - } - } - - next(); - continue; - } - } -}