@cichol/sass-bridge 4.4.2 → 4.5.0
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/dists/index.cjs +212 -0
- package/dists/index.d.cts +13 -0
- package/{types → dists}/index.d.ts +1 -1
- package/dists/index.js +191 -0
- package/dists/type-converter.d.ts +3 -0
- package/dists/types.d.cts +31 -0
- package/{types → dists}/types.d.ts +2 -2
- package/package.json +21 -12
- package/releases/cjs.js +0 -212
- package/releases/esm.js +0 -191
- /package/{types/type-converter.d.ts → dists/type-converter.d.cts} +0 -0
package/dists/index.cjs
ADDED
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var _Symbol = require('core-js-pure/stable/symbol/index.js');
|
|
4
|
+
var _Promise = require('core-js-pure/stable/promise/index.js');
|
|
5
|
+
var _mapInstanceProperty = require('core-js-pure/stable/instance/map.js');
|
|
6
|
+
var _Reflect$construct = require('core-js-pure/stable/reflect/construct.js');
|
|
7
|
+
var _Object$fromEntries = require('core-js-pure/stable/object/from-entries.js');
|
|
8
|
+
require('reflect-metadata');
|
|
9
|
+
var _fillInstanceProperty = require('core-js-pure/stable/instance/fill.js');
|
|
10
|
+
var _Array$from = require('core-js-pure/stable/array/from.js');
|
|
11
|
+
var _entriesInstanceProperty = require('core-js-pure/stable/instance/entries.js');
|
|
12
|
+
var _Map = require('core-js-pure/stable/map/index.js');
|
|
13
|
+
var _everyInstanceProperty = require('core-js-pure/stable/instance/every.js');
|
|
14
|
+
var _Array$isArray = require('core-js-pure/stable/array/is-array.js');
|
|
15
|
+
var chroma = require('chroma-js');
|
|
16
|
+
var _filterInstanceProperty = require('core-js-pure/stable/instance/filter.js');
|
|
17
|
+
var _Object$keys = require('core-js-pure/stable/object/keys.js');
|
|
18
|
+
var _startsWithInstanceProperty = require('core-js-pure/stable/instance/starts-with.js');
|
|
19
|
+
var _Object$getPrototypeOf = require('core-js-pure/stable/object/get-prototype-of.js');
|
|
20
|
+
var sass = require('sass');
|
|
21
|
+
|
|
22
|
+
function _interopNamespaceDefault(e) {
|
|
23
|
+
var n = Object.create(null);
|
|
24
|
+
if (e) {
|
|
25
|
+
Object.keys(e).forEach(function (k) {
|
|
26
|
+
if (k !== 'default') {
|
|
27
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
28
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
29
|
+
enumerable: true,
|
|
30
|
+
get: function () { return e[k]; }
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
n.default = e;
|
|
36
|
+
return Object.freeze(n);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
var sass__namespace = /*#__PURE__*/_interopNamespaceDefault(sass);
|
|
40
|
+
|
|
41
|
+
var _context, _context2, _context3, _context4, _context5;
|
|
42
|
+
|
|
43
|
+
// Type definitions.
|
|
44
|
+
|
|
45
|
+
const SassTypes = _Object$fromEntries(_mapInstanceProperty(_context = _filterInstanceProperty(_context2 = _filterInstanceProperty(_context3 = _mapInstanceProperty(_context4 = _filterInstanceProperty(_context5 = _Object$keys(sass__namespace)).call(_context5, propertyKey => _startsWithInstanceProperty(propertyKey).call(propertyKey, 'Sass'))).call(_context4, propertyKey => sass__namespace[propertyKey])).call(_context3, constructor => typeof constructor === 'function')).call(_context2, constructor => Object.prototype.isPrototypeOf.call(sass.Value.prototype, constructor.prototype))).call(_context, constructor => [constructor.name, constructor]));
|
|
46
|
+
const SassTRUE = sass__namespace.sassTrue;
|
|
47
|
+
const SassFALSE = sass__namespace.sassFalse;
|
|
48
|
+
const SassNULL = sass__namespace.sassNull;
|
|
49
|
+
const {
|
|
50
|
+
SassNumber
|
|
51
|
+
} = SassTypes;
|
|
52
|
+
const {
|
|
53
|
+
SassString
|
|
54
|
+
} = SassTypes;
|
|
55
|
+
const {
|
|
56
|
+
SassColor
|
|
57
|
+
} = SassTypes;
|
|
58
|
+
const {
|
|
59
|
+
SassList
|
|
60
|
+
} = SassTypes;
|
|
61
|
+
const {
|
|
62
|
+
SassMap
|
|
63
|
+
} = SassTypes;
|
|
64
|
+
const SassBoolean = _Object$getPrototypeOf(SassTRUE).constructor;
|
|
65
|
+
|
|
66
|
+
// Helper functions.
|
|
67
|
+
function isObject(value) {
|
|
68
|
+
const type = typeof value;
|
|
69
|
+
return !!value && (type === 'object' || type === 'function');
|
|
70
|
+
}
|
|
71
|
+
function sassToJavaScriptType(sassValue) {
|
|
72
|
+
switch (true) {
|
|
73
|
+
case sassValue instanceof SassBoolean:
|
|
74
|
+
{
|
|
75
|
+
return sassValue.value;
|
|
76
|
+
}
|
|
77
|
+
case sassValue instanceof SassString:
|
|
78
|
+
{
|
|
79
|
+
return sassValue.text;
|
|
80
|
+
}
|
|
81
|
+
case sassValue instanceof SassNumber:
|
|
82
|
+
{
|
|
83
|
+
const {
|
|
84
|
+
value,
|
|
85
|
+
numeratorUnits,
|
|
86
|
+
denominatorUnits
|
|
87
|
+
} = sassValue;
|
|
88
|
+
const unit = sassValue.hasUnits ? numeratorUnits.join('*') + (denominatorUnits.size > 0 ? `/${denominatorUnits.join('*')}` : '') : '';
|
|
89
|
+
return unit ? {
|
|
90
|
+
value,
|
|
91
|
+
unit
|
|
92
|
+
} : value;
|
|
93
|
+
}
|
|
94
|
+
case sassValue instanceof SassColor:
|
|
95
|
+
{
|
|
96
|
+
const {
|
|
97
|
+
red,
|
|
98
|
+
green,
|
|
99
|
+
blue,
|
|
100
|
+
alpha
|
|
101
|
+
} = sassValue;
|
|
102
|
+
return chroma(red, green, blue, alpha);
|
|
103
|
+
}
|
|
104
|
+
case sassValue instanceof SassList:
|
|
105
|
+
{
|
|
106
|
+
var _context;
|
|
107
|
+
const listValue = sassValue.asList;
|
|
108
|
+
const length = listValue.size;
|
|
109
|
+
const array = _fillInstanceProperty(_context = Array(length)).call(_context, undefined);
|
|
110
|
+
for (let index = 0; index < length; index += 1) {
|
|
111
|
+
array[index] = listValue.get(index);
|
|
112
|
+
}
|
|
113
|
+
return _mapInstanceProperty(array).call(array, value => sassToJavaScriptType(value));
|
|
114
|
+
}
|
|
115
|
+
case sassValue instanceof SassMap:
|
|
116
|
+
{
|
|
117
|
+
var _context2;
|
|
118
|
+
const mapValue = sassValue.contents;
|
|
119
|
+
const entries = _mapInstanceProperty(_context2 = _Array$from(_entriesInstanceProperty(mapValue).call(mapValue))).call(_context2, ([key, value]) => [sassToJavaScriptType(key), sassToJavaScriptType(value)]);
|
|
120
|
+
return new _Map(entries);
|
|
121
|
+
}
|
|
122
|
+
default:
|
|
123
|
+
{
|
|
124
|
+
return null;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
function javaScriptToSassType(rawValue) {
|
|
129
|
+
var _context3;
|
|
130
|
+
switch (true) {
|
|
131
|
+
case typeof rawValue === 'boolean':
|
|
132
|
+
{
|
|
133
|
+
const booleanValue = rawValue;
|
|
134
|
+
return booleanValue ? SassTRUE : SassFALSE;
|
|
135
|
+
}
|
|
136
|
+
case typeof rawValue === 'number':
|
|
137
|
+
{
|
|
138
|
+
const numberValue = rawValue;
|
|
139
|
+
return new SassNumber(numberValue);
|
|
140
|
+
}
|
|
141
|
+
case isObject(rawValue) && _everyInstanceProperty(_context3 = ['value', 'unit']).call(_context3, propertyKey => propertyKey in rawValue):
|
|
142
|
+
{
|
|
143
|
+
const {
|
|
144
|
+
value,
|
|
145
|
+
unit
|
|
146
|
+
} = rawValue;
|
|
147
|
+
return new SassNumber(value, unit);
|
|
148
|
+
}
|
|
149
|
+
case typeof rawValue === 'string':
|
|
150
|
+
{
|
|
151
|
+
const stringValue = rawValue;
|
|
152
|
+
return new SassString(stringValue);
|
|
153
|
+
}
|
|
154
|
+
case isObject(rawValue) && '_rgb' in rawValue:
|
|
155
|
+
{
|
|
156
|
+
const [red, green, blue, alpha] = rawValue.rgba();
|
|
157
|
+
return new SassColor({
|
|
158
|
+
red,
|
|
159
|
+
green,
|
|
160
|
+
blue,
|
|
161
|
+
alpha
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
case _Array$isArray(rawValue):
|
|
165
|
+
{
|
|
166
|
+
return new SassList(_mapInstanceProperty(rawValue).call(rawValue, value => javaScriptToSassType(value)));
|
|
167
|
+
}
|
|
168
|
+
case rawValue instanceof _Map:
|
|
169
|
+
{
|
|
170
|
+
var _context4;
|
|
171
|
+
const mapValue = rawValue;
|
|
172
|
+
const sassMap = new SassMap();
|
|
173
|
+
const converted = _mapInstanceProperty(_context4 = _Array$from(_entriesInstanceProperty(mapValue).call(mapValue))).call(_context4, entry => _mapInstanceProperty(entry).call(entry, javaScriptToSassType));
|
|
174
|
+
for (const [key, value] of converted) {
|
|
175
|
+
sassMap.contents.set(key, value);
|
|
176
|
+
}
|
|
177
|
+
return sassMap;
|
|
178
|
+
}
|
|
179
|
+
default:
|
|
180
|
+
{
|
|
181
|
+
return SassNULL;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
// Type definitions.
|
|
187
|
+
|
|
188
|
+
// Constants.
|
|
189
|
+
const KeyOfSignature = _Symbol('@cichol/sass-bridge::KeyOfSignature');
|
|
190
|
+
function sassFunction(definition) {
|
|
191
|
+
return target => {
|
|
192
|
+
Reflect.defineMetadata(KeyOfSignature, definition, target);
|
|
193
|
+
return target;
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
async function getFunctions(...moduleImports) {
|
|
197
|
+
const modules = await _Promise.all(_mapInstanceProperty(moduleImports).call(moduleImports, module => _Promise.resolve(module).then(module => module.default)));
|
|
198
|
+
const entries = _mapInstanceProperty(modules).call(modules, module => {
|
|
199
|
+
const signature = Reflect.getMetadata(KeyOfSignature, module);
|
|
200
|
+
async function customFunction(rawArgs) {
|
|
201
|
+
const args = _mapInstanceProperty(rawArgs).call(rawArgs, sassToJavaScriptType);
|
|
202
|
+
const result = await _Reflect$construct(module, args).execute();
|
|
203
|
+
return javaScriptToSassType(result);
|
|
204
|
+
}
|
|
205
|
+
return [signature, customFunction];
|
|
206
|
+
});
|
|
207
|
+
return _Object$fromEntries(entries);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
exports.getFunctions = getFunctions;
|
|
211
|
+
exports.sassFunction = sassFunction;
|
|
212
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY2pzIiwic291cmNlcyI6WyIuLi9zb3VyY2VzL3R5cGVzLnRzIiwiLi4vc291cmNlcy90eXBlLWNvbnZlcnRlci50cyIsIi4uL3NvdXJjZXMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcmQtcGFydHkgbW9kdWxlcy5cbmltcG9ydCB0eXBlIHsgQ29sb3IgfSBmcm9tICdjaHJvbWEtanMnO1xuaW1wb3J0ICogYXMgc2FzcyBmcm9tICdzYXNzJztcbmltcG9ydCB7IFZhbHVlIH0gZnJvbSAnc2Fzcyc7XG5cbi8vIFR5cGUgZGVmaW5pdGlvbnMuXG5leHBvcnQgdHlwZSBQcmltaXRpdmVzID0gYm9vbGVhbiB8IG51bWJlciB8IHN0cmluZyB8IG51bGw7XG5cbmV4cG9ydCB0eXBlIE51bWJlcldpdGhVbml0ID0geyB2YWx1ZTogbnVtYmVyLCB1bml0OiBzdHJpbmcgfTtcblxuZXhwb3J0IHR5cGUgSmF2YVNjcmlwdFR5cGU8QmFzZSA9IFByaW1pdGl2ZXMgfCBDb2xvciB8IE51bWJlcldpdGhVbml0PiA9XG4gICAgfCBCYXNlXG4gICAgfCBKYXZhU2NyaXB0VHlwZTxCYXNlPltdXG4gICAgfCBNYXA8SmF2YVNjcmlwdFR5cGU8QmFzZT4sIEphdmFTY3JpcHRUeXBlPEJhc2U+PjtcblxudHlwZSBGaWx0ZXJTYXNzUHJlZml4PFQgZXh0ZW5kcyBzdHJpbmc+ID0gVCBleHRlbmRzIGBTYXNzJHtpbmZlciBSfWAgPyBSIDogbmV2ZXI7XG5cbnR5cGUgU2Fzc1R5cGVzID0gRXhjbHVkZTxgU2FzcyR7RmlsdGVyU2Fzc1ByZWZpeDxrZXlvZiB0eXBlb2Ygc2Fzcz59YCwgYFNhc3MkeydCb29sZWFuJyB8ICdDYWxjdWxhdGlvbid9YD47XG5cbmNvbnN0IFNhc3NUeXBlcyA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBPYmplY3Qua2V5cyhzYXNzKVxuICAgICAgICAuZmlsdGVyKHByb3BlcnR5S2V5ID0+IHByb3BlcnR5S2V5LnN0YXJ0c1dpdGgoJ1Nhc3MnKSlcbiAgICAgICAgLm1hcChwcm9wZXJ0eUtleSA9PiBzYXNzW3Byb3BlcnR5S2V5IGFzIFNhc3NUeXBlc10pXG4gICAgICAgIC5maWx0ZXIoY29uc3RydWN0b3IgPT4gdHlwZW9mIGNvbnN0cnVjdG9yID09PSAnZnVuY3Rpb24nKVxuICAgICAgICAuZmlsdGVyKGNvbnN0cnVjdG9yID0+IE9iamVjdC5wcm90b3R5cGUuaXNQcm90b3R5cGVPZi5jYWxsKFZhbHVlLnByb3RvdHlwZSwgY29uc3RydWN0b3IucHJvdG90eXBlKSlcbiAgICAgICAgLm1hcChjb25zdHJ1Y3RvciA9PiBbIGNvbnN0cnVjdG9yLm5hbWUsIGNvbnN0cnVjdG9yIF0gYXMgW1Nhc3NUeXBlcywgKHR5cGVvZiBzYXNzKVtTYXNzVHlwZXNdXSlcbikgYXMgeyBbUCBpbiBTYXNzVHlwZXNdOiAodHlwZW9mIHNhc3MpW1BdIH07XG5cbmV4cG9ydCBjb25zdCBTYXNzVFJVRSA9IHNhc3Muc2Fzc1RydWU7XG5leHBvcnQgdHlwZSBTYXNzVFJVRSA9IHR5cGVvZiBTYXNzVFJVRTtcblxuZXhwb3J0IGNvbnN0IFNhc3NGQUxTRSA9IHNhc3Muc2Fzc0ZhbHNlO1xuZXhwb3J0IHR5cGUgU2Fzc0ZBTFNFID0gdHlwZW9mIFNhc3NGQUxTRTtcblxuZXhwb3J0IGNvbnN0IFNhc3NOVUxMID0gc2Fzcy5zYXNzTnVsbDtcbmV4cG9ydCB0eXBlIFNhc3NOVUxMID0gdHlwZW9mIFNhc3NOVUxMO1xuXG5leHBvcnQgY29uc3QgeyBTYXNzTnVtYmVyIH0gPSBTYXNzVHlwZXM7XG5leHBvcnQgdHlwZSBTYXNzTnVtYmVyID0gSW5zdGFuY2VUeXBlPHR5cGVvZiBTYXNzTnVtYmVyPjtcblxuZXhwb3J0IGNvbnN0IHsgU2Fzc1N0cmluZyB9ID0gU2Fzc1R5cGVzO1xuZXhwb3J0IHR5cGUgU2Fzc1N0cmluZyA9IEluc3RhbmNlVHlwZTx0eXBlb2YgU2Fzc1N0cmluZz47XG5cbmV4cG9ydCBjb25zdCB7IFNhc3NDb2xvciB9ID0gU2Fzc1R5cGVzO1xuZXhwb3J0IHR5cGUgU2Fzc0NvbG9yID0gSW5zdGFuY2VUeXBlPHR5cGVvZiBTYXNzQ29sb3I+O1xuXG5leHBvcnQgY29uc3QgeyBTYXNzTGlzdCB9ID0gU2Fzc1R5cGVzO1xuZXhwb3J0IHR5cGUgU2Fzc0xpc3QgPSBJbnN0YW5jZVR5cGU8dHlwZW9mIFNhc3NMaXN0PjtcblxuZXhwb3J0IGNvbnN0IHsgU2Fzc01hcCB9ID0gU2Fzc1R5cGVzO1xuZXhwb3J0IHR5cGUgU2Fzc01hcCA9IEluc3RhbmNlVHlwZTx0eXBlb2YgU2Fzc01hcD47XG5cbmV4cG9ydCBjb25zdCBTYXNzQm9vbGVhbiA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihTYXNzVFJVRSkuY29uc3RydWN0b3IgYXMgdHlwZW9mIHNhc3MuU2Fzc0Jvb2xlYW47XG5leHBvcnQgdHlwZSBTYXNzQm9vbGVhbiA9IHNhc3MuU2Fzc0Jvb2xlYW47XG5cbmV4cG9ydCB0eXBlIFNhc3NUeXBlID1cbiAgICB8IEluc3RhbmNlVHlwZTx0eXBlb2YgU2Fzc1R5cGVzIGV4dGVuZHMgUmVjb3JkPGFueSwgaW5mZXIgUj4gPyBSIDogbmV2ZXI+XG4gICAgfCBTYXNzQm9vbGVhbjtcbiIsIi8vIFRoaXJkLXBhcnR5IG1vZHVsZXMuXG5pbXBvcnQgY2hyb21hIGZyb20gJ2Nocm9tYS1qcyc7XG5cbi8vIExvY2FsIGhlbHBlcnMuXG5pbXBvcnQge1xuICAgIHR5cGUgU2Fzc1R5cGUsXG4gICAgU2Fzc0Jvb2xlYW4sXG4gICAgU2Fzc051bWJlcixcbiAgICBTYXNzU3RyaW5nLFxuICAgIFNhc3NDb2xvcixcbiAgICBTYXNzTGlzdCxcbiAgICBTYXNzTWFwLFxuICAgIFNhc3NUUlVFLFxuICAgIFNhc3NGQUxTRSxcbiAgICBTYXNzTlVMTCxcbiAgICB0eXBlIEphdmFTY3JpcHRUeXBlLFxuICAgIHR5cGUgTnVtYmVyV2l0aFVuaXRcbn0gZnJvbSAnLi90eXBlcyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbnMuXG5mdW5jdGlvbiBpc09iamVjdCh2YWx1ZT86IHVua25vd24pOiB2YWx1ZSBpcyBvYmplY3Qge1xuICAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgdmFsdWU7XG5cbiAgICByZXR1cm4gISF2YWx1ZSAmJiAodHlwZSA9PT0gJ29iamVjdCcgfHwgdHlwZSA9PT0gJ2Z1bmN0aW9uJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYXNzVG9KYXZhU2NyaXB0VHlwZShzYXNzVmFsdWU6IFNhc3NUeXBlKTogSmF2YVNjcmlwdFR5cGUge1xuICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgIGNhc2Ugc2Fzc1ZhbHVlIGluc3RhbmNlb2YgU2Fzc0Jvb2xlYW46IHtcbiAgICAgICAgcmV0dXJuIHNhc3NWYWx1ZS52YWx1ZTtcbiAgICB9XG5cbiAgICBjYXNlIHNhc3NWYWx1ZSBpbnN0YW5jZW9mIFNhc3NTdHJpbmc6IHtcbiAgICAgICAgcmV0dXJuIHNhc3NWYWx1ZS50ZXh0O1xuICAgIH1cblxuICAgIGNhc2Ugc2Fzc1ZhbHVlIGluc3RhbmNlb2YgU2Fzc051bWJlcjoge1xuICAgICAgICBjb25zdCB7IHZhbHVlLCBudW1lcmF0b3JVbml0cywgZGVub21pbmF0b3JVbml0cyB9ID0gc2Fzc1ZhbHVlO1xuXG4gICAgICAgIGNvbnN0IHVuaXQgPSBzYXNzVmFsdWUuaGFzVW5pdHNcbiAgICAgICAgICAgID8gbnVtZXJhdG9yVW5pdHMuam9pbignKicpICsgKGRlbm9taW5hdG9yVW5pdHMuc2l6ZSA+IDAgPyBgLyR7ZGVub21pbmF0b3JVbml0cy5qb2luKCcqJyl9YCA6ICcnKVxuICAgICAgICAgICAgOiAnJztcblxuICAgICAgICByZXR1cm4gdW5pdCA/IHsgdmFsdWUsIHVuaXQgfSA6IHZhbHVlO1xuICAgIH1cblxuICAgIGNhc2Ugc2Fzc1ZhbHVlIGluc3RhbmNlb2YgU2Fzc0NvbG9yOiB7XG4gICAgICAgIGNvbnN0IHsgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEgfSA9IHNhc3NWYWx1ZTtcblxuICAgICAgICByZXR1cm4gY2hyb21hKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTtcbiAgICB9XG5cbiAgICBjYXNlIHNhc3NWYWx1ZSBpbnN0YW5jZW9mIFNhc3NMaXN0OiB7XG4gICAgICAgIGNvbnN0IGxpc3RWYWx1ZSA9IHNhc3NWYWx1ZS5hc0xpc3Q7XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IGxpc3RWYWx1ZS5zaXplO1xuICAgICAgICBjb25zdCBhcnJheSA9IEFycmF5KGxlbmd0aCkuZmlsbCh1bmRlZmluZWQpIGFzIFNhc3NUeXBlW107XG5cbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAgICAgICAgYXJyYXlbaW5kZXhdID0gbGlzdFZhbHVlLmdldChpbmRleCkgYXMgU2Fzc1R5cGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXJyYXkubWFwKHZhbHVlID0+IHNhc3NUb0phdmFTY3JpcHRUeXBlKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgY2FzZSBzYXNzVmFsdWUgaW5zdGFuY2VvZiBTYXNzTWFwOiB7XG4gICAgICAgIGNvbnN0IG1hcFZhbHVlID0gc2Fzc1ZhbHVlLmNvbnRlbnRzO1xuXG4gICAgICAgIGNvbnN0IGVudHJpZXMgPSBBcnJheS5mcm9tKG1hcFZhbHVlLmVudHJpZXMoKSBhcyBJdGVyYWJsZUl0ZXJhdG9yPFtTYXNzVHlwZSwgU2Fzc1R5cGVdPilcbiAgICAgICAgICAgIC5tYXAoKFsga2V5LCB2YWx1ZSBdKSA9PiBbIHNhc3NUb0phdmFTY3JpcHRUeXBlKGtleSksIHNhc3NUb0phdmFTY3JpcHRUeXBlKHZhbHVlKSBdKTtcblxuICAgICAgICByZXR1cm4gbmV3IE1hcChlbnRyaWVzIGFzIFtKYXZhU2NyaXB0VHlwZSwgSmF2YVNjcmlwdFR5cGVdW10pO1xuICAgIH1cblxuICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGphdmFTY3JpcHRUb1Nhc3NUeXBlKHJhd1ZhbHVlOiBKYXZhU2NyaXB0VHlwZSk6IFNhc3NUeXBlIHtcbiAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICBjYXNlIHR5cGVvZiByYXdWYWx1ZSA9PT0gJ2Jvb2xlYW4nOiB7XG4gICAgICAgIGNvbnN0IGJvb2xlYW5WYWx1ZSA9IHJhd1ZhbHVlO1xuXG4gICAgICAgIHJldHVybiBib29sZWFuVmFsdWUgPyBTYXNzVFJVRSA6IFNhc3NGQUxTRTtcbiAgICB9XG5cbiAgICBjYXNlIHR5cGVvZiByYXdWYWx1ZSA9PT0gJ251bWJlcic6IHtcbiAgICAgICAgY29uc3QgbnVtYmVyVmFsdWUgPSByYXdWYWx1ZTtcblxuICAgICAgICByZXR1cm4gbmV3IFNhc3NOdW1iZXIobnVtYmVyVmFsdWUpO1xuICAgIH1cblxuICAgIGNhc2UgaXNPYmplY3QocmF3VmFsdWUpICYmIFsgJ3ZhbHVlJywgJ3VuaXQnIF0uZXZlcnkocHJvcGVydHlLZXkgPT4gcHJvcGVydHlLZXkgaW4gcmF3VmFsdWUpOiB7XG4gICAgICAgIGNvbnN0IHsgdmFsdWUsIHVuaXQgfSA9IHJhd1ZhbHVlIGFzIE51bWJlcldpdGhVbml0O1xuXG4gICAgICAgIHJldHVybiBuZXcgU2Fzc051bWJlcih2YWx1ZSwgdW5pdCk7XG4gICAgfVxuXG4gICAgY2FzZSB0eXBlb2YgcmF3VmFsdWUgPT09ICdzdHJpbmcnOiB7XG4gICAgICAgIGNvbnN0IHN0cmluZ1ZhbHVlID0gcmF3VmFsdWU7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBTYXNzU3RyaW5nKHN0cmluZ1ZhbHVlKTtcbiAgICB9XG5cbiAgICBjYXNlIGlzT2JqZWN0KHJhd1ZhbHVlKSAmJiAnX3JnYicgaW4gcmF3VmFsdWU6IHtcbiAgICAgICAgY29uc3QgWyByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSBdID0gcmF3VmFsdWUucmdiYSgpIGFzIG51bWJlcltdO1xuXG4gICAgICAgIHJldHVybiBuZXcgU2Fzc0NvbG9yKHsgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEgfSk7XG4gICAgfVxuXG4gICAgY2FzZSBBcnJheS5pc0FycmF5KHJhd1ZhbHVlKToge1xuICAgICAgICByZXR1cm4gbmV3IFNhc3NMaXN0KHJhd1ZhbHVlLm1hcCh2YWx1ZSA9PiBqYXZhU2NyaXB0VG9TYXNzVHlwZSh2YWx1ZSkpKTtcbiAgICB9XG5cbiAgICBjYXNlIHJhd1ZhbHVlIGluc3RhbmNlb2YgTWFwOiB7XG4gICAgICAgIGNvbnN0IG1hcFZhbHVlID0gcmF3VmFsdWUgYXMgTWFwPEphdmFTY3JpcHRUeXBlLCBKYXZhU2NyaXB0VHlwZT47XG4gICAgICAgIGNvbnN0IHNhc3NNYXAgPSBuZXcgU2Fzc01hcCgpO1xuXG4gICAgICAgIGNvbnN0IGNvbnZlcnRlZCA9IEFycmF5LmZyb20obWFwVmFsdWUuZW50cmllcygpKVxuICAgICAgICAgICAgLm1hcChlbnRyeSA9PiBlbnRyeS5tYXAoamF2YVNjcmlwdFRvU2Fzc1R5cGUpKSBhcyBbU2Fzc1R5cGUsIFNhc3NUeXBlXVtdO1xuXG4gICAgICAgIGZvciAoY29uc3QgWyBrZXksIHZhbHVlIF0gb2YgY29udmVydGVkKSB7XG4gICAgICAgICAgICBzYXNzTWFwLmNvbnRlbnRzLnNldChrZXksIHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzYXNzTWFwO1xuICAgIH1cblxuICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgcmV0dXJuIFNhc3NOVUxMO1xuICAgIH1cbiAgICB9XG59XG4iLCJpbXBvcnQgJ3JlZmxlY3QtbWV0YWRhdGEnO1xuXG4vLyBUaGlyZC1wYXJ0eSBtb2R1bGVzLlxuaW1wb3J0IHsgQ3VzdG9tRnVuY3Rpb24gfSBmcm9tICdzYXNzJztcblxuLy8gTG9jYWwgaGVscGVycy5cbmltcG9ydCB0eXBlIHsgU2Fzc1R5cGUsIEphdmFTY3JpcHRUeXBlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBzYXNzVG9KYXZhU2NyaXB0VHlwZSwgamF2YVNjcmlwdFRvU2Fzc1R5cGUgfSBmcm9tICcuL3R5cGUtY29udmVydGVyJztcblxuLy8gVHlwZSBkZWZpbml0aW9ucy5cbmV4cG9ydCBpbnRlcmZhY2UgQnJpZGdlZEZ1bmN0aW9uIHtcbiAgICBleGVjdXRlKCk6IEphdmFTY3JpcHRUeXBlIHwgUHJvbWlzZTxKYXZhU2NyaXB0VHlwZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uc3RydWN0b3Ige1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiBCcmlkZ2VkRnVuY3Rpb247XG59XG5cbi8vIENvbnN0YW50cy5cbmNvbnN0IEtleU9mU2lnbmF0dXJlID0gU3ltYm9sKCdAY2ljaG9sL3Nhc3MtYnJpZGdlOjpLZXlPZlNpZ25hdHVyZScpO1xuXG5leHBvcnQgZnVuY3Rpb24gc2Fzc0Z1bmN0aW9uKGRlZmluaXRpb246IHN0cmluZyk6IENsYXNzRGVjb3JhdG9yIHtcbiAgICByZXR1cm4gKDxUIGV4dGVuZHMgQ29uc3RydWN0b3I+KHRhcmdldDogVCkgPT4ge1xuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKEtleU9mU2lnbmF0dXJlLCBkZWZpbml0aW9uLCB0YXJnZXQpO1xuXG4gICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfSkgYXMgQ2xhc3NEZWNvcmF0b3I7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRGdW5jdGlvbnMoXG4gICAgLi4ubW9kdWxlSW1wb3J0czogUHJvbWlzZTx7IGRlZmF1bHQ6IENvbnN0cnVjdG9yIH0+W11cbik6IFByb21pc2U8UmVjb3JkPHN0cmluZywgQ3VzdG9tRnVuY3Rpb248J2FzeW5jJz4+PiB7XG4gICAgY29uc3QgbW9kdWxlcyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBtb2R1bGVJbXBvcnRzLm1hcChtb2R1bGUgPT4gKFxuICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKG1vZHVsZSlcbiAgICAgICAgICAgICAgICAudGhlbihtb2R1bGUgPT4gbW9kdWxlLmRlZmF1bHQpXG4gICAgICAgICkpXG4gICAgKTtcblxuICAgIGNvbnN0IGVudHJpZXMgPSBtb2R1bGVzLm1hcChtb2R1bGUgPT4ge1xuICAgICAgICBjb25zdCBzaWduYXR1cmUgPSBSZWZsZWN0LmdldE1ldGFkYXRhKEtleU9mU2lnbmF0dXJlLCBtb2R1bGUpIGFzIHN0cmluZztcblxuICAgICAgICBhc3luYyBmdW5jdGlvbiBjdXN0b21GdW5jdGlvbihyYXdBcmdzOiBTYXNzVHlwZVtdKTogUHJvbWlzZTxTYXNzVHlwZT4ge1xuICAgICAgICAgICAgY29uc3QgYXJncyA9IHJhd0FyZ3MubWFwKHNhc3NUb0phdmFTY3JpcHRUeXBlKTtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFJlZmxlY3QuY29uc3RydWN0KG1vZHVsZSwgYXJncykuZXhlY3V0ZSgpO1xuXG4gICAgICAgICAgICByZXR1cm4gamF2YVNjcmlwdFRvU2Fzc1R5cGUocmVzdWx0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbIHNpZ25hdHVyZSwgY3VzdG9tRnVuY3Rpb24gXSBhcyBjb25zdDtcbiAgICB9KTtcblxuICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoZW50cmllcyk7XG59XG4iXSwibmFtZXMiOlsiU2Fzc1R5cGVzIiwiX09iamVjdCRmcm9tRW50cmllcyIsIl9tYXBJbnN0YW5jZVByb3BlcnR5IiwiX2NvbnRleHQiLCJfZmlsdGVySW5zdGFuY2VQcm9wZXJ0eSIsIl9jb250ZXh0MiIsIl9jb250ZXh0MyIsIl9jb250ZXh0NCIsIl9jb250ZXh0NSIsIl9PYmplY3Qka2V5cyIsInNhc3MiLCJjYWxsIiwicHJvcGVydHlLZXkiLCJfc3RhcnRzV2l0aEluc3RhbmNlUHJvcGVydHkiLCJjb25zdHJ1Y3RvciIsIk9iamVjdCIsInByb3RvdHlwZSIsImlzUHJvdG90eXBlT2YiLCJWYWx1ZSIsIm5hbWUiLCJTYXNzVFJVRSIsInNhc3NUcnVlIiwiU2Fzc0ZBTFNFIiwic2Fzc0ZhbHNlIiwiU2Fzc05VTEwiLCJzYXNzTnVsbCIsIlNhc3NOdW1iZXIiLCJTYXNzU3RyaW5nIiwiU2Fzc0NvbG9yIiwiU2Fzc0xpc3QiLCJTYXNzTWFwIiwiU2Fzc0Jvb2xlYW4iLCJfT2JqZWN0JGdldFByb3RvdHlwZU9mIiwiaXNPYmplY3QiLCJ2YWx1ZSIsInR5cGUiLCJzYXNzVG9KYXZhU2NyaXB0VHlwZSIsInNhc3NWYWx1ZSIsInRleHQiLCJudW1lcmF0b3JVbml0cyIsImRlbm9taW5hdG9yVW5pdHMiLCJ1bml0IiwiaGFzVW5pdHMiLCJqb2luIiwic2l6ZSIsInJlZCIsImdyZWVuIiwiYmx1ZSIsImFscGhhIiwiY2hyb21hIiwibGlzdFZhbHVlIiwiYXNMaXN0IiwibGVuZ3RoIiwiYXJyYXkiLCJfZmlsbEluc3RhbmNlUHJvcGVydHkiLCJBcnJheSIsInVuZGVmaW5lZCIsImluZGV4IiwiZ2V0IiwibWFwVmFsdWUiLCJjb250ZW50cyIsImVudHJpZXMiLCJfQXJyYXkkZnJvbSIsIl9lbnRyaWVzSW5zdGFuY2VQcm9wZXJ0eSIsImtleSIsIl9NYXAiLCJqYXZhU2NyaXB0VG9TYXNzVHlwZSIsInJhd1ZhbHVlIiwiYm9vbGVhblZhbHVlIiwibnVtYmVyVmFsdWUiLCJfZXZlcnlJbnN0YW5jZVByb3BlcnR5Iiwic3RyaW5nVmFsdWUiLCJyZ2JhIiwiX0FycmF5JGlzQXJyYXkiLCJzYXNzTWFwIiwiY29udmVydGVkIiwiZW50cnkiLCJzZXQiLCJLZXlPZlNpZ25hdHVyZSIsIl9TeW1ib2wiLCJzYXNzRnVuY3Rpb24iLCJkZWZpbml0aW9uIiwidGFyZ2V0IiwiUmVmbGVjdCIsImRlZmluZU1ldGFkYXRhIiwiZ2V0RnVuY3Rpb25zIiwibW9kdWxlSW1wb3J0cyIsIm1vZHVsZXMiLCJfUHJvbWlzZSIsImFsbCIsIm1vZHVsZSIsInJlc29sdmUiLCJ0aGVuIiwiZGVmYXVsdCIsInNpZ25hdHVyZSIsImdldE1ldGFkYXRhIiwiY3VzdG9tRnVuY3Rpb24iLCJyYXdBcmdzIiwiYXJncyIsInJlc3VsdCIsIl9SZWZsZWN0JGNvbnN0cnVjdCIsImV4ZWN1dGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUtBOztBQWNB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
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { CustomFunction } from 'sass';
|
|
3
|
+
import type { JavaScriptType } from './types';
|
|
4
|
+
export interface BridgedFunction {
|
|
5
|
+
execute(): JavaScriptType | Promise<JavaScriptType>;
|
|
6
|
+
}
|
|
7
|
+
export interface Constructor {
|
|
8
|
+
new (...args: any[]): BridgedFunction;
|
|
9
|
+
}
|
|
10
|
+
export declare function sassFunction(definition: string): ClassDecorator;
|
|
11
|
+
export declare function getFunctions(...moduleImports: Promise<{
|
|
12
|
+
default: Constructor;
|
|
13
|
+
}>[]): Promise<Record<string, CustomFunction<'async'>>>;
|
|
@@ -5,7 +5,7 @@ export interface BridgedFunction {
|
|
|
5
5
|
execute(): JavaScriptType | Promise<JavaScriptType>;
|
|
6
6
|
}
|
|
7
7
|
export interface Constructor {
|
|
8
|
-
new (...args:
|
|
8
|
+
new (...args: any[]): BridgedFunction;
|
|
9
9
|
}
|
|
10
10
|
export declare function sassFunction(definition: string): ClassDecorator;
|
|
11
11
|
export declare function getFunctions(...moduleImports: Promise<{
|
package/dists/index.js
ADDED
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import _Symbol from 'core-js-pure/stable/symbol/index.js';
|
|
2
|
+
import _Promise from 'core-js-pure/stable/promise/index.js';
|
|
3
|
+
import _mapInstanceProperty from 'core-js-pure/stable/instance/map.js';
|
|
4
|
+
import _Reflect$construct from 'core-js-pure/stable/reflect/construct.js';
|
|
5
|
+
import _Object$fromEntries from 'core-js-pure/stable/object/from-entries.js';
|
|
6
|
+
import 'reflect-metadata';
|
|
7
|
+
import _fillInstanceProperty from 'core-js-pure/stable/instance/fill.js';
|
|
8
|
+
import _Array$from from 'core-js-pure/stable/array/from.js';
|
|
9
|
+
import _entriesInstanceProperty from 'core-js-pure/stable/instance/entries.js';
|
|
10
|
+
import _Map from 'core-js-pure/stable/map/index.js';
|
|
11
|
+
import _everyInstanceProperty from 'core-js-pure/stable/instance/every.js';
|
|
12
|
+
import _Array$isArray from 'core-js-pure/stable/array/is-array.js';
|
|
13
|
+
import chroma from 'chroma-js';
|
|
14
|
+
import _filterInstanceProperty from 'core-js-pure/stable/instance/filter.js';
|
|
15
|
+
import _Object$keys from 'core-js-pure/stable/object/keys.js';
|
|
16
|
+
import _startsWithInstanceProperty from 'core-js-pure/stable/instance/starts-with.js';
|
|
17
|
+
import _Object$getPrototypeOf from 'core-js-pure/stable/object/get-prototype-of.js';
|
|
18
|
+
import * as sass from 'sass';
|
|
19
|
+
import { Value } from 'sass';
|
|
20
|
+
|
|
21
|
+
var _context, _context2, _context3, _context4, _context5;
|
|
22
|
+
|
|
23
|
+
// Type definitions.
|
|
24
|
+
|
|
25
|
+
const SassTypes = _Object$fromEntries(_mapInstanceProperty(_context = _filterInstanceProperty(_context2 = _filterInstanceProperty(_context3 = _mapInstanceProperty(_context4 = _filterInstanceProperty(_context5 = _Object$keys(sass)).call(_context5, propertyKey => _startsWithInstanceProperty(propertyKey).call(propertyKey, 'Sass'))).call(_context4, propertyKey => sass[propertyKey])).call(_context3, constructor => typeof constructor === 'function')).call(_context2, constructor => Object.prototype.isPrototypeOf.call(Value.prototype, constructor.prototype))).call(_context, constructor => [constructor.name, constructor]));
|
|
26
|
+
const SassTRUE = sass.sassTrue;
|
|
27
|
+
const SassFALSE = sass.sassFalse;
|
|
28
|
+
const SassNULL = sass.sassNull;
|
|
29
|
+
const {
|
|
30
|
+
SassNumber
|
|
31
|
+
} = SassTypes;
|
|
32
|
+
const {
|
|
33
|
+
SassString
|
|
34
|
+
} = SassTypes;
|
|
35
|
+
const {
|
|
36
|
+
SassColor
|
|
37
|
+
} = SassTypes;
|
|
38
|
+
const {
|
|
39
|
+
SassList
|
|
40
|
+
} = SassTypes;
|
|
41
|
+
const {
|
|
42
|
+
SassMap
|
|
43
|
+
} = SassTypes;
|
|
44
|
+
const SassBoolean = _Object$getPrototypeOf(SassTRUE).constructor;
|
|
45
|
+
|
|
46
|
+
// Helper functions.
|
|
47
|
+
function isObject(value) {
|
|
48
|
+
const type = typeof value;
|
|
49
|
+
return !!value && (type === 'object' || type === 'function');
|
|
50
|
+
}
|
|
51
|
+
function sassToJavaScriptType(sassValue) {
|
|
52
|
+
switch (true) {
|
|
53
|
+
case sassValue instanceof SassBoolean:
|
|
54
|
+
{
|
|
55
|
+
return sassValue.value;
|
|
56
|
+
}
|
|
57
|
+
case sassValue instanceof SassString:
|
|
58
|
+
{
|
|
59
|
+
return sassValue.text;
|
|
60
|
+
}
|
|
61
|
+
case sassValue instanceof SassNumber:
|
|
62
|
+
{
|
|
63
|
+
const {
|
|
64
|
+
value,
|
|
65
|
+
numeratorUnits,
|
|
66
|
+
denominatorUnits
|
|
67
|
+
} = sassValue;
|
|
68
|
+
const unit = sassValue.hasUnits ? numeratorUnits.join('*') + (denominatorUnits.size > 0 ? `/${denominatorUnits.join('*')}` : '') : '';
|
|
69
|
+
return unit ? {
|
|
70
|
+
value,
|
|
71
|
+
unit
|
|
72
|
+
} : value;
|
|
73
|
+
}
|
|
74
|
+
case sassValue instanceof SassColor:
|
|
75
|
+
{
|
|
76
|
+
const {
|
|
77
|
+
red,
|
|
78
|
+
green,
|
|
79
|
+
blue,
|
|
80
|
+
alpha
|
|
81
|
+
} = sassValue;
|
|
82
|
+
return chroma(red, green, blue, alpha);
|
|
83
|
+
}
|
|
84
|
+
case sassValue instanceof SassList:
|
|
85
|
+
{
|
|
86
|
+
var _context;
|
|
87
|
+
const listValue = sassValue.asList;
|
|
88
|
+
const length = listValue.size;
|
|
89
|
+
const array = _fillInstanceProperty(_context = Array(length)).call(_context, undefined);
|
|
90
|
+
for (let index = 0; index < length; index += 1) {
|
|
91
|
+
array[index] = listValue.get(index);
|
|
92
|
+
}
|
|
93
|
+
return _mapInstanceProperty(array).call(array, value => sassToJavaScriptType(value));
|
|
94
|
+
}
|
|
95
|
+
case sassValue instanceof SassMap:
|
|
96
|
+
{
|
|
97
|
+
var _context2;
|
|
98
|
+
const mapValue = sassValue.contents;
|
|
99
|
+
const entries = _mapInstanceProperty(_context2 = _Array$from(_entriesInstanceProperty(mapValue).call(mapValue))).call(_context2, ([key, value]) => [sassToJavaScriptType(key), sassToJavaScriptType(value)]);
|
|
100
|
+
return new _Map(entries);
|
|
101
|
+
}
|
|
102
|
+
default:
|
|
103
|
+
{
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
function javaScriptToSassType(rawValue) {
|
|
109
|
+
var _context3;
|
|
110
|
+
switch (true) {
|
|
111
|
+
case typeof rawValue === 'boolean':
|
|
112
|
+
{
|
|
113
|
+
const booleanValue = rawValue;
|
|
114
|
+
return booleanValue ? SassTRUE : SassFALSE;
|
|
115
|
+
}
|
|
116
|
+
case typeof rawValue === 'number':
|
|
117
|
+
{
|
|
118
|
+
const numberValue = rawValue;
|
|
119
|
+
return new SassNumber(numberValue);
|
|
120
|
+
}
|
|
121
|
+
case isObject(rawValue) && _everyInstanceProperty(_context3 = ['value', 'unit']).call(_context3, propertyKey => propertyKey in rawValue):
|
|
122
|
+
{
|
|
123
|
+
const {
|
|
124
|
+
value,
|
|
125
|
+
unit
|
|
126
|
+
} = rawValue;
|
|
127
|
+
return new SassNumber(value, unit);
|
|
128
|
+
}
|
|
129
|
+
case typeof rawValue === 'string':
|
|
130
|
+
{
|
|
131
|
+
const stringValue = rawValue;
|
|
132
|
+
return new SassString(stringValue);
|
|
133
|
+
}
|
|
134
|
+
case isObject(rawValue) && '_rgb' in rawValue:
|
|
135
|
+
{
|
|
136
|
+
const [red, green, blue, alpha] = rawValue.rgba();
|
|
137
|
+
return new SassColor({
|
|
138
|
+
red,
|
|
139
|
+
green,
|
|
140
|
+
blue,
|
|
141
|
+
alpha
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
case _Array$isArray(rawValue):
|
|
145
|
+
{
|
|
146
|
+
return new SassList(_mapInstanceProperty(rawValue).call(rawValue, value => javaScriptToSassType(value)));
|
|
147
|
+
}
|
|
148
|
+
case rawValue instanceof _Map:
|
|
149
|
+
{
|
|
150
|
+
var _context4;
|
|
151
|
+
const mapValue = rawValue;
|
|
152
|
+
const sassMap = new SassMap();
|
|
153
|
+
const converted = _mapInstanceProperty(_context4 = _Array$from(_entriesInstanceProperty(mapValue).call(mapValue))).call(_context4, entry => _mapInstanceProperty(entry).call(entry, javaScriptToSassType));
|
|
154
|
+
for (const [key, value] of converted) {
|
|
155
|
+
sassMap.contents.set(key, value);
|
|
156
|
+
}
|
|
157
|
+
return sassMap;
|
|
158
|
+
}
|
|
159
|
+
default:
|
|
160
|
+
{
|
|
161
|
+
return SassNULL;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
// Type definitions.
|
|
167
|
+
|
|
168
|
+
// Constants.
|
|
169
|
+
const KeyOfSignature = _Symbol('@cichol/sass-bridge::KeyOfSignature');
|
|
170
|
+
function sassFunction(definition) {
|
|
171
|
+
return target => {
|
|
172
|
+
Reflect.defineMetadata(KeyOfSignature, definition, target);
|
|
173
|
+
return target;
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
async function getFunctions(...moduleImports) {
|
|
177
|
+
const modules = await _Promise.all(_mapInstanceProperty(moduleImports).call(moduleImports, module => _Promise.resolve(module).then(module => module.default)));
|
|
178
|
+
const entries = _mapInstanceProperty(modules).call(modules, module => {
|
|
179
|
+
const signature = Reflect.getMetadata(KeyOfSignature, module);
|
|
180
|
+
async function customFunction(rawArgs) {
|
|
181
|
+
const args = _mapInstanceProperty(rawArgs).call(rawArgs, sassToJavaScriptType);
|
|
182
|
+
const result = await _Reflect$construct(module, args).execute();
|
|
183
|
+
return javaScriptToSassType(result);
|
|
184
|
+
}
|
|
185
|
+
return [signature, customFunction];
|
|
186
|
+
});
|
|
187
|
+
return _Object$fromEntries(entries);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
export { getFunctions, sassFunction };
|
|
191
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uL3NvdXJjZXMvdHlwZXMudHMiLCIuLi9zb3VyY2VzL3R5cGUtY29udmVydGVyLnRzIiwiLi4vc291cmNlcy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlyZC1wYXJ0eSBtb2R1bGVzLlxuaW1wb3J0IHR5cGUgeyBDb2xvciB9IGZyb20gJ2Nocm9tYS1qcyc7XG5pbXBvcnQgKiBhcyBzYXNzIGZyb20gJ3Nhc3MnO1xuaW1wb3J0IHsgVmFsdWUgfSBmcm9tICdzYXNzJztcblxuLy8gVHlwZSBkZWZpbml0aW9ucy5cbmV4cG9ydCB0eXBlIFByaW1pdGl2ZXMgPSBib29sZWFuIHwgbnVtYmVyIHwgc3RyaW5nIHwgbnVsbDtcblxuZXhwb3J0IHR5cGUgTnVtYmVyV2l0aFVuaXQgPSB7IHZhbHVlOiBudW1iZXIsIHVuaXQ6IHN0cmluZyB9O1xuXG5leHBvcnQgdHlwZSBKYXZhU2NyaXB0VHlwZTxCYXNlID0gUHJpbWl0aXZlcyB8IENvbG9yIHwgTnVtYmVyV2l0aFVuaXQ+ID1cbiAgICB8IEJhc2VcbiAgICB8IEphdmFTY3JpcHRUeXBlPEJhc2U+W11cbiAgICB8IE1hcDxKYXZhU2NyaXB0VHlwZTxCYXNlPiwgSmF2YVNjcmlwdFR5cGU8QmFzZT4+O1xuXG50eXBlIEZpbHRlclNhc3NQcmVmaXg8VCBleHRlbmRzIHN0cmluZz4gPSBUIGV4dGVuZHMgYFNhc3Mke2luZmVyIFJ9YCA/IFIgOiBuZXZlcjtcblxudHlwZSBTYXNzVHlwZXMgPSBFeGNsdWRlPGBTYXNzJHtGaWx0ZXJTYXNzUHJlZml4PGtleW9mIHR5cGVvZiBzYXNzPn1gLCBgU2FzcyR7J0Jvb2xlYW4nIHwgJ0NhbGN1bGF0aW9uJ31gPjtcblxuY29uc3QgU2Fzc1R5cGVzID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIE9iamVjdC5rZXlzKHNhc3MpXG4gICAgICAgIC5maWx0ZXIocHJvcGVydHlLZXkgPT4gcHJvcGVydHlLZXkuc3RhcnRzV2l0aCgnU2FzcycpKVxuICAgICAgICAubWFwKHByb3BlcnR5S2V5ID0+IHNhc3NbcHJvcGVydHlLZXkgYXMgU2Fzc1R5cGVzXSlcbiAgICAgICAgLmZpbHRlcihjb25zdHJ1Y3RvciA9PiB0eXBlb2YgY29uc3RydWN0b3IgPT09ICdmdW5jdGlvbicpXG4gICAgICAgIC5maWx0ZXIoY29uc3RydWN0b3IgPT4gT2JqZWN0LnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mLmNhbGwoVmFsdWUucHJvdG90eXBlLCBjb25zdHJ1Y3Rvci5wcm90b3R5cGUpKVxuICAgICAgICAubWFwKGNvbnN0cnVjdG9yID0+IFsgY29uc3RydWN0b3IubmFtZSwgY29uc3RydWN0b3IgXSBhcyBbU2Fzc1R5cGVzLCAodHlwZW9mIHNhc3MpW1Nhc3NUeXBlc11dKVxuKSBhcyB7IFtQIGluIFNhc3NUeXBlc106ICh0eXBlb2Ygc2FzcylbUF0gfTtcblxuZXhwb3J0IGNvbnN0IFNhc3NUUlVFID0gc2Fzcy5zYXNzVHJ1ZTtcbmV4cG9ydCB0eXBlIFNhc3NUUlVFID0gdHlwZW9mIFNhc3NUUlVFO1xuXG5leHBvcnQgY29uc3QgU2Fzc0ZBTFNFID0gc2Fzcy5zYXNzRmFsc2U7XG5leHBvcnQgdHlwZSBTYXNzRkFMU0UgPSB0eXBlb2YgU2Fzc0ZBTFNFO1xuXG5leHBvcnQgY29uc3QgU2Fzc05VTEwgPSBzYXNzLnNhc3NOdWxsO1xuZXhwb3J0IHR5cGUgU2Fzc05VTEwgPSB0eXBlb2YgU2Fzc05VTEw7XG5cbmV4cG9ydCBjb25zdCB7IFNhc3NOdW1iZXIgfSA9IFNhc3NUeXBlcztcbmV4cG9ydCB0eXBlIFNhc3NOdW1iZXIgPSBJbnN0YW5jZVR5cGU8dHlwZW9mIFNhc3NOdW1iZXI+O1xuXG5leHBvcnQgY29uc3QgeyBTYXNzU3RyaW5nIH0gPSBTYXNzVHlwZXM7XG5leHBvcnQgdHlwZSBTYXNzU3RyaW5nID0gSW5zdGFuY2VUeXBlPHR5cGVvZiBTYXNzU3RyaW5nPjtcblxuZXhwb3J0IGNvbnN0IHsgU2Fzc0NvbG9yIH0gPSBTYXNzVHlwZXM7XG5leHBvcnQgdHlwZSBTYXNzQ29sb3IgPSBJbnN0YW5jZVR5cGU8dHlwZW9mIFNhc3NDb2xvcj47XG5cbmV4cG9ydCBjb25zdCB7IFNhc3NMaXN0IH0gPSBTYXNzVHlwZXM7XG5leHBvcnQgdHlwZSBTYXNzTGlzdCA9IEluc3RhbmNlVHlwZTx0eXBlb2YgU2Fzc0xpc3Q+O1xuXG5leHBvcnQgY29uc3QgeyBTYXNzTWFwIH0gPSBTYXNzVHlwZXM7XG5leHBvcnQgdHlwZSBTYXNzTWFwID0gSW5zdGFuY2VUeXBlPHR5cGVvZiBTYXNzTWFwPjtcblxuZXhwb3J0IGNvbnN0IFNhc3NCb29sZWFuID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKFNhc3NUUlVFKS5jb25zdHJ1Y3RvciBhcyB0eXBlb2Ygc2Fzcy5TYXNzQm9vbGVhbjtcbmV4cG9ydCB0eXBlIFNhc3NCb29sZWFuID0gc2Fzcy5TYXNzQm9vbGVhbjtcblxuZXhwb3J0IHR5cGUgU2Fzc1R5cGUgPVxuICAgIHwgSW5zdGFuY2VUeXBlPHR5cGVvZiBTYXNzVHlwZXMgZXh0ZW5kcyBSZWNvcmQ8YW55LCBpbmZlciBSPiA/IFIgOiBuZXZlcj5cbiAgICB8IFNhc3NCb29sZWFuO1xuIiwiLy8gVGhpcmQtcGFydHkgbW9kdWxlcy5cbmltcG9ydCBjaHJvbWEgZnJvbSAnY2hyb21hLWpzJztcblxuLy8gTG9jYWwgaGVscGVycy5cbmltcG9ydCB7XG4gICAgdHlwZSBTYXNzVHlwZSxcbiAgICBTYXNzQm9vbGVhbixcbiAgICBTYXNzTnVtYmVyLFxuICAgIFNhc3NTdHJpbmcsXG4gICAgU2Fzc0NvbG9yLFxuICAgIFNhc3NMaXN0LFxuICAgIFNhc3NNYXAsXG4gICAgU2Fzc1RSVUUsXG4gICAgU2Fzc0ZBTFNFLFxuICAgIFNhc3NOVUxMLFxuICAgIHR5cGUgSmF2YVNjcmlwdFR5cGUsXG4gICAgdHlwZSBOdW1iZXJXaXRoVW5pdFxufSBmcm9tICcuL3R5cGVzJztcblxuLy8gSGVscGVyIGZ1bmN0aW9ucy5cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlPzogdW5rbm93bik6IHZhbHVlIGlzIG9iamVjdCB7XG4gICAgY29uc3QgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcblxuICAgIHJldHVybiAhIXZhbHVlICYmICh0eXBlID09PSAnb2JqZWN0JyB8fCB0eXBlID09PSAnZnVuY3Rpb24nKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNhc3NUb0phdmFTY3JpcHRUeXBlKHNhc3NWYWx1ZTogU2Fzc1R5cGUpOiBKYXZhU2NyaXB0VHlwZSB7XG4gICAgc3dpdGNoICh0cnVlKSB7XG4gICAgY2FzZSBzYXNzVmFsdWUgaW5zdGFuY2VvZiBTYXNzQm9vbGVhbjoge1xuICAgICAgICByZXR1cm4gc2Fzc1ZhbHVlLnZhbHVlO1xuICAgIH1cblxuICAgIGNhc2Ugc2Fzc1ZhbHVlIGluc3RhbmNlb2YgU2Fzc1N0cmluZzoge1xuICAgICAgICByZXR1cm4gc2Fzc1ZhbHVlLnRleHQ7XG4gICAgfVxuXG4gICAgY2FzZSBzYXNzVmFsdWUgaW5zdGFuY2VvZiBTYXNzTnVtYmVyOiB7XG4gICAgICAgIGNvbnN0IHsgdmFsdWUsIG51bWVyYXRvclVuaXRzLCBkZW5vbWluYXRvclVuaXRzIH0gPSBzYXNzVmFsdWU7XG5cbiAgICAgICAgY29uc3QgdW5pdCA9IHNhc3NWYWx1ZS5oYXNVbml0c1xuICAgICAgICAgICAgPyBudW1lcmF0b3JVbml0cy5qb2luKCcqJykgKyAoZGVub21pbmF0b3JVbml0cy5zaXplID4gMCA/IGAvJHtkZW5vbWluYXRvclVuaXRzLmpvaW4oJyonKX1gIDogJycpXG4gICAgICAgICAgICA6ICcnO1xuXG4gICAgICAgIHJldHVybiB1bml0ID8geyB2YWx1ZSwgdW5pdCB9IDogdmFsdWU7XG4gICAgfVxuXG4gICAgY2FzZSBzYXNzVmFsdWUgaW5zdGFuY2VvZiBTYXNzQ29sb3I6IHtcbiAgICAgICAgY29uc3QgeyByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSB9ID0gc2Fzc1ZhbHVlO1xuXG4gICAgICAgIHJldHVybiBjaHJvbWEocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpO1xuICAgIH1cblxuICAgIGNhc2Ugc2Fzc1ZhbHVlIGluc3RhbmNlb2YgU2Fzc0xpc3Q6IHtcbiAgICAgICAgY29uc3QgbGlzdFZhbHVlID0gc2Fzc1ZhbHVlLmFzTGlzdDtcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gbGlzdFZhbHVlLnNpemU7XG4gICAgICAgIGNvbnN0IGFycmF5ID0gQXJyYXkobGVuZ3RoKS5maWxsKHVuZGVmaW5lZCkgYXMgU2Fzc1R5cGVbXTtcblxuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgICAgICAgICBhcnJheVtpbmRleF0gPSBsaXN0VmFsdWUuZ2V0KGluZGV4KSBhcyBTYXNzVHlwZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhcnJheS5tYXAodmFsdWUgPT4gc2Fzc1RvSmF2YVNjcmlwdFR5cGUodmFsdWUpKTtcbiAgICB9XG5cbiAgICBjYXNlIHNhc3NWYWx1ZSBpbnN0YW5jZW9mIFNhc3NNYXA6IHtcbiAgICAgICAgY29uc3QgbWFwVmFsdWUgPSBzYXNzVmFsdWUuY29udGVudHM7XG5cbiAgICAgICAgY29uc3QgZW50cmllcyA9IEFycmF5LmZyb20obWFwVmFsdWUuZW50cmllcygpIGFzIEl0ZXJhYmxlSXRlcmF0b3I8W1Nhc3NUeXBlLCBTYXNzVHlwZV0+KVxuICAgICAgICAgICAgLm1hcCgoWyBrZXksIHZhbHVlIF0pID0+IFsgc2Fzc1RvSmF2YVNjcmlwdFR5cGUoa2V5KSwgc2Fzc1RvSmF2YVNjcmlwdFR5cGUodmFsdWUpIF0pO1xuXG4gICAgICAgIHJldHVybiBuZXcgTWFwKGVudHJpZXMgYXMgW0phdmFTY3JpcHRUeXBlLCBKYXZhU2NyaXB0VHlwZV1bXSk7XG4gICAgfVxuXG4gICAgZGVmYXVsdDoge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gamF2YVNjcmlwdFRvU2Fzc1R5cGUocmF3VmFsdWU6IEphdmFTY3JpcHRUeXBlKTogU2Fzc1R5cGUge1xuICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgIGNhc2UgdHlwZW9mIHJhd1ZhbHVlID09PSAnYm9vbGVhbic6IHtcbiAgICAgICAgY29uc3QgYm9vbGVhblZhbHVlID0gcmF3VmFsdWU7XG5cbiAgICAgICAgcmV0dXJuIGJvb2xlYW5WYWx1ZSA/IFNhc3NUUlVFIDogU2Fzc0ZBTFNFO1xuICAgIH1cblxuICAgIGNhc2UgdHlwZW9mIHJhd1ZhbHVlID09PSAnbnVtYmVyJzoge1xuICAgICAgICBjb25zdCBudW1iZXJWYWx1ZSA9IHJhd1ZhbHVlO1xuXG4gICAgICAgIHJldHVybiBuZXcgU2Fzc051bWJlcihudW1iZXJWYWx1ZSk7XG4gICAgfVxuXG4gICAgY2FzZSBpc09iamVjdChyYXdWYWx1ZSkgJiYgWyAndmFsdWUnLCAndW5pdCcgXS5ldmVyeShwcm9wZXJ0eUtleSA9PiBwcm9wZXJ0eUtleSBpbiByYXdWYWx1ZSk6IHtcbiAgICAgICAgY29uc3QgeyB2YWx1ZSwgdW5pdCB9ID0gcmF3VmFsdWUgYXMgTnVtYmVyV2l0aFVuaXQ7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBTYXNzTnVtYmVyKHZhbHVlLCB1bml0KTtcbiAgICB9XG5cbiAgICBjYXNlIHR5cGVvZiByYXdWYWx1ZSA9PT0gJ3N0cmluZyc6IHtcbiAgICAgICAgY29uc3Qgc3RyaW5nVmFsdWUgPSByYXdWYWx1ZTtcblxuICAgICAgICByZXR1cm4gbmV3IFNhc3NTdHJpbmcoc3RyaW5nVmFsdWUpO1xuICAgIH1cblxuICAgIGNhc2UgaXNPYmplY3QocmF3VmFsdWUpICYmICdfcmdiJyBpbiByYXdWYWx1ZToge1xuICAgICAgICBjb25zdCBbIHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhIF0gPSByYXdWYWx1ZS5yZ2JhKCkgYXMgbnVtYmVyW107XG5cbiAgICAgICAgcmV0dXJuIG5ldyBTYXNzQ29sb3IoeyByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSB9KTtcbiAgICB9XG5cbiAgICBjYXNlIEFycmF5LmlzQXJyYXkocmF3VmFsdWUpOiB7XG4gICAgICAgIHJldHVybiBuZXcgU2Fzc0xpc3QocmF3VmFsdWUubWFwKHZhbHVlID0+IGphdmFTY3JpcHRUb1Nhc3NUeXBlKHZhbHVlKSkpO1xuICAgIH1cblxuICAgIGNhc2UgcmF3VmFsdWUgaW5zdGFuY2VvZiBNYXA6IHtcbiAgICAgICAgY29uc3QgbWFwVmFsdWUgPSByYXdWYWx1ZSBhcyBNYXA8SmF2YVNjcmlwdFR5cGUsIEphdmFTY3JpcHRUeXBlPjtcbiAgICAgICAgY29uc3Qgc2Fzc01hcCA9IG5ldyBTYXNzTWFwKCk7XG5cbiAgICAgICAgY29uc3QgY29udmVydGVkID0gQXJyYXkuZnJvbShtYXBWYWx1ZS5lbnRyaWVzKCkpXG4gICAgICAgICAgICAubWFwKGVudHJ5ID0+IGVudHJ5Lm1hcChqYXZhU2NyaXB0VG9TYXNzVHlwZSkpIGFzIFtTYXNzVHlwZSwgU2Fzc1R5cGVdW107XG5cbiAgICAgICAgZm9yIChjb25zdCBbIGtleSwgdmFsdWUgXSBvZiBjb252ZXJ0ZWQpIHtcbiAgICAgICAgICAgIHNhc3NNYXAuY29udGVudHMuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNhc3NNYXA7XG4gICAgfVxuXG4gICAgZGVmYXVsdDoge1xuICAgICAgICByZXR1cm4gU2Fzc05VTEw7XG4gICAgfVxuICAgIH1cbn1cbiIsImltcG9ydCAncmVmbGVjdC1tZXRhZGF0YSc7XG5cbi8vIFRoaXJkLXBhcnR5IG1vZHVsZXMuXG5pbXBvcnQgeyBDdXN0b21GdW5jdGlvbiB9IGZyb20gJ3Nhc3MnO1xuXG4vLyBMb2NhbCBoZWxwZXJzLlxuaW1wb3J0IHR5cGUgeyBTYXNzVHlwZSwgSmF2YVNjcmlwdFR5cGUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IHNhc3NUb0phdmFTY3JpcHRUeXBlLCBqYXZhU2NyaXB0VG9TYXNzVHlwZSB9IGZyb20gJy4vdHlwZS1jb252ZXJ0ZXInO1xuXG4vLyBUeXBlIGRlZmluaXRpb25zLlxuZXhwb3J0IGludGVyZmFjZSBCcmlkZ2VkRnVuY3Rpb24ge1xuICAgIGV4ZWN1dGUoKTogSmF2YVNjcmlwdFR5cGUgfCBQcm9taXNlPEphdmFTY3JpcHRUeXBlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb25zdHJ1Y3RvciB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IEJyaWRnZWRGdW5jdGlvbjtcbn1cblxuLy8gQ29uc3RhbnRzLlxuY29uc3QgS2V5T2ZTaWduYXR1cmUgPSBTeW1ib2woJ0BjaWNob2wvc2Fzcy1icmlkZ2U6OktleU9mU2lnbmF0dXJlJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBzYXNzRnVuY3Rpb24oZGVmaW5pdGlvbjogc3RyaW5nKTogQ2xhc3NEZWNvcmF0b3Ige1xuICAgIHJldHVybiAoPFQgZXh0ZW5kcyBDb25zdHJ1Y3Rvcj4odGFyZ2V0OiBUKSA9PiB7XG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoS2V5T2ZTaWduYXR1cmUsIGRlZmluaXRpb24sIHRhcmdldCk7XG5cbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9KSBhcyBDbGFzc0RlY29yYXRvcjtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEZ1bmN0aW9ucyhcbiAgICAuLi5tb2R1bGVJbXBvcnRzOiBQcm9taXNlPHsgZGVmYXVsdDogQ29uc3RydWN0b3IgfT5bXVxuKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBDdXN0b21GdW5jdGlvbjwnYXN5bmMnPj4+IHtcbiAgICBjb25zdCBtb2R1bGVzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIG1vZHVsZUltcG9ydHMubWFwKG1vZHVsZSA9PiAoXG4gICAgICAgICAgICBQcm9taXNlLnJlc29sdmUobW9kdWxlKVxuICAgICAgICAgICAgICAgIC50aGVuKG1vZHVsZSA9PiBtb2R1bGUuZGVmYXVsdClcbiAgICAgICAgKSlcbiAgICApO1xuXG4gICAgY29uc3QgZW50cmllcyA9IG1vZHVsZXMubWFwKG1vZHVsZSA9PiB7XG4gICAgICAgIGNvbnN0IHNpZ25hdHVyZSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoS2V5T2ZTaWduYXR1cmUsIG1vZHVsZSkgYXMgc3RyaW5nO1xuXG4gICAgICAgIGFzeW5jIGZ1bmN0aW9uIGN1c3RvbUZ1bmN0aW9uKHJhd0FyZ3M6IFNhc3NUeXBlW10pOiBQcm9taXNlPFNhc3NUeXBlPiB7XG4gICAgICAgICAgICBjb25zdCBhcmdzID0gcmF3QXJncy5tYXAoc2Fzc1RvSmF2YVNjcmlwdFR5cGUpO1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUmVmbGVjdC5jb25zdHJ1Y3QobW9kdWxlLCBhcmdzKS5leGVjdXRlKCk7XG5cbiAgICAgICAgICAgIHJldHVybiBqYXZhU2NyaXB0VG9TYXNzVHlwZShyZXN1bHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFsgc2lnbmF0dXJlLCBjdXN0b21GdW5jdGlvbiBdIGFzIGNvbnN0O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhlbnRyaWVzKTtcbn1cbiJdLCJuYW1lcyI6WyJTYXNzVHlwZXMiLCJfT2JqZWN0JGZyb21FbnRyaWVzIiwiX21hcEluc3RhbmNlUHJvcGVydHkiLCJfY29udGV4dCIsIl9maWx0ZXJJbnN0YW5jZVByb3BlcnR5IiwiX2NvbnRleHQyIiwiX2NvbnRleHQzIiwiX2NvbnRleHQ0IiwiX2NvbnRleHQ1IiwiX09iamVjdCRrZXlzIiwic2FzcyIsImNhbGwiLCJwcm9wZXJ0eUtleSIsIl9zdGFydHNXaXRoSW5zdGFuY2VQcm9wZXJ0eSIsImNvbnN0cnVjdG9yIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaXNQcm90b3R5cGVPZiIsIlZhbHVlIiwibmFtZSIsIlNhc3NUUlVFIiwic2Fzc1RydWUiLCJTYXNzRkFMU0UiLCJzYXNzRmFsc2UiLCJTYXNzTlVMTCIsInNhc3NOdWxsIiwiU2Fzc051bWJlciIsIlNhc3NTdHJpbmciLCJTYXNzQ29sb3IiLCJTYXNzTGlzdCIsIlNhc3NNYXAiLCJTYXNzQm9vbGVhbiIsIl9PYmplY3QkZ2V0UHJvdG90eXBlT2YiLCJpc09iamVjdCIsInZhbHVlIiwidHlwZSIsInNhc3NUb0phdmFTY3JpcHRUeXBlIiwic2Fzc1ZhbHVlIiwidGV4dCIsIm51bWVyYXRvclVuaXRzIiwiZGVub21pbmF0b3JVbml0cyIsInVuaXQiLCJoYXNVbml0cyIsImpvaW4iLCJzaXplIiwicmVkIiwiZ3JlZW4iLCJibHVlIiwiYWxwaGEiLCJjaHJvbWEiLCJsaXN0VmFsdWUiLCJhc0xpc3QiLCJsZW5ndGgiLCJhcnJheSIsIl9maWxsSW5zdGFuY2VQcm9wZXJ0eSIsIkFycmF5IiwidW5kZWZpbmVkIiwiaW5kZXgiLCJnZXQiLCJtYXBWYWx1ZSIsImNvbnRlbnRzIiwiZW50cmllcyIsIl9BcnJheSRmcm9tIiwiX2VudHJpZXNJbnN0YW5jZVByb3BlcnR5Iiwia2V5IiwiX01hcCIsImphdmFTY3JpcHRUb1Nhc3NUeXBlIiwicmF3VmFsdWUiLCJib29sZWFuVmFsdWUiLCJudW1iZXJWYWx1ZSIsIl9ldmVyeUluc3RhbmNlUHJvcGVydHkiLCJzdHJpbmdWYWx1ZSIsInJnYmEiLCJfQXJyYXkkaXNBcnJheSIsInNhc3NNYXAiLCJjb252ZXJ0ZWQiLCJlbnRyeSIsInNldCIsIktleU9mU2lnbmF0dXJlIiwiX1N5bWJvbCIsInNhc3NGdW5jdGlvbiIsImRlZmluaXRpb24iLCJ0YXJnZXQiLCJSZWZsZWN0IiwiZGVmaW5lTWV0YWRhdGEiLCJnZXRGdW5jdGlvbnMiLCJtb2R1bGVJbXBvcnRzIiwibW9kdWxlcyIsIl9Qcm9taXNlIiwiYWxsIiwibW9kdWxlIiwicmVzb2x2ZSIsInRoZW4iLCJkZWZhdWx0Iiwic2lnbmF0dXJlIiwiZ2V0TWV0YWRhdGEiLCJjdXN0b21GdW5jdGlvbiIsInJhd0FyZ3MiLCJhcmdzIiwicmVzdWx0IiwiX1JlZmxlY3QkY29uc3RydWN0IiwiZXhlY3V0ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUtBOztBQWNBLE1BQU1BLFNBQVMsR0FBR0MsbUJB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
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Color } from 'chroma-js';
|
|
2
|
+
import * as sass from 'sass';
|
|
3
|
+
export type Primitives = boolean | number | string | null;
|
|
4
|
+
export type NumberWithUnit = {
|
|
5
|
+
value: number;
|
|
6
|
+
unit: string;
|
|
7
|
+
};
|
|
8
|
+
export type JavaScriptType<Base = Primitives | Color | NumberWithUnit> = Base | JavaScriptType<Base>[] | Map<JavaScriptType<Base>, JavaScriptType<Base>>;
|
|
9
|
+
type FilterSassPrefix<T extends string> = T extends `Sass${infer R}` ? R : never;
|
|
10
|
+
type SassTypes = Exclude<`Sass${FilterSassPrefix<keyof typeof sass>}`, `Sass${'Boolean' | 'Calculation'}`>;
|
|
11
|
+
declare const SassTypes: { [P in SassTypes]: (typeof sass)[P]; };
|
|
12
|
+
export declare const SassTRUE: sass.SassBoolean;
|
|
13
|
+
export type SassTRUE = typeof SassTRUE;
|
|
14
|
+
export declare const SassFALSE: sass.SassBoolean;
|
|
15
|
+
export type SassFALSE = typeof SassFALSE;
|
|
16
|
+
export declare const SassNULL: sass.Value;
|
|
17
|
+
export type SassNULL = typeof SassNULL;
|
|
18
|
+
export declare const SassNumber: typeof sass.SassNumber;
|
|
19
|
+
export type SassNumber = InstanceType<typeof SassNumber>;
|
|
20
|
+
export declare const SassString: typeof sass.SassString;
|
|
21
|
+
export type SassString = InstanceType<typeof SassString>;
|
|
22
|
+
export declare const SassColor: typeof sass.SassColor;
|
|
23
|
+
export type SassColor = InstanceType<typeof SassColor>;
|
|
24
|
+
export declare const SassList: typeof sass.SassList;
|
|
25
|
+
export type SassList = InstanceType<typeof SassList>;
|
|
26
|
+
export declare const SassMap: typeof sass.SassMap;
|
|
27
|
+
export type SassMap = InstanceType<typeof SassMap>;
|
|
28
|
+
export declare const SassBoolean: typeof sass.SassBoolean;
|
|
29
|
+
export type SassBoolean = sass.SassBoolean;
|
|
30
|
+
export type SassType = InstanceType<typeof SassTypes extends Record<any, infer R> ? R : never> | SassBoolean;
|
|
31
|
+
export {};
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { Color } from 'chroma-js';
|
|
2
2
|
import * as sass from 'sass';
|
|
3
|
-
export type Primitives = boolean | number | string;
|
|
3
|
+
export type Primitives = boolean | number | string | null;
|
|
4
4
|
export type NumberWithUnit = {
|
|
5
5
|
value: number;
|
|
6
6
|
unit: string;
|
|
7
7
|
};
|
|
8
|
-
export type JavaScriptType<Base = Primitives | Color | NumberWithUnit
|
|
8
|
+
export type JavaScriptType<Base = Primitives | Color | NumberWithUnit> = Base | JavaScriptType<Base>[] | Map<JavaScriptType<Base>, JavaScriptType<Base>>;
|
|
9
9
|
type FilterSassPrefix<T extends string> = T extends `Sass${infer R}` ? R : never;
|
|
10
10
|
type SassTypes = Exclude<`Sass${FilterSassPrefix<keyof typeof sass>}`, `Sass${'Boolean' | 'Calculation'}`>;
|
|
11
11
|
declare const SassTypes: { [P in SassTypes]: (typeof sass)[P]; };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cichol/sass-bridge",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.5.0",
|
|
4
4
|
"description": "A bridge interface to define Sass custom functions.",
|
|
5
5
|
"homepage": "https://github.com/morrighan/packages",
|
|
6
6
|
"bugs": {
|
|
@@ -13,15 +13,21 @@
|
|
|
13
13
|
"url": "https://www.cichol.com/"
|
|
14
14
|
},
|
|
15
15
|
"type": "module",
|
|
16
|
-
"main": "
|
|
17
|
-
"module": "
|
|
18
|
-
"types": "
|
|
19
|
-
"directories": {
|
|
20
|
-
"lib": "releases"
|
|
21
|
-
},
|
|
16
|
+
"main": "./dists/index.cjs",
|
|
17
|
+
"module": "./dists/index.js",
|
|
18
|
+
"types": "./dists/index.d.ts",
|
|
22
19
|
"exports": {
|
|
23
|
-
"
|
|
24
|
-
|
|
20
|
+
".": {
|
|
21
|
+
"import": {
|
|
22
|
+
"default": "./dists/index.js",
|
|
23
|
+
"types": "./dists/index.d.ts"
|
|
24
|
+
},
|
|
25
|
+
"require": {
|
|
26
|
+
"default": "./dists/index.cjs",
|
|
27
|
+
"types": "./dists/index.d.cts"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"./package.json": "./package.json"
|
|
25
31
|
},
|
|
26
32
|
"repository": {
|
|
27
33
|
"type": "git",
|
|
@@ -30,13 +36,16 @@
|
|
|
30
36
|
},
|
|
31
37
|
"scripts": {
|
|
32
38
|
"build": "npm run build:tsc",
|
|
33
|
-
"build:tsc": "npx tsc --project sources --outDir
|
|
39
|
+
"build:tsc": "npx tsc --project sources --outDir dists"
|
|
34
40
|
},
|
|
35
41
|
"dependencies": {
|
|
36
42
|
"chroma-js": "^3.1.2",
|
|
37
|
-
"core-js-pure": "^3.
|
|
43
|
+
"core-js-pure": "^3.39.0",
|
|
38
44
|
"reflect-metadata": "^0.2.2",
|
|
39
|
-
"sass": "npm:sass-embedded@^1.
|
|
45
|
+
"sass": "npm:sass-embedded@^1.82.0"
|
|
46
|
+
},
|
|
47
|
+
"devDependencies": {
|
|
48
|
+
"@cichol/sass-bridge": "file:."
|
|
40
49
|
},
|
|
41
50
|
"engines": {
|
|
42
51
|
"node": "^20.18.0",
|
package/releases/cjs.js
DELETED
|
@@ -1,212 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var _Symbol = require('core-js-pure/stable/symbol/index.js');
|
|
4
|
-
var _Promise = require('core-js-pure/stable/promise/index.js');
|
|
5
|
-
var _mapInstanceProperty = require('core-js-pure/stable/instance/map.js');
|
|
6
|
-
var _Reflect$construct = require('core-js-pure/stable/reflect/construct.js');
|
|
7
|
-
var _Object$fromEntries = require('core-js-pure/stable/object/from-entries.js');
|
|
8
|
-
require('reflect-metadata');
|
|
9
|
-
var _fillInstanceProperty = require('core-js-pure/stable/instance/fill.js');
|
|
10
|
-
var _Array$from = require('core-js-pure/stable/array/from.js');
|
|
11
|
-
var _entriesInstanceProperty = require('core-js-pure/stable/instance/entries.js');
|
|
12
|
-
var _Map = require('core-js-pure/stable/map/index.js');
|
|
13
|
-
var _everyInstanceProperty = require('core-js-pure/stable/instance/every.js');
|
|
14
|
-
var _Array$isArray = require('core-js-pure/stable/array/is-array.js');
|
|
15
|
-
var chroma = require('chroma-js');
|
|
16
|
-
var _filterInstanceProperty = require('core-js-pure/stable/instance/filter.js');
|
|
17
|
-
var _Object$keys = require('core-js-pure/stable/object/keys.js');
|
|
18
|
-
var _startsWithInstanceProperty = require('core-js-pure/stable/instance/starts-with.js');
|
|
19
|
-
var _Object$getPrototypeOf = require('core-js-pure/stable/object/get-prototype-of.js');
|
|
20
|
-
var sass = require('sass');
|
|
21
|
-
|
|
22
|
-
function _interopNamespaceDefault(e) {
|
|
23
|
-
var n = Object.create(null);
|
|
24
|
-
if (e) {
|
|
25
|
-
Object.keys(e).forEach(function (k) {
|
|
26
|
-
if (k !== 'default') {
|
|
27
|
-
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
28
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
29
|
-
enumerable: true,
|
|
30
|
-
get: function () { return e[k]; }
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
n.default = e;
|
|
36
|
-
return Object.freeze(n);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
var sass__namespace = /*#__PURE__*/_interopNamespaceDefault(sass);
|
|
40
|
-
|
|
41
|
-
var _context, _context2, _context3, _context4, _context5;
|
|
42
|
-
|
|
43
|
-
// Type definitions.
|
|
44
|
-
|
|
45
|
-
const SassTypes = _Object$fromEntries(_mapInstanceProperty(_context = _filterInstanceProperty(_context2 = _filterInstanceProperty(_context3 = _mapInstanceProperty(_context4 = _filterInstanceProperty(_context5 = _Object$keys(sass__namespace)).call(_context5, propertyKey => _startsWithInstanceProperty(propertyKey).call(propertyKey, 'Sass'))).call(_context4, propertyKey => sass__namespace[propertyKey])).call(_context3, constructor => typeof constructor === 'function')).call(_context2, constructor => Object.prototype.isPrototypeOf.call(sass.Value.prototype, constructor.prototype))).call(_context, constructor => [constructor.name, constructor]));
|
|
46
|
-
const SassTRUE = sass__namespace.sassTrue;
|
|
47
|
-
const SassFALSE = sass__namespace.sassFalse;
|
|
48
|
-
const SassNULL = sass__namespace.sassNull;
|
|
49
|
-
const {
|
|
50
|
-
SassNumber
|
|
51
|
-
} = SassTypes;
|
|
52
|
-
const {
|
|
53
|
-
SassString
|
|
54
|
-
} = SassTypes;
|
|
55
|
-
const {
|
|
56
|
-
SassColor
|
|
57
|
-
} = SassTypes;
|
|
58
|
-
const {
|
|
59
|
-
SassList
|
|
60
|
-
} = SassTypes;
|
|
61
|
-
const {
|
|
62
|
-
SassMap
|
|
63
|
-
} = SassTypes;
|
|
64
|
-
const SassBoolean = _Object$getPrototypeOf(SassTRUE).constructor;
|
|
65
|
-
|
|
66
|
-
// Helper functions.
|
|
67
|
-
function isObject(value) {
|
|
68
|
-
const type = typeof value;
|
|
69
|
-
return !!value && (type === 'object' || type === 'function');
|
|
70
|
-
}
|
|
71
|
-
function sassToJavaScriptType(sassValue) {
|
|
72
|
-
switch (true) {
|
|
73
|
-
case sassValue instanceof SassBoolean:
|
|
74
|
-
{
|
|
75
|
-
return sassValue.value;
|
|
76
|
-
}
|
|
77
|
-
case sassValue instanceof SassString:
|
|
78
|
-
{
|
|
79
|
-
return sassValue.text;
|
|
80
|
-
}
|
|
81
|
-
case sassValue instanceof SassNumber:
|
|
82
|
-
{
|
|
83
|
-
const {
|
|
84
|
-
value,
|
|
85
|
-
numeratorUnits,
|
|
86
|
-
denominatorUnits
|
|
87
|
-
} = sassValue;
|
|
88
|
-
const unit = sassValue.hasUnits ? numeratorUnits.join('*') + (denominatorUnits.size > 0 ? `/${denominatorUnits.join('*')}` : '') : '';
|
|
89
|
-
return unit ? {
|
|
90
|
-
value,
|
|
91
|
-
unit
|
|
92
|
-
} : value;
|
|
93
|
-
}
|
|
94
|
-
case sassValue instanceof SassColor:
|
|
95
|
-
{
|
|
96
|
-
const {
|
|
97
|
-
red,
|
|
98
|
-
green,
|
|
99
|
-
blue,
|
|
100
|
-
alpha
|
|
101
|
-
} = sassValue;
|
|
102
|
-
return chroma(red, green, blue, alpha);
|
|
103
|
-
}
|
|
104
|
-
case sassValue instanceof SassList:
|
|
105
|
-
{
|
|
106
|
-
var _context;
|
|
107
|
-
const listValue = sassValue.asList;
|
|
108
|
-
const length = listValue.size;
|
|
109
|
-
const array = _fillInstanceProperty(_context = Array(length)).call(_context, undefined);
|
|
110
|
-
for (let index = 0; index < length; index += 1) {
|
|
111
|
-
array[index] = listValue.get(index);
|
|
112
|
-
}
|
|
113
|
-
return _mapInstanceProperty(array).call(array, value => sassToJavaScriptType(value));
|
|
114
|
-
}
|
|
115
|
-
case sassValue instanceof SassMap:
|
|
116
|
-
{
|
|
117
|
-
var _context2;
|
|
118
|
-
const mapValue = sassValue.contents;
|
|
119
|
-
const entries = _mapInstanceProperty(_context2 = _Array$from(_entriesInstanceProperty(mapValue).call(mapValue))).call(_context2, ([key, value]) => [sassToJavaScriptType(key), sassToJavaScriptType(value)]);
|
|
120
|
-
return new _Map(entries);
|
|
121
|
-
}
|
|
122
|
-
default:
|
|
123
|
-
{
|
|
124
|
-
return null;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
function javaScriptToSassType(rawValue) {
|
|
129
|
-
var _context3;
|
|
130
|
-
switch (true) {
|
|
131
|
-
case typeof rawValue === 'boolean':
|
|
132
|
-
{
|
|
133
|
-
const booleanValue = rawValue;
|
|
134
|
-
return booleanValue ? SassTRUE : SassFALSE;
|
|
135
|
-
}
|
|
136
|
-
case typeof rawValue === 'number':
|
|
137
|
-
{
|
|
138
|
-
const numberValue = rawValue;
|
|
139
|
-
return new SassNumber(numberValue);
|
|
140
|
-
}
|
|
141
|
-
case isObject(rawValue) && _everyInstanceProperty(_context3 = ['value', 'unit']).call(_context3, propertyKey => propertyKey in rawValue):
|
|
142
|
-
{
|
|
143
|
-
const {
|
|
144
|
-
value,
|
|
145
|
-
unit
|
|
146
|
-
} = rawValue;
|
|
147
|
-
return new SassNumber(value, unit);
|
|
148
|
-
}
|
|
149
|
-
case typeof rawValue === 'string':
|
|
150
|
-
{
|
|
151
|
-
const stringValue = rawValue;
|
|
152
|
-
return new SassString(stringValue);
|
|
153
|
-
}
|
|
154
|
-
case isObject(rawValue) && '_rgb' in rawValue:
|
|
155
|
-
{
|
|
156
|
-
const [red, green, blue, alpha] = rawValue.rgba();
|
|
157
|
-
return new SassColor({
|
|
158
|
-
red,
|
|
159
|
-
green,
|
|
160
|
-
blue,
|
|
161
|
-
alpha
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
case _Array$isArray(rawValue):
|
|
165
|
-
{
|
|
166
|
-
return new SassList(_mapInstanceProperty(rawValue).call(rawValue, value => javaScriptToSassType(value)));
|
|
167
|
-
}
|
|
168
|
-
case rawValue instanceof _Map:
|
|
169
|
-
{
|
|
170
|
-
var _context4;
|
|
171
|
-
const mapValue = rawValue;
|
|
172
|
-
const sassMap = new SassMap();
|
|
173
|
-
const converted = _mapInstanceProperty(_context4 = _Array$from(_entriesInstanceProperty(mapValue).call(mapValue))).call(_context4, entry => _mapInstanceProperty(entry).call(entry, javaScriptToSassType));
|
|
174
|
-
for (const [key, value] of converted) {
|
|
175
|
-
sassMap.contents.set(key, value);
|
|
176
|
-
}
|
|
177
|
-
return sassMap;
|
|
178
|
-
}
|
|
179
|
-
default:
|
|
180
|
-
{
|
|
181
|
-
return SassNULL;
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
// Type definitions.
|
|
187
|
-
|
|
188
|
-
// Constants.
|
|
189
|
-
const KeyOfSignature = _Symbol('@cichol/sass-bridge::KeyOfSignature');
|
|
190
|
-
function sassFunction(definition) {
|
|
191
|
-
return target => {
|
|
192
|
-
Reflect.defineMetadata(KeyOfSignature, definition, target);
|
|
193
|
-
return target;
|
|
194
|
-
};
|
|
195
|
-
}
|
|
196
|
-
async function getFunctions(...moduleImports) {
|
|
197
|
-
const modules = await _Promise.all(_mapInstanceProperty(moduleImports).call(moduleImports, module => _Promise.resolve(module).then(module => module.default)));
|
|
198
|
-
const entries = _mapInstanceProperty(modules).call(modules, module => {
|
|
199
|
-
const signature = Reflect.getMetadata(KeyOfSignature, module);
|
|
200
|
-
async function customFunction(rawArgs) {
|
|
201
|
-
const args = _mapInstanceProperty(rawArgs).call(rawArgs, sassToJavaScriptType);
|
|
202
|
-
const result = await _Reflect$construct(module, args).execute();
|
|
203
|
-
return javaScriptToSassType(result);
|
|
204
|
-
}
|
|
205
|
-
return [signature, customFunction];
|
|
206
|
-
});
|
|
207
|
-
return _Object$fromEntries(entries);
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
exports.getFunctions = getFunctions;
|
|
211
|
-
exports.sassFunction = sassFunction;
|
|
212
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2pzLmpzIiwic291cmNlcyI6WyIuLi9zb3VyY2VzL3R5cGVzLnRzIiwiLi4vc291cmNlcy90eXBlLWNvbnZlcnRlci50cyIsIi4uL3NvdXJjZXMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcmQtcGFydHkgbW9kdWxlcy5cbmltcG9ydCB0eXBlIHsgQ29sb3IgfSBmcm9tICdjaHJvbWEtanMnO1xuaW1wb3J0ICogYXMgc2FzcyBmcm9tICdzYXNzJztcbmltcG9ydCB7IFZhbHVlIH0gZnJvbSAnc2Fzcyc7XG5cbi8vIFR5cGUgZGVmaW5pdGlvbnMuXG5leHBvcnQgdHlwZSBQcmltaXRpdmVzID0gYm9vbGVhbiB8IG51bWJlciB8IHN0cmluZztcblxuZXhwb3J0IHR5cGUgTnVtYmVyV2l0aFVuaXQgPSB7IHZhbHVlOiBudW1iZXIsIHVuaXQ6IHN0cmluZyB9O1xuXG5leHBvcnQgdHlwZSBKYXZhU2NyaXB0VHlwZTxCYXNlID0gUHJpbWl0aXZlcyB8IENvbG9yIHwgTnVtYmVyV2l0aFVuaXQgfCBudWxsPiA9XG4gICAgfCBCYXNlXG4gICAgfCBKYXZhU2NyaXB0VHlwZTxCYXNlPltdXG4gICAgfCBNYXA8SmF2YVNjcmlwdFR5cGU8QmFzZT4sIEphdmFTY3JpcHRUeXBlPEJhc2U+PjtcblxudHlwZSBGaWx0ZXJTYXNzUHJlZml4PFQgZXh0ZW5kcyBzdHJpbmc+ID0gVCBleHRlbmRzIGBTYXNzJHtpbmZlciBSfWAgPyBSIDogbmV2ZXI7XG5cbnR5cGUgU2Fzc1R5cGVzID0gRXhjbHVkZTxgU2FzcyR7RmlsdGVyU2Fzc1ByZWZpeDxrZXlvZiB0eXBlb2Ygc2Fzcz59YCwgYFNhc3MkeydCb29sZWFuJyB8ICdDYWxjdWxhdGlvbid9YD47XG5cbmNvbnN0IFNhc3NUeXBlcyA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBPYmplY3Qua2V5cyhzYXNzKVxuICAgICAgICAuZmlsdGVyKHByb3BlcnR5S2V5ID0+IHByb3BlcnR5S2V5LnN0YXJ0c1dpdGgoJ1Nhc3MnKSlcbiAgICAgICAgLm1hcChwcm9wZXJ0eUtleSA9PiBzYXNzW3Byb3BlcnR5S2V5IGFzIFNhc3NUeXBlc10pXG4gICAgICAgIC5maWx0ZXIoY29uc3RydWN0b3IgPT4gdHlwZW9mIGNvbnN0cnVjdG9yID09PSAnZnVuY3Rpb24nKVxuICAgICAgICAuZmlsdGVyKGNvbnN0cnVjdG9yID0+IE9iamVjdC5wcm90b3R5cGUuaXNQcm90b3R5cGVPZi5jYWxsKFZhbHVlLnByb3RvdHlwZSwgY29uc3RydWN0b3IucHJvdG90eXBlKSlcbiAgICAgICAgLm1hcChjb25zdHJ1Y3RvciA9PiBbIGNvbnN0cnVjdG9yLm5hbWUsIGNvbnN0cnVjdG9yIF0gYXMgW1Nhc3NUeXBlcywgKHR5cGVvZiBzYXNzKVtTYXNzVHlwZXNdXSlcbikgYXMgeyBbUCBpbiBTYXNzVHlwZXNdOiAodHlwZW9mIHNhc3MpW1BdIH07XG5cbmV4cG9ydCBjb25zdCBTYXNzVFJVRSA9IHNhc3Muc2Fzc1RydWU7XG5leHBvcnQgdHlwZSBTYXNzVFJVRSA9IHR5cGVvZiBTYXNzVFJVRTtcblxuZXhwb3J0IGNvbnN0IFNhc3NGQUxTRSA9IHNhc3Muc2Fzc0ZhbHNlO1xuZXhwb3J0IHR5cGUgU2Fzc0ZBTFNFID0gdHlwZW9mIFNhc3NGQUxTRTtcblxuZXhwb3J0IGNvbnN0IFNhc3NOVUxMID0gc2Fzcy5zYXNzTnVsbDtcbmV4cG9ydCB0eXBlIFNhc3NOVUxMID0gdHlwZW9mIFNhc3NOVUxMO1xuXG5leHBvcnQgY29uc3QgeyBTYXNzTnVtYmVyIH0gPSBTYXNzVHlwZXM7XG5leHBvcnQgdHlwZSBTYXNzTnVtYmVyID0gSW5zdGFuY2VUeXBlPHR5cGVvZiBTYXNzTnVtYmVyPjtcblxuZXhwb3J0IGNvbnN0IHsgU2Fzc1N0cmluZyB9ID0gU2Fzc1R5cGVzO1xuZXhwb3J0IHR5cGUgU2Fzc1N0cmluZyA9IEluc3RhbmNlVHlwZTx0eXBlb2YgU2Fzc1N0cmluZz47XG5cbmV4cG9ydCBjb25zdCB7IFNhc3NDb2xvciB9ID0gU2Fzc1R5cGVzO1xuZXhwb3J0IHR5cGUgU2Fzc0NvbG9yID0gSW5zdGFuY2VUeXBlPHR5cGVvZiBTYXNzQ29sb3I+O1xuXG5leHBvcnQgY29uc3QgeyBTYXNzTGlzdCB9ID0gU2Fzc1R5cGVzO1xuZXhwb3J0IHR5cGUgU2Fzc0xpc3QgPSBJbnN0YW5jZVR5cGU8dHlwZW9mIFNhc3NMaXN0PjtcblxuZXhwb3J0IGNvbnN0IHsgU2Fzc01hcCB9ID0gU2Fzc1R5cGVzO1xuZXhwb3J0IHR5cGUgU2Fzc01hcCA9IEluc3RhbmNlVHlwZTx0eXBlb2YgU2Fzc01hcD47XG5cbmV4cG9ydCBjb25zdCBTYXNzQm9vbGVhbiA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihTYXNzVFJVRSkuY29uc3RydWN0b3IgYXMgdHlwZW9mIHNhc3MuU2Fzc0Jvb2xlYW47XG5leHBvcnQgdHlwZSBTYXNzQm9vbGVhbiA9IHNhc3MuU2Fzc0Jvb2xlYW47XG5cbmV4cG9ydCB0eXBlIFNhc3NUeXBlID1cbiAgICB8IEluc3RhbmNlVHlwZTx0eXBlb2YgU2Fzc1R5cGVzIGV4dGVuZHMgUmVjb3JkPGFueSwgaW5mZXIgUj4gPyBSIDogbmV2ZXI+XG4gICAgfCBTYXNzQm9vbGVhbjtcbiIsIi8vIFRoaXJkLXBhcnR5IG1vZHVsZXMuXG5pbXBvcnQgY2hyb21hIGZyb20gJ2Nocm9tYS1qcyc7XG5cbi8vIExvY2FsIGhlbHBlcnMuXG5pbXBvcnQge1xuICAgIHR5cGUgU2Fzc1R5cGUsXG4gICAgU2Fzc0Jvb2xlYW4sXG4gICAgU2Fzc051bWJlcixcbiAgICBTYXNzU3RyaW5nLFxuICAgIFNhc3NDb2xvcixcbiAgICBTYXNzTGlzdCxcbiAgICBTYXNzTWFwLFxuICAgIFNhc3NUUlVFLFxuICAgIFNhc3NGQUxTRSxcbiAgICBTYXNzTlVMTCxcbiAgICB0eXBlIEphdmFTY3JpcHRUeXBlLFxuICAgIHR5cGUgTnVtYmVyV2l0aFVuaXRcbn0gZnJvbSAnLi90eXBlcyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbnMuXG5mdW5jdGlvbiBpc09iamVjdCh2YWx1ZT86IHVua25vd24pOiB2YWx1ZSBpcyBvYmplY3Qge1xuICAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgdmFsdWU7XG5cbiAgICByZXR1cm4gISF2YWx1ZSAmJiAodHlwZSA9PT0gJ29iamVjdCcgfHwgdHlwZSA9PT0gJ2Z1bmN0aW9uJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYXNzVG9KYXZhU2NyaXB0VHlwZShzYXNzVmFsdWU6IFNhc3NUeXBlKTogSmF2YVNjcmlwdFR5cGUge1xuICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgIGNhc2Ugc2Fzc1ZhbHVlIGluc3RhbmNlb2YgU2Fzc0Jvb2xlYW46IHtcbiAgICAgICAgcmV0dXJuIHNhc3NWYWx1ZS52YWx1ZTtcbiAgICB9XG5cbiAgICBjYXNlIHNhc3NWYWx1ZSBpbnN0YW5jZW9mIFNhc3NTdHJpbmc6IHtcbiAgICAgICAgcmV0dXJuIHNhc3NWYWx1ZS50ZXh0O1xuICAgIH1cblxuICAgIGNhc2Ugc2Fzc1ZhbHVlIGluc3RhbmNlb2YgU2Fzc051bWJlcjoge1xuICAgICAgICBjb25zdCB7IHZhbHVlLCBudW1lcmF0b3JVbml0cywgZGVub21pbmF0b3JVbml0cyB9ID0gc2Fzc1ZhbHVlO1xuXG4gICAgICAgIGNvbnN0IHVuaXQgPSBzYXNzVmFsdWUuaGFzVW5pdHNcbiAgICAgICAgICAgID8gbnVtZXJhdG9yVW5pdHMuam9pbignKicpICsgKGRlbm9taW5hdG9yVW5pdHMuc2l6ZSA+IDAgPyBgLyR7ZGVub21pbmF0b3JVbml0cy5qb2luKCcqJyl9YCA6ICcnKVxuICAgICAgICAgICAgOiAnJztcblxuICAgICAgICByZXR1cm4gdW5pdCA/IHsgdmFsdWUsIHVuaXQgfSA6IHZhbHVlO1xuICAgIH1cblxuICAgIGNhc2Ugc2Fzc1ZhbHVlIGluc3RhbmNlb2YgU2Fzc0NvbG9yOiB7XG4gICAgICAgIGNvbnN0IHsgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEgfSA9IHNhc3NWYWx1ZTtcblxuICAgICAgICByZXR1cm4gY2hyb21hKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTtcbiAgICB9XG5cbiAgICBjYXNlIHNhc3NWYWx1ZSBpbnN0YW5jZW9mIFNhc3NMaXN0OiB7XG4gICAgICAgIGNvbnN0IGxpc3RWYWx1ZSA9IHNhc3NWYWx1ZS5hc0xpc3Q7XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IGxpc3RWYWx1ZS5zaXplO1xuICAgICAgICBjb25zdCBhcnJheSA9IEFycmF5KGxlbmd0aCkuZmlsbCh1bmRlZmluZWQpIGFzIFNhc3NUeXBlW107XG5cbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAgICAgICAgYXJyYXlbaW5kZXhdID0gbGlzdFZhbHVlLmdldChpbmRleCkgYXMgU2Fzc1R5cGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXJyYXkubWFwKHZhbHVlID0+IHNhc3NUb0phdmFTY3JpcHRUeXBlKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgY2FzZSBzYXNzVmFsdWUgaW5zdGFuY2VvZiBTYXNzTWFwOiB7XG4gICAgICAgIGNvbnN0IG1hcFZhbHVlID0gc2Fzc1ZhbHVlLmNvbnRlbnRzO1xuXG4gICAgICAgIGNvbnN0IGVudHJpZXMgPSBBcnJheS5mcm9tKG1hcFZhbHVlLmVudHJpZXMoKSBhcyBJdGVyYWJsZUl0ZXJhdG9yPFtTYXNzVHlwZSwgU2Fzc1R5cGVdPilcbiAgICAgICAgICAgIC5tYXAoKFsga2V5LCB2YWx1ZSBdKSA9PiBbIHNhc3NUb0phdmFTY3JpcHRUeXBlKGtleSksIHNhc3NUb0phdmFTY3JpcHRUeXBlKHZhbHVlKSBdKTtcblxuICAgICAgICByZXR1cm4gbmV3IE1hcChlbnRyaWVzIGFzIFtKYXZhU2NyaXB0VHlwZSwgSmF2YVNjcmlwdFR5cGVdW10pO1xuICAgIH1cblxuICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGphdmFTY3JpcHRUb1Nhc3NUeXBlKHJhd1ZhbHVlOiBKYXZhU2NyaXB0VHlwZSk6IFNhc3NUeXBlIHtcbiAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICBjYXNlIHR5cGVvZiByYXdWYWx1ZSA9PT0gJ2Jvb2xlYW4nOiB7XG4gICAgICAgIGNvbnN0IGJvb2xlYW5WYWx1ZSA9IHJhd1ZhbHVlO1xuXG4gICAgICAgIHJldHVybiBib29sZWFuVmFsdWUgPyBTYXNzVFJVRSA6IFNhc3NGQUxTRTtcbiAgICB9XG5cbiAgICBjYXNlIHR5cGVvZiByYXdWYWx1ZSA9PT0gJ251bWJlcic6IHtcbiAgICAgICAgY29uc3QgbnVtYmVyVmFsdWUgPSByYXdWYWx1ZTtcblxuICAgICAgICByZXR1cm4gbmV3IFNhc3NOdW1iZXIobnVtYmVyVmFsdWUpO1xuICAgIH1cblxuICAgIGNhc2UgaXNPYmplY3QocmF3VmFsdWUpICYmIFsgJ3ZhbHVlJywgJ3VuaXQnIF0uZXZlcnkocHJvcGVydHlLZXkgPT4gcHJvcGVydHlLZXkgaW4gcmF3VmFsdWUpOiB7XG4gICAgICAgIGNvbnN0IHsgdmFsdWUsIHVuaXQgfSA9IHJhd1ZhbHVlIGFzIE51bWJlcldpdGhVbml0O1xuXG4gICAgICAgIHJldHVybiBuZXcgU2Fzc051bWJlcih2YWx1ZSwgdW5pdCk7XG4gICAgfVxuXG4gICAgY2FzZSB0eXBlb2YgcmF3VmFsdWUgPT09ICdzdHJpbmcnOiB7XG4gICAgICAgIGNvbnN0IHN0cmluZ1ZhbHVlID0gcmF3VmFsdWU7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBTYXNzU3RyaW5nKHN0cmluZ1ZhbHVlKTtcbiAgICB9XG5cbiAgICBjYXNlIGlzT2JqZWN0KHJhd1ZhbHVlKSAmJiAnX3JnYicgaW4gcmF3VmFsdWU6IHtcbiAgICAgICAgY29uc3QgWyByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSBdID0gcmF3VmFsdWUucmdiYSgpIGFzIG51bWJlcltdO1xuXG4gICAgICAgIHJldHVybiBuZXcgU2Fzc0NvbG9yKHsgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEgfSk7XG4gICAgfVxuXG4gICAgY2FzZSBBcnJheS5pc0FycmF5KHJhd1ZhbHVlKToge1xuICAgICAgICByZXR1cm4gbmV3IFNhc3NMaXN0KHJhd1ZhbHVlLm1hcCh2YWx1ZSA9PiBqYXZhU2NyaXB0VG9TYXNzVHlwZSh2YWx1ZSkpKTtcbiAgICB9XG5cbiAgICBjYXNlIHJhd1ZhbHVlIGluc3RhbmNlb2YgTWFwOiB7XG4gICAgICAgIGNvbnN0IG1hcFZhbHVlID0gcmF3VmFsdWUgYXMgTWFwPEphdmFTY3JpcHRUeXBlLCBKYXZhU2NyaXB0VHlwZT47XG4gICAgICAgIGNvbnN0IHNhc3NNYXAgPSBuZXcgU2Fzc01hcCgpO1xuXG4gICAgICAgIGNvbnN0IGNvbnZlcnRlZCA9IEFycmF5LmZyb20obWFwVmFsdWUuZW50cmllcygpKVxuICAgICAgICAgICAgLm1hcChlbnRyeSA9PiBlbnRyeS5tYXAoamF2YVNjcmlwdFRvU2Fzc1R5cGUpKSBhcyBbU2Fzc1R5cGUsIFNhc3NUeXBlXVtdO1xuXG4gICAgICAgIGZvciAoY29uc3QgWyBrZXksIHZhbHVlIF0gb2YgY29udmVydGVkKSB7XG4gICAgICAgICAgICBzYXNzTWFwLmNvbnRlbnRzLnNldChrZXksIHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzYXNzTWFwO1xuICAgIH1cblxuICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgcmV0dXJuIFNhc3NOVUxMO1xuICAgIH1cbiAgICB9XG59XG4iLCJpbXBvcnQgJ3JlZmxlY3QtbWV0YWRhdGEnO1xuXG4vLyBUaGlyZC1wYXJ0eSBtb2R1bGVzLlxuaW1wb3J0IHsgQ3VzdG9tRnVuY3Rpb24gfSBmcm9tICdzYXNzJztcblxuLy8gTG9jYWwgaGVscGVycy5cbmltcG9ydCB0eXBlIHsgU2Fzc1R5cGUsIEphdmFTY3JpcHRUeXBlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBzYXNzVG9KYXZhU2NyaXB0VHlwZSwgamF2YVNjcmlwdFRvU2Fzc1R5cGUgfSBmcm9tICcuL3R5cGUtY29udmVydGVyJztcblxuLy8gVHlwZSBkZWZpbml0aW9ucy5cbmV4cG9ydCBpbnRlcmZhY2UgQnJpZGdlZEZ1bmN0aW9uIHtcbiAgICBleGVjdXRlKCk6IEphdmFTY3JpcHRUeXBlIHwgUHJvbWlzZTxKYXZhU2NyaXB0VHlwZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uc3RydWN0b3Ige1xuICAgIG5ldyAoLi4uYXJnczogSmF2YVNjcmlwdFR5cGVbXSk6IEJyaWRnZWRGdW5jdGlvbjtcbn1cblxuLy8gQ29uc3RhbnRzLlxuY29uc3QgS2V5T2ZTaWduYXR1cmUgPSBTeW1ib2woJ0BjaWNob2wvc2Fzcy1icmlkZ2U6OktleU9mU2lnbmF0dXJlJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBzYXNzRnVuY3Rpb24oZGVmaW5pdGlvbjogc3RyaW5nKTogQ2xhc3NEZWNvcmF0b3Ige1xuICAgIHJldHVybiAoPFQgZXh0ZW5kcyBDb25zdHJ1Y3Rvcj4odGFyZ2V0OiBUKSA9PiB7XG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoS2V5T2ZTaWduYXR1cmUsIGRlZmluaXRpb24sIHRhcmdldCk7XG5cbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9KSBhcyBDbGFzc0RlY29yYXRvcjtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEZ1bmN0aW9ucyhcbiAgICAuLi5tb2R1bGVJbXBvcnRzOiBQcm9taXNlPHsgZGVmYXVsdDogQ29uc3RydWN0b3IgfT5bXVxuKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBDdXN0b21GdW5jdGlvbjwnYXN5bmMnPj4+IHtcbiAgICBjb25zdCBtb2R1bGVzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIG1vZHVsZUltcG9ydHMubWFwKG1vZHVsZSA9PiAoXG4gICAgICAgICAgICBQcm9taXNlLnJlc29sdmUobW9kdWxlKVxuICAgICAgICAgICAgICAgIC50aGVuKG1vZHVsZSA9PiBtb2R1bGUuZGVmYXVsdClcbiAgICAgICAgKSlcbiAgICApO1xuXG4gICAgY29uc3QgZW50cmllcyA9IG1vZHVsZXMubWFwKG1vZHVsZSA9PiB7XG4gICAgICAgIGNvbnN0IHNpZ25hdHVyZSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoS2V5T2ZTaWduYXR1cmUsIG1vZHVsZSkgYXMgc3RyaW5nO1xuXG4gICAgICAgIGFzeW5jIGZ1bmN0aW9uIGN1c3RvbUZ1bmN0aW9uKHJhd0FyZ3M6IFNhc3NUeXBlW10pOiBQcm9taXNlPFNhc3NUeXBlPiB7XG4gICAgICAgICAgICBjb25zdCBhcmdzID0gcmF3QXJncy5tYXAoc2Fzc1RvSmF2YVNjcmlwdFR5cGUpO1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUmVmbGVjdC5jb25zdHJ1Y3QobW9kdWxlLCBhcmdzKS5leGVjdXRlKCk7XG5cbiAgICAgICAgICAgIHJldHVybiBqYXZhU2NyaXB0VG9TYXNzVHlwZShyZXN1bHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFsgc2lnbmF0dXJlLCBjdXN0b21GdW5jdGlvbiBdIGFzIGNvbnN0O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhlbnRyaWVzKTtcbn1cbiJdLCJuYW1lcyI6WyJTYXNzVHlwZXMiLCJfT2JqZWN0JGZyb21FbnRyaWVzIiwiX21hcEluc3RhbmNlUHJvcGVydHkiLCJfY29udGV4dCIsIl9maWx0ZXJJbnN0YW5jZVByb3BlcnR5IiwiX2NvbnRleHQyIiwiX2NvbnRleHQzIiwiX2NvbnRleHQ0IiwiX2NvbnRleHQ1IiwiX09iamVjdCRrZXlzIiwic2FzcyIsImNhbGwiLCJwcm9wZXJ0eUtleSIsIl9zdGFydHNXaXRoSW5zdGFuY2VQcm9wZXJ0eSIsImNvbnN0cnVjdG9yIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaXNQcm90b3R5cGVPZiIsIlZhbHVlIiwibmFtZSIsIlNhc3NUUlVFIiwic2Fzc1RydWUiLCJTYXNzRkFMU0UiLCJzYXNzRmFsc2UiLCJTYXNzTlVMTCIsInNhc3NOdWxsIiwiU2Fzc051bWJlciIsIlNhc3NTdHJpbmciLCJTYXNzQ29sb3IiLCJTYXNzTGlzdCIsIlNhc3NNYXAiLCJTYXNzQm9vbGVhbiIsIl9PYmplY3QkZ2V0UHJvdG90eXBlT2YiLCJpc09iamVjdCIsInZhbHVlIiwidHlwZSIsInNhc3NUb0phdmFTY3JpcHRUeXBlIiwic2Fzc1ZhbHVlIiwidGV4dCIsIm51bWVyYXRvclVuaXRzIiwiZGVub21pbmF0b3JVbml0cyIsInVuaXQiLCJoYXNVbml0cyIsImpvaW4iLCJzaXplIiwicmVkIiwiZ3JlZW4iLCJibHVlIiwiYWxwaGEiLCJjaHJvbWEiLCJsaXN0VmFsdWUiLCJhc0xpc3QiLCJsZW5ndGgiLCJhcnJheSIsIl9maWxsSW5zdGFuY2VQcm9wZXJ0eSIsIkFycmF5IiwidW5kZWZpbmVkIiwiaW5kZXgiLCJnZXQiLCJtYXBWYWx1ZSIsImNvbnRlbnRzIiwiZW50cmllcyIsIl9BcnJheSRmcm9tIiwiX2VudHJpZXNJbnN0YW5jZVByb3BlcnR5Iiwia2V5IiwiX01hcCIsImphdmFTY3JpcHRUb1Nhc3NUeXBlIiwicmF3VmFsdWUiLCJib29sZWFuVmFsdWUiLCJudW1iZXJWYWx1ZSIsIl9ldmVyeUluc3RhbmNlUHJvcGVydHkiLCJzdHJpbmdWYWx1ZSIsInJnYmEiLCJfQXJyYXkkaXNBcnJheSIsInNhc3NNYXAiLCJjb252ZXJ0ZWQiLCJlbnRyeSIsInNldCIsIktleU9mU2lnbmF0dXJlIiwiX1N5bWJvbCIsInNhc3NGdW5jdGlvbiIsImRlZmluaXRpb24iLCJ0YXJnZXQiLCJSZWZsZWN0IiwiZGVmaW5lTWV0YWRhdGEiLCJnZXRGdW5jdGlvbnMiLCJtb2R1bGVJbXBvcnRzIiwibW9kdWxlcyIsIl9Qcm9taXNlIiwiYWxsIiwibW9kdWxlIiwicmVzb2x2ZSIsInRoZW4iLCJkZWZhdWx0Iiwic2lnbmF0dXJlIiwiZ2V0TWV0YWRhdGEiLCJjdXN0b21GdW5jdGlvbiIsInJhd0FyZ3MiLCJhcmdzIiwicmVzdWx0IiwiX1JlZmxlY3QkY29uc3RydWN0IiwiZXhlY3V0ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FB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
|
package/releases/esm.js
DELETED
|
@@ -1,191 +0,0 @@
|
|
|
1
|
-
import _Symbol from 'core-js-pure/stable/symbol/index.js';
|
|
2
|
-
import _Promise from 'core-js-pure/stable/promise/index.js';
|
|
3
|
-
import _mapInstanceProperty from 'core-js-pure/stable/instance/map.js';
|
|
4
|
-
import _Reflect$construct from 'core-js-pure/stable/reflect/construct.js';
|
|
5
|
-
import _Object$fromEntries from 'core-js-pure/stable/object/from-entries.js';
|
|
6
|
-
import 'reflect-metadata';
|
|
7
|
-
import _fillInstanceProperty from 'core-js-pure/stable/instance/fill.js';
|
|
8
|
-
import _Array$from from 'core-js-pure/stable/array/from.js';
|
|
9
|
-
import _entriesInstanceProperty from 'core-js-pure/stable/instance/entries.js';
|
|
10
|
-
import _Map from 'core-js-pure/stable/map/index.js';
|
|
11
|
-
import _everyInstanceProperty from 'core-js-pure/stable/instance/every.js';
|
|
12
|
-
import _Array$isArray from 'core-js-pure/stable/array/is-array.js';
|
|
13
|
-
import chroma from 'chroma-js';
|
|
14
|
-
import _filterInstanceProperty from 'core-js-pure/stable/instance/filter.js';
|
|
15
|
-
import _Object$keys from 'core-js-pure/stable/object/keys.js';
|
|
16
|
-
import _startsWithInstanceProperty from 'core-js-pure/stable/instance/starts-with.js';
|
|
17
|
-
import _Object$getPrototypeOf from 'core-js-pure/stable/object/get-prototype-of.js';
|
|
18
|
-
import * as sass from 'sass';
|
|
19
|
-
import { Value } from 'sass';
|
|
20
|
-
|
|
21
|
-
var _context, _context2, _context3, _context4, _context5;
|
|
22
|
-
|
|
23
|
-
// Type definitions.
|
|
24
|
-
|
|
25
|
-
const SassTypes = _Object$fromEntries(_mapInstanceProperty(_context = _filterInstanceProperty(_context2 = _filterInstanceProperty(_context3 = _mapInstanceProperty(_context4 = _filterInstanceProperty(_context5 = _Object$keys(sass)).call(_context5, propertyKey => _startsWithInstanceProperty(propertyKey).call(propertyKey, 'Sass'))).call(_context4, propertyKey => sass[propertyKey])).call(_context3, constructor => typeof constructor === 'function')).call(_context2, constructor => Object.prototype.isPrototypeOf.call(Value.prototype, constructor.prototype))).call(_context, constructor => [constructor.name, constructor]));
|
|
26
|
-
const SassTRUE = sass.sassTrue;
|
|
27
|
-
const SassFALSE = sass.sassFalse;
|
|
28
|
-
const SassNULL = sass.sassNull;
|
|
29
|
-
const {
|
|
30
|
-
SassNumber
|
|
31
|
-
} = SassTypes;
|
|
32
|
-
const {
|
|
33
|
-
SassString
|
|
34
|
-
} = SassTypes;
|
|
35
|
-
const {
|
|
36
|
-
SassColor
|
|
37
|
-
} = SassTypes;
|
|
38
|
-
const {
|
|
39
|
-
SassList
|
|
40
|
-
} = SassTypes;
|
|
41
|
-
const {
|
|
42
|
-
SassMap
|
|
43
|
-
} = SassTypes;
|
|
44
|
-
const SassBoolean = _Object$getPrototypeOf(SassTRUE).constructor;
|
|
45
|
-
|
|
46
|
-
// Helper functions.
|
|
47
|
-
function isObject(value) {
|
|
48
|
-
const type = typeof value;
|
|
49
|
-
return !!value && (type === 'object' || type === 'function');
|
|
50
|
-
}
|
|
51
|
-
function sassToJavaScriptType(sassValue) {
|
|
52
|
-
switch (true) {
|
|
53
|
-
case sassValue instanceof SassBoolean:
|
|
54
|
-
{
|
|
55
|
-
return sassValue.value;
|
|
56
|
-
}
|
|
57
|
-
case sassValue instanceof SassString:
|
|
58
|
-
{
|
|
59
|
-
return sassValue.text;
|
|
60
|
-
}
|
|
61
|
-
case sassValue instanceof SassNumber:
|
|
62
|
-
{
|
|
63
|
-
const {
|
|
64
|
-
value,
|
|
65
|
-
numeratorUnits,
|
|
66
|
-
denominatorUnits
|
|
67
|
-
} = sassValue;
|
|
68
|
-
const unit = sassValue.hasUnits ? numeratorUnits.join('*') + (denominatorUnits.size > 0 ? `/${denominatorUnits.join('*')}` : '') : '';
|
|
69
|
-
return unit ? {
|
|
70
|
-
value,
|
|
71
|
-
unit
|
|
72
|
-
} : value;
|
|
73
|
-
}
|
|
74
|
-
case sassValue instanceof SassColor:
|
|
75
|
-
{
|
|
76
|
-
const {
|
|
77
|
-
red,
|
|
78
|
-
green,
|
|
79
|
-
blue,
|
|
80
|
-
alpha
|
|
81
|
-
} = sassValue;
|
|
82
|
-
return chroma(red, green, blue, alpha);
|
|
83
|
-
}
|
|
84
|
-
case sassValue instanceof SassList:
|
|
85
|
-
{
|
|
86
|
-
var _context;
|
|
87
|
-
const listValue = sassValue.asList;
|
|
88
|
-
const length = listValue.size;
|
|
89
|
-
const array = _fillInstanceProperty(_context = Array(length)).call(_context, undefined);
|
|
90
|
-
for (let index = 0; index < length; index += 1) {
|
|
91
|
-
array[index] = listValue.get(index);
|
|
92
|
-
}
|
|
93
|
-
return _mapInstanceProperty(array).call(array, value => sassToJavaScriptType(value));
|
|
94
|
-
}
|
|
95
|
-
case sassValue instanceof SassMap:
|
|
96
|
-
{
|
|
97
|
-
var _context2;
|
|
98
|
-
const mapValue = sassValue.contents;
|
|
99
|
-
const entries = _mapInstanceProperty(_context2 = _Array$from(_entriesInstanceProperty(mapValue).call(mapValue))).call(_context2, ([key, value]) => [sassToJavaScriptType(key), sassToJavaScriptType(value)]);
|
|
100
|
-
return new _Map(entries);
|
|
101
|
-
}
|
|
102
|
-
default:
|
|
103
|
-
{
|
|
104
|
-
return null;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
function javaScriptToSassType(rawValue) {
|
|
109
|
-
var _context3;
|
|
110
|
-
switch (true) {
|
|
111
|
-
case typeof rawValue === 'boolean':
|
|
112
|
-
{
|
|
113
|
-
const booleanValue = rawValue;
|
|
114
|
-
return booleanValue ? SassTRUE : SassFALSE;
|
|
115
|
-
}
|
|
116
|
-
case typeof rawValue === 'number':
|
|
117
|
-
{
|
|
118
|
-
const numberValue = rawValue;
|
|
119
|
-
return new SassNumber(numberValue);
|
|
120
|
-
}
|
|
121
|
-
case isObject(rawValue) && _everyInstanceProperty(_context3 = ['value', 'unit']).call(_context3, propertyKey => propertyKey in rawValue):
|
|
122
|
-
{
|
|
123
|
-
const {
|
|
124
|
-
value,
|
|
125
|
-
unit
|
|
126
|
-
} = rawValue;
|
|
127
|
-
return new SassNumber(value, unit);
|
|
128
|
-
}
|
|
129
|
-
case typeof rawValue === 'string':
|
|
130
|
-
{
|
|
131
|
-
const stringValue = rawValue;
|
|
132
|
-
return new SassString(stringValue);
|
|
133
|
-
}
|
|
134
|
-
case isObject(rawValue) && '_rgb' in rawValue:
|
|
135
|
-
{
|
|
136
|
-
const [red, green, blue, alpha] = rawValue.rgba();
|
|
137
|
-
return new SassColor({
|
|
138
|
-
red,
|
|
139
|
-
green,
|
|
140
|
-
blue,
|
|
141
|
-
alpha
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
|
-
case _Array$isArray(rawValue):
|
|
145
|
-
{
|
|
146
|
-
return new SassList(_mapInstanceProperty(rawValue).call(rawValue, value => javaScriptToSassType(value)));
|
|
147
|
-
}
|
|
148
|
-
case rawValue instanceof _Map:
|
|
149
|
-
{
|
|
150
|
-
var _context4;
|
|
151
|
-
const mapValue = rawValue;
|
|
152
|
-
const sassMap = new SassMap();
|
|
153
|
-
const converted = _mapInstanceProperty(_context4 = _Array$from(_entriesInstanceProperty(mapValue).call(mapValue))).call(_context4, entry => _mapInstanceProperty(entry).call(entry, javaScriptToSassType));
|
|
154
|
-
for (const [key, value] of converted) {
|
|
155
|
-
sassMap.contents.set(key, value);
|
|
156
|
-
}
|
|
157
|
-
return sassMap;
|
|
158
|
-
}
|
|
159
|
-
default:
|
|
160
|
-
{
|
|
161
|
-
return SassNULL;
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
// Type definitions.
|
|
167
|
-
|
|
168
|
-
// Constants.
|
|
169
|
-
const KeyOfSignature = _Symbol('@cichol/sass-bridge::KeyOfSignature');
|
|
170
|
-
function sassFunction(definition) {
|
|
171
|
-
return target => {
|
|
172
|
-
Reflect.defineMetadata(KeyOfSignature, definition, target);
|
|
173
|
-
return target;
|
|
174
|
-
};
|
|
175
|
-
}
|
|
176
|
-
async function getFunctions(...moduleImports) {
|
|
177
|
-
const modules = await _Promise.all(_mapInstanceProperty(moduleImports).call(moduleImports, module => _Promise.resolve(module).then(module => module.default)));
|
|
178
|
-
const entries = _mapInstanceProperty(modules).call(modules, module => {
|
|
179
|
-
const signature = Reflect.getMetadata(KeyOfSignature, module);
|
|
180
|
-
async function customFunction(rawArgs) {
|
|
181
|
-
const args = _mapInstanceProperty(rawArgs).call(rawArgs, sassToJavaScriptType);
|
|
182
|
-
const result = await _Reflect$construct(module, args).execute();
|
|
183
|
-
return javaScriptToSassType(result);
|
|
184
|
-
}
|
|
185
|
-
return [signature, customFunction];
|
|
186
|
-
});
|
|
187
|
-
return _Object$fromEntries(entries);
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
export { getFunctions, sassFunction };
|
|
191
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNtLmpzIiwic291cmNlcyI6WyIuLi9zb3VyY2VzL3R5cGVzLnRzIiwiLi4vc291cmNlcy90eXBlLWNvbnZlcnRlci50cyIsIi4uL3NvdXJjZXMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcmQtcGFydHkgbW9kdWxlcy5cbmltcG9ydCB0eXBlIHsgQ29sb3IgfSBmcm9tICdjaHJvbWEtanMnO1xuaW1wb3J0ICogYXMgc2FzcyBmcm9tICdzYXNzJztcbmltcG9ydCB7IFZhbHVlIH0gZnJvbSAnc2Fzcyc7XG5cbi8vIFR5cGUgZGVmaW5pdGlvbnMuXG5leHBvcnQgdHlwZSBQcmltaXRpdmVzID0gYm9vbGVhbiB8IG51bWJlciB8IHN0cmluZztcblxuZXhwb3J0IHR5cGUgTnVtYmVyV2l0aFVuaXQgPSB7IHZhbHVlOiBudW1iZXIsIHVuaXQ6IHN0cmluZyB9O1xuXG5leHBvcnQgdHlwZSBKYXZhU2NyaXB0VHlwZTxCYXNlID0gUHJpbWl0aXZlcyB8IENvbG9yIHwgTnVtYmVyV2l0aFVuaXQgfCBudWxsPiA9XG4gICAgfCBCYXNlXG4gICAgfCBKYXZhU2NyaXB0VHlwZTxCYXNlPltdXG4gICAgfCBNYXA8SmF2YVNjcmlwdFR5cGU8QmFzZT4sIEphdmFTY3JpcHRUeXBlPEJhc2U+PjtcblxudHlwZSBGaWx0ZXJTYXNzUHJlZml4PFQgZXh0ZW5kcyBzdHJpbmc+ID0gVCBleHRlbmRzIGBTYXNzJHtpbmZlciBSfWAgPyBSIDogbmV2ZXI7XG5cbnR5cGUgU2Fzc1R5cGVzID0gRXhjbHVkZTxgU2FzcyR7RmlsdGVyU2Fzc1ByZWZpeDxrZXlvZiB0eXBlb2Ygc2Fzcz59YCwgYFNhc3MkeydCb29sZWFuJyB8ICdDYWxjdWxhdGlvbid9YD47XG5cbmNvbnN0IFNhc3NUeXBlcyA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBPYmplY3Qua2V5cyhzYXNzKVxuICAgICAgICAuZmlsdGVyKHByb3BlcnR5S2V5ID0+IHByb3BlcnR5S2V5LnN0YXJ0c1dpdGgoJ1Nhc3MnKSlcbiAgICAgICAgLm1hcChwcm9wZXJ0eUtleSA9PiBzYXNzW3Byb3BlcnR5S2V5IGFzIFNhc3NUeXBlc10pXG4gICAgICAgIC5maWx0ZXIoY29uc3RydWN0b3IgPT4gdHlwZW9mIGNvbnN0cnVjdG9yID09PSAnZnVuY3Rpb24nKVxuICAgICAgICAuZmlsdGVyKGNvbnN0cnVjdG9yID0+IE9iamVjdC5wcm90b3R5cGUuaXNQcm90b3R5cGVPZi5jYWxsKFZhbHVlLnByb3RvdHlwZSwgY29uc3RydWN0b3IucHJvdG90eXBlKSlcbiAgICAgICAgLm1hcChjb25zdHJ1Y3RvciA9PiBbIGNvbnN0cnVjdG9yLm5hbWUsIGNvbnN0cnVjdG9yIF0gYXMgW1Nhc3NUeXBlcywgKHR5cGVvZiBzYXNzKVtTYXNzVHlwZXNdXSlcbikgYXMgeyBbUCBpbiBTYXNzVHlwZXNdOiAodHlwZW9mIHNhc3MpW1BdIH07XG5cbmV4cG9ydCBjb25zdCBTYXNzVFJVRSA9IHNhc3Muc2Fzc1RydWU7XG5leHBvcnQgdHlwZSBTYXNzVFJVRSA9IHR5cGVvZiBTYXNzVFJVRTtcblxuZXhwb3J0IGNvbnN0IFNhc3NGQUxTRSA9IHNhc3Muc2Fzc0ZhbHNlO1xuZXhwb3J0IHR5cGUgU2Fzc0ZBTFNFID0gdHlwZW9mIFNhc3NGQUxTRTtcblxuZXhwb3J0IGNvbnN0IFNhc3NOVUxMID0gc2Fzcy5zYXNzTnVsbDtcbmV4cG9ydCB0eXBlIFNhc3NOVUxMID0gdHlwZW9mIFNhc3NOVUxMO1xuXG5leHBvcnQgY29uc3QgeyBTYXNzTnVtYmVyIH0gPSBTYXNzVHlwZXM7XG5leHBvcnQgdHlwZSBTYXNzTnVtYmVyID0gSW5zdGFuY2VUeXBlPHR5cGVvZiBTYXNzTnVtYmVyPjtcblxuZXhwb3J0IGNvbnN0IHsgU2Fzc1N0cmluZyB9ID0gU2Fzc1R5cGVzO1xuZXhwb3J0IHR5cGUgU2Fzc1N0cmluZyA9IEluc3RhbmNlVHlwZTx0eXBlb2YgU2Fzc1N0cmluZz47XG5cbmV4cG9ydCBjb25zdCB7IFNhc3NDb2xvciB9ID0gU2Fzc1R5cGVzO1xuZXhwb3J0IHR5cGUgU2Fzc0NvbG9yID0gSW5zdGFuY2VUeXBlPHR5cGVvZiBTYXNzQ29sb3I+O1xuXG5leHBvcnQgY29uc3QgeyBTYXNzTGlzdCB9ID0gU2Fzc1R5cGVzO1xuZXhwb3J0IHR5cGUgU2Fzc0xpc3QgPSBJbnN0YW5jZVR5cGU8dHlwZW9mIFNhc3NMaXN0PjtcblxuZXhwb3J0IGNvbnN0IHsgU2Fzc01hcCB9ID0gU2Fzc1R5cGVzO1xuZXhwb3J0IHR5cGUgU2Fzc01hcCA9IEluc3RhbmNlVHlwZTx0eXBlb2YgU2Fzc01hcD47XG5cbmV4cG9ydCBjb25zdCBTYXNzQm9vbGVhbiA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihTYXNzVFJVRSkuY29uc3RydWN0b3IgYXMgdHlwZW9mIHNhc3MuU2Fzc0Jvb2xlYW47XG5leHBvcnQgdHlwZSBTYXNzQm9vbGVhbiA9IHNhc3MuU2Fzc0Jvb2xlYW47XG5cbmV4cG9ydCB0eXBlIFNhc3NUeXBlID1cbiAgICB8IEluc3RhbmNlVHlwZTx0eXBlb2YgU2Fzc1R5cGVzIGV4dGVuZHMgUmVjb3JkPGFueSwgaW5mZXIgUj4gPyBSIDogbmV2ZXI+XG4gICAgfCBTYXNzQm9vbGVhbjtcbiIsIi8vIFRoaXJkLXBhcnR5IG1vZHVsZXMuXG5pbXBvcnQgY2hyb21hIGZyb20gJ2Nocm9tYS1qcyc7XG5cbi8vIExvY2FsIGhlbHBlcnMuXG5pbXBvcnQge1xuICAgIHR5cGUgU2Fzc1R5cGUsXG4gICAgU2Fzc0Jvb2xlYW4sXG4gICAgU2Fzc051bWJlcixcbiAgICBTYXNzU3RyaW5nLFxuICAgIFNhc3NDb2xvcixcbiAgICBTYXNzTGlzdCxcbiAgICBTYXNzTWFwLFxuICAgIFNhc3NUUlVFLFxuICAgIFNhc3NGQUxTRSxcbiAgICBTYXNzTlVMTCxcbiAgICB0eXBlIEphdmFTY3JpcHRUeXBlLFxuICAgIHR5cGUgTnVtYmVyV2l0aFVuaXRcbn0gZnJvbSAnLi90eXBlcyc7XG5cbi8vIEhlbHBlciBmdW5jdGlvbnMuXG5mdW5jdGlvbiBpc09iamVjdCh2YWx1ZT86IHVua25vd24pOiB2YWx1ZSBpcyBvYmplY3Qge1xuICAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgdmFsdWU7XG5cbiAgICByZXR1cm4gISF2YWx1ZSAmJiAodHlwZSA9PT0gJ29iamVjdCcgfHwgdHlwZSA9PT0gJ2Z1bmN0aW9uJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYXNzVG9KYXZhU2NyaXB0VHlwZShzYXNzVmFsdWU6IFNhc3NUeXBlKTogSmF2YVNjcmlwdFR5cGUge1xuICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgIGNhc2Ugc2Fzc1ZhbHVlIGluc3RhbmNlb2YgU2Fzc0Jvb2xlYW46IHtcbiAgICAgICAgcmV0dXJuIHNhc3NWYWx1ZS52YWx1ZTtcbiAgICB9XG5cbiAgICBjYXNlIHNhc3NWYWx1ZSBpbnN0YW5jZW9mIFNhc3NTdHJpbmc6IHtcbiAgICAgICAgcmV0dXJuIHNhc3NWYWx1ZS50ZXh0O1xuICAgIH1cblxuICAgIGNhc2Ugc2Fzc1ZhbHVlIGluc3RhbmNlb2YgU2Fzc051bWJlcjoge1xuICAgICAgICBjb25zdCB7IHZhbHVlLCBudW1lcmF0b3JVbml0cywgZGVub21pbmF0b3JVbml0cyB9ID0gc2Fzc1ZhbHVlO1xuXG4gICAgICAgIGNvbnN0IHVuaXQgPSBzYXNzVmFsdWUuaGFzVW5pdHNcbiAgICAgICAgICAgID8gbnVtZXJhdG9yVW5pdHMuam9pbignKicpICsgKGRlbm9taW5hdG9yVW5pdHMuc2l6ZSA+IDAgPyBgLyR7ZGVub21pbmF0b3JVbml0cy5qb2luKCcqJyl9YCA6ICcnKVxuICAgICAgICAgICAgOiAnJztcblxuICAgICAgICByZXR1cm4gdW5pdCA/IHsgdmFsdWUsIHVuaXQgfSA6IHZhbHVlO1xuICAgIH1cblxuICAgIGNhc2Ugc2Fzc1ZhbHVlIGluc3RhbmNlb2YgU2Fzc0NvbG9yOiB7XG4gICAgICAgIGNvbnN0IHsgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEgfSA9IHNhc3NWYWx1ZTtcblxuICAgICAgICByZXR1cm4gY2hyb21hKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTtcbiAgICB9XG5cbiAgICBjYXNlIHNhc3NWYWx1ZSBpbnN0YW5jZW9mIFNhc3NMaXN0OiB7XG4gICAgICAgIGNvbnN0IGxpc3RWYWx1ZSA9IHNhc3NWYWx1ZS5hc0xpc3Q7XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IGxpc3RWYWx1ZS5zaXplO1xuICAgICAgICBjb25zdCBhcnJheSA9IEFycmF5KGxlbmd0aCkuZmlsbCh1bmRlZmluZWQpIGFzIFNhc3NUeXBlW107XG5cbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAgICAgICAgYXJyYXlbaW5kZXhdID0gbGlzdFZhbHVlLmdldChpbmRleCkgYXMgU2Fzc1R5cGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXJyYXkubWFwKHZhbHVlID0+IHNhc3NUb0phdmFTY3JpcHRUeXBlKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgY2FzZSBzYXNzVmFsdWUgaW5zdGFuY2VvZiBTYXNzTWFwOiB7XG4gICAgICAgIGNvbnN0IG1hcFZhbHVlID0gc2Fzc1ZhbHVlLmNvbnRlbnRzO1xuXG4gICAgICAgIGNvbnN0IGVudHJpZXMgPSBBcnJheS5mcm9tKG1hcFZhbHVlLmVudHJpZXMoKSBhcyBJdGVyYWJsZUl0ZXJhdG9yPFtTYXNzVHlwZSwgU2Fzc1R5cGVdPilcbiAgICAgICAgICAgIC5tYXAoKFsga2V5LCB2YWx1ZSBdKSA9PiBbIHNhc3NUb0phdmFTY3JpcHRUeXBlKGtleSksIHNhc3NUb0phdmFTY3JpcHRUeXBlKHZhbHVlKSBdKTtcblxuICAgICAgICByZXR1cm4gbmV3IE1hcChlbnRyaWVzIGFzIFtKYXZhU2NyaXB0VHlwZSwgSmF2YVNjcmlwdFR5cGVdW10pO1xuICAgIH1cblxuICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGphdmFTY3JpcHRUb1Nhc3NUeXBlKHJhd1ZhbHVlOiBKYXZhU2NyaXB0VHlwZSk6IFNhc3NUeXBlIHtcbiAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICBjYXNlIHR5cGVvZiByYXdWYWx1ZSA9PT0gJ2Jvb2xlYW4nOiB7XG4gICAgICAgIGNvbnN0IGJvb2xlYW5WYWx1ZSA9IHJhd1ZhbHVlO1xuXG4gICAgICAgIHJldHVybiBib29sZWFuVmFsdWUgPyBTYXNzVFJVRSA6IFNhc3NGQUxTRTtcbiAgICB9XG5cbiAgICBjYXNlIHR5cGVvZiByYXdWYWx1ZSA9PT0gJ251bWJlcic6IHtcbiAgICAgICAgY29uc3QgbnVtYmVyVmFsdWUgPSByYXdWYWx1ZTtcblxuICAgICAgICByZXR1cm4gbmV3IFNhc3NOdW1iZXIobnVtYmVyVmFsdWUpO1xuICAgIH1cblxuICAgIGNhc2UgaXNPYmplY3QocmF3VmFsdWUpICYmIFsgJ3ZhbHVlJywgJ3VuaXQnIF0uZXZlcnkocHJvcGVydHlLZXkgPT4gcHJvcGVydHlLZXkgaW4gcmF3VmFsdWUpOiB7XG4gICAgICAgIGNvbnN0IHsgdmFsdWUsIHVuaXQgfSA9IHJhd1ZhbHVlIGFzIE51bWJlcldpdGhVbml0O1xuXG4gICAgICAgIHJldHVybiBuZXcgU2Fzc051bWJlcih2YWx1ZSwgdW5pdCk7XG4gICAgfVxuXG4gICAgY2FzZSB0eXBlb2YgcmF3VmFsdWUgPT09ICdzdHJpbmcnOiB7XG4gICAgICAgIGNvbnN0IHN0cmluZ1ZhbHVlID0gcmF3VmFsdWU7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBTYXNzU3RyaW5nKHN0cmluZ1ZhbHVlKTtcbiAgICB9XG5cbiAgICBjYXNlIGlzT2JqZWN0KHJhd1ZhbHVlKSAmJiAnX3JnYicgaW4gcmF3VmFsdWU6IHtcbiAgICAgICAgY29uc3QgWyByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSBdID0gcmF3VmFsdWUucmdiYSgpIGFzIG51bWJlcltdO1xuXG4gICAgICAgIHJldHVybiBuZXcgU2Fzc0NvbG9yKHsgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEgfSk7XG4gICAgfVxuXG4gICAgY2FzZSBBcnJheS5pc0FycmF5KHJhd1ZhbHVlKToge1xuICAgICAgICByZXR1cm4gbmV3IFNhc3NMaXN0KHJhd1ZhbHVlLm1hcCh2YWx1ZSA9PiBqYXZhU2NyaXB0VG9TYXNzVHlwZSh2YWx1ZSkpKTtcbiAgICB9XG5cbiAgICBjYXNlIHJhd1ZhbHVlIGluc3RhbmNlb2YgTWFwOiB7XG4gICAgICAgIGNvbnN0IG1hcFZhbHVlID0gcmF3VmFsdWUgYXMgTWFwPEphdmFTY3JpcHRUeXBlLCBKYXZhU2NyaXB0VHlwZT47XG4gICAgICAgIGNvbnN0IHNhc3NNYXAgPSBuZXcgU2Fzc01hcCgpO1xuXG4gICAgICAgIGNvbnN0IGNvbnZlcnRlZCA9IEFycmF5LmZyb20obWFwVmFsdWUuZW50cmllcygpKVxuICAgICAgICAgICAgLm1hcChlbnRyeSA9PiBlbnRyeS5tYXAoamF2YVNjcmlwdFRvU2Fzc1R5cGUpKSBhcyBbU2Fzc1R5cGUsIFNhc3NUeXBlXVtdO1xuXG4gICAgICAgIGZvciAoY29uc3QgWyBrZXksIHZhbHVlIF0gb2YgY29udmVydGVkKSB7XG4gICAgICAgICAgICBzYXNzTWFwLmNvbnRlbnRzLnNldChrZXksIHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzYXNzTWFwO1xuICAgIH1cblxuICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgcmV0dXJuIFNhc3NOVUxMO1xuICAgIH1cbiAgICB9XG59XG4iLCJpbXBvcnQgJ3JlZmxlY3QtbWV0YWRhdGEnO1xuXG4vLyBUaGlyZC1wYXJ0eSBtb2R1bGVzLlxuaW1wb3J0IHsgQ3VzdG9tRnVuY3Rpb24gfSBmcm9tICdzYXNzJztcblxuLy8gTG9jYWwgaGVscGVycy5cbmltcG9ydCB0eXBlIHsgU2Fzc1R5cGUsIEphdmFTY3JpcHRUeXBlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBzYXNzVG9KYXZhU2NyaXB0VHlwZSwgamF2YVNjcmlwdFRvU2Fzc1R5cGUgfSBmcm9tICcuL3R5cGUtY29udmVydGVyJztcblxuLy8gVHlwZSBkZWZpbml0aW9ucy5cbmV4cG9ydCBpbnRlcmZhY2UgQnJpZGdlZEZ1bmN0aW9uIHtcbiAgICBleGVjdXRlKCk6IEphdmFTY3JpcHRUeXBlIHwgUHJvbWlzZTxKYXZhU2NyaXB0VHlwZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uc3RydWN0b3Ige1xuICAgIG5ldyAoLi4uYXJnczogSmF2YVNjcmlwdFR5cGVbXSk6IEJyaWRnZWRGdW5jdGlvbjtcbn1cblxuLy8gQ29uc3RhbnRzLlxuY29uc3QgS2V5T2ZTaWduYXR1cmUgPSBTeW1ib2woJ0BjaWNob2wvc2Fzcy1icmlkZ2U6OktleU9mU2lnbmF0dXJlJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBzYXNzRnVuY3Rpb24oZGVmaW5pdGlvbjogc3RyaW5nKTogQ2xhc3NEZWNvcmF0b3Ige1xuICAgIHJldHVybiAoPFQgZXh0ZW5kcyBDb25zdHJ1Y3Rvcj4odGFyZ2V0OiBUKSA9PiB7XG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoS2V5T2ZTaWduYXR1cmUsIGRlZmluaXRpb24sIHRhcmdldCk7XG5cbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9KSBhcyBDbGFzc0RlY29yYXRvcjtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEZ1bmN0aW9ucyhcbiAgICAuLi5tb2R1bGVJbXBvcnRzOiBQcm9taXNlPHsgZGVmYXVsdDogQ29uc3RydWN0b3IgfT5bXVxuKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBDdXN0b21GdW5jdGlvbjwnYXN5bmMnPj4+IHtcbiAgICBjb25zdCBtb2R1bGVzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIG1vZHVsZUltcG9ydHMubWFwKG1vZHVsZSA9PiAoXG4gICAgICAgICAgICBQcm9taXNlLnJlc29sdmUobW9kdWxlKVxuICAgICAgICAgICAgICAgIC50aGVuKG1vZHVsZSA9PiBtb2R1bGUuZGVmYXVsdClcbiAgICAgICAgKSlcbiAgICApO1xuXG4gICAgY29uc3QgZW50cmllcyA9IG1vZHVsZXMubWFwKG1vZHVsZSA9PiB7XG4gICAgICAgIGNvbnN0IHNpZ25hdHVyZSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoS2V5T2ZTaWduYXR1cmUsIG1vZHVsZSkgYXMgc3RyaW5nO1xuXG4gICAgICAgIGFzeW5jIGZ1bmN0aW9uIGN1c3RvbUZ1bmN0aW9uKHJhd0FyZ3M6IFNhc3NUeXBlW10pOiBQcm9taXNlPFNhc3NUeXBlPiB7XG4gICAgICAgICAgICBjb25zdCBhcmdzID0gcmF3QXJncy5tYXAoc2Fzc1RvSmF2YVNjcmlwdFR5cGUpO1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUmVmbGVjdC5jb25zdHJ1Y3QobW9kdWxlLCBhcmdzKS5leGVjdXRlKCk7XG5cbiAgICAgICAgICAgIHJldHVybiBqYXZhU2NyaXB0VG9TYXNzVHlwZShyZXN1bHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFsgc2lnbmF0dXJlLCBjdXN0b21GdW5jdGlvbiBdIGFzIGNvbnN0O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhlbnRyaWVzKTtcbn1cbiJdLCJuYW1lcyI6WyJTYXNzVHlwZXMiLCJfT2JqZWN0JGZyb21FbnRyaWVzIiwiX21hcEluc3RhbmNlUHJvcGVydHkiLCJfY29udGV4dCIsIl9maWx0ZXJJbnN0YW5jZVByb3BlcnR5IiwiX2NvbnRleHQyIiwiX2NvbnRleHQzIiwiX2NvbnRleHQ0IiwiX2NvbnRleHQ1IiwiX09iamVjdCRrZXlzIiwic2FzcyIsImNhbGwiLCJwcm9wZXJ0eUtleSIsIl9zdGFydHNXaXRoSW5zdGFuY2VQcm9wZXJ0eSIsImNvbnN0cnVjdG9yIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaXNQcm90b3R5cGVPZiIsIlZhbHVlIiwibmFtZSIsIlNhc3NUUlVFIiwic2Fzc1RydWUiLCJTYXNzRkFMU0UiLCJzYXNzRmFsc2UiLCJTYXNzTlVMTCIsInNhc3NOdWxsIiwiU2Fzc051bWJlciIsIlNhc3NTdHJpbmciLCJTYXNzQ29sb3IiLCJTYXNzTGlzdCIsIlNhc3NNYXAiLCJTYXNzQm9vbGVhbiIsIl9PYmplY3QkZ2V0UHJvdG90eXBlT2YiLCJpc09iamVjdCIsInZhbHVlIiwidHlwZSIsInNhc3NUb0phdmFTY3JpcHRUeXBlIiwic2Fzc1ZhbHVlIiwidGV4dCIsIm51bWVyYXRvclVuaXRzIiwiZGVub21pbmF0b3JVbml0cyIsInVuaXQiLCJoYXNVbml0cyIsImpvaW4iLCJzaXplIiwicmVkIiwiZ3JlZW4iLCJibHVlIiwiYWxwaGEiLCJjaHJvbWEiLCJsaXN0VmFsdWUiLCJhc0xpc3QiLCJsZW5ndGgiLCJhcnJheSIsIl9maWxsSW5zdGFuY2VQcm9wZXJ0eSIsIkFycmF5IiwidW5kZWZpbmVkIiwiaW5kZXgiLCJnZXQiLCJtYXBWYWx1ZSIsImNvbnRlbnRzIiwiZW50cmllcyIsIl9BcnJheSRmcm9tIiwiX2VudHJpZXNJbnN0YW5jZVByb3BlcnR5Iiwia2V5IiwiX01hcCIsImphdmFTY3JpcHRUb1Nhc3NUeXBlIiwicmF3VmFsdWUiLCJib29sZWFuVmFsdWUiLCJudW1iZXJWYWx1ZSIsIl9ldmVyeUluc3RhbmNlUHJvcGVydHkiLCJzdHJpbmdWYWx1ZSIsInJnYmEiLCJfQXJyYXkkaXNBcnJheSIsInNhc3NNYXAiLCJjb252ZXJ0ZWQiLCJlbnRyeSIsInNldCIsIktleU9mU2lnbmF0dXJlIiwiX1N5bWJvbCIsInNhc3NGdW5jdGlvbiIsImRlZmluaXRpb24iLCJ0YXJnZXQiLCJSZWZsZWN0IiwiZGVmaW5lTWV0YWRhdGEiLCJnZXRGdW5jdGlvbnMiLCJtb2R1bGVJbXBvcnRzIiwibW9kdWxlcyIsIl9Qcm9taXNlIiwiYWxsIiwibW9kdWxlIiwicmVzb2x2ZSIsInRoZW4iLCJkZWZhdWx0Iiwic2lnbmF0dXJlIiwiZ2V0TWV0YWRhdGEiLCJjdXN0b21GdW5jdGlvbiIsInJhd0FyZ3MiLCJhcmdzIiwicmVzdWx0IiwiX1JlZmxlY3QkY29uc3RydWN0IiwiZXhlY3V0ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUtBOztBQWNBLE1BQU1BLFNBQVMs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
|
|
File without changes
|