@typespec/compiler 1.10.0-dev.0 → 1.10.0-dev.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/dist/generated-defs/TypeSpec.Prototypes.ts-test.js +1 -1
  2. package/dist/generated-defs/TypeSpec.Prototypes.ts-test.js.map +1 -1
  3. package/dist/generated-defs/TypeSpec.ts-test.js +1 -1
  4. package/dist/generated-defs/TypeSpec.ts-test.js.map +1 -1
  5. package/dist/manifest.js +2 -2
  6. package/dist/src/core/binder.d.ts.map +1 -1
  7. package/dist/src/core/binder.js +33 -19
  8. package/dist/src/core/binder.js.map +1 -1
  9. package/dist/src/core/checker.d.ts.map +1 -1
  10. package/dist/src/core/checker.js +594 -67
  11. package/dist/src/core/checker.js.map +1 -1
  12. package/dist/src/core/cli/actions/info/emitter-options.d.ts +40 -0
  13. package/dist/src/core/cli/actions/info/emitter-options.d.ts.map +1 -0
  14. package/dist/src/core/cli/actions/info/emitter-options.js +345 -0
  15. package/dist/src/core/cli/actions/info/emitter-options.js.map +1 -0
  16. package/dist/src/core/cli/actions/info.d.ts +5 -2
  17. package/dist/src/core/cli/actions/info.d.ts.map +1 -1
  18. package/dist/src/core/cli/actions/info.js +6 -2
  19. package/dist/src/core/cli/actions/info.js.map +1 -1
  20. package/dist/src/core/cli/cli.js +43 -4
  21. package/dist/src/core/cli/cli.js.map +1 -1
  22. package/dist/src/core/helpers/string-template-utils.d.ts.map +1 -1
  23. package/dist/src/core/helpers/string-template-utils.js +7 -4
  24. package/dist/src/core/helpers/string-template-utils.js.map +1 -1
  25. package/dist/src/core/helpers/syntax-utils.d.ts.map +1 -1
  26. package/dist/src/core/helpers/syntax-utils.js +11 -3
  27. package/dist/src/core/helpers/syntax-utils.js.map +1 -1
  28. package/dist/src/core/helpers/type-name-utils.d.ts.map +1 -1
  29. package/dist/src/core/helpers/type-name-utils.js +13 -0
  30. package/dist/src/core/helpers/type-name-utils.js.map +1 -1
  31. package/dist/src/core/js-marshaller.d.ts +4 -2
  32. package/dist/src/core/js-marshaller.d.ts.map +1 -1
  33. package/dist/src/core/js-marshaller.js +96 -6
  34. package/dist/src/core/js-marshaller.js.map +1 -1
  35. package/dist/src/core/messages.d.ts +123 -32
  36. package/dist/src/core/messages.d.ts.map +1 -1
  37. package/dist/src/core/messages.js +29 -6
  38. package/dist/src/core/messages.js.map +1 -1
  39. package/dist/src/core/modifiers.d.ts +14 -0
  40. package/dist/src/core/modifiers.d.ts.map +1 -0
  41. package/dist/src/core/modifiers.js +166 -0
  42. package/dist/src/core/modifiers.js.map +1 -0
  43. package/dist/src/core/module-host.d.ts +5 -0
  44. package/dist/src/core/module-host.d.ts.map +1 -0
  45. package/dist/src/core/module-host.js +12 -0
  46. package/dist/src/core/module-host.js.map +1 -0
  47. package/dist/src/core/name-resolver.d.ts.map +1 -1
  48. package/dist/src/core/name-resolver.js +32 -0
  49. package/dist/src/core/name-resolver.js.map +1 -1
  50. package/dist/src/core/parser.d.ts.map +1 -1
  51. package/dist/src/core/parser.js +154 -101
  52. package/dist/src/core/parser.js.map +1 -1
  53. package/dist/src/core/program.d.ts.map +1 -1
  54. package/dist/src/core/program.js +5 -11
  55. package/dist/src/core/program.js.map +1 -1
  56. package/dist/src/core/scanner.d.ts +48 -48
  57. package/dist/src/core/scanner.d.ts.map +1 -1
  58. package/dist/src/core/scanner.js +55 -56
  59. package/dist/src/core/scanner.js.map +1 -1
  60. package/dist/src/core/semantic-walker.d.ts +3 -3
  61. package/dist/src/core/semantic-walker.d.ts.map +1 -1
  62. package/dist/src/core/semantic-walker.js +63 -44
  63. package/dist/src/core/semantic-walker.js.map +1 -1
  64. package/dist/src/core/source-loader.d.ts.map +1 -1
  65. package/dist/src/core/source-loader.js +4 -11
  66. package/dist/src/core/source-loader.js.map +1 -1
  67. package/dist/src/core/type-relation-checker.d.ts.map +1 -1
  68. package/dist/src/core/type-relation-checker.js +157 -10
  69. package/dist/src/core/type-relation-checker.js.map +1 -1
  70. package/dist/src/core/types.d.ts +215 -32
  71. package/dist/src/core/types.d.ts.map +1 -1
  72. package/dist/src/core/types.js +2 -0
  73. package/dist/src/core/types.js.map +1 -1
  74. package/dist/src/experimental/mutators.js +3 -3
  75. package/dist/src/experimental/mutators.js.map +1 -1
  76. package/dist/src/experimental/typekit/index.d.ts.map +1 -1
  77. package/dist/src/experimental/typekit/index.js.map +1 -1
  78. package/dist/src/formatter/print/printer.d.ts +2 -2
  79. package/dist/src/formatter/print/printer.d.ts.map +1 -1
  80. package/dist/src/formatter/print/printer.js +55 -5
  81. package/dist/src/formatter/print/printer.js.map +1 -1
  82. package/dist/src/index.d.ts +3 -2
  83. package/dist/src/index.d.ts.map +1 -1
  84. package/dist/src/index.js +2 -1
  85. package/dist/src/index.js.map +1 -1
  86. package/dist/src/lib/examples.d.ts +10 -3
  87. package/dist/src/lib/examples.d.ts.map +1 -1
  88. package/dist/src/lib/examples.js +22 -7
  89. package/dist/src/lib/examples.js.map +1 -1
  90. package/dist/src/server/compile-service.d.ts.map +1 -1
  91. package/dist/src/server/compile-service.js +12 -6
  92. package/dist/src/server/compile-service.js.map +1 -1
  93. package/dist/src/server/completion.js +1 -0
  94. package/dist/src/server/completion.js.map +1 -1
  95. package/dist/src/server/constants.d.ts +0 -5
  96. package/dist/src/server/constants.d.ts.map +1 -1
  97. package/dist/src/server/constants.js +0 -5
  98. package/dist/src/server/constants.js.map +1 -1
  99. package/dist/src/server/debug.d.ts +12 -0
  100. package/dist/src/server/debug.d.ts.map +1 -0
  101. package/dist/src/server/debug.js +49 -0
  102. package/dist/src/server/debug.js.map +1 -0
  103. package/dist/src/server/entrypoint-resolver.d.ts.map +1 -1
  104. package/dist/src/server/entrypoint-resolver.js +7 -4
  105. package/dist/src/server/entrypoint-resolver.js.map +1 -1
  106. package/dist/src/server/server-compile-manager.d.ts.map +1 -1
  107. package/dist/src/server/server-compile-manager.js +4 -7
  108. package/dist/src/server/server-compile-manager.js.map +1 -1
  109. package/dist/src/server/tmlanguage.d.ts +1 -1
  110. package/dist/src/server/tmlanguage.d.ts.map +1 -1
  111. package/dist/src/server/tmlanguage.js +39 -29
  112. package/dist/src/server/tmlanguage.js.map +1 -1
  113. package/dist/src/server/type-signature.js +19 -0
  114. package/dist/src/server/type-signature.js.map +1 -1
  115. package/dist/src/server/update-manager.d.ts.map +1 -1
  116. package/dist/src/server/update-manager.js +7 -8
  117. package/dist/src/server/update-manager.js.map +1 -1
  118. package/dist/src/utils/fs-utils.d.ts.map +1 -1
  119. package/dist/src/utils/fs-utils.js +1 -1
  120. package/dist/src/utils/fs-utils.js.map +1 -1
  121. package/dist/typespec.tmLanguage +103 -53
  122. package/lib/prototypes.tsp +2 -1
  123. package/package.json +13 -14
  124. package/templates/__snapshots__/emitter-ts/eslint.config.js +10 -1
  125. package/templates/__snapshots__/emitter-ts/package.json +1 -2
  126. package/templates/__snapshots__/emitter-ts/test/test-host.ts +7 -34
  127. package/templates/__snapshots__/library-ts/eslint.config.js +10 -1
  128. package/templates/__snapshots__/library-ts/package.json +1 -2
  129. package/templates/__snapshots__/library-ts/test/decorators.test.ts +18 -23
  130. package/templates/__snapshots__/library-ts/test/test-host.ts +5 -15
  131. package/templates/emitter-ts/eslint.config.js +10 -1
  132. package/templates/emitter-ts/package.json +1 -2
  133. package/templates/emitter-ts/test/test-host.ts.mu +7 -34
  134. package/templates/library-ts/eslint.config.js +10 -1
  135. package/templates/library-ts/package.json +1 -2
  136. package/templates/library-ts/test/decorators.test.ts.mu +18 -23
  137. package/templates/library-ts/test/test-host.ts.mu +5 -15
@@ -1 +1 @@
1
- {"version":3,"file":"type-relation-checker.js","sourceRoot":"","sources":["../../../src/core/type-relation-checker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"type-relation-checker.js","sourceRoot":"","sources":["../../../src/core/type-relation-checker.ts"],"names":[],"mappings":"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"}
@@ -26,7 +26,7 @@ export interface DecoratorApplication {
26
26
  * Use `@typespec/tspd` to generate an accurate signature from the `extern dec`
27
27
  */
28
28
  export interface DecoratorFunction {
29
- (program: DecoratorContext, target: any, ...customArgs: any[]): DecoratorValidatorCallbacks | void;
29
+ (context: DecoratorContext, target: any, ...customArgs: any[]): DecoratorValidatorCallbacks | void;
30
30
  namespace?: string;
31
31
  }
32
32
  export type ValidatorFn = () => readonly Diagnostic[];
@@ -84,7 +84,7 @@ export interface TemplatedTypeBase {
84
84
  * - Value Constraints
85
85
  */
86
86
  export type Entity = Type | Value | MixedParameterConstraint | IndeterminateEntity;
87
- export type Type = BooleanLiteral | Decorator | Enum | EnumMember | FunctionParameter | Interface | IntrinsicType | Model | ModelProperty | Namespace | NumericLiteral | Operation | Scalar | ScalarConstructor | StringLiteral | StringTemplate | StringTemplateSpan | TemplateParameter | Tuple | Union | UnionVariant;
87
+ export type Type = BooleanLiteral | Decorator | FunctionType | Enum | EnumMember | FunctionParameter | Interface | IntrinsicType | Model | ModelProperty | Namespace | NumericLiteral | Operation | Scalar | ScalarConstructor | StringLiteral | StringTemplate | StringTemplateSpan | TemplateParameter | Tuple | Union | UnionVariant;
88
88
  export type StdTypes = {
89
89
  Array: Model;
90
90
  Record: Model;
@@ -206,7 +206,7 @@ export interface ModelProperty extends BaseType, DecoratedType {
206
206
  defaultValue?: Value;
207
207
  model?: Model;
208
208
  }
209
- export type Value = ScalarValue | NumericValue | StringValue | BooleanValue | ObjectValue | ArrayValue | EnumValue | NullValue;
209
+ export type Value = ScalarValue | NumericValue | StringValue | BooleanValue | ObjectValue | ArrayValue | EnumValue | NullValue | FunctionValue;
210
210
  interface BaseValue {
211
211
  readonly entityKind: "Value";
212
212
  readonly valueKind: string;
@@ -406,6 +406,12 @@ export interface Namespace extends BaseType, DecoratedType {
406
406
  * Order is implementation-defined and may change.
407
407
  */
408
408
  decoratorDeclarations: Map<string, Decorator>;
409
+ /**
410
+ * The functions declared in the namespace.
411
+ *
412
+ * Order is implementation-defined and may change.
413
+ */
414
+ functionDeclarations: Map<string, FunctionValue>;
409
415
  }
410
416
  export type LiteralType = StringLiteral | NumericLiteral | BooleanLiteral;
411
417
  export interface StringLiteral extends BaseType {
@@ -487,25 +493,110 @@ export interface Decorator extends BaseType {
487
493
  namespace: Namespace;
488
494
  target: MixedFunctionParameter;
489
495
  parameters: MixedFunctionParameter[];
490
- implementation: (...args: unknown[]) => void;
496
+ implementation: (ctx: DecoratorContext, target: Type, ...args: unknown[]) => void;
497
+ }
498
+ /**
499
+ * The type of a Function in TypeSpec.
500
+ */
501
+ export interface FunctionType extends BaseType {
502
+ kind: "FunctionType";
503
+ /**
504
+ * The parameter constraints of the function.
505
+ */
506
+ parameters: MixedFunctionParameter[];
507
+ /**
508
+ * The return type constraint of the function.
509
+ */
510
+ returnType: MixedParameterConstraint;
511
+ }
512
+ /**
513
+ * A function (`fn`) declared in the TypeSpec program.
514
+ *
515
+ * By default, function values have very restrictive types, where the parameters have type `never`, and the return type is `unknown`.
516
+ *
517
+ * To call a function, you must assert the type of the parameters. For example, if you have a `FunctionValue` that represents
518
+ * the following TypeSpec function:
519
+ *
520
+ * ```tsp
521
+ * extern fn example(a: valueof string, b: valueof int32): valueof boolean;
522
+ * ```
523
+ *
524
+ * You can assert the parameter types in TypeScript like this:
525
+ *
526
+ * ```ts
527
+ * const exampleFn: FunctionValue = ...; // however you obtain a reference to the function value, it will be strictly typed.
528
+ *
529
+ * const assertedExampleFn = exampleFn as FunctionValue<[a: string, b: number], boolean>;
530
+ *
531
+ * // Now you can call assertedExampleFn with the correct types:
532
+ * ctx.callFunction(assertedExampleFn.implementation, "hello", 10);
533
+ * ```
534
+ */
535
+ export interface FunctionValue<Parameters extends unknown[] = never[], ReturnType = unknown> extends BaseValue {
536
+ valueKind: "Function";
537
+ node?: FunctionDeclarationStatementNode;
538
+ /**
539
+ * The function's name as declared in the TypeSpec source, if any.
540
+ */
541
+ name?: string;
542
+ /**
543
+ * The namespace in which this function was declared, if any.
544
+ */
545
+ namespace?: Namespace;
546
+ /**
547
+ * The parameters of the function.
548
+ */
549
+ parameters: MixedFunctionParameter[];
550
+ /**
551
+ * The return type constraint of the function.
552
+ */
553
+ returnType: MixedParameterConstraint;
554
+ /**
555
+ * The JavaScript implementation of the function.
556
+ *
557
+ * WARNING: Calling the implementation function directly is dangerous. It assumes that you have marshaled the arguments
558
+ * to JS values correctly and that you will handle the return value appropriately. Constructing the correct context
559
+ * is your responsibility (use the `call` methods of `FunctionContext` or `DecoratorContext` to create the context for you).
560
+ *
561
+ * @param ctx - The FunctionContext providing information about the call site.
562
+ * @param args - The arguments passed to the function.
563
+ * @returns The return value of the function, which is arbitrary.
564
+ */
565
+ implementation: (ctx: FunctionContext, ...args: Parameters) => ReturnType;
491
566
  }
492
567
  export interface FunctionParameterBase extends BaseType {
493
568
  kind: "FunctionParameter";
494
569
  node?: FunctionParameterNode;
570
+ /**
571
+ * The name of this function parameter, as declared in the TypeSpec source.
572
+ */
495
573
  name: string;
574
+ /**
575
+ * Whether this parameter is optional.
576
+ */
496
577
  optional: boolean;
578
+ /**
579
+ * Whether this parameter is a rest parameter (i.e., `...args`).
580
+ */
497
581
  rest: boolean;
498
582
  }
499
- /** Represent a function parameter that could accept types or values in the TypeSpec program. */
583
+ /**
584
+ * A function parameter with a mixed parameter constraint that could accept a value.
585
+ */
500
586
  export interface MixedFunctionParameter extends FunctionParameterBase {
501
587
  mixed: true;
502
588
  type: MixedParameterConstraint;
503
589
  }
504
- /** Represent a function parameter that represent the parameter signature(i.e the type would be the type of the value passed) */
590
+ /**
591
+ * A function parameter with a simple type constraint.
592
+ */
505
593
  export interface SignatureFunctionParameter extends FunctionParameterBase {
506
594
  mixed: false;
507
595
  type: Type;
508
596
  }
597
+ /**
598
+ * A function parameter.
599
+ */
509
600
  export type FunctionParameter = MixedFunctionParameter | SignatureFunctionParameter;
510
601
  export interface Sym {
511
602
  readonly flags: SymbolFlags;
@@ -694,6 +785,10 @@ export declare const enum SymbolFlags {
694
785
  * by this symbol is stored directly in the symbol.
695
786
  */
696
787
  LateBound = 4194304,
788
+ /**
789
+ * An internal symbol that can only be referenced from a source file in the same package.
790
+ */
791
+ Internal = 8388608,
697
792
  ExportContainer = 33024,
698
793
  /**
699
794
  * Symbols whose members will be late bound (and stored on the type)
@@ -794,7 +889,9 @@ export declare enum SyntaxKind {
794
889
  ArrayLiteral = 66,
795
890
  ConstStatement = 67,
796
891
  CallExpression = 68,
797
- ScalarConstructor = 69
892
+ ScalarConstructor = 69,
893
+ InternalKeyword = 70,
894
+ FunctionTypeExpression = 71
798
895
  }
799
896
  export declare const enum NodeFlags {
800
897
  None = 0,
@@ -901,8 +998,9 @@ export interface ParseOptions {
901
998
  /** When true, parse doc comments into {@link Node.docs}. */
902
999
  readonly docs?: boolean;
903
1000
  }
904
- export interface TypeSpecScriptNode extends DeclarationNode, BaseNode {
1001
+ export interface TypeSpecScriptNode extends BaseNode {
905
1002
  readonly kind: SyntaxKind.TypeSpecScript;
1003
+ readonly id: IdentifierNode;
906
1004
  readonly statements: readonly Statement[];
907
1005
  readonly file: SourceFile;
908
1006
  readonly inScopeNamespaces: readonly NamespaceStatementNode[];
@@ -916,9 +1014,20 @@ export interface TypeSpecScriptNode extends DeclarationNode, BaseNode {
916
1014
  }
917
1015
  export type Statement = ImportStatementNode | ModelStatementNode | ScalarStatementNode | NamespaceStatementNode | InterfaceStatementNode | UnionStatementNode | UsingStatementNode | EnumStatementNode | AliasStatementNode | OperationStatementNode | DecoratorDeclarationStatementNode | FunctionDeclarationStatementNode | AugmentDecoratorStatementNode | ConstStatementNode | CallExpressionNode | EmptyStatementNode | InvalidStatementNode;
918
1016
  export interface DeclarationNode {
1017
+ /**
1018
+ * Identifier that this node declares.
1019
+ */
919
1020
  readonly id: IdentifierNode;
1021
+ /**
1022
+ * Modifier nodes applied to this declaration.
1023
+ */
1024
+ readonly modifiers: Modifier[];
1025
+ /**
1026
+ * Combined modifier flags for this declaration.
1027
+ */
1028
+ readonly modifierFlags: ModifierFlags;
920
1029
  }
921
- export type Declaration = ModelStatementNode | ScalarStatementNode | InterfaceStatementNode | UnionStatementNode | NamespaceStatementNode | OperationStatementNode | TemplateParameterDeclarationNode | EnumStatementNode | AliasStatementNode | ConstStatementNode | DecoratorDeclarationStatementNode | FunctionDeclarationStatementNode;
1030
+ export type Declaration = Extract<Statement, DeclarationNode>;
922
1031
  export type ScopeNode = NamespaceStatementNode | ModelStatementNode | InterfaceStatementNode | AliasStatementNode | TypeSpecScriptNode | JsSourceFileNode;
923
1032
  export interface ImportStatementNode extends BaseNode {
924
1033
  readonly kind: SyntaxKind.ImportStatement;
@@ -947,7 +1056,10 @@ export interface DirectiveExpressionNode extends BaseNode {
947
1056
  readonly arguments: readonly DirectiveArgument[];
948
1057
  }
949
1058
  export type DirectiveArgument = StringLiteralNode | IdentifierNode;
950
- export type Expression = ArrayExpressionNode | MemberExpressionNode | ModelExpressionNode | ObjectLiteralNode | ArrayLiteralNode | TupleExpressionNode | UnionExpressionNode | IntersectionExpressionNode | TypeReferenceNode | ValueOfExpressionNode | TypeOfExpressionNode | CallExpressionNode | StringLiteralNode | NumericLiteralNode | BooleanLiteralNode | StringTemplateExpressionNode | VoidKeywordNode | NeverKeywordNode | AnyKeywordNode;
1059
+ export type Expression = ArrayExpressionNode | MemberExpressionNode | ModelExpressionNode | ObjectLiteralNode | ArrayLiteralNode | TupleExpressionNode | UnionExpressionNode | IntersectionExpressionNode | TypeReferenceNode | ValueOfExpressionNode | TypeOfExpressionNode | CallExpressionNode | StringLiteralNode | NumericLiteralNode | BooleanLiteralNode | StringTemplateExpressionNode | VoidKeywordNode | NeverKeywordNode | AnyKeywordNode | FunctionTypeExpressionNode;
1060
+ export type ParenthesizedExpression = Expression & {
1061
+ readonly parenthesized: true;
1062
+ };
951
1063
  export type ReferenceExpression = TypeReferenceNode | MemberExpressionNode | IdentifierNode | VoidKeywordNode | NeverKeywordNode;
952
1064
  export interface MemberExpressionNode extends BaseNode {
953
1065
  readonly kind: SyntaxKind.MemberExpression;
@@ -1153,6 +1265,9 @@ export interface StringTemplateTailNode extends StringTemplateLiteralLikeNode {
1153
1265
  export interface ExternKeywordNode extends BaseNode {
1154
1266
  readonly kind: SyntaxKind.ExternKeyword;
1155
1267
  }
1268
+ export interface InternalKeywordNode extends BaseNode {
1269
+ readonly kind: SyntaxKind.InternalKeyword;
1270
+ }
1156
1271
  export interface VoidKeywordNode extends BaseNode {
1157
1272
  readonly kind: SyntaxKind.VoidKeyword;
1158
1273
  }
@@ -1188,17 +1303,20 @@ export interface TemplateArgumentNode extends BaseNode {
1188
1303
  readonly name?: IdentifierNode;
1189
1304
  readonly argument: Expression;
1190
1305
  }
1191
- export interface TemplateParameterDeclarationNode extends DeclarationNode, BaseNode {
1306
+ export interface TemplateParameterDeclarationNode extends BaseNode {
1192
1307
  readonly kind: SyntaxKind.TemplateParameterDeclaration;
1193
1308
  readonly constraint?: Expression;
1194
1309
  readonly default?: Expression;
1195
1310
  readonly parent?: TemplateableNode;
1311
+ readonly id: IdentifierNode;
1196
1312
  }
1197
1313
  export declare const enum ModifierFlags {
1198
1314
  None = 0,
1199
- Extern = 2
1315
+ Extern = 2,
1316
+ Internal = 4,
1317
+ All = 6
1200
1318
  }
1201
- export type Modifier = ExternKeywordNode;
1319
+ export type Modifier = ExternKeywordNode | InternalKeywordNode;
1202
1320
  /**
1203
1321
  * Represent a decorator declaration
1204
1322
  * @example
@@ -1208,8 +1326,6 @@ export type Modifier = ExternKeywordNode;
1208
1326
  */
1209
1327
  export interface DecoratorDeclarationStatementNode extends BaseNode, DeclarationNode {
1210
1328
  readonly kind: SyntaxKind.DecoratorDeclarationStatement;
1211
- readonly modifiers: readonly Modifier[];
1212
- readonly modifierFlags: ModifierFlags;
1213
1329
  /**
1214
1330
  * Decorator target. First parameter.
1215
1331
  */
@@ -1234,20 +1350,32 @@ export interface FunctionParameterNode extends BaseNode {
1234
1350
  readonly rest: boolean;
1235
1351
  }
1236
1352
  /**
1237
- * Represent a function declaration
1353
+ * The syntax representing a function value declaration.
1354
+ *
1238
1355
  * @example
1239
1356
  * ```typespec
1240
- * extern fn camelCase(value: StringLiteral): StringLiteral;
1357
+ * extern fn camelCase(value: valueof string): valueof string;
1241
1358
  * ```
1242
1359
  */
1243
1360
  export interface FunctionDeclarationStatementNode extends BaseNode, DeclarationNode {
1244
1361
  readonly kind: SyntaxKind.FunctionDeclarationStatement;
1245
- readonly modifiers: readonly Modifier[];
1246
- readonly modifierFlags: ModifierFlags;
1247
1362
  readonly parameters: FunctionParameterNode[];
1248
1363
  readonly returnType?: Expression;
1249
1364
  readonly parent?: TypeSpecScriptNode | NamespaceStatementNode;
1250
1365
  }
1366
+ /**
1367
+ * The syntax representing a function type expression.
1368
+ *
1369
+ * @example
1370
+ * ```typespec
1371
+ * fn(value: valueof string) => valueof string
1372
+ * ```
1373
+ */
1374
+ export interface FunctionTypeExpressionNode extends BaseNode {
1375
+ readonly kind: SyntaxKind.FunctionTypeExpression;
1376
+ readonly parameters: FunctionParameterNode[];
1377
+ readonly returnType?: Expression;
1378
+ }
1251
1379
  export interface IdentifierContext {
1252
1380
  kind: IdentifierKind;
1253
1381
  node: Node;
@@ -1569,9 +1697,15 @@ type ListenerForType<T extends Type> = T extends Type ? {
1569
1697
  [k in Uncapitalize<T["kind"]> | exitListener<T["kind"]>]?: TypeListener<T>;
1570
1698
  } : never;
1571
1699
  export type TypeListeners = UnionToIntersection<ListenerForType<Type>>;
1700
+ type ValueListener<V> = (context: V) => ListenerFlow | undefined | void;
1701
+ type exitValueListener<T extends string | number | symbol> = T extends string ? `exit${T}` : T;
1702
+ type ListenerForValue<V extends Value> = V extends Value ? {
1703
+ [k in Uncapitalize<V["valueKind"]> | exitValueListener<V["valueKind"]>]?: ValueListener<V>;
1704
+ } : never;
1705
+ export type ValueListeners = UnionToIntersection<ListenerForValue<Value>>;
1572
1706
  export type SemanticNodeListener = {
1573
1707
  root?: (context: Program) => void | undefined;
1574
- } & TypeListeners;
1708
+ } & TypeListeners & ValueListeners;
1575
1709
  export type DiagnosticReportWithoutTarget<T extends {
1576
1710
  [code: string]: DiagnosticMessages;
1577
1711
  }, C extends keyof T, M extends keyof T[C] = "default"> = {
@@ -1695,6 +1829,11 @@ export interface DecoratorImplementations {
1695
1829
  readonly [name: string]: DecoratorFunction;
1696
1830
  };
1697
1831
  }
1832
+ export interface FunctionImplementations {
1833
+ readonly [namespace: string]: {
1834
+ readonly [name: string]: (ctx: FunctionContext, ...parameters: never[]) => unknown;
1835
+ };
1836
+ }
1698
1837
  export interface PackageFlags {
1699
1838
  }
1700
1839
  export interface LinterDefinition {
@@ -1788,27 +1927,71 @@ export interface TypeSpecLibrary<T extends {
1788
1927
  * Get the options for the onEmit of this library.
1789
1928
  */
1790
1929
  export type EmitOptionsFor<C> = C extends TypeSpecLibrary<infer _T, infer E> ? E : never;
1791
- export interface DecoratorContext {
1930
+ /**
1931
+ * Base context passed to JavaScript implementations of invocable constructs (decorators, functions).
1932
+ */
1933
+ export interface InvocationContext {
1934
+ /**
1935
+ * The current TypeSpec Program.
1936
+ */
1792
1937
  program: Program;
1793
1938
  /**
1794
- * Point to the decorator target
1939
+ * Helper to get the target for a given argument index.
1940
+ *
1941
+ * @param argIndex Argument index in the decorator call.
1942
+ * @example
1943
+ * ```tsp
1944
+ * @dec("hello", 123)
1945
+ * model MyModel { }
1946
+ * ```
1947
+ * - `getArgumentTarget(0)` -> target for "hello"
1948
+ * - `getArgumentTarget(1)` -> target for 123
1795
1949
  */
1796
- decoratorTarget: DiagnosticTarget;
1950
+ getArgumentTarget(argIndex: number): DiagnosticTarget | undefined;
1951
+ /**
1952
+ * Helper to call a decorator implementation from within another decorator implementation.
1953
+ *
1954
+ * @param decorator The decorator function to call.
1955
+ * @param target The target to which the decorator is applied.
1956
+ * @param args Arguments to pass to the decorator.
1957
+ */
1958
+ callDecorator<T extends Type, A extends any[], R>(decorator: (context: DecoratorContext, target: T, ...args: A) => R, target: T, ...args: A): R;
1959
+ /**
1960
+ * Helper to call a function implementation from within a decorator implementation.
1961
+ * @param func The function implementation to call.
1962
+ * @param args Arguments to pass to the function.
1963
+ */
1964
+ callFunction<A extends any[], R>(func: (context: FunctionContext, ...args: A) => R, ...args: A): R;
1965
+ }
1966
+ /**
1967
+ * Context passed to decorator implementations.
1968
+ */
1969
+ export interface DecoratorContext extends InvocationContext {
1970
+ program: Program;
1797
1971
  /**
1798
- * Function that can be used to retrieve the target for a parameter at the given index.
1799
- * @param paramIndex Parameter index in the typespec
1800
- * @example @foo("bar", 123) -> $foo(context, target, arg0: string, arg1: number);
1801
- * getArgumentTarget(0) -> target for arg0
1802
- * getArgumentTarget(1) -> target for arg1
1972
+ * The diagnostic target for the decorator application.
1803
1973
  */
1804
- getArgumentTarget(paramIndex: number): DiagnosticTarget | undefined;
1974
+ decoratorTarget: DiagnosticTarget;
1805
1975
  /**
1806
- * Helper to call out to another decorator
1807
- * @param decorator Other decorator function
1808
- * @param args Args to pass to other decorator function
1976
+ * Helper to call a decorator implementation from within another decorator implementation.
1977
+ *
1978
+ * This function is identical to `callDecorator`.
1979
+ *
1980
+ * @param decorator The decorator function to call.
1981
+ * @param target The target to which the decorator is applied.
1982
+ * @param args Arguments to pass to the decorator.
1809
1983
  */
1810
1984
  call<T extends Type, A extends any[], R>(decorator: (context: DecoratorContext, target: T, ...args: A) => R, target: T, ...args: A): R;
1811
1985
  }
1986
+ /**
1987
+ * Context passed to function implementations.
1988
+ */
1989
+ export interface FunctionContext extends InvocationContext {
1990
+ /**
1991
+ * The function call diagnostic target.
1992
+ */
1993
+ functionCallTarget: DiagnosticTarget;
1994
+ }
1812
1995
  export interface EmitContext<TOptions extends object = Record<string, never>> {
1813
1996
  /**
1814
1997
  * TypeSpec Program.