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.
- package/CHANGELOG.md +44 -0
- package/dist/.gitignore +1 -0
- package/dist/lib/index.js +36 -2
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/src/{embedded-compiler/compiler.js → async-compiler.js} +13 -13
- package/dist/lib/src/async-compiler.js.map +1 -0
- package/dist/lib/src/compile.js +187 -85
- package/dist/lib/src/compile.js.map +1 -1
- package/dist/lib/src/compiler-path.js +18 -0
- package/dist/lib/src/compiler-path.js.map +1 -0
- package/dist/lib/src/deprotofy-span.js +51 -0
- package/dist/lib/src/deprotofy-span.js.map +1 -0
- package/dist/lib/src/{embedded-protocol/dispatcher.js → dispatcher.js} +47 -41
- package/dist/lib/src/dispatcher.js.map +1 -0
- package/dist/lib/src/exception.js +20 -0
- package/dist/lib/src/exception.js.map +1 -0
- package/dist/lib/src/function-registry.js +92 -0
- package/dist/lib/src/function-registry.js.map +1 -0
- package/dist/lib/src/importer-registry.js +127 -0
- package/dist/lib/src/importer-registry.js.map +1 -0
- package/dist/lib/src/legacy.js +133 -0
- package/dist/lib/src/legacy.js.map +1 -0
- package/dist/lib/src/{embedded-protocol/message-transformer.js → message-transformer.js} +11 -10
- package/dist/lib/src/message-transformer.js.map +1 -0
- package/dist/lib/src/{embedded-compiler/packet-transformer.js → packet-transformer.js} +2 -1
- package/dist/lib/src/packet-transformer.js.map +1 -0
- package/dist/lib/src/protofier.js +272 -0
- package/dist/lib/src/protofier.js.map +1 -0
- package/dist/lib/src/{embedded-protocol/request-tracker.js → request-tracker.js} +1 -0
- package/dist/lib/src/request-tracker.js.map +1 -0
- package/dist/lib/src/sync-compiler.js +52 -0
- package/dist/lib/src/sync-compiler.js.map +1 -0
- package/dist/lib/src/{exception/span.js → sync-process/event.js} +2 -2
- package/dist/lib/src/sync-process/event.js.map +1 -0
- package/dist/lib/src/sync-process/index.js +122 -0
- package/dist/lib/src/sync-process/index.js.map +1 -0
- package/dist/lib/src/sync-process/sync-message-port.js +128 -0
- package/dist/lib/src/sync-process/sync-message-port.js.map +1 -0
- package/dist/lib/src/sync-process/worker.js +51 -0
- package/dist/lib/src/sync-process/worker.js.map +1 -0
- package/dist/lib/src/utils.js +88 -0
- 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 +40 -0
- package/dist/lib/src/value/boolean.js.map +1 -0
- package/dist/lib/src/value/color.js +258 -0
- package/dist/lib/src/value/color.js.map +1 -0
- package/dist/lib/src/value/function.js +34 -0
- package/dist/lib/src/value/function.js.map +1 -0
- package/dist/lib/src/value/{value.js → index.js} +28 -17
- package/dist/lib/src/value/index.js.map +1 -0
- package/dist/lib/src/value/list.js +99 -0
- package/dist/lib/src/value/list.js.map +1 -0
- package/dist/lib/src/value/map.js +91 -0
- package/dist/lib/src/value/map.js.map +1 -0
- package/dist/lib/src/value/null.js +10 -6
- package/dist/lib/src/value/null.js.map +1 -1
- package/dist/lib/src/value/number.js +579 -0
- package/dist/lib/src/value/number.js.map +1 -0
- package/dist/lib/src/value/string.js +117 -0
- package/dist/lib/src/value/string.js.map +1 -0
- package/dist/lib/src/value/utils.js +120 -0
- package/dist/lib/src/value/utils.js.map +1 -0
- package/dist/lib/src/vendor/embedded-protocol/embedded_sass_pb.js +994 -8
- package/dist/lib/src/vendor/embedded-protocol/embedded_sass_pb.js.map +1 -1
- package/dist/package.json +63 -0
- package/dist/tool/utils.js +85 -91
- package/dist/tool/utils.js.map +1 -1
- package/dist/types/compile.d.ts +152 -0
- package/dist/types/exception.d.ts +41 -0
- package/dist/types/importer.d.ts +294 -0
- package/dist/types/index.d.ts +76 -0
- package/dist/types/legacy/exception.d.ts +54 -0
- package/dist/types/legacy/function.d.ts +700 -0
- package/dist/types/legacy/importer.d.ts +168 -0
- package/dist/types/legacy/options.d.ts +642 -0
- package/dist/types/legacy/plugin_this.d.ts +73 -0
- package/dist/types/legacy/render.d.ts +139 -0
- package/dist/types/logger/index.d.ts +94 -0
- package/dist/types/logger/source_location.d.ts +21 -0
- package/dist/types/logger/source_span.d.ts +34 -0
- package/dist/types/options.d.ts +408 -0
- package/dist/types/util/promise_or.d.ts +17 -0
- package/dist/types/value/argument_list.d.ts +47 -0
- package/dist/types/value/boolean.d.ts +29 -0
- package/dist/types/value/color.d.ts +107 -0
- package/dist/types/value/function.d.ts +22 -0
- package/dist/types/value/index.d.ts +173 -0
- package/dist/types/value/list.d.ts +54 -0
- package/dist/types/value/map.d.ts +41 -0
- package/dist/types/value/number.d.ts +305 -0
- package/dist/types/value/string.d.ts +84 -0
- package/download-compiler-for-end-user.js +1 -6
- package/package.json +23 -19
- package/dist/lib/index.d.ts +0 -1
- package/dist/lib/src/compile.d.ts +0 -20
- package/dist/lib/src/embedded-compiler/compiler.d.ts +0 -19
- package/dist/lib/src/embedded-compiler/compiler.js.map +0 -1
- package/dist/lib/src/embedded-compiler/packet-transformer.d.ts +0 -34
- package/dist/lib/src/embedded-compiler/packet-transformer.js.map +0 -1
- package/dist/lib/src/embedded-protocol/dispatcher.d.ts +0 -60
- package/dist/lib/src/embedded-protocol/dispatcher.js.map +0 -1
- package/dist/lib/src/embedded-protocol/message-transformer.d.ts +0 -47
- package/dist/lib/src/embedded-protocol/message-transformer.js.map +0 -1
- package/dist/lib/src/embedded-protocol/request-tracker.d.ts +0 -20
- package/dist/lib/src/embedded-protocol/request-tracker.js.map +0 -1
- package/dist/lib/src/embedded-protocol/utils.d.ts +0 -7
- package/dist/lib/src/embedded-protocol/utils.js +0 -52
- package/dist/lib/src/embedded-protocol/utils.js.map +0 -1
- package/dist/lib/src/exception/exception.d.ts +0 -19
- package/dist/lib/src/exception/exception.js +0 -36
- package/dist/lib/src/exception/exception.js.map +0 -1
- package/dist/lib/src/exception/location.d.ts +0 -11
- package/dist/lib/src/exception/location.js +0 -6
- package/dist/lib/src/exception/location.js.map +0 -1
- package/dist/lib/src/exception/span.d.ts +0 -29
- package/dist/lib/src/exception/span.js.map +0 -1
- package/dist/lib/src/node-sass/render.d.ts +0 -60
- package/dist/lib/src/node-sass/render.js +0 -126
- package/dist/lib/src/node-sass/render.js.map +0 -1
- package/dist/lib/src/utils.d.ts +0 -9
- package/dist/lib/src/value/null.d.ts +0 -11
- package/dist/lib/src/value/value.d.ts +0 -98
- package/dist/lib/src/value/value.js.map +0 -1
- package/dist/lib/src/vendor/embedded-protocol/embedded_sass_pb.d.ts +0 -1
- package/dist/tool/utils.d.ts +0 -29
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-transformer.js","sourceRoot":"","sources":["../../../lib/src/message-transformer.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@
|
|
|
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.PacketTransformer = void 0;
|
|
6
7
|
const rxjs_1 = require("rxjs");
|
|
7
8
|
const operators_1 = require("rxjs/operators");
|
|
8
9
|
const BufferBuilder = require("buffer-builder");
|
|
@@ -35,7 +36,7 @@ class PacketTransformer {
|
|
|
35
36
|
*/
|
|
36
37
|
this.outboundProtobufs$ = this.outboundProtobufsInternal$.pipe();
|
|
37
38
|
this.outboundBuffers$
|
|
38
|
-
.pipe(operators_1.mergeMap(buffer => this.decode(buffer)))
|
|
39
|
+
.pipe((0, operators_1.mergeMap)(buffer => this.decode(buffer)))
|
|
39
40
|
.subscribe(this.outboundProtobufsInternal$);
|
|
40
41
|
}
|
|
41
42
|
/**
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packet-transformer.js","sourceRoot":"","sources":["../../../lib/src/packet-transformer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,272 @@
|
|
|
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.Protofier = void 0;
|
|
7
|
+
const immutable_1 = require("immutable");
|
|
8
|
+
const proto = require("./vendor/embedded-protocol/embedded_sass_pb");
|
|
9
|
+
const utils = require("./utils");
|
|
10
|
+
const argument_list_1 = require("./value/argument-list");
|
|
11
|
+
const color_1 = require("./value/color");
|
|
12
|
+
const function_1 = require("./value/function");
|
|
13
|
+
const list_1 = require("./value/list");
|
|
14
|
+
const map_1 = require("./value/map");
|
|
15
|
+
const number_1 = require("./value/number");
|
|
16
|
+
const string_1 = require("./value/string");
|
|
17
|
+
const null_1 = require("./value/null");
|
|
18
|
+
const boolean_1 = require("./value/boolean");
|
|
19
|
+
/**
|
|
20
|
+
* A class that converts [Value] objects into protobufs.
|
|
21
|
+
*
|
|
22
|
+
* A given [Protofier] instance is valid only within the scope of a single
|
|
23
|
+
* custom function call.
|
|
24
|
+
*/
|
|
25
|
+
class Protofier {
|
|
26
|
+
constructor(
|
|
27
|
+
/**
|
|
28
|
+
* The registry of custom functions that can be invoked by the compiler.
|
|
29
|
+
* This is used to register first-class functions so that the compiler may
|
|
30
|
+
* invoke them.
|
|
31
|
+
*/
|
|
32
|
+
functions) {
|
|
33
|
+
this.functions = functions;
|
|
34
|
+
/** All the argument lists returned by `deprotofy()`. */
|
|
35
|
+
this.argumentLists = [];
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Returns IDs of all argument lists passed to `deprotofy()` whose keywords
|
|
39
|
+
* have been accessed.
|
|
40
|
+
*/
|
|
41
|
+
get accessedArgumentLists() {
|
|
42
|
+
return this.argumentLists
|
|
43
|
+
.filter(list => list.keywordsAccessed)
|
|
44
|
+
.map(list => list.id);
|
|
45
|
+
}
|
|
46
|
+
/** Converts `value` to its protocol buffer representation. */
|
|
47
|
+
protofy(value) {
|
|
48
|
+
const result = new proto.Value();
|
|
49
|
+
if (value instanceof string_1.SassString) {
|
|
50
|
+
const string = new proto.Value.String();
|
|
51
|
+
string.setText(value.text);
|
|
52
|
+
string.setQuoted(value.hasQuotes);
|
|
53
|
+
result.setString(string);
|
|
54
|
+
}
|
|
55
|
+
else if (value instanceof number_1.SassNumber) {
|
|
56
|
+
result.setNumber(this.protofyNumber(value));
|
|
57
|
+
}
|
|
58
|
+
else if (value instanceof color_1.SassColor) {
|
|
59
|
+
if (value.hasCalculatedHsl) {
|
|
60
|
+
const color = new proto.Value.HslColor();
|
|
61
|
+
color.setHue(value.hue);
|
|
62
|
+
color.setSaturation(value.saturation);
|
|
63
|
+
color.setLightness(value.lightness);
|
|
64
|
+
color.setAlpha(value.alpha);
|
|
65
|
+
result.setHslColor(color);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
const color = new proto.Value.RgbColor();
|
|
69
|
+
color.setRed(value.red);
|
|
70
|
+
color.setGreen(value.green);
|
|
71
|
+
color.setBlue(value.blue);
|
|
72
|
+
color.setAlpha(value.alpha);
|
|
73
|
+
result.setRgbColor(color);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
else if (value instanceof list_1.SassList) {
|
|
77
|
+
const list = new proto.Value.List();
|
|
78
|
+
list.setSeparator(this.protofySeparator(value.separator));
|
|
79
|
+
list.setHasBrackets(value.hasBrackets);
|
|
80
|
+
for (const element of value.asList) {
|
|
81
|
+
list.addContents(this.protofy(element));
|
|
82
|
+
}
|
|
83
|
+
result.setList(list);
|
|
84
|
+
}
|
|
85
|
+
else if (value instanceof argument_list_1.SassArgumentList) {
|
|
86
|
+
const list = new proto.Value.ArgumentList();
|
|
87
|
+
list.setId(value.id);
|
|
88
|
+
list.setSeparator(this.protofySeparator(value.separator));
|
|
89
|
+
for (const element of value.asList) {
|
|
90
|
+
list.addContents(this.protofy(element));
|
|
91
|
+
}
|
|
92
|
+
const keywords = list.getKeywordsMap();
|
|
93
|
+
for (const [key, mapValue] of value.keywordsInternal) {
|
|
94
|
+
keywords.set(key, this.protofy(mapValue));
|
|
95
|
+
}
|
|
96
|
+
result.setArgumentList(list);
|
|
97
|
+
}
|
|
98
|
+
else if (value instanceof map_1.SassMap) {
|
|
99
|
+
const map = new proto.Value.Map();
|
|
100
|
+
for (const [key, mapValue] of value.contents) {
|
|
101
|
+
const entry = new proto.Value.Map.Entry();
|
|
102
|
+
entry.setKey(this.protofy(key));
|
|
103
|
+
entry.setValue(this.protofy(mapValue));
|
|
104
|
+
map.addEntries(entry);
|
|
105
|
+
}
|
|
106
|
+
result.setMap(map);
|
|
107
|
+
}
|
|
108
|
+
else if (value instanceof function_1.SassFunction) {
|
|
109
|
+
if (value.id !== undefined) {
|
|
110
|
+
const fn = new proto.Value.CompilerFunction();
|
|
111
|
+
fn.setId(value.id);
|
|
112
|
+
result.setCompilerFunction(fn);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
const fn = new proto.Value.HostFunction();
|
|
116
|
+
fn.setId(this.functions.register(value.callback));
|
|
117
|
+
fn.setSignature(value.signature);
|
|
118
|
+
result.setHostFunction(fn);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
else if (value === boolean_1.sassTrue) {
|
|
122
|
+
result.setSingleton(proto.SingletonValue.TRUE);
|
|
123
|
+
}
|
|
124
|
+
else if (value === boolean_1.sassFalse) {
|
|
125
|
+
result.setSingleton(proto.SingletonValue.FALSE);
|
|
126
|
+
}
|
|
127
|
+
else if (value === null_1.sassNull) {
|
|
128
|
+
result.setSingleton(proto.SingletonValue.NULL);
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
throw utils.compilerError(`Unknown Value ${value}`);
|
|
132
|
+
}
|
|
133
|
+
return result;
|
|
134
|
+
}
|
|
135
|
+
/** Converts `number` to its protocol buffer representation. */
|
|
136
|
+
protofyNumber(number) {
|
|
137
|
+
const value = new proto.Value.Number();
|
|
138
|
+
value.setValue(number.value);
|
|
139
|
+
for (const unit of number.numeratorUnits) {
|
|
140
|
+
value.addNumerators(unit);
|
|
141
|
+
}
|
|
142
|
+
for (const unit of number.denominatorUnits) {
|
|
143
|
+
value.addDenominators(unit);
|
|
144
|
+
}
|
|
145
|
+
return value;
|
|
146
|
+
}
|
|
147
|
+
/** Converts `separator` to its protocol buffer representation. */
|
|
148
|
+
protofySeparator(separator) {
|
|
149
|
+
switch (separator) {
|
|
150
|
+
case ',':
|
|
151
|
+
return proto.ListSeparator.COMMA;
|
|
152
|
+
case ' ':
|
|
153
|
+
return proto.ListSeparator.SPACE;
|
|
154
|
+
case '/':
|
|
155
|
+
return proto.ListSeparator.SLASH;
|
|
156
|
+
case null:
|
|
157
|
+
return proto.ListSeparator.UNDECIDED;
|
|
158
|
+
default:
|
|
159
|
+
throw utils.compilerError(`Unknown ListSeparator ${separator}`);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
/** Converts `value` to its JS representation. */
|
|
163
|
+
deprotofy(value) {
|
|
164
|
+
switch (value.getValueCase()) {
|
|
165
|
+
case proto.Value.ValueCase.STRING: {
|
|
166
|
+
const string = value.getString();
|
|
167
|
+
return string.getText().length === 0
|
|
168
|
+
? string_1.SassString.empty({ quotes: string.getQuoted() })
|
|
169
|
+
: new string_1.SassString(string.getText(), { quotes: string.getQuoted() });
|
|
170
|
+
}
|
|
171
|
+
case proto.Value.ValueCase.NUMBER:
|
|
172
|
+
return this.deprotofyNumber(value.getNumber());
|
|
173
|
+
case proto.Value.ValueCase.RGB_COLOR: {
|
|
174
|
+
const color = value.getRgbColor();
|
|
175
|
+
return new color_1.SassColor({
|
|
176
|
+
red: color.getRed(),
|
|
177
|
+
green: color.getGreen(),
|
|
178
|
+
blue: color.getBlue(),
|
|
179
|
+
alpha: color.getAlpha(),
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
case proto.Value.ValueCase.HSL_COLOR: {
|
|
183
|
+
const color = value.getHslColor();
|
|
184
|
+
return new color_1.SassColor({
|
|
185
|
+
hue: color.getHue(),
|
|
186
|
+
saturation: color.getSaturation(),
|
|
187
|
+
lightness: color.getLightness(),
|
|
188
|
+
alpha: color.getAlpha(),
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
case proto.Value.ValueCase.LIST: {
|
|
192
|
+
const list = value.getList();
|
|
193
|
+
const separator = this.deprotofySeparator(list.getSeparator());
|
|
194
|
+
const contents = list.getContentsList();
|
|
195
|
+
if (separator === null && contents.length > 1) {
|
|
196
|
+
throw utils.compilerError(`Value.List ${list} can't have an undecided separator because it ` +
|
|
197
|
+
`has ${contents.length} elements`);
|
|
198
|
+
}
|
|
199
|
+
return new list_1.SassList(contents.map(element => this.deprotofy(element)), { separator, brackets: list.getHasBrackets() });
|
|
200
|
+
}
|
|
201
|
+
case proto.Value.ValueCase.ARGUMENT_LIST: {
|
|
202
|
+
const list = value.getArgumentList();
|
|
203
|
+
const separator = this.deprotofySeparator(list.getSeparator());
|
|
204
|
+
const contents = list.getContentsList();
|
|
205
|
+
if (separator === null && contents.length > 1) {
|
|
206
|
+
throw utils.compilerError(`Value.List ${list} can't have an undecided separator because it ` +
|
|
207
|
+
`has ${contents.length} elements`);
|
|
208
|
+
}
|
|
209
|
+
const result = new argument_list_1.SassArgumentList(contents.map(element => this.deprotofy(element)), (0, immutable_1.OrderedMap)([...list.getKeywordsMap().entries()].map(([key, value]) => [
|
|
210
|
+
key,
|
|
211
|
+
this.deprotofy(value),
|
|
212
|
+
])), separator, list.getId());
|
|
213
|
+
this.argumentLists.push(result);
|
|
214
|
+
return result;
|
|
215
|
+
}
|
|
216
|
+
case proto.Value.ValueCase.MAP:
|
|
217
|
+
return new map_1.SassMap((0, immutable_1.OrderedMap)(value
|
|
218
|
+
.getMap()
|
|
219
|
+
.getEntriesList()
|
|
220
|
+
.map(entry => {
|
|
221
|
+
const key = entry.getKey();
|
|
222
|
+
if (!key)
|
|
223
|
+
throw utils.mandatoryError('Value.Map.Entry.key');
|
|
224
|
+
const value = entry.getValue();
|
|
225
|
+
if (!value)
|
|
226
|
+
throw utils.mandatoryError('Value.Map.Entry.value');
|
|
227
|
+
return [this.deprotofy(key), this.deprotofy(value)];
|
|
228
|
+
})));
|
|
229
|
+
case proto.Value.ValueCase.COMPILER_FUNCTION:
|
|
230
|
+
return new function_1.SassFunction(value.getCompilerFunction().getId());
|
|
231
|
+
case proto.Value.ValueCase.HOST_FUNCTION:
|
|
232
|
+
throw utils.compilerError('The compiler may not send Value.host_function.');
|
|
233
|
+
case proto.Value.ValueCase.SINGLETON:
|
|
234
|
+
switch (value.getSingleton()) {
|
|
235
|
+
case proto.SingletonValue.TRUE:
|
|
236
|
+
return boolean_1.sassTrue;
|
|
237
|
+
case proto.SingletonValue.FALSE:
|
|
238
|
+
return boolean_1.sassFalse;
|
|
239
|
+
case proto.SingletonValue.NULL:
|
|
240
|
+
return null_1.sassNull;
|
|
241
|
+
default:
|
|
242
|
+
throw utils.compilerError(`Unknown Value.singleton ${value.getSingleton()}`);
|
|
243
|
+
}
|
|
244
|
+
default:
|
|
245
|
+
throw utils.mandatoryError('Value.value');
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
/** Converts `number` to its JS representation. */
|
|
249
|
+
deprotofyNumber(number) {
|
|
250
|
+
return new number_1.SassNumber(number.getValue(), {
|
|
251
|
+
numeratorUnits: number.getNumeratorsList(),
|
|
252
|
+
denominatorUnits: number.getDenominatorsList(),
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
/** Converts `separator` to its JS representation. */
|
|
256
|
+
deprotofySeparator(separator) {
|
|
257
|
+
switch (separator) {
|
|
258
|
+
case proto.ListSeparator.COMMA:
|
|
259
|
+
return ',';
|
|
260
|
+
case proto.ListSeparator.SPACE:
|
|
261
|
+
return ' ';
|
|
262
|
+
case proto.ListSeparator.SLASH:
|
|
263
|
+
return '/';
|
|
264
|
+
case proto.ListSeparator.UNDECIDED:
|
|
265
|
+
return null;
|
|
266
|
+
default:
|
|
267
|
+
throw utils.compilerError(`Unknown separator ${separator}`);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
exports.Protofier = Protofier;
|
|
272
|
+
//# sourceMappingURL=protofier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protofier.js","sourceRoot":"","sources":["../../../lib/src/protofier.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@
|
|
|
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.RequestTracker = void 0;
|
|
6
7
|
/**
|
|
7
8
|
* Manages pending inbound and outbound requests. Ensures that requests and
|
|
8
9
|
* responses interact correctly and obey the Embedded Protocol.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-tracker.js","sourceRoot":"","sources":["../../../lib/src/request-tracker.ts"],"names":[],"mappings":";AAAA,uEAAuE;AACvE,gEAAgE;AAChE,uCAAuC;;;AAIvC;;;GAGG;AACH,MAAa,cAAc;IAA3B;QACE,4EAA4E;QAC5E,8CAA8C;QAC7B,aAAQ,GAErB,EAAE,CAAC;IA4CT,CAAC;IA1CC,qCAAqC;IACrC,IAAI,MAAM;QACR,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC7C,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;gBAC/D,OAAO,CAAC,CAAC;aACV;SACF;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACH,GAAG,CACD,EAAU,EACV,oBAAgE;QAEhE,IAAI,EAAE,GAAG,CAAC,EAAE;YACV,MAAM,KAAK,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;SAC1C;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;YAC5B,MAAM,KAAK,CACT,cAAc,EAAE,6CAA6C,CAC9D,CAAC;SACH;QACD,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,oBAAoB,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACH,OAAO,CAAC,EAAU,EAAE,IAAgD;QAClE,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE;YACjE,MAAM,KAAK,CAAC,eAAe,EAAE,uCAAuC,CAAC,CAAC;SACvE;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE;YACrC,MAAM,KAAK,CACT,oBAAoB,EAAE,oDAAoD,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,iBAAiB,IAAI,GAAG,CACpH,CAAC;SACH;QACD,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IAC3B,CAAC;CACF;AAjDD,wCAiDC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
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.SyncEmbeddedCompiler = void 0;
|
|
7
|
+
const rxjs_1 = require("rxjs");
|
|
8
|
+
const sync_process_1 = require("./sync-process");
|
|
9
|
+
const compiler_path_1 = require("./compiler-path");
|
|
10
|
+
/**
|
|
11
|
+
* A synchronous wrapper for the embedded Sass compiler that exposes its stdio
|
|
12
|
+
* streams as Observables.
|
|
13
|
+
*/
|
|
14
|
+
class SyncEmbeddedCompiler {
|
|
15
|
+
constructor() {
|
|
16
|
+
/** The underlying process that's being wrapped. */
|
|
17
|
+
this.process = new sync_process_1.SyncProcess(compiler_path_1.compilerPath, { windowsHide: true });
|
|
18
|
+
/** The buffers emitted by the child process's stdout. */
|
|
19
|
+
this.stdout$ = new rxjs_1.Subject();
|
|
20
|
+
/** The buffers emitted by the child process's stderr. */
|
|
21
|
+
this.stderr$ = new rxjs_1.Subject();
|
|
22
|
+
}
|
|
23
|
+
/** Writes `buffer` to the child process's stdin. */
|
|
24
|
+
writeStdin(buffer) {
|
|
25
|
+
this.process.stdin.write(buffer);
|
|
26
|
+
}
|
|
27
|
+
yield() {
|
|
28
|
+
const event = this.process.yield();
|
|
29
|
+
switch (event.type) {
|
|
30
|
+
case 'stdout':
|
|
31
|
+
this.stdout$.next(event.data);
|
|
32
|
+
return true;
|
|
33
|
+
case 'stderr':
|
|
34
|
+
this.stderr$.next(event.data);
|
|
35
|
+
return true;
|
|
36
|
+
case 'exit':
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/** Blocks until the underlying process exits. */
|
|
41
|
+
yieldUntilExit() {
|
|
42
|
+
while (this.yield()) {
|
|
43
|
+
// Any events will be handled by `this.yield()`.
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/** Kills the child process, cleaning up all associated Observables. */
|
|
47
|
+
close() {
|
|
48
|
+
this.process.stdin.end();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
exports.SyncEmbeddedCompiler = SyncEmbeddedCompiler;
|
|
52
|
+
//# sourceMappingURL=sync-compiler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-compiler.js","sourceRoot":"","sources":["../../../lib/src/sync-compiler.ts"],"names":[],"mappings":";AAAA,uEAAuE;AACvE,gEAAgE;AAChE,uCAAuC;;;AAEvC,+BAA6B;AAE7B,iDAA2C;AAC3C,mDAA6C;AAE7C;;;GAGG;AACH,MAAa,oBAAoB;IAAjC;QACE,mDAAmD;QAClC,YAAO,GAAG,IAAI,0BAAW,CAAC,4BAAY,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC,CAAC,CAAC;QAE9E,yDAAyD;QAChD,YAAO,GAAG,IAAI,cAAO,EAAU,CAAC;QAEzC,yDAAyD;QAChD,YAAO,GAAG,IAAI,cAAO,EAAU,CAAC;IAkC3C,CAAC;IAhCC,oDAAoD;IACpD,UAAU,CAAC,MAAc;QACvB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,KAAK;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnC,QAAQ,KAAK,CAAC,IAAI,EAAE;YAClB,KAAK,QAAQ;gBACX,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC9B,OAAO,IAAI,CAAC;YAEd,KAAK,QAAQ;gBACX,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC9B,OAAO,IAAI,CAAC;YAEd,KAAK,MAAM;gBACT,OAAO,KAAK,CAAC;SAChB;IACH,CAAC;IAED,iDAAiD;IACjD,cAAc;QACZ,OAAO,IAAI,CAAC,KAAK,EAAE,EAAE;YACnB,gDAAgD;SACjD;IACH,CAAC;IAED,uEAAuE;IACvE,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;IAC3B,CAAC;CACF;AA1CD,oDA0CC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// Copyright
|
|
2
|
+
// Copyright 2021 Google LLC. Use of this source code is governed by an
|
|
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
|
-
//# sourceMappingURL=
|
|
6
|
+
//# sourceMappingURL=event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event.js","sourceRoot":"","sources":["../../../../lib/src/sync-process/event.ts"],"names":[],"mappings":";AAAA,uEAAuE;AACvE,gEAAgE;AAChE,uCAAuC"}
|
|
@@ -0,0 +1,122 @@
|
|
|
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.SyncProcess = void 0;
|
|
7
|
+
const fs = require("fs");
|
|
8
|
+
const p = require("path");
|
|
9
|
+
const stream = require("stream");
|
|
10
|
+
const worker_threads_1 = require("worker_threads");
|
|
11
|
+
const sync_message_port_1 = require("./sync-message-port");
|
|
12
|
+
// TODO(nex3): Factor this out into its own package.
|
|
13
|
+
/**
|
|
14
|
+
* A child process that runs synchronously while also allowing the user to
|
|
15
|
+
* interact with it before it shuts down.
|
|
16
|
+
*/
|
|
17
|
+
class SyncProcess {
|
|
18
|
+
constructor(command, argsOrOptions, options) {
|
|
19
|
+
let args;
|
|
20
|
+
if (Array.isArray(argsOrOptions)) {
|
|
21
|
+
args = argsOrOptions;
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
args = [];
|
|
25
|
+
options = argsOrOptions;
|
|
26
|
+
}
|
|
27
|
+
const { port1, port2 } = sync_message_port_1.SyncMessagePort.createChannel();
|
|
28
|
+
this.port = new sync_message_port_1.SyncMessagePort(port1);
|
|
29
|
+
this.worker = spawnWorker(p.join(p.dirname(__filename), 'worker'), {
|
|
30
|
+
workerData: { port: port2, command, args, options },
|
|
31
|
+
transferList: [port2],
|
|
32
|
+
});
|
|
33
|
+
// The worker shouldn't emit any errors unless it breaks in development.
|
|
34
|
+
this.worker.on('error', console.error);
|
|
35
|
+
this.stdin = new stream.Writable({
|
|
36
|
+
write: (chunk, encoding, callback) => {
|
|
37
|
+
this.port.postMessage({
|
|
38
|
+
type: 'stdin',
|
|
39
|
+
data: chunk,
|
|
40
|
+
}, [chunk.buffer]);
|
|
41
|
+
callback();
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
// Unfortunately, there's no built-in event or callback that will reliably
|
|
45
|
+
// *synchronously* notify us that the stdin stream has been closed. (The
|
|
46
|
+
// `final` callback works in Node v16 but not v14.) Instead, we wrap the
|
|
47
|
+
// methods themselves that are used to close the stream.
|
|
48
|
+
const oldEnd = this.stdin.end.bind(this.stdin);
|
|
49
|
+
this.stdin.end = ((a1, a2, a3) => {
|
|
50
|
+
oldEnd(a1, a2, a3);
|
|
51
|
+
this.port.postMessage({ type: 'stdinClosed' });
|
|
52
|
+
});
|
|
53
|
+
const oldDestroy = this.stdin.destroy.bind(this.stdin);
|
|
54
|
+
this.stdin.destroy = ((a1) => {
|
|
55
|
+
oldDestroy(a1);
|
|
56
|
+
this.port.postMessage({ type: 'stdinClosed' });
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Blocks until the child process is ready to emit another event, then returns
|
|
61
|
+
* that event.
|
|
62
|
+
*
|
|
63
|
+
* If there's an error running the child process, this will throw that error.
|
|
64
|
+
* This may not be called after it emits an `ExitEvent` or throws an error.
|
|
65
|
+
*/
|
|
66
|
+
yield() {
|
|
67
|
+
if (this.stdin.destroyed) {
|
|
68
|
+
throw new Error("Can't call SyncProcess.yield() after the process has exited.");
|
|
69
|
+
}
|
|
70
|
+
const message = this.port.receiveMessage();
|
|
71
|
+
switch (message.type) {
|
|
72
|
+
case 'stdout':
|
|
73
|
+
return { type: 'stdout', data: Buffer.from(message.data.buffer) };
|
|
74
|
+
case 'stderr':
|
|
75
|
+
return { type: 'stderr', data: Buffer.from(message.data.buffer) };
|
|
76
|
+
case 'error':
|
|
77
|
+
this.close();
|
|
78
|
+
throw message.error;
|
|
79
|
+
case 'exit':
|
|
80
|
+
this.close();
|
|
81
|
+
return message;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// TODO(nex3): Add a non-blocking `yieldIfReady()` function that returns
|
|
85
|
+
// `null` if the worker hasn't queued up an event.
|
|
86
|
+
// TODO(nex3): Add a `yieldAsync()` function that returns a `Promise<Event>`.
|
|
87
|
+
/**
|
|
88
|
+
* Sends a signal (`SIGTERM` by default) to the child process.
|
|
89
|
+
*
|
|
90
|
+
* This has no effect if the process has already exited.
|
|
91
|
+
*/
|
|
92
|
+
kill(signal) {
|
|
93
|
+
this.port.postMessage({ type: 'kill', signal });
|
|
94
|
+
}
|
|
95
|
+
/** Closes down the worker thread and the stdin stream. */
|
|
96
|
+
close() {
|
|
97
|
+
this.port.close();
|
|
98
|
+
this.worker.terminate();
|
|
99
|
+
this.stdin.destroy();
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
exports.SyncProcess = SyncProcess;
|
|
103
|
+
/**
|
|
104
|
+
* Spawns a worker for the given `fileWithoutExtension` in either a JS or TS
|
|
105
|
+
* worker, depending on which file exists.
|
|
106
|
+
*/
|
|
107
|
+
function spawnWorker(fileWithoutExtension, options) {
|
|
108
|
+
// The released version always spawns the JS worker. The TS worker is only
|
|
109
|
+
// used for development.
|
|
110
|
+
const jsFile = fileWithoutExtension + '.js';
|
|
111
|
+
if (fs.existsSync(jsFile))
|
|
112
|
+
return new worker_threads_1.Worker(jsFile, options);
|
|
113
|
+
const tsFile = fileWithoutExtension + '.ts';
|
|
114
|
+
if (fs.existsSync(tsFile)) {
|
|
115
|
+
return new worker_threads_1.Worker(`
|
|
116
|
+
require('ts-node').register();
|
|
117
|
+
require(${JSON.stringify(tsFile)});
|
|
118
|
+
`, { ...options, eval: true });
|
|
119
|
+
}
|
|
120
|
+
throw new Error(`Neither "${jsFile}" nor ".ts" exists.`);
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/src/sync-process/index.ts"],"names":[],"mappings":"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"}
|