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.
Files changed (114) hide show
  1. package/LICENSE.md +99 -0
  2. package/README.md +79 -0
  3. package/bin/carrick.mjs +168 -0
  4. package/dist/channel.d.ts +16 -0
  5. package/dist/channel.js +37 -0
  6. package/dist/channel.js.map +1 -0
  7. package/dist/cli.d.ts +29 -0
  8. package/dist/cli.js +60 -0
  9. package/dist/cli.js.map +1 -0
  10. package/dist/contract.d.ts +154 -0
  11. package/dist/contract.js +141 -0
  12. package/dist/contract.js.map +1 -0
  13. package/dist/diagnostics.d.ts +54 -0
  14. package/dist/diagnostics.js +199 -0
  15. package/dist/diagnostics.js.map +1 -0
  16. package/dist/hook/post-edit.d.ts +13 -0
  17. package/dist/hook/post-edit.js +76 -0
  18. package/dist/hook/post-edit.js.map +1 -0
  19. package/dist/hook/session-start.d.ts +2 -0
  20. package/dist/hook/session-start.js +44 -0
  21. package/dist/hook/session-start.js.map +1 -0
  22. package/dist/init/identity.d.ts +20 -0
  23. package/dist/init/identity.js +60 -0
  24. package/dist/init/identity.js.map +1 -0
  25. package/dist/init/repos.d.ts +19 -0
  26. package/dist/init/repos.js +46 -0
  27. package/dist/init/repos.js.map +1 -0
  28. package/dist/init/run.d.ts +11 -0
  29. package/dist/init/run.js +228 -0
  30. package/dist/init/run.js.map +1 -0
  31. package/dist/init/settings.d.ts +50 -0
  32. package/dist/init/settings.js +138 -0
  33. package/dist/init/settings.js.map +1 -0
  34. package/dist/log.d.ts +2 -0
  35. package/dist/log.js +35 -0
  36. package/dist/log.js.map +1 -0
  37. package/dist/native.d.ts +48 -0
  38. package/dist/native.js +127 -0
  39. package/dist/native.js.map +1 -0
  40. package/dist/render.d.ts +65 -0
  41. package/dist/render.js +334 -0
  42. package/dist/render.js.map +1 -0
  43. package/dist/root.d.ts +30 -0
  44. package/dist/root.js +82 -0
  45. package/dist/root.js.map +1 -0
  46. package/dist/server.d.ts +2 -0
  47. package/dist/server.js +255 -0
  48. package/dist/server.js.map +1 -0
  49. package/dist/templates.d.ts +18 -0
  50. package/dist/templates.js +66 -0
  51. package/dist/templates.js.map +1 -0
  52. package/package.json +72 -0
  53. package/plugin/.claude-plugin/plugin.json +6 -0
  54. package/plugin/.lsp.json +14 -0
  55. package/plugin/hooks/hooks.json +27 -0
  56. package/sidecar/dist/src/bundler.d.ts +141 -0
  57. package/sidecar/dist/src/bundler.js +680 -0
  58. package/sidecar/dist/src/capture/anchors.d.ts +61 -0
  59. package/sidecar/dist/src/capture/anchors.js +1132 -0
  60. package/sidecar/dist/src/capture/api.d.ts +378 -0
  61. package/sidecar/dist/src/capture/api.js +10 -0
  62. package/sidecar/dist/src/capture/augmentations.d.ts +20 -0
  63. package/sidecar/dist/src/capture/augmentations.js +60 -0
  64. package/sidecar/dist/src/capture/check-classify.d.ts +58 -0
  65. package/sidecar/dist/src/capture/check-classify.js +189 -0
  66. package/sidecar/dist/src/capture/check-deep.d.ts +32 -0
  67. package/sidecar/dist/src/capture/check-deep.js +91 -0
  68. package/sidecar/dist/src/capture/check-poison.d.ts +40 -0
  69. package/sidecar/dist/src/capture/check-poison.js +155 -0
  70. package/sidecar/dist/src/capture/check-probe.d.ts +70 -0
  71. package/sidecar/dist/src/capture/check-probe.js +147 -0
  72. package/sidecar/dist/src/capture/check-scrub.d.ts +31 -0
  73. package/sidecar/dist/src/capture/check-scrub.js +71 -0
  74. package/sidecar/dist/src/capture/check-workspace.d.ts +52 -0
  75. package/sidecar/dist/src/capture/check-workspace.js +218 -0
  76. package/sidecar/dist/src/capture/check.d.ts +39 -0
  77. package/sidecar/dist/src/capture/check.js +450 -0
  78. package/sidecar/dist/src/capture/deep-walk.d.ts +62 -0
  79. package/sidecar/dist/src/capture/deep-walk.js +243 -0
  80. package/sidecar/dist/src/capture/index.d.ts +36 -0
  81. package/sidecar/dist/src/capture/index.js +477 -0
  82. package/sidecar/dist/src/capture/lockfile.d.ts +48 -0
  83. package/sidecar/dist/src/capture/lockfile.js +490 -0
  84. package/sidecar/dist/src/capture/machinery.d.ts +59 -0
  85. package/sidecar/dist/src/capture/machinery.js +160 -0
  86. package/sidecar/dist/src/capture/node-builder.d.ts +37 -0
  87. package/sidecar/dist/src/capture/node-builder.js +123 -0
  88. package/sidecar/dist/src/capture/paths-rewrite.d.ts +34 -0
  89. package/sidecar/dist/src/capture/paths-rewrite.js +100 -0
  90. package/sidecar/dist/src/capture/self-check.d.ts +38 -0
  91. package/sidecar/dist/src/capture/self-check.js +317 -0
  92. package/sidecar/dist/src/capture/specifiers.d.ts +39 -0
  93. package/sidecar/dist/src/capture/specifiers.js +56 -0
  94. package/sidecar/dist/src/definition-resolver.d.ts +57 -0
  95. package/sidecar/dist/src/definition-resolver.js +153 -0
  96. package/sidecar/dist/src/index.d.ts +14 -0
  97. package/sidecar/dist/src/index.js +564 -0
  98. package/sidecar/dist/src/monorepo-builder.d.ts +129 -0
  99. package/sidecar/dist/src/monorepo-builder.js +584 -0
  100. package/sidecar/dist/src/project-loader.d.ts +130 -0
  101. package/sidecar/dist/src/project-loader.js +399 -0
  102. package/sidecar/dist/src/type-inferrer.d.ts +940 -0
  103. package/sidecar/dist/src/type-inferrer.js +3540 -0
  104. package/sidecar/dist/src/type-structural-expander.d.ts +61 -0
  105. package/sidecar/dist/src/type-structural-expander.js +283 -0
  106. package/sidecar/dist/src/type-text-canonicalizer.d.ts +40 -0
  107. package/sidecar/dist/src/type-text-canonicalizer.js +297 -0
  108. package/sidecar/dist/src/types.d.ts +669 -0
  109. package/sidecar/dist/src/types.js +5 -0
  110. package/sidecar/dist/src/validators.d.ts +2214 -0
  111. package/sidecar/dist/src/validators.js +336 -0
  112. package/sidecar/package.json +6 -0
  113. package/templates/carrick.json +7 -0
  114. 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
+ }