sass-embedded 1.0.0-beta.3 → 1.0.0-beta.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/dist/.gitignore +1 -0
  3. package/dist/lib/index.js +36 -2
  4. package/dist/lib/index.js.map +1 -1
  5. package/dist/lib/src/{embedded-compiler/compiler.js → async-compiler.js} +13 -13
  6. package/dist/lib/src/async-compiler.js.map +1 -0
  7. package/dist/lib/src/compile.js +187 -85
  8. package/dist/lib/src/compile.js.map +1 -1
  9. package/dist/lib/src/compiler-path.js +18 -0
  10. package/dist/lib/src/compiler-path.js.map +1 -0
  11. package/dist/lib/src/deprotofy-span.js +51 -0
  12. package/dist/lib/src/deprotofy-span.js.map +1 -0
  13. package/dist/lib/src/{embedded-protocol/dispatcher.js → dispatcher.js} +47 -41
  14. package/dist/lib/src/dispatcher.js.map +1 -0
  15. package/dist/lib/src/exception.js +20 -0
  16. package/dist/lib/src/exception.js.map +1 -0
  17. package/dist/lib/src/function-registry.js +92 -0
  18. package/dist/lib/src/function-registry.js.map +1 -0
  19. package/dist/lib/src/importer-registry.js +127 -0
  20. package/dist/lib/src/importer-registry.js.map +1 -0
  21. package/dist/lib/src/legacy.js +133 -0
  22. package/dist/lib/src/legacy.js.map +1 -0
  23. package/dist/lib/src/{embedded-protocol/message-transformer.js → message-transformer.js} +11 -10
  24. package/dist/lib/src/message-transformer.js.map +1 -0
  25. package/dist/lib/src/{embedded-compiler/packet-transformer.js → packet-transformer.js} +2 -1
  26. package/dist/lib/src/packet-transformer.js.map +1 -0
  27. package/dist/lib/src/protofier.js +272 -0
  28. package/dist/lib/src/protofier.js.map +1 -0
  29. package/dist/lib/src/{embedded-protocol/request-tracker.js → request-tracker.js} +1 -0
  30. package/dist/lib/src/request-tracker.js.map +1 -0
  31. package/dist/lib/src/sync-compiler.js +52 -0
  32. package/dist/lib/src/sync-compiler.js.map +1 -0
  33. package/dist/lib/src/{exception/span.js → sync-process/event.js} +2 -2
  34. package/dist/lib/src/sync-process/event.js.map +1 -0
  35. package/dist/lib/src/sync-process/index.js +122 -0
  36. package/dist/lib/src/sync-process/index.js.map +1 -0
  37. package/dist/lib/src/sync-process/sync-message-port.js +128 -0
  38. package/dist/lib/src/sync-process/sync-message-port.js.map +1 -0
  39. package/dist/lib/src/sync-process/worker.js +51 -0
  40. package/dist/lib/src/sync-process/worker.js.map +1 -0
  41. package/dist/lib/src/utils.js +88 -0
  42. package/dist/lib/src/utils.js.map +1 -1
  43. package/dist/lib/src/value/argument-list.js +31 -0
  44. package/dist/lib/src/value/argument-list.js.map +1 -0
  45. package/dist/lib/src/value/boolean.js +40 -0
  46. package/dist/lib/src/value/boolean.js.map +1 -0
  47. package/dist/lib/src/value/color.js +258 -0
  48. package/dist/lib/src/value/color.js.map +1 -0
  49. package/dist/lib/src/value/function.js +34 -0
  50. package/dist/lib/src/value/function.js.map +1 -0
  51. package/dist/lib/src/value/{value.js → index.js} +28 -17
  52. package/dist/lib/src/value/index.js.map +1 -0
  53. package/dist/lib/src/value/list.js +99 -0
  54. package/dist/lib/src/value/list.js.map +1 -0
  55. package/dist/lib/src/value/map.js +91 -0
  56. package/dist/lib/src/value/map.js.map +1 -0
  57. package/dist/lib/src/value/null.js +10 -6
  58. package/dist/lib/src/value/null.js.map +1 -1
  59. package/dist/lib/src/value/number.js +579 -0
  60. package/dist/lib/src/value/number.js.map +1 -0
  61. package/dist/lib/src/value/string.js +117 -0
  62. package/dist/lib/src/value/string.js.map +1 -0
  63. package/dist/lib/src/value/utils.js +120 -0
  64. package/dist/lib/src/value/utils.js.map +1 -0
  65. package/dist/lib/src/vendor/embedded-protocol/embedded_sass_pb.js +994 -8
  66. package/dist/lib/src/vendor/embedded-protocol/embedded_sass_pb.js.map +1 -1
  67. package/dist/package.json +63 -0
  68. package/dist/tool/utils.js +85 -91
  69. package/dist/tool/utils.js.map +1 -1
  70. package/dist/types/compile.d.ts +152 -0
  71. package/dist/types/exception.d.ts +41 -0
  72. package/dist/types/importer.d.ts +294 -0
  73. package/dist/types/index.d.ts +76 -0
  74. package/dist/types/legacy/exception.d.ts +54 -0
  75. package/dist/types/legacy/function.d.ts +700 -0
  76. package/dist/types/legacy/importer.d.ts +168 -0
  77. package/dist/types/legacy/options.d.ts +642 -0
  78. package/dist/types/legacy/plugin_this.d.ts +73 -0
  79. package/dist/types/legacy/render.d.ts +139 -0
  80. package/dist/types/logger/index.d.ts +94 -0
  81. package/dist/types/logger/source_location.d.ts +21 -0
  82. package/dist/types/logger/source_span.d.ts +34 -0
  83. package/dist/types/options.d.ts +408 -0
  84. package/dist/types/util/promise_or.d.ts +17 -0
  85. package/dist/types/value/argument_list.d.ts +47 -0
  86. package/dist/types/value/boolean.d.ts +29 -0
  87. package/dist/types/value/color.d.ts +107 -0
  88. package/dist/types/value/function.d.ts +22 -0
  89. package/dist/types/value/index.d.ts +173 -0
  90. package/dist/types/value/list.d.ts +54 -0
  91. package/dist/types/value/map.d.ts +41 -0
  92. package/dist/types/value/number.d.ts +305 -0
  93. package/dist/types/value/string.d.ts +84 -0
  94. package/download-compiler-for-end-user.js +1 -6
  95. package/package.json +23 -19
  96. package/dist/lib/index.d.ts +0 -1
  97. package/dist/lib/src/compile.d.ts +0 -20
  98. package/dist/lib/src/embedded-compiler/compiler.d.ts +0 -19
  99. package/dist/lib/src/embedded-compiler/compiler.js.map +0 -1
  100. package/dist/lib/src/embedded-compiler/packet-transformer.d.ts +0 -34
  101. package/dist/lib/src/embedded-compiler/packet-transformer.js.map +0 -1
  102. package/dist/lib/src/embedded-protocol/dispatcher.d.ts +0 -60
  103. package/dist/lib/src/embedded-protocol/dispatcher.js.map +0 -1
  104. package/dist/lib/src/embedded-protocol/message-transformer.d.ts +0 -47
  105. package/dist/lib/src/embedded-protocol/message-transformer.js.map +0 -1
  106. package/dist/lib/src/embedded-protocol/request-tracker.d.ts +0 -20
  107. package/dist/lib/src/embedded-protocol/request-tracker.js.map +0 -1
  108. package/dist/lib/src/embedded-protocol/utils.d.ts +0 -7
  109. package/dist/lib/src/embedded-protocol/utils.js +0 -52
  110. package/dist/lib/src/embedded-protocol/utils.js.map +0 -1
  111. package/dist/lib/src/exception/exception.d.ts +0 -19
  112. package/dist/lib/src/exception/exception.js +0 -36
  113. package/dist/lib/src/exception/exception.js.map +0 -1
  114. package/dist/lib/src/exception/location.d.ts +0 -11
  115. package/dist/lib/src/exception/location.js +0 -6
  116. package/dist/lib/src/exception/location.js.map +0 -1
  117. package/dist/lib/src/exception/span.d.ts +0 -29
  118. package/dist/lib/src/exception/span.js.map +0 -1
  119. package/dist/lib/src/node-sass/render.d.ts +0 -60
  120. package/dist/lib/src/node-sass/render.js +0 -126
  121. package/dist/lib/src/node-sass/render.js.map +0 -1
  122. package/dist/lib/src/utils.d.ts +0 -9
  123. package/dist/lib/src/value/null.d.ts +0 -11
  124. package/dist/lib/src/value/value.d.ts +0 -98
  125. package/dist/lib/src/value/value.js.map +0 -1
  126. package/dist/lib/src/vendor/embedded-protocol/embedded_sass_pb.d.ts +0 -1
  127. package/dist/tool/utils.d.ts +0 -29
package/CHANGELOG.md CHANGED
@@ -1,3 +1,47 @@
1
+ ## 1.0.0-beta.8
2
+
3
+ * Fully support the new JS API:
4
+ * Support custom importers for the new JS API.
5
+ * Support custom loggers for the new JS API.
6
+ * Support the `SassArgumentList` value type.
7
+ * Support the `SassFunction` value type.
8
+
9
+ ## 1.0.0-beta.7
10
+
11
+ * Expose the `Exception` class and ensure that syntax errors match the official
12
+ JS API.
13
+
14
+ * Add support for the `style`, `alertColor`, `alertAscii`, `quietDeps`,
15
+ `verbose`, and `functions` options in `compile()`, `compileString()`,
16
+ `compileAsync()`, and `compileStringAsync()`.
17
+
18
+ * Add support for `CompileResult.loadedUrls`.
19
+
20
+ ## 1.0.0-beta.6
21
+
22
+ * Expose (as yet incomplete) `compile()`, `compileString()`, `compileAsync()`,
23
+ and `compileStringAsync()` functions.
24
+
25
+ * Include the official TypeScript definition files.
26
+
27
+ ## 1.0.0-beta.5
28
+
29
+ - Function and Values API
30
+ - Add `SassColor` class.
31
+ - Add `SassList` and `SassMap` classes.
32
+
33
+ - Add `indentedSyntax` option to `render()`
34
+
35
+ ## 1.0.0-beta.4
36
+
37
+ - Allow installing on arm64.
38
+
39
+ - Function and Values API
40
+ - Add `sassTrue` and `sassFalse` singletons.
41
+ - Add `SassColor` class.
42
+ - Add `SassNumber` class.
43
+ - Add `SassString` class.
44
+
1
45
  ## 1.0.0-beta.3
2
46
 
3
47
  - Properly handle `data:` URIs in sourceMap sources.
package/dist/.gitignore CHANGED
@@ -5,6 +5,7 @@ lib/src/vendor
5
5
  node_modules
6
6
  npm-debug.log*
7
7
  package-lock.json
8
+ test/sandbox
8
9
 
9
10
  # Editors
10
11
  .idea
package/dist/lib/index.js CHANGED
@@ -3,6 +3,40 @@
3
3
  // MIT-style license that can be found in the LICENSE file or at
4
4
  // https://opensource.org/licenses/MIT.
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- var render_1 = require("./src/node-sass/render");
7
- exports.render = render_1.render;
6
+ exports.Logger = exports.info = exports.render = exports.compileStringAsync = exports.compileAsync = exports.compileString = exports.compile = exports.Exception = exports.sassNull = exports.Value = exports.SassString = exports.SassNumber = exports.SassMap = exports.SassFunction = exports.SassColor = exports.sassTrue = exports.sassFalse = exports.SassArgumentList = exports.SassList = void 0;
7
+ const pkg = require("../package.json");
8
+ var list_1 = require("./src/value/list");
9
+ Object.defineProperty(exports, "SassList", { enumerable: true, get: function () { return list_1.SassList; } });
10
+ var argument_list_1 = require("./src/value/argument-list");
11
+ Object.defineProperty(exports, "SassArgumentList", { enumerable: true, get: function () { return argument_list_1.SassArgumentList; } });
12
+ var boolean_1 = require("./src/value/boolean");
13
+ Object.defineProperty(exports, "sassFalse", { enumerable: true, get: function () { return boolean_1.sassFalse; } });
14
+ Object.defineProperty(exports, "sassTrue", { enumerable: true, get: function () { return boolean_1.sassTrue; } });
15
+ var color_1 = require("./src/value/color");
16
+ Object.defineProperty(exports, "SassColor", { enumerable: true, get: function () { return color_1.SassColor; } });
17
+ var function_1 = require("./src/value/function");
18
+ Object.defineProperty(exports, "SassFunction", { enumerable: true, get: function () { return function_1.SassFunction; } });
19
+ var map_1 = require("./src/value/map");
20
+ Object.defineProperty(exports, "SassMap", { enumerable: true, get: function () { return map_1.SassMap; } });
21
+ var number_1 = require("./src/value/number");
22
+ Object.defineProperty(exports, "SassNumber", { enumerable: true, get: function () { return number_1.SassNumber; } });
23
+ var string_1 = require("./src/value/string");
24
+ Object.defineProperty(exports, "SassString", { enumerable: true, get: function () { return string_1.SassString; } });
25
+ var value_1 = require("./src/value");
26
+ Object.defineProperty(exports, "Value", { enumerable: true, get: function () { return value_1.Value; } });
27
+ var null_1 = require("./src/value/null");
28
+ Object.defineProperty(exports, "sassNull", { enumerable: true, get: function () { return null_1.sassNull; } });
29
+ var exception_1 = require("./src/exception");
30
+ Object.defineProperty(exports, "Exception", { enumerable: true, get: function () { return exception_1.Exception; } });
31
+ var compile_1 = require("./src/compile");
32
+ Object.defineProperty(exports, "compile", { enumerable: true, get: function () { return compile_1.compile; } });
33
+ Object.defineProperty(exports, "compileString", { enumerable: true, get: function () { return compile_1.compileString; } });
34
+ Object.defineProperty(exports, "compileAsync", { enumerable: true, get: function () { return compile_1.compileAsync; } });
35
+ Object.defineProperty(exports, "compileStringAsync", { enumerable: true, get: function () { return compile_1.compileStringAsync; } });
36
+ var legacy_1 = require("./src/legacy");
37
+ Object.defineProperty(exports, "render", { enumerable: true, get: function () { return legacy_1.render; } });
38
+ exports.info = `sass-embedded\t${pkg.version}`;
39
+ exports.Logger = {
40
+ silent: { warn() { }, debug() { } },
41
+ };
8
42
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":";AAAA,uEAAuE;AACvE,gEAAgE;AAChE,uCAAuC;;AAEvC,iDAKgC;AAJ9B,0BAAA,MAAM,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":";AAAA,uEAAuE;AACvE,gEAAgE;AAChE,uCAAuC;;;AAEvC,uCAAuC;AAEvC,yCAAyD;AAAlC,gGAAA,QAAQ,OAAA;AAC/B,2DAA2D;AAAnD,iHAAA,gBAAgB,OAAA;AACxB,+CAAqE;AAAhD,oGAAA,SAAS,OAAA;AAAE,mGAAA,QAAQ,OAAA;AACxC,2CAA4C;AAApC,kGAAA,SAAS,OAAA;AACjB,iDAAkD;AAA1C,wGAAA,YAAY,OAAA;AACpB,uCAAwC;AAAhC,8FAAA,OAAO,OAAA;AACf,6CAA8C;AAAtC,oGAAA,UAAU,OAAA;AAClB,6CAA8C;AAAtC,oGAAA,UAAU,OAAA;AAClB,qCAAkC;AAA1B,8FAAA,KAAK,OAAA;AACb,yCAA0C;AAAlC,gGAAA,QAAQ,OAAA;AAEhB,6CAA0C;AAAlC,sGAAA,SAAS,OAAA;AACjB,yCAKuB;AAJrB,kGAAA,OAAO,OAAA;AACP,wGAAA,aAAa,OAAA;AACb,uGAAA,YAAY,OAAA;AACZ,6GAAA,kBAAkB,OAAA;AAEpB,uCAAoC;AAA5B,gGAAA,MAAM,OAAA;AAED,QAAA,IAAI,GAAG,kBAAkB,GAAG,CAAC,OAAO,EAAE,CAAC;AAEvC,QAAA,MAAM,GAAG;IACpB,MAAM,EAAE,EAAC,IAAI,KAAI,CAAC,EAAE,KAAK,KAAI,CAAC,EAAC;CAChC,CAAC"}
@@ -3,31 +3,31 @@
3
3
  // MIT-style license that can be found in the LICENSE file or at
4
4
  // https://opensource.org/licenses/MIT.
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.AsyncEmbeddedCompiler = void 0;
6
7
  const child_process_1 = require("child_process");
7
- const path_1 = require("path");
8
8
  const rxjs_1 = require("rxjs");
9
9
  const operators_1 = require("rxjs/operators");
10
+ const compiler_path_1 = require("./compiler-path");
10
11
  /**
11
- * Invokes the Embedded Sass Compiler as a Node child process, exposing its
12
- * stdio as Observables.
12
+ * An asynchronous wrapper for the embedded Sass compiler that exposes its stdio
13
+ * streams as Observables.
13
14
  */
14
- class EmbeddedCompiler {
15
+ class AsyncEmbeddedCompiler {
15
16
  constructor() {
16
- this.process = child_process_1.spawn(path_1.resolve(__dirname, `../vendor/dart-sass-embedded/dart-sass-embedded${process.platform === 'win32' ? '.bat' : ''}`), {
17
- windowsHide: true,
18
- });
17
+ /** The underlying process that's being wrapped. */
18
+ this.process = (0, child_process_1.spawn)(compiler_path_1.compilerPath, { windowsHide: true });
19
19
  /** The child process's exit event. */
20
- this.exit$ = new rxjs_1.Observable(observer => {
21
- this.process.on('exit', code => observer.next(code));
20
+ this.exit$ = new Promise(resolve => {
21
+ this.process.on('exit', code => resolve(code));
22
22
  });
23
23
  /** The buffers emitted by the child process's stdout. */
24
24
  this.stdout$ = new rxjs_1.Observable(observer => {
25
25
  this.process.stdout.on('data', buffer => observer.next(buffer));
26
- }).pipe(operators_1.takeUntil(this.exit$));
26
+ }).pipe((0, operators_1.takeUntil)(this.exit$));
27
27
  /** The buffers emitted by the child process's stderr. */
28
28
  this.stderr$ = new rxjs_1.Observable(observer => {
29
29
  this.process.stderr.on('data', buffer => observer.next(buffer));
30
- }).pipe(operators_1.takeUntil(this.exit$));
30
+ }).pipe((0, operators_1.takeUntil)(this.exit$));
31
31
  }
32
32
  /** Writes `buffer` to the child process's stdin. */
33
33
  writeStdin(buffer) {
@@ -38,5 +38,5 @@ class EmbeddedCompiler {
38
38
  this.process.stdin.end();
39
39
  }
40
40
  }
41
- exports.EmbeddedCompiler = EmbeddedCompiler;
42
- //# sourceMappingURL=compiler.js.map
41
+ exports.AsyncEmbeddedCompiler = AsyncEmbeddedCompiler;
42
+ //# sourceMappingURL=async-compiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-compiler.js","sourceRoot":"","sources":["../../../lib/src/async-compiler.ts"],"names":[],"mappings":";AAAA,uEAAuE;AACvE,gEAAgE;AAChE,uCAAuC;;;AAEvC,iDAAoC;AACpC,+BAAgC;AAChC,8CAAyC;AAEzC,mDAA6C;AAE7C;;;GAGG;AACH,MAAa,qBAAqB;IAAlC;QACE,mDAAmD;QAClC,YAAO,GAAG,IAAA,qBAAK,EAAC,4BAAY,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC,CAAC,CAAC;QAEpE,sCAAsC;QAC7B,UAAK,GAAG,IAAI,OAAO,CAAgB,OAAO,CAAC,EAAE;YACpD,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,yDAAyD;QAChD,YAAO,GAAG,IAAI,iBAAU,CAAS,QAAQ,CAAC,EAAE;YACnD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAA,qBAAS,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAE/B,yDAAyD;QAChD,YAAO,GAAG,IAAI,iBAAU,CAAS,QAAQ,CAAC,EAAE;YACnD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAA,qBAAS,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAWjC,CAAC;IATC,oDAAoD;IACpD,UAAU,CAAC,MAAc;QACvB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,uEAAuE;IACvE,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;IAC3B,CAAC;CACF;AA5BD,sDA4BC"}
@@ -3,114 +3,216 @@
3
3
  // MIT-style license that can be found in the LICENSE file or at
4
4
  // https://opensource.org/licenses/MIT.
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const url_1 = require("url");
7
- const compiler_1 = require("./embedded-compiler/compiler");
8
- const packet_transformer_1 = require("./embedded-compiler/packet-transformer");
9
- const message_transformer_1 = require("./embedded-protocol/message-transformer");
10
- const dispatcher_1 = require("./embedded-protocol/dispatcher");
11
- const utils_1 = require("./embedded-protocol/utils");
12
- const embedded_sass_pb_1 = require("./vendor/embedded-protocol/embedded_sass_pb");
13
- /**
14
- * Compiles a path and returns the resulting css. Throws a SassException if the
15
- * compilation failed.
16
- */
17
- async function compile(options) {
18
- // TODO(awjin): Create logger, importer, function registries.
19
- const request = newCompileRequest({
20
- path: options.path,
21
- sourceMap: !!options.sourceMap,
22
- });
23
- const response = await compileRequest(request);
24
- if (options.sourceMap) {
25
- options.sourceMap(response.sourceMap);
26
- }
27
- return response.css;
6
+ exports.compileStringAsync = exports.compileAsync = exports.compileString = exports.compile = void 0;
7
+ const supportsColor = require("supports-color");
8
+ const proto = require("./vendor/embedded-protocol/embedded_sass_pb");
9
+ const utils = require("./utils");
10
+ const async_compiler_1 = require("./async-compiler");
11
+ const dispatcher_1 = require("./dispatcher");
12
+ const exception_1 = require("./exception");
13
+ const function_registry_1 = require("./function-registry");
14
+ const importer_registry_1 = require("./importer-registry");
15
+ const message_transformer_1 = require("./message-transformer");
16
+ const packet_transformer_1 = require("./packet-transformer");
17
+ const sync_compiler_1 = require("./sync-compiler");
18
+ const deprotofy_span_1 = require("./deprotofy-span");
19
+ function compile(path, options) {
20
+ const importers = new importer_registry_1.ImporterRegistry(options);
21
+ return compileRequestSync(newCompilePathRequest(path, importers, options), importers, options);
28
22
  }
29
23
  exports.compile = compile;
30
- /**
31
- * Compiles a string and returns the resulting css. Throws a SassException if
32
- * the compilation failed.
33
- */
34
- async function compileString(options) {
35
- // TODO(awjin): Create logger, importer, function registries.
36
- const request = newCompileStringRequest({
37
- source: options.source,
38
- sourceMap: !!options.sourceMap,
39
- url: options.url instanceof url_1.URL ? options.url.toString() : options.url,
40
- });
41
- const response = await compileRequest(request);
42
- if (options.sourceMap) {
43
- options.sourceMap(response.sourceMap);
44
- }
45
- return response.css;
24
+ function compileString(source, options) {
25
+ const importers = new importer_registry_1.ImporterRegistry(options);
26
+ return compileRequestSync(newCompileStringRequest(source, importers, options), importers, options);
46
27
  }
47
28
  exports.compileString = compileString;
29
+ function compileAsync(path, options) {
30
+ const importers = new importer_registry_1.ImporterRegistry(options);
31
+ return compileRequestAsync(newCompilePathRequest(path, importers, options), importers, options);
32
+ }
33
+ exports.compileAsync = compileAsync;
34
+ function compileStringAsync(source, options) {
35
+ const importers = new importer_registry_1.ImporterRegistry(options);
36
+ return compileRequestAsync(newCompileStringRequest(source, importers, options), importers, options);
37
+ }
38
+ exports.compileStringAsync = compileStringAsync;
48
39
  // Creates a request for compiling a file.
49
- function newCompileRequest(options) {
50
- // TODO(awjin): Populate request with importer/function IDs.
51
- const request = new embedded_sass_pb_1.InboundMessage.CompileRequest();
52
- request.setPath(options.path);
53
- request.setSourceMap(options.sourceMap);
40
+ function newCompilePathRequest(path, importers, options) {
41
+ const request = newCompileRequest(importers, options);
42
+ request.setPath(path);
54
43
  return request;
55
44
  }
56
45
  // Creates a request for compiling a string.
57
- function newCompileStringRequest(options) {
58
- // TODO(awjin): Populate request with importer/function IDs.
59
- const input = new embedded_sass_pb_1.InboundMessage.CompileRequest.StringInput();
60
- input.setSource(options.source);
61
- if (options.url)
46
+ function newCompileStringRequest(source, importers, options) {
47
+ var _a;
48
+ const input = new proto.InboundMessage.CompileRequest.StringInput();
49
+ input.setSource(source);
50
+ input.setSyntax(utils.protofySyntax((_a = options === null || options === void 0 ? void 0 : options.syntax) !== null && _a !== void 0 ? _a : 'scss'));
51
+ if (options === null || options === void 0 ? void 0 : options.url)
62
52
  input.setUrl(options.url.toString());
63
- const request = new embedded_sass_pb_1.InboundMessage.CompileRequest();
53
+ if (options && 'importer' in options) {
54
+ input.setImporter(importers.register(options.importer));
55
+ }
56
+ const request = newCompileRequest(importers, options);
64
57
  request.setString(input);
65
- request.setSourceMap(options.sourceMap);
58
+ return request;
59
+ }
60
+ // Creates a compilation request for the given `options` without adding any
61
+ // input-specific options.
62
+ function newCompileRequest(importers, options) {
63
+ var _a, _b, _c;
64
+ const request = new proto.InboundMessage.CompileRequest();
65
+ request.setImportersList(importers.importers);
66
+ request.setGlobalFunctionsList(Object.keys((_a = options === null || options === void 0 ? void 0 : options.functions) !== null && _a !== void 0 ? _a : {}));
67
+ request.setSourceMap(!!(options === null || options === void 0 ? void 0 : options.sourceMap));
68
+ request.setAlertColor((_b = options === null || options === void 0 ? void 0 : options.alertColor) !== null && _b !== void 0 ? _b : !!supportsColor.stdout);
69
+ request.setAlertAscii(!!(options === null || options === void 0 ? void 0 : options.alertAscii));
70
+ request.setQuietDeps(!!(options === null || options === void 0 ? void 0 : options.quietDeps));
71
+ request.setVerbose(!!(options === null || options === void 0 ? void 0 : options.verbose));
72
+ switch ((_c = options === null || options === void 0 ? void 0 : options.style) !== null && _c !== void 0 ? _c : 'expanded') {
73
+ case 'expanded':
74
+ request.setStyle(proto.OutputStyle.EXPANDED);
75
+ break;
76
+ case 'compressed':
77
+ request.setStyle(proto.OutputStyle.COMPRESSED);
78
+ break;
79
+ default:
80
+ throw new Error(`Unknown options.style: "${options === null || options === void 0 ? void 0 : options.style}"`);
81
+ }
66
82
  return request;
67
83
  }
68
84
  // Spins up a compiler, then sends it a compile request. Returns a promise that
69
85
  // resolves with the CompileResult. Throws if there were any protocol or
70
86
  // compilation errors. Shuts down the compiler after compilation.
71
- async function compileRequest(request) {
72
- const embeddedCompiler = new compiler_1.EmbeddedCompiler();
87
+ async function compileRequestAsync(request, importers, options) {
88
+ const functions = new function_registry_1.FunctionRegistry(options === null || options === void 0 ? void 0 : options.functions);
89
+ const embeddedCompiler = new async_compiler_1.AsyncEmbeddedCompiler();
73
90
  try {
74
- const packetTransformer = new packet_transformer_1.PacketTransformer(embeddedCompiler.stdout$, buffer => embeddedCompiler.writeStdin(buffer));
75
- const messageTransformer = new message_transformer_1.MessageTransformer(packetTransformer.outboundProtobufs$, packet => packetTransformer.writeInboundProtobuf(packet));
76
- // TODO(awjin): Pass import and function registries' handler functions to
77
- // dispatcher.
78
- const dispatcher = new dispatcher_1.Dispatcher(messageTransformer.outboundMessages$, message => messageTransformer.writeInboundMessage(message), {
79
- handleImportRequest: () => {
80
- throw Error('Custom importers not yet implemented.');
81
- },
82
- handleFileImportRequest: () => {
83
- throw Error('Custom file importers not yet implemented.');
84
- },
85
- handleCanonicalizeRequest: () => {
86
- throw Error('Canonicalize not yet implemented.');
87
- },
88
- handleFunctionCallRequest: () => {
89
- throw Error('Custom functions not yet implemented.');
90
- },
91
+ const dispatcher = createDispatcher(embeddedCompiler.stdout$, buffer => {
92
+ embeddedCompiler.writeStdin(buffer);
93
+ }, {
94
+ handleImportRequest: request => importers.import(request),
95
+ handleFileImportRequest: request => importers.fileImport(request),
96
+ handleCanonicalizeRequest: request => importers.canonicalize(request),
97
+ handleFunctionCallRequest: request => functions.call(request),
91
98
  });
92
- // TODO(awjin): Subscribe logger to dispatcher's log events.
93
- const response = await dispatcher.sendCompileRequest(request);
94
- if (response.getSuccess()) {
95
- const success = response.getSuccess();
96
- const sourceMap = success.getSourceMap();
97
- if (request.getSourceMap() && sourceMap === undefined) {
98
- throw Error('Compiler did not provide sourceMap.');
99
+ dispatcher.logEvents$.subscribe(event => handleLogEvent(options, event));
100
+ return handleCompileResponse(await new Promise((resolve, reject) => dispatcher.sendCompileRequest(request, (err, response) => {
101
+ if (err) {
102
+ reject(err);
99
103
  }
100
- return {
101
- css: success.getCss(),
102
- sourceMap: sourceMap ? JSON.parse(sourceMap) : undefined,
103
- };
104
+ else {
105
+ resolve(response);
106
+ }
107
+ })));
108
+ }
109
+ finally {
110
+ embeddedCompiler.close();
111
+ await embeddedCompiler.exit$;
112
+ }
113
+ }
114
+ // Spins up a compiler, then sends it a compile request. Returns a promise that
115
+ // resolves with the CompileResult. Throws if there were any protocol or
116
+ // compilation errors. Shuts down the compiler after compilation.
117
+ function compileRequestSync(request, importers, options) {
118
+ const functions = new function_registry_1.FunctionRegistry(options === null || options === void 0 ? void 0 : options.functions);
119
+ const embeddedCompiler = new sync_compiler_1.SyncEmbeddedCompiler();
120
+ try {
121
+ const dispatcher = createDispatcher(embeddedCompiler.stdout$, buffer => {
122
+ embeddedCompiler.writeStdin(buffer);
123
+ }, {
124
+ handleImportRequest: request => importers.import(request),
125
+ handleFileImportRequest: request => importers.fileImport(request),
126
+ handleCanonicalizeRequest: request => importers.canonicalize(request),
127
+ handleFunctionCallRequest: request => functions.call(request),
128
+ });
129
+ dispatcher.logEvents$.subscribe(event => handleLogEvent(options, event));
130
+ let error;
131
+ let response;
132
+ dispatcher.sendCompileRequest(request, (error_, response_) => {
133
+ if (error_) {
134
+ error = error_;
135
+ }
136
+ else {
137
+ response = response_;
138
+ }
139
+ });
140
+ for (;;) {
141
+ if (!embeddedCompiler.yield()) {
142
+ throw utils.compilerError('Embedded compiler exited unexpectedly.');
143
+ }
144
+ if (error)
145
+ throw error;
146
+ if (response)
147
+ return handleCompileResponse(response);
148
+ }
149
+ }
150
+ finally {
151
+ embeddedCompiler.close();
152
+ embeddedCompiler.yieldUntilExit();
153
+ }
154
+ }
155
+ /**
156
+ * Creates a dispatcher that dispatches messages from the given `stdout` stream.
157
+ */
158
+ function createDispatcher(stdout, writeStdin, handlers) {
159
+ const packetTransformer = new packet_transformer_1.PacketTransformer(stdout, writeStdin);
160
+ const messageTransformer = new message_transformer_1.MessageTransformer(packetTransformer.outboundProtobufs$, packet => packetTransformer.writeInboundProtobuf(packet));
161
+ return new dispatcher_1.Dispatcher(messageTransformer.outboundMessages$, message => messageTransformer.writeInboundMessage(message), handlers);
162
+ }
163
+ /** Handles a log event according to `options`. */
164
+ function handleLogEvent(options, event) {
165
+ var _a, _b;
166
+ if (event.getType() === proto.LogEventType.DEBUG) {
167
+ if ((_a = options === null || options === void 0 ? void 0 : options.logger) === null || _a === void 0 ? void 0 : _a.debug) {
168
+ options.logger.debug(event.getMessage(), {
169
+ span: (0, deprotofy_span_1.deprotofySourceSpan)(event.getSpan()),
170
+ });
171
+ }
172
+ else {
173
+ console.error(event.getFormatted());
104
174
  }
105
- else if (response.getFailure()) {
106
- throw utils_1.deprotifyException(response.getFailure());
175
+ }
176
+ else {
177
+ if ((_b = options === null || options === void 0 ? void 0 : options.logger) === null || _b === void 0 ? void 0 : _b.warn) {
178
+ const params = {
179
+ deprecation: event.getType() === proto.LogEventType.DEPRECATION_WARNING,
180
+ };
181
+ const spanProto = event.getSpan();
182
+ if (spanProto)
183
+ params.span = (0, deprotofy_span_1.deprotofySourceSpan)(spanProto);
184
+ const stack = event.getStackTrace();
185
+ if (stack)
186
+ params.stack = stack;
187
+ options.logger.warn(event.getMessage(), params);
107
188
  }
108
189
  else {
109
- throw Error('Compiler sent empty CompileResponse.');
190
+ console.error(event.getFormatted());
110
191
  }
111
192
  }
112
- finally {
113
- embeddedCompiler.close();
193
+ }
194
+ /**
195
+ * Converts a `CompileResponse` into a `CompileResult`.
196
+ *
197
+ * Throws a `SassException` if the compilation failed.
198
+ */
199
+ function handleCompileResponse(response) {
200
+ if (response.getSuccess()) {
201
+ const success = response.getSuccess();
202
+ const result = {
203
+ css: success.getCss(),
204
+ loadedUrls: success.getLoadedUrlsList().map(url => new URL(url)),
205
+ };
206
+ const sourceMap = success.getSourceMap();
207
+ if (sourceMap)
208
+ result.sourceMap = JSON.parse(sourceMap);
209
+ return result;
210
+ }
211
+ else if (response.getFailure()) {
212
+ throw new exception_1.Exception(response.getFailure());
213
+ }
214
+ else {
215
+ throw utils.compilerError('Compiler sent empty CompileResponse.');
114
216
  }
115
217
  }
116
218
  //# sourceMappingURL=compile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"compile.js","sourceRoot":"","sources":["../../../lib/src/compile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compile.js","sourceRoot":"","sources":["../../../lib/src/compile.ts"],"names":[],"mappings":";AAAA,uEAAuE;AACvE,gEAAgE;AAChE,uCAAuC;;;AAGvC,gDAAgD;AAEhD,qEAAqE;AACrE,iCAAiC;AACjC,qDAAuD;AAEvD,6CAA4D;AAC5D,2CAAsC;AACtC,2DAAqD;AACrD,2DAAqD;AACrD,+DAAyD;AACzD,6DAAuD;AACvD,mDAAqD;AACrD,qDAAqD;AAErD,SAAgB,OAAO,CACrB,IAAY,EACZ,OAAyB;IAEzB,MAAM,SAAS,GAAG,IAAI,oCAAgB,CAAC,OAAO,CAAC,CAAC;IAChD,OAAO,kBAAkB,CACvB,qBAAqB,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,EAC/C,SAAS,EACT,OAAO,CACR,CAAC;AACJ,CAAC;AAVD,0BAUC;AAED,SAAgB,aAAa,CAC3B,MAAc,EACd,OAAyB;IAEzB,MAAM,SAAS,GAAG,IAAI,oCAAgB,CAAC,OAAO,CAAC,CAAC;IAChD,OAAO,kBAAkB,CACvB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EACnD,SAAS,EACT,OAAO,CACR,CAAC;AACJ,CAAC;AAVD,sCAUC;AAED,SAAgB,YAAY,CAC1B,IAAY,EACZ,OAA0B;IAE1B,MAAM,SAAS,GAAG,IAAI,oCAAgB,CAAC,OAAO,CAAC,CAAC;IAChD,OAAO,mBAAmB,CACxB,qBAAqB,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,EAC/C,SAAS,EACT,OAAO,CACR,CAAC;AACJ,CAAC;AAVD,oCAUC;AAED,SAAgB,kBAAkB,CAChC,MAAc,EACd,OAAgC;IAEhC,MAAM,SAAS,GAAG,IAAI,oCAAgB,CAAC,OAAO,CAAC,CAAC;IAChD,OAAO,mBAAmB,CACxB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EACnD,SAAS,EACT,OAAO,CACR,CAAC;AACJ,CAAC;AAVD,gDAUC;AAED,0CAA0C;AAC1C,SAAS,qBAAqB,CAC5B,IAAY,EACZ,SAA6C,EAC7C,OAAmC;IAEnC,MAAM,OAAO,GAAG,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACtD,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,4CAA4C;AAC5C,SAAS,uBAAuB,CAC9B,MAAc,EACd,SAA6C,EAC7C,OAAyC;;IAEzC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;IACpE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACxB,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,mCAAI,MAAM,CAAC,CAAC,CAAC;IAEhE,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG;QAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAEvD,IAAI,OAAO,IAAI,UAAU,IAAI,OAAO,EAAE;QACpC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;KACzD;IAED,MAAM,OAAO,GAAG,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACtD,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACzB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,2EAA2E;AAC3E,0BAA0B;AAC1B,SAAS,iBAAiB,CACxB,SAA6C,EAC7C,OAAmC;;IAEnC,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;IAC1D,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC9C,OAAO,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,mCAAI,EAAE,CAAC,CAAC,CAAC;IACtE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,CAAA,CAAC,CAAC;IAC3C,OAAO,CAAC,aAAa,CAAC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,mCAAI,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACrE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,CAAA,CAAC,CAAC;IAC7C,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,CAAA,CAAC,CAAC;IAC3C,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,CAAA,CAAC,CAAC;IAEvC,QAAQ,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,mCAAI,UAAU,EAAE;QACpC,KAAK,UAAU;YACb,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC7C,MAAM;QAER,KAAK,YAAY;YACf,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YAC/C,MAAM;QAER;YACE,MAAM,IAAI,KAAK,CAAC,2BAA2B,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,GAAG,CAAC,CAAC;KACjE;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,+EAA+E;AAC/E,wEAAwE;AACxE,iEAAiE;AACjE,KAAK,UAAU,mBAAmB,CAChC,OAA4C,EAC5C,SAAoC,EACpC,OAA0B;IAE1B,MAAM,SAAS,GAAG,IAAI,oCAAgB,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,CAAC,CAAC;IAC3D,MAAM,gBAAgB,GAAG,IAAI,sCAAqB,EAAE,CAAC;IAErD,IAAI;QACF,MAAM,UAAU,GAAG,gBAAgB,CACjC,gBAAgB,CAAC,OAAO,EACxB,MAAM,CAAC,EAAE;YACP,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC,EACD;YACE,mBAAmB,EAAE,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;YACzD,uBAAuB,EAAE,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC;YACjE,yBAAyB,EAAE,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC;YACrE,yBAAyB,EAAE,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;SAC9D,CACF,CAAC;QAEF,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAEzE,OAAO,qBAAqB,CAC1B,MAAM,IAAI,OAAO,CACf,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAClB,UAAU,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;YACvD,IAAI,GAAG,EAAE;gBACP,MAAM,CAAC,GAAG,CAAC,CAAC;aACb;iBAAM;gBACL,OAAO,CAAC,QAAS,CAAC,CAAC;aACpB;QACH,CAAC,CAAC,CACL,CACF,CAAC;KACH;YAAS;QACR,gBAAgB,CAAC,KAAK,EAAE,CAAC;QACzB,MAAM,gBAAgB,CAAC,KAAK,CAAC;KAC9B;AACH,CAAC;AAED,+EAA+E;AAC/E,wEAAwE;AACxE,iEAAiE;AACjE,SAAS,kBAAkB,CACzB,OAA4C,EAC5C,SAAmC,EACnC,OAAyB;IAEzB,MAAM,SAAS,GAAG,IAAI,oCAAgB,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,CAAC,CAAC;IAC3D,MAAM,gBAAgB,GAAG,IAAI,oCAAoB,EAAE,CAAC;IAEpD,IAAI;QACF,MAAM,UAAU,GAAG,gBAAgB,CACjC,gBAAgB,CAAC,OAAO,EACxB,MAAM,CAAC,EAAE;YACP,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC,EACD;YACE,mBAAmB,EAAE,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;YACzD,uBAAuB,EAAE,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC;YACjE,yBAAyB,EAAE,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC;YACrE,yBAAyB,EAAE,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;SAC9D,CACF,CAAC;QAEF,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAEzE,IAAI,KAAc,CAAC;QACnB,IAAI,QAA2D,CAAC;QAChE,UAAU,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE;YAC3D,IAAI,MAAM,EAAE;gBACV,KAAK,GAAG,MAAM,CAAC;aAChB;iBAAM;gBACL,QAAQ,GAAG,SAAS,CAAC;aACtB;QACH,CAAC,CAAC,CAAC;QAEH,SAAS;YACP,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,EAAE;gBAC7B,MAAM,KAAK,CAAC,aAAa,CAAC,wCAAwC,CAAC,CAAC;aACrE;YAED,IAAI,KAAK;gBAAE,MAAM,KAAK,CAAC;YACvB,IAAI,QAAQ;gBAAE,OAAO,qBAAqB,CAAC,QAAQ,CAAC,CAAC;SACtD;KACF;YAAS;QACR,gBAAgB,CAAC,KAAK,EAAE,CAAC;QACzB,gBAAgB,CAAC,cAAc,EAAE,CAAC;KACnC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CACvB,MAA0B,EAC1B,UAAoC,EACpC,QAAkC;IAElC,MAAM,iBAAiB,GAAG,IAAI,sCAAiB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAEpE,MAAM,kBAAkB,GAAG,IAAI,wCAAkB,CAC/C,iBAAiB,CAAC,kBAAkB,EACpC,MAAM,CAAC,EAAE,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,MAAM,CAAC,CACzD,CAAC;IAEF,OAAO,IAAI,uBAAU,CACnB,kBAAkB,CAAC,iBAAiB,EACpC,OAAO,CAAC,EAAE,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAC1D,QAAQ,CACT,CAAC;AACJ,CAAC;AAED,kDAAkD;AAClD,SAAS,cAAc,CACrB,OAA8C,EAC9C,KAAqC;;IAErC,IAAI,KAAK,CAAC,OAAO,EAAE,KAAK,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE;QAChD,IAAI,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,KAAK,EAAE;YAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE;gBACvC,IAAI,EAAE,IAAA,oCAAmB,EAAC,KAAK,CAAC,OAAO,EAAG,CAAC;aAC5C,CAAC,CAAC;SACJ;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;SACrC;KACF;SAAM;QACL,IAAI,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,IAAI,EAAE;YACzB,MAAM,MAAM,GACV;gBACE,WAAW,EACT,KAAK,CAAC,OAAO,EAAE,KAAK,KAAK,CAAC,YAAY,CAAC,mBAAmB;aAC7D,CAAC;YAEJ,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;YAClC,IAAI,SAAS;gBAAE,MAAM,CAAC,IAAI,GAAG,IAAA,oCAAmB,EAAC,SAAS,CAAC,CAAC;YAE5D,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;YACpC,IAAI,KAAK;gBAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;YAEhC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,MAAM,CAAC,CAAC;SACjD;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;SACrC;KACF;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,qBAAqB,CAC5B,QAA+C;IAE/C,IAAI,QAAQ,CAAC,UAAU,EAAE,EAAE;QACzB,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,EAAG,CAAC;QACvC,MAAM,MAAM,GAAkB;YAC5B,GAAG,EAAE,OAAO,CAAC,MAAM,EAAE;YACrB,UAAU,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;SACjE,CAAC;QAEF,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;QACzC,IAAI,SAAS;YAAE,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACxD,OAAO,MAAM,CAAC;KACf;SAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,EAAE;QAChC,MAAM,IAAI,qBAAS,CAAC,QAAQ,CAAC,UAAU,EAAG,CAAC,CAAC;KAC7C;SAAM;QACL,MAAM,KAAK,CAAC,aAAa,CAAC,sCAAsC,CAAC,CAAC;KACnE;AACH,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ // Copyright 2021 Google LLC. Use of this source code is governed by an
3
+ // MIT-style license that can be found in the LICENSE file or at
4
+ // https://opensource.org/licenses/MIT.
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.compilerPath = void 0;
7
+ const fs = require("fs");
8
+ const p = require("path");
9
+ /** The path to the embedded compiler executable. */
10
+ exports.compilerPath = (() => {
11
+ for (const path of ['vendor', '../../../lib/src/vendor']) {
12
+ const executable = p.resolve(__dirname, path, `dart-sass-embedded/dart-sass-embedded${process.platform === 'win32' ? '.bat' : ''}`);
13
+ if (fs.existsSync(executable))
14
+ return executable;
15
+ }
16
+ throw new Error("Embedded Dart Sass couldn't find the embedded compiler executable.");
17
+ })();
18
+ //# sourceMappingURL=compiler-path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiler-path.js","sourceRoot":"","sources":["../../../lib/src/compiler-path.ts"],"names":[],"mappings":";AAAA,uEAAuE;AACvE,gEAAgE;AAChE,uCAAuC;;;AAEvC,yBAAyB;AACzB,0BAA0B;AAE1B,oDAAoD;AACvC,QAAA,YAAY,GAAG,CAAC,GAAG,EAAE;IAChC,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,yBAAyB,CAAC,EAAE;QACxD,MAAM,UAAU,GAAG,CAAC,CAAC,OAAO,CAC1B,SAAS,EACT,IAAI,EACJ,wCACE,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAC1C,EAAE,CACH,CAAC;QAEF,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,OAAO,UAAU,CAAC;KAClD;IAED,MAAM,IAAI,KAAK,CACb,oEAAoE,CACrE,CAAC;AACJ,CAAC,CAAC,EAAE,CAAC"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ // Copyright 2021 Google LLC. Use of this source code is governed by an
3
+ // MIT-style license that can be found in the LICENSE file or at
4
+ // https://opensource.org/licenses/MIT.
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.deprotofySourceSpan = void 0;
7
+ const url_1 = require("url");
8
+ const utils_1 = require("./utils");
9
+ // Creates a SourceSpan from the given protocol `buffer`. Throws if the buffer
10
+ // has invalid fields.
11
+ function deprotofySourceSpan(buffer) {
12
+ const text = buffer.getText();
13
+ if (buffer.getStart() === undefined) {
14
+ throw (0, utils_1.compilerError)('Expected SourceSpan to have start.');
15
+ }
16
+ const start = deprotofySourceLocation(buffer.getStart());
17
+ let end;
18
+ if (buffer.getEnd() === undefined) {
19
+ if (text !== '') {
20
+ throw (0, utils_1.compilerError)('Expected SourceSpan text to be empty.');
21
+ }
22
+ else {
23
+ end = start;
24
+ }
25
+ }
26
+ else {
27
+ end = deprotofySourceLocation(buffer.getEnd());
28
+ if (end.offset < start.offset) {
29
+ throw (0, utils_1.compilerError)('Expected SourceSpan end to be after start.');
30
+ }
31
+ }
32
+ const url = buffer.getUrl() === '' ? undefined : new url_1.URL(buffer.getUrl());
33
+ const context = buffer.getContext() === '' ? undefined : buffer.getContext();
34
+ return {
35
+ text,
36
+ start,
37
+ end,
38
+ url,
39
+ context,
40
+ };
41
+ }
42
+ exports.deprotofySourceSpan = deprotofySourceSpan;
43
+ // Creates a SourceLocation from the given protocol `buffer`.
44
+ function deprotofySourceLocation(buffer) {
45
+ return {
46
+ offset: buffer.getOffset(),
47
+ line: buffer.getLine(),
48
+ column: buffer.getColumn(),
49
+ };
50
+ }
51
+ //# sourceMappingURL=deprotofy-span.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deprotofy-span.js","sourceRoot":"","sources":["../../../lib/src/deprotofy-span.ts"],"names":[],"mappings":";AAAA,uEAAuE;AACvE,gEAAgE;AAChE,uCAAuC;;;AAEvC,6BAAwB;AAIxB,mCAAsC;AAEtC,8EAA8E;AAC9E,sBAAsB;AACtB,SAAgB,mBAAmB,CAAC,MAAwB;IAC1D,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IAE9B,IAAI,MAAM,CAAC,QAAQ,EAAE,KAAK,SAAS,EAAE;QACnC,MAAM,IAAA,qBAAa,EAAC,oCAAoC,CAAC,CAAC;KAC3D;IACD,MAAM,KAAK,GAAG,uBAAuB,CAAC,MAAM,CAAC,QAAQ,EAAG,CAAC,CAAC;IAE1D,IAAI,GAAG,CAAC;IACR,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,SAAS,EAAE;QACjC,IAAI,IAAI,KAAK,EAAE,EAAE;YACf,MAAM,IAAA,qBAAa,EAAC,uCAAuC,CAAC,CAAC;SAC9D;aAAM;YACL,GAAG,GAAG,KAAK,CAAC;SACb;KACF;SAAM;QACL,GAAG,GAAG,uBAAuB,CAAC,MAAM,CAAC,MAAM,EAAG,CAAC,CAAC;QAChD,IAAI,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE;YAC7B,MAAM,IAAA,qBAAa,EAAC,4CAA4C,CAAC,CAAC;SACnE;KACF;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,SAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAE1E,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IAE7E,OAAO;QACL,IAAI;QACJ,KAAK;QACL,GAAG;QACH,GAAG;QACH,OAAO;KACR,CAAC;AACJ,CAAC;AAjCD,kDAiCC;AAED,6DAA6D;AAC7D,SAAS,uBAAuB,CAC9B,MAAuC;IAEvC,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE;QAC1B,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE;QACtB,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE;KAC3B,CAAC;AACJ,CAAC"}