@ir-kit/fn-schema-core 0.1.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 (51) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +114 -0
  3. package/dist/defaults.d.ts +4 -0
  4. package/dist/defaults.d.ts.map +1 -0
  5. package/dist/defaults.js +25 -0
  6. package/dist/defaults.js.map +1 -0
  7. package/dist/diagnostics.d.ts +15 -0
  8. package/dist/diagnostics.d.ts.map +1 -0
  9. package/dist/diagnostics.js +31 -0
  10. package/dist/diagnostics.js.map +1 -0
  11. package/dist/emit/bundle.d.ts +22 -0
  12. package/dist/emit/bundle.d.ts.map +1 -0
  13. package/dist/emit/bundle.js +62 -0
  14. package/dist/emit/bundle.js.map +1 -0
  15. package/dist/emit/files.d.ts +16 -0
  16. package/dist/emit/files.d.ts.map +1 -0
  17. package/dist/emit/files.js +30 -0
  18. package/dist/emit/files.js.map +1 -0
  19. package/dist/emit/index.d.ts +4 -0
  20. package/dist/emit/index.d.ts.map +1 -0
  21. package/dist/emit/index.js +4 -0
  22. package/dist/emit/index.js.map +1 -0
  23. package/dist/emit/openapi.d.ts +31 -0
  24. package/dist/emit/openapi.d.ts.map +1 -0
  25. package/dist/emit/openapi.js +46 -0
  26. package/dist/emit/openapi.js.map +1 -0
  27. package/dist/filter.d.ts +4 -0
  28. package/dist/filter.d.ts.map +1 -0
  29. package/dist/filter.js +67 -0
  30. package/dist/filter.js.map +1 -0
  31. package/dist/index.d.ts +9 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +8 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/naming.d.ts +3 -0
  36. package/dist/naming.d.ts.map +1 -0
  37. package/dist/naming.js +31 -0
  38. package/dist/naming.js.map +1 -0
  39. package/dist/project.d.ts +3 -0
  40. package/dist/project.d.ts.map +1 -0
  41. package/dist/project.js +335 -0
  42. package/dist/project.js.map +1 -0
  43. package/dist/targets.d.ts +12 -0
  44. package/dist/targets.d.ts.map +1 -0
  45. package/dist/targets.js +23 -0
  46. package/dist/targets.js.map +1 -0
  47. package/dist/types.d.ts +265 -0
  48. package/dist/types.d.ts.map +1 -0
  49. package/dist/types.js +2 -0
  50. package/dist/types.js.map +1 -0
  51. package/package.json +66 -0
@@ -0,0 +1,265 @@
1
+ import type { JSONSchema7 } from "json-schema";
2
+ export type JSONSchema = JSONSchema7;
3
+ export type FunctionKind = "function" | "arrow" | "method" | "constructor" | "expression";
4
+ export interface SourceLocation {
5
+ line: number;
6
+ column: number;
7
+ }
8
+ export interface ParameterInfo {
9
+ name: string;
10
+ index: number;
11
+ optional: boolean;
12
+ rest: boolean;
13
+ /** Raw type text as written in source (best-effort, language-specific). */
14
+ typeText?: string;
15
+ }
16
+ export interface JSDocInfo {
17
+ description?: string;
18
+ tags: Record<string, string | true>;
19
+ }
20
+ /**
21
+ * Discovered function — language-agnostic IR. Produced by an `Extractor`,
22
+ * consumed by both filters and schema generation.
23
+ */
24
+ export interface FunctionInfo {
25
+ /** Stable identifier within (file, language) scope; usually the source name. */
26
+ name: string;
27
+ file: string;
28
+ location: SourceLocation;
29
+ kind: FunctionKind;
30
+ language: string;
31
+ exported: boolean;
32
+ async: boolean;
33
+ generic: boolean;
34
+ parameters: ParameterInfo[];
35
+ jsDoc?: JSDocInfo;
36
+ /** Class name when `kind === "method"`. */
37
+ className?: string;
38
+ /** Decorator names when `kind === "method"`. */
39
+ decorators?: string[];
40
+ }
41
+ /** Per-extractor init payload. Extractors decide which fields they need. */
42
+ export interface ExtractorInitOptions {
43
+ tsConfigPath?: string;
44
+ cwd?: string;
45
+ }
46
+ export interface SignaturePair {
47
+ input: JSONSchema | JSONSchema[];
48
+ output: JSONSchema;
49
+ definitions?: Record<string, JSONSchema>;
50
+ coverage?: CoverageReport;
51
+ }
52
+ /**
53
+ * Where a coverage note fired — which overload, which side of the signature,
54
+ * and (for input parameters) which slot. Lets downstream tools render
55
+ * per-occurrence diagnostics instead of collapsing repeats by type name.
56
+ */
57
+ export interface CoverageOccurrence {
58
+ side: "input" | "output";
59
+ /** Index into the resolved overload list (0 = first / oldest). */
60
+ overloadIndex: number;
61
+ /** Parameter slot index (input only). */
62
+ paramIndex?: number;
63
+ /** Parameter binding name (input only). */
64
+ paramName?: string;
65
+ }
66
+ export interface CoverageEntry {
67
+ name: string;
68
+ count: number;
69
+ occurrences: CoverageOccurrence[];
70
+ }
71
+ export interface LossyCoverageEntry extends CoverageEntry {
72
+ reason: string;
73
+ }
74
+ export interface CoverageReport {
75
+ mapped: CoverageEntry[];
76
+ lossy: LossyCoverageEntry[];
77
+ notRepresentable: CoverageEntry[];
78
+ }
79
+ export interface Extractor {
80
+ /** File extensions claimed by this extractor (e.g. [".ts", ".tsx"]). */
81
+ readonly extensions: readonly string[];
82
+ readonly language: string;
83
+ init(opts: ExtractorInitOptions): Promise<ExtractorInstance>;
84
+ }
85
+ export interface ExtractorInstance {
86
+ discover(files: readonly string[], filter: ResolvedFilter): Promise<FunctionInfo[]>;
87
+ toSchemas(fn: FunctionInfo, opts: ResolvedSignatureOptions & ResolvedSchemaOptions): Promise<SignaturePair>;
88
+ refresh(files: readonly string[]): void;
89
+ dispose(): void;
90
+ }
91
+ export type NamePattern = string | RegExp;
92
+ export interface IncludeFilter {
93
+ exported?: boolean;
94
+ name?: NamePattern | NamePattern[];
95
+ jsDocTag?: string | string[];
96
+ kind?: FunctionKind[];
97
+ decorator?: NamePattern;
98
+ }
99
+ export type ExcludeFilter = IncludeFilter;
100
+ export interface ResolvedFilter {
101
+ exported: boolean;
102
+ name: RegExp[] | null;
103
+ jsDocTag: string[] | null;
104
+ kind: FunctionKind[] | null;
105
+ decorator: RegExp | null;
106
+ exclude: {
107
+ name: RegExp[] | null;
108
+ jsDocTag: string[] | null;
109
+ kind: FunctionKind[] | null;
110
+ decorator: RegExp | null;
111
+ };
112
+ custom: ((fn: FunctionInfo) => boolean) | null;
113
+ }
114
+ export type NamingStrategy = "function-name" | "file-function" | "jsdoc-tag" | ((fn: FunctionInfo) => string);
115
+ export type ParametersStrategy = "array" | "first-only" | "object";
116
+ export type GenericsStrategy = "skip" | "erase" | "error";
117
+ export type OverloadStrategy = "all" | "first" | "last" | "merge";
118
+ export interface SignatureOptions {
119
+ parameters?: ParametersStrategy;
120
+ unwrapPromise?: boolean;
121
+ generics?: GenericsStrategy;
122
+ overloads?: OverloadStrategy;
123
+ skipParameter?: (p: ParameterInfo) => boolean;
124
+ }
125
+ export interface ResolvedSignatureOptions {
126
+ parameters: ParametersStrategy;
127
+ unwrapPromise: boolean;
128
+ generics: GenericsStrategy;
129
+ overloads: OverloadStrategy;
130
+ skipParameter: ((p: ParameterInfo) => boolean) | null;
131
+ }
132
+ export type SchemaDialect = "draft-07" | "draft-2020-12" | "openapi-3.1";
133
+ export type RefStrategy = "inline" | "definitions" | "external";
134
+ export interface SchemaOptions {
135
+ dialect?: SchemaDialect;
136
+ refStrategy?: RefStrategy;
137
+ definitionsPath?: string;
138
+ topRef?: boolean;
139
+ additionalProperties?: boolean;
140
+ encodeRefs?: boolean;
141
+ expose?: "all" | "export" | "none";
142
+ /**
143
+ * Map TS type names to canonical JSON Schema. Merged on top of built-ins
144
+ * (Date, URL, RegExp, File, Blob, Buffer, Uint8Array, ArrayBuffer, bigint).
145
+ * User entries override built-ins.
146
+ */
147
+ typeMappers?: Record<string, JSONSchema>;
148
+ /**
149
+ * Attach the originating TS type name to mapped + named-type schemas via a
150
+ * vendor-extension keyword. Pass `false` (default) for pure JSON Schema, or
151
+ * a key name (typically `"x-fn-schema-ts"`) to opt in. Required for
152
+ * canvas-style nominal-type matching across functions.
153
+ */
154
+ identity?: false | string;
155
+ /**
156
+ * Attach a transport hint (`"multipart"` / `"base64"` / `"json"`) to
157
+ * binary-shaped schemas (File/Blob/Buffer/Uint8Array/ArrayBuffer) under a
158
+ * vendor-extension keyword. Pass `false` (default) or a key name (typically
159
+ * `"x-fn-schema-transport"`). Lets frontends pick the wire format.
160
+ */
161
+ transport?: false | string;
162
+ /**
163
+ * Attach the source-file location of every named type as a vendor-extension
164
+ * keyword. `false` (default) or a key name (typically `"x-fn-schema-source"`).
165
+ */
166
+ sourceLocations?: false | string;
167
+ }
168
+ export interface ResolvedSchemaOptions {
169
+ dialect: SchemaDialect;
170
+ refStrategy: RefStrategy;
171
+ definitionsPath: string;
172
+ topRef: boolean;
173
+ additionalProperties: boolean;
174
+ encodeRefs: boolean;
175
+ expose: "all" | "export" | "none";
176
+ typeMappers: Record<string, JSONSchema>;
177
+ identity: false | string;
178
+ transport: false | string;
179
+ sourceLocations: false | string;
180
+ }
181
+ export interface SchemaContext {
182
+ function: FunctionInfo;
183
+ position: "input" | "output" | "parameter";
184
+ parameterIndex?: number;
185
+ }
186
+ export interface ExtractHooks {
187
+ onFunction?: (fn: FunctionInfo) => FunctionInfo | null | void;
188
+ onSchema?: (schema: JSONSchema, ctx: SchemaContext) => JSONSchema;
189
+ }
190
+ export interface TargetRef {
191
+ /** "src/api.ts#createUser" or "src/api.ts#User.create" */
192
+ value: string;
193
+ }
194
+ export interface InMemorySource {
195
+ code: string;
196
+ path?: string;
197
+ }
198
+ export interface ExtractOptions {
199
+ files?: string | string[];
200
+ source?: InMemorySource;
201
+ targets?: (string | TargetRef)[];
202
+ cwd?: string;
203
+ tsConfigPath?: string;
204
+ include?: IncludeFilter;
205
+ exclude?: ExcludeFilter;
206
+ filter?: (fn: FunctionInfo) => boolean;
207
+ signature?: SignatureOptions;
208
+ schema?: SchemaOptions;
209
+ naming?: NamingStrategy;
210
+ hooks?: ExtractHooks;
211
+ onDiagnostic?: (d: Diagnostic) => void;
212
+ failFast?: boolean;
213
+ }
214
+ export interface SignatureEntry {
215
+ id: string;
216
+ name: string;
217
+ file: string;
218
+ location: SourceLocation;
219
+ kind: FunctionKind;
220
+ language: string;
221
+ jsDoc?: JSDocInfo;
222
+ input: JSONSchema | JSONSchema[];
223
+ output: JSONSchema;
224
+ async: boolean;
225
+ generic: boolean;
226
+ coverage?: CoverageReport;
227
+ }
228
+ export interface ExtractStats {
229
+ filesScanned: number;
230
+ functionsFound: number;
231
+ durationMs: number;
232
+ }
233
+ export interface ExtractResult {
234
+ signatures: SignatureEntry[];
235
+ definitions: Record<string, JSONSchema>;
236
+ diagnostics: Diagnostic[];
237
+ stats: ExtractStats;
238
+ }
239
+ export type DiagnosticSeverity = "error" | "warning" | "info";
240
+ export type DiagnosticCode = "GENERIC_SKIPPED" | "OVERLOAD_PICKED" | "UNRESOLVED_TYPE" | "EMPTY_RESULT" | "EXTRACTOR_FAILURE" | "FILE_READ_ERROR" | "INVALID_TARGET" | "DUPLICATE_ID" | "NO_EXTRACTOR" | "TYPE_MAPPED" | "LOSSY_MAPPING" | "NOT_REPRESENTABLE";
241
+ export interface Diagnostic {
242
+ severity: DiagnosticSeverity;
243
+ code: DiagnosticCode;
244
+ message: string;
245
+ file?: string;
246
+ location?: SourceLocation;
247
+ function?: string;
248
+ }
249
+ export interface ProjectOptions {
250
+ extractors: Extractor[];
251
+ cwd?: string;
252
+ tsConfigPath?: string;
253
+ }
254
+ export interface DiscoverResult {
255
+ signatures: FunctionInfo[];
256
+ diagnostics: Diagnostic[];
257
+ stats: ExtractStats;
258
+ }
259
+ export interface Project {
260
+ extract(options?: Partial<ExtractOptions>): Promise<ExtractResult>;
261
+ discover(options?: Partial<ExtractOptions>): Promise<DiscoverResult>;
262
+ refresh(paths?: string[]): void;
263
+ dispose(): void;
264
+ }
265
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,66 @@
1
+ {
2
+ "name": "@ir-kit/fn-schema-core",
3
+ "version": "0.1.0",
4
+ "description": "Language-agnostic core for fn-schema: extract function input/output JSON Schemas from source code. Defines the Extractor contract and ships emitters (files, bundle, OpenAPI) that operate on the shared FunctionInfo IR.",
5
+ "keywords": [
6
+ "json-schema",
7
+ "function-signature",
8
+ "codegen",
9
+ "ir",
10
+ "extractor"
11
+ ],
12
+ "homepage": "https://github.com/ir-kit/ir-kit/tree/main/packages/fn-schema/core",
13
+ "bugs": {
14
+ "url": "https://github.com/ir-kit/ir-kit/issues"
15
+ },
16
+ "license": "MIT",
17
+ "author": {
18
+ "name": "Ahmed Rowaihi",
19
+ "email": "ahmedrowaihi@gmail.com"
20
+ },
21
+ "repository": {
22
+ "type": "git",
23
+ "url": "git+https://github.com/ir-kit/ir-kit.git",
24
+ "directory": "packages/fn-schema/core"
25
+ },
26
+ "type": "module",
27
+ "sideEffects": false,
28
+ "main": "./dist/index.js",
29
+ "types": "./dist/index.d.ts",
30
+ "exports": {
31
+ ".": {
32
+ "types": "./dist/index.d.ts",
33
+ "import": "./dist/index.js"
34
+ },
35
+ "./emit": {
36
+ "types": "./dist/emit/index.d.ts",
37
+ "import": "./dist/emit/index.js"
38
+ },
39
+ "./package.json": "./package.json"
40
+ },
41
+ "files": [
42
+ "dist",
43
+ "LICENSE.md"
44
+ ],
45
+ "publishConfig": {
46
+ "access": "public",
47
+ "provenance": true
48
+ },
49
+ "dependencies": {
50
+ "@types/json-schema": "^7.0.15"
51
+ },
52
+ "devDependencies": {
53
+ "@types/node": "^22",
54
+ "vitest": "^4.0.0",
55
+ "@ir-kit/tsconfig": "0.0.0"
56
+ },
57
+ "engines": {
58
+ "node": ">=20.19.0"
59
+ },
60
+ "scripts": {
61
+ "build": "tsc -p tsconfig.build.json",
62
+ "dev": "tsc -p tsconfig.build.json --watch",
63
+ "typecheck": "tsc --noEmit",
64
+ "test": "vitest run --passWithNoTests"
65
+ }
66
+ }