@nlabs/lex 1.55.1 → 1.56.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/README.md +29 -0
- package/lib/LexConfig.d.ts +7 -3
- package/lib/LexConfig.js +8 -2
- package/lib/commands/build/build.d.ts +3 -2
- package/lib/commands/build/build.js +2 -2
- package/lib/commands/dev/dev.d.ts +1 -0
- package/lib/commands/dev/dev.js +21 -8
- package/lib/commands/publish/publish.js +10 -5
- package/lib/commands/serverless/serverless.js +15 -13
- package/lib/commands/test/test.js +2 -2
- package/lib/commands/versions/versions.d.ts +1 -1
- package/lib/commands/versions/versions.js +2 -2
- package/lib/create/changelog.d.ts +11 -6
- package/lib/create/changelog.js +5 -5
- package/lib/lex.js +4 -4
- package/lib/types/modules.d.js +2 -0
- package/lib/utils/app.d.ts +4 -4
- package/lib/utils/app.js +6 -6
- package/lib/utils/postcss/postcss-for.d.ts +9 -1
- package/lib/utils/postcss/postcss-for.js +7 -6
- package/lib/utils/postcss/postcss-percentage.d.ts +3 -2
- package/lib/utils/postcss/postcss-percentage.js +1 -2
- package/lib/utils/webpack/LexSvgSpritemapPlugin.d.ts +20 -0
- package/lib/utils/webpack/LexSvgSpritemapPlugin.js +257 -0
- package/package.json +43 -45
- package/tsconfig.json +1 -0
- package/webpack.config.js +6 -13
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
function _define_property(obj, key, value) {
|
|
2
|
+
if (key in obj) {
|
|
3
|
+
Object.defineProperty(obj, key, {
|
|
4
|
+
value: value,
|
|
5
|
+
enumerable: true,
|
|
6
|
+
configurable: true,
|
|
7
|
+
writable: true
|
|
8
|
+
});
|
|
9
|
+
} else {
|
|
10
|
+
obj[key] = value;
|
|
11
|
+
}
|
|
12
|
+
return obj;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Copyright (c) 2018-Present, Nitrogen Labs, Inc.
|
|
16
|
+
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
17
|
+
*/ import { readFileSync } from 'fs';
|
|
18
|
+
import { sync as globSync } from 'glob';
|
|
19
|
+
import { basename as pathBasename, dirname as pathDirname, extname as pathExtname, resolve as pathResolve } from 'path';
|
|
20
|
+
import { optimize } from 'svgo';
|
|
21
|
+
import webpack from 'webpack';
|
|
22
|
+
const DEFAULT_FILENAME = 'icons/icons.svg';
|
|
23
|
+
const PLUGIN_NAME = 'LexSvgSpritemapPlugin';
|
|
24
|
+
const ROOT_EXCLUDED_ATTRIBUTES = new Set([
|
|
25
|
+
'height',
|
|
26
|
+
'id',
|
|
27
|
+
'version',
|
|
28
|
+
'viewBox',
|
|
29
|
+
'width',
|
|
30
|
+
'xmlns'
|
|
31
|
+
]);
|
|
32
|
+
const escapeAttribute = (value)=>{
|
|
33
|
+
return value.replaceAll('&', '&').replaceAll('"', '"').replaceAll('<', '<').replaceAll('>', '>');
|
|
34
|
+
};
|
|
35
|
+
const normalizeAssetFilename = (filename)=>{
|
|
36
|
+
return filename.replace(/^[./]+/, '');
|
|
37
|
+
};
|
|
38
|
+
const parseAttributes = (input)=>{
|
|
39
|
+
const attributes = {};
|
|
40
|
+
const attributeRegex = /([:@\w-]+)\s*=\s*("([^"]*)"|'([^']*)')/g;
|
|
41
|
+
let match = attributeRegex.exec(input);
|
|
42
|
+
while(match){
|
|
43
|
+
attributes[match[1]] = match[3] ?? match[4] ?? '';
|
|
44
|
+
match = attributeRegex.exec(input);
|
|
45
|
+
}
|
|
46
|
+
return attributes;
|
|
47
|
+
};
|
|
48
|
+
const parseSvg = (source)=>{
|
|
49
|
+
const svgMatch = source.replace(/<\?xml[\s\S]*?\?>/ig, '').replace(/<!doctype[\s\S]*?>/ig, '').match(/<svg\b([^>]*)>([\s\S]*?)<\/svg>/i);
|
|
50
|
+
if (!svgMatch) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
attributes: parseAttributes(svgMatch[1] || ''),
|
|
55
|
+
content: svgMatch[2]?.trim() || ''
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
const buildAttributeString = (attributes)=>{
|
|
59
|
+
return Object.entries(attributes).map(([name, value])=>`${name}="${escapeAttribute(value)}"`).join(' ');
|
|
60
|
+
};
|
|
61
|
+
const sanitizeIdentifier = (value)=>{
|
|
62
|
+
const sanitizedValue = value.trim().replaceAll(/\s+/g, '-').replaceAll(/[^A-Za-z0-9_-]/g, '-').replaceAll(/-{2,}/g, '-').replaceAll(/^[-_]+|[-_]+$/g, '');
|
|
63
|
+
const safeValue = sanitizedValue || 'icon';
|
|
64
|
+
return /^[A-Za-z_]/.test(safeValue) ? safeValue : `icon-${safeValue}`;
|
|
65
|
+
};
|
|
66
|
+
const getPrefix = (filePath, prefix)=>{
|
|
67
|
+
if (prefix === false) {
|
|
68
|
+
return '';
|
|
69
|
+
}
|
|
70
|
+
if (typeof prefix === 'function') {
|
|
71
|
+
return prefix(filePath);
|
|
72
|
+
}
|
|
73
|
+
return prefix || '';
|
|
74
|
+
};
|
|
75
|
+
const optimizeSvg = (content, enabled)=>{
|
|
76
|
+
if (!enabled) {
|
|
77
|
+
return content;
|
|
78
|
+
}
|
|
79
|
+
return optimize(content, {
|
|
80
|
+
multipass: true,
|
|
81
|
+
plugins: [
|
|
82
|
+
{
|
|
83
|
+
name: 'preset-default',
|
|
84
|
+
params: {
|
|
85
|
+
overrides: {
|
|
86
|
+
cleanupIds: false
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
]
|
|
91
|
+
}).data;
|
|
92
|
+
};
|
|
93
|
+
const createSpriteSymbol = (filePath, usedIdentifiers, prefix, warnings)=>{
|
|
94
|
+
const source = readFileSync(filePath, 'utf8');
|
|
95
|
+
const parsedSvg = parseSvg(source);
|
|
96
|
+
if (!parsedSvg) {
|
|
97
|
+
warnings.push(new webpack.WebpackError(`Invalid SVG icon: ${filePath}`));
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
if (!parsedSvg.content) {
|
|
101
|
+
warnings.push(new webpack.WebpackError(`SVG icon is empty: ${filePath}`));
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
const rawIdentifier = `${getPrefix(filePath, prefix)}${pathBasename(filePath, pathExtname(filePath))}`;
|
|
105
|
+
const baseIdentifier = sanitizeIdentifier(rawIdentifier);
|
|
106
|
+
let identifier = baseIdentifier;
|
|
107
|
+
let duplicateIndex = 1;
|
|
108
|
+
while(usedIdentifiers.has(identifier)){
|
|
109
|
+
duplicateIndex += 1;
|
|
110
|
+
identifier = `${baseIdentifier}-${duplicateIndex}`;
|
|
111
|
+
}
|
|
112
|
+
if (identifier !== baseIdentifier) {
|
|
113
|
+
warnings.push(new webpack.WebpackError(`Duplicate SVG icon id "${baseIdentifier}" detected, using "${identifier}" for ${filePath}`));
|
|
114
|
+
}
|
|
115
|
+
usedIdentifiers.add(identifier);
|
|
116
|
+
const namespaceAttributes = Object.entries(parsedSvg.attributes).reduce((result, [name, value])=>{
|
|
117
|
+
if (name.toLowerCase().startsWith('xmlns:')) {
|
|
118
|
+
result[name] = value;
|
|
119
|
+
}
|
|
120
|
+
return result;
|
|
121
|
+
}, {});
|
|
122
|
+
const symbolAttributes = Object.entries(parsedSvg.attributes).reduce((result, [name, value])=>{
|
|
123
|
+
if (ROOT_EXCLUDED_ATTRIBUTES.has(name)) {
|
|
124
|
+
return result;
|
|
125
|
+
}
|
|
126
|
+
if (name.toLowerCase().startsWith('xmlns:')) {
|
|
127
|
+
return result;
|
|
128
|
+
}
|
|
129
|
+
result[name] = value;
|
|
130
|
+
return result;
|
|
131
|
+
}, {
|
|
132
|
+
id: identifier
|
|
133
|
+
});
|
|
134
|
+
if (parsedSvg.attributes.viewBox) {
|
|
135
|
+
symbolAttributes.viewBox = parsedSvg.attributes.viewBox;
|
|
136
|
+
} else {
|
|
137
|
+
const width = Number.parseFloat(parsedSvg.attributes.width || '');
|
|
138
|
+
const height = Number.parseFloat(parsedSvg.attributes.height || '');
|
|
139
|
+
if (Number.isFinite(width) && Number.isFinite(height)) {
|
|
140
|
+
symbolAttributes.viewBox = `0 0 ${width} ${height}`;
|
|
141
|
+
} else {
|
|
142
|
+
warnings.push(new webpack.WebpackError(`SVG icon is missing a viewBox and readable width/height: ${filePath}`));
|
|
143
|
+
return null;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return {
|
|
147
|
+
filePath,
|
|
148
|
+
namespaceAttributes,
|
|
149
|
+
symbol: `<symbol ${buildAttributeString(symbolAttributes)}>${parsedSvg.content}</symbol>`
|
|
150
|
+
};
|
|
151
|
+
};
|
|
152
|
+
const collectFiles = (patterns, allowDuplicates)=>{
|
|
153
|
+
const files = patterns.flatMap((pattern)=>{
|
|
154
|
+
return globSync(pattern, {
|
|
155
|
+
absolute: true,
|
|
156
|
+
dot: false,
|
|
157
|
+
nodir: true
|
|
158
|
+
});
|
|
159
|
+
}).map((filePath)=>pathResolve(filePath));
|
|
160
|
+
if (allowDuplicates) {
|
|
161
|
+
return files;
|
|
162
|
+
}
|
|
163
|
+
return [
|
|
164
|
+
...new Set(files)
|
|
165
|
+
];
|
|
166
|
+
};
|
|
167
|
+
export class LexSvgSpritemapPlugin {
|
|
168
|
+
buildSpritemap() {
|
|
169
|
+
const warnings = [];
|
|
170
|
+
const filePaths = collectFiles(this.patterns, this.options.allowDuplicates);
|
|
171
|
+
if (filePaths.length === 0) {
|
|
172
|
+
return {
|
|
173
|
+
content: null,
|
|
174
|
+
filePaths,
|
|
175
|
+
warnings
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
const namespaceAttributes = {};
|
|
179
|
+
const usedIdentifiers = new Set();
|
|
180
|
+
const symbols = filePaths.map((filePath)=>{
|
|
181
|
+
return createSpriteSymbol(filePath, usedIdentifiers, this.options.prefix, warnings);
|
|
182
|
+
}).filter((entry)=>entry !== null);
|
|
183
|
+
if (symbols.length === 0) {
|
|
184
|
+
return {
|
|
185
|
+
content: null,
|
|
186
|
+
filePaths,
|
|
187
|
+
warnings
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
for (const symbol of symbols){
|
|
191
|
+
for (const [name, value] of Object.entries(symbol.namespaceAttributes)){
|
|
192
|
+
namespaceAttributes[name] = value;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
const rootAttributes = buildAttributeString({
|
|
196
|
+
xmlns: 'http://www.w3.org/2000/svg',
|
|
197
|
+
...namespaceAttributes
|
|
198
|
+
});
|
|
199
|
+
const spriteContent = `<svg ${rootAttributes}>${symbols.map((symbol)=>symbol.symbol).join('')}</svg>`;
|
|
200
|
+
return {
|
|
201
|
+
content: optimizeSvg(spriteContent, this.options.optimize),
|
|
202
|
+
filePaths,
|
|
203
|
+
warnings
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
apply(compiler) {
|
|
207
|
+
compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation)=>{
|
|
208
|
+
const directories = new Set();
|
|
209
|
+
const spritemap = this.buildSpritemap();
|
|
210
|
+
for (const filePath of spritemap.filePaths){
|
|
211
|
+
compilation.fileDependencies.add(filePath);
|
|
212
|
+
directories.add(pathDirname(filePath));
|
|
213
|
+
}
|
|
214
|
+
for (const pattern of this.patterns){
|
|
215
|
+
const baseDirectory = pathResolve(pattern.replace(/\*.*$/, ''));
|
|
216
|
+
directories.add(baseDirectory);
|
|
217
|
+
}
|
|
218
|
+
for (const directory of directories){
|
|
219
|
+
compilation.contextDependencies.add(directory);
|
|
220
|
+
}
|
|
221
|
+
if (spritemap.warnings.length > 0) {
|
|
222
|
+
compilation.warnings.push(...spritemap.warnings);
|
|
223
|
+
}
|
|
224
|
+
compilation.hooks.processAssets.tap({
|
|
225
|
+
name: PLUGIN_NAME,
|
|
226
|
+
stage: webpack.Compilation.PROCESS_ASSETS_STAGE_ADDITIONAL
|
|
227
|
+
}, ()=>{
|
|
228
|
+
if (!spritemap.content) {
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
const assetName = this.options.filename;
|
|
232
|
+
const source = new webpack.sources.RawSource(spritemap.content);
|
|
233
|
+
if (compilation.getAsset(assetName)) {
|
|
234
|
+
compilation.updateAsset(assetName, source);
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
compilation.emitAsset(assetName, source);
|
|
238
|
+
});
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
constructor(patterns, options = {}){
|
|
242
|
+
_define_property(this, "patterns", void 0);
|
|
243
|
+
_define_property(this, "options", void 0);
|
|
244
|
+
this.patterns = Array.isArray(patterns) ? patterns : [
|
|
245
|
+
patterns
|
|
246
|
+
];
|
|
247
|
+
this.options = {
|
|
248
|
+
allowDuplicates: options.allowDuplicates ?? false,
|
|
249
|
+
filename: normalizeAssetFilename(options.filename || DEFAULT_FILENAME),
|
|
250
|
+
optimize: options.optimize ?? true,
|
|
251
|
+
prefix: options.prefix ?? false
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
export default LexSvgSpritemapPlugin;
|
|
256
|
+
|
|
257
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy93ZWJwYWNrL0xleFN2Z1Nwcml0ZW1hcFBsdWdpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtyZWFkRmlsZVN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCB7c3luYyBhcyBnbG9iU3luY30gZnJvbSAnZ2xvYic7XG5pbXBvcnQge2Jhc2VuYW1lIGFzIHBhdGhCYXNlbmFtZSwgZGlybmFtZSBhcyBwYXRoRGlybmFtZSwgZXh0bmFtZSBhcyBwYXRoRXh0bmFtZSwgcmVzb2x2ZSBhcyBwYXRoUmVzb2x2ZX0gZnJvbSAncGF0aCc7XG5pbXBvcnQge29wdGltaXplfSBmcm9tICdzdmdvJztcbmltcG9ydCB3ZWJwYWNrIGZyb20gJ3dlYnBhY2snO1xuXG50eXBlIElkZW50aWZpZXJQcmVmaXggPSBmYWxzZSB8IHN0cmluZyB8ICgoZmlsZVBhdGg6IHN0cmluZykgPT4gc3RyaW5nKTtcblxuZXhwb3J0IGludGVyZmFjZSBMZXhTdmdTcHJpdGVtYXBQbHVnaW5PcHRpb25zIHtcbiAgcmVhZG9ubHkgYWxsb3dEdXBsaWNhdGVzPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgZmlsZW5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG9wdGltaXplPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgcHJlZml4PzogSWRlbnRpZmllclByZWZpeDtcbn1cblxuaW50ZXJmYWNlIFBhcnNlZFN2ZyB7XG4gIHJlYWRvbmx5IGF0dHJpYnV0ZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIHJlYWRvbmx5IGNvbnRlbnQ6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFNwcml0ZVN5bWJvbCB7XG4gIHJlYWRvbmx5IGZpbGVQYXRoOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWVzcGFjZUF0dHJpYnV0ZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIHJlYWRvbmx5IHN5bWJvbDogc3RyaW5nO1xufVxuXG5jb25zdCBERUZBVUxUX0ZJTEVOQU1FID0gJ2ljb25zL2ljb25zLnN2Zyc7XG5jb25zdCBQTFVHSU5fTkFNRSA9ICdMZXhTdmdTcHJpdGVtYXBQbHVnaW4nO1xuY29uc3QgUk9PVF9FWENMVURFRF9BVFRSSUJVVEVTID0gbmV3IFNldChbXG4gICdoZWlnaHQnLFxuICAnaWQnLFxuICAndmVyc2lvbicsXG4gICd2aWV3Qm94JyxcbiAgJ3dpZHRoJyxcbiAgJ3htbG5zJ1xuXSk7XG5cbmNvbnN0IGVzY2FwZUF0dHJpYnV0ZSA9ICh2YWx1ZTogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIHZhbHVlXG4gICAgLnJlcGxhY2VBbGwoJyYnLCAnJmFtcDsnKVxuICAgIC5yZXBsYWNlQWxsKCdcIicsICcmcXVvdDsnKVxuICAgIC5yZXBsYWNlQWxsKCc8JywgJyZsdDsnKVxuICAgIC5yZXBsYWNlQWxsKCc+JywgJyZndDsnKTtcbn07XG5cbmNvbnN0IG5vcm1hbGl6ZUFzc2V0RmlsZW5hbWUgPSAoZmlsZW5hbWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBmaWxlbmFtZS5yZXBsYWNlKC9eWy4vXSsvLCAnJyk7XG59O1xuXG5jb25zdCBwYXJzZUF0dHJpYnV0ZXMgPSAoaW5wdXQ6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPT4ge1xuICBjb25zdCBhdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gIGNvbnN0IGF0dHJpYnV0ZVJlZ2V4ID0gLyhbOkBcXHctXSspXFxzKj1cXHMqKFwiKFteXCJdKilcInwnKFteJ10qKScpL2c7XG5cbiAgbGV0IG1hdGNoOiBSZWdFeHBFeGVjQXJyYXkgfCBudWxsID0gYXR0cmlidXRlUmVnZXguZXhlYyhpbnB1dCk7XG4gIHdoaWxlKG1hdGNoKSB7XG4gICAgYXR0cmlidXRlc1ttYXRjaFsxXV0gPSBtYXRjaFszXSA/PyBtYXRjaFs0XSA/PyAnJztcbiAgICBtYXRjaCA9IGF0dHJpYnV0ZVJlZ2V4LmV4ZWMoaW5wdXQpO1xuICB9XG5cbiAgcmV0dXJuIGF0dHJpYnV0ZXM7XG59O1xuXG5jb25zdCBwYXJzZVN2ZyA9IChzb3VyY2U6IHN0cmluZyk6IFBhcnNlZFN2ZyB8IG51bGwgPT4ge1xuICBjb25zdCBzdmdNYXRjaCA9IHNvdXJjZVxuICAgIC5yZXBsYWNlKC88XFw/eG1sW1xcc1xcU10qP1xcPz4vaWcsICcnKVxuICAgIC5yZXBsYWNlKC88IWRvY3R5cGVbXFxzXFxTXSo/Pi9pZywgJycpXG4gICAgLm1hdGNoKC88c3ZnXFxiKFtePl0qKT4oW1xcc1xcU10qPyk8XFwvc3ZnPi9pKTtcblxuICBpZighc3ZnTWF0Y2gpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYXR0cmlidXRlczogcGFyc2VBdHRyaWJ1dGVzKHN2Z01hdGNoWzFdIHx8ICcnKSxcbiAgICBjb250ZW50OiBzdmdNYXRjaFsyXT8udHJpbSgpIHx8ICcnXG4gIH07XG59O1xuXG5jb25zdCBidWlsZEF0dHJpYnV0ZVN0cmluZyA9IChhdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGF0dHJpYnV0ZXMpXG4gICAgLm1hcCgoW25hbWUsIHZhbHVlXSkgPT4gYCR7bmFtZX09XCIke2VzY2FwZUF0dHJpYnV0ZSh2YWx1ZSl9XCJgKVxuICAgIC5qb2luKCcgJyk7XG59O1xuXG5jb25zdCBzYW5pdGl6ZUlkZW50aWZpZXIgPSAodmFsdWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHNhbml0aXplZFZhbHVlID0gdmFsdWVcbiAgICAudHJpbSgpXG4gICAgLnJlcGxhY2VBbGwoL1xccysvZywgJy0nKVxuICAgIC5yZXBsYWNlQWxsKC9bXkEtWmEtejAtOV8tXS9nLCAnLScpXG4gICAgLnJlcGxhY2VBbGwoLy17Mix9L2csICctJylcbiAgICAucmVwbGFjZUFsbCgvXlstX10rfFstX10rJC9nLCAnJyk7XG5cbiAgY29uc3Qgc2FmZVZhbHVlID0gc2FuaXRpemVkVmFsdWUgfHwgJ2ljb24nO1xuXG4gIHJldHVybiAvXltBLVphLXpfXS8udGVzdChzYWZlVmFsdWUpID8gc2FmZVZhbHVlIDogYGljb24tJHtzYWZlVmFsdWV9YDtcbn07XG5cbmNvbnN0IGdldFByZWZpeCA9IChmaWxlUGF0aDogc3RyaW5nLCBwcmVmaXg6IElkZW50aWZpZXJQcmVmaXgpOiBzdHJpbmcgPT4ge1xuICBpZihwcmVmaXggPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgaWYodHlwZW9mIHByZWZpeCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBwcmVmaXgoZmlsZVBhdGgpO1xuICB9XG5cbiAgcmV0dXJuIHByZWZpeCB8fCAnJztcbn07XG5cbmNvbnN0IG9wdGltaXplU3ZnID0gKGNvbnRlbnQ6IHN0cmluZywgZW5hYmxlZDogYm9vbGVhbik6IHN0cmluZyA9PiB7XG4gIGlmKCFlbmFibGVkKSB7XG4gICAgcmV0dXJuIGNvbnRlbnQ7XG4gIH1cblxuICByZXR1cm4gb3B0aW1pemUoY29udGVudCwge1xuICAgIG11bHRpcGFzczogdHJ1ZSxcbiAgICBwbHVnaW5zOiBbe1xuICAgICAgbmFtZTogJ3ByZXNldC1kZWZhdWx0JyxcbiAgICAgIHBhcmFtczoge1xuICAgICAgICBvdmVycmlkZXM6IHtcbiAgICAgICAgICBjbGVhbnVwSWRzOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfV1cbiAgfSkuZGF0YTtcbn07XG5cbmNvbnN0IGNyZWF0ZVNwcml0ZVN5bWJvbCA9IChcbiAgZmlsZVBhdGg6IHN0cmluZyxcbiAgdXNlZElkZW50aWZpZXJzOiBTZXQ8c3RyaW5nPixcbiAgcHJlZml4OiBJZGVudGlmaWVyUHJlZml4LFxuICB3YXJuaW5nczogd2VicGFjay5XZWJwYWNrRXJyb3JbXVxuKTogU3ByaXRlU3ltYm9sIHwgbnVsbCA9PiB7XG4gIGNvbnN0IHNvdXJjZSA9IHJlYWRGaWxlU3luYyhmaWxlUGF0aCwgJ3V0ZjgnKTtcbiAgY29uc3QgcGFyc2VkU3ZnID0gcGFyc2VTdmcoc291cmNlKTtcblxuICBpZighcGFyc2VkU3ZnKSB7XG4gICAgd2FybmluZ3MucHVzaChuZXcgd2VicGFjay5XZWJwYWNrRXJyb3IoYEludmFsaWQgU1ZHIGljb246ICR7ZmlsZVBhdGh9YCkpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYoIXBhcnNlZFN2Zy5jb250ZW50KSB7XG4gICAgd2FybmluZ3MucHVzaChuZXcgd2VicGFjay5XZWJwYWNrRXJyb3IoYFNWRyBpY29uIGlzIGVtcHR5OiAke2ZpbGVQYXRofWApKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHJhd0lkZW50aWZpZXIgPSBgJHtnZXRQcmVmaXgoZmlsZVBhdGgsIHByZWZpeCl9JHtwYXRoQmFzZW5hbWUoZmlsZVBhdGgsIHBhdGhFeHRuYW1lKGZpbGVQYXRoKSl9YDtcbiAgY29uc3QgYmFzZUlkZW50aWZpZXIgPSBzYW5pdGl6ZUlkZW50aWZpZXIocmF3SWRlbnRpZmllcik7XG5cbiAgbGV0IGlkZW50aWZpZXIgPSBiYXNlSWRlbnRpZmllcjtcbiAgbGV0IGR1cGxpY2F0ZUluZGV4ID0gMTtcblxuICB3aGlsZSh1c2VkSWRlbnRpZmllcnMuaGFzKGlkZW50aWZpZXIpKSB7XG4gICAgZHVwbGljYXRlSW5kZXggKz0gMTtcbiAgICBpZGVudGlmaWVyID0gYCR7YmFzZUlkZW50aWZpZXJ9LSR7ZHVwbGljYXRlSW5kZXh9YDtcbiAgfVxuXG4gIGlmKGlkZW50aWZpZXIgIT09IGJhc2VJZGVudGlmaWVyKSB7XG4gICAgd2FybmluZ3MucHVzaChuZXcgd2VicGFjay5XZWJwYWNrRXJyb3IoYER1cGxpY2F0ZSBTVkcgaWNvbiBpZCBcIiR7YmFzZUlkZW50aWZpZXJ9XCIgZGV0ZWN0ZWQsIHVzaW5nIFwiJHtpZGVudGlmaWVyfVwiIGZvciAke2ZpbGVQYXRofWApKTtcbiAgfVxuXG4gIHVzZWRJZGVudGlmaWVycy5hZGQoaWRlbnRpZmllcik7XG5cbiAgY29uc3QgbmFtZXNwYWNlQXR0cmlidXRlcyA9IE9iamVjdC5lbnRyaWVzKHBhcnNlZFN2Zy5hdHRyaWJ1dGVzKS5yZWR1Y2U8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4oKHJlc3VsdCwgW25hbWUsIHZhbHVlXSkgPT4ge1xuICAgIGlmKG5hbWUudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCd4bWxuczonKSkge1xuICAgICAgcmVzdWx0W25hbWVdID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSwge30pO1xuXG4gIGNvbnN0IHN5bWJvbEF0dHJpYnV0ZXMgPSBPYmplY3QuZW50cmllcyhwYXJzZWRTdmcuYXR0cmlidXRlcykucmVkdWNlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KChyZXN1bHQsIFtuYW1lLCB2YWx1ZV0pID0+IHtcbiAgICBpZihST09UX0VYQ0xVREVEX0FUVFJJQlVURVMuaGFzKG5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGlmKG5hbWUudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCd4bWxuczonKSkge1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICByZXN1bHRbbmFtZV0gPSB2YWx1ZTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0sIHtcbiAgICBpZDogaWRlbnRpZmllclxuICB9KTtcblxuICBpZihwYXJzZWRTdmcuYXR0cmlidXRlcy52aWV3Qm94KSB7XG4gICAgc3ltYm9sQXR0cmlidXRlcy52aWV3Qm94ID0gcGFyc2VkU3ZnLmF0dHJpYnV0ZXMudmlld0JveDtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB3aWR0aCA9IE51bWJlci5wYXJzZUZsb2F0KHBhcnNlZFN2Zy5hdHRyaWJ1dGVzLndpZHRoIHx8ICcnKTtcbiAgICBjb25zdCBoZWlnaHQgPSBOdW1iZXIucGFyc2VGbG9hdChwYXJzZWRTdmcuYXR0cmlidXRlcy5oZWlnaHQgfHwgJycpO1xuXG4gICAgaWYoTnVtYmVyLmlzRmluaXRlKHdpZHRoKSAmJiBOdW1iZXIuaXNGaW5pdGUoaGVpZ2h0KSkge1xuICAgICAgc3ltYm9sQXR0cmlidXRlcy52aWV3Qm94ID0gYDAgMCAke3dpZHRofSAke2hlaWdodH1gO1xuICAgIH0gZWxzZSB7XG4gICAgICB3YXJuaW5ncy5wdXNoKG5ldyB3ZWJwYWNrLldlYnBhY2tFcnJvcihgU1ZHIGljb24gaXMgbWlzc2luZyBhIHZpZXdCb3ggYW5kIHJlYWRhYmxlIHdpZHRoL2hlaWdodDogJHtmaWxlUGF0aH1gKSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGZpbGVQYXRoLFxuICAgIG5hbWVzcGFjZUF0dHJpYnV0ZXMsXG4gICAgc3ltYm9sOiBgPHN5bWJvbCAke2J1aWxkQXR0cmlidXRlU3RyaW5nKHN5bWJvbEF0dHJpYnV0ZXMpfT4ke3BhcnNlZFN2Zy5jb250ZW50fTwvc3ltYm9sPmBcbiAgfTtcbn07XG5cbmNvbnN0IGNvbGxlY3RGaWxlcyA9IChwYXR0ZXJuczogcmVhZG9ubHkgc3RyaW5nW10sIGFsbG93RHVwbGljYXRlczogYm9vbGVhbik6IHN0cmluZ1tdID0+IHtcbiAgY29uc3QgZmlsZXMgPSBwYXR0ZXJucy5mbGF0TWFwKChwYXR0ZXJuKSA9PiB7XG4gICAgcmV0dXJuIGdsb2JTeW5jKHBhdHRlcm4sIHtcbiAgICAgIGFic29sdXRlOiB0cnVlLFxuICAgICAgZG90OiBmYWxzZSxcbiAgICAgIG5vZGlyOiB0cnVlXG4gICAgfSkgYXMgc3RyaW5nW107XG4gIH0pLm1hcCgoZmlsZVBhdGgpID0+IHBhdGhSZXNvbHZlKGZpbGVQYXRoKSk7XG5cbiAgaWYoYWxsb3dEdXBsaWNhdGVzKSB7XG4gICAgcmV0dXJuIGZpbGVzO1xuICB9XG5cbiAgcmV0dXJuIFsuLi5uZXcgU2V0KGZpbGVzKV07XG59O1xuXG5leHBvcnQgY2xhc3MgTGV4U3ZnU3ByaXRlbWFwUGx1Z2luIHtcbiAgcmVhZG9ubHkgcGF0dGVybnM6IHN0cmluZ1tdO1xuICByZWFkb25seSBvcHRpb25zOiBSZXF1aXJlZDxMZXhTdmdTcHJpdGVtYXBQbHVnaW5PcHRpb25zPjtcblxuICBjb25zdHJ1Y3RvcihwYXR0ZXJuczogc3RyaW5nIHwgc3RyaW5nW10sIG9wdGlvbnM6IExleFN2Z1Nwcml0ZW1hcFBsdWdpbk9wdGlvbnMgPSB7fSkge1xuICAgIHRoaXMucGF0dGVybnMgPSBBcnJheS5pc0FycmF5KHBhdHRlcm5zKSA/IHBhdHRlcm5zIDogW3BhdHRlcm5zXTtcbiAgICB0aGlzLm9wdGlvbnMgPSB7XG4gICAgICBhbGxvd0R1cGxpY2F0ZXM6IG9wdGlvbnMuYWxsb3dEdXBsaWNhdGVzID8/IGZhbHNlLFxuICAgICAgZmlsZW5hbWU6IG5vcm1hbGl6ZUFzc2V0RmlsZW5hbWUob3B0aW9ucy5maWxlbmFtZSB8fCBERUZBVUxUX0ZJTEVOQU1FKSxcbiAgICAgIG9wdGltaXplOiBvcHRpb25zLm9wdGltaXplID8/IHRydWUsXG4gICAgICBwcmVmaXg6IG9wdGlvbnMucHJlZml4ID8/IGZhbHNlXG4gICAgfTtcbiAgfVxuXG4gIGJ1aWxkU3ByaXRlbWFwKCk6IHtjb250ZW50OiBzdHJpbmcgfCBudWxsOyBmaWxlUGF0aHM6IHN0cmluZ1tdOyB3YXJuaW5nczogd2VicGFjay5XZWJwYWNrRXJyb3JbXX0ge1xuICAgIGNvbnN0IHdhcm5pbmdzOiB3ZWJwYWNrLldlYnBhY2tFcnJvcltdID0gW107XG4gICAgY29uc3QgZmlsZVBhdGhzID0gY29sbGVjdEZpbGVzKHRoaXMucGF0dGVybnMsIHRoaXMub3B0aW9ucy5hbGxvd0R1cGxpY2F0ZXMpO1xuXG4gICAgaWYoZmlsZVBhdGhzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29udGVudDogbnVsbCxcbiAgICAgICAgZmlsZVBhdGhzLFxuICAgICAgICB3YXJuaW5nc1xuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBuYW1lc3BhY2VBdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gICAgY29uc3QgdXNlZElkZW50aWZpZXJzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgY29uc3Qgc3ltYm9scyA9IGZpbGVQYXRocy5tYXAoKGZpbGVQYXRoKSA9PiB7XG4gICAgICByZXR1cm4gY3JlYXRlU3ByaXRlU3ltYm9sKGZpbGVQYXRoLCB1c2VkSWRlbnRpZmllcnMsIHRoaXMub3B0aW9ucy5wcmVmaXgsIHdhcm5pbmdzKTtcbiAgICB9KS5maWx0ZXIoKGVudHJ5KTogZW50cnkgaXMgU3ByaXRlU3ltYm9sID0+IGVudHJ5ICE9PSBudWxsKTtcblxuICAgIGlmKHN5bWJvbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb250ZW50OiBudWxsLFxuICAgICAgICBmaWxlUGF0aHMsXG4gICAgICAgIHdhcm5pbmdzXG4gICAgICB9O1xuICAgIH1cblxuICAgIGZvcihjb25zdCBzeW1ib2wgb2Ygc3ltYm9scykge1xuICAgICAgZm9yKGNvbnN0IFtuYW1lLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoc3ltYm9sLm5hbWVzcGFjZUF0dHJpYnV0ZXMpKSB7XG4gICAgICAgIG5hbWVzcGFjZUF0dHJpYnV0ZXNbbmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCByb290QXR0cmlidXRlcyA9IGJ1aWxkQXR0cmlidXRlU3RyaW5nKHtcbiAgICAgIHhtbG5zOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLFxuICAgICAgLi4ubmFtZXNwYWNlQXR0cmlidXRlc1xuICAgIH0pO1xuICAgIGNvbnN0IHNwcml0ZUNvbnRlbnQgPSBgPHN2ZyAke3Jvb3RBdHRyaWJ1dGVzfT4ke3N5bWJvbHMubWFwKChzeW1ib2wpID0+IHN5bWJvbC5zeW1ib2wpLmpvaW4oJycpfTwvc3ZnPmA7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29udGVudDogb3B0aW1pemVTdmcoc3ByaXRlQ29udGVudCwgdGhpcy5vcHRpb25zLm9wdGltaXplKSxcbiAgICAgIGZpbGVQYXRocyxcbiAgICAgIHdhcm5pbmdzXG4gICAgfTtcbiAgfVxuXG4gIGFwcGx5KGNvbXBpbGVyOiB3ZWJwYWNrLkNvbXBpbGVyKTogdm9pZCB7XG4gICAgY29tcGlsZXIuaG9va3MudGhpc0NvbXBpbGF0aW9uLnRhcChQTFVHSU5fTkFNRSwgKGNvbXBpbGF0aW9uKSA9PiB7XG4gICAgICBjb25zdCBkaXJlY3RvcmllcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgY29uc3Qgc3ByaXRlbWFwID0gdGhpcy5idWlsZFNwcml0ZW1hcCgpO1xuXG4gICAgICBmb3IoY29uc3QgZmlsZVBhdGggb2Ygc3ByaXRlbWFwLmZpbGVQYXRocykge1xuICAgICAgICBjb21waWxhdGlvbi5maWxlRGVwZW5kZW5jaWVzLmFkZChmaWxlUGF0aCk7XG4gICAgICAgIGRpcmVjdG9yaWVzLmFkZChwYXRoRGlybmFtZShmaWxlUGF0aCkpO1xuICAgICAgfVxuXG4gICAgICBmb3IoY29uc3QgcGF0dGVybiBvZiB0aGlzLnBhdHRlcm5zKSB7XG4gICAgICAgIGNvbnN0IGJhc2VEaXJlY3RvcnkgPSBwYXRoUmVzb2x2ZShwYXR0ZXJuLnJlcGxhY2UoL1xcKi4qJC8sICcnKSk7XG4gICAgICAgIGRpcmVjdG9yaWVzLmFkZChiYXNlRGlyZWN0b3J5KTtcbiAgICAgIH1cblxuICAgICAgZm9yKGNvbnN0IGRpcmVjdG9yeSBvZiBkaXJlY3Rvcmllcykge1xuICAgICAgICBjb21waWxhdGlvbi5jb250ZXh0RGVwZW5kZW5jaWVzLmFkZChkaXJlY3RvcnkpO1xuICAgICAgfVxuXG4gICAgICBpZihzcHJpdGVtYXAud2FybmluZ3MubGVuZ3RoID4gMCkge1xuICAgICAgICBjb21waWxhdGlvbi53YXJuaW5ncy5wdXNoKC4uLnNwcml0ZW1hcC53YXJuaW5ncyk7XG4gICAgICB9XG5cbiAgICAgIGNvbXBpbGF0aW9uLmhvb2tzLnByb2Nlc3NBc3NldHMudGFwKHtcbiAgICAgICAgbmFtZTogUExVR0lOX05BTUUsXG4gICAgICAgIHN0YWdlOiB3ZWJwYWNrLkNvbXBpbGF0aW9uLlBST0NFU1NfQVNTRVRTX1NUQUdFX0FERElUSU9OQUxcbiAgICAgIH0sICgpID0+IHtcbiAgICAgICAgaWYoIXNwcml0ZW1hcC5jb250ZW50KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXNzZXROYW1lID0gdGhpcy5vcHRpb25zLmZpbGVuYW1lO1xuICAgICAgICBjb25zdCBzb3VyY2UgPSBuZXcgd2VicGFjay5zb3VyY2VzLlJhd1NvdXJjZShzcHJpdGVtYXAuY29udGVudCk7XG5cbiAgICAgICAgaWYoY29tcGlsYXRpb24uZ2V0QXNzZXQoYXNzZXROYW1lKSkge1xuICAgICAgICAgIGNvbXBpbGF0aW9uLnVwZGF0ZUFzc2V0KGFzc2V0TmFtZSwgc291cmNlKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb21waWxhdGlvbi5lbWl0QXNzZXQoYXNzZXROYW1lLCBzb3VyY2UpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTGV4U3ZnU3ByaXRlbWFwUGx1Z2luO1xuIl0sIm5hbWVzIjpbInJlYWRGaWxlU3luYyIsInN5bmMiLCJnbG9iU3luYyIsImJhc2VuYW1lIiwicGF0aEJhc2VuYW1lIiwiZGlybmFtZSIsInBhdGhEaXJuYW1lIiwiZXh0bmFtZSIsInBhdGhFeHRuYW1lIiwicmVzb2x2ZSIsInBhdGhSZXNvbHZlIiwib3B0aW1pemUiLCJ3ZWJwYWNrIiwiREVGQVVMVF9GSUxFTkFNRSIsIlBMVUdJTl9OQU1FIiwiUk9PVF9FWENMVURFRF9BVFRSSUJVVEVTIiwiU2V0IiwiZXNjYXBlQXR0cmlidXRlIiwidmFsdWUiLCJyZXBsYWNlQWxsIiwibm9ybWFsaXplQXNzZXRGaWxlbmFtZSIsImZpbGVuYW1lIiwicmVwbGFjZSIsInBhcnNlQXR0cmlidXRlcyIsImlucHV0IiwiYXR0cmlidXRlcyIsImF0dHJpYnV0ZVJlZ2V4IiwibWF0Y2giLCJleGVjIiwicGFyc2VTdmciLCJzb3VyY2UiLCJzdmdNYXRjaCIsImNvbnRlbnQiLCJ0cmltIiwiYnVpbGRBdHRyaWJ1dGVTdHJpbmciLCJPYmplY3QiLCJlbnRyaWVzIiwibWFwIiwibmFtZSIsImpvaW4iLCJzYW5pdGl6ZUlkZW50aWZpZXIiLCJzYW5pdGl6ZWRWYWx1ZSIsInNhZmVWYWx1ZSIsInRlc3QiLCJnZXRQcmVmaXgiLCJmaWxlUGF0aCIsInByZWZpeCIsIm9wdGltaXplU3ZnIiwiZW5hYmxlZCIsIm11bHRpcGFzcyIsInBsdWdpbnMiLCJwYXJhbXMiLCJvdmVycmlkZXMiLCJjbGVhbnVwSWRzIiwiZGF0YSIsImNyZWF0ZVNwcml0ZVN5bWJvbCIsInVzZWRJZGVudGlmaWVycyIsIndhcm5pbmdzIiwicGFyc2VkU3ZnIiwicHVzaCIsIldlYnBhY2tFcnJvciIsInJhd0lkZW50aWZpZXIiLCJiYXNlSWRlbnRpZmllciIsImlkZW50aWZpZXIiLCJkdXBsaWNhdGVJbmRleCIsImhhcyIsImFkZCIsIm5hbWVzcGFjZUF0dHJpYnV0ZXMiLCJyZWR1Y2UiLCJyZXN1bHQiLCJ0b0xvd2VyQ2FzZSIsInN0YXJ0c1dpdGgiLCJzeW1ib2xBdHRyaWJ1dGVzIiwiaWQiLCJ2aWV3Qm94Iiwid2lkdGgiLCJOdW1iZXIiLCJwYXJzZUZsb2F0IiwiaGVpZ2h0IiwiaXNGaW5pdGUiLCJzeW1ib2wiLCJjb2xsZWN0RmlsZXMiLCJwYXR0ZXJucyIsImFsbG93RHVwbGljYXRlcyIsImZpbGVzIiwiZmxhdE1hcCIsInBhdHRlcm4iLCJhYnNvbHV0ZSIsImRvdCIsIm5vZGlyIiwiTGV4U3ZnU3ByaXRlbWFwUGx1Z2luIiwiYnVpbGRTcHJpdGVtYXAiLCJmaWxlUGF0aHMiLCJvcHRpb25zIiwibGVuZ3RoIiwic3ltYm9scyIsImZpbHRlciIsImVudHJ5Iiwicm9vdEF0dHJpYnV0ZXMiLCJ4bWxucyIsInNwcml0ZUNvbnRlbnQiLCJhcHBseSIsImNvbXBpbGVyIiwiaG9va3MiLCJ0aGlzQ29tcGlsYXRpb24iLCJ0YXAiLCJjb21waWxhdGlvbiIsImRpcmVjdG9yaWVzIiwic3ByaXRlbWFwIiwiZmlsZURlcGVuZGVuY2llcyIsImJhc2VEaXJlY3RvcnkiLCJkaXJlY3RvcnkiLCJjb250ZXh0RGVwZW5kZW5jaWVzIiwicHJvY2Vzc0Fzc2V0cyIsInN0YWdlIiwiQ29tcGlsYXRpb24iLCJQUk9DRVNTX0FTU0VUU19TVEFHRV9BRERJVElPTkFMIiwiYXNzZXROYW1lIiwic291cmNlcyIsIlJhd1NvdXJjZSIsImdldEFzc2V0IiwidXBkYXRlQXNzZXQiLCJlbWl0QXNzZXQiLCJBcnJheSIsImlzQXJyYXkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxZQUFZLFFBQU8sS0FBSztBQUNoQyxTQUFRQyxRQUFRQyxRQUFRLFFBQU8sT0FBTztBQUN0QyxTQUFRQyxZQUFZQyxZQUFZLEVBQUVDLFdBQVdDLFdBQVcsRUFBRUMsV0FBV0MsV0FBVyxFQUFFQyxXQUFXQyxXQUFXLFFBQU8sT0FBTztBQUN0SCxTQUFRQyxRQUFRLFFBQU8sT0FBTztBQUM5QixPQUFPQyxhQUFhLFVBQVU7QUFzQjlCLE1BQU1DLG1CQUFtQjtBQUN6QixNQUFNQyxjQUFjO0FBQ3BCLE1BQU1DLDJCQUEyQixJQUFJQyxJQUFJO0lBQ3ZDO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtDQUNEO0FBRUQsTUFBTUMsa0JBQWtCLENBQUNDO0lBQ3ZCLE9BQU9BLE1BQ0pDLFVBQVUsQ0FBQyxLQUFLLFNBQ2hCQSxVQUFVLENBQUMsS0FBSyxVQUNoQkEsVUFBVSxDQUFDLEtBQUssUUFDaEJBLFVBQVUsQ0FBQyxLQUFLO0FBQ3JCO0FBRUEsTUFBTUMseUJBQXlCLENBQUNDO0lBQzlC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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nlabs/lex",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.56.0",
|
|
4
4
|
"description": "Lex",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -83,66 +83,66 @@
|
|
|
83
83
|
"dependencies": {
|
|
84
84
|
"@mdx-js/loader": "^3.1.1",
|
|
85
85
|
"@nlabs/webpack-plugin-static-site": "*",
|
|
86
|
-
"@storybook/addon-docs": "^10.
|
|
87
|
-
"@storybook/addon-links": "^10.
|
|
86
|
+
"@storybook/addon-docs": "^10.3.4",
|
|
87
|
+
"@storybook/addon-links": "^10.3.4",
|
|
88
88
|
"@storybook/addon-postcss": "^2.0.0",
|
|
89
|
-
"@storybook/addon-styling-webpack": "^3.0.
|
|
90
|
-
"@storybook/addon-themes": "^10.
|
|
91
|
-
"@storybook/cli": "^10.
|
|
92
|
-
"@storybook/react": "^10.
|
|
93
|
-
"@storybook/react-webpack5": "^10.
|
|
94
|
-
"@swc/cli": "^0.8.
|
|
95
|
-
"@swc/core": "^1.15.
|
|
89
|
+
"@storybook/addon-styling-webpack": "^3.0.2",
|
|
90
|
+
"@storybook/addon-themes": "^10.3.4",
|
|
91
|
+
"@storybook/cli": "^10.3.4",
|
|
92
|
+
"@storybook/react": "^10.3.4",
|
|
93
|
+
"@storybook/react-webpack5": "^10.3.4",
|
|
94
|
+
"@swc/cli": "^0.8.1",
|
|
95
|
+
"@swc/core": "^1.15.24",
|
|
96
96
|
"@tailwindcss/forms": "^0.5.11",
|
|
97
97
|
"@tailwindcss/nesting": "^0.0.0-insiders.565cd3e",
|
|
98
|
-
"@tailwindcss/postcss": "4.2.
|
|
98
|
+
"@tailwindcss/postcss": "4.2.2",
|
|
99
99
|
"@testing-library/jest-dom": "^6.9.1",
|
|
100
100
|
"@testing-library/react": "^16.3.2",
|
|
101
|
-
"@vitest/coverage-v8": "^4.
|
|
101
|
+
"@vitest/coverage-v8": "^4.1.2",
|
|
102
102
|
"assert": "^2.1.0",
|
|
103
103
|
"autoprefixer": "^10.4.27",
|
|
104
104
|
"boxen": "8.0.1",
|
|
105
105
|
"buffer": "^6.0.3",
|
|
106
|
-
"caniuse-lite": "1.0.
|
|
106
|
+
"caniuse-lite": "1.0.30001786",
|
|
107
107
|
"chalk": "^5.6.2",
|
|
108
108
|
"commander": "^14.0.3",
|
|
109
109
|
"compare-versions": "^6.1.1",
|
|
110
|
-
"compression-webpack-plugin": "^
|
|
111
|
-
"copy-webpack-plugin": "^
|
|
112
|
-
"core-js": "^3.
|
|
110
|
+
"compression-webpack-plugin": "^12.0.0",
|
|
111
|
+
"copy-webpack-plugin": "^14.0.0",
|
|
112
|
+
"core-js": "^3.49.0",
|
|
113
113
|
"crypto-js": "^4.2.0",
|
|
114
114
|
"css-loader": "^7.1.4",
|
|
115
|
-
"css-minimizer-webpack-plugin": "^
|
|
116
|
-
"cssnano": "^7.1.
|
|
117
|
-
"dotenv-webpack": "^
|
|
115
|
+
"css-minimizer-webpack-plugin": "^8.0.0",
|
|
116
|
+
"cssnano": "^7.1.4",
|
|
117
|
+
"dotenv-webpack": "^9.0.0",
|
|
118
118
|
"download-npm-package": "^3.1.12",
|
|
119
|
-
"eslint": "^10.0
|
|
120
|
-
"eslint-config-styleguidejs": "^5.0.
|
|
119
|
+
"eslint": "^10.2.0",
|
|
120
|
+
"eslint-config-styleguidejs": "^5.0.4",
|
|
121
121
|
"execa": "9.6.1",
|
|
122
|
-
"expect": "^30.
|
|
122
|
+
"expect": "^30.3.0",
|
|
123
123
|
"express": "^5.2.1",
|
|
124
124
|
"favicons-webpack-plugin": "^6.0.1",
|
|
125
125
|
"find-file-up": "^2.0.1",
|
|
126
126
|
"glob": "^13.0.6",
|
|
127
127
|
"global": "^4.4.0",
|
|
128
|
-
"graphql": "^16.13.
|
|
128
|
+
"graphql": "^16.13.2",
|
|
129
129
|
"graphql-tag": "^2.12.6",
|
|
130
130
|
"html-loader": "^5.1.0",
|
|
131
131
|
"html-webpack-plugin": "^5.6.6",
|
|
132
132
|
"https-browserify": "^1.0.0",
|
|
133
133
|
"image-webpack-loader": "^8.1.0",
|
|
134
|
-
"jsdom": "^
|
|
134
|
+
"jsdom": "^29.0.1",
|
|
135
135
|
"latest-version": "9.0.0",
|
|
136
|
-
"lodash": "^4.
|
|
136
|
+
"lodash": "^4.18.1",
|
|
137
137
|
"luxon": "^3.7.2",
|
|
138
138
|
"math-expression-evaluator": "^2.0.7",
|
|
139
|
-
"mini-css-extract-plugin": "^2.10.
|
|
140
|
-
"npm-check-updates": "^
|
|
141
|
-
"openai": "^6.
|
|
139
|
+
"mini-css-extract-plugin": "^2.10.2",
|
|
140
|
+
"npm-check-updates": "^20.0.0",
|
|
141
|
+
"openai": "^6.33.0",
|
|
142
142
|
"ora": "9.3.0",
|
|
143
143
|
"os-browserify": "^0.3.0",
|
|
144
144
|
"path-browserify": "^1.0.1",
|
|
145
|
-
"postcss": "^8.5.
|
|
145
|
+
"postcss": "^8.5.8",
|
|
146
146
|
"postcss-browser-reporter": "^0.7.0",
|
|
147
147
|
"postcss-cli": "^11.0.1",
|
|
148
148
|
"postcss-custom-properties": "^15.0.1",
|
|
@@ -155,7 +155,7 @@
|
|
|
155
155
|
"postcss-percentage": "^0.0.0",
|
|
156
156
|
"postcss-preset-env": "^11.2.0",
|
|
157
157
|
"postcss-simple-vars": "^7.0.1",
|
|
158
|
-
"postcss-svgo": "7.1.
|
|
158
|
+
"postcss-svgo": "7.1.1",
|
|
159
159
|
"postcss-url": "10.1.3",
|
|
160
160
|
"postcss-value-parser": "^4.2.0",
|
|
161
161
|
"process": "^0.11.10",
|
|
@@ -167,45 +167,43 @@
|
|
|
167
167
|
"rimraf": "^6.1.3",
|
|
168
168
|
"semver": "^7.7.4",
|
|
169
169
|
"source-map-loader": "^5.0.0",
|
|
170
|
-
"storybook": "^10.
|
|
170
|
+
"storybook": "^10.3.4",
|
|
171
171
|
"stream-browserify": "^3.0.0",
|
|
172
172
|
"stream-http": "^3.2.0",
|
|
173
173
|
"style-loader": "^4.0.0",
|
|
174
|
-
"
|
|
175
|
-
"svgo": "4.0.0",
|
|
174
|
+
"svgo": "4.0.1",
|
|
176
175
|
"swc-loader": "^0.2.7",
|
|
177
|
-
"tailwindcss": "^4.2.
|
|
176
|
+
"tailwindcss": "^4.2.2",
|
|
178
177
|
"ts-node": "^10.9.2",
|
|
179
178
|
"tsconfig-paths-webpack-plugin": "^4.2.0",
|
|
180
|
-
"typescript": "
|
|
179
|
+
"typescript": "^6.0.2",
|
|
181
180
|
"util": "^0.12.5",
|
|
182
|
-
"vitest": "^4.
|
|
181
|
+
"vitest": "^4.1.2",
|
|
183
182
|
"vm-browserify": "^1.1.2",
|
|
184
|
-
"webpack": "5.105.
|
|
185
|
-
"webpack-bundle-analyzer": "^5.
|
|
186
|
-
"webpack-cli": "^
|
|
183
|
+
"webpack": "5.105.4",
|
|
184
|
+
"webpack-bundle-analyzer": "^5.3.0",
|
|
185
|
+
"webpack-cli": "^7.0.2",
|
|
187
186
|
"webpack-merge": "^6.0.1",
|
|
188
187
|
"webpack-plugin-serve": "^1.6.0",
|
|
189
|
-
"ws": "^8.
|
|
188
|
+
"ws": "^8.20.0"
|
|
190
189
|
},
|
|
191
190
|
"devDependencies": {
|
|
192
191
|
"@types/express": "^5.0.6",
|
|
193
192
|
"@types/luxon": "^3.7.1",
|
|
194
|
-
"@types/node": "^25.
|
|
193
|
+
"@types/node": "^25.5.2",
|
|
195
194
|
"@types/ora": "^3.2.0",
|
|
196
195
|
"@types/react": "^19.2.14",
|
|
197
196
|
"@types/webpack": "^5.28.5"
|
|
198
197
|
},
|
|
199
198
|
"overrides": {
|
|
200
199
|
"cross-spawn": "^7.0.6",
|
|
201
|
-
"fast-xml-parser": ">=5.4.1",
|
|
202
200
|
"got": "^14.6.6",
|
|
203
|
-
"http-cache-semantics": "^4.2.0",
|
|
204
201
|
"http-proxy-middleware": "^3.0.5",
|
|
205
202
|
"minimatch": ">=10.2.4",
|
|
206
|
-
"postcss": "^8.5.
|
|
203
|
+
"postcss": "^8.5.8",
|
|
207
204
|
"semver-regex": "^4.0.5",
|
|
208
|
-
"tmp": "^0.2.5"
|
|
205
|
+
"tmp": "^0.2.5",
|
|
206
|
+
"file-type": "^21.3.1"
|
|
209
207
|
},
|
|
210
208
|
"gitHead": "0f5fb22fc0f0ab1abab5adf62afed24c7c87e4a8"
|
|
211
209
|
}
|
package/tsconfig.json
CHANGED
package/webpack.config.js
CHANGED
|
@@ -25,7 +25,6 @@ import postcssImport from 'postcss-import';
|
|
|
25
25
|
import postcssNesting from 'postcss-nesting';
|
|
26
26
|
import postcssPresetEnv from 'postcss-preset-env';
|
|
27
27
|
import postcssUrl from 'postcss-url';
|
|
28
|
-
import SVGSpriteMapPlugin from 'svg-spritemap-webpack-plugin';
|
|
29
28
|
import TsconfigPathsPlugin from 'tsconfig-paths-webpack-plugin';
|
|
30
29
|
import {URL} from 'url';
|
|
31
30
|
import {default as webpack} from 'webpack';
|
|
@@ -35,6 +34,7 @@ import {WebpackPluginServe} from 'webpack-plugin-serve';
|
|
|
35
34
|
|
|
36
35
|
import {LexConfig} from './lib/LexConfig.js';
|
|
37
36
|
import {relativeFilePath, relativeNodePath} from './lib/utils/file.js';
|
|
37
|
+
import LexSvgSpritemapPlugin from './lib/utils/webpack/LexSvgSpritemapPlugin.js';
|
|
38
38
|
import postcssFor from './lib/utils/postcss/postcss-for.js';
|
|
39
39
|
import postcssPercentage from './lib/utils/postcss/postcss-percentage.js';
|
|
40
40
|
import tail from 'lodash/tail.js';
|
|
@@ -175,17 +175,10 @@ const svgPaths = `${sourceFullPath}/icons/**/**.svg`;
|
|
|
175
175
|
|
|
176
176
|
if(globSync(svgPaths, globOptions).length) {
|
|
177
177
|
plugins.push(
|
|
178
|
-
new
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
output: {
|
|
183
|
-
chunk: {keep: true},
|
|
184
|
-
filename: './icons/icons.svg'
|
|
185
|
-
},
|
|
186
|
-
sprite: {
|
|
187
|
-
prefix: false
|
|
188
|
-
}
|
|
178
|
+
new LexSvgSpritemapPlugin(svgPaths, {
|
|
179
|
+
allowDuplicates: false,
|
|
180
|
+
filename: './icons/icons.svg',
|
|
181
|
+
prefix: false
|
|
189
182
|
})
|
|
190
183
|
);
|
|
191
184
|
}
|
|
@@ -952,4 +945,4 @@ export default (webpackEnv, webpackOptions) => {
|
|
|
952
945
|
}
|
|
953
946
|
|
|
954
947
|
return mergedConfig;
|
|
955
|
-
};
|
|
948
|
+
};
|