@formspec/build 0.1.0-alpha.4 → 0.1.0-alpha.41
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 +21 -0
- package/README.md +238 -93
- package/dist/analyzer/class-analyzer.d.ts +135 -0
- package/dist/analyzer/class-analyzer.d.ts.map +1 -0
- package/dist/analyzer/jsdoc-constraints.d.ts +53 -0
- package/dist/analyzer/jsdoc-constraints.d.ts.map +1 -0
- package/dist/analyzer/program.d.ts +94 -0
- package/dist/analyzer/program.d.ts.map +1 -0
- package/dist/analyzer/tsdoc-parser.d.ts +126 -0
- package/dist/analyzer/tsdoc-parser.d.ts.map +1 -0
- package/dist/browser.cjs +2113 -0
- package/dist/browser.cjs.map +1 -0
- package/dist/browser.d.ts +74 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +2070 -0
- package/dist/browser.js.map +1 -0
- package/dist/build-alpha.d.ts +1501 -0
- package/dist/build-beta.d.ts +1501 -0
- package/dist/build-internal.d.ts +1501 -0
- package/dist/build.d.ts +1194 -43
- package/dist/canonicalize/chain-dsl-canonicalizer.d.ts +22 -0
- package/dist/canonicalize/chain-dsl-canonicalizer.d.ts.map +1 -0
- package/dist/canonicalize/index.d.ts +8 -0
- package/dist/canonicalize/index.d.ts.map +1 -0
- package/dist/canonicalize/tsdoc-canonicalizer.d.ts +38 -0
- package/dist/canonicalize/tsdoc-canonicalizer.d.ts.map +1 -0
- package/dist/cli.cjs +6715 -0
- package/dist/cli.cjs.map +1 -0
- package/dist/cli.js +6687 -103
- package/dist/cli.js.map +1 -1
- package/dist/extensions/index.d.ts +8 -0
- package/dist/extensions/index.d.ts.map +1 -0
- package/dist/extensions/registry.d.ts +83 -0
- package/dist/extensions/registry.d.ts.map +1 -0
- package/dist/generators/class-schema.d.ts +347 -0
- package/dist/generators/class-schema.d.ts.map +1 -0
- package/dist/generators/discovered-schema.d.ts +152 -0
- package/dist/generators/discovered-schema.d.ts.map +1 -0
- package/dist/generators/method-schema.d.ts +72 -0
- package/dist/generators/method-schema.d.ts.map +1 -0
- package/dist/generators/mixed-authoring.d.ts +52 -0
- package/dist/generators/mixed-authoring.d.ts.map +1 -0
- package/dist/index.cjs +6412 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +50 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6387 -107
- package/dist/index.js.map +1 -1
- package/dist/internals.cjs +5573 -0
- package/dist/internals.cjs.map +1 -0
- package/dist/internals.d.ts +32 -0
- package/dist/internals.d.ts.map +1 -0
- package/dist/internals.js +5554 -0
- package/dist/internals.js.map +1 -0
- package/dist/json-schema/generator.d.ts +32 -6
- package/dist/json-schema/generator.d.ts.map +1 -1
- package/dist/json-schema/ir-generator.d.ts +149 -0
- package/dist/json-schema/ir-generator.d.ts.map +1 -0
- package/dist/json-schema/schema.d.ts +23 -0
- package/dist/json-schema/schema.d.ts.map +1 -0
- package/dist/json-schema/types.d.ts +76 -2
- package/dist/json-schema/types.d.ts.map +1 -1
- package/dist/metadata/collision-guards.d.ts +3 -0
- package/dist/metadata/collision-guards.d.ts.map +1 -0
- package/dist/metadata/index.d.ts +7 -0
- package/dist/metadata/index.d.ts.map +1 -0
- package/dist/metadata/policy.d.ts +12 -0
- package/dist/metadata/policy.d.ts.map +1 -0
- package/dist/metadata/resolve.d.ts +21 -0
- package/dist/metadata/resolve.d.ts.map +1 -0
- package/dist/static-build.d.ts +61 -0
- package/dist/static-build.d.ts.map +1 -0
- package/dist/ui-schema/generator.d.ts +18 -2
- package/dist/ui-schema/generator.d.ts.map +1 -1
- package/dist/ui-schema/ir-generator.d.ts +54 -0
- package/dist/ui-schema/ir-generator.d.ts.map +1 -0
- package/dist/ui-schema/schema.d.ts +429 -0
- package/dist/ui-schema/schema.d.ts.map +1 -0
- package/dist/ui-schema/types.d.ts +179 -35
- package/dist/ui-schema/types.d.ts.map +1 -1
- package/dist/validate/constraint-validator.d.ts +85 -0
- package/dist/validate/constraint-validator.d.ts.map +1 -0
- package/dist/validate/index.d.ts +9 -0
- package/dist/validate/index.d.ts.map +1 -0
- package/package.json +31 -11
- package/dist/__tests__/cli.test.d.ts +0 -2
- package/dist/__tests__/cli.test.d.ts.map +0 -1
- package/dist/__tests__/cli.test.js +0 -178
- package/dist/__tests__/cli.test.js.map +0 -1
- package/dist/__tests__/edge-cases.test.d.ts +0 -7
- package/dist/__tests__/edge-cases.test.d.ts.map +0 -1
- package/dist/__tests__/edge-cases.test.js +0 -217
- package/dist/__tests__/edge-cases.test.js.map +0 -1
- package/dist/__tests__/generator.test.d.ts +0 -2
- package/dist/__tests__/generator.test.d.ts.map +0 -1
- package/dist/__tests__/generator.test.js +0 -225
- package/dist/__tests__/generator.test.js.map +0 -1
- package/dist/__tests__/integration.test.d.ts +0 -8
- package/dist/__tests__/integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration.test.js +0 -163
- package/dist/__tests__/integration.test.js.map +0 -1
- package/dist/__tests__/write-schemas.test.d.ts +0 -2
- package/dist/__tests__/write-schemas.test.d.ts.map +0 -1
- package/dist/__tests__/write-schemas.test.js +0 -196
- package/dist/__tests__/write-schemas.test.js.map +0 -1
- package/dist/json-schema/generator.js +0 -161
- package/dist/json-schema/generator.js.map +0 -1
- package/dist/json-schema/types.js +0 -7
- package/dist/json-schema/types.js.map +0 -1
- package/dist/ui-schema/generator.js +0 -150
- package/dist/ui-schema/generator.js.map +0 -1
- package/dist/ui-schema/types.js +0 -8
- package/dist/ui-schema/types.js.map +0 -1
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript program setup for static analysis.
|
|
3
|
+
*
|
|
4
|
+
* Creates a TypeScript program with type checker from a source file,
|
|
5
|
+
* using the project's tsconfig.json for compiler options.
|
|
6
|
+
*/
|
|
7
|
+
import * as ts from "typescript";
|
|
8
|
+
import type { ConstraintSemanticDiagnostic } from "@formspec/analysis/internal";
|
|
9
|
+
import { type DiscriminatorResolutionOptions, type IRClassAnalysis } from "./class-analyzer.js";
|
|
10
|
+
import type { ExtensionRegistry } from "../extensions/index.js";
|
|
11
|
+
import type { MetadataPolicyInput } from "@formspec/core";
|
|
12
|
+
/**
|
|
13
|
+
* Result of creating a TypeScript program for analysis.
|
|
14
|
+
*/
|
|
15
|
+
export interface ProgramContext {
|
|
16
|
+
/** The TypeScript program */
|
|
17
|
+
program: ts.Program;
|
|
18
|
+
/** Type checker for resolving types */
|
|
19
|
+
checker: ts.TypeChecker;
|
|
20
|
+
/** The source file being analyzed */
|
|
21
|
+
sourceFile: ts.SourceFile;
|
|
22
|
+
}
|
|
23
|
+
export type AnalyzeNamedTypeToIRDetailedResult = {
|
|
24
|
+
readonly ok: true;
|
|
25
|
+
readonly analysis: IRClassAnalysis;
|
|
26
|
+
} | {
|
|
27
|
+
readonly ok: false;
|
|
28
|
+
readonly diagnostics: readonly ConstraintSemanticDiagnostic[];
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Resolves a source file and checker from an existing TypeScript program.
|
|
32
|
+
*
|
|
33
|
+
* @param program - Existing TypeScript program supplied by the host
|
|
34
|
+
* @param filePath - Absolute or relative path to the TypeScript source file
|
|
35
|
+
* @returns Program context with checker and source file
|
|
36
|
+
*/
|
|
37
|
+
export declare function createProgramContextFromProgram(program: ts.Program, filePath: string): ProgramContext;
|
|
38
|
+
/**
|
|
39
|
+
* Creates a TypeScript program for analyzing a source file.
|
|
40
|
+
*
|
|
41
|
+
* Looks for tsconfig.json in the file's directory or parent directories.
|
|
42
|
+
* Falls back to default compiler options if no config is found.
|
|
43
|
+
*
|
|
44
|
+
* @param filePath - Absolute path to the TypeScript source file
|
|
45
|
+
* @returns Program context with checker and source file
|
|
46
|
+
*/
|
|
47
|
+
export declare function createProgramContext(filePath: string): ProgramContext;
|
|
48
|
+
/**
|
|
49
|
+
* Finds a class declaration by name in a source file.
|
|
50
|
+
*
|
|
51
|
+
* @param sourceFile - The source file to search
|
|
52
|
+
* @param className - Name of the class to find
|
|
53
|
+
* @returns The class declaration node, or null if not found
|
|
54
|
+
*/
|
|
55
|
+
export declare function findClassByName(sourceFile: ts.SourceFile, className: string): ts.ClassDeclaration | null;
|
|
56
|
+
/**
|
|
57
|
+
* Finds an interface declaration by name in a source file.
|
|
58
|
+
*
|
|
59
|
+
* @param sourceFile - The source file to search
|
|
60
|
+
* @param interfaceName - Name of the interface to find
|
|
61
|
+
* @returns The interface declaration node, or null if not found
|
|
62
|
+
*/
|
|
63
|
+
export declare function findInterfaceByName(sourceFile: ts.SourceFile, interfaceName: string): ts.InterfaceDeclaration | null;
|
|
64
|
+
/**
|
|
65
|
+
* Finds a type alias declaration by name in a source file.
|
|
66
|
+
*
|
|
67
|
+
* @param sourceFile - The source file to search
|
|
68
|
+
* @param aliasName - Name of the type alias to find
|
|
69
|
+
* @returns The type alias declaration node, or null if not found
|
|
70
|
+
*/
|
|
71
|
+
export declare function findTypeAliasByName(sourceFile: ts.SourceFile, aliasName: string): ts.TypeAliasDeclaration | null;
|
|
72
|
+
/**
|
|
73
|
+
* Analyzes a named type (class, interface, or type alias) from a TypeScript
|
|
74
|
+
* source file and returns an `IRClassAnalysis`.
|
|
75
|
+
*
|
|
76
|
+
* Tries each declaration kind in order: class → interface → type alias.
|
|
77
|
+
* Throws if the name is not found or if the type alias analysis fails.
|
|
78
|
+
*
|
|
79
|
+
* @param filePath - Absolute or relative path to the TypeScript source file (resolved internally)
|
|
80
|
+
* @param typeName - Name of the class, interface, or type alias to analyze
|
|
81
|
+
* @param extensionRegistry - Optional extension registry for custom type handling
|
|
82
|
+
* @returns IR analysis result
|
|
83
|
+
*/
|
|
84
|
+
export declare function analyzeNamedTypeToIR(filePath: string, typeName: string, extensionRegistry?: ExtensionRegistry, metadataPolicy?: MetadataPolicyInput, discriminatorOptions?: DiscriminatorResolutionOptions): IRClassAnalysis;
|
|
85
|
+
/**
|
|
86
|
+
* Analyzes a named type from an existing program context and returns either an
|
|
87
|
+
* `IRClassAnalysis` or structured diagnostics instead of throwing.
|
|
88
|
+
*/
|
|
89
|
+
export declare function analyzeNamedTypeToIRFromProgramContextDetailed(ctx: ProgramContext, filePath: string, typeName: string, extensionRegistry?: ExtensionRegistry, metadataPolicy?: MetadataPolicyInput, discriminatorOptions?: DiscriminatorResolutionOptions): AnalyzeNamedTypeToIRDetailedResult;
|
|
90
|
+
/**
|
|
91
|
+
* Analyzes a named type from an existing program context and returns an `IRClassAnalysis`.
|
|
92
|
+
*/
|
|
93
|
+
export declare function analyzeNamedTypeToIRFromProgramContext(ctx: ProgramContext, filePath: string, typeName: string, extensionRegistry?: ExtensionRegistry, metadataPolicy?: MetadataPolicyInput, discriminatorOptions?: DiscriminatorResolutionOptions): IRClassAnalysis;
|
|
94
|
+
//# sourceMappingURL=program.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/analyzer/program.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAGjC,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAChF,OAAO,EASL,KAAK,8BAA8B,EACnC,KAAK,eAAe,EAErB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,6BAA6B;IAC7B,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC;IACpB,uCAAuC;IACvC,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC;IACxB,qCAAqC;IACrC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;CAC3B;AAED,MAAM,MAAM,kCAAkC,GAC1C;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAA;CAAE,GACzD;IACE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,WAAW,EAAE,SAAS,4BAA4B,EAAE,CAAC;CAC/D,CAAC;AAEN;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,EAAE,CAAC,OAAO,EACnB,QAAQ,EAAE,MAAM,GACf,cAAc,CAahB;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CA6DrE;AA6BD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,SAAS,EAAE,MAAM,GAChB,EAAE,CAAC,gBAAgB,GAAG,IAAI,CAE5B;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,aAAa,EAAE,MAAM,GACpB,EAAE,CAAC,oBAAoB,GAAG,IAAI,CAEhC;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,SAAS,EAAE,MAAM,GAChB,EAAE,CAAC,oBAAoB,GAAG,IAAI,CAEhC;AAoID;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,cAAc,CAAC,EAAE,mBAAmB,EACpC,oBAAoB,CAAC,EAAE,8BAA8B,GACpD,eAAe,CAUjB;AAED;;;GAGG;AACH,wBAAgB,8CAA8C,CAC5D,GAAG,EAAE,cAAc,EACnB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,cAAc,CAAC,EAAE,mBAAmB,EACpC,oBAAoB,CAAC,EAAE,8BAA8B,GACpD,kCAAkC,CA0IpC;AAED;;GAEG;AACH,wBAAgB,sCAAsC,CACpD,GAAG,EAAE,cAAc,EACnB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,cAAc,CAAC,EAAE,mBAAmB,EACpC,oBAAoB,CAAC,EAAE,8BAA8B,GACpD,eAAe,CAcjB"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TSDoc-based structured tag parser.
|
|
3
|
+
*
|
|
4
|
+
* Bridges the TypeScript compiler AST with the official `@microsoft/tsdoc`
|
|
5
|
+
* parser to extract constraint and annotation tags from JSDoc comments
|
|
6
|
+
* on class/interface/type-alias properties.
|
|
7
|
+
*
|
|
8
|
+
* The parser recognises two categories of tags:
|
|
9
|
+
*
|
|
10
|
+
* 1. **Constraint tags** (all alphanumeric, TSDoc-compliant):
|
|
11
|
+
* `@minimum`, `@maximum`, `@exclusiveMinimum`, `@exclusiveMaximum`,
|
|
12
|
+
* `@multipleOf`, `@minLength`, `@maxLength`, `@minItems`, `@maxItems`,
|
|
13
|
+
* `@uniqueItems`, `@pattern`, `@enumOptions`, `@const`
|
|
14
|
+
* — Parsed via TSDocParser as custom block tags.
|
|
15
|
+
* Both camelCase and PascalCase forms are accepted (e.g., `@Minimum`).
|
|
16
|
+
*
|
|
17
|
+
* 2. **Metadata and annotation tags** (`@apiName`, `@displayName`,
|
|
18
|
+
* `@format`, `@placeholder`):
|
|
19
|
+
* These are parsed as structured custom block tags so summary extraction
|
|
20
|
+
* stops at recognized FormSpec tags. `@displayName`, `@format`, and
|
|
21
|
+
* `@placeholder` also map onto annotation IR nodes, while `@apiName`
|
|
22
|
+
* remains metadata-only and is resolved separately by the class analyzer.
|
|
23
|
+
*
|
|
24
|
+
* The `@deprecated` tag is a standard TSDoc block tag, parsed structurally.
|
|
25
|
+
*
|
|
26
|
+
* Description and remarks extraction (spec 002 §2.3):
|
|
27
|
+
* - Summary text (bare text before the first block tag) → `description` annotation
|
|
28
|
+
* - `@remarks` block → `remarks` annotation (separate channel)
|
|
29
|
+
* - `@description` is NOT supported (not a standard TSDoc tag)
|
|
30
|
+
*
|
|
31
|
+
* **Fallback strategy**: TSDoc treats `{` / `}` as inline tag delimiters and
|
|
32
|
+
* `@` as a tag prefix, so content containing these characters (e.g. JSON
|
|
33
|
+
* objects in `@EnumOptions`, regex patterns with `@` in `@Pattern`) gets
|
|
34
|
+
* mangled by the TSDoc parser. The shared comment syntax parser is the
|
|
35
|
+
* primary source for these payloads; the TS compiler's `ts.getJSDocTags()`
|
|
36
|
+
* API remains as a fallback when a raw payload cannot be recovered from the
|
|
37
|
+
* shared parse.
|
|
38
|
+
*/
|
|
39
|
+
import * as ts from "typescript";
|
|
40
|
+
import { type ConstraintSemanticDiagnostic } from "@formspec/analysis/internal";
|
|
41
|
+
import { type ConstraintNode, type AnnotationNode, type PathTarget, type TypeNode } from "@formspec/core/internals";
|
|
42
|
+
import type { ExtensionRegistry } from "../extensions/index.js";
|
|
43
|
+
/**
|
|
44
|
+
* Result of parsing a single JSDoc comment attached to a TS AST node.
|
|
45
|
+
*/
|
|
46
|
+
export interface TSDocParseResult {
|
|
47
|
+
/** Constraint IR nodes extracted from custom block tags. */
|
|
48
|
+
readonly constraints: readonly ConstraintNode[];
|
|
49
|
+
/** Annotation IR nodes extracted from canonical TSDoc block tags. */
|
|
50
|
+
readonly annotations: readonly AnnotationNode[];
|
|
51
|
+
/** Compiler-backed extraction diagnostics for invalid tag applications. */
|
|
52
|
+
readonly diagnostics: readonly ConstraintSemanticDiagnostic[];
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Optional extension-aware parsing inputs for TSDoc extraction.
|
|
56
|
+
*/
|
|
57
|
+
export interface ParseTSDocOptions {
|
|
58
|
+
/**
|
|
59
|
+
* Extension registry used to resolve custom tags and custom-type-specific
|
|
60
|
+
* broadening of built-in constraint tags.
|
|
61
|
+
*/
|
|
62
|
+
readonly extensionRegistry?: ExtensionRegistry;
|
|
63
|
+
/**
|
|
64
|
+
* Effective field/type node for the declaration being parsed. Required when
|
|
65
|
+
* built-in tags may broaden onto a custom type.
|
|
66
|
+
*/
|
|
67
|
+
readonly fieldType?: TypeNode;
|
|
68
|
+
/** Type checker used for compiler-backed placement and type validation. */
|
|
69
|
+
readonly checker?: ts.TypeChecker;
|
|
70
|
+
/** The declaration type that the parsed tag applies to. */
|
|
71
|
+
readonly subjectType?: ts.Type;
|
|
72
|
+
/** Optional enclosing host type for future cross-field signature checks. */
|
|
73
|
+
readonly hostType?: ts.Type;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Display-name metadata extracted from a node's JSDoc tags.
|
|
77
|
+
*
|
|
78
|
+
* The root display name is returned separately from member-target labels so
|
|
79
|
+
* callers can apply the former to the enclosing type/form and the latter to
|
|
80
|
+
* enum members.
|
|
81
|
+
*/
|
|
82
|
+
export interface DisplayNameMetadata {
|
|
83
|
+
readonly displayName?: string;
|
|
84
|
+
readonly memberDisplayNames: ReadonlyMap<string, string>;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Parses the JSDoc comment attached to a TypeScript AST node using the
|
|
88
|
+
* official TSDoc parser and returns canonical IR constraint and annotation
|
|
89
|
+
* nodes.
|
|
90
|
+
*
|
|
91
|
+
* For constraint tags (`@minimum`, `@pattern`, `@enumOptions`, etc.),
|
|
92
|
+
* the structured TSDoc parser is used. Canonical annotation tags
|
|
93
|
+
* (`@displayName`) are also parsed structurally. Summary text and `@remarks`
|
|
94
|
+
* are extracted as separate annotation nodes.
|
|
95
|
+
*
|
|
96
|
+
* @param node - The TS AST node to inspect (PropertyDeclaration, PropertySignature, etc.)
|
|
97
|
+
* @param file - Absolute source file path for provenance
|
|
98
|
+
* @returns Parsed constraint and annotation nodes
|
|
99
|
+
*/
|
|
100
|
+
export declare function parseTSDocTags(node: ts.Node, file?: string, options?: ParseTSDocOptions): TSDocParseResult;
|
|
101
|
+
/**
|
|
102
|
+
* Checks if a TS AST node has a `@deprecated` tag using the TSDoc parser.
|
|
103
|
+
*
|
|
104
|
+
* Falls back to the TS compiler API for nodes without doc comments.
|
|
105
|
+
*/
|
|
106
|
+
export declare function hasDeprecatedTagTSDoc(node: ts.Node): boolean;
|
|
107
|
+
/**
|
|
108
|
+
* Extracts root and member-target display-name metadata from a node's JSDoc tags.
|
|
109
|
+
*
|
|
110
|
+
* Member-target display-name tags use the syntax `@displayName :member Label`.
|
|
111
|
+
* The first non-target `@displayName` is returned as the root display name.
|
|
112
|
+
*/
|
|
113
|
+
export declare function extractDisplayNameMetadata(node: ts.Node): DisplayNameMetadata;
|
|
114
|
+
/**
|
|
115
|
+
* Extracts a path-target prefix (`:fieldName`) from constraint tag text.
|
|
116
|
+
* Returns the parsed PathTarget and remaining text, or null if no path target.
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* extractPathTarget(":value 0") // → { path: { segments: ["value"] }, remainingText: "0" }
|
|
120
|
+
* extractPathTarget("42") // → null
|
|
121
|
+
*/
|
|
122
|
+
export declare function extractPathTarget(text: string): {
|
|
123
|
+
path: PathTarget;
|
|
124
|
+
remainingText: string;
|
|
125
|
+
} | null;
|
|
126
|
+
//# sourceMappingURL=tsdoc-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tsdoc-parser.d.ts","sourceRoot":"","sources":["../../src/analyzer/tsdoc-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAcL,KAAK,4BAA4B,EAGlC,MAAM,6BAA6B,CAAC;AAkBrC,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,cAAc,EAEnB,KAAK,UAAU,EACf,KAAK,QAAQ,EACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AA4nBhE;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,4DAA4D;IAC5D,QAAQ,CAAC,WAAW,EAAE,SAAS,cAAc,EAAE,CAAC;IAChD,qEAAqE;IACrE,QAAQ,CAAC,WAAW,EAAE,SAAS,cAAc,EAAE,CAAC;IAChD,2EAA2E;IAC3E,QAAQ,CAAC,WAAW,EAAE,SAAS,4BAA4B,EAAE,CAAC;CAC/D;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IAC/C;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC;IAC9B,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC;IAClC,2DAA2D;IAC3D,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;IAC/B,4EAA4E;IAC5E,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;CAC7B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,kBAAkB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1D;AA4DD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,IAAI,SAAK,EACT,OAAO,CAAC,EAAE,iBAAiB,GAC1B,gBAAgB,CAsSlB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,OAAO,CAsB5D;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,mBAAmB,CAmC7E;AAMD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,GACX;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAEpD"}
|