@dry-lint/core 1.0.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.
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Represents a declaration emitted by an extractor plugin.
3
+ */
4
+ export interface Declaration {
5
+ /** Unique identifier for the declaration (e.g., filePath#type:name) */
6
+ id: string;
7
+ /** Kind of declaration (e.g., 'asyncapi-message', 'avro-record') */
8
+ kind: string;
9
+ /** The shape object used to compute similarity */
10
+ shape: any;
11
+ /** Source location of the declaration */
12
+ location: {
13
+ file: string;
14
+ name: string;
15
+ };
16
+ }
17
+ /**
18
+ * A group of declarations determined to be duplicates or near-duplicates.
19
+ */
20
+ export interface DupGroup {
21
+ /** Similarity score between 0 (no match) and 1 (identical) */
22
+ similarity: number;
23
+ /** Array of declarations in this duplicate group */
24
+ decls: Declaration[];
25
+ }
26
+ /**
27
+ * Options for controlling findDuplicates behavior and output formats.
28
+ */
29
+ export interface CoreOptions {
30
+ threshold?: number;
31
+ json?: boolean;
32
+ sarif?: boolean;
33
+ fix?: boolean;
34
+ ignore?: string[];
35
+ cache?: boolean;
36
+ outFile?: string;
37
+ }
38
+ /**
39
+ * Signature for extractor plugins, synchronous or async.
40
+ */
41
+ export type Extractor = ((filePath: string, fileText: string) => Declaration[]) | ((filePath: string, fileText: string) => Promise<Declaration[]>);
42
+ /**
43
+ * Registers an extractor plugin.
44
+ * @param ext - Plugin function to extract declarations from a file
45
+ */
46
+ export declare function registerExtractor(ext: Extractor): void;
47
+ /**
48
+ * Reads each file and applies all registered extractors to collect declarations.
49
+ * @param files - Array of filePath/text pairs
50
+ * @returns A flat array of all extracted declarations
51
+ */
52
+ export declare function collectDeclarations(files: Array<{
53
+ path: string;
54
+ text: string;
55
+ }>): Promise<Declaration[]>;
56
+ /**
57
+ * Groups declarations by exact hash matches, and optionally fuzzy matches below threshold.
58
+ * @param decls - Array of declarations to group
59
+ * @param threshold - Similarity threshold for reporting fuzzy matches
60
+ * @returns Array of duplicate groups
61
+ */
62
+ export declare function groupDeclarations(decls: Declaration[], threshold?: number): DupGroup[];
63
+ /**
64
+ * Main entrypoint: reads files, collects declarations, groups duplicates, and outputs results.
65
+ */
66
+ export declare function findDuplicates(filePaths: string[], opts?: CoreOptions): Promise<DupGroup[]>;
package/dist/index.js ADDED
@@ -0,0 +1,135 @@
1
+ import fs from 'fs';
2
+ import crypto from 'crypto';
3
+ import { writeFixFile } from './writeFixFile.js';
4
+ // Registered extractor plugins
5
+ const extractors = [];
6
+ /**
7
+ * Registers an extractor plugin.
8
+ * @param ext - Plugin function to extract declarations from a file
9
+ */
10
+ export function registerExtractor(ext) {
11
+ extractors.push(ext);
12
+ }
13
+ /**
14
+ * Reads each file and applies all registered extractors to collect declarations.
15
+ * @param files - Array of filePath/text pairs
16
+ * @returns A flat array of all extracted declarations
17
+ */
18
+ export async function collectDeclarations(files) {
19
+ const all = [];
20
+ for (const f of files) {
21
+ for (const ext of extractors) {
22
+ const result = ext(f.path, f.text);
23
+ const decls = result instanceof Promise ? await result : result;
24
+ all.push(...decls);
25
+ }
26
+ }
27
+ return all;
28
+ }
29
+ /**
30
+ * Computes a SHA-1 hash of the declaration shape, ensuring stable grouping.
31
+ */
32
+ function hashShape(shape) {
33
+ const json = JSON.stringify(shape);
34
+ return crypto.createHash('sha1').update(json).digest('hex');
35
+ }
36
+ /**
37
+ * Groups declarations by exact hash matches, and optionally fuzzy matches below threshold.
38
+ * @param decls - Array of declarations to group
39
+ * @param threshold - Similarity threshold for reporting fuzzy matches
40
+ * @returns Array of duplicate groups
41
+ */
42
+ export function groupDeclarations(decls, threshold = 1) {
43
+ // Map from shape-hash to declarations
44
+ const map = new Map();
45
+ for (const d of decls) {
46
+ const h = hashShape(d.shape);
47
+ const bucket = map.get(h) || [];
48
+ bucket.push(d);
49
+ map.set(h, bucket);
50
+ }
51
+ const groups = [];
52
+ // Exact duplicates (similarity === 1)
53
+ for (const bucket of map.values()) {
54
+ if (bucket.length > 1) {
55
+ groups.push({ similarity: 1, decls: bucket });
56
+ }
57
+ }
58
+ // Fuzzy duplicates for threshold < 1
59
+ if (threshold < 1) {
60
+ const hashes = Array.from(map.keys());
61
+ for (let i = 0; i < hashes.length; i++) {
62
+ for (let j = i + 1; j < hashes.length; j++) {
63
+ const a = hashes[i];
64
+ const b = hashes[j];
65
+ // Compute Jaccard-like similarity over hash character sets
66
+ const setA = new Set(a);
67
+ const setB = new Set(b);
68
+ const intersection = [...setA].filter(c => setB.has(c)).length;
69
+ const union = setA.size + setB.size - intersection;
70
+ const sim = intersection / union;
71
+ if (sim >= threshold && sim < 1) {
72
+ groups.push({ similarity: sim, decls: [...map.get(a), ...map.get(b)] });
73
+ }
74
+ }
75
+ }
76
+ }
77
+ return groups;
78
+ }
79
+ /**
80
+ * Main entrypoint: reads files, collects declarations, groups duplicates, and outputs results.
81
+ */
82
+ export async function findDuplicates(filePaths, opts = {}) {
83
+ const { threshold = 1, json = false, sarif = false, fix = false, outFile } = opts;
84
+ // Read file contents
85
+ const files = filePaths.map(fp => ({ path: fp, text: fs.readFileSync(fp, 'utf8') }));
86
+ // Extract and group
87
+ const decls = await collectDeclarations(files);
88
+ const groups = groupDeclarations(decls, threshold);
89
+ // JSON output
90
+ if (json) {
91
+ const out = JSON.stringify(groups, null, 2);
92
+ if (outFile)
93
+ fs.writeFileSync(outFile, out, 'utf8');
94
+ else
95
+ console.log(out);
96
+ }
97
+ // SARIF output
98
+ if (sarif) {
99
+ const sarifDoc = {
100
+ version: '2.1.0',
101
+ runs: [
102
+ {
103
+ tool: { driver: { name: 'core', version: '1.0.0' } },
104
+ results: groups.map(g => ({
105
+ message: { text: `Similarity: ${g.similarity}` },
106
+ locations: g.decls.map(d => ({
107
+ physicalLocation: {
108
+ artifactLocation: { uri: d.location.file },
109
+ region: { snippet: { text: d.location.name } },
110
+ },
111
+ })),
112
+ })),
113
+ },
114
+ ],
115
+ };
116
+ const out = JSON.stringify(sarifDoc, null, 2);
117
+ if (outFile)
118
+ fs.writeFileSync(outFile, out, 'utf8');
119
+ else
120
+ console.log(out);
121
+ }
122
+ // Plain console output for CLI
123
+ if (!json && !sarif) {
124
+ for (const g of groups) {
125
+ console.log(`Group (${Math.round(g.similarity * 100)}%):`);
126
+ g.decls.forEach(d => console.log(` [${d.kind}] ${d.location.file}:${d.location.name}`));
127
+ console.log('');
128
+ }
129
+ }
130
+ // Fix file generation
131
+ if (fix && outFile) {
132
+ writeFixFile(groups, outFile);
133
+ }
134
+ return groups;
135
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,44 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { groupDeclarations } from './index.js';
3
+ const make = (id, shape) => ({
4
+ id,
5
+ kind: 'unit-test',
6
+ shape,
7
+ location: { file: `${id}.ts`, name: id },
8
+ });
9
+ /**
10
+ * Unit-tests for the pure `groupDeclarations` algorithm.
11
+ * – Focus on edge-cases and branch coverage (fuzzy threshold logic).
12
+ */
13
+ describe('core › groupDeclarations', () => {
14
+ it('returns one group for N ≥ 2 identical shapes (similarity 1)', () => {
15
+ const decls = [make('a', { foo: 1 }), make('b', { foo: 1 }), make('c', { bar: 2 })];
16
+ const out = groupDeclarations(decls);
17
+ expect(out).toHaveLength(1);
18
+ expect(out[0].similarity).toBe(1);
19
+ const ids = out[0].decls.map(d => d.id).sort();
20
+ expect(ids).toEqual(['a', 'b']);
21
+ });
22
+ it('returns 0 groups when every shape hash is unique', () => {
23
+ const decls = [make('x', { x: 1 }), make('y', { y: 2 })];
24
+ expect(groupDeclarations(decls)).toHaveLength(0);
25
+ });
26
+ it('detects *fuzzy* duplicates when threshold < 1', () => {
27
+ /*
28
+ * Two shapes share 15/20 hex chars → intersection 15, union 25 ⇒ 0.6.
29
+ * (The exact math isn’t important, we just need a pair with sim ≈ 0.6).
30
+ */
31
+ const shapeA = { a: 1, b: 2, c: 3 };
32
+ const shapeB = { a: 1, b: 2, c: 3, d: 4 }; // superset → very similar
33
+ const out = groupDeclarations([make('a', shapeA), make('b', shapeB)], 0.5);
34
+ expect(out).toHaveLength(1);
35
+ expect(out[0].similarity).toBeGreaterThan(0.5);
36
+ expect(out[0].similarity).toBeLessThan(1);
37
+ });
38
+ it('does **not** group fuzzy matches below the given threshold', () => {
39
+ const shapeA = { foo: 1 };
40
+ const shapeB = { bar: 2 };
41
+ const out = groupDeclarations([make('a', shapeA), make('b', shapeB)], 0.99);
42
+ expect(out).toHaveLength(0);
43
+ });
44
+ });
@@ -0,0 +1 @@
1
+ {"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/typescript/lib/lib.esnext.float16.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/@vitest/pretty-format/dist/index.d.ts","../../../node_modules/@vitest/utils/dist/types.d.ts","../../../node_modules/@vitest/utils/dist/helpers.d.ts","../../../node_modules/tinyrainbow/dist/index-8b61d5bc.d.ts","../../../node_modules/tinyrainbow/dist/node.d.ts","../../../node_modules/@vitest/utils/dist/index.d.ts","../../../node_modules/@vitest/runner/dist/tasks.d-CkscK4of.d.ts","../../../node_modules/@vitest/utils/dist/types.d-BCElaP-c.d.ts","../../../node_modules/@vitest/utils/dist/diff.d.ts","../../../node_modules/@vitest/runner/dist/types.d.ts","../../../node_modules/@vitest/utils/dist/error.d.ts","../../../node_modules/@vitest/runner/dist/index.d.ts","../../../node_modules/vitest/optional-types.d.ts","../../../node_modules/vitest/dist/chunks/environment.d.cL3nLXbE.d.ts","../../../node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/undici-types/utility.d.ts","../../../node_modules/undici-types/header.d.ts","../../../node_modules/undici-types/readable.d.ts","../../../node_modules/undici-types/fetch.d.ts","../../../node_modules/undici-types/formdata.d.ts","../../../node_modules/undici-types/connector.d.ts","../../../node_modules/undici-types/client.d.ts","../../../node_modules/undici-types/errors.d.ts","../../../node_modules/undici-types/dispatcher.d.ts","../../../node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/undici-types/global-origin.d.ts","../../../node_modules/undici-types/pool-stats.d.ts","../../../node_modules/undici-types/pool.d.ts","../../../node_modules/undici-types/handlers.d.ts","../../../node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/undici-types/h2c-client.d.ts","../../../node_modules/undici-types/agent.d.ts","../../../node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/undici-types/mock-call-history.d.ts","../../../node_modules/undici-types/mock-agent.d.ts","../../../node_modules/undici-types/mock-client.d.ts","../../../node_modules/undici-types/mock-pool.d.ts","../../../node_modules/undici-types/mock-errors.d.ts","../../../node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/undici-types/retry-handler.d.ts","../../../node_modules/undici-types/retry-agent.d.ts","../../../node_modules/undici-types/api.d.ts","../../../node_modules/undici-types/cache-interceptor.d.ts","../../../node_modules/undici-types/interceptors.d.ts","../../../node_modules/undici-types/util.d.ts","../../../node_modules/undici-types/cookies.d.ts","../../../node_modules/undici-types/patch.d.ts","../../../node_modules/undici-types/websocket.d.ts","../../../node_modules/undici-types/eventsource.d.ts","../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/undici-types/content-type.d.ts","../../../node_modules/undici-types/cache.d.ts","../../../node_modules/undici-types/index.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/dom-events.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/sea.d.ts","../../../node_modules/@types/node/sqlite.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/vite/types/hmrPayload.d.ts","../../../node_modules/vite/dist/node/moduleRunnerTransport-BWUZBVLX.d.ts","../../../node_modules/vite/types/customEvent.d.ts","../../../node_modules/@types/estree/index.d.ts","../../../node_modules/rollup/dist/rollup.d.ts","../../../node_modules/rollup/dist/parseAst.d.ts","../../../node_modules/vite/types/hot.d.ts","../../../node_modules/vite/dist/node/module-runner.d.ts","../../../node_modules/esbuild/lib/main.d.ts","../../../node_modules/vite/types/internal/terserOptions.d.ts","../../../node_modules/source-map-js/source-map.d.ts","../../../node_modules/postcss/lib/previous-map.d.ts","../../../node_modules/postcss/lib/input.d.ts","../../../node_modules/postcss/lib/css-syntax-error.d.ts","../../../node_modules/postcss/lib/declaration.d.ts","../../../node_modules/postcss/lib/root.d.ts","../../../node_modules/postcss/lib/warning.d.ts","../../../node_modules/postcss/lib/lazy-result.d.ts","../../../node_modules/postcss/lib/no-work-result.d.ts","../../../node_modules/postcss/lib/processor.d.ts","../../../node_modules/postcss/lib/result.d.ts","../../../node_modules/postcss/lib/document.d.ts","../../../node_modules/postcss/lib/rule.d.ts","../../../node_modules/postcss/lib/node.d.ts","../../../node_modules/postcss/lib/comment.d.ts","../../../node_modules/postcss/lib/container.d.ts","../../../node_modules/postcss/lib/at-rule.d.ts","../../../node_modules/postcss/lib/list.d.ts","../../../node_modules/postcss/lib/postcss.d.ts","../../../node_modules/postcss/lib/postcss.d.mts","../../../node_modules/vite/types/internal/lightningcssOptions.d.ts","../../../node_modules/vite/types/internal/cssPreprocessorOptions.d.ts","../../../node_modules/vite/types/importGlob.d.ts","../../../node_modules/vite/types/metadata.d.ts","../../../node_modules/vite/dist/node/index.d.ts","../../../node_modules/@vitest/mocker/dist/registry.d-D765pazg.d.ts","../../../node_modules/@vitest/mocker/dist/types.d-D_aRZRdy.d.ts","../../../node_modules/@vitest/mocker/dist/index.d.ts","../../../node_modules/@vitest/utils/dist/source-map.d.ts","../../../node_modules/vite-node/dist/trace-mapping.d-DLVdEqOp.d.ts","../../../node_modules/vite-node/dist/index.d-DGmxD2U7.d.ts","../../../node_modules/vite-node/dist/index.d.ts","../../../node_modules/@vitest/snapshot/dist/environment.d-DHdQ1Csl.d.ts","../../../node_modules/@vitest/snapshot/dist/rawSnapshot.d-lFsMJFUd.d.ts","../../../node_modules/@vitest/snapshot/dist/index.d.ts","../../../node_modules/@vitest/snapshot/dist/environment.d.ts","../../../node_modules/vitest/dist/chunks/config.d.D2ROskhv.d.ts","../../../node_modules/vitest/dist/chunks/worker.d.1GmBbd7G.d.ts","../../../node_modules/@types/deep-eql/index.d.ts","../../../node_modules/@types/chai/index.d.ts","../../../node_modules/@vitest/runner/dist/utils.d.ts","../../../node_modules/tinybench/dist/index.d.ts","../../../node_modules/vitest/dist/chunks/benchmark.d.BwvBVTda.d.ts","../../../node_modules/vite-node/dist/client.d.ts","../../../node_modules/vitest/dist/chunks/coverage.d.S9RMNXIe.d.ts","../../../node_modules/@vitest/snapshot/dist/manager.d.ts","../../../node_modules/vitest/dist/chunks/reporters.d.BFLkQcL6.d.ts","../../../node_modules/vitest/dist/chunks/worker.d.CKwWzBSj.d.ts","../../../node_modules/@vitest/spy/dist/index.d.ts","../../../node_modules/@vitest/expect/dist/index.d.ts","../../../node_modules/vitest/dist/chunks/global.d.MAmajcmJ.d.ts","../../../node_modules/vitest/dist/chunks/vite.d.CMLlLIFP.d.ts","../../../node_modules/vitest/dist/chunks/mocker.d.BE_2ls6u.d.ts","../../../node_modules/vitest/dist/chunks/suite.d.FvehnV49.d.ts","../../../node_modules/expect-type/dist/utils.d.ts","../../../node_modules/expect-type/dist/overloads.d.ts","../../../node_modules/expect-type/dist/branding.d.ts","../../../node_modules/expect-type/dist/messages.d.ts","../../../node_modules/expect-type/dist/index.d.ts","../../../node_modules/vitest/dist/index.d.ts","../src/writeFixFile.ts","../src/index.ts","../src/index.test.ts","../src/writeFixFile.test.ts","../../../node_modules/@types/aria-query/index.d.ts","../../../node_modules/@babel/types/lib/index.d.ts","../../../node_modules/@types/babel__generator/index.d.ts","../../../node_modules/@types/babel__traverse/index.d.ts","../../../node_modules/@types/conventional-commits-parser/index.d.ts","../../../node_modules/@types/es-aggregate-error/implementation.d.ts","../../../node_modules/@types/es-aggregate-error/polyfill.d.ts","../../../node_modules/@types/es-aggregate-error/shim.d.ts","../../../node_modules/@types/es-aggregate-error/index.d.ts","../../../node_modules/@types/jsonfile/index.d.ts","../../../node_modules/@types/jsonfile/utils.d.ts","../../../node_modules/@types/fs-extra/index.d.ts","../../../node_modules/@types/js-yaml/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/pegjs/index.d.ts","../../../node_modules/@types/postcss-less/index.d.ts","../../../node_modules/@types/react/global.d.ts","../../../node_modules/csstype/index.d.ts","../../../node_modules/@types/react/index.d.ts","../../../node_modules/@types/swagger-schema-official/index.d.ts","../../../node_modules/@types/urijs/dom-monkeypatch.d.ts","../../../node_modules/@types/urijs/index.d.ts"],"fileIdsList":[[76,120],[76,120,246],[76,120,219],[76,120,152,170],[76,120,170],[76,120,250,251,252],[76,120,250],[76,120,133,170,254,255],[76,120,133,163,170],[76,117,120],[76,119,120],[120],[76,120,125,155],[76,120,121,126,132,133,140,152,163],[76,120,121,122,132,140],[76,120,123,164],[76,120,124,125,133,141],[76,120,125,152,160],[76,120,126,128,132,140],[76,119,120,127],[76,120,128,129],[76,120,130,132],[76,119,120,132],[76,120,132,133,134,152,163],[76,120,132,133,134,147,152,155],[76,115,120],[76,115,120,128,132,135,140,152,163],[76,120,132,133,135,136,140,152,160,163],[76,120,135,137,152,160,163],[74,75,76,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169],[76,120,132,138],[76,120,139,163],[76,120,128,132,140,152],[76,120,141],[76,120,142],[76,119,120,143],[76,117,118,119,120,121,122,123,124,125,126,127,128,129,130,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169],[76,120,145],[76,120,146],[76,120,132,147,148],[76,120,147,149,164,166],[76,120,132,152,153,155],[76,120,154,155],[76,120,152,153],[76,120,155],[76,120,156],[76,117,120,152,157],[76,120,132,158,159],[76,120,158,159],[76,120,125,140,152,160],[76,120,161],[76,120,140,162],[76,120,135,146,163],[76,120,125,164],[76,120,152,165],[76,120,139,166],[76,120,167],[76,120,132,134,143,152,155,163,165,166,168],[76,120,152,169],[76,120,199],[76,120,261,262],[76,120,265],[64,65,68,76,120,229],[76,120,206,207],[65,66,68,69,70,76,120],[65,76,120],[65,66,68,76,120],[65,66,76,120],[76,120,213],[60,76,120,213,214],[60,76,120,213],[60,67,76,120],[61,76,120],[60,61,62,64,76,120],[60,76,120],[76,120,235,236],[76,120,235,236,237,238],[76,120,235,237],[76,120,235],[76,120,196],[76,120,194,196],[76,120,185,193,194,195,197,199],[76,120,183],[76,120,186,191,196,199],[76,120,182,199],[76,120,186,187,190,191,192,199],[76,120,186,187,188,190,191,199],[76,120,183,184,185,186,187,191,192,193,195,196,197,199],[76,120,181,183,184,185,186,187,188,190,191,192,193,194,195,196,197,198],[76,120,181,199],[76,120,186,188,189,191,192,199],[76,120,190,199],[76,120,191,192,196,199],[76,120,184,194],[76,120,175,204,205],[76,120,174,175],[63,76,120],[76,85,89,120,163],[76,85,120,152,163],[76,120,152],[76,80,120],[76,82,85,120,163],[76,120,140,160],[76,80,120,170],[76,82,85,120,140,163],[76,77,78,79,81,84,120,132,152,163],[76,85,93,120],[76,78,83,120],[76,85,109,110,120],[76,78,81,85,120,155,163,170],[76,85,120],[76,77,120],[76,80,81,82,83,84,85,86,87,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,110,111,112,113,114,120],[76,85,102,105,120,128],[76,85,93,94,95,120],[76,83,85,94,96,120],[76,84,120],[76,78,80,85,120],[76,85,89,94,96,120],[76,89,120],[76,83,85,88,120,163],[76,78,82,85,93,120],[76,85,102,120],[76,80,85,109,120,155,168,170],[76,120,210,211],[76,120,210],[76,120,132,133,135,136,137,140,152,160,163,169,170,171,172,173,175,176,178,179,180,200,201,202,203,204,205],[76,120,171,172,173,177],[76,120,171],[76,120,173],[76,120,175,205],[71,76,120,221,222,231],[60,68,71,76,120,215,216,231],[76,120,224],[72,76,120],[60,71,73,76,120,215,223,230,231],[76,120,208],[60,65,68,71,73,76,120,123,133,152,205,208,209,212,215,217,218,220,223,225,226,231,232],[71,76,120,221,222,223,231],[76,120,205,227,232],[71,73,76,120,212,215,217,231],[76,120,168,218],[60,65,68,71,72,73,76,120,123,133,152,168,205,208,209,212,215,216,217,218,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,239],[76,120,240,242],[76,120,125,133,241],[76,120,133,240,241],[76,120,133,242]],"fileInfos":[{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"4245fee526a7d1754529d19227ecbf3be066ff79ebb6a380d78e41648f2f224d","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"5c54a34e3d91727f7ae840bfe4d5d1c9a2f93c54cb7b6063d06ee4a6c3322656","impliedFormat":99},{"version":"db4da53b03596668cf6cc9484834e5de3833b9e7e64620cf08399fe069cd398d","impliedFormat":99},{"version":"ac7c28f153820c10850457994db1462d8c8e462f253b828ad942a979f726f2f9","impliedFormat":99},{"version":"f9b028d3c3891dd817e24d53102132b8f696269309605e6ed4f0db2c113bbd82","impliedFormat":99},{"version":"fb7c8d90e52e2884509166f96f3d591020c7b7977ab473b746954b0c8d100960","impliedFormat":99},{"version":"0bff51d6ed0c9093f6955b9d8258ce152ddb273359d50a897d8baabcb34de2c4","impliedFormat":99},{"version":"45cec9a1ba6549060552eead8959d47226048e0b71c7d0702ae58b7e16a28912","impliedFormat":99},{"version":"ef13c73d6157a32933c612d476c1524dd674cf5b9a88571d7d6a0d147544d529","impliedFormat":99},{"version":"13918e2b81c4288695f9b1f3dcc2468caf0f848d5c1f3dc00071c619d34ff63a","impliedFormat":99},{"version":"6907b09850f86610e7a528348c15484c1e1c09a18a9c1e98861399dfe4b18b46","impliedFormat":99},{"version":"12deea8eaa7a4fc1a2908e67da99831e5c5a6b46ad4f4f948fd4759314ea2b80","impliedFormat":99},{"version":"f0a8b376568a18f9a4976ecb0855187672b16b96c4df1c183a7e52dc1b5d98e8","impliedFormat":99},{"version":"8124828a11be7db984fcdab052fd4ff756b18edcfa8d71118b55388176210923","impliedFormat":99},{"version":"092944a8c05f9b96579161e88c6f211d5304a76bd2c47f8d4c30053269146bc8","impliedFormat":99},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0671b50bb99cc7ad46e9c68fa0e7f15ba4bc898b59c31a17ea4611fab5095da","affectsGlobalScope":true,"impliedFormat":1},{"version":"d802f0e6b5188646d307f070d83512e8eb94651858de8a82d1e47f60fb6da4e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"e525f9e67f5ddba7b5548430211cae2479070b70ef1fd93550c96c10529457bd","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"17fe9131bec653b07b0a1a8b99a830216e3e43fe0ea2605be318dc31777c8bbf","impliedFormat":1},{"version":"3c8e93af4d6ce21eb4c8d005ad6dc02e7b5e6781f429d52a35290210f495a674","impliedFormat":1},{"version":"2c9875466123715464539bfd69bcaccb8ff6f3e217809428e0d7bd6323416d01","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"2472ef4c28971272a897fdb85d4155df022e1f5d9a474a526b8fc2ef598af94e","impliedFormat":1},{"version":"6c8e442ba33b07892169a14f7757321e49ab0f1032d676d321a1fdab8a67d40c","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"1cd673d367293fc5cb31cd7bf03d598eb368e4f31f39cf2b908abbaf120ab85a","impliedFormat":1},{"version":"19851a6596401ca52d42117108d35e87230fc21593df5c4d3da7108526b6111c","impliedFormat":1},{"version":"3825bf209f1662dfd039010a27747b73d0ef379f79970b1d05601ec8e8a4249f","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"40bfc70953be2617dc71979c14e9e99c5e65c940a4f1c9759ddb90b0f8ff6b1a","impliedFormat":1},{"version":"da52342062e70c77213e45107921100ba9f9b3a30dd019444cf349e5fb3470c4","impliedFormat":1},{"version":"e9ace91946385d29192766bf783b8460c7dbcbfc63284aa3c9cae6de5155c8bc","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"561c60d8bfe0fec2c08827d09ff039eca0c1f9b50ef231025e5a549655ed0298","impliedFormat":1},{"version":"1e30c045732e7db8f7a82cf90b516ebe693d2f499ce2250a977ec0d12e44a529","impliedFormat":1},{"version":"84b736594d8760f43400202859cda55607663090a43445a078963031d47e25e7","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"78b29846349d4dfdd88bd6650cc5d2baaa67f2e89dc8a80c8e26ef7995386583","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"e38d4fdf79e1eadd92ed7844c331dbaa40f29f21541cfee4e1acff4db09cda33","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"7c10a32ae6f3962672e6869ee2c794e8055d8225ef35c91c0228e354b4e5d2d3","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"99f569b42ea7e7c5fe404b2848c0893f3e1a56e0547c1cd0f74d5dbb9a9de27e","impliedFormat":1},{"version":"f4b4faedc57701ae727d78ba4a83e466a6e3bdcbe40efbf913b17e860642897c","affectsGlobalScope":true,"impliedFormat":1},{"version":"bbcfd9cd76d92c3ee70475270156755346c9086391e1b9cb643d072e0cf576b8","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"72c1f5e0a28e473026074817561d1bc9647909cf253c8d56c41d1df8d95b85f7","impliedFormat":1},{"version":"4a48915fb0c07aa96d315dcb98231aa135151fb961cd3c6093cf29d64304c5d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"938f94db8400d0b479626b9006245a833d50ce8337f391085fad4af540279567","impliedFormat":1},{"version":"c4e8e8031808b158cfb5ac5c4b38d4a26659aec4b57b6a7e2ba0a141439c208c","impliedFormat":1},{"version":"2c91d8366ff2506296191c26fd97cc1990bab3ee22576275d28b654a21261a44","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"12fb9c13f24845000d7bd9660d11587e27ef967cbd64bd9df19ae3e6aa9b52d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"289e9894a4668c61b5ffed09e196c1f0c2f87ca81efcaebdf6357cfb198dac14","impliedFormat":1},{"version":"25a1105595236f09f5bce42398be9f9ededc8d538c258579ab662d509aa3b98e","impliedFormat":1},{"version":"4ea4cb9f755b97e72fd2f42e2d9786baf9184a8625085a24dc7ea96734d5986b","impliedFormat":1},{"version":"bd1b3b48920e1bd6d52133f95153a5d94aa1b3555e5f30b2154336e52abd29bd","impliedFormat":1},{"version":"ad1cc0ed328f3f708771272021be61ab146b32ecf2b78f3224959ff1e2cd2a5c","impliedFormat":1},{"version":"71450bbc2d82821d24ca05699a533e72758964e9852062c53b30f31c36978ab8","affectsGlobalScope":true,"impliedFormat":1},{"version":"62f572306e0b173cc5dfc4c583471151f16ef3779cf27ab96922c92ec82a3bc8","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f32444438ecb1fa4519f6ec3977d69ce0e3acfa18b803e5cd725c204501f350","impliedFormat":1},{"version":"0ab3c844f1eb5a1d94c90edc346a25eb9d3943af7a7812f061bf2d627d8afac0","impliedFormat":1},{"version":"e8c431ccd0dd211303eeeaef6329d70d1ba8d4f6fa23b9c1a625cebd29226c1e","impliedFormat":1},{"version":"161f09445a8b4ba07f62ae54b27054e4234e7957062e34c6362300726dabd315","impliedFormat":1},{"version":"77fced47f495f4ff29bb49c52c605c5e73cd9b47d50080133783032769a9d8a6","impliedFormat":1},{"version":"e6057f9e7b0c64d4527afeeada89f313f96a53291705f069a9193c18880578cb","impliedFormat":1},{"version":"34ecb9596317c44dab586118fb62c1565d3dad98d201cd77f3e6b0dde453339c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0f5cda0282e1d18198e2887387eb2f026372ebc4e11c4e4516fef8a19ee4d514","impliedFormat":1},{"version":"e99b0e71f07128fc32583e88ccd509a1aaa9524c290efb2f48c22f9bf8ba83b1","impliedFormat":1},{"version":"76957a6d92b94b9e2852cf527fea32ad2dc0ef50f67fe2b14bd027c9ceef2d86","impliedFormat":1},{"version":"237581f5ec4620a17e791d3bb79bad3af01e27a274dbee875ac9b0721a4fe97d","affectsGlobalScope":true,"impliedFormat":1},{"version":"a8a99a5e6ed33c4a951b67cc1fd5b64fd6ad719f5747845c165ca12f6c21ba16","affectsGlobalScope":true,"impliedFormat":1},{"version":"a58a15da4c5ba3df60c910a043281256fa52d36a0fcdef9b9100c646282e88dd","impliedFormat":1},{"version":"b36beffbf8acdc3ebc58c8bb4b75574b31a2169869c70fc03f82895b93950a12","impliedFormat":1},{"version":"de263f0089aefbfd73c89562fb7254a7468b1f33b61839aafc3f035d60766cb4","impliedFormat":1},{"version":"70b57b5529051497e9f6482b76d91c0dcbb103d9ead8a0549f5bab8f65e5d031","impliedFormat":1},{"version":"e6d81b1f7ab11dc1b1ad7ad29fcfad6904419b36baf55ed5e80df48d56ac3aff","impliedFormat":1},{"version":"1013eb2e2547ad8c100aca52ef9df8c3f209edee32bb387121bb3227f7c00088","impliedFormat":1},{"version":"b6b8e3736383a1d27e2592c484a940eeb37ec4808ba9e74dd57679b2453b5865","impliedFormat":1},{"version":"d6f36b683c59ac0d68a1d5ee906e578e2f5e9a285bca80ff95ce61cdc9ddcdeb","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"125d792ec6c0c0f657d758055c494301cc5fdb327d9d9d5960b3f129aff76093","impliedFormat":1},{"version":"12aad38de6f0594dc21efa78a2c1f67bf6a7ef5a389e05417fe9945284450908","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea713aa14a670b1ea0fbaaca4fd204e645f71ca7653a834a8ec07ee889c45de6","impliedFormat":1},{"version":"b338a6e6c1d456e65a6ea78da283e3077fe8edf7202ae10490abbba5b952b05e","impliedFormat":1},{"version":"2918b7c516051c30186a1055ebcdb3580522be7190f8a2fff4100ea714c7c366","affectsGlobalScope":true,"impliedFormat":1},{"version":"ae86f30d5d10e4f75ce8dcb6e1bd3a12ecec3d071a21e8f462c5c85c678efb41","impliedFormat":1},{"version":"982efeb2573605d4e6d5df4dc7e40846bda8b9e678e058fc99522ab6165c479e","impliedFormat":1},{"version":"e03460fe72b259f6d25ad029f085e4bedc3f90477da4401d8fbc1efa9793230e","impliedFormat":1},{"version":"4286a3a6619514fca656089aee160bb6f2e77f4dd53dc5a96b26a0b4fc778055","impliedFormat":1},{"version":"d67fc92a91171632fc74f413ce42ff1aa7fbcc5a85b127101f7ec446d2039a1f","affectsGlobalScope":true,"impliedFormat":1},{"version":"d40e4631100dbc067268bce96b07d7aff7f28a541b1bfb7ef791c64a696b3d33","affectsGlobalScope":true,"impliedFormat":1},{"version":"784490137935e1e38c49b9289110e74a1622baf8a8907888dcbe9e476d7c5e44","impliedFormat":1},{"version":"42180b657831d1b8fead051698618b31da623fb71ff37f002cb9d932cfa775f1","impliedFormat":1},{"version":"4f98d6fb4fe7cbeaa04635c6eaa119d966285d4d39f0eb55b2654187b0b27446","impliedFormat":1},{"version":"e4c653466d0497d87fa9ffd00e59a95f33bc1c1722c3f5c84dab2e950c18da70","affectsGlobalScope":true,"impliedFormat":1},{"version":"e6dcc3b933e864e91d4bea94274ad69854d5d2a1311a4b0e20408a57af19e95d","impliedFormat":1},{"version":"a51f786b9f3c297668f8f322a6c58f85d84948ef69ade32069d5d63ec917221c","impliedFormat":1},{"version":"a7ca8df4f2931bef2aa4118078584d84a0b16539598eaadf7dce9104dfaa381c","impliedFormat":1},{"version":"5c31dea483b64cbb341ea8a7073c457720d1574f87837e71cccb70ce91196211","impliedFormat":99},{"version":"11443a1dcfaaa404c68d53368b5b818712b95dd19f188cab1669c39bee8b84b3","impliedFormat":1},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"ffb518fc55181aefd066c690dbc0f8fa6a1533c8ddac595469c8c5f7fda2d756","affectsGlobalScope":true,"impliedFormat":1},{"version":"a660aa95476042d3fdcc1343cf6bb8fdf24772d31712b1db321c5a4dcc325434","impliedFormat":1},{"version":"36977c14a7f7bfc8c0426ae4343875689949fb699f3f84ecbe5b300ebf9a2c55","impliedFormat":1},{"version":"91b625209fa2a7c406923f59460ddb8d8919cd1c956edd76a047a670a6250d22","impliedFormat":99},{"version":"dd7ca4f0ef3661dac7043fb2cdf1b99e008d2b6bc5cd998dd1fa5a2968034984","affectsGlobalScope":true,"impliedFormat":1},{"version":"f582b0fcbf1eea9b318ab92fb89ea9ab2ebb84f9b60af89328a91155e1afce72","impliedFormat":1},{"version":"402e5c534fb2b85fa771170595db3ac0dd532112c8fa44fc23f233bc6967488b","impliedFormat":1},{"version":"8885cf05f3e2abf117590bbb951dcf6359e3e5ac462af1c901cfd24c6a6472e2","impliedFormat":1},{"version":"333caa2bfff7f06017f114de738050dd99a765c7eb16571c6d25a38c0d5365dc","impliedFormat":1},{"version":"e61df3640a38d535fd4bc9f4a53aef17c296b58dc4b6394fd576b808dd2fe5e6","impliedFormat":1},{"version":"459920181700cec8cbdf2a5faca127f3f17fd8dd9d9e577ed3f5f3af5d12a2e4","impliedFormat":1},{"version":"4719c209b9c00b579553859407a7e5dcfaa1c472994bd62aa5dd3cc0757eb077","impliedFormat":1},{"version":"7ec359bbc29b69d4063fe7dad0baaf35f1856f914db16b3f4f6e3e1bca4099fa","impliedFormat":1},{"version":"70790a7f0040993ca66ab8a07a059a0f8256e7bb57d968ae945f696cbff4ac7a","impliedFormat":1},{"version":"d1b9a81e99a0050ca7f2d98d7eedc6cda768f0eb9fa90b602e7107433e64c04c","impliedFormat":1},{"version":"a022503e75d6953d0e82c2c564508a5c7f8556fad5d7f971372d2d40479e4034","impliedFormat":1},{"version":"b215c4f0096f108020f666ffcc1f072c81e9f2f95464e894a5d5f34c5ea2a8b1","impliedFormat":1},{"version":"644491cde678bd462bb922c1d0cfab8f17d626b195ccb7f008612dc31f445d2d","impliedFormat":1},{"version":"dfe54dab1fa4961a6bcfba68c4ca955f8b5bbeb5f2ab3c915aa7adaa2eabc03a","impliedFormat":1},{"version":"1251d53755b03cde02466064260bb88fd83c30006a46395b7d9167340bc59b73","impliedFormat":1},{"version":"47865c5e695a382a916b1eedda1b6523145426e48a2eae4647e96b3b5e52024f","impliedFormat":1},{"version":"4cdf27e29feae6c7826cdd5c91751cc35559125e8304f9e7aed8faef97dcf572","impliedFormat":1},{"version":"331b8f71bfae1df25d564f5ea9ee65a0d847c4a94baa45925b6f38c55c7039bf","impliedFormat":1},{"version":"2a771d907aebf9391ac1f50e4ad37952943515eeea0dcc7e78aa08f508294668","impliedFormat":1},{"version":"0146fd6262c3fd3da51cb0254bb6b9a4e42931eb2f56329edd4c199cb9aaf804","impliedFormat":1},{"version":"183f480885db5caa5a8acb833c2be04f98056bdcc5fb29e969ff86e07efe57ab","impliedFormat":99},{"version":"4ec16d7a4e366c06a4573d299e15fe6207fc080f41beac5da06f4af33ea9761e","impliedFormat":1},{"version":"960bd764c62ac43edc24eaa2af958a4b4f1fa5d27df5237e176d0143b36a39c6","affectsGlobalScope":true,"impliedFormat":1},{"version":"f6a2b059a33edc17f69fe47dd65a6fce6d10a036ba5f71d8f53d5833226e45c2","impliedFormat":1},{"version":"f70b8328a15ca1d10b1436b691e134a49bc30dcf3183a69bfaa7ba77e1b78ecd","impliedFormat":1},{"version":"37290a5437be341902457e9d575d89a44b401c209055b00617b6956604ed5516","impliedFormat":99},{"version":"b34b5f6b506abb206b1ea73c6a332b9ee9c8c98be0f6d17cdbda9430ecc1efab","impliedFormat":99},{"version":"75d4c746c3d16af0df61e7b0afe9606475a23335d9f34fcc525d388c21e9058b","impliedFormat":99},{"version":"fa959bf357232201c32566f45d97e70538c75a093c940af594865d12f31d4912","impliedFormat":99},{"version":"d2c52abd76259fc39a30dfae70a2e5ce77fd23144457a7ff1b64b03de6e3aec7","impliedFormat":99},{"version":"e6233e1c976265e85aa8ad76c3881febe6264cb06ae3136f0257e1eab4a6cc5a","impliedFormat":99},{"version":"f73e2335e568014e279927321770da6fe26facd4ac96cdc22a56687f1ecbb58e","impliedFormat":99},{"version":"317878f156f976d487e21fd1d58ad0461ee0a09185d5b0a43eedf2a56eb7e4ea","impliedFormat":99},{"version":"324ac98294dab54fbd580c7d0e707d94506d7b2c3d5efe981a8495f02cf9ad96","impliedFormat":99},{"version":"9ec72eb493ff209b470467e24264116b6a8616484bca438091433a545dfba17e","impliedFormat":99},{"version":"d6ee22aba183d5fc0c7b8617f77ee82ecadc2c14359cc51271c135e23f6ed51f","impliedFormat":99},{"version":"49747416f08b3ba50500a215e7a55d75268b84e31e896a40313c8053e8dec908","impliedFormat":99},{"version":"81e634f1c5e1ca309e7e3dc69e2732eea932ef07b8b34517d452e5a3e9a36fa3","impliedFormat":99},{"version":"34f39f75f2b5aa9c84a9f8157abbf8322e6831430e402badeaf58dd284f9b9a6","impliedFormat":99},{"version":"427fe2004642504828c1476d0af4270e6ad4db6de78c0b5da3e4c5ca95052a99","impliedFormat":1},{"version":"c8905dbea83f3220676a669366cd8c1acef56af4d9d72a8b2241b1d044bb4302","affectsGlobalScope":true,"impliedFormat":99},{"version":"891694d3694abd66f0b8872997b85fd8e52bc51632ce0f8128c96962b443189f","impliedFormat":99},{"version":"69bf2422313487956e4dacf049f30cb91b34968912058d244cb19e4baa24da97","impliedFormat":99},{"version":"971a2c327ff166c770c5fb35699575ba2d13bba1f6d2757309c9be4b30036c8e","impliedFormat":99},{"version":"4f45e8effab83434a78d17123b01124259fbd1e335732135c213955d85222234","impliedFormat":99},{"version":"7bd51996fb7717941cbe094b05adc0d80b9503b350a77b789bbb0fc786f28053","impliedFormat":99},{"version":"b62006bbc815fe8190c7aee262aad6bff993e3f9ade70d7057dfceab6de79d2f","impliedFormat":99},{"version":"13497c0d73306e27f70634c424cd2f3b472187164f36140b504b3756b0ff476d","impliedFormat":99},{"version":"bf7a2d0f6d9e72d59044079d61000c38da50328ccdff28c47528a1a139c610ec","impliedFormat":99},{"version":"04471dc55f802c29791cc75edda8c4dd2a121f71c2401059da61eff83099e8ab","impliedFormat":99},{"version":"120a80aa556732f684db3ed61aeff1d6671e1655bd6cba0aa88b22b88ac9a6b1","affectsGlobalScope":true,"impliedFormat":99},{"version":"e58c0b5226aff07b63be6ac6e1bec9d55bc3d2bda3b11b9b68cccea8c24ae839","affectsGlobalScope":true,"impliedFormat":99},{"version":"a23a08b626aa4d4a1924957bd8c4d38a7ffc032e21407bbd2c97413e1d8c3dbd","impliedFormat":99},{"version":"5a88655bf852c8cc007d6bc874ab61d1d63fba97063020458177173c454e9b4a","impliedFormat":99},{"version":"7e4dfae2da12ec71ffd9f55f4641a6e05610ce0d6784838659490e259e4eb13c","impliedFormat":99},{"version":"c30a41267fc04c6518b17e55dcb2b810f267af4314b0b6d7df1c33a76ce1b330","impliedFormat":1},{"version":"72422d0bac4076912385d0c10911b82e4694fc106e2d70added091f88f0824ba","impliedFormat":1},{"version":"da251b82c25bee1d93f9fd80c5a61d945da4f708ca21285541d7aff83ecb8200","impliedFormat":1},{"version":"4c8ca51077f382498f47074cf304d654aba5d362416d4f809dfdd5d4f6b3aaca","impliedFormat":1},{"version":"c6bddf16578495abc8b5546850b047f30c4b5a2a2b7fecefc0e11a44a6e91399","impliedFormat":1},{"version":"13573a613314e40482386fe9c7934f9d86f3e06f19b840466c75391fb833b99b","impliedFormat":99},{"version":"d57b719ad0be49ba4ec7e9e2ca1adf577708a3d37309635c72c855cd91350c98","signature":"091b762f9eb6f653e544fd2abefa21ef435123829dc5c02ec312b631db6e7873","impliedFormat":99},{"version":"17341d4dae7759ccd476f899d2ff196fce53d67389772172bcde35ea8576b985","signature":"3405c5d27f2a736e89363a2b75cef955063763e4bbd6ce894eb5768f259c3e6b","impliedFormat":99},{"version":"29dd5c933b0094fe129e72ad4b199360e61a97d8863ae8e54e7329c5c280c157","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":99},{"version":"c7ed116686cf6fe30fa247ab36808e14b7545b6e3b55fdc5817d1cdc57c2c1a3","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":99},{"version":"ae77d81a5541a8abb938a0efedf9ac4bea36fb3a24cc28cfa11c598863aba571","impliedFormat":1},{"version":"7468ce3ef8243a51ee69aeb3b050f01f34c1e84cd4766fedd1b3594c03e30bbe","impliedFormat":1},{"version":"b6d03c9cfe2cf0ba4c673c209fcd7c46c815b2619fd2aad59fc4229aaef2ed43","impliedFormat":1},{"version":"81df92841a7a12d551fcbc7e4e83dbb7d54e0c73f33a82162d13e9ae89700079","impliedFormat":1},{"version":"f96f3c445afc7d65d4790386e37c5b57f095f285cc89b8315b209fe0c81837c1","impliedFormat":1},{"version":"a270efc2555753efb71c5cf2d58aaa664b98a2af4208b95091543e4e690cafb0","impliedFormat":1},{"version":"b11add1376095578230549a528d25b036fec7afd17426cdde4e69fa4087e7070","impliedFormat":1},{"version":"86d173bb5885dcbb2b18fdb4195332c956dc6c8511549570bac536af16ff7de8","impliedFormat":1},{"version":"be35d0ad228610a21c84b97194546d88cfad3a4c9d2724df26b92254491be7ab","impliedFormat":1},{"version":"211440ce81e87b3491cdf07155881344b0a61566df6e749acff0be7e8b9d1a07","impliedFormat":1},{"version":"5d9a0b6e6be8dbb259f64037bce02f34692e8c1519f5cd5d467d7fa4490dced4","impliedFormat":1},{"version":"880da0e0f3ebca42f9bd1bc2d3e5e7df33f2619d85f18ee0ed4bd16d1800bc32","impliedFormat":1},{"version":"7a1dd1e9c8bf5e23129495b10718b280340c7500570e0cfe5cffcdee51e13e48","impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"1989f4d863c0d5de4ec10c1f41275d883c91c5272aefaaf0e60e6f7b26bce05e","impliedFormat":1},{"version":"f30624acba47a6b1fdd9eef9402c05afd1a6b7b2136a7a635867c0dbc1bee3d1","impliedFormat":1},{"version":"170d4db14678c68178ee8a3d5a990d5afb759ecb6ec44dbd885c50f6da6204f6","affectsGlobalScope":true,"impliedFormat":1},{"version":"8a8eb4ebffd85e589a1cc7c178e291626c359543403d58c9cd22b81fab5b1fb9","impliedFormat":1},{"version":"d4d7d3f832882a4b2d611a7eaaa80c780c3342b5732090130fa9af4a40bd051e","impliedFormat":1},{"version":"2c2a746435ff3d3ec4ef1006d51922ed71d969e16a8c949ab3251e3f7db5f19d","impliedFormat":1},{"version":"c3924759a92cd75c7b9d36bc3aa7614e31c81df4a1dd8fc4289a9eeb56c596e0","affectsGlobalScope":true,"impliedFormat":1},{"version":"88c95849c807dcd491e15d624f27bc5e5680590bfb87d0278612aaee2d6214f7","affectsGlobalScope":true,"impliedFormat":1}],"root":[[241,244]],"options":{"declaration":true,"declarationMap":false,"esModuleInterop":true,"module":199,"noUncheckedIndexedAccess":true,"outDir":"./","skipLibCheck":true,"strict":true,"target":9},"referencedMap":[[246,1],[245,1],[247,2],[248,2],[220,3],[249,4],[219,1],[250,5],[253,6],[251,7],[252,7],[174,1],[256,8],[257,1],[258,1],[254,9],[255,1],[117,10],[118,10],[119,11],[76,12],[120,13],[121,14],[122,15],[74,1],[123,16],[124,17],[125,18],[126,19],[127,20],[128,21],[129,21],[131,1],[130,22],[132,23],[133,24],[134,25],[116,26],[75,1],[135,27],[136,28],[137,29],[170,30],[138,31],[139,32],[140,33],[141,34],[142,35],[143,36],[144,37],[145,38],[146,39],[147,40],[148,40],[149,41],[150,1],[151,1],[152,42],[154,43],[153,44],[155,45],[156,46],[157,47],[158,48],[159,49],[160,50],[161,51],[162,52],[163,53],[164,54],[165,55],[166,56],[167,57],[168,58],[169,59],[259,1],[260,60],[261,1],[263,61],[264,1],[265,1],[266,62],[230,63],[208,64],[206,1],[207,1],[60,1],[71,65],[66,66],[69,67],[221,68],[213,1],[216,69],[215,70],[226,70],[214,71],[229,1],[68,72],[70,72],[62,73],[65,74],[209,73],[67,75],[61,1],[262,1],[179,1],[237,76],[239,77],[238,78],[236,79],[235,1],[197,80],[195,81],[196,82],[184,83],[185,81],[192,84],[183,85],[188,86],[198,1],[189,87],[194,88],[200,60],[199,89],[182,90],[190,91],[191,92],[186,93],[193,80],[187,94],[176,95],[175,96],[181,1],[222,1],[63,1],[64,97],[58,1],[59,1],[11,1],[10,1],[2,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[3,1],[20,1],[21,1],[4,1],[22,1],[26,1],[23,1],[24,1],[25,1],[27,1],[28,1],[29,1],[5,1],[30,1],[31,1],[32,1],[33,1],[6,1],[37,1],[34,1],[35,1],[36,1],[38,1],[7,1],[39,1],[44,1],[45,1],[40,1],[41,1],[42,1],[43,1],[8,1],[49,1],[46,1],[47,1],[48,1],[50,1],[9,1],[51,1],[52,1],[53,1],[55,1],[54,1],[1,1],[56,1],[57,1],[93,98],[104,99],[91,98],[105,100],[114,101],[83,102],[82,103],[113,5],[108,104],[112,105],[85,106],[101,107],[84,108],[111,109],[80,110],[81,104],[86,111],[87,1],[92,102],[90,111],[78,112],[115,113],[106,114],[96,115],[95,111],[97,116],[99,117],[94,118],[98,119],[109,5],[88,120],[89,121],[100,122],[79,100],[103,123],[102,111],[107,1],[77,1],[110,124],[224,125],[211,126],[212,125],[210,1],[205,127],[178,128],[172,129],[173,129],[171,1],[177,130],[203,1],[202,1],[201,1],[180,1],[204,131],[223,132],[217,133],[225,134],[73,135],[231,136],[233,137],[227,138],[234,139],[232,140],[218,141],[228,142],[240,143],[72,1],[243,144],[242,145],[244,146],[241,147]],"version":"5.8.3"}
@@ -0,0 +1,5 @@
1
+ import { DupGroup } from './index.js';
2
+ /**
3
+ * Writes a TypeScript file with type aliases for exact duplicate groups.
4
+ */
5
+ export declare function writeFixFile(groups: DupGroup[], outFile: string): void;
@@ -0,0 +1,20 @@
1
+ import fs from 'fs';
2
+ /**
3
+ * Writes a TypeScript file with type aliases for exact duplicate groups.
4
+ */
5
+ export function writeFixFile(groups, outFile) {
6
+ const exact = groups.filter(g => g.similarity === 1);
7
+ let body = `// Auto-generated by dry-lint – identical types unified\n\n`;
8
+ exact.forEach((g, idx) => {
9
+ const baseName = g.decls[0].location.name;
10
+ body += `// Group ${idx + 1}\n`;
11
+ // Declare a placeholder for the base type
12
+ body += `export type ${baseName} = {/* replace with real shape */};\n`;
13
+ // Alias remaining duplicates to the base type
14
+ g.decls.slice(1).forEach(d => {
15
+ body += `export type ${d.location.name} = ${baseName};\n`;
16
+ });
17
+ body += `\n`;
18
+ });
19
+ fs.writeFileSync(outFile, body, 'utf8');
20
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,28 @@
1
+ import { describe, it, expect, vi } from 'vitest';
2
+ import fs from 'fs';
3
+ import { writeFixFile as _writeFixFile } from './writeFixFile.js';
4
+ // spy on fs.writeFileSync
5
+ vi.mock('fs', () => ({
6
+ default: {
7
+ writeFileSync: vi.fn(),
8
+ },
9
+ }));
10
+ const fsMock = fs;
11
+ describe('core › writeFixFile', () => {
12
+ it('writes alias stubs for exact duplicate groups', () => {
13
+ const groups = [
14
+ {
15
+ similarity: 1,
16
+ decls: [
17
+ { id: 'a', kind: 't', shape: {}, location: { file: 'f', name: 'Foo' } },
18
+ { id: 'b', kind: 't', shape: {}, location: { file: 'f', name: 'Bar' } },
19
+ ],
20
+ },
21
+ ];
22
+ _writeFixFile(groups, 'out.ts');
23
+ expect(fsMock.writeFileSync).toHaveBeenCalled();
24
+ const content = fsMock.writeFileSync.mock.calls[0][1];
25
+ expect(content).toMatch(/export type Foo/);
26
+ expect(content).toMatch(/export type Bar = Foo/);
27
+ });
28
+ });
package/package.json ADDED
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "@dry-lint/core",
3
+ "version": "1.0.0",
4
+ "dependencies": {},
5
+ "devDependencies": {
6
+ "@types/node": "^24.0.10",
7
+ "eslint": "^9.30.1",
8
+ "rimraf": "^6.0.1",
9
+ "typescript": "^5.8.3"
10
+ },
11
+ "engines": {
12
+ "node": ">=18"
13
+ },
14
+ "files": [
15
+ "dist"
16
+ ],
17
+ "main": "dist/index.js",
18
+ "private": false,
19
+ "publishConfig": {
20
+ "access": "public"
21
+ },
22
+ "scripts": {
23
+ "build": "tsc -b",
24
+ "check-types": "tsc -b --noEmit",
25
+ "clean": "rimraf dist",
26
+ "lint": "eslint \"src/**/*.ts\"",
27
+ "test": "vitest run",
28
+ "test:ci": "vitest run",
29
+ "test:coverage": "vitest run --coverage",
30
+ "test:watch": "vitest"
31
+ },
32
+ "type": "module",
33
+ "types": "./src/index.ts"
34
+ }