Skip to content

Releases: sass/dart-sass

Dart Sass 1.0.0-beta.5.2

03 Mar 02:44
Compare
Choose a tag to compare
Pre-release
  • Fix a bug where some colors would crash compressed mode.

Dart Sass 1.0.0-beta.5.1

03 Feb 01:42
Compare
Choose a tag to compare
Pre-release
  • Add a compressed output style.

  • Emit a warning when && is used, since it's probably not what the user means.

  • round() now returns the correct results for negative numbers that should round down.

  • var() may now be passed in place of multiple arguments to rgb(), rgba(), hsl() and hsla().

  • Fix some cases where equivalent numbers wouldn't count as the same keys in maps.

  • Fix a bug where multiplication like (1/1px) * (1px/1) wouldn't properly cancel out units.

  • Fix a bug where dividing by a compatible unit would produce an invalid result.

  • Remove a non-sh-compatible idiom from the standalone shell script.

Dart API

  • Add a functions parameter to compile(), compleString(), compileAsync(), and compileStringAsync(). This allows users to define custom functions in Dart that can be invoked from Sass stylesheets.

  • Expose the Callable and AsyncCallable types, which represent functions that can be invoked from Sass.

  • Expose the Value type and its subclasses, as well as the top-level sassTrue, sassFalse, and sassNull values, which represent Sass values that may be passed into or returned from custom functions.

  • Expose the OutputStyle enum, and add a style parameter to compile(), compleString(), compileAsync(), and compileStringAsync() that allows users to control the output style.

Node JS API

  • Support the functions option.

  • Support the "compressed" value for the outputStyle option.

Dart Sass 1.0.0-beta.4

08 Dec 23:56
Compare
Choose a tag to compare
Pre-release
  • Support unquoted imports in the indented syntax.

  • Fix a crash when :not(...) extends a selector that appears in :not(:not(...)).

Node JS API

  • Add support for asynchronous importers to render() and renderSync().

Dart API

  • Add compileAsync() and compileStringAsync() methods. These run asynchronously, which allows them to take asynchronous importers (see below).

  • Add an AsyncImporter class. This allows imports to be resolved asynchronously in case no synchronous APIs are available. AsyncImporters are only compatible with compileAysnc() and compileStringAsync().

Dart Sass 1.0.0-beta.3

03 Nov 21:52
Compare
Choose a tag to compare
Pre-release
  • Properly parse numbers with exponents.

  • Don't crash when evaluating CSS variables whose names are entirely interpolated (for example, #{--foo}: ...).

Node JS API

  • Add support for the importer option to render() and renderSync(). Only synchronous importers are currently supported.

Dart API

  • Added an Importer class. This can be extended by users to provide support for custom resolution for @import rules.

  • Added built-in FilesystemImporter and PackageImporter implementations that support resolving file: and package: URLs, respectively.

  • Added an importers argument to the compile() and compileString() functions that provides Importers to use when resolving @import rules.

  • Added a loadPaths argument to the compile() and compileString() functions that provides paths to search for stylesheets when resolving @import rules. This is a shorthand for passing FilesystemImporters to the importers argument.

Dart Sass 1.0.0-beta.2

15 Jul 01:57
Compare
Choose a tag to compare
Pre-release
  • Add support for the ::slotted() pseudo-element.

  • Generated transparent colors will now be emitted as rgba(0, 0, 0, 0) rather
    than transparent. This works around a bug wherein IE incorrectly handles the
    latter format.

Command-Line Interface

  • Improve the logic for whether to use terminal colors by default.

Dart Sass 1.0.0-beta.1

05 Jun 20:00
Compare
Choose a tag to compare
Pre-release
  • Drop support for the reference combinator. This has been removed from the spec, and will be deprecated and eventually removed in other implementations.

  • Trust type annotations when compiling to JavaScript, which makes it substantially faster.

  • Compile to minified JavaScript, which decreases the code size substantially and makes startup a little faster.

  • Fix a crash when inspecting a string expression that ended in "\a".

  • Fix a bug where declarations and @extend were allowed outside of a style rule in certain circumstances.

  • Fix not in parentheses in @supports conditions.

  • Allow url as an identifier name.

  • Properly parse /***/ in selectors.

  • Properly parse unary operators immediately after commas.

  • Match Ruby Sass's rounding behavior for all functions.

  • Allow \ at the beginning of a selector in the indented syntax.

  • Fix a number of @extend bugs:

    • selector-extend() and selector-replace() now allow compound selector extendees.

    • Remove the universal selector * when unifying with other selectors.

    • Properly unify the result of multiple simple selectors in the same compound selector being extended.

    • Properly handle extensions being extended.

    • Properly follow the first law of @extend.

    • Fix selector specificity tracking to follow the second law of @extend.

    • Allow extensions that match selectors but fail to unify.

    • Partially-extended selectors are no longer used as parent selectors.

    • Fix an edge case where both the extender and the extended selector have invalid combinator sequences.

    • Don't crash with a "Bad state: no element" error in certain edge cases.

Dart Sass 1.0.0-alpha.9

16 Feb 23:28
Compare
Choose a tag to compare
Pre-release
  • Elements without a namespace (such as div) are no longer unified with elements with the empty namespace (such as |div). This unification didn't match the results returned by is-superselector(), and was not guaranteed to be valid.
  • Support & within @at-root.
  • Properly error when a compound selector is followed immediately by &.
  • Properly handle variable scoping in @at-root and nested properties.
  • Properly handle placeholder selectors in selector pseudos.
  • Properly short-circuit the or and and operators.
  • Support --$variable.
  • Don't consider unitless numbers equal to numbers with units.
  • Warn about using named colors in interpolation.
  • Don't emit loud comments in functions.
  • Detect import loops.
  • Fix @import with a supports() clause.
  • Forbid functions named "and", "or", and "not".
  • Fix type-of() with a function.
  • Emit a nicer error for invalid tokens in a selector.
  • Fix invert() with a $weight parameter.
  • Fix a unit-parsing edge-cases.
  • Always parse imports with queries as plain CSS imports.
  • Support & followed by a non-identifier.
  • Properly handle split media queries.
  • Properly handle a placeholder selector that isn't at the beginning of a compound selector.
  • Fix more str-slice() bugs.
  • Fix the % operator.
  • Allow whitespace between = and the mixin name in the indented syntax.
  • Fix some slash division edge cases.
  • Fix not when used like a function.
  • Fix attribute selectors with single-character values.
  • Fix some bugs with the call() function.
  • Properly handle a backslash followed by a CRLF sequence in a quoted string.
  • Fix numbers divided by colors.
  • Support slash-separated numbers in arguments to plain CSS functions.
  • Error out if a function is passed an unknown named parameter.
  • Improve the speed of loading large files on Node.
  • Don't consider browser-prefixed selector pseudos to be superselectors of differently- or non-prefixed selector pseudos with the same base name.
  • Fix an @extend edge case involving multiple combinators in a row.
  • Fix a bug where a @content block could get incorrectly passed to a mixin.
  • Properly isolate the lexical environments of different calls to the same mixin and function.

Dart Sass 1.0.0-alpha.8

14 Jan 00:32
Compare
Choose a tag to compare
Pre-release
  • Add the content-exists() function.
  • Support interpolation in loud comments.
  • Fix a bug where even valid semicolons and exclamation marks in custom property values were disallowed.
  • Disallow invalid function names.
  • Disallow extending across media queries.
  • Properly parse whitespace after ... in argument declaration lists.
  • Support terse mixin syntax in the indented syntax.
  • Fix @at-root query parsing.
  • Support special functions in @-moz-document.
  • Support ... after a digit.
  • Fix some bugs when treating a map as a list of pairs.

Dart Sass 1.0.0-alpha.7

07 Jan 05:50
Compare
Choose a tag to compare
Pre-release
  • Fix function-exists(), variable-exists(), and mixin-exists() to use the lexical scope rather than always using the global scope.
  • str-index() now correctly inserts at negative indices.
  • Properly parse url()s that contain comment-like text.
  • Fix a few more small @extend bugs.
  • Fix a bug where interpolation in a quoted string was being dropped in some circumstances.
  • Properly handle @for rules where each bound has a different unit.
  • Forbid mixins and functions from being defined in control directives.
  • Fix a superselector-computation edge case involving :not().
  • Gracefully handle input files that are invalid UTF-8.
  • Print a Sass stack trace when a file fails to load.

Dart Sass 1.0.0-alpha.6

19 Dec 23:27
Compare
Choose a tag to compare
Pre-release
  • Allow var() to be passed to rgb(), rgba(), hsl(), and hsla().
  • Fix conversions between numbers with dpi, dpcm, and dppx units. Previously these conversions were inverted.
  • Don't crash when calling str-slice() with an $end-at index lower than the $start-at index.
  • str-slice() now correctly returns "" when $end-at is negative and points before the beginning of the string.
  • Interpolation in quoted strings now properly preserves newlines.
  • Don't crash when passing only $hue or no keyword arguments to adjust-color(), scale-color(), or change-color().
  • Preserve escapes in identifiers. This used to only work for identifiers in SassScript.
  • Fix a few small @extend bugs.