carrick 0.3.53
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.md +99 -0
- package/README.md +79 -0
- package/bin/carrick.mjs +168 -0
- package/dist/channel.d.ts +16 -0
- package/dist/channel.js +37 -0
- package/dist/channel.js.map +1 -0
- package/dist/cli.d.ts +29 -0
- package/dist/cli.js +60 -0
- package/dist/cli.js.map +1 -0
- package/dist/contract.d.ts +154 -0
- package/dist/contract.js +141 -0
- package/dist/contract.js.map +1 -0
- package/dist/diagnostics.d.ts +54 -0
- package/dist/diagnostics.js +199 -0
- package/dist/diagnostics.js.map +1 -0
- package/dist/hook/post-edit.d.ts +13 -0
- package/dist/hook/post-edit.js +76 -0
- package/dist/hook/post-edit.js.map +1 -0
- package/dist/hook/session-start.d.ts +2 -0
- package/dist/hook/session-start.js +44 -0
- package/dist/hook/session-start.js.map +1 -0
- package/dist/init/identity.d.ts +20 -0
- package/dist/init/identity.js +60 -0
- package/dist/init/identity.js.map +1 -0
- package/dist/init/repos.d.ts +19 -0
- package/dist/init/repos.js +46 -0
- package/dist/init/repos.js.map +1 -0
- package/dist/init/run.d.ts +11 -0
- package/dist/init/run.js +228 -0
- package/dist/init/run.js.map +1 -0
- package/dist/init/settings.d.ts +50 -0
- package/dist/init/settings.js +138 -0
- package/dist/init/settings.js.map +1 -0
- package/dist/log.d.ts +2 -0
- package/dist/log.js +35 -0
- package/dist/log.js.map +1 -0
- package/dist/native.d.ts +48 -0
- package/dist/native.js +127 -0
- package/dist/native.js.map +1 -0
- package/dist/render.d.ts +65 -0
- package/dist/render.js +334 -0
- package/dist/render.js.map +1 -0
- package/dist/root.d.ts +30 -0
- package/dist/root.js +82 -0
- package/dist/root.js.map +1 -0
- package/dist/server.d.ts +2 -0
- package/dist/server.js +255 -0
- package/dist/server.js.map +1 -0
- package/dist/templates.d.ts +18 -0
- package/dist/templates.js +66 -0
- package/dist/templates.js.map +1 -0
- package/package.json +72 -0
- package/plugin/.claude-plugin/plugin.json +6 -0
- package/plugin/.lsp.json +14 -0
- package/plugin/hooks/hooks.json +27 -0
- package/sidecar/dist/src/bundler.d.ts +141 -0
- package/sidecar/dist/src/bundler.js +680 -0
- package/sidecar/dist/src/capture/anchors.d.ts +61 -0
- package/sidecar/dist/src/capture/anchors.js +1132 -0
- package/sidecar/dist/src/capture/api.d.ts +378 -0
- package/sidecar/dist/src/capture/api.js +10 -0
- package/sidecar/dist/src/capture/augmentations.d.ts +20 -0
- package/sidecar/dist/src/capture/augmentations.js +60 -0
- package/sidecar/dist/src/capture/check-classify.d.ts +58 -0
- package/sidecar/dist/src/capture/check-classify.js +189 -0
- package/sidecar/dist/src/capture/check-deep.d.ts +32 -0
- package/sidecar/dist/src/capture/check-deep.js +91 -0
- package/sidecar/dist/src/capture/check-poison.d.ts +40 -0
- package/sidecar/dist/src/capture/check-poison.js +155 -0
- package/sidecar/dist/src/capture/check-probe.d.ts +70 -0
- package/sidecar/dist/src/capture/check-probe.js +147 -0
- package/sidecar/dist/src/capture/check-scrub.d.ts +31 -0
- package/sidecar/dist/src/capture/check-scrub.js +71 -0
- package/sidecar/dist/src/capture/check-workspace.d.ts +52 -0
- package/sidecar/dist/src/capture/check-workspace.js +218 -0
- package/sidecar/dist/src/capture/check.d.ts +39 -0
- package/sidecar/dist/src/capture/check.js +450 -0
- package/sidecar/dist/src/capture/deep-walk.d.ts +62 -0
- package/sidecar/dist/src/capture/deep-walk.js +243 -0
- package/sidecar/dist/src/capture/index.d.ts +36 -0
- package/sidecar/dist/src/capture/index.js +477 -0
- package/sidecar/dist/src/capture/lockfile.d.ts +48 -0
- package/sidecar/dist/src/capture/lockfile.js +490 -0
- package/sidecar/dist/src/capture/machinery.d.ts +59 -0
- package/sidecar/dist/src/capture/machinery.js +160 -0
- package/sidecar/dist/src/capture/node-builder.d.ts +37 -0
- package/sidecar/dist/src/capture/node-builder.js +123 -0
- package/sidecar/dist/src/capture/paths-rewrite.d.ts +34 -0
- package/sidecar/dist/src/capture/paths-rewrite.js +100 -0
- package/sidecar/dist/src/capture/self-check.d.ts +38 -0
- package/sidecar/dist/src/capture/self-check.js +317 -0
- package/sidecar/dist/src/capture/specifiers.d.ts +39 -0
- package/sidecar/dist/src/capture/specifiers.js +56 -0
- package/sidecar/dist/src/definition-resolver.d.ts +57 -0
- package/sidecar/dist/src/definition-resolver.js +153 -0
- package/sidecar/dist/src/index.d.ts +14 -0
- package/sidecar/dist/src/index.js +564 -0
- package/sidecar/dist/src/monorepo-builder.d.ts +129 -0
- package/sidecar/dist/src/monorepo-builder.js +584 -0
- package/sidecar/dist/src/project-loader.d.ts +130 -0
- package/sidecar/dist/src/project-loader.js +399 -0
- package/sidecar/dist/src/type-inferrer.d.ts +940 -0
- package/sidecar/dist/src/type-inferrer.js +3540 -0
- package/sidecar/dist/src/type-structural-expander.d.ts +61 -0
- package/sidecar/dist/src/type-structural-expander.js +283 -0
- package/sidecar/dist/src/type-text-canonicalizer.d.ts +40 -0
- package/sidecar/dist/src/type-text-canonicalizer.js +297 -0
- package/sidecar/dist/src/types.d.ts +669 -0
- package/sidecar/dist/src/types.js +5 -0
- package/sidecar/dist/src/validators.d.ts +2214 -0
- package/sidecar/dist/src/validators.js +336 -0
- package/sidecar/package.json +6 -0
- package/templates/carrick.json +7 -0
- package/templates/carrick.yml +45 -0
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Surface Emitter - Emits .d.ts surface files with rewritten module specifiers
|
|
3
|
+
*
|
|
4
|
+
* This module replaces the previous dts-bundle-generator approach with a
|
|
5
|
+
* ts-morph-based AST transformation and emission pipeline.
|
|
6
|
+
*
|
|
7
|
+
* Key features:
|
|
8
|
+
* - Does NOT bundle dependencies (unlike dts-bundle-generator)
|
|
9
|
+
* - Rewrites module specifiers to repo-specific aliases (@carrick/{repoName}/{spec})
|
|
10
|
+
* - Handles ImportDeclaration, ImportTypeNode, and ExportDeclaration
|
|
11
|
+
* - Supports scoped packages and subpaths
|
|
12
|
+
* - Includes a safety pass for any compiler-introduced raw specifiers
|
|
13
|
+
*/
|
|
14
|
+
import { Project } from 'ts-morph';
|
|
15
|
+
import type { PayloadDefinition, SurfaceEmitResult, SymbolRequest, BundleResult } from './types.js';
|
|
16
|
+
/**
|
|
17
|
+
* Options for SurfaceEmitter construction
|
|
18
|
+
*/
|
|
19
|
+
export interface SurfaceEmitterOptions {
|
|
20
|
+
/** The ts-morph Project instance */
|
|
21
|
+
project: Project;
|
|
22
|
+
/** The repository root directory (absolute path) */
|
|
23
|
+
repoRoot: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Options for TypeBundler construction (legacy)
|
|
27
|
+
*/
|
|
28
|
+
export interface TypeBundlerOptions {
|
|
29
|
+
/** The ts-morph Project instance */
|
|
30
|
+
project: Project;
|
|
31
|
+
/** The repository root directory (absolute path) */
|
|
32
|
+
repoRoot: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* SurfaceEmitter - Generates .d.ts surface files with rewritten imports
|
|
36
|
+
*
|
|
37
|
+
* Usage:
|
|
38
|
+
* const emitter = new SurfaceEmitter({ project, repoRoot });
|
|
39
|
+
* const result = emitter.emit(repoName, payloads, outputPath);
|
|
40
|
+
*/
|
|
41
|
+
export declare class SurfaceEmitter {
|
|
42
|
+
private readonly project;
|
|
43
|
+
private readonly repoRoot;
|
|
44
|
+
constructor(options: SurfaceEmitterOptions);
|
|
45
|
+
/**
|
|
46
|
+
* Emit a surface .d.ts file containing payload type declarations
|
|
47
|
+
*
|
|
48
|
+
* @param repoName - Repository name for specifier rewriting
|
|
49
|
+
* @param payloads - Payload definitions to include
|
|
50
|
+
* @param outputPath - Path to write the surface file
|
|
51
|
+
* @returns SurfaceEmitResult
|
|
52
|
+
*/
|
|
53
|
+
emit(repoName: string, payloads: PayloadDefinition[], outputPath: string): SurfaceEmitResult;
|
|
54
|
+
/**
|
|
55
|
+
* Extract potential import references from a type string.
|
|
56
|
+
* These are module specifiers that might need rewriting.
|
|
57
|
+
*/
|
|
58
|
+
private extractImportReferences;
|
|
59
|
+
/**
|
|
60
|
+
* Rewrite all module specifiers in a source file to use repo-scoped aliases.
|
|
61
|
+
*
|
|
62
|
+
* Targets:
|
|
63
|
+
* 1. ImportDeclaration.moduleSpecifier
|
|
64
|
+
* 2. ImportTypeNode argument (import("..."))
|
|
65
|
+
* 3. ExportDeclaration.moduleSpecifier
|
|
66
|
+
*
|
|
67
|
+
* @returns Array of rewritten specifiers
|
|
68
|
+
*/
|
|
69
|
+
private rewriteModuleSpecifiers;
|
|
70
|
+
/**
|
|
71
|
+
* Determine if a module specifier should be rewritten.
|
|
72
|
+
* Only non-relative specifiers should be rewritten.
|
|
73
|
+
*/
|
|
74
|
+
private shouldRewriteSpecifier;
|
|
75
|
+
/**
|
|
76
|
+
* Rewrite a module specifier to the repo-scoped format.
|
|
77
|
+
*
|
|
78
|
+
* Format: @carrick/{repoName}/{originalSpecifier}
|
|
79
|
+
*
|
|
80
|
+
* Preserves:
|
|
81
|
+
* - Scoped packages: "@scope/pkg" → "@carrick/repo-a/@scope/pkg"
|
|
82
|
+
* - Subpaths: "zod/lib/helpers" → "@carrick/repo-a/zod/lib/helpers"
|
|
83
|
+
* - Combined: "@scope/pkg/subpath" → "@carrick/repo-a/@scope/pkg/subpath"
|
|
84
|
+
*/
|
|
85
|
+
private rewriteSpecifier;
|
|
86
|
+
/**
|
|
87
|
+
* Safety pass: Scan emitted content for any raw specifiers that might have
|
|
88
|
+
* been introduced by the TypeScript compiler and rewrite them.
|
|
89
|
+
*
|
|
90
|
+
* This catches edge cases where the compiler emits types with their original
|
|
91
|
+
* module specifiers that weren't caught by AST traversal.
|
|
92
|
+
*/
|
|
93
|
+
private safetyRewritePass;
|
|
94
|
+
/**
|
|
95
|
+
* Log a message to stderr
|
|
96
|
+
*/
|
|
97
|
+
private log;
|
|
98
|
+
/**
|
|
99
|
+
* Log an error to stderr
|
|
100
|
+
*/
|
|
101
|
+
private logError;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* TypeBundler - Legacy bundler using simpler approach
|
|
105
|
+
*
|
|
106
|
+
* This is a simplified replacement that doesn't use dts-bundle-generator.
|
|
107
|
+
* It extracts type definitions directly using ts-morph.
|
|
108
|
+
*
|
|
109
|
+
* @deprecated Use SurfaceEmitter instead for the new architecture
|
|
110
|
+
*/
|
|
111
|
+
export declare class TypeBundler {
|
|
112
|
+
private readonly project;
|
|
113
|
+
private readonly repoRoot;
|
|
114
|
+
constructor(options: TypeBundlerOptions);
|
|
115
|
+
/**
|
|
116
|
+
* Bundle the requested symbols into type definitions
|
|
117
|
+
*
|
|
118
|
+
* @param symbols - Array of symbol requests to bundle
|
|
119
|
+
* @returns BundleResult with the bundled content or errors
|
|
120
|
+
*/
|
|
121
|
+
bundle(symbols: SymbolRequest[]): BundleResult;
|
|
122
|
+
private dedupeSymbols;
|
|
123
|
+
private validateSymbols;
|
|
124
|
+
private validateSymbol;
|
|
125
|
+
/**
|
|
126
|
+
* Structural body (`{ ... }`) for an interface/object type, with every nested
|
|
127
|
+
* named member inlined recursively. Returns null when the expansion is not a
|
|
128
|
+
* usable object body (e.g. the expander fell back to a bare name), so the
|
|
129
|
+
* caller can keep the verbatim declaration instead of emitting an invalid
|
|
130
|
+
* interface. The expander already guards recursion (depth + per-branch cycle
|
|
131
|
+
* set) and keeps builtins/`node_modules` types by name.
|
|
132
|
+
*/
|
|
133
|
+
private expandObjectBody;
|
|
134
|
+
private extractTypeDefinition;
|
|
135
|
+
private elementNeedsArrayParens;
|
|
136
|
+
private extractTypeDefinitionBase;
|
|
137
|
+
private isPathSource;
|
|
138
|
+
private isPlaceholderSource;
|
|
139
|
+
private log;
|
|
140
|
+
private logError;
|
|
141
|
+
}
|