sass-embedded 1.0.0-beta.7 → 1.49.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.
- package/CHANGELOG.md +2386 -33
- package/README.md +95 -9
- package/dist/lib/index.js +25 -10
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/src/compile.js +67 -65
- package/dist/lib/src/compile.js.map +1 -1
- package/dist/lib/src/function-registry.js +16 -5
- package/dist/lib/src/function-registry.js.map +1 -1
- package/dist/lib/src/importer-registry.js +127 -0
- package/dist/lib/src/importer-registry.js.map +1 -0
- package/dist/lib/src/legacy/importer.js +191 -0
- package/dist/lib/src/legacy/importer.js.map +1 -0
- package/dist/lib/src/legacy/index.js +267 -0
- package/dist/lib/src/legacy/index.js.map +1 -0
- package/dist/lib/src/legacy/resolve-path.js +101 -0
- package/dist/lib/src/legacy/resolve-path.js.map +1 -0
- package/dist/lib/src/legacy/value/base.js +17 -0
- package/dist/lib/src/legacy/value/base.js.map +1 -0
- package/dist/lib/src/legacy/value/color.js +64 -0
- package/dist/lib/src/legacy/value/color.js.map +1 -0
- package/dist/lib/src/legacy/value/index.js +23 -0
- package/dist/lib/src/legacy/value/index.js.map +1 -0
- package/dist/lib/src/legacy/value/list.js +50 -0
- package/dist/lib/src/legacy/value/list.js.map +1 -0
- package/dist/lib/src/legacy/value/map.js +74 -0
- package/dist/lib/src/legacy/value/map.js.map +1 -0
- package/dist/lib/src/legacy/value/number.js +60 -0
- package/dist/lib/src/legacy/value/number.js.map +1 -0
- package/dist/lib/src/legacy/value/string.js +27 -0
- package/dist/lib/src/legacy/value/string.js.map +1 -0
- package/dist/lib/src/legacy/value/wrap.js +83 -0
- package/dist/lib/src/legacy/value/wrap.js.map +1 -0
- package/dist/lib/src/protofier.js +67 -0
- package/dist/lib/src/protofier.js.map +1 -1
- package/dist/lib/src/utils.js +37 -1
- package/dist/lib/src/utils.js.map +1 -1
- package/dist/lib/src/value/argument-list.js +31 -0
- package/dist/lib/src/value/argument-list.js.map +1 -0
- package/dist/lib/src/value/boolean.js +17 -1
- package/dist/lib/src/value/boolean.js.map +1 -1
- package/dist/lib/src/value/function.js +34 -0
- package/dist/lib/src/value/function.js.map +1 -0
- package/dist/lib/src/value/null.js +13 -1
- package/dist/lib/src/value/null.js.map +1 -1
- package/dist/lib/src/vendor/embedded-protocol/embedded_sass_pb.js +24 -1
- package/dist/lib/src/vendor/embedded-protocol/embedded_sass_pb.js.map +1 -1
- package/dist/package.json +3 -3
- package/dist/tool/utils.js +13 -7
- package/dist/tool/utils.js.map +1 -1
- package/dist/types/index.d.ts +5 -1
- package/dist/types/legacy/function.d.ts +110 -6
- package/dist/types/legacy/plugin_this.d.ts +7 -4
- package/dist/types/options.d.ts +10 -0
- package/package.json +3 -3
- package/dist/lib/src/legacy.js +0 -133
- package/dist/lib/src/legacy.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"importer-registry.js","sourceRoot":"","sources":["../../../lib/src/importer-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright 2022 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.LegacyImporterWrapper = exports.legacyImporterProtocol = exports.endOfLoadProtocol = void 0;
|
|
7
|
+
const assert_1 = require("assert");
|
|
8
|
+
const url_1 = require("url");
|
|
9
|
+
const fs = require("fs");
|
|
10
|
+
const p = require("path");
|
|
11
|
+
const resolve_path_1 = require("./resolve-path");
|
|
12
|
+
const utils_1 = require("../utils");
|
|
13
|
+
/**
|
|
14
|
+
* A special URL protocol we use to signal when a stylesheet has finished
|
|
15
|
+
* loading. This allows us to determine which stylesheet is "current" when
|
|
16
|
+
* resolving a new load, which in turn allows us to pass in an accurate `prev`
|
|
17
|
+
* parameter to the legacy callback.
|
|
18
|
+
*/
|
|
19
|
+
exports.endOfLoadProtocol = 'sass-embedded-legacy-load-done:';
|
|
20
|
+
/**
|
|
21
|
+
* The URL protocol to use for URLs canonicalized using `LegacyImporterWrapper`.
|
|
22
|
+
*/
|
|
23
|
+
exports.legacyImporterProtocol = 'legacy-importer:';
|
|
24
|
+
// A count of `endOfLoadProtocol` imports that have been generated. Each one
|
|
25
|
+
// must be a different URL to ensure that the importer results aren't cached.
|
|
26
|
+
let endOfLoadCount = 0;
|
|
27
|
+
/**
|
|
28
|
+
* A wrapper around a `LegacyImporter` callback that exposes it as a new-API
|
|
29
|
+
* `Importer`.
|
|
30
|
+
*/
|
|
31
|
+
class LegacyImporterWrapper {
|
|
32
|
+
// TODO: Support prev from a load path
|
|
33
|
+
constructor(self, callbacks, loadPaths, initialPrev, sync) {
|
|
34
|
+
this.self = self;
|
|
35
|
+
this.callbacks = callbacks;
|
|
36
|
+
this.loadPaths = loadPaths;
|
|
37
|
+
this.sync = sync;
|
|
38
|
+
// A stack of previous URLs passed to `this.callbacks`.
|
|
39
|
+
this.prev = [];
|
|
40
|
+
// Whether we're expecting the next call to `canonicalize()` to be a relative
|
|
41
|
+
// load. The legacy importer API doesn't handle these loads in the same way as
|
|
42
|
+
// the modern API, so we always return `null` in this case.
|
|
43
|
+
this.expectingRelativeLoad = true;
|
|
44
|
+
const path = initialPrev !== 'stdin';
|
|
45
|
+
this.prev.push({ url: path ? p.resolve(initialPrev) : 'stdin', path });
|
|
46
|
+
}
|
|
47
|
+
canonicalize(url, options) {
|
|
48
|
+
if (url.startsWith(exports.endOfLoadProtocol))
|
|
49
|
+
return new URL(url);
|
|
50
|
+
// Since there's only ever one modern importer in legacy mode, we can be
|
|
51
|
+
// sure that all normal loads are preceded by exactly one relative load.
|
|
52
|
+
if (this.expectingRelativeLoad) {
|
|
53
|
+
if (url.startsWith('file:')) {
|
|
54
|
+
const resolved = (0, resolve_path_1.resolvePath)((0, utils_1.fileUrlToPathCrossPlatform)(url), options.fromImport);
|
|
55
|
+
if (resolved !== null)
|
|
56
|
+
return (0, url_1.pathToFileURL)(resolved);
|
|
57
|
+
}
|
|
58
|
+
this.expectingRelativeLoad = false;
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
this.expectingRelativeLoad = true;
|
|
63
|
+
}
|
|
64
|
+
const prev = this.prev[this.prev.length - 1];
|
|
65
|
+
return (0, utils_1.thenOr)((0, utils_1.thenOr)(this.invokeCallbacks(url, prev.url, options), result => {
|
|
66
|
+
var _a;
|
|
67
|
+
if (result instanceof Error)
|
|
68
|
+
throw result;
|
|
69
|
+
if (result === null)
|
|
70
|
+
return null;
|
|
71
|
+
if ('contents' in result || !('file' in result)) {
|
|
72
|
+
this.lastContents = (_a = result.contents) !== null && _a !== void 0 ? _a : '';
|
|
73
|
+
if ('file' in result) {
|
|
74
|
+
return new URL(exports.legacyImporterProtocol +
|
|
75
|
+
encodeURI(result.file));
|
|
76
|
+
}
|
|
77
|
+
else if (/^[A-Za-z+.-]+:/.test(url)) {
|
|
78
|
+
return new URL(url);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
return new URL(exports.legacyImporterProtocol + encodeURI(url));
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
if (p.isAbsolute(result.file)) {
|
|
86
|
+
const resolved = (0, resolve_path_1.resolvePath)(result.file, options.fromImport);
|
|
87
|
+
return resolved ? (0, url_1.pathToFileURL)(resolved) : null;
|
|
88
|
+
}
|
|
89
|
+
const prefixes = [...this.loadPaths, '.'];
|
|
90
|
+
if (prev.path)
|
|
91
|
+
prefixes.unshift(p.dirname(prev.url));
|
|
92
|
+
for (const prefix of prefixes) {
|
|
93
|
+
const resolved = (0, resolve_path_1.resolvePath)(p.join(prefix, result.file), options.fromImport);
|
|
94
|
+
if (resolved !== null)
|
|
95
|
+
return (0, url_1.pathToFileURL)(resolved);
|
|
96
|
+
}
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
}), result => {
|
|
100
|
+
if (result !== null) {
|
|
101
|
+
const path = result.protocol === 'file:';
|
|
102
|
+
this.prev.push({
|
|
103
|
+
url: path ? (0, utils_1.fileUrlToPathCrossPlatform)(result) : url,
|
|
104
|
+
path,
|
|
105
|
+
});
|
|
106
|
+
return result;
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
for (const loadPath of this.loadPaths) {
|
|
110
|
+
const resolved = (0, resolve_path_1.resolvePath)(p.join(loadPath, url), options.fromImport);
|
|
111
|
+
if (resolved !== null)
|
|
112
|
+
return (0, url_1.pathToFileURL)(resolved);
|
|
113
|
+
}
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
load(canonicalUrl) {
|
|
119
|
+
var _a;
|
|
120
|
+
if (canonicalUrl.protocol === exports.endOfLoadProtocol) {
|
|
121
|
+
this.prev.pop();
|
|
122
|
+
return {
|
|
123
|
+
contents: '',
|
|
124
|
+
syntax: 'scss',
|
|
125
|
+
sourceMapUrl: new URL(exports.endOfLoadProtocol),
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
if (canonicalUrl.protocol === 'file:') {
|
|
129
|
+
const syntax = canonicalUrl.pathname.endsWith('.sass')
|
|
130
|
+
? 'indented'
|
|
131
|
+
: canonicalUrl.pathname.endsWith('.css')
|
|
132
|
+
? 'css'
|
|
133
|
+
: 'scss';
|
|
134
|
+
let contents = (_a = this.lastContents) !== null && _a !== void 0 ? _a : fs.readFileSync((0, utils_1.fileUrlToPathCrossPlatform)(canonicalUrl), 'utf-8');
|
|
135
|
+
this.lastContents = undefined;
|
|
136
|
+
if (syntax === 'scss') {
|
|
137
|
+
contents += this.endOfLoadImport;
|
|
138
|
+
}
|
|
139
|
+
else if (syntax === 'indented') {
|
|
140
|
+
contents += `\n@import "${exports.endOfLoadProtocol}${endOfLoadCount++}"`;
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
this.prev.pop();
|
|
144
|
+
}
|
|
145
|
+
return { contents, syntax, sourceMapUrl: canonicalUrl };
|
|
146
|
+
}
|
|
147
|
+
const lastContents = this.lastContents;
|
|
148
|
+
assert_1.strict.notEqual(lastContents, undefined);
|
|
149
|
+
this.lastContents = undefined;
|
|
150
|
+
return {
|
|
151
|
+
contents: lastContents + this.endOfLoadImport,
|
|
152
|
+
syntax: 'scss',
|
|
153
|
+
sourceMapUrl: canonicalUrl,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
// Invokes each callback in `this.callbacks` until one returns a non-null
|
|
157
|
+
// `LegacyImporterResult`, then returns that result. Returns `null` if all
|
|
158
|
+
// callbacks return `null`.
|
|
159
|
+
invokeCallbacks(url, prev, { fromImport }) {
|
|
160
|
+
const self = { ...this.self, fromImport };
|
|
161
|
+
self.options = { ...self.options, context: self };
|
|
162
|
+
const invokeNthCallback = (n) => (0, utils_1.thenOr)(this.invokeCallback(this.callbacks[n], self, url, prev), result => {
|
|
163
|
+
if (result !== null)
|
|
164
|
+
return result;
|
|
165
|
+
if (n === this.callbacks.length - 1)
|
|
166
|
+
return null;
|
|
167
|
+
return invokeNthCallback(n + 1);
|
|
168
|
+
});
|
|
169
|
+
return invokeNthCallback(0);
|
|
170
|
+
}
|
|
171
|
+
// Invokes `callback` and converts its return value into a `PromiseOr`.
|
|
172
|
+
invokeCallback(callback, self, url, prev) {
|
|
173
|
+
if (this.sync) {
|
|
174
|
+
return callback.call(self, url, prev);
|
|
175
|
+
}
|
|
176
|
+
return new Promise(resolve => {
|
|
177
|
+
// The cast here is necesary to work around microsoft/TypeScript#33815.
|
|
178
|
+
const syncResult = callback.call(self, url, prev, resolve);
|
|
179
|
+
if (syncResult !== undefined)
|
|
180
|
+
resolve(syncResult);
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
// The `@import` statement to inject after the contents of files to ensure
|
|
184
|
+
// that we know when a load has completed so we can pass the correct `prev`
|
|
185
|
+
// argument to callbacks.
|
|
186
|
+
get endOfLoadImport() {
|
|
187
|
+
return `\n;@import "${exports.endOfLoadProtocol}${endOfLoadCount++}";`;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
exports.LegacyImporterWrapper = LegacyImporterWrapper;
|
|
191
|
+
//# sourceMappingURL=importer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"importer.js","sourceRoot":"","sources":["../../../../lib/src/legacy/importer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright 2021 Google Inc. 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.renderSync = exports.render = void 0;
|
|
7
|
+
const fs = require("fs");
|
|
8
|
+
const p = require("path");
|
|
9
|
+
const url_1 = require("url");
|
|
10
|
+
const exception_1 = require("../exception");
|
|
11
|
+
const compile_1 = require("../compile");
|
|
12
|
+
const utils_1 = require("../utils");
|
|
13
|
+
const wrap_1 = require("./value/wrap");
|
|
14
|
+
const importer_1 = require("./importer");
|
|
15
|
+
function render(options, callback) {
|
|
16
|
+
try {
|
|
17
|
+
options = adjustOptions(options);
|
|
18
|
+
const start = Date.now();
|
|
19
|
+
const compileSass = isStringOptions(options)
|
|
20
|
+
? (0, compile_1.compileStringAsync)(options.data, convertStringOptions(options, false))
|
|
21
|
+
: (0, compile_1.compileAsync)(options.file, convertOptions(options, false));
|
|
22
|
+
compileSass.then(result => callback(undefined, newLegacyResult(options, start, result)), error => callback(newLegacyException(error)));
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
if (error instanceof Error)
|
|
26
|
+
callback(newLegacyException(error));
|
|
27
|
+
throw error;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.render = render;
|
|
31
|
+
function renderSync(options) {
|
|
32
|
+
const start = Date.now();
|
|
33
|
+
try {
|
|
34
|
+
options = adjustOptions(options);
|
|
35
|
+
const result = isStringOptions(options)
|
|
36
|
+
? (0, compile_1.compileString)(options.data, convertStringOptions(options, true))
|
|
37
|
+
: (0, compile_1.compile)(options.file, convertOptions(options, true));
|
|
38
|
+
return newLegacyResult(options, start, result);
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
throw newLegacyException(error);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.renderSync = renderSync;
|
|
45
|
+
// Does some initial adjustments of `options` to make it easier to convert pass
|
|
46
|
+
// to the new API.
|
|
47
|
+
function adjustOptions(options) {
|
|
48
|
+
if (!('file' in options && options.file) && !('data' in options)) {
|
|
49
|
+
throw new Error('Either options.data or options.file must be set.');
|
|
50
|
+
}
|
|
51
|
+
if (!isStringOptions(options) &&
|
|
52
|
+
// The `indentedSyntax` option takes precedence over the file extension in the
|
|
53
|
+
// legacy API, but the new API doesn't have a `syntax` option for a file path.
|
|
54
|
+
// Instead, we eagerly load the entrypoint into memory and treat it like a
|
|
55
|
+
// string source.
|
|
56
|
+
(options.indentedSyntax !==
|
|
57
|
+
undefined ||
|
|
58
|
+
options.importer)) {
|
|
59
|
+
return {
|
|
60
|
+
...options,
|
|
61
|
+
data: fs.readFileSync(options.file, 'utf8'),
|
|
62
|
+
indentedSyntax: !!options
|
|
63
|
+
.indentedSyntax,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
return options;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// Returns whether `options` is a `LegacyStringOptions`.
|
|
71
|
+
function isStringOptions(options) {
|
|
72
|
+
return 'data' in options;
|
|
73
|
+
}
|
|
74
|
+
// Converts `LegacyOptions` into new API `Options`.
|
|
75
|
+
function convertOptions(options, sync) {
|
|
76
|
+
var _a, _b, _c;
|
|
77
|
+
if ('outputStyle' in options &&
|
|
78
|
+
options.outputStyle !== 'compressed' &&
|
|
79
|
+
options.outputStyle !== 'expanded') {
|
|
80
|
+
throw new Error(`Unknown output style: "${options.outputStyle}"`);
|
|
81
|
+
}
|
|
82
|
+
const self = pluginThis(options);
|
|
83
|
+
const functions = {};
|
|
84
|
+
for (let [signature, callback] of Object.entries((_a = options.functions) !== null && _a !== void 0 ? _a : {})) {
|
|
85
|
+
// The legacy API allows signatures without parentheses but the modern API
|
|
86
|
+
// does not.
|
|
87
|
+
if (!signature.includes('('))
|
|
88
|
+
signature += '()';
|
|
89
|
+
functions[signature] = (0, wrap_1.wrapFunction)(self, callback, sync);
|
|
90
|
+
}
|
|
91
|
+
const importers = options.importer
|
|
92
|
+
? [
|
|
93
|
+
new importer_1.LegacyImporterWrapper(self, options.importer instanceof Array
|
|
94
|
+
? options.importer
|
|
95
|
+
: [options.importer], (_b = options.includePaths) !== null && _b !== void 0 ? _b : [], (_c = options.file) !== null && _c !== void 0 ? _c : 'stdin', sync),
|
|
96
|
+
]
|
|
97
|
+
: undefined;
|
|
98
|
+
return {
|
|
99
|
+
functions,
|
|
100
|
+
importers,
|
|
101
|
+
sourceMap: wasSourceMapRequested(options),
|
|
102
|
+
sourceMapIncludeSources: options.sourceMapContents,
|
|
103
|
+
loadPaths: importers ? undefined : options.includePaths,
|
|
104
|
+
style: options.outputStyle,
|
|
105
|
+
quietDeps: options.quietDeps,
|
|
106
|
+
verbose: options.verbose,
|
|
107
|
+
logger: options.logger,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
// Converts `LegacyStringOptions` into new API `StringOptions`.
|
|
111
|
+
function convertStringOptions(options, sync) {
|
|
112
|
+
const modernOptions = convertOptions(options, sync);
|
|
113
|
+
return {
|
|
114
|
+
...modernOptions,
|
|
115
|
+
url: options.file ? (0, url_1.pathToFileURL)(options.file) : undefined,
|
|
116
|
+
importer: modernOptions.importers ? modernOptions.importers[0] : undefined,
|
|
117
|
+
syntax: options.indentedSyntax ? 'indented' : 'scss',
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
// Determines whether a sourceMap was requested by the call to `render()`.
|
|
121
|
+
function wasSourceMapRequested(options) {
|
|
122
|
+
return (typeof options.sourceMap === 'string' ||
|
|
123
|
+
(options.sourceMap === true && !!options.outFile));
|
|
124
|
+
}
|
|
125
|
+
// Creates the `this` value that's used for callbacks.
|
|
126
|
+
function pluginThis(options) {
|
|
127
|
+
var _a, _b;
|
|
128
|
+
const pluginThis = {
|
|
129
|
+
options: {
|
|
130
|
+
context: undefined,
|
|
131
|
+
file: options.file,
|
|
132
|
+
data: options.data,
|
|
133
|
+
includePaths: [process.cwd(), ...((_a = options.includePaths) !== null && _a !== void 0 ? _a : [])].join(p.delimiter),
|
|
134
|
+
precision: 10,
|
|
135
|
+
style: 1,
|
|
136
|
+
indentType: 0,
|
|
137
|
+
indentWidth: 2,
|
|
138
|
+
linefeed: '\n',
|
|
139
|
+
result: {
|
|
140
|
+
stats: {
|
|
141
|
+
start: Date.now(),
|
|
142
|
+
entry: (_b = options.file) !== null && _b !== void 0 ? _b : 'data',
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
},
|
|
146
|
+
};
|
|
147
|
+
pluginThis.options.context = pluginThis;
|
|
148
|
+
return pluginThis;
|
|
149
|
+
}
|
|
150
|
+
// Transforms the compilation result into an object that mimics the Node Sass
|
|
151
|
+
// API format.
|
|
152
|
+
function newLegacyResult(options, start, result) {
|
|
153
|
+
var _a, _b;
|
|
154
|
+
const end = Date.now();
|
|
155
|
+
let css = result.css;
|
|
156
|
+
let sourceMapBytes;
|
|
157
|
+
if (result.sourceMap) {
|
|
158
|
+
const sourceMap = result.sourceMap;
|
|
159
|
+
sourceMap.sourceRoot = (_a = options.sourceMapRoot) !== null && _a !== void 0 ? _a : '';
|
|
160
|
+
const sourceMapPath = typeof options.sourceMap === 'string'
|
|
161
|
+
? options.sourceMap
|
|
162
|
+
: options.outFile + '.map';
|
|
163
|
+
const sourceMapDir = p.dirname(sourceMapPath);
|
|
164
|
+
if (options.outFile) {
|
|
165
|
+
sourceMap.file = (0, utils_1.pathToUrlString)(p.relative(sourceMapDir, options.outFile));
|
|
166
|
+
}
|
|
167
|
+
else if (options.file) {
|
|
168
|
+
sourceMap.file = (0, utils_1.pathToUrlString)((0, utils_1.withoutExtension)(options.file) + '.css');
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
sourceMap.file = 'stdin.css';
|
|
172
|
+
}
|
|
173
|
+
sourceMap.sources = sourceMap.sources
|
|
174
|
+
.filter(source => !source.startsWith(importer_1.endOfLoadProtocol))
|
|
175
|
+
.map(source => {
|
|
176
|
+
if (source.startsWith('file://')) {
|
|
177
|
+
return (0, utils_1.pathToUrlString)(p.relative(sourceMapDir, (0, utils_1.fileUrlToPathCrossPlatform)(source)));
|
|
178
|
+
}
|
|
179
|
+
else if (source.startsWith(importer_1.legacyImporterProtocol)) {
|
|
180
|
+
return source.substring(importer_1.legacyImporterProtocol.length);
|
|
181
|
+
}
|
|
182
|
+
else if (source.startsWith('data:')) {
|
|
183
|
+
return 'stdin';
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
return source;
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
sourceMapBytes = Buffer.from(JSON.stringify(sourceMap));
|
|
190
|
+
if (!options.omitSourceMapUrl) {
|
|
191
|
+
let url;
|
|
192
|
+
if (options.sourceMapEmbed) {
|
|
193
|
+
url = `data:application/json;base64,${sourceMapBytes.toString('base64')}`;
|
|
194
|
+
}
|
|
195
|
+
else if (options.outFile) {
|
|
196
|
+
url = (0, utils_1.pathToUrlString)(p.relative(p.dirname(options.outFile), sourceMapPath));
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
url = (0, utils_1.pathToUrlString)(sourceMapPath);
|
|
200
|
+
}
|
|
201
|
+
css += `\n\n/*# sourceMappingURL=${url} */`;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return {
|
|
205
|
+
css: Buffer.from(css),
|
|
206
|
+
map: sourceMapBytes,
|
|
207
|
+
stats: {
|
|
208
|
+
entry: (_b = options.file) !== null && _b !== void 0 ? _b : 'data',
|
|
209
|
+
start,
|
|
210
|
+
end,
|
|
211
|
+
duration: end - start,
|
|
212
|
+
includedFiles: result.loadedUrls
|
|
213
|
+
.filter(url => url.protocol !== importer_1.endOfLoadProtocol)
|
|
214
|
+
.map(url => {
|
|
215
|
+
if (url.protocol === 'file:') {
|
|
216
|
+
return (0, utils_1.fileUrlToPathCrossPlatform)(url);
|
|
217
|
+
}
|
|
218
|
+
else if (url.protocol === importer_1.legacyImporterProtocol) {
|
|
219
|
+
return decodeURI(url.pathname);
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
return url.toString();
|
|
223
|
+
}
|
|
224
|
+
}),
|
|
225
|
+
},
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
// Decorates an Error with additional fields so that it behaves like a Node Sass
|
|
229
|
+
// error.
|
|
230
|
+
function newLegacyException(error) {
|
|
231
|
+
var _a, _b, _c;
|
|
232
|
+
if (!(error instanceof exception_1.Exception)) {
|
|
233
|
+
return Object.assign(error, {
|
|
234
|
+
formatted: error.toString(),
|
|
235
|
+
status: 3,
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
let file;
|
|
239
|
+
if (!((_a = error.span) === null || _a === void 0 ? void 0 : _a.url)) {
|
|
240
|
+
file = 'stdin';
|
|
241
|
+
}
|
|
242
|
+
else if (error.span.url.protocol === 'file:') {
|
|
243
|
+
// We have to cast to Node's URL type here because the specified type is the
|
|
244
|
+
// standard URL type which is slightly less featureful. `fileURLToPath()`
|
|
245
|
+
// does work with standard URL objects in practice, but we know that we
|
|
246
|
+
// generate Node URLs here regardless.
|
|
247
|
+
file = (0, utils_1.fileUrlToPathCrossPlatform)(error.span.url);
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
file = error.span.url.toString();
|
|
251
|
+
}
|
|
252
|
+
return Object.assign(new Error(), {
|
|
253
|
+
status: 1,
|
|
254
|
+
message: error.toString().replace(/^Error: /, ''),
|
|
255
|
+
formatted: error.toString(),
|
|
256
|
+
toString: () => error.toString(),
|
|
257
|
+
stack: error.stack,
|
|
258
|
+
line: (0, utils_1.isNullOrUndefined)((_b = error.span) === null || _b === void 0 ? void 0 : _b.start.line)
|
|
259
|
+
? undefined
|
|
260
|
+
: error.span.start.line + 1,
|
|
261
|
+
column: (0, utils_1.isNullOrUndefined)((_c = error.span) === null || _c === void 0 ? void 0 : _c.start.column)
|
|
262
|
+
? undefined
|
|
263
|
+
: error.span.start.column + 1,
|
|
264
|
+
file,
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/src/legacy/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright 2022 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.resolvePath = void 0;
|
|
7
|
+
const fs = require("fs");
|
|
8
|
+
const p = require("path");
|
|
9
|
+
/**
|
|
10
|
+
* Resolves a path using the same logic as the filesystem importer.
|
|
11
|
+
*
|
|
12
|
+
* This tries to fill in extensions and partial prefixes and check for a
|
|
13
|
+
* directory default. If no file can be found, it returns `null`.
|
|
14
|
+
*/
|
|
15
|
+
function resolvePath(path, fromImport) {
|
|
16
|
+
var _a, _b, _c;
|
|
17
|
+
const extension = p.extname(path);
|
|
18
|
+
if (extension === '.sass' || extension === '.scss' || extension === '.css') {
|
|
19
|
+
return ((_a = (fromImport
|
|
20
|
+
? exactlyOne(tryPath(`${withoutExtension(path)}.import${extension}`))
|
|
21
|
+
: null)) !== null && _a !== void 0 ? _a : exactlyOne(tryPath(path)));
|
|
22
|
+
}
|
|
23
|
+
return ((_c = (_b = (fromImport ? exactlyOne(tryPathWithExtensions(`${path}.import`)) : null)) !== null && _b !== void 0 ? _b : exactlyOne(tryPathWithExtensions(path))) !== null && _c !== void 0 ? _c : tryPathAsDirectory(path, fromImport));
|
|
24
|
+
}
|
|
25
|
+
exports.resolvePath = resolvePath;
|
|
26
|
+
// Like `tryPath`, but checks `.sass`, `.scss`, and `.css` extensions.
|
|
27
|
+
function tryPathWithExtensions(path) {
|
|
28
|
+
const result = [...tryPath(path + '.sass'), ...tryPath(path + '.scss')];
|
|
29
|
+
return result.length > 0 ? result : tryPath(path + '.css');
|
|
30
|
+
}
|
|
31
|
+
// Returns the `path` and/or the partial with the same name, if either or both
|
|
32
|
+
// exists. If neither exists, returns an empty list.
|
|
33
|
+
function tryPath(path) {
|
|
34
|
+
const partial = p.join(p.dirname(path), `_${p.basename(path)}`);
|
|
35
|
+
const result = [];
|
|
36
|
+
if (fileExists(partial))
|
|
37
|
+
result.push(partial);
|
|
38
|
+
if (fileExists(path))
|
|
39
|
+
result.push(path);
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
42
|
+
// Returns the resolved index file for `path` if `path` is a directory and the
|
|
43
|
+
// index file exists. Otherwise, returns `null`.
|
|
44
|
+
function tryPathAsDirectory(path, fromImport) {
|
|
45
|
+
var _a;
|
|
46
|
+
if (!dirExists(path))
|
|
47
|
+
return null;
|
|
48
|
+
return ((_a = (fromImport
|
|
49
|
+
? exactlyOne(tryPathWithExtensions(p.join(path, 'index.import')))
|
|
50
|
+
: null)) !== null && _a !== void 0 ? _a : exactlyOne(tryPathWithExtensions(p.join(path, 'index'))));
|
|
51
|
+
}
|
|
52
|
+
// If `paths` contains exactly one path, returns that path. If it contains no
|
|
53
|
+
// paths, returns `null`. If it contains more than one, throws an exception.
|
|
54
|
+
function exactlyOne(paths) {
|
|
55
|
+
if (paths.length === 0)
|
|
56
|
+
return null;
|
|
57
|
+
if (paths.length === 1)
|
|
58
|
+
return paths[0];
|
|
59
|
+
throw new Error("It's not clear which file to import. Found:\n" +
|
|
60
|
+
paths.map(path => ' ' + path).join('\n'));
|
|
61
|
+
}
|
|
62
|
+
// Returns whether or not a file (not a directory) exists at `path`.
|
|
63
|
+
function fileExists(path) {
|
|
64
|
+
// `existsSync()` is faster than `statSync()`, but it doesn't clarify whether
|
|
65
|
+
// the entity in question is a file or a directory. Since false negatives are
|
|
66
|
+
// much more common than false positives, it works out in our favor to check
|
|
67
|
+
// this first.
|
|
68
|
+
if (!fs.existsSync(path))
|
|
69
|
+
return false;
|
|
70
|
+
try {
|
|
71
|
+
return fs.statSync(path).isFile();
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
if (error.code === 'ENOENT')
|
|
75
|
+
return false;
|
|
76
|
+
throw error;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// Returns whether or not a directory (not a file) exists at `path`.
|
|
80
|
+
function dirExists(path) {
|
|
81
|
+
// `existsSync()` is faster than `statSync()`, but it doesn't clarify whether
|
|
82
|
+
// the entity in question is a file or a directory. Since false negatives are
|
|
83
|
+
// much more common than false positives, it works out in our favor to check
|
|
84
|
+
// this first.
|
|
85
|
+
if (!fs.existsSync(path))
|
|
86
|
+
return false;
|
|
87
|
+
try {
|
|
88
|
+
return fs.statSync(path).isDirectory();
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
if (error.code === 'ENOENT')
|
|
92
|
+
return false;
|
|
93
|
+
throw error;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// Returns `path` without its file extension.
|
|
97
|
+
function withoutExtension(path) {
|
|
98
|
+
const extension = p.extname(path);
|
|
99
|
+
return path.substring(0, path.length - extension.length);
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=resolve-path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-path.js","sourceRoot":"","sources":["../../../../lib/src/legacy/resolve-path.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright 2022 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.LegacyValueBase = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* A base class for legacy value types. A shared base class makes it easier to
|
|
9
|
+
* detect legacy values and extract their inner value objects.
|
|
10
|
+
*/
|
|
11
|
+
class LegacyValueBase {
|
|
12
|
+
constructor(inner) {
|
|
13
|
+
this.inner = inner;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.LegacyValueBase = LegacyValueBase;
|
|
17
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../../lib/src/legacy/value/base.ts"],"names":[],"mappings":";AAAA,uEAAuE;AACvE,gEAAgE;AAChE,uCAAuC;;;AAIvC;;;GAGG;AACH,MAAa,eAAe;IAC1B,YAAmB,KAAQ;QAAR,UAAK,GAAL,KAAK,CAAG;IAAG,CAAC;CAChC;AAFD,0CAEC"}
|