@yoinkingfish/shared 0.1.1

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 CodeCarto Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,39 @@
1
+ /** Shared constants — single source of truth for cross-package behavior */
2
+ export declare const GRAPH_VERSION: "0.1.0";
3
+ export declare const DEFAULT_IGNORE_DIRS: readonly ["node_modules", ".git", "dist", "build", "coverage", ".cache", ".next", ".nuxt", ".turbo", ".vite", "out", "vendor", "target", ".tmp", "temp"];
4
+ export declare const DEFAULT_IGNORE_GLOBS: readonly ["**/node_modules/**", "**/.git/**", "**/dist/**", "**/build/**", "**/coverage/**", "**/.cache/**", "**/.next/**", "**/.nuxt/**", "**/.turbo/**", "**/.vite/**", "**/out/**", "**/vendor/**", "**/target/**"];
5
+ export declare const IGNORED_EXTENSIONS: Set<string>;
6
+ export declare const SUPPORTED_EXTENSIONS: Set<string>;
7
+ export declare const LANGUAGE_BY_EXTENSION: Record<string, string>;
8
+ export declare const DEFAULT_MAX_FILE_SIZE_BYTES: number;
9
+ export declare const DEFAULT_CONCURRENCY = 64;
10
+ export declare const THEME: {
11
+ readonly background: "#050505";
12
+ readonly surface: "#0f0f12";
13
+ readonly text: "#e6e8ec";
14
+ readonly mutedText: "#8b8d98";
15
+ readonly border: "#1e1e24";
16
+ readonly accent: "#00d9ff";
17
+ readonly accent2: "#7c5cff";
18
+ readonly accent3: "#ff3b9a";
19
+ readonly node: {
20
+ readonly typescript: "#2b7fff";
21
+ readonly javascript: "#f0db4f";
22
+ readonly default: "#6e7681";
23
+ readonly highlight: "#00d9ff";
24
+ readonly dimmed: "#2a2a33";
25
+ };
26
+ readonly edge: {
27
+ readonly default: "#2a2a3a";
28
+ readonly highlight: "#00d9ff";
29
+ readonly dimmed: "#1a1a22";
30
+ };
31
+ };
32
+ export declare const PERF_THRESHOLDS: {
33
+ readonly fullEffectsMaxNodes: 500;
34
+ readonly reducedEffectsMaxNodes: 2000;
35
+ };
36
+ export declare const DEFAULT_PORT = 3000;
37
+ export declare const MAX_PORT_ATTEMPTS = 20;
38
+ //# sourceMappingURL=index.d.ts.map
39
+
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAK3E,eAAO,MAAM,aAAa,EAAG,OAAgB,CAAC;AAK9C,eAAO,MAAM,mBAAmB,0JAgBtB,CAAC;AAEX,eAAO,MAAM,oBAAoB,wNAcvB,CAAC;AAGX,eAAO,MAAM,kBAAkB,aA0B7B,CAAC;AAKH,eAAO,MAAM,oBAAoB,aAAoD,CAAC;AACtF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAOxD,CAAC;AAKF,eAAO,MAAM,2BAA2B,QAAkB,CAAC;AAC3D,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAKtC,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;CAqBR,CAAC;AAKX,eAAO,MAAM,eAAe;;;CAGlB,CAAC;AAKX,eAAO,MAAM,YAAY,OAAO,CAAC;AACjC,eAAO,MAAM,iBAAiB,KAAK,CAAC"}
@@ -0,0 +1,123 @@
1
+ /** Shared constants — single source of truth for cross-package behavior */
2
+ // ---------------------------------------------------------------------------
3
+ // Graph version — bump on breaking schema change (semver)
4
+ // ---------------------------------------------------------------------------
5
+ export const GRAPH_VERSION = "0.1.0";
6
+ // ---------------------------------------------------------------------------
7
+ // Default ignore patterns (mirrors spec §9 + common generated/vendor dirs)
8
+ // ---------------------------------------------------------------------------
9
+ export const DEFAULT_IGNORE_DIRS = [
10
+ "node_modules",
11
+ ".git",
12
+ "dist",
13
+ "build",
14
+ "coverage",
15
+ ".cache",
16
+ ".next",
17
+ ".nuxt",
18
+ ".turbo",
19
+ ".vite",
20
+ "out",
21
+ "vendor",
22
+ "target",
23
+ ".tmp",
24
+ "temp",
25
+ ];
26
+ export const DEFAULT_IGNORE_GLOBS = [
27
+ "**/node_modules/**",
28
+ "**/.git/**",
29
+ "**/dist/**",
30
+ "**/build/**",
31
+ "**/coverage/**",
32
+ "**/.cache/**",
33
+ "**/.next/**",
34
+ "**/.nuxt/**",
35
+ "**/.turbo/**",
36
+ "**/.vite/**",
37
+ "**/out/**",
38
+ "**/vendor/**",
39
+ "**/target/**",
40
+ ];
41
+ // Binary / asset extensions to ignore (spec §9)
42
+ export const IGNORED_EXTENSIONS = new Set([
43
+ "png",
44
+ "jpg",
45
+ "jpeg",
46
+ "gif",
47
+ "webp",
48
+ "ico",
49
+ "svg",
50
+ "mp4",
51
+ "mov",
52
+ "avi",
53
+ "mp3",
54
+ "wav",
55
+ "zip",
56
+ "tar",
57
+ "gz",
58
+ "7z",
59
+ "pdf",
60
+ "exe",
61
+ "dll",
62
+ "so",
63
+ "dylib",
64
+ "woff",
65
+ "woff2",
66
+ "ttf",
67
+ "otf",
68
+ ]);
69
+ // ---------------------------------------------------------------------------
70
+ // Language support
71
+ // ---------------------------------------------------------------------------
72
+ export const SUPPORTED_EXTENSIONS = new Set(["js", "jsx", "ts", "tsx", "mjs", "cjs"]);
73
+ export const LANGUAGE_BY_EXTENSION = {
74
+ js: "javascript",
75
+ jsx: "javascript",
76
+ mjs: "javascript",
77
+ cjs: "javascript",
78
+ ts: "typescript",
79
+ tsx: "typescript",
80
+ };
81
+ // ---------------------------------------------------------------------------
82
+ // Limits
83
+ // ---------------------------------------------------------------------------
84
+ export const DEFAULT_MAX_FILE_SIZE_BYTES = 2 * 1024 * 1024; // 2 MB
85
+ export const DEFAULT_CONCURRENCY = 64;
86
+ // ---------------------------------------------------------------------------
87
+ // Theme tokens (spec §27)
88
+ // ---------------------------------------------------------------------------
89
+ export const THEME = {
90
+ background: "#050505",
91
+ surface: "#0f0f12",
92
+ text: "#e6e8ec",
93
+ mutedText: "#8b8d98",
94
+ border: "#1e1e24",
95
+ accent: "#00d9ff",
96
+ accent2: "#7c5cff",
97
+ accent3: "#ff3b9a",
98
+ node: {
99
+ typescript: "#2b7fff",
100
+ javascript: "#f0db4f",
101
+ default: "#6e7681",
102
+ highlight: "#00d9ff",
103
+ dimmed: "#2a2a33",
104
+ },
105
+ edge: {
106
+ default: "#2a2a3a",
107
+ highlight: "#00d9ff",
108
+ dimmed: "#1a1a22",
109
+ },
110
+ };
111
+ // ---------------------------------------------------------------------------
112
+ // Performance thresholds for visualizer (spec §19)
113
+ // ---------------------------------------------------------------------------
114
+ export const PERF_THRESHOLDS = {
115
+ fullEffectsMaxNodes: 500,
116
+ reducedEffectsMaxNodes: 2000,
117
+ };
118
+ // ---------------------------------------------------------------------------
119
+ // Local server defaults
120
+ // ---------------------------------------------------------------------------
121
+ export const DEFAULT_PORT = 3000;
122
+ export const MAX_PORT_ATTEMPTS = 20;
123
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @yoinkingfish/shared — public entry point.
3
+ * Re-exports domain types, schemas, and constants.
4
+ */
5
+ export * from "./types/graph.js";
6
+ export * from "./schemas/graph.js";
7
+ export * from "./constants/index.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @yoinkingfish/shared — public entry point.
3
+ * Re-exports domain types, schemas, and constants.
4
+ */
5
+ export * from "./types/graph.js";
6
+ export * from "./schemas/graph.js";
7
+ export * from "./constants/index.js";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,668 @@
1
+ import { z } from "zod";
2
+ export declare const codeNodeSchema: z.ZodObject<{
3
+ id: z.ZodString;
4
+ type: z.ZodEnum<["file", "directory", "package", "external-package"]>;
5
+ path: z.ZodString;
6
+ name: z.ZodString;
7
+ extension: z.ZodString;
8
+ language: z.ZodOptional<z.ZodString>;
9
+ category: z.ZodOptional<z.ZodEnum<["ui", "api", "data", "util", "config", "test", "style", "other"]>>;
10
+ sizeBytes: z.ZodNumber;
11
+ linesOfCode: z.ZodOptional<z.ZodNumber>;
12
+ directory: z.ZodString;
13
+ depth: z.ZodNumber;
14
+ inboundDependencies: z.ZodNumber;
15
+ outboundDependencies: z.ZodNumber;
16
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
17
+ }, "strip", z.ZodTypeAny, {
18
+ directory: string;
19
+ id: string;
20
+ type: "file" | "directory" | "package" | "external-package";
21
+ path: string;
22
+ name: string;
23
+ extension: string;
24
+ sizeBytes: number;
25
+ depth: number;
26
+ inboundDependencies: number;
27
+ outboundDependencies: number;
28
+ language?: string | undefined;
29
+ category?: "ui" | "api" | "data" | "util" | "config" | "test" | "style" | "other" | undefined;
30
+ linesOfCode?: number | undefined;
31
+ metadata?: Record<string, unknown> | undefined;
32
+ }, {
33
+ directory: string;
34
+ id: string;
35
+ type: "file" | "directory" | "package" | "external-package";
36
+ path: string;
37
+ name: string;
38
+ extension: string;
39
+ sizeBytes: number;
40
+ depth: number;
41
+ inboundDependencies: number;
42
+ outboundDependencies: number;
43
+ language?: string | undefined;
44
+ category?: "ui" | "api" | "data" | "util" | "config" | "test" | "style" | "other" | undefined;
45
+ linesOfCode?: number | undefined;
46
+ metadata?: Record<string, unknown> | undefined;
47
+ }>;
48
+ export declare const codeLinkSchema: z.ZodObject<{
49
+ source: z.ZodString;
50
+ target: z.ZodString;
51
+ type: z.ZodEnum<["import", "require", "dynamic-import", "unknown"]>;
52
+ weight: z.ZodOptional<z.ZodNumber>;
53
+ resolved: z.ZodBoolean;
54
+ rawSpecifier: z.ZodOptional<z.ZodString>;
55
+ }, "strip", z.ZodTypeAny, {
56
+ target: string;
57
+ type: "import" | "require" | "dynamic-import" | "unknown";
58
+ source: string;
59
+ resolved: boolean;
60
+ weight?: number | undefined;
61
+ rawSpecifier?: string | undefined;
62
+ }, {
63
+ target: string;
64
+ type: "import" | "require" | "dynamic-import" | "unknown";
65
+ source: string;
66
+ resolved: boolean;
67
+ weight?: number | undefined;
68
+ rawSpecifier?: string | undefined;
69
+ }>;
70
+ export declare const graphStatsSchema: z.ZodObject<{
71
+ totalFiles: z.ZodNumber;
72
+ totalLinks: z.ZodNumber;
73
+ totalDirectories: z.ZodNumber;
74
+ languages: z.ZodRecord<z.ZodString, z.ZodNumber>;
75
+ categories: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
76
+ avgDependencies: z.ZodNumber;
77
+ isolatedFiles: z.ZodNumber;
78
+ circularDependencies: z.ZodArray<z.ZodArray<z.ZodString, "many">, "many">;
79
+ largestFiles: z.ZodArray<z.ZodObject<{
80
+ id: z.ZodString;
81
+ sizeBytes: z.ZodNumber;
82
+ }, "strip", z.ZodTypeAny, {
83
+ id: string;
84
+ sizeBytes: number;
85
+ }, {
86
+ id: string;
87
+ sizeBytes: number;
88
+ }>, "many">;
89
+ deepestDirectories: z.ZodArray<z.ZodObject<{
90
+ path: z.ZodString;
91
+ depth: z.ZodNumber;
92
+ }, "strip", z.ZodTypeAny, {
93
+ path: string;
94
+ depth: number;
95
+ }, {
96
+ path: string;
97
+ depth: number;
98
+ }>, "many">;
99
+ mostImportedFiles: z.ZodArray<z.ZodObject<{
100
+ id: z.ZodString;
101
+ count: z.ZodNumber;
102
+ }, "strip", z.ZodTypeAny, {
103
+ id: string;
104
+ count: number;
105
+ }, {
106
+ id: string;
107
+ count: number;
108
+ }>, "many">;
109
+ mostDependentFiles: z.ZodArray<z.ZodObject<{
110
+ id: z.ZodString;
111
+ count: z.ZodNumber;
112
+ }, "strip", z.ZodTypeAny, {
113
+ id: string;
114
+ count: number;
115
+ }, {
116
+ id: string;
117
+ count: number;
118
+ }>, "many">;
119
+ parseFailures: z.ZodArray<z.ZodObject<{
120
+ path: z.ZodString;
121
+ reason: z.ZodString;
122
+ }, "strip", z.ZodTypeAny, {
123
+ path: string;
124
+ reason: string;
125
+ }, {
126
+ path: string;
127
+ reason: string;
128
+ }>, "many">;
129
+ unsupportedFiles: z.ZodArray<z.ZodObject<{
130
+ path: z.ZodString;
131
+ language: z.ZodOptional<z.ZodString>;
132
+ }, "strip", z.ZodTypeAny, {
133
+ path: string;
134
+ language?: string | undefined;
135
+ }, {
136
+ path: string;
137
+ language?: string | undefined;
138
+ }>, "many">;
139
+ }, "strip", z.ZodTypeAny, {
140
+ totalFiles: number;
141
+ totalLinks: number;
142
+ totalDirectories: number;
143
+ languages: Record<string, number>;
144
+ avgDependencies: number;
145
+ isolatedFiles: number;
146
+ circularDependencies: string[][];
147
+ largestFiles: {
148
+ id: string;
149
+ sizeBytes: number;
150
+ }[];
151
+ deepestDirectories: {
152
+ path: string;
153
+ depth: number;
154
+ }[];
155
+ mostImportedFiles: {
156
+ id: string;
157
+ count: number;
158
+ }[];
159
+ mostDependentFiles: {
160
+ id: string;
161
+ count: number;
162
+ }[];
163
+ parseFailures: {
164
+ path: string;
165
+ reason: string;
166
+ }[];
167
+ unsupportedFiles: {
168
+ path: string;
169
+ language?: string | undefined;
170
+ }[];
171
+ categories?: Record<string, number> | undefined;
172
+ }, {
173
+ totalFiles: number;
174
+ totalLinks: number;
175
+ totalDirectories: number;
176
+ languages: Record<string, number>;
177
+ avgDependencies: number;
178
+ isolatedFiles: number;
179
+ circularDependencies: string[][];
180
+ largestFiles: {
181
+ id: string;
182
+ sizeBytes: number;
183
+ }[];
184
+ deepestDirectories: {
185
+ path: string;
186
+ depth: number;
187
+ }[];
188
+ mostImportedFiles: {
189
+ id: string;
190
+ count: number;
191
+ }[];
192
+ mostDependentFiles: {
193
+ id: string;
194
+ count: number;
195
+ }[];
196
+ parseFailures: {
197
+ path: string;
198
+ reason: string;
199
+ }[];
200
+ unsupportedFiles: {
201
+ path: string;
202
+ language?: string | undefined;
203
+ }[];
204
+ categories?: Record<string, number> | undefined;
205
+ }>;
206
+ export declare const codeGraphSchema: z.ZodObject<{
207
+ version: z.ZodString;
208
+ root: z.ZodString;
209
+ generatedAt: z.ZodString;
210
+ nodes: z.ZodArray<z.ZodObject<{
211
+ id: z.ZodString;
212
+ type: z.ZodEnum<["file", "directory", "package", "external-package"]>;
213
+ path: z.ZodString;
214
+ name: z.ZodString;
215
+ extension: z.ZodString;
216
+ language: z.ZodOptional<z.ZodString>;
217
+ category: z.ZodOptional<z.ZodEnum<["ui", "api", "data", "util", "config", "test", "style", "other"]>>;
218
+ sizeBytes: z.ZodNumber;
219
+ linesOfCode: z.ZodOptional<z.ZodNumber>;
220
+ directory: z.ZodString;
221
+ depth: z.ZodNumber;
222
+ inboundDependencies: z.ZodNumber;
223
+ outboundDependencies: z.ZodNumber;
224
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
225
+ }, "strip", z.ZodTypeAny, {
226
+ directory: string;
227
+ id: string;
228
+ type: "file" | "directory" | "package" | "external-package";
229
+ path: string;
230
+ name: string;
231
+ extension: string;
232
+ sizeBytes: number;
233
+ depth: number;
234
+ inboundDependencies: number;
235
+ outboundDependencies: number;
236
+ language?: string | undefined;
237
+ category?: "ui" | "api" | "data" | "util" | "config" | "test" | "style" | "other" | undefined;
238
+ linesOfCode?: number | undefined;
239
+ metadata?: Record<string, unknown> | undefined;
240
+ }, {
241
+ directory: string;
242
+ id: string;
243
+ type: "file" | "directory" | "package" | "external-package";
244
+ path: string;
245
+ name: string;
246
+ extension: string;
247
+ sizeBytes: number;
248
+ depth: number;
249
+ inboundDependencies: number;
250
+ outboundDependencies: number;
251
+ language?: string | undefined;
252
+ category?: "ui" | "api" | "data" | "util" | "config" | "test" | "style" | "other" | undefined;
253
+ linesOfCode?: number | undefined;
254
+ metadata?: Record<string, unknown> | undefined;
255
+ }>, "many">;
256
+ links: z.ZodArray<z.ZodObject<{
257
+ source: z.ZodString;
258
+ target: z.ZodString;
259
+ type: z.ZodEnum<["import", "require", "dynamic-import", "unknown"]>;
260
+ weight: z.ZodOptional<z.ZodNumber>;
261
+ resolved: z.ZodBoolean;
262
+ rawSpecifier: z.ZodOptional<z.ZodString>;
263
+ }, "strip", z.ZodTypeAny, {
264
+ target: string;
265
+ type: "import" | "require" | "dynamic-import" | "unknown";
266
+ source: string;
267
+ resolved: boolean;
268
+ weight?: number | undefined;
269
+ rawSpecifier?: string | undefined;
270
+ }, {
271
+ target: string;
272
+ type: "import" | "require" | "dynamic-import" | "unknown";
273
+ source: string;
274
+ resolved: boolean;
275
+ weight?: number | undefined;
276
+ rawSpecifier?: string | undefined;
277
+ }>, "many">;
278
+ stats: z.ZodObject<{
279
+ totalFiles: z.ZodNumber;
280
+ totalLinks: z.ZodNumber;
281
+ totalDirectories: z.ZodNumber;
282
+ languages: z.ZodRecord<z.ZodString, z.ZodNumber>;
283
+ categories: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
284
+ avgDependencies: z.ZodNumber;
285
+ isolatedFiles: z.ZodNumber;
286
+ circularDependencies: z.ZodArray<z.ZodArray<z.ZodString, "many">, "many">;
287
+ largestFiles: z.ZodArray<z.ZodObject<{
288
+ id: z.ZodString;
289
+ sizeBytes: z.ZodNumber;
290
+ }, "strip", z.ZodTypeAny, {
291
+ id: string;
292
+ sizeBytes: number;
293
+ }, {
294
+ id: string;
295
+ sizeBytes: number;
296
+ }>, "many">;
297
+ deepestDirectories: z.ZodArray<z.ZodObject<{
298
+ path: z.ZodString;
299
+ depth: z.ZodNumber;
300
+ }, "strip", z.ZodTypeAny, {
301
+ path: string;
302
+ depth: number;
303
+ }, {
304
+ path: string;
305
+ depth: number;
306
+ }>, "many">;
307
+ mostImportedFiles: z.ZodArray<z.ZodObject<{
308
+ id: z.ZodString;
309
+ count: z.ZodNumber;
310
+ }, "strip", z.ZodTypeAny, {
311
+ id: string;
312
+ count: number;
313
+ }, {
314
+ id: string;
315
+ count: number;
316
+ }>, "many">;
317
+ mostDependentFiles: z.ZodArray<z.ZodObject<{
318
+ id: z.ZodString;
319
+ count: z.ZodNumber;
320
+ }, "strip", z.ZodTypeAny, {
321
+ id: string;
322
+ count: number;
323
+ }, {
324
+ id: string;
325
+ count: number;
326
+ }>, "many">;
327
+ parseFailures: z.ZodArray<z.ZodObject<{
328
+ path: z.ZodString;
329
+ reason: z.ZodString;
330
+ }, "strip", z.ZodTypeAny, {
331
+ path: string;
332
+ reason: string;
333
+ }, {
334
+ path: string;
335
+ reason: string;
336
+ }>, "many">;
337
+ unsupportedFiles: z.ZodArray<z.ZodObject<{
338
+ path: z.ZodString;
339
+ language: z.ZodOptional<z.ZodString>;
340
+ }, "strip", z.ZodTypeAny, {
341
+ path: string;
342
+ language?: string | undefined;
343
+ }, {
344
+ path: string;
345
+ language?: string | undefined;
346
+ }>, "many">;
347
+ }, "strip", z.ZodTypeAny, {
348
+ totalFiles: number;
349
+ totalLinks: number;
350
+ totalDirectories: number;
351
+ languages: Record<string, number>;
352
+ avgDependencies: number;
353
+ isolatedFiles: number;
354
+ circularDependencies: string[][];
355
+ largestFiles: {
356
+ id: string;
357
+ sizeBytes: number;
358
+ }[];
359
+ deepestDirectories: {
360
+ path: string;
361
+ depth: number;
362
+ }[];
363
+ mostImportedFiles: {
364
+ id: string;
365
+ count: number;
366
+ }[];
367
+ mostDependentFiles: {
368
+ id: string;
369
+ count: number;
370
+ }[];
371
+ parseFailures: {
372
+ path: string;
373
+ reason: string;
374
+ }[];
375
+ unsupportedFiles: {
376
+ path: string;
377
+ language?: string | undefined;
378
+ }[];
379
+ categories?: Record<string, number> | undefined;
380
+ }, {
381
+ totalFiles: number;
382
+ totalLinks: number;
383
+ totalDirectories: number;
384
+ languages: Record<string, number>;
385
+ avgDependencies: number;
386
+ isolatedFiles: number;
387
+ circularDependencies: string[][];
388
+ largestFiles: {
389
+ id: string;
390
+ sizeBytes: number;
391
+ }[];
392
+ deepestDirectories: {
393
+ path: string;
394
+ depth: number;
395
+ }[];
396
+ mostImportedFiles: {
397
+ id: string;
398
+ count: number;
399
+ }[];
400
+ mostDependentFiles: {
401
+ id: string;
402
+ count: number;
403
+ }[];
404
+ parseFailures: {
405
+ path: string;
406
+ reason: string;
407
+ }[];
408
+ unsupportedFiles: {
409
+ path: string;
410
+ language?: string | undefined;
411
+ }[];
412
+ categories?: Record<string, number> | undefined;
413
+ }>;
414
+ }, "strip", z.ZodTypeAny, {
415
+ version: string;
416
+ root: string;
417
+ generatedAt: string;
418
+ nodes: {
419
+ directory: string;
420
+ id: string;
421
+ type: "file" | "directory" | "package" | "external-package";
422
+ path: string;
423
+ name: string;
424
+ extension: string;
425
+ sizeBytes: number;
426
+ depth: number;
427
+ inboundDependencies: number;
428
+ outboundDependencies: number;
429
+ language?: string | undefined;
430
+ category?: "ui" | "api" | "data" | "util" | "config" | "test" | "style" | "other" | undefined;
431
+ linesOfCode?: number | undefined;
432
+ metadata?: Record<string, unknown> | undefined;
433
+ }[];
434
+ links: {
435
+ target: string;
436
+ type: "import" | "require" | "dynamic-import" | "unknown";
437
+ source: string;
438
+ resolved: boolean;
439
+ weight?: number | undefined;
440
+ rawSpecifier?: string | undefined;
441
+ }[];
442
+ stats: {
443
+ totalFiles: number;
444
+ totalLinks: number;
445
+ totalDirectories: number;
446
+ languages: Record<string, number>;
447
+ avgDependencies: number;
448
+ isolatedFiles: number;
449
+ circularDependencies: string[][];
450
+ largestFiles: {
451
+ id: string;
452
+ sizeBytes: number;
453
+ }[];
454
+ deepestDirectories: {
455
+ path: string;
456
+ depth: number;
457
+ }[];
458
+ mostImportedFiles: {
459
+ id: string;
460
+ count: number;
461
+ }[];
462
+ mostDependentFiles: {
463
+ id: string;
464
+ count: number;
465
+ }[];
466
+ parseFailures: {
467
+ path: string;
468
+ reason: string;
469
+ }[];
470
+ unsupportedFiles: {
471
+ path: string;
472
+ language?: string | undefined;
473
+ }[];
474
+ categories?: Record<string, number> | undefined;
475
+ };
476
+ }, {
477
+ version: string;
478
+ root: string;
479
+ generatedAt: string;
480
+ nodes: {
481
+ directory: string;
482
+ id: string;
483
+ type: "file" | "directory" | "package" | "external-package";
484
+ path: string;
485
+ name: string;
486
+ extension: string;
487
+ sizeBytes: number;
488
+ depth: number;
489
+ inboundDependencies: number;
490
+ outboundDependencies: number;
491
+ language?: string | undefined;
492
+ category?: "ui" | "api" | "data" | "util" | "config" | "test" | "style" | "other" | undefined;
493
+ linesOfCode?: number | undefined;
494
+ metadata?: Record<string, unknown> | undefined;
495
+ }[];
496
+ links: {
497
+ target: string;
498
+ type: "import" | "require" | "dynamic-import" | "unknown";
499
+ source: string;
500
+ resolved: boolean;
501
+ weight?: number | undefined;
502
+ rawSpecifier?: string | undefined;
503
+ }[];
504
+ stats: {
505
+ totalFiles: number;
506
+ totalLinks: number;
507
+ totalDirectories: number;
508
+ languages: Record<string, number>;
509
+ avgDependencies: number;
510
+ isolatedFiles: number;
511
+ circularDependencies: string[][];
512
+ largestFiles: {
513
+ id: string;
514
+ sizeBytes: number;
515
+ }[];
516
+ deepestDirectories: {
517
+ path: string;
518
+ depth: number;
519
+ }[];
520
+ mostImportedFiles: {
521
+ id: string;
522
+ count: number;
523
+ }[];
524
+ mostDependentFiles: {
525
+ id: string;
526
+ count: number;
527
+ }[];
528
+ parseFailures: {
529
+ path: string;
530
+ reason: string;
531
+ }[];
532
+ unsupportedFiles: {
533
+ path: string;
534
+ language?: string | undefined;
535
+ }[];
536
+ categories?: Record<string, number> | undefined;
537
+ };
538
+ }>;
539
+ export type CodeGraphParsed = z.infer<typeof codeGraphSchema>;
540
+ /** Validate and parse unknown input into a CodeGraph; throws on failure */
541
+ export declare function parseCodeGraph(input: unknown): CodeGraphParsed;
542
+ /** Safe variant — returns result object instead of throwing */
543
+ export declare function safeParseCodeGraph(input: unknown): z.SafeParseReturnType<{
544
+ version: string;
545
+ root: string;
546
+ generatedAt: string;
547
+ nodes: {
548
+ directory: string;
549
+ id: string;
550
+ type: "file" | "directory" | "package" | "external-package";
551
+ path: string;
552
+ name: string;
553
+ extension: string;
554
+ sizeBytes: number;
555
+ depth: number;
556
+ inboundDependencies: number;
557
+ outboundDependencies: number;
558
+ language?: string | undefined;
559
+ category?: "ui" | "api" | "data" | "util" | "config" | "test" | "style" | "other" | undefined;
560
+ linesOfCode?: number | undefined;
561
+ metadata?: Record<string, unknown> | undefined;
562
+ }[];
563
+ links: {
564
+ target: string;
565
+ type: "import" | "require" | "dynamic-import" | "unknown";
566
+ source: string;
567
+ resolved: boolean;
568
+ weight?: number | undefined;
569
+ rawSpecifier?: string | undefined;
570
+ }[];
571
+ stats: {
572
+ totalFiles: number;
573
+ totalLinks: number;
574
+ totalDirectories: number;
575
+ languages: Record<string, number>;
576
+ avgDependencies: number;
577
+ isolatedFiles: number;
578
+ circularDependencies: string[][];
579
+ largestFiles: {
580
+ id: string;
581
+ sizeBytes: number;
582
+ }[];
583
+ deepestDirectories: {
584
+ path: string;
585
+ depth: number;
586
+ }[];
587
+ mostImportedFiles: {
588
+ id: string;
589
+ count: number;
590
+ }[];
591
+ mostDependentFiles: {
592
+ id: string;
593
+ count: number;
594
+ }[];
595
+ parseFailures: {
596
+ path: string;
597
+ reason: string;
598
+ }[];
599
+ unsupportedFiles: {
600
+ path: string;
601
+ language?: string | undefined;
602
+ }[];
603
+ categories?: Record<string, number> | undefined;
604
+ };
605
+ }, {
606
+ version: string;
607
+ root: string;
608
+ generatedAt: string;
609
+ nodes: {
610
+ directory: string;
611
+ id: string;
612
+ type: "file" | "directory" | "package" | "external-package";
613
+ path: string;
614
+ name: string;
615
+ extension: string;
616
+ sizeBytes: number;
617
+ depth: number;
618
+ inboundDependencies: number;
619
+ outboundDependencies: number;
620
+ language?: string | undefined;
621
+ category?: "ui" | "api" | "data" | "util" | "config" | "test" | "style" | "other" | undefined;
622
+ linesOfCode?: number | undefined;
623
+ metadata?: Record<string, unknown> | undefined;
624
+ }[];
625
+ links: {
626
+ target: string;
627
+ type: "import" | "require" | "dynamic-import" | "unknown";
628
+ source: string;
629
+ resolved: boolean;
630
+ weight?: number | undefined;
631
+ rawSpecifier?: string | undefined;
632
+ }[];
633
+ stats: {
634
+ totalFiles: number;
635
+ totalLinks: number;
636
+ totalDirectories: number;
637
+ languages: Record<string, number>;
638
+ avgDependencies: number;
639
+ isolatedFiles: number;
640
+ circularDependencies: string[][];
641
+ largestFiles: {
642
+ id: string;
643
+ sizeBytes: number;
644
+ }[];
645
+ deepestDirectories: {
646
+ path: string;
647
+ depth: number;
648
+ }[];
649
+ mostImportedFiles: {
650
+ id: string;
651
+ count: number;
652
+ }[];
653
+ mostDependentFiles: {
654
+ id: string;
655
+ count: number;
656
+ }[];
657
+ parseFailures: {
658
+ path: string;
659
+ reason: string;
660
+ }[];
661
+ unsupportedFiles: {
662
+ path: string;
663
+ language?: string | undefined;
664
+ }[];
665
+ categories?: Record<string, number> | undefined;
666
+ };
667
+ }>;
668
+ //# sourceMappingURL=graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/schemas/graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAezB,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;EAOzB,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAe3B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAO1B,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,2EAA2E;AAC3E,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAE9D;AAED,+DAA+D;AAC/D,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAEhD"}
@@ -0,0 +1,59 @@
1
+ import { z } from "zod";
2
+ // Keep Zod schemas in sync with types/graph.ts — runtime validation boundary.
3
+ export const codeNodeSchema = z.object({
4
+ id: z.string().min(1),
5
+ type: z.enum(["file", "directory", "package", "external-package"]),
6
+ path: z.string().min(1),
7
+ name: z.string().min(1),
8
+ extension: z.string(),
9
+ language: z.string().optional(),
10
+ category: z.enum(["ui", "api", "data", "util", "config", "test", "style", "other"]).optional(),
11
+ sizeBytes: z.number().int().nonnegative(),
12
+ linesOfCode: z.number().int().nonnegative().optional(),
13
+ directory: z.string(),
14
+ depth: z.number().int().nonnegative(),
15
+ inboundDependencies: z.number().int().nonnegative(),
16
+ outboundDependencies: z.number().int().nonnegative(),
17
+ metadata: z.record(z.unknown()).optional(),
18
+ });
19
+ export const codeLinkSchema = z.object({
20
+ source: z.string().min(1),
21
+ target: z.string().min(1),
22
+ type: z.enum(["import", "require", "dynamic-import", "unknown"]),
23
+ weight: z.number().positive().optional(),
24
+ resolved: z.boolean(),
25
+ rawSpecifier: z.string().optional(),
26
+ });
27
+ export const graphStatsSchema = z.object({
28
+ totalFiles: z.number().int().nonnegative(),
29
+ totalLinks: z.number().int().nonnegative(),
30
+ totalDirectories: z.number().int().nonnegative(),
31
+ languages: z.record(z.number().int().nonnegative()),
32
+ categories: z.record(z.number().int().nonnegative()).optional(),
33
+ avgDependencies: z.number().nonnegative(),
34
+ isolatedFiles: z.number().int().nonnegative(),
35
+ circularDependencies: z.array(z.array(z.string())),
36
+ largestFiles: z.array(z.object({ id: z.string(), sizeBytes: z.number() })),
37
+ deepestDirectories: z.array(z.object({ path: z.string(), depth: z.number() })),
38
+ mostImportedFiles: z.array(z.object({ id: z.string(), count: z.number() })),
39
+ mostDependentFiles: z.array(z.object({ id: z.string(), count: z.number() })),
40
+ parseFailures: z.array(z.object({ path: z.string(), reason: z.string() })),
41
+ unsupportedFiles: z.array(z.object({ path: z.string(), language: z.string().optional() })),
42
+ });
43
+ export const codeGraphSchema = z.object({
44
+ version: z.string().regex(/^\d+\.\d+\.\d+$/),
45
+ root: z.string().min(1),
46
+ generatedAt: z.string().datetime({ offset: true }),
47
+ nodes: z.array(codeNodeSchema),
48
+ links: z.array(codeLinkSchema),
49
+ stats: graphStatsSchema,
50
+ });
51
+ /** Validate and parse unknown input into a CodeGraph; throws on failure */
52
+ export function parseCodeGraph(input) {
53
+ return codeGraphSchema.parse(input);
54
+ }
55
+ /** Safe variant — returns result object instead of throwing */
56
+ export function safeParseCodeGraph(input) {
57
+ return codeGraphSchema.safeParse(input);
58
+ }
59
+ //# sourceMappingURL=graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/schemas/graph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Normalized architecture graph — versioned domain model.
3
+ * Designed to evolve without breaking consumers: `version` gates schema changes.
4
+ */
5
+ export type NodeType = "file" | "directory" | "package" | "external-package";
6
+ export type NodeCategory = "ui" | "api" | "data" | "util" | "config" | "test" | "style" | "other";
7
+ export interface CodeNode {
8
+ /** Stable identifier — absolute or workspace-relative normalized path */
9
+ id: string;
10
+ /** Discriminator for future node kinds; MVP uses "file" */
11
+ type: NodeType;
12
+ /** Workspace-relative POSIX path, e.g. "src/components/Button.tsx" */
13
+ path: string;
14
+ /** File name with extension */
15
+ name: string;
16
+ /** Lower-cased extension without dot, e.g. "tsx" */
17
+ extension: string;
18
+ /** Detected language, e.g. "typescript" */
19
+ language?: string;
20
+ /** Semantic category inferred from heuristics */
21
+ category?: NodeCategory;
22
+ /** File size in bytes */
23
+ sizeBytes: number;
24
+ /** Lines of code (optional — computed when available) */
25
+ linesOfCode?: number;
26
+ /** Parent directory (POSIX, workspace-relative) */
27
+ directory: string;
28
+ /** Depth from repository root (0 = root) */
29
+ depth: number;
30
+ /** Number of inbound edges (computed after graph build) */
31
+ inboundDependencies: number;
32
+ /** Number of outbound edges (computed after graph build) */
33
+ outboundDependencies: number;
34
+ /** Extension point for future enrichment */
35
+ metadata?: Record<string, unknown>;
36
+ }
37
+ export type LinkType = "import" | "require" | "dynamic-import" | "unknown";
38
+ export interface CodeLink {
39
+ /** Source node id */
40
+ source: string;
41
+ /** Target node id (local file) or external specifier when unresolved */
42
+ target: string;
43
+ /** How the dependency was introduced */
44
+ type: LinkType;
45
+ /** Optional weight (e.g. number of import statements collapsed) */
46
+ weight?: number;
47
+ /** Whether resolver could confidently resolve the target */
48
+ resolved: boolean;
49
+ /** Original raw specifier as written in source, e.g. "./utils" */
50
+ rawSpecifier?: string;
51
+ }
52
+ export interface GraphStats {
53
+ totalFiles: number;
54
+ totalLinks: number;
55
+ totalDirectories: number;
56
+ languages: Record<string, number>;
57
+ categories?: Record<string, number>;
58
+ avgDependencies: number;
59
+ isolatedFiles: number;
60
+ circularDependencies: string[][];
61
+ largestFiles: Array<{
62
+ id: string;
63
+ sizeBytes: number;
64
+ }>;
65
+ deepestDirectories: Array<{
66
+ path: string;
67
+ depth: number;
68
+ }>;
69
+ mostImportedFiles: Array<{
70
+ id: string;
71
+ count: number;
72
+ }>;
73
+ mostDependentFiles: Array<{
74
+ id: string;
75
+ count: number;
76
+ }>;
77
+ parseFailures: Array<{
78
+ path: string;
79
+ reason: string;
80
+ }>;
81
+ unsupportedFiles: Array<{
82
+ path: string;
83
+ language?: string;
84
+ }>;
85
+ }
86
+ export interface CodeGraph {
87
+ /** Schema version — bump on breaking change, e.g. "0.1.0" */
88
+ version: string;
89
+ /** Workspace root (absolute path at generation time; stripped on export if sensitive) */
90
+ root: string;
91
+ /** ISO-8601 timestamp */
92
+ generatedAt: string;
93
+ /** File nodes */
94
+ nodes: CodeNode[];
95
+ /** Dependency edges */
96
+ links: CodeLink[];
97
+ /** Aggregate metrics */
98
+ stats: GraphStats;
99
+ }
100
+ export interface CodecartoConfig {
101
+ ignore?: string[];
102
+ parser?: {
103
+ languages?: string[];
104
+ maxFileSizeBytes?: number;
105
+ };
106
+ visualization?: {
107
+ theme?: "dark" | "light";
108
+ };
109
+ }
110
+ //# sourceMappingURL=graph.d.ts.map
111
+
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/types/graph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Normalized architecture graph — versioned domain model.
3
+ * Designed to evolve without breaking consumers: `version` gates schema changes.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/types/graph.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
package/package.json ADDED
@@ -0,0 +1,31 @@
1
+ {
2
+ "name": "@yoinkingfish/shared",
3
+ "version": "0.1.1",
4
+ "description": "CodeCarto shared types, schemas, and constants",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ }
13
+ },
14
+ "files": [
15
+ "dist"
16
+ ],
17
+ "dependencies": {
18
+ "zod": "^3.23.8"
19
+ },
20
+ "devDependencies": {
21
+ "@types/node": "^22.7.4",
22
+ "rimraf": "^6.0.1",
23
+ "typescript": "^5.6.3"
24
+ },
25
+ "scripts": {
26
+ "build": "tsc -p tsconfig.json",
27
+ "dev": "tsc -p tsconfig.json --watch",
28
+ "typecheck": "tsc --noEmit -p tsconfig.json",
29
+ "clean": "rimraf dist"
30
+ }
31
+ }