unframer 1.2.1 → 1.3.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/dist/cli.test.js CHANGED
@@ -1,6 +1,58 @@
1
1
  import tmp from 'tmp';
2
- import { test } from 'vitest';
3
- import { bundle } from './exporter.js';
2
+ import { test, expect } from 'vitest';
3
+ import { bundle, extractTokenInfo } from './exporter.js';
4
+ test('extractTokenInfo', async () => {
5
+ const str = `
6
+ some other code
7
+ else: --framer-text-color: var(--token-67c1333b-4249-4ff1-a333-3581964020b4, #ffffff);
8
+ else: --framer-text-color: var(--token-67c1333b-4249-4ff1-a333-3581964020b4, rgb(0, 0, 0));
9
+ var(not a token)
10
+ mltiple lines
11
+ '--border-color': 'var(--token-64603892-5c8b-477a-82d6-e795e75dd5dc, rgb(255, 79, 0)) /* {"name":"Orange"} */',
12
+ --framer-text-color: var(--token-same-line, rgb(9,34,76)); another-one: --framer-text: var(--token-another-one-in-line, #ffffff);
13
+ color: 'var(--token-bb315df6-c2cd-4c31-805d-6d1891fd5658, rgb(16, 25, 66)) /* {"name":"Space"} */',
14
+
15
+ `;
16
+ const tokens = extractTokenInfo(str);
17
+ expect(tokens).toMatchInlineSnapshot(`
18
+ [
19
+ {
20
+ "defaultValue": "#ffffff",
21
+ "metadata": undefined,
22
+ "tokenName": "--token-67c1333b-4249-4ff1-a333-3581964020b4",
23
+ },
24
+ {
25
+ "defaultValue": "rgb(0, 0, 0)",
26
+ "metadata": undefined,
27
+ "tokenName": "--token-67c1333b-4249-4ff1-a333-3581964020b4",
28
+ },
29
+ {
30
+ "defaultValue": "rgb(255, 79, 0)",
31
+ "metadata": {
32
+ "name": "Orange",
33
+ },
34
+ "tokenName": "--token-64603892-5c8b-477a-82d6-e795e75dd5dc",
35
+ },
36
+ {
37
+ "defaultValue": "rgb(9,34,76)",
38
+ "metadata": undefined,
39
+ "tokenName": "--token-same-line",
40
+ },
41
+ {
42
+ "defaultValue": "#ffffff",
43
+ "metadata": undefined,
44
+ "tokenName": "--token-another-one-in-line",
45
+ },
46
+ {
47
+ "defaultValue": "rgb(16, 25, 66)",
48
+ "metadata": {
49
+ "name": "Space",
50
+ },
51
+ "tokenName": "--token-bb315df6-c2cd-4c31-805d-6d1891fd5658",
52
+ },
53
+ ]
54
+ `);
55
+ }, 1000 * 10);
4
56
  test('bundle simple component', async () => {
5
57
  const tempFolder = tmp.dirSync({ unsafeCleanup: true }).name;
6
58
  console.log('tempFolder', tempFolder);
@@ -1 +1 @@
1
- {"version":3,"file":"cli.test.js","sourceRoot":"","sources":["../src/cli.test.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAE,IAAI,EAAU,MAAM,QAAQ,CAAA;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAEtC,IAAI,CACA,yBAAyB,EACzB,KAAK,IAAI,EAAE;IACP,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAA;IAC5D,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;IACrC,MAAM,GAAG,GACL,+DAA+D,CAAA;IACnE,MAAM,MAAM,CAAC;QACT,UAAU,EAAE;YACR,MAAM,EAAE,GAAG;SACd;QACD,GAAG,EAAE,UAAU;KAClB,CAAC,CAAA;AACN,CAAC,EACD,IAAI,GAAG,EAAE,CACZ,CAAA;AACD,IAAI,CACA,UAAU,EACV,KAAK,IAAI,EAAE;IACP,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAA;IAC5D,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;IACrC,MAAM,GAAG,GAAG,wDAAwD,CAAA;IACpE,MAAM,MAAM,CAAC;QACT,UAAU,EAAE;YACR,IAAI,EAAE,GAAG;SACZ;QACD,GAAG,EAAE,UAAU;KAClB,CAAC,CAAA;AACN,CAAC,EACD,IAAI,GAAG,EAAE,CACZ,CAAA;AACD,IAAI,CACA,uBAAuB,EACvB,KAAK,IAAI,EAAE;IACP,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAA;IAC5D,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;IACrC,MAAM,GAAG,GACL,qEAAqE,CAAA;IACzE,MAAM,MAAM,CAAC;QACT,UAAU,EAAE;YACR,KAAK,EAAE,GAAG;SACb;QACD,GAAG,EAAE,UAAU;KAClB,CAAC,CAAA;AACN,CAAC,EACD,IAAI,GAAG,EAAE,CACZ,CAAA"}
1
+ {"version":3,"file":"cli.test.js","sourceRoot":"","sources":["../src/cli.test.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAExD,IAAI,CACA,kBAAkB,EAClB,KAAK,IAAI,EAAE;IACP,MAAM,GAAG,GAAG;;;;;;;;;;SAUX,CAAA;IACD,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAA;IACpC,MAAM,CAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAqCpC,CAAC,CAAA;AACN,CAAC,EACD,IAAI,GAAG,EAAE,CACZ,CAAA;AACD,IAAI,CACA,yBAAyB,EACzB,KAAK,IAAI,EAAE;IACP,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAA;IAC5D,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;IACrC,MAAM,GAAG,GACL,+DAA+D,CAAA;IACnE,MAAM,MAAM,CAAC;QACT,UAAU,EAAE;YACR,MAAM,EAAE,GAAG;SACd;QACD,GAAG,EAAE,UAAU;KAClB,CAAC,CAAA;AACN,CAAC,EACD,IAAI,GAAG,EAAE,CACZ,CAAA;AACD,IAAI,CACA,UAAU,EACV,KAAK,IAAI,EAAE;IACP,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAA;IAC5D,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;IACrC,MAAM,GAAG,GAAG,wDAAwD,CAAA;IACpE,MAAM,MAAM,CAAC;QACT,UAAU,EAAE;YACR,IAAI,EAAE,GAAG;SACZ;QACD,GAAG,EAAE,UAAU;KAClB,CAAC,CAAA;AACN,CAAC,EACD,IAAI,GAAG,EAAE,CACZ,CAAA;AACD,IAAI,CACA,uBAAuB,EACvB,KAAK,IAAI,EAAE;IACP,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAA;IAC5D,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;IACrC,MAAM,GAAG,GACL,qEAAqE,CAAA;IACzE,MAAM,MAAM,CAAC;QACT,UAAU,EAAE;YACR,KAAK,EAAE,GAAG;SACb;QACD,GAAG,EAAE,UAAU;KAClB,CAAC,CAAA;AACN,CAAC,EACD,IAAI,GAAG,EAAE,CACZ,CAAA"}
@@ -23,4 +23,12 @@ export declare function resolveRedirect({ redirectCache, signal, url, }: {
23
23
  signal?: AbortSignal;
24
24
  }): Promise<any>;
25
25
  export declare function recursiveResolveRedirect(url?: string, signal?: AbortSignal): Promise<string | undefined>;
26
+ export declare function deduplicateByKey<T>(key: keyof T, arr: (T | undefined)[]): any[];
27
+ type TokenInfo = {
28
+ tokenName: string;
29
+ metadata?: Record<string, any>;
30
+ defaultValue: string;
31
+ };
32
+ export declare function extractTokenInfo(code: string): TokenInfo[];
33
+ export {};
26
34
  //# sourceMappingURL=exporter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exporter.d.ts","sourceRoot":"","sources":["../src/exporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAA6B,MAAM,SAAS,CAAA;AAQ3D,OAAO,EAGH,gBAAgB,EACnB,MAAM,gCAAgC,CAAA;AAQvC,eAAO,MAAM,MAAM;;;CAOlB,CAAA;AAYD,wBAAsB,MAAM,CAAC,EACzB,GAAG,EAAE,GAAQ,EACb,KAAa,EACb,UAAyC,EACzC,MAA6C,GAChD;;;;;CAAA,iBAyMA;AAMD,wBAAsB,uBAAuB,CAAC,IAAI,KAAA,EAAE,IAAI,KAAA,mDAmCvD;AAED,wBAAsB,yBAAyB,CAAC,QAAQ,KAAA,EAAE,IAAI,KAAA,gBA2B7D;AAWD,wBAAgB,kBAAkB,CAAC,QAAQ,CAAC,EAAE,gBAAgB,UA0F7D;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,iBAqCjD;AAWD,wBAAgB,+BAA+B,CAAC,EAC5C,MAA6C,GAChD;;CAAA,UAyIA;AAED,wBAAsB,eAAe,CAAC,EAClC,aAAa,EACb,MAAM,EACN,GAAG,GACN,EAAE;IACC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,aAAa,CAAC,EAAE,GAAG,CAAA;IACnB,MAAM,CAAC,EAAE,WAAW,CAAA;CACvB,gBAkBA;AAED,wBAAsB,wBAAwB,CAC1C,GAAG,CAAC,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,WAAW,+BAkBvB"}
1
+ {"version":3,"file":"exporter.d.ts","sourceRoot":"","sources":["../src/exporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAA0C,MAAM,SAAS,CAAA;AAQxE,OAAO,EAGH,gBAAgB,EACnB,MAAM,gCAAgC,CAAA;AAQvC,eAAO,MAAM,MAAM;;;CAOlB,CAAA;AAYD,wBAAsB,MAAM,CAAC,EACzB,GAAG,EAAE,GAAQ,EACb,KAAa,EACb,UAAyC,EACzC,MAA6C,GAChD;;;;;CAAA,iBAgNA;AAMD,wBAAsB,uBAAuB,CAAC,IAAI,KAAA,EAAE,IAAI,KAAA,mDAmCvD;AAmGD,wBAAsB,yBAAyB,CAAC,QAAQ,KAAA,EAAE,IAAI,KAAA,gBA2B7D;AAWD,wBAAgB,kBAAkB,CAAC,QAAQ,CAAC,EAAE,gBAAgB,UA0F7D;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,iBAqCjD;AAWD,wBAAgB,+BAA+B,CAAC,EAC5C,MAA6C,GAChD;;CAAA,UA0IA;AAED,wBAAsB,eAAe,CAAC,EAClC,aAAa,EACb,MAAM,EACN,GAAG,GACN,EAAE;IACC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,aAAa,CAAC,EAAE,GAAG,CAAA;IACnB,MAAM,CAAC,EAAE,WAAW,CAAA;CACvB,gBAkBA;AAED,wBAAsB,wBAAwB,CAC1C,GAAG,CAAC,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,WAAW,+BAkBvB;AAgCD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,SASvE;AAED,KAAK,SAAS,GAAG;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAE9B,YAAY,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,CA2D1D"}
package/dist/exporter.js CHANGED
@@ -37,6 +37,7 @@ export async function bundle({ cwd: out = '', watch = false, components = {}, si
37
37
  // entryPoints: {
38
38
  // index: url,
39
39
  // },
40
+ absWorkingDir: out,
40
41
  entryPoints: Object.keys(components).map((name) => {
41
42
  const url = components[name];
42
43
  validateUrl(url);
@@ -116,18 +117,22 @@ export async function bundle({ cwd: out = '', watch = false, components = {}, si
116
117
  }
117
118
  logger.log(`writing`, path.relative(out, file.path));
118
119
  fs.writeFileSync(resultPathAbs, codeNew, 'utf-8');
120
+ }
121
+ for (let file of result.outputFiles) {
119
122
  const name = path.basename(file.path).replace(/\.js$/, '');
120
- if (components[name]) {
121
- logger.log(`extracting types for ${name}`);
122
- const propControls = await extractPropControlsUnsafe(resultPathAbs, name);
123
- if (!propControls) {
124
- logger.log(`no property controls found for ${name}`);
125
- }
126
- const types = propControlsToType(propControls);
127
- // name = 'framer-' + name
128
- // logger.log('name', name)
129
- fs.writeFileSync(path.resolve(out, `${name}.d.ts`), types);
123
+ const resultPathAbs = path.resolve(out, file.path);
124
+ if (!components[name]) {
125
+ continue;
126
+ }
127
+ logger.log(`extracting types for ${name}`);
128
+ const propControls = await extractPropControlsUnsafe(resultPathAbs, name);
129
+ if (!propControls) {
130
+ logger.log(`no property controls found for ${name}`);
130
131
  }
132
+ const types = propControlsToType(propControls);
133
+ // name = 'framer-' + name
134
+ // logger.log('name', name)
135
+ fs.writeFileSync(path.resolve(out, `${name}.d.ts`), types);
131
136
  }
132
137
  const outFiles = result.outputFiles
133
138
  .map((x) => path.resolve(out, x.path))
@@ -146,6 +151,8 @@ export async function bundle({ cwd: out = '', watch = false, components = {}, si
146
151
  if (watch) {
147
152
  logger.log('waiting for components or config changes');
148
153
  }
154
+ const tokensCss = getTokensCss({ out, result });
155
+ fs.writeFileSync(path.resolve(out, 'tokens.css'), tokensCss, 'utf-8');
149
156
  }
150
157
  if (!watch) {
151
158
  await rebuild();
@@ -228,6 +235,77 @@ export async function extractPropControlsSafe(text, name) {
228
235
  logger.error(`Cannot get property controls for ${name}`, e.stack);
229
236
  }
230
237
  }
238
+ function getTokensCss({ out, result, }) {
239
+ const allTokens = [];
240
+ for (let file of result.outputFiles) {
241
+ const code = fs.readFileSync(path.resolve(out, file.path), 'utf-8');
242
+ const tokens = extractTokenInfo(code);
243
+ // console.log('tokens', tokens)
244
+ for (let token of tokens) {
245
+ const already = allTokens.find((x) => x.tokenName === token.tokenName);
246
+ const filePath = path.relative(out, file.path);
247
+ const filePaths = (() => {
248
+ if (!filePath.startsWith('chunk-')) {
249
+ return [filePath];
250
+ }
251
+ const files = Object.entries(result.metafile.outputs).filter(([k, v]) => {
252
+ const filename = path.basename(k);
253
+ if (filename.startsWith('chunk-')) {
254
+ return false;
255
+ }
256
+ const doesItImport = v.imports.find((x) => x.path === filePath);
257
+ return doesItImport;
258
+ });
259
+ return files.map(([k, v]) => k);
260
+ })();
261
+ if (!token?.tokenName?.startsWith('--token')) {
262
+ continue;
263
+ }
264
+ if (!already) {
265
+ allTokens.push({
266
+ tokenName: token.tokenName,
267
+ defaultValues: new Set([token.defaultValue]),
268
+ nameAnnotation: token.metadata?.name,
269
+ usedBy: new Set([...filePaths]),
270
+ });
271
+ }
272
+ else {
273
+ already.defaultValues.add(token.defaultValue);
274
+ if (!already.nameAnnotation && token.metadata?.name) {
275
+ already.nameAnnotation = token.metadata.name;
276
+ }
277
+ filePaths.map((x) => already.usedBy.add(x));
278
+ }
279
+ }
280
+ }
281
+ const groupedByUsers = groupBy(allTokens, (x) => {
282
+ const str = `/* Used by ${[...x.usedBy].sort().join(', ')} */`;
283
+ return str;
284
+ });
285
+ const cssStrings = [...groupedByUsers.entries()]
286
+ .map(([usedBy, x]) => {
287
+ return (` /* Used by ${[...x[0].usedBy].sort().join(', ')} */\n` +
288
+ [...x]
289
+ .map((x) => {
290
+ const possibleValues = [...x.defaultValues].sort();
291
+ let comment = '';
292
+ comment += x.nameAnnotation
293
+ ? ` Named as ${JSON.stringify(x.nameAnnotation)} in Framer.`
294
+ : '';
295
+ comment +=
296
+ possibleValues.length > 1
297
+ ? ` Also seen as ${possibleValues
298
+ .slice(1)
299
+ .join(', ')}.`
300
+ : '';
301
+ return ` ${x.tokenName}: ${possibleValues[0]}; ${comment ? `/*${comment} */` : ''}`;
302
+ })
303
+ .join('\n'));
304
+ })
305
+ .join('\n');
306
+ const tokensCss = `:root {\n${cssStrings}\n}`;
307
+ return tokensCss;
308
+ }
231
309
  export async function extractPropControlsUnsafe(filename, name) {
232
310
  const packageJson = path.resolve(path.dirname(filename), 'package.json');
233
311
  try {
@@ -397,13 +475,14 @@ export function esbuildPluginBundleDependencies({ signal = undefined, }) {
397
475
  const plugin = {
398
476
  name: 'esbuild-plugin',
399
477
  setup(build) {
478
+ const namespace = 'https ';
400
479
  build.onResolve({ filter: /^https?:\/\// }, (args) => {
401
480
  const url = new URL(args.path);
402
481
  return {
403
482
  path: args.path,
404
483
  external: false,
405
484
  // sideEffects: false,
406
- namespace: 'https',
485
+ namespace,
407
486
  };
408
487
  });
409
488
  const resolveDep = (args) => {
@@ -415,7 +494,7 @@ export function esbuildPluginBundleDependencies({ signal = undefined, }) {
415
494
  path: args.path,
416
495
  external: false,
417
496
  // sideEffects: false,
418
- namespace: 'https',
497
+ namespace,
419
498
  };
420
499
  }
421
500
  if (args.path === 'framer') {
@@ -442,19 +521,19 @@ export function esbuildPluginBundleDependencies({ signal = undefined, }) {
442
521
  // logger.log('resolve', u)
443
522
  return {
444
523
  path: u,
445
- namespace: 'https',
524
+ namespace,
446
525
  };
447
526
  }
448
527
  const url = `https://esm.sh/${args.path}`;
449
528
  return {
450
529
  path: url,
451
- namespace: 'https',
530
+ namespace,
452
531
  external: false,
453
532
  };
454
533
  };
455
534
  // build.onResolve({ filter: /^\w/ }, resolveDep)
456
- build.onResolve({ filter: /.*/, namespace: 'https' }, resolveDep);
457
- build.onLoad({ filter: /.*/, namespace: 'https' }, async (args) => {
535
+ build.onResolve({ filter: /.*/, namespace }, resolveDep);
536
+ build.onLoad({ filter: /.*/, namespace }, async (args) => {
458
537
  if (signal?.aborted) {
459
538
  throw new Error('aborted');
460
539
  }
@@ -575,4 +654,87 @@ function retryTwice(fn) {
575
654
  }
576
655
  };
577
656
  }
657
+ export function deduplicateByKey(key, arr) {
658
+ const map = new Map();
659
+ for (let item of arr) {
660
+ if (!item) {
661
+ continue;
662
+ }
663
+ map.set(item?.[key], item);
664
+ }
665
+ return Array.from(map.values());
666
+ }
667
+ export function extractTokenInfo(code) {
668
+ const lines = code.split('\n');
669
+ const tokenLines = lines.filter((line) => line.includes('var(--token'));
670
+ const tokens = [];
671
+ for (const line of tokenLines) {
672
+ let startIndex = 0;
673
+ while (startIndex < line.length) {
674
+ startIndex = line.indexOf('var(--', startIndex);
675
+ if (startIndex === -1) {
676
+ break;
677
+ }
678
+ let parCount = 0;
679
+ let varStatement = '';
680
+ for (let i = startIndex + 3; i < line.length; i++) {
681
+ if (line[i] === '(') {
682
+ parCount++;
683
+ }
684
+ else if (line[i] === ')') {
685
+ parCount--;
686
+ }
687
+ varStatement += line[i];
688
+ if (parCount === 0) {
689
+ break;
690
+ }
691
+ }
692
+ varStatement = varStatement.trim().slice(1).slice(0, -1); // Remove starting and closing parenthesis
693
+ const [tokenName, defaultValue] = splitOnce(varStatement, ',');
694
+ let metadata;
695
+ const jsonStartIndex = line.indexOf('/*', startIndex);
696
+ if (jsonStartIndex !== -1) {
697
+ const jsonEndIndex = line.indexOf('*/', jsonStartIndex);
698
+ if (jsonEndIndex !== -1) {
699
+ const jsonString = line
700
+ .slice(jsonStartIndex + 2, jsonEndIndex)
701
+ .trim();
702
+ try {
703
+ metadata = JSON.parse(jsonString);
704
+ }
705
+ catch (error) {
706
+ // console.warn('Failed to parse JSON metadata:', error)
707
+ }
708
+ }
709
+ }
710
+ if (tokenName && defaultValue) {
711
+ tokens.push({
712
+ tokenName,
713
+ defaultValue: defaultValue.trim(),
714
+ metadata,
715
+ });
716
+ }
717
+ startIndex += varStatement.length + 'var(--'.length; // Move the startIndex to the end of the current var(--token)
718
+ }
719
+ }
720
+ return tokens;
721
+ }
722
+ function splitOnce(str, separator) {
723
+ const index = str.indexOf(separator);
724
+ if (index === -1) {
725
+ return [str];
726
+ }
727
+ return [str.slice(0, index), str.slice(index + 1)];
728
+ }
729
+ function groupBy(arr, key) {
730
+ const map = new Map();
731
+ for (let item of arr) {
732
+ const k = key(item);
733
+ if (!map.has(k)) {
734
+ map.set(k, []);
735
+ }
736
+ map.get(k)?.push(item);
737
+ }
738
+ return map;
739
+ }
578
740
  //# sourceMappingURL=exporter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"exporter.js","sourceRoot":"","sources":["../src/exporter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exporter.js","sourceRoot":"","sources":["../src/exporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,SAAS,EAAE,OAAO,EAAe,MAAM,SAAS,CAAA;AACxE,OAAO,MAAM,MAAM,aAAa,CAAA;AAGhC,OAAO,IAAI,MAAM,YAAY,CAAA;AAE7B,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAE3D,OAAO,EAEH,WAAW,GAEd,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAE,KAAK,IAAI,MAAM,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAA;AACjE,MAAM,MAAM,GAAG,YAAY,CAAA;AAC3B,MAAM,CAAC,MAAM,MAAM,GAAG;IAClB,GAAG,CAAC,GAAG,IAAI;QACP,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAA;IAChC,CAAC;IACD,KAAK,CAAC,GAAG,IAAI;QACT,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IACtE,CAAC;CACJ,CAAA;AAED,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAiB,CAAA;AAEzD,SAAS,WAAW,CAAC,GAAW;IAC5B,IAAI,CAAC;QACD,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;IAC1B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAA;IAC1C,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,EACzB,GAAG,EAAE,GAAG,GAAG,EAAE,EACb,KAAK,GAAG,KAAK,EACb,UAAU,GAAG,EAA4B,EACzC,MAAM,GAAG,SAAoC,GAChD;IACG,GAAG,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAA;IAC9C,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACvB,IAAI,CAAC;QACD,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC1C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC;IAEd,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC;QAC/B,iBAAiB;QACjB,kBAAkB;QAClB,KAAK;QACL,aAAa,EAAE,GAAG;QAClB,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAC9C,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;YAC5B,WAAW,CAAC,GAAG,CAAC,CAAA;YAEhB,OAAO;gBACH,EAAE,EAAE,WAAW,IAAI,EAAE;gBACrB,GAAG,EAAE,IAAI;aACZ,CAAA;QACL,CAAC,CAAC;QACF,GAAG,EAAE,WAAW;QAEhB,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,WAAW,EAAE,IAAI;QACjB,SAAS,EAAE,IAAI;QACf,mBAAmB;QACnB,QAAQ,EAAE,OAAO;QAEjB,IAAI,EAAE,CAAC,qBAAqB,CAAC;QAC7B,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE;YACL,+BAA+B,CAAC;gBAC5B,MAAM;aACT,CAAC;YACF,YAAY,CAAC,EAAE,CAAC;YAChB;gBACI,IAAI,EAAE,gBAAgB;gBACtB,KAAK,CAAC,KAAK;oBACP,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE;wBAChD,OAAO;4BACH,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;4BACxC,SAAS,EAAE,SAAS;yBACvB,CAAA;oBACL,CAAC,CAAC,CAAA;oBACF,KAAK,CAAC,MAAM,CACR,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,EACtC,KAAK,EAAE,IAAI,EAAE,EAAE;wBACX,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;wBACtB,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;wBAE5B,OAAO;4BACH,QAAQ,EAAE,SAAS,CAAC;yDACK,MAAM,eAAe,CAAC;gCAC3C,GAAG;gCACH,MAAM;6BACT,CAAC;;;;;;iCAMD;4BACD,MAAM,EAAE,KAAK;yBAChB,CAAA;oBACL,CAAC,CACJ,CAAA;gBACL,CAAC;aACJ;SACJ;QACD,KAAK,EAAE,KAAK;QAEZ,8BAA8B;QAC9B,MAAM,EAAE,GAAG;QACX,0CAA0C;KAC7C,CAAC,CAAA;IAEF,KAAK,UAAU,OAAO;QAClB,MAAM,SAAS,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QACtE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,CAAA;QAE3C,KAAK,IAAI,IAAI,IAAI,MAAM,CAAC,WAAY,EAAE,CAAC;YACnC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;YAClD,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,QAAQ;iBAC7B,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;iBAC5B,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;YAEtB,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,EAAE;gBACpD,SAAS,EAAE,GAAG;gBACd,UAAU,EAAE,cAAc;gBAC1B,cAAc,EAAE,QAAQ;gBACxB,UAAU,EAAE,QAAQ;aACvB,CAAC,CAAA;YAEF,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;gBACvB,SAAQ;YACZ,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;YACpD,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QACrD,CAAC;QACD,KAAK,IAAI,IAAI,IAAI,MAAM,CAAC,WAAY,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;YAC1D,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;YAClD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpB,SAAQ;YACZ,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAA;YAC1C,MAAM,YAAY,GAAG,MAAM,yBAAyB,CAChD,aAAa,EACb,IAAI,CACP,CAAA;YACD,IAAI,CAAC,YAAY,EAAE,CAAC;gBAChB,MAAM,CAAC,GAAG,CAAC,kCAAkC,IAAI,EAAE,CAAC,CAAA;YACxD,CAAC;YACD,MAAM,KAAK,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAA;YAC9C,0BAA0B;YAC1B,2BAA2B;YAE3B,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,OAAO,CAAC,EAAE,KAAK,CAAC,CAAA;QAC9D,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW;aAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;aACrC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;aACxC,MAAM,CACH,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACzB,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CACpD,CACJ,CAAA;QACL,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;QACpE,KAAK,IAAI,IAAI,IAAI,aAAa,EAAE,CAAC;YAC7B,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAA;YAChD,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACnB,CAAC;QAED,EAAE,CAAC,aAAa,CACZ,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,EAC9B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EACxC,OAAO,CACV,CAAA;QAED,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAA;QAC9B,CAAC;QACD,+BAA+B;QAE/B,IAAI,KAAK,EAAE,CAAC;YACR,MAAM,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAA;QAC1D,CAAC;QAED,MAAM,SAAS,GAAG,YAAY,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAA;QAC/C,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;IACzE,CAAC;IAED,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,MAAM,OAAO,EAAE,CAAA;QACf,MAAM,YAAY,CAAC,OAAO,EAAE,CAAA;QAC5B,OAAM;IACV,CAAC;IAED,iCAAiC;IACjC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QAC5B,MAAM,YAAY,CAAC,MAAM,EAAE,CAAA;QAC3B,YAAY,CAAC,OAAO,EAAE,CAAA;IAC1B,CAAC,CAAC,CAAA;IACF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QAC7B,MAAM,YAAY,CAAC,MAAM,EAAE,CAAA;QAC3B,YAAY,CAAC,OAAO,EAAE,CAAA;IAC1B,CAAC,CAAC,CAAA;IACF,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;QACzC,MAAM,YAAY,CAAC,MAAM,EAAE,CAAA;QAC3B,YAAY,CAAC,OAAO,EAAE,CAAA;IAC1B,CAAC,CAAC,CAAA;IAEF,MAAM,OAAO,EAAE,CAAA;IAEf;;OAEG;IACH,MAAM,eAAe,GAAG,GAAG,EAAE,CACzB,OAAO,CAAC,GAAG,CAAC;QACR,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACnC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAA;YACtB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAA;YACjD,OAAO,eAAe,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;QAC3D,CAAC,CAAC;QACF,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;KAC9C,CAAC,CAAA;IACN,IAAI,QAAQ,GAAG,MAAM,eAAe,EAAE,CAAA;IACtC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,MAAM,eAAe,EAAE,CAAA;QACpC,MAAM,OAAO,GAAG,IAAI;aACf,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;aAC7C,MAAM,CAAC,OAAO,CAAC,CAAA;QACpB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;YACnB,SAAQ;QACZ,CAAC;QACD,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACzD,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CACtB,CAAA;QACD,MAAM,CAAC,GAAG,CAAC,gCAAgC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACrE,QAAQ,GAAG,IAAI,CAAA;QACf,MAAM,OAAO,EAAE,CAAA;IACnB,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CAAC,GAAW;IAC7B,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AACrD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,IAAI,EAAE,IAAI;IACpD,IAAI,CAAC;QACD,MAAM,gBAAgB,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAA;QAC1D,oDAAoD;QACpD,MAAM,YAAY,GACd,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YACpC,IAAI,CAAC,gBAAgB;gBAAE,OAAM;YAC7B,MAAM,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;YAClC,MAAM,EAAE,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAA;YAEhD,MAAM,OAAO,GAAG,EAAE,CAAC,iBAAiB,EAAE,CAAA;YAEtC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAA;YAE3B,IAAI,MAAM,GAAG,SAAS,CAAA;YACtB,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE;gBACrC,MAAM,GAAG,CAAC,CAAA;YACd,CAAC,CAAC,CAAA;YAEF,MAAM,GAAG,GAAG,EAAE,CAAC,iBAAiB,CAAC,GAAG,IAAI,EAAE,CAAC,CAAA;YAC3C,MAAM,GAAG,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;gBAC7C,oDAAoD;gBACpD,OAAM;YACV,CAAC,CAAC,CAAA;YACF,MAAM,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;YACtB,OAAO,MAAM,CAAA;QACjB,CAAC,CAAC,CAAA;QACN,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,MAAM,CAAC,KAAK,CAAC,4CAA4C,IAAI,EAAE,CAAC,CAAA;YAChE,OAAM;QACV,CAAC;QACD,OAAO,YAAY,CAAA;IACvB,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QACd,MAAM,CAAC,KAAK,CAAC,oCAAoC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAA;IACrE,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CAAC,EAClB,GAAG,EACH,MAAM,GAIT;IACG,MAAM,SAAS,GAAG,EAKf,CAAA;IACH,KAAK,IAAI,IAAI,IAAI,MAAM,CAAC,WAAY,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAA;QACnE,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;QACrC,gCAAgC;QAChC,KAAK,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAC1B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,CACzC,CAAA;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;YAE9C,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE;gBACpB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACjC,OAAO,CAAC,QAAQ,CAAC,CAAA;gBACrB,CAAC;gBACD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,CACxD,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;oBACP,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;oBACjC,IAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAChC,OAAO,KAAK,CAAA;oBAChB,CAAC;oBACD,MAAM,YAAY,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAC/B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAC7B,CAAA;oBACD,OAAO,YAAY,CAAA;gBACvB,CAAC,CACJ,CAAA;gBACD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;YACnC,CAAC,CAAC,EAAE,CAAA;YACJ,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC3C,SAAQ;YACZ,CAAC;YACD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,SAAS,CAAC,IAAI,CAAC;oBACX,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,aAAa,EAAE,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;oBAC5C,cAAc,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI;oBACpC,MAAM,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;iBAClC,CAAC,CAAA;YACN,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;gBAC7C,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;oBAClD,OAAO,CAAC,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAA;gBAChD,CAAC;gBACD,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;YAC/C,CAAC;QACL,CAAC;IACL,CAAC;IACD,MAAM,cAAc,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;QAC5C,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAA;QAC9D,OAAO,GAAG,CAAA;IACd,CAAC,CAAC,CAAA;IAEF,MAAM,UAAU,GAAG,CAAC,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC;SAC3C,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;QACjB,OAAO,CACH,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO;YAC3D,CAAC,GAAG,CAAC,CAAC;iBACD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACP,MAAM,cAAc,GAAG,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAA;gBAClD,IAAI,OAAO,GAAG,EAAE,CAAA;gBAChB,OAAO,IAAI,CAAC,CAAC,cAAc;oBACvB,CAAC,CAAC,aAAa,IAAI,CAAC,SAAS,CACvB,CAAC,CAAC,cAAc,CACnB,aAAa;oBAChB,CAAC,CAAC,EAAE,CAAA;gBACR,OAAO;oBACH,cAAc,CAAC,MAAM,GAAG,CAAC;wBACrB,CAAC,CAAC,iBAAiB,cAAc;6BAC1B,KAAK,CAAC,CAAC,CAAC;6BACR,IAAI,CAAC,IAAI,CAAC,GAAG;wBACpB,CAAC,CAAC,EAAE,CAAA;gBAEZ,OAAO,OAAO,CAAC,CAAC,SAAS,KAAK,cAAc,CAAC,CAAC,CAAC,KAC3C,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,KAAK,CAAC,CAAC,CAAC,EAClC,EAAE,CAAA;YACN,CAAC,CAAC;iBACD,IAAI,CAAC,IAAI,CAAC,CAClB,CAAA;IACL,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAA;IACf,MAAM,SAAS,GAAG,YAAY,UAAU,KAAK,CAAA;IAC7C,OAAO,SAAS,CAAA;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,QAAQ,EAAE,IAAI;IAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC,CAAA;IACxE,IAAI,CAAC;QACD,EAAE,CAAC,aAAa,CACZ,WAAW,EACX,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAClC,OAAO,CACV,CAAA;QACD,MAAM,SAAS,GAAG,eAAe,CAAA;QACjC,IAAI,QAAQ,GAAG,8DAA8D,CAAA;QAC7E,yBAAyB;QACzB,MAAM,IAAI,GAAG,UAAU,IAAI,CAAC,SAAS,CACjC,QAAQ,CACX,6BAA6B,IAAI,CAAC,SAAS,CACxC,SAAS,CACZ,kBAAkB,QAAQ;WACxB,CAAA;QACH,MAAM,GAAG,GAAG,QAAQ,CAAC,gCAAgC,IAAI,GAAG,CAAC,CAAA;QAC7D,IAAI,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAA;QAC3B,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;QACnC,sBAAsB;QACtB,OAAO,aAAa,CAAC,MAAM,CAAC,CAAA;IAChC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QACd,MAAM,CAAC,KAAK,CAAC,oCAAoC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAA;IACrE,CAAC;YAAS,CAAC;QACP,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;IAC1B,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,IAAI;IACvB,IAAI,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC3B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;QACrD,OAAO,IAAI,CAAA;IACf,CAAC;AACL,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,QAA2B;IAC1D,IAAI,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,IAAK,EAAuB,CAAC;aAC7D,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAClB,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,OAAM;YACV,CAAC;YAED,MAAM,cAAc,GAAG,CAAC,KAA8B,EAAE,EAAE;gBACtD,KAAK,CAAC,IAAI,CAAA;gBACV,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;oBACjB,KAAK,WAAW,CAAC,KAAK;wBAClB,OAAO,QAAQ,CAAA;oBACnB,KAAK,WAAW,CAAC,OAAO;wBACpB,OAAO,SAAS,CAAA;oBACpB,KAAK,WAAW,CAAC,MAAM;wBACnB,OAAO,QAAQ,CAAA;oBACnB,KAAK,WAAW,CAAC,MAAM;wBACnB,OAAO,QAAQ,CAAA;oBACnB,KAAK,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;wBACpB,mBAAmB;wBACnB,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,OAAO,CAAA;wBACnD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;oBACnD,CAAC;oBACD,KAAK,WAAW,CAAC,IAAI;wBACjB,OAAO,QAAQ,CAAA;oBACnB,KAAK,WAAW,CAAC,KAAK;wBAClB,OAAO,QAAQ,CAAA;oBACnB,KAAK,WAAW,CAAC,iBAAiB;wBAC9B,OAAO,iBAAiB,CAAA;oBAC5B,KAAK,WAAW,CAAC,KAAK;wBAClB,mBAAmB;wBACnB,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAA;oBAC/C,KAAK,WAAW,CAAC,MAAM;wBACnB,mBAAmB;wBACnB,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;6BACpC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;4BACZ,mBAAmB;4BACnB,OAAO,GAAG,CAAC,KAAK,cAAc,CAAC,CAAC,CAAC,EAAE,CAAA;wBACvC,CAAC,CAAC;6BACD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;oBACrB,KAAK,WAAW,CAAC,IAAI;wBACjB,OAAO,eAAe,CAAA;oBAC1B,KAAK,WAAW,CAAC,IAAI;wBACjB,OAAO,QAAQ,CAAA;oBACnB,KAAK,WAAW,CAAC,eAAe;wBAC5B,OAAO,8CAA8C,CAAA;oBACzD,KAAK,WAAW,CAAC,WAAW;wBACxB,OAAO,QAAQ,CAAA;oBACnB,KAAK,WAAW,CAAC,UAAU;wBACvB,OAAO,KAAK,CAAA;oBAChB,KAAK,WAAW,CAAC,YAAY;wBACzB,OAAO,UAAU,CAAA;gBACzB,CAAC;YACL,CAAC,CAAA;YACD,IAAI,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,IAAI,GAAG,IAAI,EAAE,CAAC,CAAA;YACjD,IAAI,CAAC,IAAI,EAAE,CAAC;gBACR,OAAO,EAAE,CAAA;YACb,CAAC;YACD,OAAO,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,cAAc,CAAC,KAAK,CAAC,EAAE,CAAA;QACnE,CAAC,CAAC;aACD,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,IAAI,CAAC,CAAA;QAEf,MAAM,iBAAiB,GACnB;YACI,4BAA4B;YAC5B,6BAA6B;YAC7B,oBAAoB;YACpB,aAAa;YACb,aAAa;YACb,cAAc;YACd,mBAAmB;SACtB;aACI,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC;aAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;QAC1B,IAAI,CAAC,GAAG,EAAE,CAAA;QACV,CAAC,IAAI,oCAAoC,CAAA;QACzC,CAAC,IAAI,mDAAmD,CAAA;QACxD,CAAC,IAAI,6BAA6B,iBAAiB,GAAG,KAAK,SAAS,CAAA;QACpE,CAAC,IAAI,6CAA6C,CAAA;QAClD,CAAC,IAAI,2GAA2G,CAAA;QAChH,CAAC,IAAI,6FAA6F,CAAA;QAClG,CAAC,IAAI,8BAA8B,CAAA;QAEnC,OAAO,CAAC,CAAA;IACZ,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QACd,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAA;QAC9C,OAAO,EAAE,CAAA;IACb,CAAC;AACL,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAA;IAClD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAA;QACjD,OAAO,IAAI,CAAA;IACf,CAAC;IACD,kEAAkE;IAClE,IAAI,eAAe,GAAG,CAAC,CAAA;IACvB,IAAI,iBAAiB,GAAG,CAAC,CAAA;IACzB,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,2BAA2B;IAC3B,OAAO,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QACvC,IAAI,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC;YAC7B,MAAK;QACT,CAAC;QACD,IAAI,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,GAAG,IAAI,EAAE,CAAC;YAC7B,eAAe,EAAE,CAAA;YACjB,OAAO,GAAG,IAAI,GAAG,CAAC,CAAA;QACtB,CAAC;QACD,IAAI,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,GAAG,IAAI,EAAE,CAAC;YAC7B,iBAAiB,EAAE,CAAA;YACnB,OAAO,GAAG,IAAI,GAAG,CAAC,CAAA;QACtB,CAAC;QACD,IAAI,eAAe,KAAK,iBAAiB,EAAE,CAAC;YACxC,MAAK;QACT,CAAC;IACL,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAA;IACnB,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAC/C,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAC3C,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;QACnB,OAAO,EAAE,CAAA;IACb,CAAC;IACD,OAAO,YAAY,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AAChD,CAAC;AAED,MAAM,SAAS,GAAG;IACd,OAAO;IACP,WAAW;IACX,QAAQ;IACR,UAAU;IACV,eAAe,EAAE,EAAE;CACtB,CAAA;AAED,IAAI,aAAa,GAAG,IAAI,GAAG,EAA2B,CAAA;AACtD,MAAM,UAAU,+BAA+B,CAAC,EAC5C,MAAM,GAAG,SAAoC,GAChD;IACG,MAAM,SAAS,GAAG,IAAI,GAAG,EAAE,CAAA;IAE3B,MAAM,MAAM,GAAW;QACnB,IAAI,EAAE,gBAAgB;QACtB,KAAK,CAAC,KAAK;YACP,MAAM,SAAS,GAAG,QAAQ,CAAA;YAC1B,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE;gBACjD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAC9B,OAAO;oBACH,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,QAAQ,EAAE,KAAK;oBACf,sBAAsB;oBACtB,SAAS;iBACZ,CAAA;YACL,CAAC,CAAC,CAAA;YACF,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,EAAE;gBACxB,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;oBAClB,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAA;gBAC9B,CAAC;gBACD,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;oBACnC,OAAO;wBACH,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,QAAQ,EAAE,KAAK;wBACf,sBAAsB;wBACtB,SAAS;qBACZ,CAAA;gBACL,CAAC;gBACD,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACzB,OAAO;wBACH,IAAI,EAAE,sBAAsB;wBAC5B,QAAQ,EAAE,IAAI;qBACjB,CAAA;gBACL,CAAC;gBACD,IAAI,eAAe,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;oBAChC,OAAO;wBACH,IAAI,EAAE,UAAU;wBAChB,QAAQ,EAAE,IAAI;qBACjB,CAAA;gBACL,CAAC;gBACD,IACI,SAAS,CAAC,IAAI,CACV,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,GAAG,CAAC,CAC1D,EACH,CAAC;oBACC,OAAO;wBACH,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,QAAQ,EAAE,IAAI;qBACjB,CAAA;gBACL,CAAC;gBAED,oCAAoC;gBACpC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACzD,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAA;oBACtD,2BAA2B;oBAC3B,OAAO;wBACH,IAAI,EAAE,CAAC;wBACP,SAAS;qBACZ,CAAA;gBACL,CAAC;gBAED,MAAM,GAAG,GAAG,kBAAkB,IAAI,CAAC,IAAI,EAAE,CAAA;gBAEzC,OAAO;oBACH,IAAI,EAAE,GAAG;oBACT,SAAS;oBACT,QAAQ,EAAE,KAAK;iBAClB,CAAA;YACL,CAAC,CAAA;YACD,iDAAiD;YACjD,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,UAAU,CAAC,CAAA;YACxD,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACrD,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;oBAClB,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAA;gBAC9B,CAAC;gBACD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAA;gBACrB,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;gBACtB,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC;oBACnC,GAAG;oBACH,aAAa;oBACb,MAAM;iBACT,CAAC,CAAA;gBACF,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBACrB,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;oBACrC,OAAO;wBACH,QAAQ,EAAE,IAAI;wBACd,MAAM,EAAE,IAAI;qBACf,CAAA;gBACL,CAAC;gBACD,IAAI,MAAM,GAAG,KAAY,CAAA;gBACzB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;oBAC9C,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAA;oBACtD,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;oBACtD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;wBACV,MAAM,IAAI,KAAK,CACX,gBAAgB,QAAQ,KAAK,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAC9D,CAAA;oBACL,CAAC;oBACD,uDAAuD;oBACvD,IACI,GAAG,CAAC,OAAO;yBACN,GAAG,CAAC,cAAc,CAAC;wBACpB,EAAE,UAAU,CAAC,kBAAkB,CAAC,EACtC,CAAC;wBACC,MAAM,GAAG,MAAM,CAAA;wBACf,OAAO,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;oBAC3B,CAAC;oBACD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;oBAE7B,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE;wBACtC,MAAM,EAAE;4BACJ,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;yBAC9C;wBACD,MAAM,EAAE,KAAK;wBACb,MAAM,EAAE,KAAK;wBACb,GAAG,EAAE,WAAW;wBAChB,QAAQ,EAAE,OAAO;wBACjB,MAAM;wBACN,QAAQ,EAAE,SAAS;qBACtB,CAAC,CAAA;oBACF,uCAAuC;oBACvC,OAAO,WAAW,CAAC,IAAI,CAAA;gBAC3B,CAAC,CAAC,CAAA;gBAEF,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;oBACnB,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;gBAC/B,CAAC;gBACD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAA;gBAE1B,OAAO;oBACH,QAAQ,EAAE,IAAI;oBAEd,MAAM;iBACT,CAAA;YACL,CAAC,CAAC,CAAA;QACN,CAAC;KACJ,CAAA;IACD,OAAO,MAAM,CAAA;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,EAClC,aAAa,EACb,MAAM,EACN,GAAG,GAKN;IACG,IAAI,CAAC,GAAG,EAAE,CAAC;QACP,OAAO,EAAE,CAAA;IACb,CAAC;IACD,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAA;IAEpB,IAAI,aAAa,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1C,OAAO,MAAM,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACvC,CAAC;IAED,yCAAyC;IACzC,MAAM,CAAC,GAAG,wBAAwB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IAC/C,4CAA4C;IAE5C,IAAI,aAAa,EAAE,CAAC;QAChB,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;IAC7B,CAAC;IACD,OAAO,MAAM,CAAC,CAAA;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC1C,GAAY,EACZ,MAAoB;IAEpB,IAAI,CAAC,GAAG,EAAE,CAAC;QACP,OAAM;IACV,CAAC;IAED,IAAI,GAAG,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE;QAChC,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,MAAM;KACjB,CAAC,CAAA;IACF,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IACvC,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;QAC/C,8BAA8B;QAC9B,OAAO,wBAAwB,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAA;IACtE,CAAC;IAED,OAAO,GAAG,CAAA;AACd,CAAC;AAED,SAAS,YAAY,CAAC,CAAC;IACnB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAC3B,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,CAAA;IAC/B,IAAI,CAAC,GAAG,EAAE,CAAC;QACP,OAAO,CAAC,GAAG,KAAK,CAAA;IACpB,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,KAAK,CAAA;IACpB,CAAC;IACD,4BAA4B;IAC5B,uBAAuB;IACvB,IAAI;IACJ,OAAO,CAAC,CAAA;AACZ,CAAC;AAED,SAAS,UAAU,CAAqB,EAAY;IAChD,OAAO,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE;QACrB,IAAI,CAAC;YACD,OAAO,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,CAAA;QAC5B,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YACd,sBAAsB;YACtB,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC1B,OAAM;YACV,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA;YACnC,OAAO,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,CAAA;QAC5B,CAAC;IACL,CAAC,CAAA;AACL,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAI,GAAY,EAAE,GAAsB;IACpE,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,CAAA;IACrB,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,SAAQ;QACZ,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAA;IAC9B,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAA;AACnC,CAAC;AASD,MAAM,UAAU,gBAAgB,CAAC,IAAY;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAA;IACvE,MAAM,MAAM,GAAgB,EAAE,CAAA;IAE9B,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC5B,IAAI,UAAU,GAAG,CAAC,CAAA;QAClB,OAAO,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC9B,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;YAC/C,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;gBACpB,MAAK;YACT,CAAC;YAED,IAAI,QAAQ,GAAG,CAAC,CAAA;YAChB,IAAI,YAAY,GAAG,EAAE,CAAA;YACrB,KAAK,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChD,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;oBAClB,QAAQ,EAAE,CAAA;gBACd,CAAC;qBAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;oBACzB,QAAQ,EAAE,CAAA;gBACd,CAAC;gBAED,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,CAAA;gBACvB,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;oBACjB,MAAK;gBACT,CAAC;YACL,CAAC;YACD,YAAY,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA,CAAC,0CAA0C;YACnG,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,SAAS,CAAC,YAAY,EAAE,GAAG,CAAC,CAAA;YAE9D,IAAI,QAAyC,CAAA;YAC7C,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;YACrD,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE,CAAC;gBACxB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;gBACvD,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;oBACtB,MAAM,UAAU,GAAG,IAAI;yBAClB,KAAK,CAAC,cAAc,GAAG,CAAC,EAAE,YAAY,CAAC;yBACvC,IAAI,EAAE,CAAA;oBACX,IAAI,CAAC;wBACD,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;oBACrC,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACb,wDAAwD;oBAC5D,CAAC;gBACL,CAAC;YACL,CAAC;YAED,IAAI,SAAS,IAAI,YAAY,EAAE,CAAC;gBAC5B,MAAM,CAAC,IAAI,CAAC;oBACR,SAAS;oBACT,YAAY,EAAE,YAAY,CAAC,IAAI,EAAE;oBACjC,QAAQ;iBACX,CAAC,CAAA;YACN,CAAC;YAED,UAAU,IAAI,YAAY,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAA,CAAC,6DAA6D;QACrH,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAA;AACjB,CAAC;AACD,SAAS,SAAS,CAAC,GAAW,EAAE,SAAiB;IAC7C,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IACpC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,CAAA;IAChB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAA;AACtD,CAAC;AAED,SAAS,OAAO,CAAI,GAAQ,EAAE,GAAqB;IAC/C,MAAM,GAAG,GAAG,IAAI,GAAG,EAAe,CAAA;IAClC,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;QACnB,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAA;QACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACd,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QAClB,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;IAC1B,CAAC;IACD,OAAO,GAAG,CAAA;AACd,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "unframer",
3
- "version": "1.2.1",
3
+ "version": "1.3.0",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "repository": "https://github.com/remorses/unframer",
package/src/cli.test.ts CHANGED
@@ -1,8 +1,64 @@
1
1
  import tmp from 'tmp'
2
2
  import path from 'path'
3
3
  import { test, expect } from 'vitest'
4
- import { bundle } from './exporter.js'
4
+ import { bundle, extractTokenInfo } from './exporter.js'
5
5
 
6
+ test(
7
+ 'extractTokenInfo',
8
+ async () => {
9
+ const str = `
10
+ some other code
11
+ else: --framer-text-color: var(--token-67c1333b-4249-4ff1-a333-3581964020b4, #ffffff);
12
+ else: --framer-text-color: var(--token-67c1333b-4249-4ff1-a333-3581964020b4, rgb(0, 0, 0));
13
+ var(not a token)
14
+ mltiple lines
15
+ '--border-color': 'var(--token-64603892-5c8b-477a-82d6-e795e75dd5dc, rgb(255, 79, 0)) /* {"name":"Orange"} */',
16
+ --framer-text-color: var(--token-same-line, rgb(9,34,76)); another-one: --framer-text: var(--token-another-one-in-line, #ffffff);
17
+ color: 'var(--token-bb315df6-c2cd-4c31-805d-6d1891fd5658, rgb(16, 25, 66)) /* {"name":"Space"} */',
18
+
19
+ `
20
+ const tokens = extractTokenInfo(str)
21
+ expect(tokens).toMatchInlineSnapshot(`
22
+ [
23
+ {
24
+ "defaultValue": "#ffffff",
25
+ "metadata": undefined,
26
+ "tokenName": "--token-67c1333b-4249-4ff1-a333-3581964020b4",
27
+ },
28
+ {
29
+ "defaultValue": "rgb(0, 0, 0)",
30
+ "metadata": undefined,
31
+ "tokenName": "--token-67c1333b-4249-4ff1-a333-3581964020b4",
32
+ },
33
+ {
34
+ "defaultValue": "rgb(255, 79, 0)",
35
+ "metadata": {
36
+ "name": "Orange",
37
+ },
38
+ "tokenName": "--token-64603892-5c8b-477a-82d6-e795e75dd5dc",
39
+ },
40
+ {
41
+ "defaultValue": "rgb(9,34,76)",
42
+ "metadata": undefined,
43
+ "tokenName": "--token-same-line",
44
+ },
45
+ {
46
+ "defaultValue": "#ffffff",
47
+ "metadata": undefined,
48
+ "tokenName": "--token-another-one-in-line",
49
+ },
50
+ {
51
+ "defaultValue": "rgb(16, 25, 66)",
52
+ "metadata": {
53
+ "name": "Space",
54
+ },
55
+ "tokenName": "--token-bb315df6-c2cd-4c31-805d-6d1891fd5658",
56
+ },
57
+ ]
58
+ `)
59
+ },
60
+ 1000 * 10,
61
+ )
6
62
  test(
7
63
  'bundle simple component',
8
64
  async () => {
package/src/exporter.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Plugin, build, transform, context } from 'esbuild'
1
+ import { Plugin, build, transform, context, BuildResult } from 'esbuild'
2
2
  import dprint from 'dprint-node'
3
3
  import tmp from 'tmp'
4
4
 
@@ -53,7 +53,7 @@ export async function bundle({
53
53
  // entryPoints: {
54
54
  // index: url,
55
55
  // },
56
-
56
+ absWorkingDir: out,
57
57
  entryPoints: Object.keys(components).map((name) => {
58
58
  const url = components[name]
59
59
  validateUrl(url)
@@ -145,22 +145,26 @@ export async function bundle({
145
145
  }
146
146
  logger.log(`writing`, path.relative(out, file.path))
147
147
  fs.writeFileSync(resultPathAbs, codeNew, 'utf-8')
148
+ }
149
+ for (let file of result.outputFiles!) {
148
150
  const name = path.basename(file.path).replace(/\.js$/, '')
149
- if (components[name]) {
150
- logger.log(`extracting types for ${name}`)
151
- const propControls = await extractPropControlsUnsafe(
152
- resultPathAbs,
153
- name,
154
- )
155
- if (!propControls) {
156
- logger.log(`no property controls found for ${name}`)
157
- }
158
- const types = propControlsToType(propControls)
159
- // name = 'framer-' + name
160
- // logger.log('name', name)
161
-
162
- fs.writeFileSync(path.resolve(out, `${name}.d.ts`), types)
151
+ const resultPathAbs = path.resolve(out, file.path)
152
+ if (!components[name]) {
153
+ continue
163
154
  }
155
+ logger.log(`extracting types for ${name}`)
156
+ const propControls = await extractPropControlsUnsafe(
157
+ resultPathAbs,
158
+ name,
159
+ )
160
+ if (!propControls) {
161
+ logger.log(`no property controls found for ${name}`)
162
+ }
163
+ const types = propControlsToType(propControls)
164
+ // name = 'framer-' + name
165
+ // logger.log('name', name)
166
+
167
+ fs.writeFileSync(path.resolve(out, `${name}.d.ts`), types)
164
168
  }
165
169
 
166
170
  const outFiles = result.outputFiles
@@ -191,6 +195,9 @@ export async function bundle({
191
195
  if (watch) {
192
196
  logger.log('waiting for components or config changes')
193
197
  }
198
+
199
+ const tokensCss = getTokensCss({ out, result })
200
+ fs.writeFileSync(path.resolve(out, 'tokens.css'), tokensCss, 'utf-8')
194
201
  }
195
202
 
196
203
  if (!watch) {
@@ -286,6 +293,103 @@ export async function extractPropControlsSafe(text, name) {
286
293
  }
287
294
  }
288
295
 
296
+ function getTokensCss({
297
+ out,
298
+ result,
299
+ }: {
300
+ out: string
301
+ result: BuildResult<{ metafile: true }>
302
+ }) {
303
+ const allTokens = [] as {
304
+ tokenName: string
305
+ defaultValues: Set<string>
306
+ nameAnnotation?: string
307
+ usedBy: Set<string>
308
+ }[]
309
+ for (let file of result.outputFiles!) {
310
+ const code = fs.readFileSync(path.resolve(out, file.path), 'utf-8')
311
+ const tokens = extractTokenInfo(code)
312
+ // console.log('tokens', tokens)
313
+ for (let token of tokens) {
314
+ const already = allTokens.find(
315
+ (x) => x.tokenName === token.tokenName,
316
+ )
317
+ const filePath = path.relative(out, file.path)
318
+
319
+ const filePaths = (() => {
320
+ if (!filePath.startsWith('chunk-')) {
321
+ return [filePath]
322
+ }
323
+ const files = Object.entries(result.metafile.outputs).filter(
324
+ ([k, v]) => {
325
+ const filename = path.basename(k)
326
+ if (filename.startsWith('chunk-')) {
327
+ return false
328
+ }
329
+ const doesItImport = v.imports.find(
330
+ (x) => x.path === filePath,
331
+ )
332
+ return doesItImport
333
+ },
334
+ )
335
+ return files.map(([k, v]) => k)
336
+ })()
337
+ if (!token?.tokenName?.startsWith('--token')) {
338
+ continue
339
+ }
340
+ if (!already) {
341
+ allTokens.push({
342
+ tokenName: token.tokenName,
343
+ defaultValues: new Set([token.defaultValue]),
344
+ nameAnnotation: token.metadata?.name,
345
+ usedBy: new Set([...filePaths]),
346
+ })
347
+ } else {
348
+ already.defaultValues.add(token.defaultValue)
349
+ if (!already.nameAnnotation && token.metadata?.name) {
350
+ already.nameAnnotation = token.metadata.name
351
+ }
352
+ filePaths.map((x) => already.usedBy.add(x))
353
+ }
354
+ }
355
+ }
356
+ const groupedByUsers = groupBy(allTokens, (x) => {
357
+ const str = `/* Used by ${[...x.usedBy].sort().join(', ')} */`
358
+ return str
359
+ })
360
+
361
+ const cssStrings = [...groupedByUsers.entries()]
362
+ .map(([usedBy, x]) => {
363
+ return (
364
+ ` /* Used by ${[...x[0].usedBy].sort().join(', ')} */\n` +
365
+ [...x]
366
+ .map((x) => {
367
+ const possibleValues = [...x.defaultValues].sort()
368
+ let comment = ''
369
+ comment += x.nameAnnotation
370
+ ? ` Named as ${JSON.stringify(
371
+ x.nameAnnotation,
372
+ )} in Framer.`
373
+ : ''
374
+ comment +=
375
+ possibleValues.length > 1
376
+ ? ` Also seen as ${possibleValues
377
+ .slice(1)
378
+ .join(', ')}.`
379
+ : ''
380
+
381
+ return ` ${x.tokenName}: ${possibleValues[0]}; ${
382
+ comment ? `/*${comment} */` : ''
383
+ }`
384
+ })
385
+ .join('\n')
386
+ )
387
+ })
388
+ .join('\n')
389
+ const tokensCss = `:root {\n${cssStrings}\n}`
390
+ return tokensCss
391
+ }
392
+
289
393
  export async function extractPropControlsUnsafe(filename, name) {
290
394
  const packageJson = path.resolve(path.dirname(filename), 'package.json')
291
395
  try {
@@ -472,13 +576,14 @@ export function esbuildPluginBundleDependencies({
472
576
  const plugin: Plugin = {
473
577
  name: 'esbuild-plugin',
474
578
  setup(build) {
579
+ const namespace = 'https '
475
580
  build.onResolve({ filter: /^https?:\/\// }, (args) => {
476
581
  const url = new URL(args.path)
477
582
  return {
478
583
  path: args.path,
479
584
  external: false,
480
585
  // sideEffects: false,
481
- namespace: 'https',
586
+ namespace,
482
587
  }
483
588
  })
484
589
  const resolveDep = (args) => {
@@ -490,7 +595,7 @@ export function esbuildPluginBundleDependencies({
490
595
  path: args.path,
491
596
  external: false,
492
597
  // sideEffects: false,
493
- namespace: 'https',
598
+ namespace,
494
599
  }
495
600
  }
496
601
  if (args.path === 'framer') {
@@ -522,7 +627,7 @@ export function esbuildPluginBundleDependencies({
522
627
  // logger.log('resolve', u)
523
628
  return {
524
629
  path: u,
525
- namespace: 'https',
630
+ namespace,
526
631
  }
527
632
  }
528
633
 
@@ -530,13 +635,13 @@ export function esbuildPluginBundleDependencies({
530
635
 
531
636
  return {
532
637
  path: url,
533
- namespace: 'https',
638
+ namespace,
534
639
  external: false,
535
640
  }
536
641
  }
537
642
  // build.onResolve({ filter: /^\w/ }, resolveDep)
538
- build.onResolve({ filter: /.*/, namespace: 'https' }, resolveDep)
539
- build.onLoad({ filter: /.*/, namespace: 'https' }, async (args) => {
643
+ build.onResolve({ filter: /.*/, namespace }, resolveDep)
644
+ build.onLoad({ filter: /.*/, namespace }, async (args) => {
540
645
  if (signal?.aborted) {
541
646
  throw new Error('aborted')
542
647
  }
@@ -684,3 +789,101 @@ function retryTwice<F extends Function>(fn: Function): Function {
684
789
  }
685
790
  }
686
791
  }
792
+
793
+ export function deduplicateByKey<T>(key: keyof T, arr: (T | undefined)[]) {
794
+ const map = new Map()
795
+ for (let item of arr) {
796
+ if (!item) {
797
+ continue
798
+ }
799
+ map.set(item?.[key], item)
800
+ }
801
+ return Array.from(map.values())
802
+ }
803
+
804
+ type TokenInfo = {
805
+ tokenName: string
806
+ metadata?: Record<string, any>
807
+
808
+ defaultValue: string
809
+ }
810
+
811
+ export function extractTokenInfo(code: string): TokenInfo[] {
812
+ const lines = code.split('\n')
813
+ const tokenLines = lines.filter((line) => line.includes('var(--token'))
814
+ const tokens: TokenInfo[] = []
815
+
816
+ for (const line of tokenLines) {
817
+ let startIndex = 0
818
+ while (startIndex < line.length) {
819
+ startIndex = line.indexOf('var(--', startIndex)
820
+ if (startIndex === -1) {
821
+ break
822
+ }
823
+
824
+ let parCount = 0
825
+ let varStatement = ''
826
+ for (let i = startIndex + 3; i < line.length; i++) {
827
+ if (line[i] === '(') {
828
+ parCount++
829
+ } else if (line[i] === ')') {
830
+ parCount--
831
+ }
832
+
833
+ varStatement += line[i]
834
+ if (parCount === 0) {
835
+ break
836
+ }
837
+ }
838
+ varStatement = varStatement.trim().slice(1).slice(0, -1) // Remove starting and closing parenthesis
839
+ const [tokenName, defaultValue] = splitOnce(varStatement, ',')
840
+
841
+ let metadata: Record<string, any> | undefined
842
+ const jsonStartIndex = line.indexOf('/*', startIndex)
843
+ if (jsonStartIndex !== -1) {
844
+ const jsonEndIndex = line.indexOf('*/', jsonStartIndex)
845
+ if (jsonEndIndex !== -1) {
846
+ const jsonString = line
847
+ .slice(jsonStartIndex + 2, jsonEndIndex)
848
+ .trim()
849
+ try {
850
+ metadata = JSON.parse(jsonString)
851
+ } catch (error) {
852
+ // console.warn('Failed to parse JSON metadata:', error)
853
+ }
854
+ }
855
+ }
856
+
857
+ if (tokenName && defaultValue) {
858
+ tokens.push({
859
+ tokenName,
860
+ defaultValue: defaultValue.trim(),
861
+ metadata,
862
+ })
863
+ }
864
+
865
+ startIndex += varStatement.length + 'var(--'.length // Move the startIndex to the end of the current var(--token)
866
+ }
867
+ }
868
+
869
+ return tokens
870
+ }
871
+ function splitOnce(str: string, separator: string) {
872
+ const index = str.indexOf(separator)
873
+ if (index === -1) {
874
+ return [str]
875
+ }
876
+ return [str.slice(0, index), str.slice(index + 1)]
877
+ }
878
+
879
+ function groupBy<T>(arr: T[], key: (x: T) => string) {
880
+ const map = new Map<string, T[]>()
881
+ for (let item of arr) {
882
+ const k = key(item)
883
+ if (!map.has(k)) {
884
+ map.set(k, [])
885
+ }
886
+ map.get(k)?.push(item)
887
+ }
888
+ return map
889
+ }