@typespec/compiler 0.41.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.
- package/LICENSE +21 -0
- package/README.md +9 -0
- package/cmd/tsp-server.js +3 -0
- package/cmd/tsp.js +3 -0
- package/dist/cmd/runner.d.ts +9 -0
- package/dist/cmd/runner.d.ts.map +1 -0
- package/dist/cmd/runner.js +62 -0
- package/dist/cmd/runner.js.map +1 -0
- package/dist/config/config-interpolation.d.ts +11 -0
- package/dist/config/config-interpolation.d.ts.map +1 -0
- package/dist/config/config-interpolation.js +109 -0
- package/dist/config/config-interpolation.js.map +1 -0
- package/dist/config/config-loader.d.ts +25 -0
- package/dist/config/config-loader.d.ts.map +1 -0
- package/dist/config/config-loader.js +182 -0
- package/dist/config/config-loader.js.map +1 -0
- package/dist/config/config-schema.d.ts +4 -0
- package/dist/config/config-schema.d.ts.map +1 -0
- package/dist/config/config-schema.js +84 -0
- package/dist/config/config-schema.js.map +1 -0
- package/dist/config/index.d.ts +3 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +3 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/types.d.ts +79 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +2 -0
- package/dist/config/types.js.map +1 -0
- package/dist/core/binder.d.ts +29 -0
- package/dist/core/binder.d.ts.map +1 -0
- package/dist/core/binder.js +455 -0
- package/dist/core/binder.js.map +1 -0
- package/dist/core/charcode.d.ts +130 -0
- package/dist/core/charcode.d.ts.map +1 -0
- package/dist/core/charcode.js +115 -0
- package/dist/core/charcode.js.map +1 -0
- package/dist/core/checker.d.ts +138 -0
- package/dist/core/checker.d.ts.map +1 -0
- package/dist/core/checker.js +4070 -0
- package/dist/core/checker.js.map +1 -0
- package/dist/core/cli/args.d.ts +18 -0
- package/dist/core/cli/args.d.ts.map +1 -0
- package/dist/core/cli/args.js +108 -0
- package/dist/core/cli/args.js.map +1 -0
- package/dist/core/cli/cli.d.ts +2 -0
- package/dist/core/cli/cli.d.ts.map +1 -0
- package/dist/core/cli/cli.js +477 -0
- package/dist/core/cli/cli.js.map +1 -0
- package/dist/core/cli/index.d.ts +2 -0
- package/dist/core/cli/index.d.ts.map +1 -0
- package/dist/core/cli/index.js +2 -0
- package/dist/core/cli/index.js.map +1 -0
- package/dist/core/decorator-utils.d.ts +108 -0
- package/dist/core/decorator-utils.d.ts.map +1 -0
- package/dist/core/decorator-utils.js +326 -0
- package/dist/core/decorator-utils.js.map +1 -0
- package/dist/core/diagnostics.d.ts +93 -0
- package/dist/core/diagnostics.d.ts.map +1 -0
- package/dist/core/diagnostics.js +315 -0
- package/dist/core/diagnostics.js.map +1 -0
- package/dist/core/emitter-utils.d.ts +14 -0
- package/dist/core/emitter-utils.d.ts.map +1 -0
- package/dist/core/emitter-utils.js +16 -0
- package/dist/core/emitter-utils.js.map +1 -0
- package/dist/core/formatter-fs.d.ts +21 -0
- package/dist/core/formatter-fs.d.ts.map +1 -0
- package/dist/core/formatter-fs.js +79 -0
- package/dist/core/formatter-fs.js.map +1 -0
- package/dist/core/formatter.d.ts +10 -0
- package/dist/core/formatter.d.ts.map +1 -0
- package/dist/core/formatter.js +24 -0
- package/dist/core/formatter.js.map +1 -0
- package/dist/core/helpers/discriminator-utils.d.ts +14 -0
- package/dist/core/helpers/discriminator-utils.d.ts.map +1 -0
- package/dist/core/helpers/discriminator-utils.js +169 -0
- package/dist/core/helpers/discriminator-utils.js.map +1 -0
- package/dist/core/helpers/index.d.ts +6 -0
- package/dist/core/helpers/index.d.ts.map +1 -0
- package/dist/core/helpers/index.js +6 -0
- package/dist/core/helpers/index.js.map +1 -0
- package/dist/core/helpers/operation-utils.d.ts +15 -0
- package/dist/core/helpers/operation-utils.d.ts.map +1 -0
- package/dist/core/helpers/operation-utils.js +35 -0
- package/dist/core/helpers/operation-utils.js.map +1 -0
- package/dist/core/helpers/projected-names-utils.d.ts +20 -0
- package/dist/core/helpers/projected-names-utils.d.ts.map +1 -0
- package/dist/core/helpers/projected-names-utils.js +40 -0
- package/dist/core/helpers/projected-names-utils.js.map +1 -0
- package/dist/core/helpers/type-name-utils.d.ts +14 -0
- package/dist/core/helpers/type-name-utils.d.ts.map +1 -0
- package/dist/core/helpers/type-name-utils.js +122 -0
- package/dist/core/helpers/type-name-utils.js.map +1 -0
- package/dist/core/helpers/usage-resolver.d.ts +20 -0
- package/dist/core/helpers/usage-resolver.d.ts.map +1 -0
- package/dist/core/helpers/usage-resolver.js +108 -0
- package/dist/core/helpers/usage-resolver.js.map +1 -0
- package/dist/core/index.d.ts +26 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +26 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/install.d.ts +2 -0
- package/dist/core/install.d.ts.map +1 -0
- package/dist/core/install.js +26 -0
- package/dist/core/install.js.map +1 -0
- package/dist/core/library.d.ts +34 -0
- package/dist/core/library.d.ts.map +1 -0
- package/dist/core/library.js +100 -0
- package/dist/core/library.js.map +1 -0
- package/dist/core/logger/console-sink.browser.d.ts +4 -0
- package/dist/core/logger/console-sink.browser.d.ts.map +1 -0
- package/dist/core/logger/console-sink.browser.js +14 -0
- package/dist/core/logger/console-sink.browser.js.map +1 -0
- package/dist/core/logger/console-sink.d.ts +9 -0
- package/dist/core/logger/console-sink.d.ts.map +1 -0
- package/dist/core/logger/console-sink.js +81 -0
- package/dist/core/logger/console-sink.js.map +1 -0
- package/dist/core/logger/index.d.ts +3 -0
- package/dist/core/logger/index.d.ts.map +1 -0
- package/dist/core/logger/index.js +3 -0
- package/dist/core/logger/index.js.map +1 -0
- package/dist/core/logger/logger.d.ts +7 -0
- package/dist/core/logger/logger.d.ts.map +1 -0
- package/dist/core/logger/logger.js +32 -0
- package/dist/core/logger/logger.js.map +1 -0
- package/dist/core/logger/tracer.d.ts +3 -0
- package/dist/core/logger/tracer.d.ts.map +1 -0
- package/dist/core/logger/tracer.js +91 -0
- package/dist/core/logger/tracer.js.map +1 -0
- package/dist/core/manifest.d.ts +21 -0
- package/dist/core/manifest.d.ts.map +1 -0
- package/dist/core/manifest.js +8 -0
- package/dist/core/manifest.js.map +1 -0
- package/dist/core/messages.d.ts +2253 -0
- package/dist/core/messages.d.ts.map +1 -0
- package/dist/core/messages.js +749 -0
- package/dist/core/messages.js.map +1 -0
- package/dist/core/module-resolver.d.ts +84 -0
- package/dist/core/module-resolver.d.ts.map +1 -0
- package/dist/core/module-resolver.js +170 -0
- package/dist/core/module-resolver.js.map +1 -0
- package/dist/core/node-host.browser.d.ts +2 -0
- package/dist/core/node-host.browser.d.ts.map +1 -0
- package/dist/core/node-host.browser.js +2 -0
- package/dist/core/node-host.browser.js.map +1 -0
- package/dist/core/node-host.d.ts +7 -0
- package/dist/core/node-host.d.ts.map +1 -0
- package/dist/core/node-host.js +43 -0
- package/dist/core/node-host.js.map +1 -0
- package/dist/core/nonascii.d.ts +2 -0
- package/dist/core/nonascii.d.ts.map +1 -0
- package/dist/core/nonascii.js +712 -0
- package/dist/core/nonascii.js.map +1 -0
- package/dist/core/options.d.ts +46 -0
- package/dist/core/options.d.ts.map +1 -0
- package/dist/core/options.js +2 -0
- package/dist/core/options.js.map +1 -0
- package/dist/core/parser.d.ts +17 -0
- package/dist/core/parser.d.ts.map +1 -0
- package/dist/core/parser.js +2561 -0
- package/dist/core/parser.js.map +1 -0
- package/dist/core/path-utils.d.ts +193 -0
- package/dist/core/path-utils.d.ts.map +1 -0
- package/dist/core/path-utils.js +427 -0
- package/dist/core/path-utils.js.map +1 -0
- package/dist/core/program.d.ts +104 -0
- package/dist/core/program.d.ts.map +1 -0
- package/dist/core/program.js +898 -0
- package/dist/core/program.js.map +1 -0
- package/dist/core/projection-members.d.ts +8 -0
- package/dist/core/projection-members.d.ts.map +1 -0
- package/dist/core/projection-members.js +387 -0
- package/dist/core/projection-members.js.map +1 -0
- package/dist/core/projector.d.ts +26 -0
- package/dist/core/projector.d.ts.map +1 -0
- package/dist/core/projector.js +523 -0
- package/dist/core/projector.js.map +1 -0
- package/dist/core/scanner.d.ts +125 -0
- package/dist/core/scanner.d.ts.map +1 -0
- package/dist/core/scanner.js +1012 -0
- package/dist/core/scanner.js.map +1 -0
- package/dist/core/schema-validator.d.ts +6 -0
- package/dist/core/schema-validator.d.ts.map +1 -0
- package/dist/core/schema-validator.js +38 -0
- package/dist/core/schema-validator.js.map +1 -0
- package/dist/core/semantic-walker.d.ts +53 -0
- package/dist/core/semantic-walker.d.ts.map +1 -0
- package/dist/core/semantic-walker.js +355 -0
- package/dist/core/semantic-walker.js.map +1 -0
- package/dist/core/type-utils.d.ts +49 -0
- package/dist/core/type-utils.d.ts.map +1 -0
- package/dist/core/type-utils.js +95 -0
- package/dist/core/type-utils.js.map +1 -0
- package/dist/core/types.d.ts +1345 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +105 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/util.d.ts +150 -0
- package/dist/core/util.d.ts.map +1 -0
- package/dist/core/util.js +417 -0
- package/dist/core/util.js.map +1 -0
- package/dist/emitter-framework/asset-emitter.d.ts +5 -0
- package/dist/emitter-framework/asset-emitter.d.ts.map +1 -0
- package/dist/emitter-framework/asset-emitter.js +610 -0
- package/dist/emitter-framework/asset-emitter.js.map +1 -0
- package/dist/emitter-framework/builders/array-builder.d.ts +7 -0
- package/dist/emitter-framework/builders/array-builder.d.ts.map +1 -0
- package/dist/emitter-framework/builders/array-builder.js +45 -0
- package/dist/emitter-framework/builders/array-builder.js.map +1 -0
- package/dist/emitter-framework/builders/object-builder.d.ts +9 -0
- package/dist/emitter-framework/builders/object-builder.d.ts.map +1 -0
- package/dist/emitter-framework/builders/object-builder.js +30 -0
- package/dist/emitter-framework/builders/object-builder.js.map +1 -0
- package/dist/emitter-framework/builders/string-builder.d.ts +13 -0
- package/dist/emitter-framework/builders/string-builder.d.ts.map +1 -0
- package/dist/emitter-framework/builders/string-builder.js +98 -0
- package/dist/emitter-framework/builders/string-builder.js.map +1 -0
- package/dist/emitter-framework/custom-key-map.d.ts +29 -0
- package/dist/emitter-framework/custom-key-map.d.ts.map +1 -0
- package/dist/emitter-framework/custom-key-map.js +62 -0
- package/dist/emitter-framework/custom-key-map.js.map +1 -0
- package/dist/emitter-framework/index.d.ts +8 -0
- package/dist/emitter-framework/index.d.ts.map +1 -0
- package/dist/emitter-framework/index.js +8 -0
- package/dist/emitter-framework/index.js.map +1 -0
- package/dist/emitter-framework/placeholder.d.ts +12 -0
- package/dist/emitter-framework/placeholder.d.ts.map +1 -0
- package/dist/emitter-framework/placeholder.js +27 -0
- package/dist/emitter-framework/placeholder.js.map +1 -0
- package/dist/emitter-framework/type-emitter.d.ts +314 -0
- package/dist/emitter-framework/type-emitter.d.ts.map +1 -0
- package/dist/emitter-framework/type-emitter.js +612 -0
- package/dist/emitter-framework/type-emitter.js.map +1 -0
- package/dist/emitter-framework/types.d.ts +124 -0
- package/dist/emitter-framework/types.d.ts.map +1 -0
- package/dist/emitter-framework/types.js +39 -0
- package/dist/emitter-framework/types.js.map +1 -0
- package/dist/formatter/index.d.ts +11 -0
- package/dist/formatter/index.d.ts.map +1 -0
- package/dist/formatter/index.js +28 -0
- package/dist/formatter/index.js.map +1 -0
- package/dist/formatter/parser.d.ts +16 -0
- package/dist/formatter/parser.d.ts.map +1 -0
- package/dist/formatter/parser.js +23 -0
- package/dist/formatter/parser.js.map +1 -0
- package/dist/formatter/print/comment-handler.d.ts +7 -0
- package/dist/formatter/print/comment-handler.d.ts.map +1 -0
- package/dist/formatter/print/comment-handler.js +81 -0
- package/dist/formatter/print/comment-handler.js.map +1 -0
- package/dist/formatter/print/index.d.ts +3 -0
- package/dist/formatter/print/index.d.ts.map +1 -0
- package/dist/formatter/print/index.js +3 -0
- package/dist/formatter/print/index.js.map +1 -0
- package/dist/formatter/print/needs-parens.d.ts +10 -0
- package/dist/formatter/print/needs-parens.d.ts.map +1 -0
- package/dist/formatter/print/needs-parens.js +27 -0
- package/dist/formatter/print/needs-parens.js.map +1 -0
- package/dist/formatter/print/printer.d.ts +62 -0
- package/dist/formatter/print/printer.d.ts.map +1 -0
- package/dist/formatter/print/printer.js +1025 -0
- package/dist/formatter/print/printer.js.map +1 -0
- package/dist/formatter/print/types.d.ts +9 -0
- package/dist/formatter/print/types.d.ts.map +1 -0
- package/dist/formatter/print/types.js +2 -0
- package/dist/formatter/print/types.js.map +1 -0
- package/dist/init/index.d.ts +2 -0
- package/dist/init/index.d.ts.map +1 -0
- package/dist/init/index.js +2 -0
- package/dist/init/index.js.map +1 -0
- package/dist/init/init-template.d.ts +45 -0
- package/dist/init/init-template.d.ts.map +1 -0
- package/dist/init/init-template.js +45 -0
- package/dist/init/init-template.js.map +1 -0
- package/dist/init/init.d.ts +49 -0
- package/dist/init/init.d.ts.map +1 -0
- package/dist/init/init.js +224 -0
- package/dist/init/init.js.map +1 -0
- package/dist/lib/decorators.d.ts +222 -0
- package/dist/lib/decorators.d.ts.map +1 -0
- package/dist/lib/decorators.js +745 -0
- package/dist/lib/decorators.js.map +1 -0
- package/dist/lib/service.d.ts +38 -0
- package/dist/lib/service.d.ts.map +1 -0
- package/dist/lib/service.js +78 -0
- package/dist/lib/service.js.map +1 -0
- package/dist/manifest.js +4 -0
- package/dist/server/completion.d.ts +10 -0
- package/dist/server/completion.d.ts.map +1 -0
- package/dist/server/completion.js +207 -0
- package/dist/server/completion.js.map +1 -0
- package/dist/server/index.d.ts +3 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +3 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/language-config.d.ts +195 -0
- package/dist/server/language-config.d.ts.map +1 -0
- package/dist/server/language-config.js +102 -0
- package/dist/server/language-config.js.map +1 -0
- package/dist/server/server.d.ts +2 -0
- package/dist/server/server.d.ts.map +1 -0
- package/dist/server/server.js +131 -0
- package/dist/server/server.js.map +1 -0
- package/dist/server/serverlib.d.ts +72 -0
- package/dist/server/serverlib.d.ts.map +1 -0
- package/dist/server/serverlib.js +1034 -0
- package/dist/server/serverlib.js.map +1 -0
- package/dist/server/symbol-structure.d.ts +4 -0
- package/dist/server/symbol-structure.d.ts.map +1 -0
- package/dist/server/symbol-structure.js +121 -0
- package/dist/server/symbol-structure.js.map +1 -0
- package/dist/server/tmlanguage.d.ts +3 -0
- package/dist/server/tmlanguage.d.ts.map +1 -0
- package/dist/server/tmlanguage.js +713 -0
- package/dist/server/tmlanguage.js.map +1 -0
- package/dist/server/type-details.d.ts +11 -0
- package/dist/server/type-details.d.ts.map +1 -0
- package/dist/server/type-details.js +72 -0
- package/dist/server/type-details.js.map +1 -0
- package/dist/server/type-signature.d.ts +2 -0
- package/dist/server/type-signature.d.ts.map +1 -0
- package/dist/server/type-signature.js +108 -0
- package/dist/server/type-signature.js.map +1 -0
- package/dist/testing/expect.d.ts +49 -0
- package/dist/testing/expect.d.ts.map +1 -0
- package/dist/testing/expect.js +83 -0
- package/dist/testing/expect.js.map +1 -0
- package/dist/testing/index.d.ts +6 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +6 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/test-host.d.ts +14 -0
- package/dist/testing/test-host.d.ts.map +1 -0
- package/dist/testing/test-host.js +271 -0
- package/dist/testing/test-host.js.map +1 -0
- package/dist/testing/test-server-host.d.ts +39 -0
- package/dist/testing/test-server-host.d.ts.map +1 -0
- package/dist/testing/test-server-host.js +112 -0
- package/dist/testing/test-server-host.js.map +1 -0
- package/dist/testing/test-utils.d.ts +22 -0
- package/dist/testing/test-utils.d.ts.map +1 -0
- package/dist/testing/test-utils.js +60 -0
- package/dist/testing/test-utils.js.map +1 -0
- package/dist/testing/types.d.ts +69 -0
- package/dist/testing/types.d.ts.map +1 -0
- package/dist/testing/types.js +7 -0
- package/dist/testing/types.js.map +1 -0
- package/dist/typespec.tmLanguage +1760 -0
- package/lib/decorators.tsp +420 -0
- package/lib/lib.tsp +158 -0
- package/lib/main.tsp +4 -0
- package/lib/projected-names.tsp +94 -0
- package/lib/reflection.tsp +10 -0
- package/package.json +119 -0
|
@@ -0,0 +1,1345 @@
|
|
|
1
|
+
import type { JSONSchemaType as AjvJSONSchemaType } from "ajv";
|
|
2
|
+
import { TypeEmitter } from "../emitter-framework/index.js";
|
|
3
|
+
import { AssetEmitter } from "../emitter-framework/types.js";
|
|
4
|
+
import { Program } from "./program.js";
|
|
5
|
+
export type MarshalledValue<Type> = Type extends StringLiteral ? string : Type extends NumericLiteral ? number : Type extends BooleanLiteral ? boolean : Type;
|
|
6
|
+
/**
|
|
7
|
+
* Type System types
|
|
8
|
+
*/
|
|
9
|
+
export type DecoratorArgumentValue = Type | number | string | boolean;
|
|
10
|
+
export interface DecoratorArgument {
|
|
11
|
+
value: Type;
|
|
12
|
+
node?: Node;
|
|
13
|
+
}
|
|
14
|
+
export interface DecoratorApplication {
|
|
15
|
+
decorator: DecoratorFunction;
|
|
16
|
+
args: DecoratorArgument[];
|
|
17
|
+
node?: DecoratorExpressionNode | AugmentDecoratorStatementNode;
|
|
18
|
+
}
|
|
19
|
+
export interface DecoratorFunction {
|
|
20
|
+
(program: DecoratorContext, target: any, ...customArgs: any[]): void;
|
|
21
|
+
namespace?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface BaseType {
|
|
24
|
+
kind: string;
|
|
25
|
+
node?: Node;
|
|
26
|
+
instantiationParameters?: Type[];
|
|
27
|
+
get projections(): ProjectionStatementNode[];
|
|
28
|
+
projectionsByName(name: string): ProjectionStatementNode[];
|
|
29
|
+
projectionSource?: Type;
|
|
30
|
+
projectionBase?: Type;
|
|
31
|
+
projector?: Projector;
|
|
32
|
+
}
|
|
33
|
+
export interface DecoratedType {
|
|
34
|
+
decorators: DecoratorApplication[];
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Union of all the types that implement TemplatedTypeBase
|
|
38
|
+
*/
|
|
39
|
+
export type TemplatedType = Model | Operation | Interface | Union;
|
|
40
|
+
export interface TypeMapper {
|
|
41
|
+
partial: boolean;
|
|
42
|
+
getMappedType(type: TemplateParameter): Type;
|
|
43
|
+
args: readonly Type[];
|
|
44
|
+
}
|
|
45
|
+
export interface TemplatedTypeBase {
|
|
46
|
+
templateMapper?: TypeMapper;
|
|
47
|
+
/**
|
|
48
|
+
* @deprecated use templateMapper instead.
|
|
49
|
+
*/
|
|
50
|
+
templateArguments?: Type[];
|
|
51
|
+
templateNode?: Node;
|
|
52
|
+
}
|
|
53
|
+
export type Type = Model | ModelProperty | Scalar | Interface | Enum | EnumMember | TemplateParameter | Namespace | Operation | StringLiteral | NumericLiteral | BooleanLiteral | Tuple | Union | UnionVariant | IntrinsicType | FunctionType | Decorator | FunctionParameter | ObjectType | Projection;
|
|
54
|
+
export type TypeOrReturnRecord = Type | ReturnRecord;
|
|
55
|
+
export interface ObjectType extends BaseType {
|
|
56
|
+
kind: "Object";
|
|
57
|
+
properties: Record<string, Type>;
|
|
58
|
+
}
|
|
59
|
+
export interface Projection extends BaseType {
|
|
60
|
+
kind: "Projection";
|
|
61
|
+
node: undefined;
|
|
62
|
+
nodeByKind: Map<string, ProjectionStatementNode>;
|
|
63
|
+
nodeByType: Map<Type, ProjectionStatementNode>;
|
|
64
|
+
}
|
|
65
|
+
export interface ProjectionApplication {
|
|
66
|
+
scope?: Type;
|
|
67
|
+
projectionName: string;
|
|
68
|
+
arguments: DecoratorArgumentValue[];
|
|
69
|
+
direction?: "from" | "to";
|
|
70
|
+
}
|
|
71
|
+
export interface Projector {
|
|
72
|
+
parentProjector?: Projector;
|
|
73
|
+
projections: ProjectionApplication[];
|
|
74
|
+
projectedTypes: Map<Type, Type>;
|
|
75
|
+
projectType(type: Type): Type;
|
|
76
|
+
projectedStartNode?: Type;
|
|
77
|
+
projectedGlobalNamespace?: Namespace;
|
|
78
|
+
}
|
|
79
|
+
export interface IntrinsicType extends BaseType {
|
|
80
|
+
kind: "Intrinsic";
|
|
81
|
+
name: "ErrorType" | "void" | "never" | "unknown" | "null";
|
|
82
|
+
}
|
|
83
|
+
export interface ErrorType extends IntrinsicType {
|
|
84
|
+
name: "ErrorType";
|
|
85
|
+
}
|
|
86
|
+
export interface VoidType extends IntrinsicType {
|
|
87
|
+
name: "void";
|
|
88
|
+
}
|
|
89
|
+
export interface NeverType extends IntrinsicType {
|
|
90
|
+
name: "never";
|
|
91
|
+
}
|
|
92
|
+
export interface UnknownType extends IntrinsicType {
|
|
93
|
+
name: "unknown";
|
|
94
|
+
}
|
|
95
|
+
export interface NullType extends IntrinsicType {
|
|
96
|
+
name: "null";
|
|
97
|
+
}
|
|
98
|
+
export interface ReturnRecord {
|
|
99
|
+
kind: "Return";
|
|
100
|
+
value: Type;
|
|
101
|
+
}
|
|
102
|
+
export type IntrinsicScalarName = "bytes" | "numeric" | "integer" | "float" | "int64" | "int32" | "int16" | "int8" | "uint64" | "uint32" | "uint16" | "uint8" | "safeint" | "float32" | "float64" | "string" | "plainDate" | "plainTime" | "zonedDateTime" | "duration" | "boolean" | "url";
|
|
103
|
+
export type NeverIndexer = {
|
|
104
|
+
key: NeverType;
|
|
105
|
+
value: undefined;
|
|
106
|
+
};
|
|
107
|
+
export type ModelIndexer = {
|
|
108
|
+
key: Scalar;
|
|
109
|
+
value: Type;
|
|
110
|
+
};
|
|
111
|
+
export interface ArrayModelType extends Model {
|
|
112
|
+
indexer: {
|
|
113
|
+
key: Scalar;
|
|
114
|
+
value: Type;
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
export interface RecordModelType extends Model {
|
|
118
|
+
indexer: {
|
|
119
|
+
key: Scalar;
|
|
120
|
+
value: Type;
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
export interface Model extends BaseType, DecoratedType, TemplatedTypeBase {
|
|
124
|
+
kind: "Model";
|
|
125
|
+
name: string;
|
|
126
|
+
node?: ModelStatementNode | ModelExpressionNode | IntersectionExpressionNode | ProjectionModelExpressionNode;
|
|
127
|
+
namespace?: Namespace;
|
|
128
|
+
indexer?: ModelIndexer;
|
|
129
|
+
properties: Map<string, ModelProperty>;
|
|
130
|
+
/**
|
|
131
|
+
* Model this model extends. This represent inheritance.
|
|
132
|
+
*/
|
|
133
|
+
baseModel?: Model;
|
|
134
|
+
/**
|
|
135
|
+
* Direct children. This is the reverse relation of {@link baseModel}
|
|
136
|
+
*/
|
|
137
|
+
derivedModels: Model[];
|
|
138
|
+
}
|
|
139
|
+
export interface ModelProperty extends BaseType, DecoratedType {
|
|
140
|
+
kind: "ModelProperty";
|
|
141
|
+
node: ModelPropertyNode | ModelSpreadPropertyNode | ProjectionModelPropertyNode | ProjectionModelSpreadPropertyNode;
|
|
142
|
+
name: string;
|
|
143
|
+
type: Type;
|
|
144
|
+
sourceProperty?: ModelProperty;
|
|
145
|
+
optional: boolean;
|
|
146
|
+
default?: Type;
|
|
147
|
+
model?: Model;
|
|
148
|
+
}
|
|
149
|
+
export interface Scalar extends BaseType, DecoratedType, TemplatedTypeBase {
|
|
150
|
+
kind: "Scalar";
|
|
151
|
+
name: string;
|
|
152
|
+
node: ScalarStatementNode;
|
|
153
|
+
/**
|
|
154
|
+
* Namespace the scalar was defined in.
|
|
155
|
+
*/
|
|
156
|
+
namespace?: Namespace;
|
|
157
|
+
/**
|
|
158
|
+
* Scalar this scalar extends.
|
|
159
|
+
*/
|
|
160
|
+
baseScalar?: Scalar;
|
|
161
|
+
/**
|
|
162
|
+
* Direct children. This is the reverse relation of @see baseScalar
|
|
163
|
+
*/
|
|
164
|
+
derivedScalars: Scalar[];
|
|
165
|
+
}
|
|
166
|
+
export interface Interface extends BaseType, DecoratedType, TemplatedTypeBase {
|
|
167
|
+
kind: "Interface";
|
|
168
|
+
name: string;
|
|
169
|
+
node: InterfaceStatementNode;
|
|
170
|
+
namespace?: Namespace;
|
|
171
|
+
operations: Map<string, Operation>;
|
|
172
|
+
}
|
|
173
|
+
export interface Enum extends BaseType, DecoratedType {
|
|
174
|
+
kind: "Enum";
|
|
175
|
+
name: string;
|
|
176
|
+
node: EnumStatementNode;
|
|
177
|
+
namespace?: Namespace;
|
|
178
|
+
members: Map<string, EnumMember>;
|
|
179
|
+
}
|
|
180
|
+
export interface EnumMember extends BaseType, DecoratedType {
|
|
181
|
+
kind: "EnumMember";
|
|
182
|
+
name: string;
|
|
183
|
+
enum: Enum;
|
|
184
|
+
node: EnumMemberNode;
|
|
185
|
+
value?: string | number;
|
|
186
|
+
/**
|
|
187
|
+
* when spread operators make new enum members,
|
|
188
|
+
* this tracks the enum member we copied from.
|
|
189
|
+
*/
|
|
190
|
+
sourceMember?: EnumMember;
|
|
191
|
+
}
|
|
192
|
+
export interface Operation extends BaseType, DecoratedType, TemplatedTypeBase {
|
|
193
|
+
kind: "Operation";
|
|
194
|
+
node: OperationStatementNode;
|
|
195
|
+
name: string;
|
|
196
|
+
namespace?: Namespace;
|
|
197
|
+
interface?: Interface;
|
|
198
|
+
parameters: Model;
|
|
199
|
+
returnType: Type;
|
|
200
|
+
}
|
|
201
|
+
export interface Namespace extends BaseType, DecoratedType {
|
|
202
|
+
kind: "Namespace";
|
|
203
|
+
name: string;
|
|
204
|
+
namespace?: Namespace;
|
|
205
|
+
node: NamespaceStatementNode;
|
|
206
|
+
models: Map<string, Model>;
|
|
207
|
+
scalars: Map<string, Scalar>;
|
|
208
|
+
operations: Map<string, Operation>;
|
|
209
|
+
namespaces: Map<string, Namespace>;
|
|
210
|
+
interfaces: Map<string, Interface>;
|
|
211
|
+
enums: Map<string, Enum>;
|
|
212
|
+
unions: Map<string, Union>;
|
|
213
|
+
decoratorDeclarations: Map<string, Decorator>;
|
|
214
|
+
functionDeclarations: Map<string, FunctionType>;
|
|
215
|
+
}
|
|
216
|
+
export type LiteralType = StringLiteral | NumericLiteral | BooleanLiteral;
|
|
217
|
+
export interface StringLiteral extends BaseType {
|
|
218
|
+
kind: "String";
|
|
219
|
+
node?: StringLiteralNode;
|
|
220
|
+
value: string;
|
|
221
|
+
}
|
|
222
|
+
export interface NumericLiteral extends BaseType {
|
|
223
|
+
kind: "Number";
|
|
224
|
+
node?: NumericLiteralNode;
|
|
225
|
+
value: number;
|
|
226
|
+
}
|
|
227
|
+
export interface BooleanLiteral extends BaseType {
|
|
228
|
+
kind: "Boolean";
|
|
229
|
+
node?: BooleanLiteralNode;
|
|
230
|
+
value: boolean;
|
|
231
|
+
}
|
|
232
|
+
export interface Tuple extends BaseType {
|
|
233
|
+
kind: "Tuple";
|
|
234
|
+
node: TupleExpressionNode;
|
|
235
|
+
values: Type[];
|
|
236
|
+
}
|
|
237
|
+
export interface Union extends BaseType, DecoratedType, TemplatedTypeBase {
|
|
238
|
+
kind: "Union";
|
|
239
|
+
name?: string;
|
|
240
|
+
node: UnionExpressionNode | UnionStatementNode;
|
|
241
|
+
namespace?: Namespace;
|
|
242
|
+
variants: Map<string | symbol, UnionVariant>;
|
|
243
|
+
expression: boolean;
|
|
244
|
+
/**
|
|
245
|
+
* @deprecated use variants
|
|
246
|
+
*/
|
|
247
|
+
readonly options: Type[];
|
|
248
|
+
}
|
|
249
|
+
export interface UnionVariant extends BaseType, DecoratedType {
|
|
250
|
+
kind: "UnionVariant";
|
|
251
|
+
name: string | symbol;
|
|
252
|
+
node: UnionVariantNode | undefined;
|
|
253
|
+
type: Type;
|
|
254
|
+
union: Union;
|
|
255
|
+
}
|
|
256
|
+
export interface TemplateParameter extends BaseType {
|
|
257
|
+
kind: "TemplateParameter";
|
|
258
|
+
node: TemplateParameterDeclarationNode;
|
|
259
|
+
constraint?: Type;
|
|
260
|
+
default?: Type;
|
|
261
|
+
}
|
|
262
|
+
export interface Decorator extends BaseType {
|
|
263
|
+
kind: "Decorator";
|
|
264
|
+
node: DecoratorDeclarationStatementNode;
|
|
265
|
+
name: `@${string}`;
|
|
266
|
+
namespace: Namespace;
|
|
267
|
+
target: FunctionParameter;
|
|
268
|
+
parameters: FunctionParameter[];
|
|
269
|
+
implementation: (...args: unknown[]) => void;
|
|
270
|
+
}
|
|
271
|
+
export interface FunctionType extends BaseType {
|
|
272
|
+
kind: "Function";
|
|
273
|
+
node?: FunctionDeclarationStatementNode;
|
|
274
|
+
namespace?: Namespace;
|
|
275
|
+
name: string;
|
|
276
|
+
parameters: FunctionParameter[];
|
|
277
|
+
returnType: Type;
|
|
278
|
+
implementation: (...args: unknown[]) => unknown;
|
|
279
|
+
}
|
|
280
|
+
export interface FunctionParameter extends BaseType {
|
|
281
|
+
kind: "FunctionParameter";
|
|
282
|
+
node: FunctionParameterNode;
|
|
283
|
+
name: string;
|
|
284
|
+
type: Type;
|
|
285
|
+
optional: boolean;
|
|
286
|
+
rest: boolean;
|
|
287
|
+
}
|
|
288
|
+
export interface Sym {
|
|
289
|
+
readonly flags: SymbolFlags;
|
|
290
|
+
/**
|
|
291
|
+
* Nodes which contribute to this declaration
|
|
292
|
+
*/
|
|
293
|
+
readonly declarations: readonly Node[];
|
|
294
|
+
/**
|
|
295
|
+
* The name of the symbol
|
|
296
|
+
*/
|
|
297
|
+
readonly name: string;
|
|
298
|
+
/**
|
|
299
|
+
* A unique identifier for this symbol. Used to look up the symbol links.
|
|
300
|
+
*/
|
|
301
|
+
readonly id?: number;
|
|
302
|
+
/**
|
|
303
|
+
* The symbol containing this symbol, if any. E.g. for things declared in
|
|
304
|
+
* a namespace, this refers to the namespace.
|
|
305
|
+
*/
|
|
306
|
+
readonly parent?: Sym;
|
|
307
|
+
/**
|
|
308
|
+
* Externally visible symbols contained inside this symbol. E.g. all declarations
|
|
309
|
+
* in a namespace, or members of an enum.
|
|
310
|
+
*/
|
|
311
|
+
readonly exports?: SymbolTable;
|
|
312
|
+
/**
|
|
313
|
+
* Symbols for members of this symbol which must be referenced off the parent symbol
|
|
314
|
+
* and cannot be referenced by other means (i.e. by unqualified lookup of the symbol
|
|
315
|
+
* name).
|
|
316
|
+
*/
|
|
317
|
+
readonly members?: SymbolTable;
|
|
318
|
+
/**
|
|
319
|
+
* For using symbols, this is the used symbol.
|
|
320
|
+
*/
|
|
321
|
+
readonly symbolSource?: Sym;
|
|
322
|
+
/**
|
|
323
|
+
* For late-bound symbols, this is the type referenced by the symbol.
|
|
324
|
+
*/
|
|
325
|
+
readonly type?: Type;
|
|
326
|
+
/**
|
|
327
|
+
* For decorator and function symbols, this is the JS function implementation.
|
|
328
|
+
*/
|
|
329
|
+
readonly value?: (...args: any[]) => any;
|
|
330
|
+
}
|
|
331
|
+
export interface SymbolLinks {
|
|
332
|
+
type?: Type;
|
|
333
|
+
declaredType?: Type;
|
|
334
|
+
instantiations?: TypeInstantiationMap;
|
|
335
|
+
}
|
|
336
|
+
export interface SymbolTable extends ReadonlyMap<string, Sym> {
|
|
337
|
+
/**
|
|
338
|
+
* Duplicate
|
|
339
|
+
*/
|
|
340
|
+
readonly duplicates: ReadonlyMap<Sym, ReadonlySet<Sym>>;
|
|
341
|
+
}
|
|
342
|
+
export declare const enum SymbolFlags {
|
|
343
|
+
None = 0,
|
|
344
|
+
Model = 2,
|
|
345
|
+
ModelProperty = 4,
|
|
346
|
+
Scalar = 8,
|
|
347
|
+
Operation = 16,
|
|
348
|
+
Enum = 32,
|
|
349
|
+
EnumMember = 64,
|
|
350
|
+
Interface = 128,
|
|
351
|
+
InterfaceMember = 256,
|
|
352
|
+
Union = 512,
|
|
353
|
+
UnionVariant = 1024,
|
|
354
|
+
Alias = 2048,
|
|
355
|
+
Namespace = 4096,
|
|
356
|
+
Projection = 8192,
|
|
357
|
+
Decorator = 16384,
|
|
358
|
+
TemplateParameter = 32768,
|
|
359
|
+
ProjectionParameter = 65536,
|
|
360
|
+
Function = 131072,
|
|
361
|
+
FunctionParameter = 262144,
|
|
362
|
+
Using = 524288,
|
|
363
|
+
DuplicateUsing = 1048576,
|
|
364
|
+
SourceFile = 2097152,
|
|
365
|
+
Declaration = 4194304,
|
|
366
|
+
Implementation = 8388608,
|
|
367
|
+
/**
|
|
368
|
+
* A symbol which was late-bound, in which case, the type referred to
|
|
369
|
+
* by this symbol is stored directly in the symbol.
|
|
370
|
+
*/
|
|
371
|
+
LateBound = 16777216,
|
|
372
|
+
ExportContainer = 2101248,
|
|
373
|
+
/**
|
|
374
|
+
* Symbols whose members will be late bound (and stored on the type)
|
|
375
|
+
*/
|
|
376
|
+
MemberContainer = 674,
|
|
377
|
+
Member = 1348
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
380
|
+
* Maps type arguments to instantiated type.
|
|
381
|
+
*/
|
|
382
|
+
export interface TypeInstantiationMap {
|
|
383
|
+
get(args: readonly Type[]): Type | undefined;
|
|
384
|
+
set(args: readonly Type[], type: Type): void;
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* AST types
|
|
388
|
+
*/
|
|
389
|
+
export declare enum SyntaxKind {
|
|
390
|
+
TypeSpecScript = 0,
|
|
391
|
+
/** @deprecated Use TypeSpecScript */
|
|
392
|
+
CadlScript = 0,
|
|
393
|
+
JsSourceFile = 1,
|
|
394
|
+
ImportStatement = 2,
|
|
395
|
+
Identifier = 3,
|
|
396
|
+
AugmentDecoratorStatement = 4,
|
|
397
|
+
DecoratorExpression = 5,
|
|
398
|
+
DirectiveExpression = 6,
|
|
399
|
+
MemberExpression = 7,
|
|
400
|
+
NamespaceStatement = 8,
|
|
401
|
+
UsingStatement = 9,
|
|
402
|
+
OperationStatement = 10,
|
|
403
|
+
OperationSignatureDeclaration = 11,
|
|
404
|
+
OperationSignatureReference = 12,
|
|
405
|
+
ModelStatement = 13,
|
|
406
|
+
ModelExpression = 14,
|
|
407
|
+
ModelProperty = 15,
|
|
408
|
+
ModelSpreadProperty = 16,
|
|
409
|
+
ScalarStatement = 17,
|
|
410
|
+
InterfaceStatement = 18,
|
|
411
|
+
UnionStatement = 19,
|
|
412
|
+
UnionVariant = 20,
|
|
413
|
+
EnumStatement = 21,
|
|
414
|
+
EnumMember = 22,
|
|
415
|
+
EnumSpreadMember = 23,
|
|
416
|
+
AliasStatement = 24,
|
|
417
|
+
DecoratorDeclarationStatement = 25,
|
|
418
|
+
FunctionDeclarationStatement = 26,
|
|
419
|
+
FunctionParameter = 27,
|
|
420
|
+
UnionExpression = 28,
|
|
421
|
+
IntersectionExpression = 29,
|
|
422
|
+
TupleExpression = 30,
|
|
423
|
+
ArrayExpression = 31,
|
|
424
|
+
StringLiteral = 32,
|
|
425
|
+
NumericLiteral = 33,
|
|
426
|
+
BooleanLiteral = 34,
|
|
427
|
+
ExternKeyword = 35,
|
|
428
|
+
VoidKeyword = 36,
|
|
429
|
+
NeverKeyword = 37,
|
|
430
|
+
UnknownKeyword = 38,
|
|
431
|
+
TypeReference = 39,
|
|
432
|
+
ProjectionReference = 40,
|
|
433
|
+
TemplateParameterDeclaration = 41,
|
|
434
|
+
EmptyStatement = 42,
|
|
435
|
+
InvalidStatement = 43,
|
|
436
|
+
LineComment = 44,
|
|
437
|
+
BlockComment = 45,
|
|
438
|
+
Doc = 46,
|
|
439
|
+
DocText = 47,
|
|
440
|
+
DocParamTag = 48,
|
|
441
|
+
DocReturnsTag = 49,
|
|
442
|
+
DocTemplateTag = 50,
|
|
443
|
+
DocUnknownTag = 51,
|
|
444
|
+
Projection = 52,
|
|
445
|
+
ProjectionParameterDeclaration = 53,
|
|
446
|
+
ProjectionModelSelector = 54,
|
|
447
|
+
ProjectionOperationSelector = 55,
|
|
448
|
+
ProjectionUnionSelector = 56,
|
|
449
|
+
ProjectionInterfaceSelector = 57,
|
|
450
|
+
ProjectionEnumSelector = 58,
|
|
451
|
+
ProjectionExpressionStatement = 59,
|
|
452
|
+
ProjectionIfExpression = 60,
|
|
453
|
+
ProjectionBlockExpression = 61,
|
|
454
|
+
ProjectionMemberExpression = 62,
|
|
455
|
+
ProjectionLogicalExpression = 63,
|
|
456
|
+
ProjectionEqualityExpression = 64,
|
|
457
|
+
ProjectionUnaryExpression = 65,
|
|
458
|
+
ProjectionRelationalExpression = 66,
|
|
459
|
+
ProjectionArithmeticExpression = 67,
|
|
460
|
+
ProjectionCallExpression = 68,
|
|
461
|
+
ProjectionLambdaExpression = 69,
|
|
462
|
+
ProjectionLambdaParameterDeclaration = 70,
|
|
463
|
+
ProjectionModelExpression = 71,
|
|
464
|
+
ProjectionModelProperty = 72,
|
|
465
|
+
ProjectionModelSpreadProperty = 73,
|
|
466
|
+
ProjectionSpreadProperty = 74,
|
|
467
|
+
ProjectionTupleExpression = 75,
|
|
468
|
+
ProjectionStatement = 76,
|
|
469
|
+
ProjectionDecoratorReferenceExpression = 77,
|
|
470
|
+
Return = 78
|
|
471
|
+
}
|
|
472
|
+
export declare const enum NodeFlags {
|
|
473
|
+
None = 0,
|
|
474
|
+
/**
|
|
475
|
+
* If this is set, the DescendantHasError bit can be trusted. If this not set,
|
|
476
|
+
* children need to be visited still to see if DescendantHasError should be
|
|
477
|
+
* set.
|
|
478
|
+
*
|
|
479
|
+
* Use the parser's `hasParseError` API instead of using this flag directly.
|
|
480
|
+
*/
|
|
481
|
+
DescendantErrorsExamined = 1,
|
|
482
|
+
/**
|
|
483
|
+
* Indicates that a parse error was associated with this specific node.
|
|
484
|
+
*
|
|
485
|
+
* Use the parser's `hasParseError` API instead of using this flag directly.
|
|
486
|
+
*/
|
|
487
|
+
ThisNodeHasError = 2,
|
|
488
|
+
/**
|
|
489
|
+
* Indicates that a child of this node (or one of its children,
|
|
490
|
+
* transitively) has a parse error.
|
|
491
|
+
*
|
|
492
|
+
* Use the parser's `hasParseError` API instead of using this flag directly.
|
|
493
|
+
*/
|
|
494
|
+
DescendantHasError = 4,
|
|
495
|
+
/**
|
|
496
|
+
* Indicates that a node was created synthetically and therefore may not be parented.
|
|
497
|
+
*/
|
|
498
|
+
Synthetic = 8
|
|
499
|
+
}
|
|
500
|
+
export interface BaseNode extends TextRange {
|
|
501
|
+
readonly kind: SyntaxKind;
|
|
502
|
+
readonly parent?: Node;
|
|
503
|
+
readonly directives?: readonly DirectiveExpressionNode[];
|
|
504
|
+
readonly docs?: readonly DocNode[];
|
|
505
|
+
readonly flags: NodeFlags;
|
|
506
|
+
/**
|
|
507
|
+
* Could be undefined but making this optional creates a lot of noise. In practice,
|
|
508
|
+
* you will likely only access symbol in cases where you know the node has a symbol.
|
|
509
|
+
*/
|
|
510
|
+
readonly symbol: Sym;
|
|
511
|
+
}
|
|
512
|
+
export interface TemplateDeclarationNode {
|
|
513
|
+
readonly templateParameters: readonly TemplateParameterDeclarationNode[];
|
|
514
|
+
readonly locals?: SymbolTable;
|
|
515
|
+
}
|
|
516
|
+
export type Node = TypeSpecScriptNode | JsSourceFileNode | TemplateParameterDeclarationNode | ProjectionParameterDeclarationNode | ProjectionLambdaParameterDeclarationNode | ModelPropertyNode | UnionVariantNode | OperationStatementNode | OperationSignatureDeclarationNode | OperationSignatureReferenceNode | EnumMemberNode | EnumSpreadMemberNode | ModelSpreadPropertyNode | DecoratorExpressionNode | DirectiveExpressionNode | Statement | Expression | FunctionParameterNode | Modifier | DocNode | DocContent | DocTag | ProjectionStatementItem | ProjectionExpression | ProjectionModelSelectorNode | ProjectionInterfaceSelectorNode | ProjectionOperationSelectorNode | ProjectionEnumSelectorNode | ProjectionUnionSelectorNode | ProjectionModelPropertyNode | ProjectionModelSpreadPropertyNode | ProjectionStatementNode | ProjectionNode;
|
|
517
|
+
/**
|
|
518
|
+
* Node that can be used as template
|
|
519
|
+
*/
|
|
520
|
+
export type TemplateableNode = ModelStatementNode | ScalarStatementNode | AliasStatementNode | InterfaceStatementNode | OperationStatementNode | UnionStatementNode;
|
|
521
|
+
/**
|
|
522
|
+
* Node types that can have referencable members
|
|
523
|
+
*/
|
|
524
|
+
export type MemberContainerNode = ModelStatementNode | ModelExpressionNode | InterfaceStatementNode | EnumStatementNode | UnionStatementNode;
|
|
525
|
+
export type MemberNode = ModelPropertyNode | EnumMemberNode | OperationStatementNode | UnionVariantNode;
|
|
526
|
+
export type MemberContainerType = Model | Enum | Interface | Union;
|
|
527
|
+
/**
|
|
528
|
+
* Type that can be used as members of a container type.
|
|
529
|
+
*/
|
|
530
|
+
export type MemberType = ModelProperty | EnumMember | Operation | UnionVariant;
|
|
531
|
+
export type Comment = LineComment | BlockComment;
|
|
532
|
+
export interface LineComment extends TextRange {
|
|
533
|
+
readonly kind: SyntaxKind.LineComment;
|
|
534
|
+
}
|
|
535
|
+
export interface BlockComment extends TextRange {
|
|
536
|
+
readonly kind: SyntaxKind.BlockComment;
|
|
537
|
+
}
|
|
538
|
+
export interface ParseOptions {
|
|
539
|
+
/** When true, collect comment ranges in {@link TypeSpecScriptNode.comments}. */
|
|
540
|
+
readonly comments?: boolean;
|
|
541
|
+
/** When true, parse doc comments into {@link Node.docs}. */
|
|
542
|
+
readonly docs?: boolean;
|
|
543
|
+
}
|
|
544
|
+
/** @deprecated Use TypeSpecScriptNode */
|
|
545
|
+
export type CadlScriptNode = TypeSpecScriptNode;
|
|
546
|
+
export interface TypeSpecScriptNode extends DeclarationNode, BaseNode {
|
|
547
|
+
readonly kind: SyntaxKind.TypeSpecScript;
|
|
548
|
+
readonly statements: readonly Statement[];
|
|
549
|
+
readonly file: SourceFile;
|
|
550
|
+
readonly inScopeNamespaces: readonly NamespaceStatementNode[];
|
|
551
|
+
readonly namespaces: NamespaceStatementNode[];
|
|
552
|
+
readonly usings: readonly UsingStatementNode[];
|
|
553
|
+
readonly comments: readonly Comment[];
|
|
554
|
+
readonly parseDiagnostics: readonly Diagnostic[];
|
|
555
|
+
readonly printable: boolean;
|
|
556
|
+
readonly locals: SymbolTable;
|
|
557
|
+
readonly parseOptions: ParseOptions;
|
|
558
|
+
}
|
|
559
|
+
export type Statement = ImportStatementNode | ModelStatementNode | ScalarStatementNode | NamespaceStatementNode | InterfaceStatementNode | UnionStatementNode | UsingStatementNode | EnumStatementNode | AliasStatementNode | OperationStatementNode | DecoratorDeclarationStatementNode | FunctionDeclarationStatementNode | AugmentDecoratorStatementNode | EmptyStatementNode | InvalidStatementNode | ProjectionStatementNode;
|
|
560
|
+
export interface DeclarationNode {
|
|
561
|
+
readonly id: IdentifierNode;
|
|
562
|
+
}
|
|
563
|
+
export type Declaration = ModelStatementNode | ScalarStatementNode | InterfaceStatementNode | UnionStatementNode | NamespaceStatementNode | OperationStatementNode | TemplateParameterDeclarationNode | ProjectionStatementNode | ProjectionParameterDeclarationNode | ProjectionLambdaParameterDeclarationNode | EnumStatementNode | AliasStatementNode | DecoratorDeclarationStatementNode | FunctionDeclarationStatementNode;
|
|
564
|
+
export type ScopeNode = NamespaceStatementNode | ModelStatementNode | InterfaceStatementNode | AliasStatementNode | TypeSpecScriptNode | JsSourceFileNode | ProjectionLambdaExpressionNode | ProjectionNode;
|
|
565
|
+
export interface ImportStatementNode extends BaseNode {
|
|
566
|
+
readonly kind: SyntaxKind.ImportStatement;
|
|
567
|
+
readonly path: StringLiteralNode;
|
|
568
|
+
readonly parent?: TypeSpecScriptNode;
|
|
569
|
+
}
|
|
570
|
+
export interface IdentifierNode extends BaseNode {
|
|
571
|
+
readonly kind: SyntaxKind.Identifier;
|
|
572
|
+
readonly sv: string;
|
|
573
|
+
}
|
|
574
|
+
export interface DecoratorExpressionNode extends BaseNode {
|
|
575
|
+
readonly kind: SyntaxKind.DecoratorExpression;
|
|
576
|
+
readonly target: IdentifierNode | MemberExpressionNode;
|
|
577
|
+
readonly arguments: readonly Expression[];
|
|
578
|
+
}
|
|
579
|
+
export interface AugmentDecoratorStatementNode extends BaseNode {
|
|
580
|
+
readonly kind: SyntaxKind.AugmentDecoratorStatement;
|
|
581
|
+
readonly target: IdentifierNode | MemberExpressionNode;
|
|
582
|
+
readonly targetType: TypeReferenceNode;
|
|
583
|
+
readonly arguments: readonly Expression[];
|
|
584
|
+
readonly parent?: TypeSpecScriptNode | NamespaceStatementNode;
|
|
585
|
+
}
|
|
586
|
+
export interface DirectiveExpressionNode extends BaseNode {
|
|
587
|
+
readonly kind: SyntaxKind.DirectiveExpression;
|
|
588
|
+
readonly target: IdentifierNode;
|
|
589
|
+
readonly arguments: readonly DirectiveArgument[];
|
|
590
|
+
}
|
|
591
|
+
export type DirectiveArgument = StringLiteralNode | IdentifierNode;
|
|
592
|
+
export type Expression = ArrayExpressionNode | MemberExpressionNode | ModelExpressionNode | TupleExpressionNode | UnionExpressionNode | IntersectionExpressionNode | TypeReferenceNode | IdentifierNode | StringLiteralNode | NumericLiteralNode | BooleanLiteralNode | VoidKeywordNode | NeverKeywordNode | AnyKeywordNode;
|
|
593
|
+
export type ProjectionExpression = ProjectionLogicalExpressionNode | ProjectionRelationalExpressionNode | ProjectionEqualityExpressionNode | ProjectionUnaryExpressionNode | ProjectionArithmeticExpressionNode | ProjectionCallExpressionNode | ProjectionMemberExpressionNode | ProjectionDecoratorReferenceExpressionNode | ProjectionTupleExpressionNode | ProjectionModelExpressionNode | ProjectionIfExpressionNode | ProjectionBlockExpressionNode | ProjectionLambdaExpressionNode | StringLiteralNode | NumericLiteralNode | BooleanLiteralNode | IdentifierNode | VoidKeywordNode | NeverKeywordNode | AnyKeywordNode | ReturnExpressionNode;
|
|
594
|
+
export type ReferenceExpression = TypeReferenceNode | MemberExpressionNode | IdentifierNode | VoidKeywordNode | NeverKeywordNode;
|
|
595
|
+
export interface MemberExpressionNode extends BaseNode {
|
|
596
|
+
readonly kind: SyntaxKind.MemberExpression;
|
|
597
|
+
readonly id: IdentifierNode;
|
|
598
|
+
readonly base: MemberExpressionNode | IdentifierNode;
|
|
599
|
+
}
|
|
600
|
+
export interface NamespaceStatementNode extends BaseNode, DeclarationNode {
|
|
601
|
+
readonly kind: SyntaxKind.NamespaceStatement;
|
|
602
|
+
readonly statements?: readonly Statement[] | NamespaceStatementNode;
|
|
603
|
+
readonly decorators: readonly DecoratorExpressionNode[];
|
|
604
|
+
readonly locals?: SymbolTable;
|
|
605
|
+
readonly parent?: TypeSpecScriptNode | NamespaceStatementNode;
|
|
606
|
+
}
|
|
607
|
+
export interface UsingStatementNode extends BaseNode {
|
|
608
|
+
readonly kind: SyntaxKind.UsingStatement;
|
|
609
|
+
readonly name: IdentifierNode | MemberExpressionNode;
|
|
610
|
+
readonly parent?: TypeSpecScriptNode | NamespaceStatementNode;
|
|
611
|
+
}
|
|
612
|
+
export interface OperationSignatureDeclarationNode extends BaseNode {
|
|
613
|
+
readonly kind: SyntaxKind.OperationSignatureDeclaration;
|
|
614
|
+
readonly parameters: ModelExpressionNode;
|
|
615
|
+
readonly returnType: Expression;
|
|
616
|
+
}
|
|
617
|
+
export interface OperationSignatureReferenceNode extends BaseNode {
|
|
618
|
+
readonly kind: SyntaxKind.OperationSignatureReference;
|
|
619
|
+
readonly baseOperation: TypeReferenceNode;
|
|
620
|
+
}
|
|
621
|
+
export type OperationSignature = OperationSignatureDeclarationNode | OperationSignatureReferenceNode;
|
|
622
|
+
export interface OperationStatementNode extends BaseNode, DeclarationNode, TemplateDeclarationNode {
|
|
623
|
+
readonly kind: SyntaxKind.OperationStatement;
|
|
624
|
+
readonly signature: OperationSignature;
|
|
625
|
+
readonly decorators: readonly DecoratorExpressionNode[];
|
|
626
|
+
readonly parent?: TypeSpecScriptNode | NamespaceStatementNode | InterfaceStatementNode;
|
|
627
|
+
}
|
|
628
|
+
export interface ModelStatementNode extends BaseNode, DeclarationNode, TemplateDeclarationNode {
|
|
629
|
+
readonly kind: SyntaxKind.ModelStatement;
|
|
630
|
+
readonly properties: readonly (ModelPropertyNode | ModelSpreadPropertyNode)[];
|
|
631
|
+
readonly extends?: Expression;
|
|
632
|
+
readonly is?: Expression;
|
|
633
|
+
readonly decorators: readonly DecoratorExpressionNode[];
|
|
634
|
+
readonly parent?: TypeSpecScriptNode | NamespaceStatementNode;
|
|
635
|
+
}
|
|
636
|
+
export interface ScalarStatementNode extends BaseNode, DeclarationNode, TemplateDeclarationNode {
|
|
637
|
+
readonly kind: SyntaxKind.ScalarStatement;
|
|
638
|
+
readonly extends?: TypeReferenceNode;
|
|
639
|
+
readonly decorators: readonly DecoratorExpressionNode[];
|
|
640
|
+
readonly parent?: TypeSpecScriptNode | NamespaceStatementNode;
|
|
641
|
+
}
|
|
642
|
+
export interface InterfaceStatementNode extends BaseNode, DeclarationNode, TemplateDeclarationNode {
|
|
643
|
+
readonly kind: SyntaxKind.InterfaceStatement;
|
|
644
|
+
readonly operations: readonly OperationStatementNode[];
|
|
645
|
+
readonly extends: readonly TypeReferenceNode[];
|
|
646
|
+
readonly decorators: readonly DecoratorExpressionNode[];
|
|
647
|
+
readonly parent?: TypeSpecScriptNode | NamespaceStatementNode;
|
|
648
|
+
}
|
|
649
|
+
export interface UnionStatementNode extends BaseNode, DeclarationNode, TemplateDeclarationNode {
|
|
650
|
+
readonly kind: SyntaxKind.UnionStatement;
|
|
651
|
+
readonly options: readonly UnionVariantNode[];
|
|
652
|
+
readonly decorators: readonly DecoratorExpressionNode[];
|
|
653
|
+
readonly parent?: TypeSpecScriptNode | NamespaceStatementNode;
|
|
654
|
+
}
|
|
655
|
+
export interface UnionVariantNode extends BaseNode {
|
|
656
|
+
readonly kind: SyntaxKind.UnionVariant;
|
|
657
|
+
readonly id: IdentifierNode;
|
|
658
|
+
readonly value: Expression;
|
|
659
|
+
readonly decorators: readonly DecoratorExpressionNode[];
|
|
660
|
+
readonly parent?: UnionStatementNode;
|
|
661
|
+
}
|
|
662
|
+
export interface EnumStatementNode extends BaseNode, DeclarationNode {
|
|
663
|
+
readonly kind: SyntaxKind.EnumStatement;
|
|
664
|
+
readonly members: readonly (EnumMemberNode | EnumSpreadMemberNode)[];
|
|
665
|
+
readonly decorators: readonly DecoratorExpressionNode[];
|
|
666
|
+
readonly parent?: TypeSpecScriptNode | NamespaceStatementNode;
|
|
667
|
+
}
|
|
668
|
+
export interface EnumMemberNode extends BaseNode {
|
|
669
|
+
readonly kind: SyntaxKind.EnumMember;
|
|
670
|
+
readonly id: IdentifierNode;
|
|
671
|
+
readonly value?: StringLiteralNode | NumericLiteralNode;
|
|
672
|
+
readonly decorators: readonly DecoratorExpressionNode[];
|
|
673
|
+
readonly parent?: EnumStatementNode;
|
|
674
|
+
}
|
|
675
|
+
export interface EnumSpreadMemberNode extends BaseNode {
|
|
676
|
+
readonly kind: SyntaxKind.EnumSpreadMember;
|
|
677
|
+
readonly target: TypeReferenceNode;
|
|
678
|
+
}
|
|
679
|
+
export interface AliasStatementNode extends BaseNode, DeclarationNode, TemplateDeclarationNode {
|
|
680
|
+
readonly kind: SyntaxKind.AliasStatement;
|
|
681
|
+
readonly value: Expression;
|
|
682
|
+
readonly parent?: TypeSpecScriptNode | NamespaceStatementNode;
|
|
683
|
+
}
|
|
684
|
+
export interface InvalidStatementNode extends BaseNode {
|
|
685
|
+
readonly kind: SyntaxKind.InvalidStatement;
|
|
686
|
+
readonly decorators: readonly DecoratorExpressionNode[];
|
|
687
|
+
}
|
|
688
|
+
export interface EmptyStatementNode extends BaseNode {
|
|
689
|
+
readonly kind: SyntaxKind.EmptyStatement;
|
|
690
|
+
}
|
|
691
|
+
export interface ModelExpressionNode extends BaseNode {
|
|
692
|
+
readonly kind: SyntaxKind.ModelExpression;
|
|
693
|
+
readonly properties: (ModelPropertyNode | ModelSpreadPropertyNode)[];
|
|
694
|
+
}
|
|
695
|
+
export interface ArrayExpressionNode extends BaseNode {
|
|
696
|
+
readonly kind: SyntaxKind.ArrayExpression;
|
|
697
|
+
readonly elementType: Expression;
|
|
698
|
+
}
|
|
699
|
+
export interface TupleExpressionNode extends BaseNode {
|
|
700
|
+
readonly kind: SyntaxKind.TupleExpression;
|
|
701
|
+
readonly values: readonly Expression[];
|
|
702
|
+
}
|
|
703
|
+
export interface ModelPropertyNode extends BaseNode {
|
|
704
|
+
readonly kind: SyntaxKind.ModelProperty;
|
|
705
|
+
readonly id: IdentifierNode;
|
|
706
|
+
readonly value: Expression;
|
|
707
|
+
readonly decorators: readonly DecoratorExpressionNode[];
|
|
708
|
+
readonly optional: boolean;
|
|
709
|
+
readonly default?: Expression;
|
|
710
|
+
readonly parent?: ModelStatementNode | ModelExpressionNode;
|
|
711
|
+
}
|
|
712
|
+
export interface ModelSpreadPropertyNode extends BaseNode {
|
|
713
|
+
readonly kind: SyntaxKind.ModelSpreadProperty;
|
|
714
|
+
readonly target: TypeReferenceNode;
|
|
715
|
+
readonly parent?: ModelStatementNode | ModelExpressionNode;
|
|
716
|
+
}
|
|
717
|
+
export type LiteralNode = StringLiteralNode | NumericLiteralNode | BooleanLiteralNode;
|
|
718
|
+
export interface StringLiteralNode extends BaseNode {
|
|
719
|
+
readonly kind: SyntaxKind.StringLiteral;
|
|
720
|
+
readonly value: string;
|
|
721
|
+
}
|
|
722
|
+
export interface NumericLiteralNode extends BaseNode {
|
|
723
|
+
readonly kind: SyntaxKind.NumericLiteral;
|
|
724
|
+
readonly value: number;
|
|
725
|
+
}
|
|
726
|
+
export interface BooleanLiteralNode extends BaseNode {
|
|
727
|
+
readonly kind: SyntaxKind.BooleanLiteral;
|
|
728
|
+
readonly value: boolean;
|
|
729
|
+
}
|
|
730
|
+
export interface ExternKeywordNode extends BaseNode {
|
|
731
|
+
readonly kind: SyntaxKind.ExternKeyword;
|
|
732
|
+
}
|
|
733
|
+
export interface VoidKeywordNode extends BaseNode {
|
|
734
|
+
readonly kind: SyntaxKind.VoidKeyword;
|
|
735
|
+
}
|
|
736
|
+
export interface NeverKeywordNode extends BaseNode {
|
|
737
|
+
readonly kind: SyntaxKind.NeverKeyword;
|
|
738
|
+
}
|
|
739
|
+
export interface AnyKeywordNode extends BaseNode {
|
|
740
|
+
readonly kind: SyntaxKind.UnknownKeyword;
|
|
741
|
+
}
|
|
742
|
+
export interface ReturnExpressionNode extends BaseNode {
|
|
743
|
+
readonly kind: SyntaxKind.Return;
|
|
744
|
+
readonly value: ProjectionExpression;
|
|
745
|
+
}
|
|
746
|
+
export interface UnionExpressionNode extends BaseNode {
|
|
747
|
+
readonly kind: SyntaxKind.UnionExpression;
|
|
748
|
+
readonly options: readonly Expression[];
|
|
749
|
+
}
|
|
750
|
+
export interface IntersectionExpressionNode extends BaseNode {
|
|
751
|
+
readonly kind: SyntaxKind.IntersectionExpression;
|
|
752
|
+
readonly options: readonly Expression[];
|
|
753
|
+
}
|
|
754
|
+
export interface TypeReferenceNode extends BaseNode {
|
|
755
|
+
readonly kind: SyntaxKind.TypeReference;
|
|
756
|
+
readonly target: MemberExpressionNode | IdentifierNode;
|
|
757
|
+
readonly arguments: readonly Expression[];
|
|
758
|
+
}
|
|
759
|
+
export interface ProjectionReferenceNode extends BaseNode {
|
|
760
|
+
readonly kind: SyntaxKind.ProjectionReference;
|
|
761
|
+
readonly target: MemberExpressionNode | IdentifierNode;
|
|
762
|
+
readonly arguments: readonly Expression[];
|
|
763
|
+
}
|
|
764
|
+
export interface TemplateParameterDeclarationNode extends DeclarationNode, BaseNode {
|
|
765
|
+
readonly kind: SyntaxKind.TemplateParameterDeclaration;
|
|
766
|
+
readonly constraint?: Expression;
|
|
767
|
+
readonly default?: Expression;
|
|
768
|
+
readonly parent?: TemplateableNode;
|
|
769
|
+
}
|
|
770
|
+
export declare const enum ModifierFlags {
|
|
771
|
+
None = 0,
|
|
772
|
+
Extern = 2
|
|
773
|
+
}
|
|
774
|
+
export type Modifier = ExternKeywordNode;
|
|
775
|
+
/**
|
|
776
|
+
* Represent a decorator declaration
|
|
777
|
+
* @example
|
|
778
|
+
* ```typespec
|
|
779
|
+
* extern dec doc(target: Type, value: StringLiteral);
|
|
780
|
+
* ```
|
|
781
|
+
*/
|
|
782
|
+
export interface DecoratorDeclarationStatementNode extends BaseNode, DeclarationNode {
|
|
783
|
+
readonly kind: SyntaxKind.DecoratorDeclarationStatement;
|
|
784
|
+
readonly modifiers: readonly Modifier[];
|
|
785
|
+
readonly modifierFlags: ModifierFlags;
|
|
786
|
+
/**
|
|
787
|
+
* Decorator target. First parameter.
|
|
788
|
+
*/
|
|
789
|
+
readonly target: FunctionParameterNode;
|
|
790
|
+
/**
|
|
791
|
+
* Additional parameters
|
|
792
|
+
*/
|
|
793
|
+
readonly parameters: FunctionParameterNode[];
|
|
794
|
+
readonly parent?: TypeSpecScriptNode | NamespaceStatementNode;
|
|
795
|
+
}
|
|
796
|
+
export interface FunctionParameterNode extends BaseNode {
|
|
797
|
+
readonly kind: SyntaxKind.FunctionParameter;
|
|
798
|
+
readonly id: IdentifierNode;
|
|
799
|
+
readonly type?: Expression;
|
|
800
|
+
/**
|
|
801
|
+
* Parameter defined with `?`
|
|
802
|
+
*/
|
|
803
|
+
readonly optional: boolean;
|
|
804
|
+
/**
|
|
805
|
+
* Parameter defined with `...` notation.
|
|
806
|
+
*/
|
|
807
|
+
readonly rest: boolean;
|
|
808
|
+
}
|
|
809
|
+
/**
|
|
810
|
+
* Represent a function declaration
|
|
811
|
+
* @example
|
|
812
|
+
* ```typespec
|
|
813
|
+
* extern fn camelCase(value: StringLiteral): StringLiteral;
|
|
814
|
+
* ```
|
|
815
|
+
*/
|
|
816
|
+
export interface FunctionDeclarationStatementNode extends BaseNode, DeclarationNode {
|
|
817
|
+
readonly kind: SyntaxKind.FunctionDeclarationStatement;
|
|
818
|
+
readonly modifiers: readonly Modifier[];
|
|
819
|
+
readonly modifierFlags: ModifierFlags;
|
|
820
|
+
readonly parameters: FunctionParameterNode[];
|
|
821
|
+
readonly returnType?: Expression;
|
|
822
|
+
readonly parent?: TypeSpecScriptNode | NamespaceStatementNode;
|
|
823
|
+
}
|
|
824
|
+
export interface ProjectionModelSelectorNode extends BaseNode {
|
|
825
|
+
readonly kind: SyntaxKind.ProjectionModelSelector;
|
|
826
|
+
}
|
|
827
|
+
export interface ProjectionInterfaceSelectorNode extends BaseNode {
|
|
828
|
+
readonly kind: SyntaxKind.ProjectionInterfaceSelector;
|
|
829
|
+
}
|
|
830
|
+
export interface ProjectionOperationSelectorNode extends BaseNode {
|
|
831
|
+
readonly kind: SyntaxKind.ProjectionOperationSelector;
|
|
832
|
+
}
|
|
833
|
+
export interface ProjectionUnionSelectorNode extends BaseNode {
|
|
834
|
+
readonly kind: SyntaxKind.ProjectionUnionSelector;
|
|
835
|
+
}
|
|
836
|
+
export interface ProjectionEnumSelectorNode extends BaseNode {
|
|
837
|
+
readonly kind: SyntaxKind.ProjectionEnumSelector;
|
|
838
|
+
}
|
|
839
|
+
export type ProjectionStatementItem = ProjectionExpressionStatementNode;
|
|
840
|
+
export interface ProjectionParameterDeclarationNode extends DeclarationNode, BaseNode {
|
|
841
|
+
readonly kind: SyntaxKind.ProjectionParameterDeclaration;
|
|
842
|
+
}
|
|
843
|
+
export interface ProjectionExpressionStatementNode extends BaseNode {
|
|
844
|
+
readonly kind: SyntaxKind.ProjectionExpressionStatement;
|
|
845
|
+
readonly expr: ProjectionExpression;
|
|
846
|
+
}
|
|
847
|
+
export interface ProjectionLogicalExpressionNode extends BaseNode {
|
|
848
|
+
readonly kind: SyntaxKind.ProjectionLogicalExpression;
|
|
849
|
+
readonly op: "||" | "&&";
|
|
850
|
+
readonly left: ProjectionExpression;
|
|
851
|
+
readonly right: ProjectionExpression;
|
|
852
|
+
}
|
|
853
|
+
export interface ProjectionRelationalExpressionNode extends BaseNode {
|
|
854
|
+
readonly kind: SyntaxKind.ProjectionRelationalExpression;
|
|
855
|
+
readonly op: "<=" | "<" | ">" | ">=";
|
|
856
|
+
readonly left: ProjectionExpression;
|
|
857
|
+
readonly right: ProjectionExpression;
|
|
858
|
+
}
|
|
859
|
+
export interface ProjectionEqualityExpressionNode extends BaseNode {
|
|
860
|
+
readonly kind: SyntaxKind.ProjectionEqualityExpression;
|
|
861
|
+
readonly op: "==" | "!=";
|
|
862
|
+
readonly left: ProjectionExpression;
|
|
863
|
+
readonly right: ProjectionExpression;
|
|
864
|
+
}
|
|
865
|
+
export interface ProjectionArithmeticExpressionNode extends BaseNode {
|
|
866
|
+
readonly kind: SyntaxKind.ProjectionArithmeticExpression;
|
|
867
|
+
readonly op: "+" | "-" | "*" | "/";
|
|
868
|
+
readonly left: ProjectionExpression;
|
|
869
|
+
readonly right: ProjectionExpression;
|
|
870
|
+
}
|
|
871
|
+
export interface ProjectionUnaryExpressionNode extends BaseNode {
|
|
872
|
+
readonly kind: SyntaxKind.ProjectionUnaryExpression;
|
|
873
|
+
readonly op: "!";
|
|
874
|
+
readonly target: ProjectionExpression;
|
|
875
|
+
}
|
|
876
|
+
export interface ProjectionCallExpressionNode extends BaseNode {
|
|
877
|
+
readonly kind: SyntaxKind.ProjectionCallExpression;
|
|
878
|
+
readonly callKind: "method" | "template";
|
|
879
|
+
readonly target: ProjectionExpression;
|
|
880
|
+
readonly arguments: ProjectionExpression[];
|
|
881
|
+
}
|
|
882
|
+
export interface ProjectionMemberExpressionNode extends BaseNode {
|
|
883
|
+
readonly kind: SyntaxKind.ProjectionMemberExpression;
|
|
884
|
+
readonly base: ProjectionExpression;
|
|
885
|
+
readonly id: IdentifierNode;
|
|
886
|
+
readonly selector: "." | "::";
|
|
887
|
+
}
|
|
888
|
+
export interface ProjectionModelExpressionNode extends BaseNode {
|
|
889
|
+
readonly kind: SyntaxKind.ProjectionModelExpression;
|
|
890
|
+
readonly properties: (ProjectionModelPropertyNode | ProjectionModelSpreadPropertyNode)[];
|
|
891
|
+
}
|
|
892
|
+
export interface ProjectionTupleExpressionNode extends BaseNode {
|
|
893
|
+
readonly kind: SyntaxKind.ProjectionTupleExpression;
|
|
894
|
+
readonly values: ProjectionExpression[];
|
|
895
|
+
}
|
|
896
|
+
export interface ProjectionModelPropertyNode extends BaseNode {
|
|
897
|
+
readonly kind: SyntaxKind.ProjectionModelProperty;
|
|
898
|
+
readonly id: IdentifierNode;
|
|
899
|
+
readonly value: ProjectionExpression;
|
|
900
|
+
readonly decorators: readonly DecoratorExpressionNode[];
|
|
901
|
+
readonly optional: boolean;
|
|
902
|
+
readonly default?: ProjectionExpression;
|
|
903
|
+
}
|
|
904
|
+
export interface ProjectionModelSpreadPropertyNode extends BaseNode {
|
|
905
|
+
readonly kind: SyntaxKind.ProjectionModelSpreadProperty;
|
|
906
|
+
readonly target: ProjectionExpression;
|
|
907
|
+
}
|
|
908
|
+
export interface ProjectionIfExpressionNode extends BaseNode {
|
|
909
|
+
readonly kind: SyntaxKind.ProjectionIfExpression;
|
|
910
|
+
readonly test: ProjectionExpression;
|
|
911
|
+
readonly consequent: ProjectionBlockExpressionNode;
|
|
912
|
+
readonly alternate?: ProjectionBlockExpressionNode | ProjectionIfExpressionNode;
|
|
913
|
+
}
|
|
914
|
+
export interface ProjectionBlockExpressionNode extends BaseNode {
|
|
915
|
+
readonly kind: SyntaxKind.ProjectionBlockExpression;
|
|
916
|
+
readonly statements: ProjectionStatementItem[];
|
|
917
|
+
}
|
|
918
|
+
export interface ProjectionLambdaExpressionNode extends BaseNode {
|
|
919
|
+
readonly kind: SyntaxKind.ProjectionLambdaExpression;
|
|
920
|
+
readonly parameters: ProjectionLambdaParameterDeclarationNode[];
|
|
921
|
+
readonly locals?: SymbolTable;
|
|
922
|
+
readonly body: ProjectionBlockExpressionNode;
|
|
923
|
+
}
|
|
924
|
+
export interface ProjectionLambdaParameterDeclarationNode extends DeclarationNode, BaseNode {
|
|
925
|
+
readonly kind: SyntaxKind.ProjectionLambdaParameterDeclaration;
|
|
926
|
+
}
|
|
927
|
+
export interface ProjectionNode extends BaseNode {
|
|
928
|
+
readonly kind: SyntaxKind.Projection;
|
|
929
|
+
readonly direction: "to" | "from";
|
|
930
|
+
readonly directionId: IdentifierNode;
|
|
931
|
+
readonly parameters: ProjectionParameterDeclarationNode[];
|
|
932
|
+
readonly body: ProjectionStatementItem[];
|
|
933
|
+
readonly locals?: SymbolTable;
|
|
934
|
+
}
|
|
935
|
+
export interface ProjectionStatementNode extends BaseNode, DeclarationNode {
|
|
936
|
+
readonly kind: SyntaxKind.ProjectionStatement;
|
|
937
|
+
readonly selector: ProjectionModelSelectorNode | ProjectionInterfaceSelectorNode | ProjectionOperationSelectorNode | ProjectionUnionSelectorNode | ProjectionEnumSelectorNode | MemberExpressionNode | IdentifierNode;
|
|
938
|
+
readonly to?: ProjectionNode;
|
|
939
|
+
readonly from?: ProjectionNode;
|
|
940
|
+
readonly parent?: TypeSpecScriptNode | NamespaceStatementNode;
|
|
941
|
+
}
|
|
942
|
+
export interface ProjectionDecoratorReferenceExpressionNode extends BaseNode {
|
|
943
|
+
readonly kind: SyntaxKind.ProjectionDecoratorReferenceExpression;
|
|
944
|
+
readonly target: MemberExpressionNode | IdentifierNode;
|
|
945
|
+
}
|
|
946
|
+
export interface IdentifierContext {
|
|
947
|
+
kind: IdentifierKind;
|
|
948
|
+
node: Node;
|
|
949
|
+
}
|
|
950
|
+
export declare enum IdentifierKind {
|
|
951
|
+
TypeReference = 0,
|
|
952
|
+
Decorator = 1,
|
|
953
|
+
Function = 2,
|
|
954
|
+
Using = 3,
|
|
955
|
+
Declaration = 4,
|
|
956
|
+
Other = 5
|
|
957
|
+
}
|
|
958
|
+
export interface DocNode extends BaseNode {
|
|
959
|
+
readonly kind: SyntaxKind.Doc;
|
|
960
|
+
readonly content: readonly DocContent[];
|
|
961
|
+
readonly tags: readonly DocTag[];
|
|
962
|
+
}
|
|
963
|
+
export interface DocTagBaseNode extends BaseNode {
|
|
964
|
+
readonly tagName: IdentifierNode;
|
|
965
|
+
readonly content: readonly DocContent[];
|
|
966
|
+
}
|
|
967
|
+
export type DocTag = DocReturnsTagNode | DocParamTagNode | DocTemplateTagNode | DocUnknownTagNode;
|
|
968
|
+
export type DocContent = DocTextNode;
|
|
969
|
+
export interface DocTextNode extends BaseNode {
|
|
970
|
+
readonly kind: SyntaxKind.DocText;
|
|
971
|
+
readonly text: string;
|
|
972
|
+
}
|
|
973
|
+
export interface DocReturnsTagNode extends DocTagBaseNode {
|
|
974
|
+
readonly kind: SyntaxKind.DocReturnsTag;
|
|
975
|
+
}
|
|
976
|
+
export interface DocParamTagNode extends DocTagBaseNode {
|
|
977
|
+
readonly kind: SyntaxKind.DocParamTag;
|
|
978
|
+
readonly paramName: IdentifierNode;
|
|
979
|
+
}
|
|
980
|
+
export interface DocTemplateTagNode extends DocTagBaseNode {
|
|
981
|
+
readonly kind: SyntaxKind.DocTemplateTag;
|
|
982
|
+
readonly paramName: IdentifierNode;
|
|
983
|
+
}
|
|
984
|
+
export interface DocUnknownTagNode extends DocTagBaseNode {
|
|
985
|
+
readonly kind: SyntaxKind.DocUnknownTag;
|
|
986
|
+
}
|
|
987
|
+
/**
|
|
988
|
+
* Identifies the position within a source file by line number and offset from
|
|
989
|
+
* beginning of line.
|
|
990
|
+
*/
|
|
991
|
+
export interface LineAndCharacter {
|
|
992
|
+
/** The line number. 0-based. */
|
|
993
|
+
line: number;
|
|
994
|
+
/**
|
|
995
|
+
* The offset in UTF-16 code units to the character from the beginning of the
|
|
996
|
+
* line. 0-based.
|
|
997
|
+
*
|
|
998
|
+
* NOTE: This is not necessarily the same as what a given text editor might
|
|
999
|
+
* call the "column". Tabs, combining characters, surrogate pairs, and so on
|
|
1000
|
+
* can all cause an editor to report the column differently. Indeed, different
|
|
1001
|
+
* text editors report different column numbers for the same position in a
|
|
1002
|
+
* given document.
|
|
1003
|
+
*/
|
|
1004
|
+
character: number;
|
|
1005
|
+
}
|
|
1006
|
+
export interface JsSourceFileNode extends DeclarationNode, BaseNode {
|
|
1007
|
+
readonly kind: SyntaxKind.JsSourceFile;
|
|
1008
|
+
readonly file: SourceFile;
|
|
1009
|
+
readonly esmExports: any;
|
|
1010
|
+
readonly namespaceSymbols: Sym[];
|
|
1011
|
+
}
|
|
1012
|
+
export type EmitterFunc = (context: EmitContext) => Promise<void> | void;
|
|
1013
|
+
export interface SourceFile {
|
|
1014
|
+
/** The source code text. */
|
|
1015
|
+
readonly text: string;
|
|
1016
|
+
/**
|
|
1017
|
+
* The source file path.
|
|
1018
|
+
*
|
|
1019
|
+
* This is used only for diagnostics. The command line compiler will populate
|
|
1020
|
+
* it with the actual path from which the file was read, but it can actually
|
|
1021
|
+
* be an arbitrary name for other scenarios.
|
|
1022
|
+
*/
|
|
1023
|
+
readonly path: string;
|
|
1024
|
+
/**
|
|
1025
|
+
* Array of positions in the text where each line begins. There is one entry
|
|
1026
|
+
* per line, in order of lines, and each entry represents the offset in UTF-16
|
|
1027
|
+
* code units from the start of the document to the beginning of the line.
|
|
1028
|
+
*/
|
|
1029
|
+
getLineStarts(): readonly number[];
|
|
1030
|
+
/**
|
|
1031
|
+
* Converts a one-dimensional position in the document (measured in UTF-16
|
|
1032
|
+
* code units) to line number and offset from line start.
|
|
1033
|
+
*/
|
|
1034
|
+
getLineAndCharacterOfPosition(position: number): LineAndCharacter;
|
|
1035
|
+
}
|
|
1036
|
+
export interface TextRange {
|
|
1037
|
+
/**
|
|
1038
|
+
* The starting position of the ranger measured in UTF-16 code units from the
|
|
1039
|
+
* start of the full string. Inclusive.
|
|
1040
|
+
*/
|
|
1041
|
+
readonly pos: number;
|
|
1042
|
+
/**
|
|
1043
|
+
* The ending position measured in UTF-16 code units from the start of the
|
|
1044
|
+
* full string. Exclusive.
|
|
1045
|
+
*/
|
|
1046
|
+
readonly end: number;
|
|
1047
|
+
}
|
|
1048
|
+
export interface SourceLocation extends TextRange {
|
|
1049
|
+
file: SourceFile;
|
|
1050
|
+
isSynthetic?: boolean;
|
|
1051
|
+
}
|
|
1052
|
+
export declare const NoTarget: unique symbol;
|
|
1053
|
+
export type DiagnosticTarget = Node | Type | Sym | SourceLocation;
|
|
1054
|
+
export type DiagnosticSeverity = "error" | "warning";
|
|
1055
|
+
export interface Diagnostic {
|
|
1056
|
+
code: string;
|
|
1057
|
+
severity: DiagnosticSeverity;
|
|
1058
|
+
message: string;
|
|
1059
|
+
target: DiagnosticTarget | typeof NoTarget;
|
|
1060
|
+
}
|
|
1061
|
+
/**
|
|
1062
|
+
* Return type of accessor functions in TypeSpec.
|
|
1063
|
+
* Tuple composed of:
|
|
1064
|
+
* - 0: Actual result of an accessor function
|
|
1065
|
+
* - 1: List of diagnostics that were emitted while retrieving the data.
|
|
1066
|
+
*/
|
|
1067
|
+
export type DiagnosticResult<T> = [T, readonly Diagnostic[]];
|
|
1068
|
+
export interface DirectiveBase {
|
|
1069
|
+
node: DirectiveExpressionNode;
|
|
1070
|
+
}
|
|
1071
|
+
export type Directive = SuppressDirective;
|
|
1072
|
+
export interface SuppressDirective extends DirectiveBase {
|
|
1073
|
+
name: "suppress";
|
|
1074
|
+
code: string;
|
|
1075
|
+
message: string;
|
|
1076
|
+
}
|
|
1077
|
+
export interface Dirent {
|
|
1078
|
+
isFile(): boolean;
|
|
1079
|
+
name: string;
|
|
1080
|
+
isDirectory(): boolean;
|
|
1081
|
+
}
|
|
1082
|
+
export interface RmOptions {
|
|
1083
|
+
/**
|
|
1084
|
+
* If `true`, perform a recursive directory removal. In
|
|
1085
|
+
* recursive mode, errors are not reported if `path` does not exist, and
|
|
1086
|
+
* operations are retried on failure.
|
|
1087
|
+
* @default false
|
|
1088
|
+
*/
|
|
1089
|
+
recursive?: boolean;
|
|
1090
|
+
}
|
|
1091
|
+
export interface CompilerHost {
|
|
1092
|
+
readUrl(url: string): Promise<SourceFile>;
|
|
1093
|
+
readFile(path: string): Promise<SourceFile>;
|
|
1094
|
+
/**
|
|
1095
|
+
* Optional cache to reuse the results of parsing and binding across programs.
|
|
1096
|
+
*/
|
|
1097
|
+
parseCache?: WeakMap<SourceFile, TypeSpecScriptNode>;
|
|
1098
|
+
/**
|
|
1099
|
+
* Write the file.
|
|
1100
|
+
* @param path Path to the file.
|
|
1101
|
+
* @param content Content of the file.
|
|
1102
|
+
*/
|
|
1103
|
+
writeFile(path: string, content: string): Promise<void>;
|
|
1104
|
+
/**
|
|
1105
|
+
* Read directory.
|
|
1106
|
+
* @param path Path to the directory.
|
|
1107
|
+
* @returns list of file/directory in the given directory. Returns the name not the full path.
|
|
1108
|
+
*/
|
|
1109
|
+
readDir(dir: string): Promise<string[]>;
|
|
1110
|
+
/**
|
|
1111
|
+
* Deletes a directory or file.
|
|
1112
|
+
* @param path Path to the directory or file.
|
|
1113
|
+
*/
|
|
1114
|
+
rm(path: string, options?: RmOptions): Promise<void>;
|
|
1115
|
+
/**
|
|
1116
|
+
* create directory recursively.
|
|
1117
|
+
* @param path Path to the directory.
|
|
1118
|
+
*/
|
|
1119
|
+
mkdirp(path: string): Promise<string | undefined>;
|
|
1120
|
+
getExecutionRoot(): string;
|
|
1121
|
+
getLibDirs(): string[];
|
|
1122
|
+
getJsImport(path: string): Promise<Record<string, any>>;
|
|
1123
|
+
stat(path: string): Promise<{
|
|
1124
|
+
isDirectory(): boolean;
|
|
1125
|
+
isFile(): boolean;
|
|
1126
|
+
}>;
|
|
1127
|
+
getSourceFileKind(path: string): SourceFileKind | undefined;
|
|
1128
|
+
realpath(path: string): Promise<string>;
|
|
1129
|
+
fileURLToPath(url: string): string;
|
|
1130
|
+
pathToFileURL(path: string): string;
|
|
1131
|
+
logSink: LogSink;
|
|
1132
|
+
}
|
|
1133
|
+
/**
|
|
1134
|
+
* Type of the source file that can be loaded via typespec
|
|
1135
|
+
*/
|
|
1136
|
+
export type SourceFileKind = "typespec" | "js";
|
|
1137
|
+
type UnionToIntersection<T> = (T extends any ? (k: T) => void : never) extends (k: infer I) => void ? I : never;
|
|
1138
|
+
export declare enum ListenerFlow {
|
|
1139
|
+
/**
|
|
1140
|
+
* Do not navigate any containing or referenced type.
|
|
1141
|
+
*/
|
|
1142
|
+
NoRecursion = 1
|
|
1143
|
+
}
|
|
1144
|
+
/**
|
|
1145
|
+
* Listener function. Can return false to stop recursion.
|
|
1146
|
+
*/
|
|
1147
|
+
type TypeListener<T> = (context: T) => ListenerFlow | undefined | void;
|
|
1148
|
+
type exitListener<T extends string | number | symbol> = T extends string ? `exit${T}` : T;
|
|
1149
|
+
type ListenerForType<T extends Type> = T extends Type ? {
|
|
1150
|
+
[k in Uncapitalize<T["kind"]> | exitListener<T["kind"]>]?: TypeListener<T>;
|
|
1151
|
+
} : never;
|
|
1152
|
+
export type TypeListeners = UnionToIntersection<ListenerForType<Type>>;
|
|
1153
|
+
export type SemanticNodeListener = {
|
|
1154
|
+
root?: (context: Program) => void | undefined;
|
|
1155
|
+
} & TypeListeners;
|
|
1156
|
+
export type DiagnosticReportWithoutTarget<T extends {
|
|
1157
|
+
[code: string]: DiagnosticMessages;
|
|
1158
|
+
}, C extends keyof T, M extends keyof T[C] = "default"> = {
|
|
1159
|
+
code: C;
|
|
1160
|
+
messageId?: M;
|
|
1161
|
+
} & DiagnosticFormat<T, C, M>;
|
|
1162
|
+
export type DiagnosticReport<T extends {
|
|
1163
|
+
[code: string]: DiagnosticMessages;
|
|
1164
|
+
}, C extends keyof T, M extends keyof T[C] = "default"> = DiagnosticReportWithoutTarget<T, C, M> & {
|
|
1165
|
+
target: DiagnosticTarget | typeof NoTarget;
|
|
1166
|
+
};
|
|
1167
|
+
export type DiagnosticFormat<T extends {
|
|
1168
|
+
[code: string]: DiagnosticMessages;
|
|
1169
|
+
}, C extends keyof T, M extends keyof T[C] = "default"> = T[C][M] extends CallableMessage<infer A> ? {
|
|
1170
|
+
format: Record<A[number], string>;
|
|
1171
|
+
} : Record<string, unknown>;
|
|
1172
|
+
export interface DiagnosticDefinition<M extends DiagnosticMessages> {
|
|
1173
|
+
readonly severity: "warning" | "error";
|
|
1174
|
+
readonly messages: M;
|
|
1175
|
+
}
|
|
1176
|
+
export interface DiagnosticMessages {
|
|
1177
|
+
readonly [messageId: string]: string | CallableMessage<string[]>;
|
|
1178
|
+
}
|
|
1179
|
+
export interface CallableMessage<T extends string[]> {
|
|
1180
|
+
keys: T;
|
|
1181
|
+
(dict: Record<T[number], string>): string;
|
|
1182
|
+
}
|
|
1183
|
+
export type DiagnosticMap<T extends {
|
|
1184
|
+
[code: string]: DiagnosticMessages;
|
|
1185
|
+
}> = {
|
|
1186
|
+
readonly [code in keyof T]: DiagnosticDefinition<T[code]>;
|
|
1187
|
+
};
|
|
1188
|
+
export interface DiagnosticCreator<T extends {
|
|
1189
|
+
[code: string]: DiagnosticMessages;
|
|
1190
|
+
}> {
|
|
1191
|
+
readonly type: T;
|
|
1192
|
+
readonly diagnostics: DiagnosticMap<T>;
|
|
1193
|
+
createDiagnostic<C extends keyof T, M extends keyof T[C] = "default">(diag: DiagnosticReport<T, C, M>): Diagnostic;
|
|
1194
|
+
reportDiagnostic<C extends keyof T, M extends keyof T[C] = "default">(program: Program, diag: DiagnosticReport<T, C, M>): void;
|
|
1195
|
+
}
|
|
1196
|
+
export type TypeOfDiagnostics<T extends DiagnosticMap<any>> = T extends DiagnosticMap<infer D> ? D : never;
|
|
1197
|
+
/** @deprecated Use TypeSpecLibraryDef */
|
|
1198
|
+
export type CadlLibraryDef<T extends {
|
|
1199
|
+
[code: string]: DiagnosticMessages;
|
|
1200
|
+
}, E extends Record<string, any> = Record<string, never>> = TypeSpecLibraryDef<T, E>;
|
|
1201
|
+
/**
|
|
1202
|
+
* Definition of a TypeSpec library
|
|
1203
|
+
*/
|
|
1204
|
+
export interface TypeSpecLibraryDef<T extends {
|
|
1205
|
+
[code: string]: DiagnosticMessages;
|
|
1206
|
+
}, E extends Record<string, any> = Record<string, never>> {
|
|
1207
|
+
/**
|
|
1208
|
+
* Name of the library. Must match the package.json name.
|
|
1209
|
+
*/
|
|
1210
|
+
readonly name: string;
|
|
1211
|
+
/**
|
|
1212
|
+
* Map of potential diagnostics that can be emitted in this library where the key is the diagnostic code.
|
|
1213
|
+
*/
|
|
1214
|
+
readonly diagnostics: DiagnosticMap<T>;
|
|
1215
|
+
/**
|
|
1216
|
+
* List of other library that should be imported when this is used as an emitter.
|
|
1217
|
+
* Compiler will emit an error if the libraries are not explicitly imported.
|
|
1218
|
+
*/
|
|
1219
|
+
readonly requireImports?: readonly string[];
|
|
1220
|
+
/**
|
|
1221
|
+
* Emitter configuration if library is an emitter.
|
|
1222
|
+
*/
|
|
1223
|
+
readonly emitter?: {
|
|
1224
|
+
options?: JSONSchemaType<E>;
|
|
1225
|
+
};
|
|
1226
|
+
}
|
|
1227
|
+
export type JSONSchemaType<T> = AjvJSONSchemaType<T>;
|
|
1228
|
+
export interface JSONSchemaValidator {
|
|
1229
|
+
/**
|
|
1230
|
+
* Validate the configuration against its JSON Schema.
|
|
1231
|
+
*
|
|
1232
|
+
* @param config Configuration to validate.
|
|
1233
|
+
* @param target Source file target to use for diagnostics.
|
|
1234
|
+
* @returns Diagnostics produced by schema validation of the configuration.
|
|
1235
|
+
*/
|
|
1236
|
+
validate(config: unknown, target: SourceFile | typeof NoTarget): Diagnostic[];
|
|
1237
|
+
}
|
|
1238
|
+
/** @deprecated Use TypeSpecLibrary */
|
|
1239
|
+
export type CadlLibrary<T extends {
|
|
1240
|
+
[code: string]: DiagnosticMessages;
|
|
1241
|
+
}, E extends Record<string, any> = Record<string, never>> = TypeSpecLibrary<T, E>;
|
|
1242
|
+
export interface TypeSpecLibrary<T extends {
|
|
1243
|
+
[code: string]: DiagnosticMessages;
|
|
1244
|
+
}, E extends Record<string, any> = Record<string, never>> extends TypeSpecLibraryDef<T, E> {
|
|
1245
|
+
/**
|
|
1246
|
+
* JSON Schema validator for emitter options
|
|
1247
|
+
*/
|
|
1248
|
+
readonly emitterOptionValidator?: JSONSchemaValidator;
|
|
1249
|
+
reportDiagnostic<C extends keyof T, M extends keyof T[C]>(program: Program, diag: DiagnosticReport<T, C, M>): void;
|
|
1250
|
+
createDiagnostic<C extends keyof T, M extends keyof T[C]>(diag: DiagnosticReport<T, C, M>): Diagnostic;
|
|
1251
|
+
/**
|
|
1252
|
+
* Get or create a symbol with the given name unique for that library.
|
|
1253
|
+
* @param name Symbol name scoped with the library name.
|
|
1254
|
+
*/
|
|
1255
|
+
createStateSymbol(name: string): symbol;
|
|
1256
|
+
/**
|
|
1257
|
+
* Returns a tracer scopped to the current library.
|
|
1258
|
+
* All trace area logged via this tracer will be prefixed with the library name.
|
|
1259
|
+
*/
|
|
1260
|
+
getTracer(program: Program): Tracer;
|
|
1261
|
+
}
|
|
1262
|
+
/**
|
|
1263
|
+
* Get the options for the onEmit of this library.
|
|
1264
|
+
*/
|
|
1265
|
+
export type EmitOptionsFor<C> = C extends TypeSpecLibrary<infer _T, infer E> ? E : never;
|
|
1266
|
+
export interface DecoratorContext {
|
|
1267
|
+
program: Program;
|
|
1268
|
+
/**
|
|
1269
|
+
* Point to the decorator target
|
|
1270
|
+
*/
|
|
1271
|
+
decoratorTarget: DiagnosticTarget;
|
|
1272
|
+
/**
|
|
1273
|
+
* Function that can be used to retrieve the target for a parameter at the given index.
|
|
1274
|
+
* @param paramIndex Parameter index in the typespec
|
|
1275
|
+
* @example @foo("bar", 123) -> $foo(context, target, arg0: string, arg1: number);
|
|
1276
|
+
* getArgumentTarget(0) -> target for arg0
|
|
1277
|
+
* getArgumentTarget(1) -> target for arg1
|
|
1278
|
+
*/
|
|
1279
|
+
getArgumentTarget(paramIndex: number): DiagnosticTarget | undefined;
|
|
1280
|
+
/**
|
|
1281
|
+
* Helper to call out to another decorator
|
|
1282
|
+
* @param decorator Other decorator function
|
|
1283
|
+
* @param args Args to pass to other decorator function
|
|
1284
|
+
*/
|
|
1285
|
+
call<T extends Type, A extends any[], R>(decorator: (context: DecoratorContext, target: T, ...args: A) => R, target: T, ...args: A): R;
|
|
1286
|
+
}
|
|
1287
|
+
export interface EmitContext<TOptions extends object = Record<string, never>> {
|
|
1288
|
+
/**
|
|
1289
|
+
* TypeSpec Program.
|
|
1290
|
+
*/
|
|
1291
|
+
program: Program;
|
|
1292
|
+
/**
|
|
1293
|
+
* Configured output dir for the emitter. Emitter should emit all output under that directory.
|
|
1294
|
+
*/
|
|
1295
|
+
emitterOutputDir: string;
|
|
1296
|
+
/**
|
|
1297
|
+
* Emitter custom options defined in createTypeSpecLibrary
|
|
1298
|
+
*/
|
|
1299
|
+
options: TOptions;
|
|
1300
|
+
/**
|
|
1301
|
+
* Get an asset emitter to write emitted output to disk using a TypeEmitter
|
|
1302
|
+
*
|
|
1303
|
+
* @param TypeEmitterClass The TypeEmitter to construct your emitted output
|
|
1304
|
+
*/
|
|
1305
|
+
getAssetEmitter<T>(TypeEmitterClass: typeof TypeEmitter<T, TOptions>): AssetEmitter<T, TOptions>;
|
|
1306
|
+
}
|
|
1307
|
+
export type LogLevel = "trace" | "warning" | "error";
|
|
1308
|
+
export interface LogInfo {
|
|
1309
|
+
level: LogLevel;
|
|
1310
|
+
message: string;
|
|
1311
|
+
code?: string;
|
|
1312
|
+
target?: DiagnosticTarget | typeof NoTarget;
|
|
1313
|
+
}
|
|
1314
|
+
export interface ProcessedLog {
|
|
1315
|
+
level: LogLevel;
|
|
1316
|
+
message: string;
|
|
1317
|
+
code?: string;
|
|
1318
|
+
sourceLocation?: SourceLocation;
|
|
1319
|
+
}
|
|
1320
|
+
export interface LogSink {
|
|
1321
|
+
log(log: ProcessedLog): void;
|
|
1322
|
+
}
|
|
1323
|
+
export interface Logger {
|
|
1324
|
+
trace(message: string): void;
|
|
1325
|
+
warn(message: string): void;
|
|
1326
|
+
error(message: string): void;
|
|
1327
|
+
log(log: LogInfo): void;
|
|
1328
|
+
}
|
|
1329
|
+
export interface TracerOptions {
|
|
1330
|
+
filter?: string[];
|
|
1331
|
+
}
|
|
1332
|
+
export interface Tracer {
|
|
1333
|
+
/**
|
|
1334
|
+
* Trace
|
|
1335
|
+
* @param area
|
|
1336
|
+
* @param message
|
|
1337
|
+
*/
|
|
1338
|
+
trace(area: string, message: string, target?: DiagnosticTarget): void;
|
|
1339
|
+
/**
|
|
1340
|
+
* @param area
|
|
1341
|
+
*/
|
|
1342
|
+
sub(subarea: string): Tracer;
|
|
1343
|
+
}
|
|
1344
|
+
export {};
|
|
1345
|
+
//# sourceMappingURL=types.d.ts.map
|