@contractspec/lib.source-extractors 0.11.0 → 0.13.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.
Files changed (86) hide show
  1. package/dist/browser/codegen/index.js +225 -0
  2. package/dist/browser/extractors/index.js +835 -0
  3. package/dist/browser/index.js +1215 -0
  4. package/dist/browser/types.js +0 -0
  5. package/dist/codegen/index.d.ts +9 -11
  6. package/dist/codegen/index.d.ts.map +1 -1
  7. package/dist/codegen/index.js +223 -14
  8. package/dist/codegen/operation-gen.d.ts +9 -8
  9. package/dist/codegen/operation-gen.d.ts.map +1 -1
  10. package/dist/codegen/registry-gen.d.ts +7 -6
  11. package/dist/codegen/registry-gen.d.ts.map +1 -1
  12. package/dist/codegen/schema-gen.d.ts +9 -8
  13. package/dist/codegen/schema-gen.d.ts.map +1 -1
  14. package/dist/codegen/types.d.ts +29 -32
  15. package/dist/codegen/types.d.ts.map +1 -1
  16. package/dist/detect.d.ts +19 -17
  17. package/dist/detect.d.ts.map +1 -1
  18. package/dist/extract.d.ts +10 -8
  19. package/dist/extract.d.ts.map +1 -1
  20. package/dist/extractors/base.d.ts +76 -75
  21. package/dist/extractors/base.d.ts.map +1 -1
  22. package/dist/extractors/elysia/extractor.d.ts +15 -12
  23. package/dist/extractors/elysia/extractor.d.ts.map +1 -1
  24. package/dist/extractors/express/extractor.d.ts +16 -12
  25. package/dist/extractors/express/extractor.d.ts.map +1 -1
  26. package/dist/extractors/fastify/extractor.d.ts +16 -12
  27. package/dist/extractors/fastify/extractor.d.ts.map +1 -1
  28. package/dist/extractors/hono/extractor.d.ts +15 -12
  29. package/dist/extractors/hono/extractor.d.ts.map +1 -1
  30. package/dist/extractors/index.d.ts +16 -17
  31. package/dist/extractors/index.d.ts.map +1 -1
  32. package/dist/extractors/index.js +834 -40
  33. package/dist/extractors/nestjs/extractor.d.ts +28 -23
  34. package/dist/extractors/nestjs/extractor.d.ts.map +1 -1
  35. package/dist/extractors/next-api/extractor.d.ts +16 -13
  36. package/dist/extractors/next-api/extractor.d.ts.map +1 -1
  37. package/dist/extractors/trpc/extractor.d.ts +16 -12
  38. package/dist/extractors/trpc/extractor.d.ts.map +1 -1
  39. package/dist/extractors/zod/extractor.d.ts +15 -13
  40. package/dist/extractors/zod/extractor.d.ts.map +1 -1
  41. package/dist/index.d.ts +30 -7
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +1215 -6
  44. package/dist/node/codegen/index.js +225 -0
  45. package/dist/node/extractors/index.js +835 -0
  46. package/dist/node/index.js +1215 -0
  47. package/dist/node/types.js +0 -0
  48. package/dist/registry.d.ts +69 -68
  49. package/dist/registry.d.ts.map +1 -1
  50. package/dist/types.d.ts +182 -185
  51. package/dist/types.d.ts.map +1 -1
  52. package/dist/types.js +1 -0
  53. package/package.json +60 -21
  54. package/dist/_virtual/_rolldown/runtime.js +0 -18
  55. package/dist/codegen/index.js.map +0 -1
  56. package/dist/codegen/operation-gen.js +0 -91
  57. package/dist/codegen/operation-gen.js.map +0 -1
  58. package/dist/codegen/registry-gen.js +0 -47
  59. package/dist/codegen/registry-gen.js.map +0 -1
  60. package/dist/codegen/schema-gen.js +0 -93
  61. package/dist/codegen/schema-gen.js.map +0 -1
  62. package/dist/detect.js +0 -177
  63. package/dist/detect.js.map +0 -1
  64. package/dist/extract.js +0 -125
  65. package/dist/extract.js.map +0 -1
  66. package/dist/extractors/base.js +0 -152
  67. package/dist/extractors/base.js.map +0 -1
  68. package/dist/extractors/elysia/extractor.js +0 -58
  69. package/dist/extractors/elysia/extractor.js.map +0 -1
  70. package/dist/extractors/express/extractor.js +0 -61
  71. package/dist/extractors/express/extractor.js.map +0 -1
  72. package/dist/extractors/fastify/extractor.js +0 -61
  73. package/dist/extractors/fastify/extractor.js.map +0 -1
  74. package/dist/extractors/hono/extractor.js +0 -57
  75. package/dist/extractors/hono/extractor.js.map +0 -1
  76. package/dist/extractors/index.js.map +0 -1
  77. package/dist/extractors/nestjs/extractor.js +0 -118
  78. package/dist/extractors/nestjs/extractor.js.map +0 -1
  79. package/dist/extractors/next-api/extractor.js +0 -80
  80. package/dist/extractors/next-api/extractor.js.map +0 -1
  81. package/dist/extractors/trpc/extractor.js +0 -71
  82. package/dist/extractors/trpc/extractor.js.map +0 -1
  83. package/dist/extractors/zod/extractor.js +0 -69
  84. package/dist/extractors/zod/extractor.js.map +0 -1
  85. package/dist/registry.js +0 -87
  86. package/dist/registry.js.map +0 -1
@@ -1,28 +1,33 @@
1
- import { BaseExtractor, ExtractionContext } from "../base.js";
2
-
3
- //#region src/extractors/nestjs/extractor.d.ts
1
+ /**
2
+ * NestJS extractor.
3
+ *
4
+ * Extracts contract candidates from NestJS applications by parsing:
5
+ * - @Controller() decorated classes
6
+ * - @Get(), @Post(), etc. decorated methods
7
+ * - Class-validator DTOs
8
+ * - HttpException patterns
9
+ */
10
+ import { BaseExtractor, type ExtractionContext } from '../base';
4
11
  /**
5
12
  * NestJS framework extractor.
6
13
  */
7
- declare class NestJsExtractor extends BaseExtractor {
8
- id: string;
9
- name: string;
10
- frameworks: string[];
11
- priority: number;
12
- protected doExtract(ctx: ExtractionContext): Promise<void>;
13
- /**
14
- * Extract controllers and their routes from a file.
15
- */
16
- private extractControllers;
17
- /**
18
- * Extract DTO classes from a file.
19
- */
20
- private extractDtos;
21
- /**
22
- * Normalize a path (remove double slashes, ensure leading slash).
23
- */
24
- private normalizePath;
14
+ export declare class NestJsExtractor extends BaseExtractor {
15
+ id: string;
16
+ name: string;
17
+ frameworks: string[];
18
+ priority: number;
19
+ protected doExtract(ctx: ExtractionContext): Promise<void>;
20
+ /**
21
+ * Extract controllers and their routes from a file.
22
+ */
23
+ private extractControllers;
24
+ /**
25
+ * Extract DTO classes from a file.
26
+ */
27
+ private extractDtos;
28
+ /**
29
+ * Normalize a path (remove double slashes, ensure leading slash).
30
+ */
31
+ private normalizePath;
25
32
  }
26
- //#endregion
27
- export { NestJsExtractor };
28
33
  //# sourceMappingURL=extractor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"extractor.d.ts","names":[],"sources":["../../../src/extractors/nestjs/extractor.ts"],"mappings":";;;;;;cAmCa,eAAA,SAAwB,aAAA;EACnC,EAAA;EACA,IAAA;EACA,UAAA;EACA,QAAA;EAAA,UAEgB,SAAA,CAAU,GAAA,EAAK,iBAAA,GAAoB,OAAA;EAAA;;;EAAA,QAmCrC,kBAAA;EA+GO;;;EAAA,QApCP,WAAA;;;;UAoCN,aAAA;AAAA"}
1
+ {"version":3,"file":"extractor.d.ts","sourceRoot":"","sources":["../../../src/extractors/nestjs/extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAAE,KAAK,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAsBhE;;GAEG;AACH,qBAAa,eAAgB,SAAQ,aAAa;IAChD,EAAE,SAAY;IACd,IAAI,SAAsB;IAC1B,UAAU,WAAc;IACxB,QAAQ,SAAM;cAEE,SAAS,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgChE;;OAEG;YACW,kBAAkB;IAwEhC;;OAEG;YACW,WAAW;IAiCzB;;OAEG;IACH,OAAO,CAAC,aAAa;CAGtB"}
@@ -1,15 +1,18 @@
1
- import { BaseExtractor, ExtractionContext } from "../base.js";
2
-
3
- //#region src/extractors/next-api/extractor.d.ts
4
- declare class NextApiExtractor extends BaseExtractor {
5
- id: string;
6
- name: string;
7
- frameworks: string[];
8
- priority: number;
9
- protected doExtract(ctx: ExtractionContext): Promise<void>;
10
- private extractAppRoutes;
11
- private extractPagesRoutes;
1
+ /**
2
+ * Next.js API Routes extractor.
3
+ *
4
+ * Extracts contract candidates from Next.js applications by parsing:
5
+ * - App Router API routes (app/api/.../route.ts)
6
+ * - Pages Router API routes (pages/api/.../*.ts)
7
+ */
8
+ import { BaseExtractor, type ExtractionContext } from '../base';
9
+ export declare class NextApiExtractor extends BaseExtractor {
10
+ id: string;
11
+ name: string;
12
+ frameworks: string[];
13
+ priority: number;
14
+ protected doExtract(ctx: ExtractionContext): Promise<void>;
15
+ private extractAppRoutes;
16
+ private extractPagesRoutes;
12
17
  }
13
- //#endregion
14
- export { NextApiExtractor };
15
18
  //# sourceMappingURL=extractor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"extractor.d.ts","names":[],"sources":["../../../src/extractors/next-api/extractor.ts"],"mappings":";;;cAkBa,gBAAA,SAAyB,aAAA;EACpC,EAAA;EACA,IAAA;EACA,UAAA;EACA,QAAA;EAAA,UAEgB,SAAA,CAAU,GAAA,EAAK,iBAAA,GAAoB,OAAA;EAAA,QA2BrC,gBAAA;EAAA,QAoCA,kBAAA;AAAA"}
1
+ {"version":3,"file":"extractor.d.ts","sourceRoot":"","sources":["../../../src/extractors/next-api/extractor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,aAAa,EAAE,KAAK,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAUhE,qBAAa,gBAAiB,SAAQ,aAAa;IACjD,EAAE,SAAc;IAChB,IAAI,SAA2B;IAC/B,UAAU,WAAgB;IAC1B,QAAQ,SAAM;cAEE,SAAS,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;YA2BlD,gBAAgB;YAoChB,kBAAkB;CA+BjC"}
@@ -1,14 +1,18 @@
1
- import { BaseExtractor, ExtractionContext } from "../base.js";
2
-
3
- //#region src/extractors/trpc/extractor.d.ts
4
- declare class TrpcExtractor extends BaseExtractor {
5
- id: string;
6
- name: string;
7
- frameworks: string[];
8
- priority: number;
9
- protected doExtract(ctx: ExtractionContext): Promise<void>;
10
- private extractProcedures;
1
+ /**
2
+ * tRPC extractor.
3
+ *
4
+ * Extracts contract candidates from tRPC applications by parsing:
5
+ * - router definitions
6
+ * - procedure definitions (query, mutation)
7
+ * - Zod input/output schemas
8
+ */
9
+ import { BaseExtractor, type ExtractionContext } from '../base';
10
+ export declare class TrpcExtractor extends BaseExtractor {
11
+ id: string;
12
+ name: string;
13
+ frameworks: string[];
14
+ priority: number;
15
+ protected doExtract(ctx: ExtractionContext): Promise<void>;
16
+ private extractProcedures;
11
17
  }
12
- //#endregion
13
- export { TrpcExtractor };
14
18
  //# sourceMappingURL=extractor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"extractor.d.ts","names":[],"sources":["../../../src/extractors/trpc/extractor.ts"],"mappings":";;;cAoBa,aAAA,SAAsB,aAAA;EACjC,EAAA;EACA,IAAA;EACA,UAAA;EACA,QAAA;EAAA,UAEgB,SAAA,CAAU,GAAA,EAAK,iBAAA,GAAoB,OAAA;EAAA,QAsBrC,iBAAA;AAAA"}
1
+ {"version":3,"file":"extractor.d.ts","sourceRoot":"","sources":["../../../src/extractors/trpc/extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAE,KAAK,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAWhE,qBAAa,aAAc,SAAQ,aAAa;IAC9C,EAAE,SAAU;IACZ,IAAI,SAAoB;IACxB,UAAU,WAAY;IACtB,QAAQ,SAAM;cAEE,SAAS,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;YAsBlD,iBAAiB;CA6ChC"}
@@ -1,15 +1,17 @@
1
- import { BaseExtractor, ExtractionContext } from "../base.js";
2
-
3
- //#region src/extractors/zod/extractor.d.ts
4
- declare class ZodSchemaExtractor extends BaseExtractor {
5
- id: string;
6
- name: string;
7
- frameworks: string[];
8
- priority: number;
9
- detect(): Promise<boolean>;
10
- protected doExtract(ctx: ExtractionContext): Promise<void>;
11
- private extractSchemas;
1
+ /**
2
+ * Zod schema extractor.
3
+ *
4
+ * Extracts standalone Zod schema definitions that aren't tied to a specific framework.
5
+ * Useful for shared validation schemas.
6
+ */
7
+ import { BaseExtractor, type ExtractionContext } from '../base';
8
+ export declare class ZodSchemaExtractor extends BaseExtractor {
9
+ id: string;
10
+ name: string;
11
+ frameworks: string[];
12
+ priority: number;
13
+ detect(): Promise<boolean>;
14
+ protected doExtract(ctx: ExtractionContext): Promise<void>;
15
+ private extractSchemas;
12
16
  }
13
- //#endregion
14
- export { ZodSchemaExtractor };
15
17
  //# sourceMappingURL=extractor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"extractor.d.ts","names":[],"sources":["../../../src/extractors/zod/extractor.ts"],"mappings":";;;cAgBa,kBAAA,SAA2B,aAAA;EACtC,EAAA;EACA,IAAA;EACA,UAAA;EACA,QAAA;EAEM,MAAA,CAAA,GAAU,OAAA;EAAA,UAKA,SAAA,CAAU,GAAA,EAAK,iBAAA,GAAoB,OAAA;EAAA,QAsBrC,cAAA;AAAA"}
1
+ {"version":3,"file":"extractor.d.ts","sourceRoot":"","sources":["../../../src/extractors/zod/extractor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,KAAK,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAShE,qBAAa,kBAAmB,SAAQ,aAAa;IACnD,EAAE,SAAS;IACX,IAAI,SAA0B;IAC9B,UAAU,WAAW;IACrB,QAAQ,SAAK;IAEP,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;cAKhB,SAAS,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;YAsBlD,cAAc;CAwC7B"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,30 @@
1
- import { Ambiguity, ConfidenceLevel, ConfidenceMeta, ConfidenceReason, EndpointCandidate, ErrorCandidate, ErrorRef, EventCandidate, ExtractError, ExtractOptions, ExtractResult, FrameworkInfo, HttpMethod, ImportIR, OpKind, ProjectInfo, SchemaCandidate, SchemaField, SchemaRef, SourceLocation } from "./types.js";
2
- import { index_d_exports } from "./codegen/index.js";
3
- import { ExtractorRegistry, SourceExtractor, extractorRegistry, registerBuiltInExtractors } from "./registry.js";
4
- import { index_d_exports as index_d_exports$1 } from "./extractors/index.js";
5
- import { detectFramework, detectFrameworksFromCode, detectFrameworksFromPackageJson, detectFrameworksFromPaths, getSupportedFrameworks, isFrameworkSupported, mergeFrameworkDetections } from "./detect.js";
6
- import { createEmptyIR, extractFromProject, mergeIRs } from "./extract.js";
7
- export { Ambiguity, ConfidenceLevel, ConfidenceMeta, ConfidenceReason, EndpointCandidate, ErrorCandidate, ErrorRef, EventCandidate, ExtractError, ExtractOptions, ExtractResult, ExtractorRegistry, FrameworkInfo, HttpMethod, ImportIR, OpKind, ProjectInfo, SchemaCandidate, SchemaField, SchemaRef, SourceExtractor, SourceLocation, index_d_exports as codegen, createEmptyIR, detectFramework, detectFrameworksFromCode, detectFrameworksFromPackageJson, detectFrameworksFromPaths, extractFromProject, extractorRegistry, index_d_exports$1 as extractors, getSupportedFrameworks, isFrameworkSupported, mergeFrameworkDetections, mergeIRs, registerBuiltInExtractors };
1
+ /**
2
+ * @contractspec/lib.source-extractors
3
+ *
4
+ * Extract contract candidates from TypeScript source code across multiple frameworks.
5
+ * Produces an Intermediate Representation (IR) that can be converted to ContractSpec definitions.
6
+ *
7
+ * Supported frameworks:
8
+ * - NestJS
9
+ * - Express
10
+ * - Fastify
11
+ * - Hono
12
+ * - Elysia
13
+ * - tRPC
14
+ * - Next.js API Routes
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * import { extractFromProject, detectFramework } from '@contractspec/lib.source-extractors';
19
+ *
20
+ * const framework = await detectFramework('./my-project');
21
+ * const ir = await extractFromProject('./my-project', { framework });
22
+ * ```
23
+ */
24
+ export * from './types';
25
+ export * from './registry';
26
+ export * from './detect';
27
+ export * from './extract';
28
+ export * as extractors from './extractors/index';
29
+ export * as codegen from './codegen/index';
30
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,cAAc,SAAS,CAAC;AAGxB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AAGzB,cAAc,WAAW,CAAC;AAG1B,OAAO,KAAK,UAAU,MAAM,oBAAoB,CAAC;AAGjD,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC"}