@cichol/sass-bridge 4.4.3 → 4.6.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 +27 -0
- package/dists/index.d.ts +27 -0
- package/dists/index.js +191 -0
- package/package.json +22 -18
- package/releases/cjs.js +0 -212
- package/releases/esm.js +0 -191
- package/types/index.d.ts +0 -13
- package/types/type-converter.d.ts +0 -3
- package/types/types.d.ts +0 -31
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY2pzIiwic291cmNlcyI6WyIuLi9zb3VyY2VzL3R5cGVzLnRzIiwiLi4vc291cmNlcy90eXBlLWNvbnZlcnRlci50cyIsIi4uL3NvdXJjZXMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcmQtcGFydHkgbW9kdWxlcy5cbmltcG9ydCB0eXBlIHsgQ29sb3IgfSBmcm9tICdjaHJvbWEtanMnXG5pbXBvcnQgKiBhcyBzYXNzIGZyb20gJ3Nhc3MnXG5pbXBvcnQgeyBWYWx1ZSB9IGZyb20gJ3Nhc3MnXG5cbi8vIFR5cGUgZGVmaW5pdGlvbnMuXG5leHBvcnQgdHlwZSBQcmltaXRpdmVzID0gYm9vbGVhbiB8IG51bWJlciB8IHN0cmluZyB8IG51bGxcblxuZXhwb3J0IHR5cGUgTnVtYmVyV2l0aFVuaXQgPSB7IHZhbHVlOiBudW1iZXIsIHVuaXQ6IHN0cmluZyB9XG5cbmV4cG9ydCB0eXBlIEphdmFTY3JpcHRUeXBlPEJhc2UgPSBQcmltaXRpdmVzIHwgQ29sb3IgfCBOdW1iZXJXaXRoVW5pdD4gPVxuXHR8IEJhc2Vcblx0fCBKYXZhU2NyaXB0VHlwZTxCYXNlPltdXG5cdHwgTWFwPEphdmFTY3JpcHRUeXBlPEJhc2U+LCBKYXZhU2NyaXB0VHlwZTxCYXNlPj5cblxudHlwZSBGaWx0ZXJTYXNzUHJlZml4PFQgZXh0ZW5kcyBzdHJpbmc+ID0gVCBleHRlbmRzIGBTYXNzJHtpbmZlciBSfWAgPyBSIDogbmV2ZXJcblxudHlwZSBTYXNzVHlwZXMgPSBFeGNsdWRlPGBTYXNzJHtGaWx0ZXJTYXNzUHJlZml4PGtleW9mIHR5cGVvZiBzYXNzPn1gLCBgU2FzcyR7J0Jvb2xlYW4nIHwgJ0NhbGN1bGF0aW9uJ31gPlxuXG5jb25zdCBTYXNzVHlwZXMgPSBPYmplY3QuZnJvbUVudHJpZXMoXG5cdE9iamVjdC5rZXlzKHNhc3MpXG5cdFx0LmZpbHRlcihwcm9wZXJ0eUtleSA9PiBwcm9wZXJ0eUtleS5zdGFydHNXaXRoKCdTYXNzJykpXG5cdFx0Lm1hcChwcm9wZXJ0eUtleSA9PiBzYXNzW3Byb3BlcnR5S2V5IGFzIFNhc3NUeXBlc10pXG5cdFx0LmZpbHRlcihjb25zdHJ1Y3RvciA9PiB0eXBlb2YgY29uc3RydWN0b3IgPT09ICdmdW5jdGlvbicpXG5cdFx0LmZpbHRlcihjb25zdHJ1Y3RvciA9PiBPYmplY3QucHJvdG90eXBlLmlzUHJvdG90eXBlT2YuY2FsbChWYWx1ZS5wcm90b3R5cGUsIGNvbnN0cnVjdG9yLnByb3RvdHlwZSkpXG5cdFx0Lm1hcChjb25zdHJ1Y3RvciA9PiBbIGNvbnN0cnVjdG9yLm5hbWUsIGNvbnN0cnVjdG9yIF0gYXMgW1Nhc3NUeXBlcywgKHR5cGVvZiBzYXNzKVtTYXNzVHlwZXNdXSksXG4pIGFzIHsgW1AgaW4gU2Fzc1R5cGVzXTogKHR5cGVvZiBzYXNzKVtQXSB9XG5cbmV4cG9ydCBjb25zdCBTYXNzVFJVRSA9IHNhc3Muc2Fzc1RydWVcbmV4cG9ydCB0eXBlIFNhc3NUUlVFID0gdHlwZW9mIFNhc3NUUlVFXG5cbmV4cG9ydCBjb25zdCBTYXNzRkFMU0UgPSBzYXNzLnNhc3NGYWxzZVxuZXhwb3J0IHR5cGUgU2Fzc0ZBTFNFID0gdHlwZW9mIFNhc3NGQUxTRVxuXG5leHBvcnQgY29uc3QgU2Fzc05VTEwgPSBzYXNzLnNhc3NOdWxsXG5leHBvcnQgdHlwZSBTYXNzTlVMTCA9IHR5cGVvZiBTYXNzTlVMTFxuXG5leHBvcnQgY29uc3QgeyBTYXNzTnVtYmVyIH0gPSBTYXNzVHlwZXNcbmV4cG9ydCB0eXBlIFNhc3NOdW1iZXIgPSBJbnN0YW5jZVR5cGU8dHlwZW9mIFNhc3NOdW1iZXI+XG5cbmV4cG9ydCBjb25zdCB7IFNhc3NTdHJpbmcgfSA9IFNhc3NUeXBlc1xuZXhwb3J0IHR5cGUgU2Fzc1N0cmluZyA9IEluc3RhbmNlVHlwZTx0eXBlb2YgU2Fzc1N0cmluZz5cblxuZXhwb3J0IGNvbnN0IHsgU2Fzc0NvbG9yIH0gPSBTYXNzVHlwZXNcbmV4cG9ydCB0eXBlIFNhc3NDb2xvciA9IEluc3RhbmNlVHlwZTx0eXBlb2YgU2Fzc0NvbG9yPlxuXG5leHBvcnQgY29uc3QgeyBTYXNzTGlzdCB9ID0gU2Fzc1R5cGVzXG5leHBvcnQgdHlwZSBTYXNzTGlzdCA9IEluc3RhbmNlVHlwZTx0eXBlb2YgU2Fzc0xpc3Q+XG5cbmV4cG9ydCBjb25zdCB7IFNhc3NNYXAgfSA9IFNhc3NUeXBlc1xuZXhwb3J0IHR5cGUgU2Fzc01hcCA9IEluc3RhbmNlVHlwZTx0eXBlb2YgU2Fzc01hcD5cblxuZXhwb3J0IGNvbnN0IFNhc3NCb29sZWFuID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKFNhc3NUUlVFKS5jb25zdHJ1Y3RvciBhcyB0eXBlb2Ygc2Fzcy5TYXNzQm9vbGVhblxuZXhwb3J0IHR5cGUgU2Fzc0Jvb2xlYW4gPSBzYXNzLlNhc3NCb29sZWFuXG5cbmV4cG9ydCB0eXBlIFNhc3NUeXBlID1cblx0fCBJbnN0YW5jZVR5cGU8dHlwZW9mIFNhc3NUeXBlcyBleHRlbmRzIFJlY29yZDxhbnksIGluZmVyIFI+ID8gUiA6IG5ldmVyPlxuXHR8IFNhc3NCb29sZWFuXG4iLCIvLyBUaGlyZC1wYXJ0eSBtb2R1bGVzLlxuaW1wb3J0IGNocm9tYSBmcm9tICdjaHJvbWEtanMnXG5cbi8vIExvY2FsIGhlbHBlcnMuXG5pbXBvcnQge1xuXHR0eXBlIFNhc3NUeXBlLFxuXHRTYXNzQm9vbGVhbixcblx0U2Fzc051bWJlcixcblx0U2Fzc1N0cmluZyxcblx0U2Fzc0NvbG9yLFxuXHRTYXNzTGlzdCxcblx0U2Fzc01hcCxcblx0U2Fzc1RSVUUsXG5cdFNhc3NGQUxTRSxcblx0U2Fzc05VTEwsXG5cdHR5cGUgSmF2YVNjcmlwdFR5cGUsXG5cdHR5cGUgTnVtYmVyV2l0aFVuaXQsXG59IGZyb20gJy4vdHlwZXMnXG5cbi8vIEhlbHBlciBmdW5jdGlvbnMuXG5mdW5jdGlvbiBpc09iamVjdCh2YWx1ZT86IHVua25vd24pOiB2YWx1ZSBpcyBvYmplY3Qge1xuXHRjb25zdCB0eXBlID0gdHlwZW9mIHZhbHVlXG5cblx0cmV0dXJuICEhdmFsdWUgJiYgKHR5cGUgPT09ICdvYmplY3QnIHx8IHR5cGUgPT09ICdmdW5jdGlvbicpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYXNzVG9KYXZhU2NyaXB0VHlwZShzYXNzVmFsdWU6IFNhc3NUeXBlKTogSmF2YVNjcmlwdFR5cGUge1xuXHRzd2l0Y2ggKHRydWUpIHtcblx0Y2FzZSBzYXNzVmFsdWUgaW5zdGFuY2VvZiBTYXNzQm9vbGVhbjoge1xuXHRcdHJldHVybiBzYXNzVmFsdWUudmFsdWVcblx0fVxuXG5cdGNhc2Ugc2Fzc1ZhbHVlIGluc3RhbmNlb2YgU2Fzc1N0cmluZzoge1xuXHRcdHJldHVybiBzYXNzVmFsdWUudGV4dFxuXHR9XG5cblx0Y2FzZSBzYXNzVmFsdWUgaW5zdGFuY2VvZiBTYXNzTnVtYmVyOiB7XG5cdFx0Y29uc3QgeyB2YWx1ZSwgbnVtZXJhdG9yVW5pdHMsIGRlbm9taW5hdG9yVW5pdHMgfSA9IHNhc3NWYWx1ZVxuXG5cdFx0Y29uc3QgdW5pdCA9IHNhc3NWYWx1ZS5oYXNVbml0c1xuXHRcdFx0PyBudW1lcmF0b3JVbml0cy5qb2luKCcqJykgKyAoZGVub21pbmF0b3JVbml0cy5zaXplID4gMCA/IGAvJHtkZW5vbWluYXRvclVuaXRzLmpvaW4oJyonKX1gIDogJycpXG5cdFx0XHQ6ICcnXG5cblx0XHRyZXR1cm4gdW5pdCA/IHsgdmFsdWUsIHVuaXQgfSA6IHZhbHVlXG5cdH1cblxuXHRjYXNlIHNhc3NWYWx1ZSBpbnN0YW5jZW9mIFNhc3NDb2xvcjoge1xuXHRcdGNvbnN0IHsgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEgfSA9IHNhc3NWYWx1ZVxuXG5cdFx0cmV0dXJuIGNocm9tYShyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSlcblx0fVxuXG5cdGNhc2Ugc2Fzc1ZhbHVlIGluc3RhbmNlb2YgU2Fzc0xpc3Q6IHtcblx0XHRjb25zdCBsaXN0VmFsdWUgPSBzYXNzVmFsdWUuYXNMaXN0XG5cdFx0Y29uc3QgbGVuZ3RoID0gbGlzdFZhbHVlLnNpemVcblx0XHRjb25zdCBhcnJheSA9IEFycmF5KGxlbmd0aCkuZmlsbCh1bmRlZmluZWQpIGFzIFNhc3NUeXBlW11cblxuXHRcdGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcblx0XHRcdGFycmF5W2luZGV4XSA9IGxpc3RWYWx1ZS5nZXQoaW5kZXgpIGFzIFNhc3NUeXBlXG5cdFx0fVxuXG5cdFx0cmV0dXJuIGFycmF5Lm1hcCh2YWx1ZSA9PiBzYXNzVG9KYXZhU2NyaXB0VHlwZSh2YWx1ZSkpXG5cdH1cblxuXHRjYXNlIHNhc3NWYWx1ZSBpbnN0YW5jZW9mIFNhc3NNYXA6IHtcblx0XHRjb25zdCBtYXBWYWx1ZSA9IHNhc3NWYWx1ZS5jb250ZW50c1xuXG5cdFx0Y29uc3QgZW50cmllcyA9IEFycmF5LmZyb20obWFwVmFsdWUuZW50cmllcygpIGFzIEl0ZXJhYmxlSXRlcmF0b3I8W1Nhc3NUeXBlLCBTYXNzVHlwZV0+KVxuXHRcdFx0Lm1hcCgoWyBrZXksIHZhbHVlIF0pID0+IFsgc2Fzc1RvSmF2YVNjcmlwdFR5cGUoa2V5KSwgc2Fzc1RvSmF2YVNjcmlwdFR5cGUodmFsdWUpIF0pXG5cblx0XHRyZXR1cm4gbmV3IE1hcChlbnRyaWVzIGFzIFtKYXZhU2NyaXB0VHlwZSwgSmF2YVNjcmlwdFR5cGVdW10pXG5cdH1cblxuXHRkZWZhdWx0OiB7XG5cdFx0cmV0dXJuIG51bGxcblx0fVxuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBqYXZhU2NyaXB0VG9TYXNzVHlwZShyYXdWYWx1ZTogSmF2YVNjcmlwdFR5cGUpOiBTYXNzVHlwZSB7XG5cdHN3aXRjaCAodHJ1ZSkge1xuXHRjYXNlIHR5cGVvZiByYXdWYWx1ZSA9PT0gJ2Jvb2xlYW4nOiB7XG5cdFx0Y29uc3QgYm9vbGVhblZhbHVlID0gcmF3VmFsdWVcblxuXHRcdHJldHVybiBib29sZWFuVmFsdWUgPyBTYXNzVFJVRSA6IFNhc3NGQUxTRVxuXHR9XG5cblx0Y2FzZSB0eXBlb2YgcmF3VmFsdWUgPT09ICdudW1iZXInOiB7XG5cdFx0Y29uc3QgbnVtYmVyVmFsdWUgPSByYXdWYWx1ZVxuXG5cdFx0cmV0dXJuIG5ldyBTYXNzTnVtYmVyKG51bWJlclZhbHVlKVxuXHR9XG5cblx0Y2FzZSBpc09iamVjdChyYXdWYWx1ZSkgJiYgWyAndmFsdWUnLCAndW5pdCcgXS5ldmVyeShwcm9wZXJ0eUtleSA9PiBwcm9wZXJ0eUtleSBpbiByYXdWYWx1ZSk6IHtcblx0XHRjb25zdCB7IHZhbHVlLCB1bml0IH0gPSByYXdWYWx1ZSBhcyBOdW1iZXJXaXRoVW5pdFxuXG5cdFx0cmV0dXJuIG5ldyBTYXNzTnVtYmVyKHZhbHVlLCB1bml0KVxuXHR9XG5cblx0Y2FzZSB0eXBlb2YgcmF3VmFsdWUgPT09ICdzdHJpbmcnOiB7XG5cdFx0Y29uc3Qgc3RyaW5nVmFsdWUgPSByYXdWYWx1ZVxuXG5cdFx0cmV0dXJuIG5ldyBTYXNzU3RyaW5nKHN0cmluZ1ZhbHVlKVxuXHR9XG5cblx0Y2FzZSBpc09iamVjdChyYXdWYWx1ZSkgJiYgJ19yZ2InIGluIHJhd1ZhbHVlOiB7XG5cdFx0Y29uc3QgWyByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSBdID0gcmF3VmFsdWUucmdiYSgpIGFzIG51bWJlcltdXG5cblx0XHRyZXR1cm4gbmV3IFNhc3NDb2xvcih7IHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhIH0pXG5cdH1cblxuXHRjYXNlIEFycmF5LmlzQXJyYXkocmF3VmFsdWUpOiB7XG5cdFx0cmV0dXJuIG5ldyBTYXNzTGlzdChyYXdWYWx1ZS5tYXAodmFsdWUgPT4gamF2YVNjcmlwdFRvU2Fzc1R5cGUodmFsdWUpKSlcblx0fVxuXG5cdGNhc2UgcmF3VmFsdWUgaW5zdGFuY2VvZiBNYXA6IHtcblx0XHRjb25zdCBtYXBWYWx1ZSA9IHJhd1ZhbHVlIGFzIE1hcDxKYXZhU2NyaXB0VHlwZSwgSmF2YVNjcmlwdFR5cGU+XG5cdFx0Y29uc3Qgc2Fzc01hcCA9IG5ldyBTYXNzTWFwKClcblxuXHRcdGNvbnN0IGNvbnZlcnRlZCA9IEFycmF5LmZyb20obWFwVmFsdWUuZW50cmllcygpKVxuXHRcdFx0Lm1hcChlbnRyeSA9PiBlbnRyeS5tYXAoamF2YVNjcmlwdFRvU2Fzc1R5cGUpKSBhcyBbU2Fzc1R5cGUsIFNhc3NUeXBlXVtdXG5cblx0XHRmb3IgKGNvbnN0IFsga2V5LCB2YWx1ZSBdIG9mIGNvbnZlcnRlZCkge1xuXHRcdFx0c2Fzc01hcC5jb250ZW50cy5zZXQoa2V5LCB2YWx1ZSlcblx0XHR9XG5cblx0XHRyZXR1cm4gc2Fzc01hcFxuXHR9XG5cblx0ZGVmYXVsdDoge1xuXHRcdHJldHVybiBTYXNzTlVMTFxuXHR9XG5cdH1cbn1cbiIsImltcG9ydCAncmVmbGVjdC1tZXRhZGF0YSdcblxuLy8gVGhpcmQtcGFydHkgbW9kdWxlcy5cbmltcG9ydCB7IEN1c3RvbUZ1bmN0aW9uIH0gZnJvbSAnc2FzcydcblxuLy8gTG9jYWwgaGVscGVycy5cbmltcG9ydCB0eXBlIHsgU2Fzc1R5cGUsIEphdmFTY3JpcHRUeXBlIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7IHNhc3NUb0phdmFTY3JpcHRUeXBlLCBqYXZhU2NyaXB0VG9TYXNzVHlwZSB9IGZyb20gJy4vdHlwZS1jb252ZXJ0ZXInXG5cbi8vIFR5cGUgZGVmaW5pdGlvbnMuXG5leHBvcnQgaW50ZXJmYWNlIEJyaWRnZWRGdW5jdGlvbiB7XG5cdGV4ZWN1dGUoKTogSmF2YVNjcmlwdFR5cGUgfCBQcm9taXNlPEphdmFTY3JpcHRUeXBlPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnN0cnVjdG9yIHtcblx0bmV3ICguLi5hcmdzOiBhbnlbXSk6IEJyaWRnZWRGdW5jdGlvblxufVxuXG4vLyBDb25zdGFudHMuXG5jb25zdCBLZXlPZlNpZ25hdHVyZSA9IFN5bWJvbCgnQGNpY2hvbC9zYXNzLWJyaWRnZTo6S2V5T2ZTaWduYXR1cmUnKVxuXG5leHBvcnQgZnVuY3Rpb24gc2Fzc0Z1bmN0aW9uKGRlZmluaXRpb246IHN0cmluZyk6IENsYXNzRGVjb3JhdG9yIHtcblx0cmV0dXJuICg8VCBleHRlbmRzIENvbnN0cnVjdG9yPih0YXJnZXQ6IFQpID0+IHtcblx0XHRSZWZsZWN0LmRlZmluZU1ldGFkYXRhKEtleU9mU2lnbmF0dXJlLCBkZWZpbml0aW9uLCB0YXJnZXQpXG5cblx0XHRyZXR1cm4gdGFyZ2V0XG5cdH0pIGFzIENsYXNzRGVjb3JhdG9yXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRGdW5jdGlvbnMoXG5cdC4uLm1vZHVsZUltcG9ydHM6IFByb21pc2U8eyBkZWZhdWx0OiBDb25zdHJ1Y3RvciB9PltdXG4pOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIEN1c3RvbUZ1bmN0aW9uPCdhc3luYyc+Pj4ge1xuXHRjb25zdCBtb2R1bGVzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG5cdFx0bW9kdWxlSW1wb3J0cy5tYXAobW9kdWxlID0+IChcblx0XHRcdFByb21pc2UucmVzb2x2ZShtb2R1bGUpXG5cdFx0XHRcdC50aGVuKG1vZHVsZSA9PiBtb2R1bGUuZGVmYXVsdClcblx0XHQpKSxcblx0KVxuXG5cdGNvbnN0IGVudHJpZXMgPSBtb2R1bGVzLm1hcChtb2R1bGUgPT4ge1xuXHRcdGNvbnN0IHNpZ25hdHVyZSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoS2V5T2ZTaWduYXR1cmUsIG1vZHVsZSkgYXMgc3RyaW5nXG5cblx0XHRhc3luYyBmdW5jdGlvbiBjdXN0b21GdW5jdGlvbihyYXdBcmdzOiBTYXNzVHlwZVtdKTogUHJvbWlzZTxTYXNzVHlwZT4ge1xuXHRcdFx0Y29uc3QgYXJncyA9IHJhd0FyZ3MubWFwKHNhc3NUb0phdmFTY3JpcHRUeXBlKVxuXHRcdFx0Y29uc3QgcmVzdWx0ID0gYXdhaXQgUmVmbGVjdC5jb25zdHJ1Y3QobW9kdWxlLCBhcmdzKS5leGVjdXRlKClcblxuXHRcdFx0cmV0dXJuIGphdmFTY3JpcHRUb1Nhc3NUeXBlKHJlc3VsdClcblx0XHR9XG5cblx0XHRyZXR1cm4gWyBzaWduYXR1cmUsIGN1c3RvbUZ1bmN0aW9uIF0gYXMgY29uc3Rcblx0fSlcblxuXHRyZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKGVudHJpZXMpXG59XG4iXSwibmFtZXMiOlsiU2Fzc1R5cGVzIiwiX09iamVjdCRmcm9tRW50cmllcyIsIl9tYXBJbnN0YW5jZVByb3BlcnR5IiwiX2NvbnRleHQiLCJfZmlsdGVySW5zdGFuY2VQcm9wZXJ0eSIsIl9jb250ZXh0MiIsIl9jb250ZXh0MyIsIl9jb250ZXh0NCIsIl9jb250ZXh0NSIsIl9PYmplY3Qka2V5cyIsInNhc3MiLCJjYWxsIiwicHJvcGVydHlLZXkiLCJfc3RhcnRzV2l0aEluc3RhbmNlUHJvcGVydHkiLCJjb25zdHJ1Y3RvciIsIk9iamVjdCIsInByb3RvdHlwZSIsImlzUHJvdG90eXBlT2YiLCJWYWx1ZSIsIm5hbWUiLCJTYXNzVFJVRSIsInNhc3NUcnVlIiwiU2Fzc0ZBTFNFIiwic2Fzc0ZhbHNlIiwiU2Fzc05VTEwiLCJzYXNzTnVsbCIsIlNhc3NOdW1iZXIiLCJTYXNzU3RyaW5nIiwiU2Fzc0NvbG9yIiwiU2Fzc0xpc3QiLCJTYXNzTWFwIiwiU2Fzc0Jvb2xlYW4iLCJfT2JqZWN0JGdldFByb3RvdHlwZU9mIiwiaXNPYmplY3QiLCJ2YWx1ZSIsInR5cGUiLCJzYXNzVG9KYXZhU2NyaXB0VHlwZSIsInNhc3NWYWx1ZSIsInRleHQiLCJudW1lcmF0b3JVbml0cyIsImRlbm9taW5hdG9yVW5pdHMiLCJ1bml0IiwiaGFzVW5pdHMiLCJqb2luIiwic2l6ZSIsInJlZCIsImdyZWVuIiwiYmx1ZSIsImFscGhhIiwiY2hyb21hIiwibGlzdFZhbHVlIiwiYXNMaXN0IiwibGVuZ3RoIiwiYXJyYXkiLCJfZmlsbEluc3RhbmNlUHJvcGVydHkiLCJBcnJheSIsInVuZGVmaW5lZCIsImluZGV4IiwiZ2V0IiwibWFwVmFsdWUiLCJjb250ZW50cyIsImVudHJpZXMiLCJfQXJyYXkkZnJvbSIsIl9lbnRyaWVzSW5zdGFuY2VQcm9wZXJ0eSIsImtleSIsIl9NYXAiLCJqYXZhU2NyaXB0VG9TYXNzVHlwZSIsInJhd1ZhbHVlIiwiYm9vbGVhblZhbHVlIiwibnVtYmVyVmFsdWUiLCJfZXZlcnlJbnN0YW5jZVByb3BlcnR5Iiwic3RyaW5nVmFsdWUiLCJyZ2JhIiwiX0FycmF5JGlzQXJyYXkiLCJzYXNzTWFwIiwiY29udmVydGVkIiwiZW50cnkiLCJzZXQiLCJLZXlPZlNpZ25hdHVyZSIsIl9TeW1ib2wiLCJzYXNzRnVuY3Rpb24iLCJkZWZpbml0aW9uIiwidGFyZ2V0IiwiUmVmbGVjdCIsImRlZmluZU1ldGFkYXRhIiwiZ2V0RnVuY3Rpb25zIiwibW9kdWxlSW1wb3J0cyIsIm1vZHVsZXMiLCJfUHJvbWlzZSIsImFsbCIsIm1vZHVsZSIsInJlc29sdmUiLCJ0aGVuIiwiZGVmYXVsdCIsInNpZ25hdHVyZSIsImdldE1ldGFkYXRhIiwiY3VzdG9tRnVuY3Rpb24iLCJyYXdBcmdzIiwiYXJncyIsInJlc3VsdCIsIl9SZWZsZWN0JGNvbnN0cnVjdCIsImV4ZWN1dGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUtBOztBQWNBLE1BQU1BLFNBQVMsR0FBR0MsbUJBQUEsQ0FDakJDLG9CQUFBLENBQUFDLFFBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsU0FBQSxHQUFBRCx1QkFBQSxDQUFBRSxTQUFBLEdBQUFKLG9CQUFBLENBQUFLLFNBQUEsR0FBQUgsdUJBQUEsQ0FBQUksU0FBQSxHQUFBQyxZQUFBLENBQVlDLGVBQUksQ0FBQyxDQUFBLENBQUFDLElBQUEsQ0FBQUgsU0FBQSxFQUNSSSxXQUFXLElBQUlDLDJCQUFBLENBQUFELFdBQVcsQ0FBQUQsQ0FBQUEsSUFBQSxDQUFYQyxXQUFXLEVBQVksTUFBTSxDQUFDLENBQUMsQ0FBQSxDQUFBRCxJQUFBLENBQUFKLFNBQUEsRUFDakRLLFdBQVcsSUFBSUYsZUFBSSxDQUFDRSxXQUFXLENBQWMsQ0FBQyxDQUFBLENBQUFELElBQUEsQ0FBQUwsU0FBQSxFQUMzQ1EsV0FBVyxJQUFJLE9BQU9BLFdBQVcsS0FBSyxVQUFVLENBQUMsQ0FBQSxDQUFBSCxJQUFBLENBQUFOLFNBQUEsRUFDakRTLFdBQVcsSUFBSUMsTUFBTSxD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
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Color } from 'chroma-js';
|
|
2
|
+
import { CustomFunction } from 'sass';
|
|
3
|
+
|
|
4
|
+
export declare interface BridgedFunction {
|
|
5
|
+
execute(): JavaScriptType | Promise<JavaScriptType>;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export declare interface Constructor {
|
|
9
|
+
new (...args: any[]): BridgedFunction;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export declare function getFunctions(...moduleImports: Promise<{
|
|
13
|
+
default: Constructor;
|
|
14
|
+
}>[]): Promise<Record<string, CustomFunction<'async'>>>;
|
|
15
|
+
|
|
16
|
+
declare type JavaScriptType<Base = Primitives | Color | NumberWithUnit> = Base | JavaScriptType<Base>[] | Map<JavaScriptType<Base>, JavaScriptType<Base>>;
|
|
17
|
+
|
|
18
|
+
declare type NumberWithUnit = {
|
|
19
|
+
value: number;
|
|
20
|
+
unit: string;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
declare type Primitives = boolean | number | string | null;
|
|
24
|
+
|
|
25
|
+
export declare function sassFunction(definition: string): ClassDecorator;
|
|
26
|
+
|
|
27
|
+
export { }
|
package/dists/index.d.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Color } from 'chroma-js';
|
|
2
|
+
import { CustomFunction } from 'sass';
|
|
3
|
+
|
|
4
|
+
export declare interface BridgedFunction {
|
|
5
|
+
execute(): JavaScriptType | Promise<JavaScriptType>;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export declare interface Constructor {
|
|
9
|
+
new (...args: any[]): BridgedFunction;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export declare function getFunctions(...moduleImports: Promise<{
|
|
13
|
+
default: Constructor;
|
|
14
|
+
}>[]): Promise<Record<string, CustomFunction<'async'>>>;
|
|
15
|
+
|
|
16
|
+
declare type JavaScriptType<Base = Primitives | Color | NumberWithUnit> = Base | JavaScriptType<Base>[] | Map<JavaScriptType<Base>, JavaScriptType<Base>>;
|
|
17
|
+
|
|
18
|
+
declare type NumberWithUnit = {
|
|
19
|
+
value: number;
|
|
20
|
+
unit: string;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
declare type Primitives = boolean | number | string | null;
|
|
24
|
+
|
|
25
|
+
export declare function sassFunction(definition: string): ClassDecorator;
|
|
26
|
+
|
|
27
|
+
export { }
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uL3NvdXJjZXMvdHlwZXMudHMiLCIuLi9zb3VyY2VzL3R5cGUtY29udmVydGVyLnRzIiwiLi4vc291cmNlcy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlyZC1wYXJ0eSBtb2R1bGVzLlxuaW1wb3J0IHR5cGUgeyBDb2xvciB9IGZyb20gJ2Nocm9tYS1qcydcbmltcG9ydCAqIGFzIHNhc3MgZnJvbSAnc2FzcydcbmltcG9ydCB7IFZhbHVlIH0gZnJvbSAnc2FzcydcblxuLy8gVHlwZSBkZWZpbml0aW9ucy5cbmV4cG9ydCB0eXBlIFByaW1pdGl2ZXMgPSBib29sZWFuIHwgbnVtYmVyIHwgc3RyaW5nIHwgbnVsbFxuXG5leHBvcnQgdHlwZSBOdW1iZXJXaXRoVW5pdCA9IHsgdmFsdWU6IG51bWJlciwgdW5pdDogc3RyaW5nIH1cblxuZXhwb3J0IHR5cGUgSmF2YVNjcmlwdFR5cGU8QmFzZSA9IFByaW1pdGl2ZXMgfCBDb2xvciB8IE51bWJlcldpdGhVbml0PiA9XG5cdHwgQmFzZVxuXHR8IEphdmFTY3JpcHRUeXBlPEJhc2U+W11cblx0fCBNYXA8SmF2YVNjcmlwdFR5cGU8QmFzZT4sIEphdmFTY3JpcHRUeXBlPEJhc2U+PlxuXG50eXBlIEZpbHRlclNhc3NQcmVmaXg8VCBleHRlbmRzIHN0cmluZz4gPSBUIGV4dGVuZHMgYFNhc3Mke2luZmVyIFJ9YCA/IFIgOiBuZXZlclxuXG50eXBlIFNhc3NUeXBlcyA9IEV4Y2x1ZGU8YFNhc3Mke0ZpbHRlclNhc3NQcmVmaXg8a2V5b2YgdHlwZW9mIHNhc3M+fWAsIGBTYXNzJHsnQm9vbGVhbicgfCAnQ2FsY3VsYXRpb24nfWA+XG5cbmNvbnN0IFNhc3NUeXBlcyA9IE9iamVjdC5mcm9tRW50cmllcyhcblx0T2JqZWN0LmtleXMoc2Fzcylcblx0XHQuZmlsdGVyKHByb3BlcnR5S2V5ID0+IHByb3BlcnR5S2V5LnN0YXJ0c1dpdGgoJ1Nhc3MnKSlcblx0XHQubWFwKHByb3BlcnR5S2V5ID0+IHNhc3NbcHJvcGVydHlLZXkgYXMgU2Fzc1R5cGVzXSlcblx0XHQuZmlsdGVyKGNvbnN0cnVjdG9yID0+IHR5cGVvZiBjb25zdHJ1Y3RvciA9PT0gJ2Z1bmN0aW9uJylcblx0XHQuZmlsdGVyKGNvbnN0cnVjdG9yID0+IE9iamVjdC5wcm90b3R5cGUuaXNQcm90b3R5cGVPZi5jYWxsKFZhbHVlLnByb3RvdHlwZSwgY29uc3RydWN0b3IucHJvdG90eXBlKSlcblx0XHQubWFwKGNvbnN0cnVjdG9yID0+IFsgY29uc3RydWN0b3IubmFtZSwgY29uc3RydWN0b3IgXSBhcyBbU2Fzc1R5cGVzLCAodHlwZW9mIHNhc3MpW1Nhc3NUeXBlc11dKSxcbikgYXMgeyBbUCBpbiBTYXNzVHlwZXNdOiAodHlwZW9mIHNhc3MpW1BdIH1cblxuZXhwb3J0IGNvbnN0IFNhc3NUUlVFID0gc2Fzcy5zYXNzVHJ1ZVxuZXhwb3J0IHR5cGUgU2Fzc1RSVUUgPSB0eXBlb2YgU2Fzc1RSVUVcblxuZXhwb3J0IGNvbnN0IFNhc3NGQUxTRSA9IHNhc3Muc2Fzc0ZhbHNlXG5leHBvcnQgdHlwZSBTYXNzRkFMU0UgPSB0eXBlb2YgU2Fzc0ZBTFNFXG5cbmV4cG9ydCBjb25zdCBTYXNzTlVMTCA9IHNhc3Muc2Fzc051bGxcbmV4cG9ydCB0eXBlIFNhc3NOVUxMID0gdHlwZW9mIFNhc3NOVUxMXG5cbmV4cG9ydCBjb25zdCB7IFNhc3NOdW1iZXIgfSA9IFNhc3NUeXBlc1xuZXhwb3J0IHR5cGUgU2Fzc051bWJlciA9IEluc3RhbmNlVHlwZTx0eXBlb2YgU2Fzc051bWJlcj5cblxuZXhwb3J0IGNvbnN0IHsgU2Fzc1N0cmluZyB9ID0gU2Fzc1R5cGVzXG5leHBvcnQgdHlwZSBTYXNzU3RyaW5nID0gSW5zdGFuY2VUeXBlPHR5cGVvZiBTYXNzU3RyaW5nPlxuXG5leHBvcnQgY29uc3QgeyBTYXNzQ29sb3IgfSA9IFNhc3NUeXBlc1xuZXhwb3J0IHR5cGUgU2Fzc0NvbG9yID0gSW5zdGFuY2VUeXBlPHR5cGVvZiBTYXNzQ29sb3I+XG5cbmV4cG9ydCBjb25zdCB7IFNhc3NMaXN0IH0gPSBTYXNzVHlwZXNcbmV4cG9ydCB0eXBlIFNhc3NMaXN0ID0gSW5zdGFuY2VUeXBlPHR5cGVvZiBTYXNzTGlzdD5cblxuZXhwb3J0IGNvbnN0IHsgU2Fzc01hcCB9ID0gU2Fzc1R5cGVzXG5leHBvcnQgdHlwZSBTYXNzTWFwID0gSW5zdGFuY2VUeXBlPHR5cGVvZiBTYXNzTWFwPlxuXG5leHBvcnQgY29uc3QgU2Fzc0Jvb2xlYW4gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoU2Fzc1RSVUUpLmNvbnN0cnVjdG9yIGFzIHR5cGVvZiBzYXNzLlNhc3NCb29sZWFuXG5leHBvcnQgdHlwZSBTYXNzQm9vbGVhbiA9IHNhc3MuU2Fzc0Jvb2xlYW5cblxuZXhwb3J0IHR5cGUgU2Fzc1R5cGUgPVxuXHR8IEluc3RhbmNlVHlwZTx0eXBlb2YgU2Fzc1R5cGVzIGV4dGVuZHMgUmVjb3JkPGFueSwgaW5mZXIgUj4gPyBSIDogbmV2ZXI+XG5cdHwgU2Fzc0Jvb2xlYW5cbiIsIi8vIFRoaXJkLXBhcnR5IG1vZHVsZXMuXG5pbXBvcnQgY2hyb21hIGZyb20gJ2Nocm9tYS1qcydcblxuLy8gTG9jYWwgaGVscGVycy5cbmltcG9ydCB7XG5cdHR5cGUgU2Fzc1R5cGUsXG5cdFNhc3NCb29sZWFuLFxuXHRTYXNzTnVtYmVyLFxuXHRTYXNzU3RyaW5nLFxuXHRTYXNzQ29sb3IsXG5cdFNhc3NMaXN0LFxuXHRTYXNzTWFwLFxuXHRTYXNzVFJVRSxcblx0U2Fzc0ZBTFNFLFxuXHRTYXNzTlVMTCxcblx0dHlwZSBKYXZhU2NyaXB0VHlwZSxcblx0dHlwZSBOdW1iZXJXaXRoVW5pdCxcbn0gZnJvbSAnLi90eXBlcydcblxuLy8gSGVscGVyIGZ1bmN0aW9ucy5cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlPzogdW5rbm93bik6IHZhbHVlIGlzIG9iamVjdCB7XG5cdGNvbnN0IHR5cGUgPSB0eXBlb2YgdmFsdWVcblxuXHRyZXR1cm4gISF2YWx1ZSAmJiAodHlwZSA9PT0gJ29iamVjdCcgfHwgdHlwZSA9PT0gJ2Z1bmN0aW9uJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNhc3NUb0phdmFTY3JpcHRUeXBlKHNhc3NWYWx1ZTogU2Fzc1R5cGUpOiBKYXZhU2NyaXB0VHlwZSB7XG5cdHN3aXRjaCAodHJ1ZSkge1xuXHRjYXNlIHNhc3NWYWx1ZSBpbnN0YW5jZW9mIFNhc3NCb29sZWFuOiB7XG5cdFx0cmV0dXJuIHNhc3NWYWx1ZS52YWx1ZVxuXHR9XG5cblx0Y2FzZSBzYXNzVmFsdWUgaW5zdGFuY2VvZiBTYXNzU3RyaW5nOiB7XG5cdFx0cmV0dXJuIHNhc3NWYWx1ZS50ZXh0XG5cdH1cblxuXHRjYXNlIHNhc3NWYWx1ZSBpbnN0YW5jZW9mIFNhc3NOdW1iZXI6IHtcblx0XHRjb25zdCB7IHZhbHVlLCBudW1lcmF0b3JVbml0cywgZGVub21pbmF0b3JVbml0cyB9ID0gc2Fzc1ZhbHVlXG5cblx0XHRjb25zdCB1bml0ID0gc2Fzc1ZhbHVlLmhhc1VuaXRzXG5cdFx0XHQ/IG51bWVyYXRvclVuaXRzLmpvaW4oJyonKSArIChkZW5vbWluYXRvclVuaXRzLnNpemUgPiAwID8gYC8ke2Rlbm9taW5hdG9yVW5pdHMuam9pbignKicpfWAgOiAnJylcblx0XHRcdDogJydcblxuXHRcdHJldHVybiB1bml0ID8geyB2YWx1ZSwgdW5pdCB9IDogdmFsdWVcblx0fVxuXG5cdGNhc2Ugc2Fzc1ZhbHVlIGluc3RhbmNlb2YgU2Fzc0NvbG9yOiB7XG5cdFx0Y29uc3QgeyByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSB9ID0gc2Fzc1ZhbHVlXG5cblx0XHRyZXR1cm4gY2hyb21hKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKVxuXHR9XG5cblx0Y2FzZSBzYXNzVmFsdWUgaW5zdGFuY2VvZiBTYXNzTGlzdDoge1xuXHRcdGNvbnN0IGxpc3RWYWx1ZSA9IHNhc3NWYWx1ZS5hc0xpc3Rcblx0XHRjb25zdCBsZW5ndGggPSBsaXN0VmFsdWUuc2l6ZVxuXHRcdGNvbnN0IGFycmF5ID0gQXJyYXkobGVuZ3RoKS5maWxsKHVuZGVmaW5lZCkgYXMgU2Fzc1R5cGVbXVxuXG5cdFx0Zm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuXHRcdFx0YXJyYXlbaW5kZXhdID0gbGlzdFZhbHVlLmdldChpbmRleCkgYXMgU2Fzc1R5cGVcblx0XHR9XG5cblx0XHRyZXR1cm4gYXJyYXkubWFwKHZhbHVlID0+IHNhc3NUb0phdmFTY3JpcHRUeXBlKHZhbHVlKSlcblx0fVxuXG5cdGNhc2Ugc2Fzc1ZhbHVlIGluc3RhbmNlb2YgU2Fzc01hcDoge1xuXHRcdGNvbnN0IG1hcFZhbHVlID0gc2Fzc1ZhbHVlLmNvbnRlbnRzXG5cblx0XHRjb25zdCBlbnRyaWVzID0gQXJyYXkuZnJvbShtYXBWYWx1ZS5lbnRyaWVzKCkgYXMgSXRlcmFibGVJdGVyYXRvcjxbU2Fzc1R5cGUsIFNhc3NUeXBlXT4pXG5cdFx0XHQubWFwKChbIGtleSwgdmFsdWUgXSkgPT4gWyBzYXNzVG9KYXZhU2NyaXB0VHlwZShrZXkpLCBzYXNzVG9KYXZhU2NyaXB0VHlwZSh2YWx1ZSkgXSlcblxuXHRcdHJldHVybiBuZXcgTWFwKGVudHJpZXMgYXMgW0phdmFTY3JpcHRUeXBlLCBKYXZhU2NyaXB0VHlwZV1bXSlcblx0fVxuXG5cdGRlZmF1bHQ6IHtcblx0XHRyZXR1cm4gbnVsbFxuXHR9XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGphdmFTY3JpcHRUb1Nhc3NUeXBlKHJhd1ZhbHVlOiBKYXZhU2NyaXB0VHlwZSk6IFNhc3NUeXBlIHtcblx0c3dpdGNoICh0cnVlKSB7XG5cdGNhc2UgdHlwZW9mIHJhd1ZhbHVlID09PSAnYm9vbGVhbic6IHtcblx0XHRjb25zdCBib29sZWFuVmFsdWUgPSByYXdWYWx1ZVxuXG5cdFx0cmV0dXJuIGJvb2xlYW5WYWx1ZSA/IFNhc3NUUlVFIDogU2Fzc0ZBTFNFXG5cdH1cblxuXHRjYXNlIHR5cGVvZiByYXdWYWx1ZSA9PT0gJ251bWJlcic6IHtcblx0XHRjb25zdCBudW1iZXJWYWx1ZSA9IHJhd1ZhbHVlXG5cblx0XHRyZXR1cm4gbmV3IFNhc3NOdW1iZXIobnVtYmVyVmFsdWUpXG5cdH1cblxuXHRjYXNlIGlzT2JqZWN0KHJhd1ZhbHVlKSAmJiBbICd2YWx1ZScsICd1bml0JyBdLmV2ZXJ5KHByb3BlcnR5S2V5ID0+IHByb3BlcnR5S2V5IGluIHJhd1ZhbHVlKToge1xuXHRcdGNvbnN0IHsgdmFsdWUsIHVuaXQgfSA9IHJhd1ZhbHVlIGFzIE51bWJlcldpdGhVbml0XG5cblx0XHRyZXR1cm4gbmV3IFNhc3NOdW1iZXIodmFsdWUsIHVuaXQpXG5cdH1cblxuXHRjYXNlIHR5cGVvZiByYXdWYWx1ZSA9PT0gJ3N0cmluZyc6IHtcblx0XHRjb25zdCBzdHJpbmdWYWx1ZSA9IHJhd1ZhbHVlXG5cblx0XHRyZXR1cm4gbmV3IFNhc3NTdHJpbmcoc3RyaW5nVmFsdWUpXG5cdH1cblxuXHRjYXNlIGlzT2JqZWN0KHJhd1ZhbHVlKSAmJiAnX3JnYicgaW4gcmF3VmFsdWU6IHtcblx0XHRjb25zdCBbIHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhIF0gPSByYXdWYWx1ZS5yZ2JhKCkgYXMgbnVtYmVyW11cblxuXHRcdHJldHVybiBuZXcgU2Fzc0NvbG9yKHsgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEgfSlcblx0fVxuXG5cdGNhc2UgQXJyYXkuaXNBcnJheShyYXdWYWx1ZSk6IHtcblx0XHRyZXR1cm4gbmV3IFNhc3NMaXN0KHJhd1ZhbHVlLm1hcCh2YWx1ZSA9PiBqYXZhU2NyaXB0VG9TYXNzVHlwZSh2YWx1ZSkpKVxuXHR9XG5cblx0Y2FzZSByYXdWYWx1ZSBpbnN0YW5jZW9mIE1hcDoge1xuXHRcdGNvbnN0IG1hcFZhbHVlID0gcmF3VmFsdWUgYXMgTWFwPEphdmFTY3JpcHRUeXBlLCBKYXZhU2NyaXB0VHlwZT5cblx0XHRjb25zdCBzYXNzTWFwID0gbmV3IFNhc3NNYXAoKVxuXG5cdFx0Y29uc3QgY29udmVydGVkID0gQXJyYXkuZnJvbShtYXBWYWx1ZS5lbnRyaWVzKCkpXG5cdFx0XHQubWFwKGVudHJ5ID0+IGVudHJ5Lm1hcChqYXZhU2NyaXB0VG9TYXNzVHlwZSkpIGFzIFtTYXNzVHlwZSwgU2Fzc1R5cGVdW11cblxuXHRcdGZvciAoY29uc3QgWyBrZXksIHZhbHVlIF0gb2YgY29udmVydGVkKSB7XG5cdFx0XHRzYXNzTWFwLmNvbnRlbnRzLnNldChrZXksIHZhbHVlKVxuXHRcdH1cblxuXHRcdHJldHVybiBzYXNzTWFwXG5cdH1cblxuXHRkZWZhdWx0OiB7XG5cdFx0cmV0dXJuIFNhc3NOVUxMXG5cdH1cblx0fVxufVxuIiwiaW1wb3J0ICdyZWZsZWN0LW1ldGFkYXRhJ1xuXG4vLyBUaGlyZC1wYXJ0eSBtb2R1bGVzLlxuaW1wb3J0IHsgQ3VzdG9tRnVuY3Rpb24gfSBmcm9tICdzYXNzJ1xuXG4vLyBMb2NhbCBoZWxwZXJzLlxuaW1wb3J0IHR5cGUgeyBTYXNzVHlwZSwgSmF2YVNjcmlwdFR5cGUgfSBmcm9tICcuL3R5cGVzJ1xuaW1wb3J0IHsgc2Fzc1RvSmF2YVNjcmlwdFR5cGUsIGphdmFTY3JpcHRUb1Nhc3NUeXBlIH0gZnJvbSAnLi90eXBlLWNvbnZlcnRlcidcblxuLy8gVHlwZSBkZWZpbml0aW9ucy5cbmV4cG9ydCBpbnRlcmZhY2UgQnJpZGdlZEZ1bmN0aW9uIHtcblx0ZXhlY3V0ZSgpOiBKYXZhU2NyaXB0VHlwZSB8IFByb21pc2U8SmF2YVNjcmlwdFR5cGU+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uc3RydWN0b3Ige1xuXHRuZXcgKC4uLmFyZ3M6IGFueVtdKTogQnJpZGdlZEZ1bmN0aW9uXG59XG5cbi8vIENvbnN0YW50cy5cbmNvbnN0IEtleU9mU2lnbmF0dXJlID0gU3ltYm9sKCdAY2ljaG9sL3Nhc3MtYnJpZGdlOjpLZXlPZlNpZ25hdHVyZScpXG5cbmV4cG9ydCBmdW5jdGlvbiBzYXNzRnVuY3Rpb24oZGVmaW5pdGlvbjogc3RyaW5nKTogQ2xhc3NEZWNvcmF0b3Ige1xuXHRyZXR1cm4gKDxUIGV4dGVuZHMgQ29uc3RydWN0b3I+KHRhcmdldDogVCkgPT4ge1xuXHRcdFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoS2V5T2ZTaWduYXR1cmUsIGRlZmluaXRpb24sIHRhcmdldClcblxuXHRcdHJldHVybiB0YXJnZXRcblx0fSkgYXMgQ2xhc3NEZWNvcmF0b3Jcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEZ1bmN0aW9ucyhcblx0Li4ubW9kdWxlSW1wb3J0czogUHJvbWlzZTx7IGRlZmF1bHQ6IENvbnN0cnVjdG9yIH0+W11cbik6IFByb21pc2U8UmVjb3JkPHN0cmluZywgQ3VzdG9tRnVuY3Rpb248J2FzeW5jJz4+PiB7XG5cdGNvbnN0IG1vZHVsZXMgPSBhd2FpdCBQcm9taXNlLmFsbChcblx0XHRtb2R1bGVJbXBvcnRzLm1hcChtb2R1bGUgPT4gKFxuXHRcdFx0UHJvbWlzZS5yZXNvbHZlKG1vZHVsZSlcblx0XHRcdFx0LnRoZW4obW9kdWxlID0+IG1vZHVsZS5kZWZhdWx0KVxuXHRcdCkpLFxuXHQpXG5cblx0Y29uc3QgZW50cmllcyA9IG1vZHVsZXMubWFwKG1vZHVsZSA9PiB7XG5cdFx0Y29uc3Qgc2lnbmF0dXJlID0gUmVmbGVjdC5nZXRNZXRhZGF0YShLZXlPZlNpZ25hdHVyZSwgbW9kdWxlKSBhcyBzdHJpbmdcblxuXHRcdGFzeW5jIGZ1bmN0aW9uIGN1c3RvbUZ1bmN0aW9uKHJhd0FyZ3M6IFNhc3NUeXBlW10pOiBQcm9taXNlPFNhc3NUeXBlPiB7XG5cdFx0XHRjb25zdCBhcmdzID0gcmF3QXJncy5tYXAoc2Fzc1RvSmF2YVNjcmlwdFR5cGUpXG5cdFx0XHRjb25zdCByZXN1bHQgPSBhd2FpdCBSZWZsZWN0LmNvbnN0cnVjdChtb2R1bGUsIGFyZ3MpLmV4ZWN1dGUoKVxuXG5cdFx0XHRyZXR1cm4gamF2YVNjcmlwdFRvU2Fzc1R5cGUocmVzdWx0KVxuXHRcdH1cblxuXHRcdHJldHVybiBbIHNpZ25hdHVyZSwgY3VzdG9tRnVuY3Rpb24gXSBhcyBjb25zdFxuXHR9KVxuXG5cdHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoZW50cmllcylcbn1cbiJdLCJuYW1lcyI6WyJTYXNzVHlwZXMiLCJfT2JqZWN0JGZyb21FbnRyaWVzIiwiX21hcEluc3RhbmNlUHJvcGVydHkiLCJfY29udGV4dCIsIl9maWx0ZXJJbnN0YW5jZVByb3BlcnR5IiwiX2NvbnRleHQyIiwiX2NvbnRleHQzIiwiX2NvbnRleHQ0IiwiX2NvbnRleHQ1IiwiX09iamVjdCRrZXlzIiwic2FzcyIsImNhbGwiLCJwcm9wZXJ0eUtleSIsIl9zdGFydHNXaXRoSW5zdGFuY2VQcm9wZXJ0eSIsImNvbnN0cnVjdG9yIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaXNQcm90b3R5cGVPZiIsIlZhbHVlIiwibmFtZSIsIlNhc3NUUlVFIiwic2Fzc1RydWUiLCJTYXNzRkFMU0UiLCJzYXNzRmFsc2UiLCJTYXNzTlVMTCIsInNhc3NOdWxsIiwiU2Fzc051bWJlciIsIlNhc3NTdHJpbmciLCJTYXNzQ29sb3IiLCJTYXNzTGlzdCIsIlNhc3NNYXAiLCJTYXNzQm9vbGVhbiIsIl9PYmplY3QkZ2V0UHJvdG90eXBlT2YiLCJpc09iamVjdCIsInZhbHVlIiwidHlwZSIsInNhc3NUb0phdmFTY3JpcHRUeXBlIiwic2Fzc1ZhbHVlIiwidGV4dCIsIm51bWVyYXRvclVuaXRzIiwiZGVub21pbmF0b3JVbml0cyIsInVuaXQiLCJoYXNVbml0cyIsImpvaW4iLCJzaXplIiwicmVkIiwiZ3JlZW4iLCJibHVlIiwiYWxwaGEiLCJjaHJvbWEiLCJsaXN0VmFsdWUiLCJhc0xpc3QiLCJsZW5ndGgiLCJhcnJheSIsIl9maWxsSW5zdGFuY2VQcm9wZXJ0eSIsIkFycmF5IiwidW5kZWZpbmVkIiwiaW5kZXgiLCJnZXQiLCJtYXBWYWx1ZSIsImNvbnRlbnRzIiwiZW50cmllcyIsIl9BcnJheSRmcm9tIiwiX2VudHJpZXNJbnN0YW5jZVByb3BlcnR5Iiwia2V5IiwiX01hcCIsImphdmFTY3JpcHRUb1Nhc3NUeXBlIiwicmF3VmFsdWUiLCJib29sZWFuVmFsdWUiLCJudW1iZXJWYWx1ZSIsIl9ldmVyeUluc3RhbmNlUHJvcGVydHkiLCJzdHJpbmdWYWx1ZSIsInJnYmEiLCJfQXJyYXkkaXNBcnJheSIsInNhc3NNYXAiLCJjb252ZXJ0ZWQiLCJlbnRyeSIsInNldCIsIktleU9mU2lnbmF0dXJlIiwiX1N5bWJvbCIsInNhc3NGdW5jdGlvbiIsImRlZmluaXRpb24iLCJ0YXJnZXQiLCJSZWZsZWN0IiwiZGVmaW5lTWV0YWRhdGEiLCJnZXRGdW5jdGlvbnMiLCJtb2R1bGVJbXBvcnRzIiwibW9kdWxlcyIsIl9Qcm9taXNlIiwiYWxsIiwibW9kdWxlIiwicmVzb2x2ZSIsInRoZW4iLCJkZWZhdWx0Iiwic2lnbmF0dXJlIiwiZ2V0TWV0YWRhdGEiLCJjdXN0b21GdW5jdGlvbiIsInJhd0FyZ3MiLCJhcmdzIiwicmVzdWx0IiwiX1JlZmxlY3QkY29uc3RydWN0IiwiZXhlY3V0ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUtBOztBQWNBLE1BQU1BLFNBQVMsR0FBR0MsbUJBQUEsQ0FDakJDLG9CQUFBLENBQUFDLFFBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsU0FBQSxHQUFBRCx1QkFBQSxDQUFBRSxTQUFBLEdBQUFKLG9CQUFBLENBQUFLLFNBQUEsR0FBQUgsdUJBQUEsQ0FBQUksU0FBQSxHQUFBQyxZQUFBLENBQVlDLElBQUksQ0FBQyxDQUFBLENBQUFDLElBQUEsQ0FBQUgsU0FBQSxFQUNSSSxXQUFXLElBQUlDLDJCQUFBLENBQUFELFdBQVcsQ0FBQUQsQ0FBQUEsSUFBQSxDQUFYQyxXQUFXLEVBQVksTUFBTSxDQUFDLENBQUMsQ0FBQSxDQUFBRCxJQUFBLENBQUFKLFNBQUEsRUFDakRLLFdBQVcsSUFBSUYsSUFBSSxDQUFDRSxXQUFXLENBQWMsQ0FBQyxDQUFBLENBQUFELElBQUEsQ0FBQUwsU0FBQSxFQUMzQ1EsV0FBVyxJQUFJLE9BQU9BLFdBQVcsS0FBSyxVQUFVLENBQUMsQ0FBQSxDQUFBSCxJQUFBLENBQUFOLFNBQUEsRUFDakRTLFdBQVcsSUFBSUMsTUFBTSxDQUFDQyxTQUFTLENBQUNDLGFBQWEs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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cichol/sass-bridge",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.6.0",
|
|
4
4
|
"description": "A bridge interface to define Sass custom functions.",
|
|
5
5
|
"homepage": "https://github.com/morrighan/packages",
|
|
6
6
|
"bugs": {
|
|
@@ -13,35 +13,39 @@
|
|
|
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
|
-
|
|
25
|
-
|
|
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"
|
|
26
31
|
},
|
|
27
32
|
"repository": {
|
|
28
33
|
"type": "git",
|
|
29
34
|
"url": "git+https://github.com/morrighan/packages.git",
|
|
30
35
|
"directory": "packages/sass-bridge"
|
|
31
36
|
},
|
|
32
|
-
"scripts": {
|
|
33
|
-
"build": "npm run build:tsc",
|
|
34
|
-
"build:tsc": "npx tsc --project sources --outDir types"
|
|
35
|
-
},
|
|
36
37
|
"dependencies": {
|
|
37
38
|
"chroma-js": "^3.1.2",
|
|
38
|
-
"core-js-pure": "^3.
|
|
39
|
+
"core-js-pure": "^3.39.0",
|
|
39
40
|
"reflect-metadata": "^0.2.2",
|
|
40
|
-
"sass": "npm:sass-embedded@^1.
|
|
41
|
+
"sass": "npm:sass-embedded@^1.83.0"
|
|
42
|
+
},
|
|
43
|
+
"devDependencies": {
|
|
44
|
+
"@cichol/sass-bridge": "file:."
|
|
41
45
|
},
|
|
42
46
|
"engines": {
|
|
43
|
-
"node": "^20.18.
|
|
44
|
-
"npm": "^
|
|
47
|
+
"node": "^20.18.1",
|
|
48
|
+
"npm": "^11.0.0"
|
|
45
49
|
},
|
|
46
50
|
"publishConfig": {
|
|
47
51
|
"registry": "https://registry.npmjs.org/",
|
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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
|
package/types/index.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
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: JavaScriptType[]): 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'>>>;
|
package/types/types.d.ts
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import type { Color } from 'chroma-js';
|
|
2
|
-
import * as sass from 'sass';
|
|
3
|
-
export type Primitives = boolean | number | string;
|
|
4
|
-
export type NumberWithUnit = {
|
|
5
|
-
value: number;
|
|
6
|
-
unit: string;
|
|
7
|
-
};
|
|
8
|
-
export type JavaScriptType<Base = Primitives | Color | NumberWithUnit | null> = 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 {};
|