@hey-api/openapi-ts 0.89.0 → 0.89.2

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.
@@ -1,5 +1,5 @@
1
- import { AnalysisContext, File, FromRef, IProject, Language, NameConflictResolver, Node, Project, Ref, Refs, RenderContext, Renderer, Symbol, SymbolIdentifier, SymbolIn, SymbolMeta } from "@hey-api/codegen-core";
2
- import * as typescript0 from "typescript";
1
+ import * as _hey_api_codegen_core0 from "@hey-api/codegen-core";
2
+ import { AnalysisContext, AstContext, File, FromRef, IProject, Language, NameConflictResolver, Node, Project, Ref, Refs, RenderContext, Renderer, Symbol, SymbolIdentifier, SymbolIn, SymbolMeta } from "@hey-api/codegen-core";
3
3
  import ts from "typescript";
4
4
  import { RangeOptions, SemVer } from "semver";
5
5
  import { HttpClient, HttpErrorResponse, HttpHeaders, HttpRequest, HttpResponse } from "@angular/common/http";
@@ -36,12 +36,20 @@ type LazyOrAsync<T> = T | (() => T) | (() => Promise<T>);
36
36
  type MaybeArray<T> = T | ReadonlyArray<T>;
37
37
  //#endregion
38
38
  //#region src/openApi/3.1.x/types/spec.d.ts
39
+ /**
40
+ * OpenAPI Specification Extensions.
41
+ *
42
+ * See {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#specification-extensions Specification Extensions}.
43
+ */
44
+ interface SpecificationExtensions$2 {
45
+ [extension: `x-${string}`]: unknown;
46
+ }
39
47
  /**
40
48
  * This is the root object of the {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#openapi-document OpenAPI document}.
41
49
  *
42
50
  * This object MAY be extended with {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#specification-extensions Specification Extensions}.
43
51
  */
44
- interface OpenApiV3_1_X {
52
+ interface OpenApiV3_1_X extends SpecificationExtensions$2 {
45
53
  /**
46
54
  * An element to hold various schemas for the document.
47
55
  */
@@ -164,11 +172,11 @@ interface OpenApiV3_1_X {
164
172
  * description: callback successfully processed
165
173
  * ```
166
174
  */
167
- interface CallbackObject$1 {
175
+ interface CallbackObject$1 extends SpecificationExtensions$2 {
168
176
  /**
169
177
  * A Path Item Object, or a reference to one, used to define a callback request and expected responses. A {@link https://github.com/OAI/OpenAPI-Specification/blob/main/examples/v3.0/callback-example.yaml complete example} is available.
170
178
  */
171
- [expression: string]: PathItemObject$2 | ReferenceObject$1;
179
+ [expression: string]: PathItemObject$2 | ReferenceObject$1 | unknown;
172
180
  }
173
181
  /**
174
182
  * Holds a set of reusable objects for different aspects of the OAS. All objects defined within the components object will have no effect on the API unless they are explicitly referenced from properties outside the components object.
@@ -259,7 +267,7 @@ interface CallbackObject$1 {
259
267
  * read:pets: read your pets
260
268
  * ```
261
269
  */
262
- interface ComponentsObject$1 {
270
+ interface ComponentsObject$1 extends SpecificationExtensions$2 {
263
271
  /**
264
272
  * An object to hold reusable {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#callback-object Callback Objects}.
265
273
  */
@@ -313,7 +321,7 @@ interface ComponentsObject$1 {
313
321
  * email: support@example.com
314
322
  * ```
315
323
  */
316
- interface ContactObject$2 {
324
+ interface ContactObject$2 extends SpecificationExtensions$2 {
317
325
  /**
318
326
  * The email address of the contact person/organization. This MUST be in the form of an email address.
319
327
  */
@@ -453,7 +461,7 @@ interface ContactObject$2 {
453
461
  *
454
462
  * will map to `Dog` because of the definition in the `mapping` element.
455
463
  */
456
- interface DiscriminatorObject$1 {
464
+ interface DiscriminatorObject$1 extends SpecificationExtensions$2 {
457
465
  /**
458
466
  * An object to hold mappings between payload values and schema names or references.
459
467
  */
@@ -504,7 +512,7 @@ interface DiscriminatorObject$1 {
504
512
  * type: integer
505
513
  * ```
506
514
  */
507
- interface EncodingObject$1 {
515
+ interface EncodingObject$1 extends SpecificationExtensions$2 {
508
516
  /**
509
517
  * Determines whether the parameter value SHOULD allow reserved characters, as defined by {@link https://tools.ietf.org/html/rfc3986#section-2.2 RFC3986} `:/?#[]@!$&'()*+,;=` to be included without percent-encoding. The default value is `false`. This property SHALL be ignored if the request body media type is not `application/x-www-form-urlencoded` or `multipart/form-data`. If a value is explicitly defined, then the value of {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#encodingContentType `contentType`} (implicit or explicit) SHALL be ignored.
510
518
  */
@@ -592,7 +600,7 @@ interface EncodingObject$1 {
592
600
  * $ref: '#/components/examples/confirmation-success'
593
601
  * ```
594
602
  */
595
- interface ExampleObject$2 {
603
+ interface ExampleObject$2 extends SpecificationExtensions$2 {
596
604
  /**
597
605
  * Long description for the example. {@link https://spec.commonmark.org/ CommonMark syntax} MAY be used for rich text representation.
598
606
  */
@@ -621,7 +629,7 @@ interface ExampleObject$2 {
621
629
  * url: https://example.com
622
630
  * ```
623
631
  */
624
- interface ExternalDocumentationObject$2 {
632
+ interface ExternalDocumentationObject$2 extends SpecificationExtensions$2 {
625
633
  /**
626
634
  * A description of the target documentation. {@link https://spec.commonmark.org/ CommonMark syntax} MAY be used for rich text representation.
627
635
  */
@@ -667,7 +675,7 @@ type HeaderObject$2 = Omit<ParameterObject, 'in' | 'name'>;
667
675
  * version: 1.0.1
668
676
  * ```
669
677
  */
670
- interface InfoObject {
678
+ interface InfoObject extends SpecificationExtensions$2 {
671
679
  /**
672
680
  * The contact information for the exposed API.
673
681
  */
@@ -708,7 +716,7 @@ interface InfoObject {
708
716
  * identifier: Apache-2.0
709
717
  * ```
710
718
  */
711
- interface LicenseObject$2 {
719
+ interface LicenseObject$2 extends SpecificationExtensions$2 {
712
720
  /**
713
721
  * An {@link https://spdx.org/licenses/ SPDX} license expression for the API. The `identifier` field is mutually exclusive of the `url` field.
714
722
  */
@@ -869,7 +877,7 @@ interface LicenseObject$2 {
869
877
  *
870
878
  * Runtime expressions preserve the type of the referenced value. Expressions can be embedded into string values by surrounding the expression with `{}` curly braces.
871
879
  */
872
- interface LinkObject$1 {
880
+ interface LinkObject$1 extends SpecificationExtensions$2 {
873
881
  /**
874
882
  * A description of the link. {@link https://spec.commonmark.org/ CommonMark syntax} MAY be used for rich text representation.
875
883
  */
@@ -928,7 +936,7 @@ interface LinkObject$1 {
928
936
  * $ref: "#/components/examples/frog-example"
929
937
  * ```
930
938
  */
931
- interface MediaTypeObject$1 {
939
+ interface MediaTypeObject$1 extends SpecificationExtensions$2 {
932
940
  /**
933
941
  * A map between a property name and its encoding information. The key, being the property name, MUST exist in the schema as a property. The encoding object SHALL only apply to `requestBody` objects when the media type is `multipart` or `application/x-www-form-urlencoded`.
934
942
  */
@@ -969,7 +977,7 @@ interface MediaTypeObject$1 {
969
977
  * read:pets: read your pets
970
978
  * ```
971
979
  */
972
- interface OAuthFlowObject$1 {
980
+ interface OAuthFlowObject$1 extends SpecificationExtensions$2 {
973
981
  /**
974
982
  * **REQUIRED (`"implicit"`, `"authorizationCode"`)**. The authorization URL to be used for this flow. This MUST be in the form of a URL. The OAuth2 standard requires the use of TLS.
975
983
  */
@@ -992,7 +1000,7 @@ interface OAuthFlowObject$1 {
992
1000
  *
993
1001
  * This object MAY be extended with {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#specification-extensions Specification Extensions}.
994
1002
  */
995
- interface OAuthFlowsObject$1 {
1003
+ interface OAuthFlowsObject$1 extends SpecificationExtensions$2 {
996
1004
  /**
997
1005
  * Configuration for the OAuth Authorization Code flow. Previously called `accessCode` in OpenAPI 2.0.
998
1006
  */
@@ -1059,7 +1067,7 @@ interface OAuthFlowsObject$1 {
1059
1067
  * - read:pets
1060
1068
  * ```
1061
1069
  */
1062
- interface OperationObject {
1070
+ interface OperationObject extends SpecificationExtensions$2 {
1063
1071
  /**
1064
1072
  * A map of possible out-of band callbacks related to the parent operation. The key is a unique identifier for the Callback Object. Each value in the map is a {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#callback-object Callback Object} that describes a request that may be initiated by the API provider and the expected responses.
1065
1073
  */
@@ -1206,7 +1214,7 @@ interface OperationObject {
1206
1214
  * type: number
1207
1215
  * ```
1208
1216
  */
1209
- interface ParameterObject {
1217
+ interface ParameterObject extends SpecificationExtensions$2 {
1210
1218
  /**
1211
1219
  * Sets the ability to pass empty-valued parameters. This is valid only for `query` parameters and allows sending a parameter with an empty value. Default value is `false`. If {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#parameterStyle `style`} is used, and if behavior is `n/a` (cannot be serialized), the value of `allowEmptyValue` SHALL be ignored. Use of this property is NOT RECOMMENDED, as it is likely to be removed in a later revision.
1212
1220
  */
@@ -1301,7 +1309,7 @@ interface ParameterObject {
1301
1309
  * style: simple
1302
1310
  * ```
1303
1311
  */
1304
- interface PathItemObject$2 {
1312
+ interface PathItemObject$2 extends SpecificationExtensions$2 {
1305
1313
  /**
1306
1314
  * Allows for a referenced definition of this path item. The referenced structure MUST be in the form of a {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#path-item-object Path Item Object}. In case a Path Item Object field appears both in the defined object and the referenced object, the behavior is undefined. See the rules for resolving {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#relative-references-in-uris Relative References}.
1307
1315
  */
@@ -1400,7 +1408,7 @@ interface PathItemObject$2 {
1400
1408
  * $ref: '#/components/schemas/pet'
1401
1409
  * ```
1402
1410
  */
1403
- interface PathsObject$2 {
1411
+ interface PathsObject$2 extends SpecificationExtensions$2 {
1404
1412
  /**
1405
1413
  * A relative path to an individual endpoint. The field name MUST begin with a forward slash (`/`). The path is **appended** (no relative URL resolution) to the expanded URL from the {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#server-object `Server Object`}'s `url` field in order to construct the full URL. {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#path-templating Path templating} is allowed. When matching URLs, concrete (non-templated) paths would be matched before their templated counterparts. Templated paths with the same hierarchy but different templated names MUST NOT exist as they are identical. In case of ambiguous matching, it's up to the tooling to decide which one to use.
1406
1414
  */
@@ -1503,7 +1511,7 @@ interface ReferenceObject$1 {
1503
1511
  * type: string
1504
1512
  * ```
1505
1513
  */
1506
- interface RequestBodyObject {
1514
+ interface RequestBodyObject extends SpecificationExtensions$2 {
1507
1515
  /**
1508
1516
  * **REQUIRED**. The content of the request body. The key is a media type or {@link https://tools.ietf.org/html/rfc7231#appendix-D media type range} and the value describes it. For requests that match multiple keys, only the most specific key is applicable. e.g. text/plain overrides text/*
1509
1517
  */
@@ -1578,7 +1586,7 @@ interface RequestBodyObject {
1578
1586
  * description: object created
1579
1587
  * ```
1580
1588
  */
1581
- interface ResponseObject {
1589
+ interface ResponseObject extends SpecificationExtensions$2 {
1582
1590
  /**
1583
1591
  * A map containing descriptions of potential response payloads. The key is a media type or {@link https://datatracker.ietf.org/doc/html/rfc7231#appendix-D media type range} and the value describes it. For responses that match multiple keys, only the most specific key is applicable. e.g. text/plain overrides text/*
1584
1592
  */
@@ -1625,11 +1633,11 @@ interface ResponseObject {
1625
1633
  * $ref: '#/components/schemas/ErrorModel'
1626
1634
  * ```
1627
1635
  */
1628
- interface ResponsesObject$2 {
1636
+ interface ResponsesObject$2 extends SpecificationExtensions$2 {
1629
1637
  /**
1630
1638
  * Any {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#http-status-codes HTTP status code} can be used as the property name, but only one property per code, to describe the expected response for that HTTP status code. This field MUST be enclosed in quotation marks (for example, "200") for compatibility between JSON and YAML. To define a range of response codes, this field MAY contain the uppercase wildcard character `X`. For example, `2XX` represents all response codes between `[200-299]`. Only the following range definitions are allowed: `1XX`, `2XX`, `3XX`, `4XX`, and `5XX`. If a response is defined using an explicit code, the explicit code definition takes precedence over the range definition for that code.
1631
1639
  */
1632
- [httpStatusCode: string]: ResponseObject | ReferenceObject$1 | undefined;
1640
+ [httpStatusCode: string]: ResponseObject | ReferenceObject$1 | undefined | unknown;
1633
1641
  /**
1634
1642
  * The documentation of responses other than the ones declared for specific HTTP response codes. Use this field to cover undeclared responses.
1635
1643
  */
@@ -1659,7 +1667,7 @@ interface ResponsesObject$2 {
1659
1667
  *
1660
1668
  * This object MAY be extended with {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#specification-extensions Specification Extensions}, though as noted, additional properties MAY omit the `x-` prefix within this object.
1661
1669
  */
1662
- type SchemaObject = JsonSchemaDraft2020_12;
1670
+ type SchemaObject = JsonSchemaDraft2020_12 & SpecificationExtensions$2;
1663
1671
  /**
1664
1672
  * Lists the required security schemes to execute this operation. The name used for each property MUST correspond to a security scheme declared in the {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#componentsSecuritySchemes Security Schemes} under the {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#components-object Components Object}.
1665
1673
  *
@@ -1744,7 +1752,7 @@ interface SecurityRequirementObject$2 {
1744
1752
  * read:pets: read your pets
1745
1753
  * ```
1746
1754
  */
1747
- type SecuritySchemeObject$2 = {
1755
+ type SecuritySchemeObject$2 = SpecificationExtensions$2 & {
1748
1756
  /**
1749
1757
  * A description for security scheme. {@link https://spec.commonmark.org/ CommonMark syntax} MAY be used for rich text representation.
1750
1758
  */
@@ -1810,7 +1818,7 @@ type SecuritySchemeObject$2 = {
1810
1818
  * description: Development server
1811
1819
  * ```
1812
1820
  */
1813
- interface ServerObject$1 {
1821
+ interface ServerObject$1 extends SpecificationExtensions$2 {
1814
1822
  /**
1815
1823
  * An optional string describing the host designated by the URL. {@link https://spec.commonmark.org/ CommonMark syntax} MAY be used for rich text representation.
1816
1824
  */
@@ -1829,7 +1837,7 @@ interface ServerObject$1 {
1829
1837
  *
1830
1838
  * This object MAY be extended with {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#specification-extensions Specification Extensions}.
1831
1839
  */
1832
- interface ServerVariableObject$1 {
1840
+ interface ServerVariableObject$1 extends SpecificationExtensions$2 {
1833
1841
  /**
1834
1842
  * **REQUIRED**. The default value to use for substitution, which SHALL be sent if an alternate value is _not_ supplied. Note this behavior is different than the {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#schema-object Schema Object's} treatment of default values, because in those cases parameter values are optional. If the {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#serverVariableEnum `enum`} is defined, the value MUST exist in the enum's values.
1835
1843
  */
@@ -1854,7 +1862,7 @@ interface ServerVariableObject$1 {
1854
1862
  * description: Pets operations
1855
1863
  * ```
1856
1864
  */
1857
- interface TagObject$2 {
1865
+ interface TagObject$2 extends SpecificationExtensions$2 {
1858
1866
  /**
1859
1867
  * A description for the tag. {@link https://spec.commonmark.org/ CommonMark syntax} MAY be used for rich text representation.
1860
1868
  */
@@ -2060,7 +2068,7 @@ interface TagObject$2 {
2060
2068
  * </aliens>
2061
2069
  * ```
2062
2070
  */
2063
- interface XMLObject$2 {
2071
+ interface XMLObject$2 extends SpecificationExtensions$2 {
2064
2072
  /**
2065
2073
  * Declares whether the property definition translates to an attribute instead of an element. Default value is `false`.
2066
2074
  */
@@ -2107,7 +2115,7 @@ interface OpenApiSchemaExtensions {
2107
2115
  //#endregion
2108
2116
  //#region src/openApi/3.1.x/types/json-schema-draft-2020-12.d.ts
2109
2117
  // TODO: left out some keywords related to structuring a complex schema and declaring a dialect
2110
- interface JsonSchemaDraft2020_12 extends ArrayKeywords, NumberKeywords, ObjectKeywords, StringKeywords, EnumExtensions, OpenApiSchemaExtensions {
2118
+ interface JsonSchemaDraft2020_12 extends ArrayKeywords, NumberKeywords, ObjectKeywords, StringKeywords, EnumExtensions, OpenApiSchemaExtensions, SpecificationExtensions$2 {
2111
2119
  /**
2112
2120
  * The `$comment` {@link https://json-schema.org/learn/glossary#keyword keyword} is strictly intended for adding comments to a schema. Its value must always be a string. Unlike the annotations `title`, `description`, and `examples`, JSON schema {@link https://json-schema.org/learn/glossary#implementation implementations} aren't allowed to attach any meaning or behavior to it whatsoever, and may even strip them at any time. Therefore, they are useful for leaving notes to future editors of a JSON schema, but should not be used to communicate to users of the schema.
2113
2121
  */
@@ -2432,6 +2440,14 @@ type JsonSchemaTypes$1 = 'array' | 'boolean' | 'integer' | 'null' | 'number' | '
2432
2440
  type IRMediaType = 'form-data' | 'json' | 'text' | 'url-search-params' | 'octet-stream';
2433
2441
  //#endregion
2434
2442
  //#region src/ir/types.d.ts
2443
+ /**
2444
+ * OpenAPI Specification Extensions.
2445
+ *
2446
+ * See {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#specification-extensions Specification Extensions}.
2447
+ */
2448
+ interface SpecificationExtensions$1 {
2449
+ [extension: `x-${string}`]: unknown;
2450
+ }
2435
2451
  interface IRBodyObject {
2436
2452
  mediaType: string;
2437
2453
  /**
@@ -2448,7 +2464,7 @@ interface IRComponentsObject {
2448
2464
  requestBodies?: Record<string, IRRequestBodyObject>;
2449
2465
  schemas?: Record<string, IRSchemaObject>;
2450
2466
  }
2451
- interface IROperationObject {
2467
+ interface IROperationObject extends SpecificationExtensions$1 {
2452
2468
  body?: IRBodyObject;
2453
2469
  deprecated?: boolean;
2454
2470
  description?: string;
@@ -2469,7 +2485,7 @@ interface IRParametersObject {
2469
2485
  path?: Record<string, IRParameterObject>;
2470
2486
  query?: Record<string, IRParameterObject>;
2471
2487
  }
2472
- interface IRParameterObject extends Pick<JsonSchemaDraft2020_12, 'deprecated' | 'description'> {
2488
+ interface IRParameterObject extends Pick<JsonSchemaDraft2020_12, 'deprecated' | 'description'>, SpecificationExtensions$1 {
2473
2489
  /**
2474
2490
  * Determines whether the parameter value SHOULD allow reserved characters, as defined by RFC3986 `:/?#[]@!$&'()*+,;=` to be included without percent-encoding. The default value is `false`. This property SHALL be ignored if the request body media type is not `application/x-www-form-urlencoded` or `multipart/form-data`. If a value is explicitly defined, then the value of `contentType` (implicit or explicit) SHALL be ignored.
2475
2491
  */
@@ -2527,7 +2543,7 @@ interface IRResponseObject {
2527
2543
  mediaType?: string;
2528
2544
  schema: IRSchemaObject;
2529
2545
  }
2530
- interface IRSchemaObject extends Pick<JsonSchemaDraft2020_12, '$ref' | 'const' | 'default' | 'deprecated' | 'description' | 'exclusiveMaximum' | 'exclusiveMinimum' | 'maximum' | 'maxItems' | 'maxLength' | 'minimum' | 'minItems' | 'minLength' | 'pattern' | 'required' | 'title' | 'example'> {
2546
+ interface IRSchemaObject extends Pick<JsonSchemaDraft2020_12, '$ref' | 'const' | 'default' | 'deprecated' | 'description' | 'exclusiveMaximum' | 'exclusiveMinimum' | 'maximum' | 'maxItems' | 'maxLength' | 'minimum' | 'minItems' | 'minLength' | 'pattern' | 'required' | 'title' | 'example'>, SpecificationExtensions$1 {
2531
2547
  /**
2532
2548
  * If the schema is intended to be used as an object property, it can be
2533
2549
  * marked as read-only or write-only. This value controls whether the schema
@@ -2556,6 +2572,11 @@ interface IRSchemaObject extends Pick<JsonSchemaDraft2020_12, '$ref' | 'const' |
2556
2572
  * @default 'or'
2557
2573
  */
2558
2574
  logicalOperator?: 'and' | 'or';
2575
+ /**
2576
+ * When used with `$ref` or `symbolRef`, specifies properties to omit from the referenced schema.
2577
+ * Useful for handling discriminator property conflicts in allOf compositions.
2578
+ */
2579
+ omit?: ReadonlyArray<string>;
2559
2580
  /**
2560
2581
  * When type is `object`, `patternProperties` can be used to define a schema
2561
2582
  * for properties that match a specific regex pattern.
@@ -5617,12 +5638,20 @@ interface OpenApiV2_0_XTypes {
5617
5638
  }
5618
5639
  //#endregion
5619
5640
  //#region src/openApi/3.0.x/types/spec.d.ts
5641
+ /**
5642
+ * OpenAPI Specification Extensions.
5643
+ *
5644
+ * See {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#specification-extensions Specification Extensions}.
5645
+ */
5646
+ interface SpecificationExtensions {
5647
+ [extension: `x-${string}`]: unknown;
5648
+ }
5620
5649
  /**
5621
5650
  * This is the root object of the {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#openapi-description OpenAPI Description}.
5622
5651
  *
5623
5652
  * This object MAY be extended with {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#specification-extensions Specification Extensions}.
5624
5653
  */
5625
- interface OpenApiV3_0_X {
5654
+ interface OpenApiV3_0_X extends SpecificationExtensions {
5626
5655
  /**
5627
5656
  * An element to hold various Objects for the OpenAPI Description.
5628
5657
  */
@@ -5663,11 +5692,11 @@ interface OpenApiV3_0_X {
5663
5692
  *
5664
5693
  * TODO: examples
5665
5694
  */
5666
- interface CallbackObject {
5695
+ interface CallbackObject extends SpecificationExtensions {
5667
5696
  /**
5668
5697
  * A Path Item Object used to define a callback request and expected responses. A {@link https://learn.openapis.org/examples/v3.0/callback-example.html complete example} is available.
5669
5698
  */
5670
- [expression: string]: PathItemObject | ReferenceObject$2;
5699
+ [expression: string]: PathItemObject | ReferenceObject$2 | unknown;
5671
5700
  }
5672
5701
  /**
5673
5702
  * Holds a set of reusable objects for different aspects of the OAS. All objects defined within the Components Object will have no effect on the API unless they are explicitly referenced from outside the Components Object.
@@ -5678,7 +5707,7 @@ interface CallbackObject {
5678
5707
  *
5679
5708
  * TODO: examples
5680
5709
  */
5681
- interface ComponentsObject {
5710
+ interface ComponentsObject extends SpecificationExtensions {
5682
5711
  /**
5683
5712
  * An object to hold reusable {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#callback-object Callback Objects}.
5684
5713
  */
@@ -5727,7 +5756,7 @@ interface ComponentsObject {
5727
5756
  * email: support@example.com
5728
5757
  * ```
5729
5758
  */
5730
- interface ContactObject {
5759
+ interface ContactObject extends SpecificationExtensions {
5731
5760
  /**
5732
5761
  * The email address of the contact person/organization. This MUST be in the form of an email address.
5733
5762
  */
@@ -5772,7 +5801,7 @@ interface DiscriminatorObject {
5772
5801
  * TODO: default values examples
5773
5802
  * TODO: examples
5774
5803
  */
5775
- interface EncodingObject {
5804
+ interface EncodingObject extends SpecificationExtensions {
5776
5805
  /**
5777
5806
  * When this is true, parameter values are serialized using reserved expansion, as defined by {@link https://datatracker.ietf.org/doc/html/rfc6570#section-3.2.3 RFC6570}, which allows {@link https://datatracker.ietf.org/doc/html/rfc3986#section-2.2 RFC3986's reserved character set}, as well as percent-encoded triples, to pass through unchanged, while still percent-encoding all other disallowed characters (including `%` outside of percent-encoded triples). Applications are still responsible for percent-encoding reserved characters that are {@link https://datatracker.ietf.org/doc/html/rfc3986#section-3.4 not allowed in the query string} (`[`, `]`, `#`), or have a special meaning in `application/x-www-form-urlencoded` (`-`, `&`, `+`); see Appendices {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#appendix-c-using-rfc6570-based-serialization C} and {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#appendix-e-percent-encoding-and-form-media-types E} for details. The default value is `false`. This field SHALL be ignored if the request body media type is not `application/x-www-form-urlencoded`.
5778
5807
  */
@@ -5805,7 +5834,7 @@ interface EncodingObject {
5805
5834
  *
5806
5835
  * TODO: examples
5807
5836
  */
5808
- interface ExampleObject {
5837
+ interface ExampleObject extends SpecificationExtensions {
5809
5838
  /**
5810
5839
  * Long description for the example. {@link https://spec.commonmark.org/ CommonMark syntax} MAY be used for rich text representation.
5811
5840
  */
@@ -5835,7 +5864,7 @@ interface ExampleObject {
5835
5864
  * url: https://example.com
5836
5865
  * ```
5837
5866
  */
5838
- interface ExternalDocumentationObject {
5867
+ interface ExternalDocumentationObject extends SpecificationExtensions {
5839
5868
  /**
5840
5869
  * A description of the target documentation. {@link https://spec.commonmark.org/ CommonMark syntax} MAY be used for rich text representation.
5841
5870
  */
@@ -5877,7 +5906,7 @@ type HeaderObject = Omit<ParameterObject$1, 'in' | 'name'>;
5877
5906
  * version: 1.0.1
5878
5907
  * ```
5879
5908
  */
5880
- interface InfoObject$1 {
5909
+ interface InfoObject$1 extends SpecificationExtensions {
5881
5910
  /**
5882
5911
  * The contact information for the exposed API.
5883
5912
  */
@@ -5913,7 +5942,7 @@ interface InfoObject$1 {
5913
5942
  * url: https://www.apache.org/licenses/LICENSE-2.0.html
5914
5943
  * ```
5915
5944
  */
5916
- interface LicenseObject {
5945
+ interface LicenseObject extends SpecificationExtensions {
5917
5946
  /**
5918
5947
  * **REQUIRED**. The license name used for the API.
5919
5948
  */
@@ -5938,7 +5967,7 @@ interface LicenseObject {
5938
5967
  *
5939
5968
  * TODO: examples
5940
5969
  */
5941
- interface LinkObject {
5970
+ interface LinkObject extends SpecificationExtensions {
5942
5971
  /**
5943
5972
  * A description of the link. {@link https://spec.commonmark.org/ CommonMark syntax} MAY be used for rich text representation.
5944
5973
  */
@@ -5973,7 +6002,7 @@ interface LinkObject {
5973
6002
  *
5974
6003
  * TODO: examples
5975
6004
  */
5976
- interface MediaTypeObject {
6005
+ interface MediaTypeObject extends SpecificationExtensions {
5977
6006
  /**
5978
6007
  * A map between a property name and its encoding information. The key, being the property name, MUST exist in the schema as a property. The `encoding` field SHALL only apply to {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#request-body-object Request Body Objects}, and only when the media type is `multipart` or `application/x-www-form-urlencoded`. If no Encoding Object is provided for a property, the behavior is determined by the default values documented for the Encoding Object.
5979
6008
  */
@@ -5998,7 +6027,7 @@ interface MediaTypeObject {
5998
6027
  *
5999
6028
  * TODO: examples
6000
6029
  */
6001
- interface OAuthFlowObject {
6030
+ interface OAuthFlowObject extends SpecificationExtensions {
6002
6031
  /**
6003
6032
  * **REQUIRED (`"implicit"`, `"authorizationCode"`)**. The authorization URL to be used for this flow. This MUST be in the form of a URL. The OAuth2 standard requires the use of TLS.
6004
6033
  */
@@ -6021,7 +6050,7 @@ interface OAuthFlowObject {
6021
6050
  *
6022
6051
  * This object MAY be extended with {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#specification-extensions Specification Extensions}.
6023
6052
  */
6024
- interface OAuthFlowsObject {
6053
+ interface OAuthFlowsObject extends SpecificationExtensions {
6025
6054
  /**
6026
6055
  * Configuration for the OAuth Authorization Code flow. Previously called `accessCode` in OpenAPI 2.0.
6027
6056
  */
@@ -6046,7 +6075,7 @@ interface OAuthFlowsObject {
6046
6075
  *
6047
6076
  * TODO: examples
6048
6077
  */
6049
- interface OperationObject$1 {
6078
+ interface OperationObject$1 extends SpecificationExtensions {
6050
6079
  /**
6051
6080
  * A map of possible out-of band callbacks related to the parent operation. The key is a unique identifier for the Callback Object. Each value in the map is a {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#callback-object Callback Object} that describes a request that may be initiated by the API provider and the expected responses.
6052
6081
  */
@@ -6140,7 +6169,7 @@ interface OperationObject$1 {
6140
6169
  *
6141
6170
  * TODO: examples
6142
6171
  */
6143
- interface ParameterObject$1 {
6172
+ interface ParameterObject$1 extends SpecificationExtensions {
6144
6173
  /**
6145
6174
  * If `true`, clients MAY pass a zero-length string value in place of parameters that would otherwise be omitted entirely, which the server SHOULD interpret as the parameter being unused. Default value is `false`. If {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#parameter-style `style`} is used, and if {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#style-examples behavior is _n/a_ (cannot be serialized)}, the value of `allowEmptyValue` SHALL be ignored. Interactions between this field and the parameter's {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#schema-object Schema Object} are implementation-defined. This field is valid only for `query` parameters. Use of this field is NOT RECOMMENDED, and it is likely to be removed in a later revision.
6146
6175
  */
@@ -6204,7 +6233,7 @@ interface ParameterObject$1 {
6204
6233
  *
6205
6234
  * TODO: examples
6206
6235
  */
6207
- interface PathItemObject {
6236
+ interface PathItemObject extends SpecificationExtensions {
6208
6237
  /**
6209
6238
  * Allows for a referenced definition of this path item. The value MUST be in the form of a URL, and the referenced structure MUST be in the form of a {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#path-item-object Path Item Object}. In case a Path Item Object field appears both in the defined object and the referenced object, the behavior is undefined. See the rules for resolving {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#relative-references-in-urls Relative References}.
6210
6239
  */
@@ -6265,7 +6294,7 @@ interface PathItemObject {
6265
6294
  *
6266
6295
  * TODO: examples
6267
6296
  */
6268
- interface PathsObject {
6297
+ interface PathsObject extends SpecificationExtensions {
6269
6298
  /**
6270
6299
  * A relative path to an individual endpoint. The field name MUST begin with a forward slash (`/`). The path is **appended** (no relative URL resolution) to the expanded URL from the {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#server-object Server Object}'s `url` field in order to construct the full URL. {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#path-templating Path templating} is allowed. When matching URLs, concrete (non-templated) paths would be matched before their templated counterparts. Templated paths with the same hierarchy but different templated names MUST NOT exist as they are identical. In case of ambiguous matching, it's up to the tooling to decide which one to use.
6271
6300
  */
@@ -6311,7 +6340,7 @@ interface ReferenceObject$2 {
6311
6340
  *
6312
6341
  * TODO: examples
6313
6342
  */
6314
- interface RequestBodyObject$1 {
6343
+ interface RequestBodyObject$1 extends SpecificationExtensions {
6315
6344
  /**
6316
6345
  * **REQUIRED**. The content of the request body. The key is a media type or {@link https://tools.ietf.org/html/rfc7231#appendix-D media type range} and the value describes it. For requests that match multiple keys, only the most specific key is applicable. e.g. `"text/plain"` overrides `"text/*"`
6317
6346
  */
@@ -6332,7 +6361,7 @@ interface RequestBodyObject$1 {
6332
6361
  *
6333
6362
  * TODO: examples
6334
6363
  */
6335
- interface ResponseObject$1 {
6364
+ interface ResponseObject$1 extends SpecificationExtensions {
6336
6365
  /**
6337
6366
  * A map containing descriptions of potential response payloads. The key is a media type or {@link https://tools.ietf.org/html/rfc7231#appendix-D media type range} and the value describes it. For responses that match multiple keys, only the most specific key is applicable. e.g. `"text/plain"` overrides `"text/*"`
6338
6367
  */
@@ -6363,11 +6392,11 @@ interface ResponseObject$1 {
6363
6392
  *
6364
6393
  * TODO: examples
6365
6394
  */
6366
- interface ResponsesObject {
6395
+ interface ResponsesObject extends SpecificationExtensions {
6367
6396
  /**
6368
6397
  * Any {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#http-status-codes HTTP status code} can be used as the property name, but only one property per code, to describe the expected response for that HTTP status code. A {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#reference-object Reference Object} can link to a response that is defined in the {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#components-responses OpenAPI Object's `components.responses`} section. This field MUST be enclosed in quotation marks (for example, "200") for compatibility between JSON and YAML. To define a range of response codes, this field MAY contain the uppercase wildcard character `X`. For example, `2XX` represents all response codes between `200` and `299`. Only the following range definitions are allowed: `1XX`, `2XX`, `3XX`, `4XX`, and `5XX`. If a response is defined using an explicit code, the explicit code definition takes precedence over the range definition for that code.
6369
6398
  */
6370
- [httpStatusCode: string]: ResponseObject$1 | ReferenceObject$2 | undefined;
6399
+ [httpStatusCode: string]: ResponseObject$1 | ReferenceObject$2 | undefined | unknown;
6371
6400
  /**
6372
6401
  * The documentation of responses other than the ones declared for specific HTTP response codes. Use this field to cover undeclared responses. A {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#reference-object Reference Object} can link to a response that the {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#components-responses OpenAPI Object's `components.responses`} section defines.
6373
6402
  */
@@ -6424,7 +6453,7 @@ interface ResponsesObject {
6424
6453
  *
6425
6454
  * TODO: content, examples
6426
6455
  */
6427
- interface SchemaObject$1 extends EnumExtensions {
6456
+ interface SchemaObject$1 extends EnumExtensions, SpecificationExtensions {
6428
6457
  /**
6429
6458
  * The value of "additionalProperties" MUST be a boolean or a schema.
6430
6459
  *
@@ -6675,7 +6704,7 @@ interface SecurityRequirementObject {
6675
6704
  *
6676
6705
  * TODO: examples
6677
6706
  */
6678
- type SecuritySchemeObject = {
6707
+ type SecuritySchemeObject = SpecificationExtensions & {
6679
6708
  /**
6680
6709
  * A description for security scheme. {@link https://spec.commonmark.org/ CommonMark syntax} MAY be used for rich text representation.
6681
6710
  */
@@ -6732,7 +6761,7 @@ type SecuritySchemeObject = {
6732
6761
  *
6733
6762
  * TODO: examples
6734
6763
  */
6735
- interface ServerObject {
6764
+ interface ServerObject extends SpecificationExtensions {
6736
6765
  /**
6737
6766
  * An optional string describing the host designated by the URL. {@link https://spec.commonmark.org/ CommonMark syntax} MAY be used for rich text representation.
6738
6767
  */
@@ -6751,7 +6780,7 @@ interface ServerObject {
6751
6780
  *
6752
6781
  * This object MAY be extended with {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#specification-extensions Specification Extensions}.
6753
6782
  */
6754
- interface ServerVariableObject {
6783
+ interface ServerVariableObject extends SpecificationExtensions {
6755
6784
  /**
6756
6785
  * **REQUIRED**. The default value to use for substitution, which SHALL be sent if an alternate value is _not_ supplied. If the {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#server-variable-enum `enum`} is defined, the value SHOULD exist in the enum's values. Note that this behavior is different from the {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#schema-object Schema Object}'s `default` keyword, which documents the receiver's behavior rather than inserting the value into the data.
6757
6786
  */
@@ -6777,7 +6806,7 @@ interface ServerVariableObject {
6777
6806
  * description: Pets operations
6778
6807
  * ```
6779
6808
  */
6780
- interface TagObject {
6809
+ interface TagObject extends SpecificationExtensions {
6781
6810
  /**
6782
6811
  * A description for the tag. {@link https://spec.commonmark.org/ CommonMark syntax} MAY be used for rich text representation.
6783
6812
  */
@@ -6805,7 +6834,7 @@ interface TagObject {
6805
6834
  *
6806
6835
  * TODO: examples
6807
6836
  */
6808
- interface XMLObject {
6837
+ interface XMLObject extends SpecificationExtensions {
6809
6838
  /**
6810
6839
  * Declares whether the property definition translates to an attribute instead of an element. Default value is `false`.
6811
6840
  */
@@ -7121,10 +7150,8 @@ type Config$13 = Plugin.Name<'@hey-api/sdk'> & Plugin.Hooks & {
7121
7150
  * Set `instance` to create an instantiable SDK. Using `true` will use the
7122
7151
  * default instance name; in practice, you want to define your own by passing
7123
7152
  * a string value.
7124
- *
7125
- * @default false
7126
7153
  */
7127
- instance: string | boolean;
7154
+ instance: string;
7128
7155
  /**
7129
7156
  * Customise the name of methods within the service. By default,
7130
7157
  * {@link IR.OperationObject.id} is used.
@@ -7224,8 +7251,8 @@ declare abstract class TsDsl<T extends ts.Node = ts.Node> implements Node<T> {
7224
7251
  parent?: Node;
7225
7252
  root?: Node;
7226
7253
  symbol?: Symbol;
7227
- toAst(): T;
7228
- readonly '~brand': any;
7254
+ toAst(_: AstContext): T;
7255
+ readonly '~brand' = "heyapi.node";
7229
7256
  /** Branding property to identify the DSL class at runtime. */
7230
7257
  abstract readonly '~dsl': string;
7231
7258
  /** Conditionally applies a callback to this builder. */
@@ -7233,8 +7260,8 @@ declare abstract class TsDsl<T extends ts.Node = ts.Node> implements Node<T> {
7233
7260
  $if<T extends TsDsl, V, R extends TsDsl = T>(this: T, value: V, ifTrue: (v: Exclude<V, false | null | undefined>) => R | void, ifFalse?: (v: Extract<V, false | null | undefined>) => R | void): R | T;
7234
7261
  $if<T extends TsDsl, V, R extends TsDsl = T>(this: T, value: V, ifTrue: () => R | void, ifFalse?: () => R | void): R | T;
7235
7262
  protected $maybeId<T extends string | ts.Expression>(expr: T): T extends string ? ts.Identifier : T;
7236
- protected $node<I>(value: I): NodeOfMaybe<I>;
7237
- protected $type<I>(value: I, args?: ReadonlyArray<ts.TypeNode>): TypeOfMaybe<I>;
7263
+ protected $node<I>(ctx: AstContext, value: I): NodeOfMaybe<I>;
7264
+ protected $type<I>(ctx: AstContext, value: I, args?: ReadonlyArray<ts.TypeNode>): TypeOfMaybe<I>;
7238
7265
  /** Unwraps nested nodes into raw TypeScript AST. */
7239
7266
  private unwrap;
7240
7267
  }
@@ -7246,19 +7273,9 @@ type TypeOfMaybe<I> = undefined extends I ? TypeOf<NonNullable<FromRef<I>>> | un
7246
7273
  type TypeOf<I> = I extends ReadonlyArray<infer U> ? ReadonlyArray<TypeOf<U>> : I extends string ? ts.TypeNode : I extends boolean ? ts.LiteralTypeNode : I extends TsDsl<infer N> ? N : I extends ts.TypeNode ? I : never;
7247
7274
  //#endregion
7248
7275
  //#region src/ts-dsl/mixins/types.d.ts
7249
- type BaseCtor<T> = abstract new (...args: any[]) => TsDsl<T>;
7250
- type MixinCtor<T extends BaseCtor<any>, K$1> = abstract new (...args: any[]) => InstanceType<T> & K$1;
7251
- //#endregion
7252
- //#region src/ts-dsl/mixins/type-args.d.ts
7253
- type Arg$1 = Symbol | string | MaybeTsDsl<TypeTsDsl>;
7254
- interface TypeArgsMethods extends Node {
7255
- /** Returns the type arguments as an array of ts.TypeNode nodes. */
7256
- $generics(): ReadonlyArray<ts.TypeNode> | undefined;
7257
- /** Adds a single type argument (e.g. `string` in `Foo<string>`). */
7258
- generic(arg: Arg$1): this;
7259
- /** Adds type arguments (e.g. `Map<string, number>`). */
7260
- generics(...args: ReadonlyArray<Arg$1>): this;
7261
- }
7276
+ type BaseCtor<T> = abstract new (...args: Array<any>) => TsDsl<T>;
7277
+ type DropFirst<T extends Array<any>> = T extends [any, ...infer Rest] ? Rest : never;
7278
+ type MixinCtor<T extends BaseCtor<any>, K$1> = abstract new (...args: Array<any>) => InstanceType<T> & K$1;
7262
7279
  //#endregion
7263
7280
  //#region src/ts-dsl/mixins/optional.d.ts
7264
7281
  interface OptionalMethods extends Node {
@@ -7269,31 +7286,18 @@ interface OptionalMethods extends Node {
7269
7286
  required(condition?: boolean): this;
7270
7287
  }
7271
7288
  //#endregion
7272
- //#region src/ts-dsl/expr/as.d.ts
7273
- type AsExpr = Symbol | string | MaybeTsDsl<ts.Expression>;
7274
- type AsType = Symbol | string | TypeTsDsl;
7275
- declare const Mixed$52: MixinCtor<MixinCtor<abstract new () => TsDsl<ts.AsExpression>, ExprMethods>, AsMethods>;
7276
- declare class AsTsDsl extends Mixed$52 {
7277
- readonly '~dsl' = "AsTsDsl";
7278
- protected expr: Ref<AsExpr>;
7279
- protected type: Ref<AsType>;
7280
- constructor(expr: AsExpr, type: AsType);
7281
- analyze(ctx: AnalysisContext): void;
7282
- toAst(): ts.AsExpression;
7283
- }
7284
- //#endregion
7285
7289
  //#region src/ts-dsl/mixins/as.d.ts
7286
7290
  interface AsMethods extends Node {
7287
7291
  /** Creates an `as` type assertion expression (e.g. `value as Type`). */
7288
- as(type: AsType): AsTsDsl;
7292
+ as(...args: DropFirst<Parameters<typeof f.as>>): ReturnType<typeof f.as>;
7289
7293
  }
7290
7294
  //#endregion
7291
7295
  //#region src/ts-dsl/expr/binary.d.ts
7292
7296
  type Expr$3 = Symbol | string | MaybeTsDsl<ts.Expression>;
7293
7297
  type Op$1 = Operator | ts.BinaryOperator;
7294
- type Operator = '!=' | '!==' | '&&' | '*' | '+' | '-' | '/' | '<' | '<=' | '=' | '==' | '===' | '>' | '>=' | '??' | '||';
7295
- declare const Mixed$51: MixinCtor<MixinCtor<abstract new () => TsDsl<ts.BinaryExpression>, ExprMethods>, AsMethods>;
7296
- declare class BinaryTsDsl extends Mixed$51 {
7298
+ type Operator = '!=' | '!==' | '&&' | '*' | '+' | '-' | '/' | '<' | '<=' | '=' | '==' | '===' | '>' | '>=' | '??' | '??=' | '||';
7299
+ declare const Mixed$52: MixinCtor<MixinCtor<abstract new () => TsDsl<ts.BinaryExpression>, ExprMethods>, AsMethods>;
7300
+ declare class BinaryTsDsl extends Mixed$52 {
7297
7301
  readonly '~dsl' = "BinaryTsDsl";
7298
7302
  protected _base: Ref<Expr$3>;
7299
7303
  protected _expr?: Ref<Expr$3>;
@@ -7326,13 +7330,15 @@ declare class BinaryTsDsl extends Mixed$51 {
7326
7330
  minus(expr: Expr$3): this;
7327
7331
  /** Strict inequality — `this !== expr` */
7328
7332
  neq(expr: Expr$3): this;
7333
+ /** Nullish assignment — `this ??= expr` */
7334
+ nullishAssign(expr: Expr$3): this;
7329
7335
  /** Logical OR — `this || expr` */
7330
7336
  or(expr: Expr$3): this;
7331
7337
  /** Addition — `this + expr` */
7332
7338
  plus(expr: Expr$3): this;
7333
7339
  /** Multiplication — `this * expr` */
7334
7340
  times(expr: Expr$3): this;
7335
- toAst(): ts.BinaryExpression;
7341
+ toAst(ctx: AstContext): ts.BinaryExpression;
7336
7342
  /** Sets the binary operator and right-hand operand for this expression. */
7337
7343
  private opAndExpr;
7338
7344
  private opToToken;
@@ -7367,6 +7373,8 @@ interface OperatorMethods extends Node {
7367
7373
  minus(expr: Expr$2): BinaryTsDsl;
7368
7374
  /** Strict inequality — `this !== expr` */
7369
7375
  neq(expr: Expr$2): BinaryTsDsl;
7376
+ /** Nullish assignment — `this ??= expr` */
7377
+ nullishAssign(expr: Expr$2): BinaryTsDsl;
7370
7378
  /** Logical OR — `this || expr` */
7371
7379
  or(expr: Expr$2): BinaryTsDsl;
7372
7380
  /** Addition — `this + expr` */
@@ -7378,55 +7386,45 @@ interface OperatorMethods extends Node {
7378
7386
  //#region src/ts-dsl/expr/attr.d.ts
7379
7387
  type AttrLeft = Symbol | string | MaybeTsDsl<ts.Expression>;
7380
7388
  type AttrRight = Symbol | string | ts.MemberName | number;
7381
- declare const Mixed$50: MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.PropertyAccessExpression | ts.ElementAccessExpression>, OptionalMethods>, OperatorMethods>, ExprMethods>, AsMethods>;
7382
- declare class AttrTsDsl extends Mixed$50 {
7389
+ type AttrCtor = (left: AttrLeft, right: AttrRight) => AttrTsDsl;
7390
+ declare const Mixed$51: MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.PropertyAccessExpression | ts.ElementAccessExpression>, OptionalMethods>, OperatorMethods>, ExprMethods>, AsMethods>;
7391
+ declare class AttrTsDsl extends Mixed$51 {
7383
7392
  readonly '~dsl' = "AttrTsDsl";
7384
7393
  protected left: Ref<AttrLeft>;
7385
7394
  protected right: Ref<AttrRight>;
7386
7395
  constructor(left: AttrLeft, right: AttrRight);
7387
7396
  analyze(ctx: AnalysisContext): void;
7388
- toAst(): ts.PropertyAccessExpression | ts.ElementAccessExpression;
7397
+ toAst(ctx: AstContext): ts.PropertyAccessExpression | ts.ElementAccessExpression;
7389
7398
  }
7390
7399
  //#endregion
7391
7400
  //#region src/ts-dsl/expr/await.d.ts
7392
7401
  type AwaitExpr = Symbol | string | MaybeTsDsl<ts.Expression>;
7393
- declare const Mixed$49: MixinCtor<abstract new () => TsDsl<ts.AwaitExpression>, ExprMethods>;
7394
- declare class AwaitTsDsl extends Mixed$49 {
7402
+ type AwaitCtor = (expr: AwaitExpr) => AwaitTsDsl;
7403
+ declare const Mixed$50: MixinCtor<abstract new () => TsDsl<ts.AwaitExpression>, ExprMethods>;
7404
+ declare class AwaitTsDsl extends Mixed$50 {
7395
7405
  readonly '~dsl' = "AwaitTsDsl";
7396
7406
  protected _awaitExpr: Ref<AwaitExpr>;
7397
7407
  constructor(expr: AwaitExpr);
7398
7408
  analyze(ctx: AnalysisContext): void;
7399
- toAst(): ts.AwaitExpression;
7400
- }
7401
- //#endregion
7402
- //#region src/ts-dsl/stmt/return.d.ts
7403
- type ReturnExpr = Symbol | string | MaybeTsDsl<ts.Expression>;
7404
- declare const Mixed$48: abstract new () => TsDsl<ts.ReturnStatement>;
7405
- declare class ReturnTsDsl extends Mixed$48 {
7406
- readonly '~dsl' = "ReturnTsDsl";
7407
- protected _returnExpr?: Ref<ReturnExpr>;
7408
- constructor(expr?: ReturnExpr);
7409
- analyze(ctx: AnalysisContext): void;
7410
- toAst(): ts.ReturnStatement;
7409
+ toAst(ctx: AstContext): ts.AwaitExpression;
7411
7410
  }
7412
7411
  //#endregion
7413
- //#region src/ts-dsl/mixins/expr.d.ts
7414
- interface ExprMethods extends Node {
7415
- /** Accesses a property on the current expression (e.g. `this.foo`). */
7416
- attr(name: AttrRight): AttrTsDsl;
7417
- /** Awaits the current expression (e.g. `await expr`). */
7418
- await(): AwaitTsDsl;
7419
- /** Calls the current expression (e.g. `fn(arg1, arg2)`). */
7420
- call(...args: CallArgs): CallTsDsl;
7421
- /** Produces a `return` statement returning the current expression. */
7422
- return(): ReturnTsDsl;
7412
+ //#region src/ts-dsl/mixins/type-args.d.ts
7413
+ type Arg$1 = Symbol | string | MaybeTsDsl<TypeTsDsl>;
7414
+ interface TypeArgsMethods extends Node {
7415
+ /** Returns the type arguments as an array of ts.TypeNode nodes. */
7416
+ $generics(ctx: AstContext): ReadonlyArray<ts.TypeNode> | undefined;
7417
+ /** Adds a single type argument (e.g. `string` in `Foo<string>`). */
7418
+ generic(arg: Arg$1): this;
7419
+ /** Adds type arguments (e.g. `Map<string, number>`). */
7420
+ generics(...args: ReadonlyArray<Arg$1>): this;
7423
7421
  }
7424
7422
  //#endregion
7425
7423
  //#region src/ts-dsl/mixins/args.d.ts
7426
7424
  type Arg = Symbol | string | MaybeTsDsl<ts.Expression>;
7427
7425
  interface ArgsMethods extends Node {
7428
7426
  /** Renders the arguments into an array of `Expression`s. */
7429
- $args(): ReadonlyArray<ts.Expression>;
7427
+ $args(ctx: AstContext): ReadonlyArray<ts.Expression>;
7430
7428
  /** Adds a single expression argument. */
7431
7429
  arg(arg: Arg | undefined): this;
7432
7430
  /** Adds one or more expression arguments. */
@@ -7437,13 +7435,259 @@ interface ArgsMethods extends Node {
7437
7435
  type CallCallee = string | MaybeTsDsl<ts.Expression>;
7438
7436
  type CallArg = Symbol | string | MaybeTsDsl<ts.Expression>;
7439
7437
  type CallArgs = ReadonlyArray<CallArg | undefined>;
7440
- declare const Mixed$47: MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.CallExpression>, TypeArgsMethods>, ExprMethods>, AsMethods>, ArgsMethods>;
7441
- declare class CallTsDsl extends Mixed$47 {
7438
+ type CallCtor = (callee: CallCallee, ...args: CallArgs) => CallTsDsl;
7439
+ declare const Mixed$49: MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.CallExpression>, TypeArgsMethods>, ExprMethods>, AsMethods>, ArgsMethods>;
7440
+ declare class CallTsDsl extends Mixed$49 {
7442
7441
  readonly '~dsl' = "CallTsDsl";
7443
7442
  protected _callee: CallCallee;
7444
7443
  constructor(callee: CallCallee, ...args: CallArgs);
7445
7444
  analyze(ctx: AnalysisContext): void;
7446
- toAst(): ts.CallExpression;
7445
+ toAst(ctx: AstContext): ts.CallExpression;
7446
+ }
7447
+ //#endregion
7448
+ //#region src/ts-dsl/expr/typeof.d.ts
7449
+ type TypeOfExpr = string | MaybeTsDsl<ts.Expression>;
7450
+ type TypeOfExprCtor = (expr: TypeOfExpr) => TypeOfExprTsDsl;
7451
+ declare const Mixed$48: MixinCtor<abstract new () => TsDsl<ts.TypeOfExpression>, OperatorMethods>;
7452
+ declare class TypeOfExprTsDsl extends Mixed$48 {
7453
+ readonly '~dsl' = "TypeOfExprTsDsl";
7454
+ protected _expr: TypeOfExpr;
7455
+ constructor(expr: TypeOfExpr);
7456
+ analyze(ctx: AnalysisContext): void;
7457
+ toAst(ctx: AstContext): ts.TypeOfExpression;
7458
+ }
7459
+ //#endregion
7460
+ //#region src/ts-dsl/stmt/return.d.ts
7461
+ type ReturnExpr = Symbol | string | MaybeTsDsl<ts.Expression>;
7462
+ type ReturnCtor = (expr?: ReturnExpr) => ReturnTsDsl;
7463
+ declare const Mixed$47: abstract new () => TsDsl<ts.ReturnStatement>;
7464
+ declare class ReturnTsDsl extends Mixed$47 {
7465
+ readonly '~dsl' = "ReturnTsDsl";
7466
+ protected _returnExpr?: Ref<ReturnExpr>;
7467
+ constructor(expr?: ReturnExpr);
7468
+ analyze(ctx: AnalysisContext): void;
7469
+ toAst(ctx: AstContext): ts.ReturnStatement;
7470
+ }
7471
+ //#endregion
7472
+ //#region src/ts-dsl/mixins/type-expr.d.ts
7473
+ interface TypeExprMethods extends Node {
7474
+ /** Creates an indexed-access type (e.g. `Foo<T>[K]`). */
7475
+ idx(this: Parameters<typeof f.type.idx>[0], ...args: DropFirst<Parameters<typeof f.type.idx>>): ReturnType<typeof f.type.idx>;
7476
+ /** Shorthand: builds `keyof T`. */
7477
+ keyof(this: MaybeTsDsl<TypeTsDsl>): ReturnType<typeof f.type.operator>;
7478
+ /** Shorthand: builds `readonly T`. */
7479
+ readonly(this: MaybeTsDsl<TypeTsDsl>): ReturnType<typeof f.type.operator>;
7480
+ /** Create a TypeExpr node representing ReturnType<this>. */
7481
+ returnType(this: Parameters<typeof f.type.query>[0], ...args: DropFirst<Parameters<typeof f.type.query>>): ReturnType<typeof f.type.expr>;
7482
+ /** Create a TypeOfExpr node representing typeof this. */
7483
+ typeofExpr(this: Parameters<typeof f.typeofExpr>[0], ...args: DropFirst<Parameters<typeof f.typeofExpr>>): ReturnType<typeof f.typeofExpr>;
7484
+ /** Create a TypeQuery node representing typeof this. */
7485
+ typeofType(this: Parameters<typeof f.type.query>[0], ...args: DropFirst<Parameters<typeof f.type.query>>): ReturnType<typeof f.type.query>;
7486
+ /** Shorthand: builds `unique T`. */
7487
+ unique(this: MaybeTsDsl<TypeTsDsl>): ReturnType<typeof f.type.operator>;
7488
+ }
7489
+ //#endregion
7490
+ //#region src/ts-dsl/type/attr.d.ts
7491
+ type Base$2 = Symbol | string | MaybeTsDsl<ts.EntityName>;
7492
+ type Right = Symbol | string | ts.Identifier;
7493
+ declare const Mixed$46: MixinCtor<abstract new () => TsDsl<ts.QualifiedName>, TypeExprMethods>;
7494
+ declare class TypeAttrTsDsl extends Mixed$46 {
7495
+ readonly '~dsl' = "TypeAttrTsDsl";
7496
+ protected _base?: Ref<Base$2>;
7497
+ protected _right: Ref<Right>;
7498
+ constructor(base: Base$2 | Ref<Base$2>, right: string | ts.Identifier);
7499
+ constructor(right: Right);
7500
+ analyze(ctx: AnalysisContext): void;
7501
+ base(base?: Base$2 | Ref<Base$2>): this;
7502
+ right(right: Right): this;
7503
+ toAst(ctx: AstContext): ts.QualifiedName;
7504
+ }
7505
+ //#endregion
7506
+ //#region src/ts-dsl/type/expr.d.ts
7507
+ type TypeExprName = Symbol | string;
7508
+ type TypeExprExpr = TypeExprName | TypeAttrTsDsl;
7509
+ type TypeExprFn = (t: TypeExprTsDsl) => void;
7510
+ type TypeExprCtor = (nameOrFn?: TypeExprName | TypeExprFn, fn?: TypeExprFn) => TypeExprTsDsl;
7511
+ declare const Mixed$45: MixinCtor<MixinCtor<abstract new () => TsDsl<ts.TypeReferenceNode>, TypeExprMethods>, TypeArgsMethods>;
7512
+ declare class TypeExprTsDsl extends Mixed$45 {
7513
+ readonly '~dsl' = "TypeExprTsDsl";
7514
+ protected _exprInput?: Ref<TypeExprExpr>;
7515
+ constructor();
7516
+ constructor(fn: TypeExprFn);
7517
+ constructor(name: TypeExprName);
7518
+ constructor(name: TypeExprName, fn?: TypeExprFn);
7519
+ analyze(ctx: AnalysisContext): void;
7520
+ /** Accesses a nested type (e.g. `Foo.Bar`). */
7521
+ attr(right: string | ts.Identifier | TypeAttrTsDsl): this;
7522
+ toAst(ctx: AstContext): ts.TypeReferenceNode;
7523
+ }
7524
+ //#endregion
7525
+ //#region src/ts-dsl/type/idx.d.ts
7526
+ type Base$1 = string | MaybeTsDsl<ts.TypeNode>;
7527
+ type Index = string | number | MaybeTsDsl<ts.TypeNode>;
7528
+ type TypeIdxCtor = (base: Base$1, index: Index) => TypeIdxTsDsl;
7529
+ declare const Mixed$44: MixinCtor<abstract new () => TsDsl<ts.IndexedAccessTypeNode>, TypeExprMethods>;
7530
+ declare class TypeIdxTsDsl extends Mixed$44 {
7531
+ readonly '~dsl' = "TypeIdxTsDsl";
7532
+ protected _base: Base$1;
7533
+ protected _index: Index;
7534
+ constructor(base: Base$1, index: Index);
7535
+ analyze(ctx: AnalysisContext): void;
7536
+ base(base: Base$1): this;
7537
+ index(index: Index): this;
7538
+ toAst(ctx: AstContext): ts.IndexedAccessTypeNode;
7539
+ }
7540
+ //#endregion
7541
+ //#region src/ts-dsl/type/operator.d.ts
7542
+ type Op = ts.SyntaxKind.KeyOfKeyword | ts.SyntaxKind.ReadonlyKeyword | ts.SyntaxKind.UniqueKeyword;
7543
+ type Type$2 = string | MaybeTsDsl<ts.TypeNode>;
7544
+ type TypeOperatorCtor = () => TypeOperatorTsDsl;
7545
+ declare const Mixed$43: abstract new () => TsDsl<ts.TypeOperatorNode>;
7546
+ /**
7547
+ * Builds a TypeScript `TypeOperatorNode`, such as:
7548
+ *
7549
+ * - `keyof T`
7550
+ * - `readonly U`
7551
+ * - `unique V`
7552
+ *
7553
+ * This DSL provides both a generic `.operator()` API and convenient
7554
+ * shorthand methods (`.keyof()`, `.readonly()`, `.unique()`).
7555
+ *
7556
+ * The node will throw during render if required fields are missing.
7557
+ */
7558
+ declare class TypeOperatorTsDsl extends Mixed$43 {
7559
+ readonly '~dsl' = "TypeOperatorTsDsl";
7560
+ protected _op?: Op;
7561
+ protected _type?: Type$2;
7562
+ analyze(ctx: AnalysisContext): void;
7563
+ /** Shorthand: builds `keyof T`. */
7564
+ keyof(type: Type$2): this;
7565
+ /** Sets the operator explicitly. */
7566
+ operator(op: Op): this;
7567
+ /** Shorthand: builds `readonly T`. */
7568
+ readonly(type: Type$2): this;
7569
+ /** Sets the target type of the operator. */
7570
+ type(type: Type$2): this;
7571
+ /** Shorthand: builds `unique T`. */
7572
+ unique(type: Type$2): this;
7573
+ toAst(ctx: AstContext): ts.TypeOperatorNode;
7574
+ /** Throws if required fields are not set. */
7575
+ $validate(): asserts this is this & {
7576
+ _op: Op;
7577
+ _type: Type$2;
7578
+ };
7579
+ private missingRequiredCalls;
7580
+ }
7581
+ //#endregion
7582
+ //#region src/ts-dsl/type/query.d.ts
7583
+ type TypeQueryExpr = string | MaybeTsDsl<TypeTsDsl | ts.Expression>;
7584
+ type TypeQueryCtor = (expr: TypeQueryExpr) => TypeQueryTsDsl;
7585
+ declare const Mixed$42: MixinCtor<abstract new () => TsDsl<ts.TypeQueryNode>, TypeExprMethods>;
7586
+ declare class TypeQueryTsDsl extends Mixed$42 {
7587
+ readonly '~dsl' = "TypeQueryTsDsl";
7588
+ protected _expr: TypeQueryExpr;
7589
+ constructor(expr: TypeQueryExpr);
7590
+ analyze(ctx: AnalysisContext): void;
7591
+ toAst(ctx: AstContext): ts.TypeQueryNode;
7592
+ }
7593
+ //#endregion
7594
+ //#region src/ts-dsl/utils/factories.d.ts
7595
+ type Ctor = (...args: Array<any>) => any;
7596
+ type Factory<T extends Ctor> = {
7597
+ (...args: Parameters<T>): ReturnType<T>;
7598
+ /** Sets the implementation of this factory. */
7599
+ set(fn: T): void;
7600
+ };
7601
+ declare const f: {
7602
+ /** Factory for creating `as` type assertion expressions (e.g. `value as Type`). */
7603
+ as: Factory<AsCtor>;
7604
+ /** Factory for creating property access expressions (e.g. `obj.foo`). */
7605
+ attr: Factory<AttrCtor>;
7606
+ /** Factory for creating await expressions (e.g. `await promise`). */
7607
+ await: Factory<AwaitCtor>;
7608
+ /** Factory for creating function or method call expressions (e.g. `fn(arg)`). */
7609
+ call: Factory<CallCtor>;
7610
+ /** Factory for creating return statements. */
7611
+ return: Factory<ReturnCtor>;
7612
+ /** Factories for creating type nodes. */
7613
+ type: {
7614
+ /** Factory for creating basic type references or type expressions (e.g. Foo or Foo<T>). */
7615
+ expr: Factory<TypeExprCtor>;
7616
+ /** Factory for creating indexed-access types (e.g. `Foo<T>[K]`). */
7617
+ idx: Factory<TypeIdxCtor>;
7618
+ /** Factory for creating type operator nodes (e.g. `readonly T`, `keyof T`, `unique T`). */
7619
+ operator: Factory<TypeOperatorCtor>;
7620
+ /** Factory for creating type query nodes (e.g. `typeof Foo`). */
7621
+ query: Factory<TypeQueryCtor>;
7622
+ };
7623
+ /** Factory for creating `typeof` expressions (e.g. `typeof value`). */
7624
+ typeofExpr: Factory<TypeOfExprCtor>;
7625
+ };
7626
+ //#endregion
7627
+ //#region src/ts-dsl/mixins/expr.d.ts
7628
+ interface ExprMethods extends Node {
7629
+ /** Accesses a property on the current expression (e.g. `this.foo`). */
7630
+ attr(...args: DropFirst<Parameters<typeof f.attr>>): ReturnType<typeof f.attr>;
7631
+ /** Awaits the current expression (e.g. `await expr`). */
7632
+ await(): ReturnType<typeof f.await>;
7633
+ /** Calls the current expression (e.g. `fn(arg1, arg2)`). */
7634
+ call(...args: DropFirst<Parameters<typeof f.call>>): ReturnType<typeof f.call>;
7635
+ /** Produces a `return` statement returning the current expression. */
7636
+ return(): ReturnType<typeof f.return>;
7637
+ }
7638
+ //#endregion
7639
+ //#region src/ts-dsl/expr/as.d.ts
7640
+ type AsExpr = Symbol | string | MaybeTsDsl<ts.Expression>;
7641
+ type AsType = Symbol | string | TypeTsDsl;
7642
+ type AsCtor = (expr: AsExpr, type: AsType) => AsTsDsl;
7643
+ declare const Mixed$41: MixinCtor<MixinCtor<abstract new () => TsDsl<ts.AsExpression>, ExprMethods>, AsMethods>;
7644
+ declare class AsTsDsl extends Mixed$41 {
7645
+ readonly '~dsl' = "AsTsDsl";
7646
+ protected expr: Ref<AsExpr>;
7647
+ protected type: Ref<AsType>;
7648
+ constructor(expr: AsExpr, type: AsType);
7649
+ analyze(ctx: AnalysisContext): void;
7650
+ toAst(ctx: AstContext): ts.AsExpression;
7651
+ }
7652
+ //#endregion
7653
+ //#region src/ts-dsl/mixins/value.d.ts
7654
+ type ValueExpr = string | MaybeTsDsl<ts.Expression>;
7655
+ interface ValueMethods extends Node {
7656
+ $value(ctx: AstContext): ts.Expression | undefined;
7657
+ /** Sets the initializer expression (e.g. `= expr`). */
7658
+ assign(expr: ValueExpr): this;
7659
+ }
7660
+ //#endregion
7661
+ //#region src/ts-dsl/mixins/pattern.d.ts
7662
+ interface PatternMethods extends Node {
7663
+ /** Renders the pattern into a `BindingName`. */
7664
+ $pattern(ctx: AstContext): ts.BindingName | undefined;
7665
+ /** Defines an array binding pattern. */
7666
+ array(...props: ReadonlyArray<string> | [ReadonlyArray<string>]): this;
7667
+ /** Defines an object binding pattern. */
7668
+ object(...props: ReadonlyArray<MaybeArray$1<string> | Record<string, string>>): this;
7669
+ /** Adds a spread element (e.g. `...args`, `...options`) to the pattern. */
7670
+ spread(name: string): this;
7671
+ }
7672
+ //#endregion
7673
+ //#region src/ts-dsl/layout/hint.d.ts
7674
+ type HintMaybeLazy<T> = ((ctx: AstContext) => T) | T;
7675
+ type HintFn = (d: HintTsDsl) => void;
7676
+ type HintLines = HintMaybeLazy<MaybeArray$1<string>>;
7677
+ declare class HintTsDsl extends TsDsl<ts.Node> {
7678
+ readonly '~dsl' = "HintTsDsl";
7679
+ protected _lines: Array<HintLines>;
7680
+ constructor(lines?: HintLines, fn?: HintFn);
7681
+ analyze(ctx: AnalysisContext): void;
7682
+ add(lines: HintLines): this;
7683
+ apply<T extends ts.Node>(ctx: AstContext, node: T): T;
7684
+ toAst(ctx: AstContext): ts.Node;
7685
+ }
7686
+ //#endregion
7687
+ //#region src/ts-dsl/mixins/hint.d.ts
7688
+ interface HintMethods extends Node {
7689
+ $hint<T extends ts.Node>(ctx: AstContext, node: T): T;
7690
+ hint(lines?: HintLines, fn?: HintFn): this;
7447
7691
  }
7448
7692
  //#endregion
7449
7693
  //#region src/ts-dsl/mixins/modifiers.d.ts
@@ -7541,39 +7785,124 @@ interface StaticMethods extends Modifiers {
7541
7785
  static(condition?: boolean): this;
7542
7786
  }
7543
7787
  //#endregion
7544
- //#region src/ts-dsl/mixins/value.d.ts
7545
- type ValueExpr = string | MaybeTsDsl<ts.Expression>;
7546
- interface ValueMethods extends Node {
7547
- $value(): ts.Expression | undefined;
7548
- /** Sets the initializer expression (e.g. `= expr`). */
7549
- assign(expr: ValueExpr): this;
7788
+ //#region src/ts-dsl/layout/doc.d.ts
7789
+ type DocMaybeLazy<T> = ((ctx: AstContext) => T) | T;
7790
+ type DocFn = (d: DocTsDsl) => void;
7791
+ type DocLines = DocMaybeLazy<MaybeArray$1<string>>;
7792
+ declare class DocTsDsl extends TsDsl<ts.Node> {
7793
+ readonly '~dsl' = "DocTsDsl";
7794
+ protected _lines: Array<DocLines>;
7795
+ constructor(lines?: DocLines, fn?: DocFn);
7796
+ analyze(ctx: AnalysisContext): void;
7797
+ add(lines: DocLines): this;
7798
+ apply<T extends ts.Node>(ctx: AstContext, node: T): T;
7799
+ toAst(ctx: AstContext): ts.Node;
7550
7800
  }
7551
7801
  //#endregion
7552
- //#region src/ts-dsl/mixins/pattern.d.ts
7553
- interface PatternMethods extends Node {
7554
- /** Renders the pattern into a `BindingName`. */
7555
- $pattern(): ts.BindingName | undefined;
7556
- /** Defines an array binding pattern. */
7557
- array(...props: ReadonlyArray<string> | [ReadonlyArray<string>]): this;
7558
- /** Defines an object binding pattern. */
7559
- object(...props: ReadonlyArray<MaybeArray$1<string> | Record<string, string>>): this;
7560
- /** Adds a spread element (e.g. `...args`, `...options`) to the pattern. */
7561
- spread(name: string): this;
7802
+ //#region src/ts-dsl/mixins/doc.d.ts
7803
+ interface DocMethods extends Node {
7804
+ $docs<T extends ts.Node>(ctx: AstContext, node: T): T;
7805
+ doc(lines?: DocLines, fn?: DocFn): this;
7806
+ }
7807
+ //#endregion
7808
+ //#region src/ts-dsl/stmt/var.d.ts
7809
+ type VarName = Symbol | string;
7810
+ declare const Mixed$40: MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.VariableStatement>, ValueMethods>, PatternMethods>, HintMethods>, ExportMethods>, DocMethods>, DefaultMethods>;
7811
+ declare class VarTsDsl extends Mixed$40 {
7812
+ readonly '~dsl' = "VarTsDsl";
7813
+ protected kind: ts.NodeFlags;
7814
+ protected name?: Ref<VarName>;
7815
+ protected _type?: TypeTsDsl;
7816
+ constructor(name?: VarName);
7817
+ analyze(ctx: AnalysisContext): void;
7818
+ const(): this;
7819
+ let(): this;
7820
+ /** Sets the variable type. */
7821
+ type(type: string | TypeTsDsl): this;
7822
+ var(): this;
7823
+ toAst(ctx: AstContext): ts.VariableStatement;
7824
+ }
7825
+ //#endregion
7826
+ //#region src/ts-dsl/decl/decorator.d.ts
7827
+ type DecoratorName = Symbol | string | MaybeTsDsl<ts.Expression>;
7828
+ declare const Mixed$39: MixinCtor<abstract new () => TsDsl<ts.Decorator>, ArgsMethods>;
7829
+ declare class DecoratorTsDsl extends Mixed$39 {
7830
+ readonly '~dsl' = "DecoratorTsDsl";
7831
+ protected name: Ref<DecoratorName>;
7832
+ constructor(name: DecoratorName, ...args: ReadonlyArray<string | MaybeTsDsl<ts.Expression>>);
7833
+ analyze(ctx: AnalysisContext): void;
7834
+ toAst(ctx: AstContext): ts.Decorator;
7835
+ }
7836
+ //#endregion
7837
+ //#region src/ts-dsl/decl/member.d.ts
7838
+ type Value$2 = string | number | MaybeTsDsl<ts.Expression>;
7839
+ type ValueFn$1 = Value$2 | ((m: EnumMemberTsDsl) => void);
7840
+ declare const Mixed$38: MixinCtor<abstract new () => TsDsl<ts.EnumMember>, DocMethods>;
7841
+ declare class EnumMemberTsDsl extends Mixed$38 {
7842
+ readonly '~dsl' = "EnumMemberTsDsl";
7843
+ private _name;
7844
+ private _value?;
7845
+ constructor(name: string, value?: ValueFn$1);
7846
+ analyze(ctx: AnalysisContext): void;
7847
+ /** Sets the enum member value. */
7848
+ value(value?: Value$2): this;
7849
+ toAst(ctx: AstContext): ts.EnumMember;
7850
+ }
7851
+ //#endregion
7852
+ //#region src/ts-dsl/decl/enum.d.ts
7853
+ type EnumName = Symbol | string;
7854
+ type Value$1 = string | number | MaybeTsDsl<ts.Expression>;
7855
+ type ValueFn = Value$1 | ((m: EnumMemberTsDsl) => void);
7856
+ declare const Mixed$37: MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.EnumDeclaration>, ExportMethods>, DocMethods>, ConstMethods>;
7857
+ declare class EnumTsDsl extends Mixed$37 {
7858
+ readonly '~dsl' = "EnumTsDsl";
7859
+ private _members;
7860
+ private _name;
7861
+ constructor(name: EnumName, fn?: (e: EnumTsDsl) => void);
7862
+ analyze(ctx: AnalysisContext): void;
7863
+ /** Adds an enum member. */
7864
+ member(name: string, value?: ValueFn): this;
7865
+ /** Adds multiple enum members. */
7866
+ members(...members: ReadonlyArray<EnumMemberTsDsl>): this;
7867
+ toAst(ctx: AstContext): ts.EnumDeclaration;
7562
7868
  }
7563
7869
  //#endregion
7564
7870
  //#region src/ts-dsl/mixins/decorator.d.ts
7565
7871
  interface DecoratorMethods extends Node {
7566
7872
  /** Renders the decorators into an array of `ts.Decorator`s. */
7567
- $decorators(): ReadonlyArray<ts.Decorator>;
7873
+ $decorators(ctx: AstContext): ReadonlyArray<ts.Decorator>;
7568
7874
  /** Adds a decorator (e.g. `@sealed({ in: 'root' })`). */
7569
7875
  decorator(name: Symbol | string | MaybeTsDsl<ts.Expression>, ...args: ReadonlyArray<string | MaybeTsDsl<ts.Expression>>): this;
7570
7876
  }
7571
7877
  //#endregion
7878
+ //#region src/ts-dsl/decl/field.d.ts
7879
+ type FieldName = Symbol | string;
7880
+ type FieldType = TypeExprName | TypeTsDsl;
7881
+ declare const Mixed$36: MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.PropertyDeclaration>, ValueMethods>, StaticMethods>, ReadonlyMethods>, PublicMethods>, ProtectedMethods>, PrivateMethods>, OptionalMethods>, DocMethods>, DecoratorMethods>;
7882
+ declare class FieldTsDsl extends Mixed$36 {
7883
+ readonly '~dsl' = "FieldTsDsl";
7884
+ protected name: FieldName;
7885
+ protected _type?: TypeTsDsl;
7886
+ constructor(name: FieldName, fn?: (f: FieldTsDsl) => void);
7887
+ analyze(ctx: AnalysisContext): void;
7888
+ /** Sets the field type. */
7889
+ type(type: FieldType): this;
7890
+ toAst(ctx: AstContext): ts.PropertyDeclaration;
7891
+ }
7892
+ //#endregion
7893
+ //#region src/ts-dsl/mixins/type-returns.d.ts
7894
+ interface TypeReturnsMethods extends Node {
7895
+ /** Returns the return type node. */
7896
+ $returns(ctx: AstContext): ts.TypeNode | undefined;
7897
+ /** Sets the return type. */
7898
+ returns(type: TypeExprName | TypeTsDsl): this;
7899
+ }
7900
+ //#endregion
7572
7901
  //#region src/ts-dsl/decl/param.d.ts
7573
7902
  type ParamName = Symbol | string;
7574
7903
  type ParamCtor = (name: ParamName | ((p: ParamTsDsl) => void), fn?: (p: ParamTsDsl) => void) => ParamTsDsl;
7575
- declare const Mixed$46: MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.ParameterDeclaration>, ValueMethods>, PatternMethods>, OptionalMethods>, DecoratorMethods>;
7576
- declare class ParamTsDsl extends Mixed$46 {
7904
+ declare const Mixed$35: MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.ParameterDeclaration>, ValueMethods>, PatternMethods>, OptionalMethods>, DecoratorMethods>;
7905
+ declare class ParamTsDsl extends Mixed$35 {
7577
7906
  readonly '~dsl' = "ParamTsDsl";
7578
7907
  protected name?: Ref<ParamName>;
7579
7908
  protected _type?: TypeTsDsl;
@@ -7581,41 +7910,24 @@ declare class ParamTsDsl extends Mixed$46 {
7581
7910
  analyze(ctx: AnalysisContext): void;
7582
7911
  /** Sets the parameter type. */
7583
7912
  type(type: string | TypeTsDsl): this;
7584
- toAst(): ts.ParameterDeclaration;
7913
+ toAst(ctx: AstContext): ts.ParameterDeclaration;
7585
7914
  }
7586
7915
  //#endregion
7587
7916
  //#region src/ts-dsl/mixins/param.d.ts
7588
7917
  interface ParamMethods extends Node {
7589
7918
  /** Renders the parameters into an array of `ParameterDeclaration`s. */
7590
- $params(): ReadonlyArray<ts.ParameterDeclaration>;
7919
+ $params(ast: AstContext): ReadonlyArray<ts.ParameterDeclaration>;
7591
7920
  /** Adds a parameter. */
7592
7921
  param(...args: Parameters<ParamCtor>): this;
7593
7922
  /** Adds multiple parameters. */
7594
7923
  params(...params: ReadonlyArray<MaybeTsDsl<ts.ParameterDeclaration>>): this;
7595
7924
  }
7596
7925
  //#endregion
7597
- //#region src/ts-dsl/layout/doc.d.ts
7598
- declare class DocTsDsl extends TsDsl<ts.Node> {
7599
- readonly '~dsl' = "DocTsDsl";
7600
- protected _lines: Array<string>;
7601
- constructor(lines?: MaybeArray$1<string>, fn?: (d: DocTsDsl) => void);
7602
- analyze(ctx: AnalysisContext): void;
7603
- add(...lines: ReadonlyArray<string>): this;
7604
- apply<T extends ts.Node>(node: T): T;
7605
- toAst(): ts.Node;
7606
- }
7607
- //#endregion
7608
- //#region src/ts-dsl/mixins/doc.d.ts
7609
- interface DocMethods extends Node {
7610
- $docs<T extends ts.Node>(node: T): T;
7611
- doc(lines?: MaybeArray$1<string>, fn?: (d: DocTsDsl) => void): this;
7612
- }
7613
- //#endregion
7614
7926
  //#region src/ts-dsl/mixins/do.d.ts
7615
7927
  type DoExpr = MaybeTsDsl<ts.Expression | ts.Statement>;
7616
7928
  interface DoMethods extends Node {
7617
7929
  /** Renders the collected `.do()` calls into an array of `Statement` nodes. */
7618
- $do(): ReadonlyArray<ts.Statement>;
7930
+ $do(ctx: AstContext): ReadonlyArray<ts.Statement>;
7619
7931
  _do: Array<DoExpr>;
7620
7932
  /** Adds one or more expressions/statements to the body. */
7621
7933
  do(...items: ReadonlyArray<DoExpr>): this;
@@ -7623,19 +7935,19 @@ interface DoMethods extends Node {
7623
7935
  //#endregion
7624
7936
  //#region src/ts-dsl/decl/getter.d.ts
7625
7937
  type GetterName = string | ts.PropertyName;
7626
- declare const Mixed$45: MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.GetAccessorDeclaration>, StaticMethods>, PublicMethods>, ProtectedMethods>, PrivateMethods>, ParamMethods>, DocMethods>, DoMethods>, DecoratorMethods>, AsyncMethods>, AbstractMethods>;
7627
- declare class GetterTsDsl extends Mixed$45 {
7938
+ declare const Mixed$34: MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.GetAccessorDeclaration>, TypeReturnsMethods>, StaticMethods>, PublicMethods>, ProtectedMethods>, PrivateMethods>, ParamMethods>, DocMethods>, DoMethods>, DecoratorMethods>, AsyncMethods>, AbstractMethods>;
7939
+ declare class GetterTsDsl extends Mixed$34 {
7628
7940
  readonly '~dsl' = "GetterTsDsl";
7629
7941
  protected name: GetterName;
7630
7942
  constructor(name: GetterName, fn?: (g: GetterTsDsl) => void);
7631
7943
  analyze(ctx: AnalysisContext): void;
7632
- toAst(): ts.GetAccessorDeclaration;
7944
+ toAst(ctx: AstContext): ts.GetAccessorDeclaration;
7633
7945
  }
7634
7946
  //#endregion
7635
7947
  //#region src/ts-dsl/stmt/if.d.ts
7636
7948
  type IfCondition = string | MaybeTsDsl<ts.Expression>;
7637
- declare const Mixed$44: MixinCtor<abstract new () => TsDsl<ts.IfStatement>, DoMethods>;
7638
- declare class IfTsDsl extends Mixed$44 {
7949
+ declare const Mixed$33: MixinCtor<abstract new () => TsDsl<ts.IfStatement>, DoMethods>;
7950
+ declare class IfTsDsl extends Mixed$33 {
7639
7951
  readonly '~dsl' = "IfTsDsl";
7640
7952
  protected _condition?: IfCondition;
7641
7953
  protected _else?: Array<DoExpr>;
@@ -7643,25 +7955,72 @@ declare class IfTsDsl extends Mixed$44 {
7643
7955
  analyze(ctx: AnalysisContext): void;
7644
7956
  condition(condition: IfCondition): this;
7645
7957
  otherwise(...items: Array<DoExpr>): this;
7646
- toAst(): ts.IfStatement;
7958
+ toAst(ctx: AstContext): ts.IfStatement;
7959
+ }
7960
+ //#endregion
7961
+ //#region src/ts-dsl/utils/lazy.d.ts
7962
+ type LazyThunk<T extends ts.Node> = (ctx: AstContext) => TsDsl<T>;
7963
+ declare class LazyTsDsl<T extends ts.Node = ts.Node> extends TsDsl<T> {
7964
+ readonly '~dsl' = "LazyTsDsl";
7965
+ private _thunk;
7966
+ constructor(thunk: LazyThunk<T>);
7967
+ analyze(ctx: AnalysisContext): void;
7968
+ toAst(ctx: AstContext): T;
7969
+ }
7970
+ //#endregion
7971
+ //#region src/ts-dsl/expr/new.d.ts
7972
+ type NewExpr = Symbol | string | MaybeTsDsl<ts.Expression>;
7973
+ declare const Mixed$32: MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.NewExpression>, TypeArgsMethods>, ExprMethods>, ArgsMethods>;
7974
+ declare class NewTsDsl extends Mixed$32 {
7975
+ readonly '~dsl' = "NewTsDsl";
7976
+ protected classExpr: Ref<NewExpr>;
7977
+ constructor(classExpr: NewExpr, ...args: ReadonlyArray<NewExpr>);
7978
+ analyze(ctx: AnalysisContext): void;
7979
+ toAst(ctx: AstContext): ts.NewExpression;
7980
+ }
7981
+ //#endregion
7982
+ //#region src/ts-dsl/layout/note.d.ts
7983
+ type NoteMaybeLazy<T> = ((ctx: AstContext) => T) | T;
7984
+ type NoteFn = (d: NoteTsDsl) => void;
7985
+ type NoteLines = NoteMaybeLazy<MaybeArray$1<string>>;
7986
+ declare class NoteTsDsl extends TsDsl<ts.Node> {
7987
+ readonly '~dsl' = "NoteTsDsl";
7988
+ protected _lines: Array<NoteLines>;
7989
+ constructor(lines?: NoteLines, fn?: NoteFn);
7990
+ analyze(ctx: AnalysisContext): void;
7991
+ add(lines: NoteLines): this;
7992
+ apply<T extends ts.Node>(ctx: AstContext, node: T): T;
7993
+ toAst(ctx: AstContext): ts.Node;
7647
7994
  }
7648
7995
  //#endregion
7649
7996
  //#region src/ts-dsl/decl/setter.d.ts
7650
7997
  type SetterName = string | ts.PropertyName;
7651
- declare const Mixed$43: MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.SetAccessorDeclaration>, StaticMethods>, PublicMethods>, ProtectedMethods>, PrivateMethods>, ParamMethods>, DocMethods>, DoMethods>, DecoratorMethods>, AsyncMethods>, AbstractMethods>;
7652
- declare class SetterTsDsl extends Mixed$43 {
7998
+ declare const Mixed$31: MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.SetAccessorDeclaration>, StaticMethods>, PublicMethods>, ProtectedMethods>, PrivateMethods>, ParamMethods>, DocMethods>, DoMethods>, DecoratorMethods>, AsyncMethods>, AbstractMethods>;
7999
+ declare class SetterTsDsl extends Mixed$31 {
7653
8000
  readonly '~dsl' = "SetterTsDsl";
7654
8001
  protected name: SetterName;
7655
8002
  constructor(name: SetterName, fn?: (s: SetterTsDsl) => void);
7656
8003
  analyze(ctx: AnalysisContext): void;
7657
- toAst(): ts.SetAccessorDeclaration;
8004
+ toAst(ctx: AstContext): ts.SetAccessorDeclaration;
8005
+ }
8006
+ //#endregion
8007
+ //#region src/ts-dsl/expr/template.d.ts
8008
+ type TemplatePart = Symbol | string | MaybeTsDsl<ts.Expression>;
8009
+ declare const Mixed$30: abstract new () => TsDsl<ts.NoSubstitutionTemplateLiteral | ts.TemplateExpression>;
8010
+ declare class TemplateTsDsl extends Mixed$30 {
8011
+ readonly '~dsl' = "TemplateTsDsl";
8012
+ protected parts: Array<Ref<TemplatePart>>;
8013
+ constructor(value?: TemplatePart);
8014
+ analyze(ctx: AnalysisContext): void;
8015
+ add(value: TemplatePart): this;
8016
+ toAst(ctx: AstContext): ts.NoSubstitutionTemplateLiteral | ts.TemplateExpression;
7658
8017
  }
7659
8018
  //#endregion
7660
8019
  //#region src/ts-dsl/type/param.d.ts
7661
8020
  type TypeParamName = Symbol | string;
7662
8021
  type TypeParamExpr = Symbol | string | boolean | MaybeTsDsl<TypeTsDsl>;
7663
- declare const Mixed$42: abstract new () => TypeTsDsl<ts.TypeParameterDeclaration>;
7664
- declare class TypeParamTsDsl extends Mixed$42 {
8022
+ declare const Mixed$29: abstract new () => TsDsl<ts.TypeParameterDeclaration>;
8023
+ declare class TypeParamTsDsl extends Mixed$29 {
7665
8024
  readonly '~dsl' = "TypeParamTsDsl";
7666
8025
  protected constraint?: Ref<TypeParamExpr>;
7667
8026
  protected defaultValue?: Ref<TypeParamExpr>;
@@ -7670,187 +8029,44 @@ declare class TypeParamTsDsl extends Mixed$42 {
7670
8029
  analyze(ctx: AnalysisContext): void;
7671
8030
  default(value: TypeParamExpr): this;
7672
8031
  extends(constraint: TypeParamExpr): this;
7673
- toAst(): ts.TypeParameterDeclaration;
8032
+ toAst(ctx: AstContext): ts.TypeParameterDeclaration;
7674
8033
  }
7675
8034
  //#endregion
7676
8035
  //#region src/ts-dsl/mixins/type-params.d.ts
7677
8036
  interface TypeParamsMethods extends Node {
7678
8037
  /** Returns the type parameters as an array of ts.TypeParameterDeclaration nodes. */
7679
- $generics(): ReadonlyArray<ts.TypeParameterDeclaration> | undefined;
8038
+ $generics(ast: AstContext): ReadonlyArray<ts.TypeParameterDeclaration> | undefined;
7680
8039
  /** Adds a single type parameter (e.g. `T` in `Array<T>`). */
7681
8040
  generic(...args: ConstructorParameters<typeof TypeParamTsDsl>): this;
7682
8041
  /** Adds type parameters (e.g. `Map<string, T>`). */
7683
8042
  generics(...args: ReadonlyArray<Symbol | string | MaybeTsDsl<TypeParamTsDsl>>): this;
7684
8043
  }
7685
8044
  //#endregion
7686
- //#region src/ts-dsl/expr/typeof.d.ts
7687
- declare const Mixed$41: MixinCtor<abstract new () => TsDsl<ts.TypeOfExpression>, OperatorMethods>;
7688
- declare class TypeOfExprTsDsl extends Mixed$41 {
7689
- readonly '~dsl' = "TypeOfExprTsDsl";
7690
- protected _expr: string | MaybeTsDsl<ts.Expression>;
7691
- constructor(expr: string | MaybeTsDsl<ts.Expression>);
7692
- analyze(ctx: AnalysisContext): void;
7693
- toAst(): ts.TypeOfExpression;
7694
- }
7695
- //#endregion
7696
- //#region src/ts-dsl/type/idx.d.ts
7697
- type Base$2 = string | MaybeTsDsl<ts.TypeNode>;
7698
- type Index = string | number | MaybeTsDsl<ts.TypeNode>;
7699
- declare const Mixed$40: MixinCtor<abstract new () => TypeTsDsl<ts.IndexedAccessTypeNode>, TypeExprMethods>;
7700
- declare class TypeIdxTsDsl extends Mixed$40 {
7701
- readonly '~dsl' = "TypeIdxTsDsl";
7702
- protected _base: Base$2;
7703
- protected _index: Index;
7704
- constructor(base: Base$2, index: Index);
7705
- analyze(ctx: AnalysisContext): void;
7706
- base(base: Base$2): this;
7707
- index(index: Index): this;
7708
- toAst(): ts.IndexedAccessTypeNode;
7709
- }
7710
- //#endregion
7711
- //#region src/ts-dsl/type/operator.d.ts
7712
- type Op = ts.SyntaxKind.KeyOfKeyword | ts.SyntaxKind.ReadonlyKeyword | ts.SyntaxKind.UniqueKeyword;
7713
- type Type$2 = string | MaybeTsDsl<ts.TypeNode>;
7714
- declare const Mixed$39: abstract new () => TypeTsDsl<ts.TypeOperatorNode>;
7715
- /**
7716
- * Builds a TypeScript `TypeOperatorNode`, such as:
7717
- *
7718
- * - `keyof T`
7719
- * - `readonly U`
7720
- * - `unique V`
7721
- *
7722
- * This DSL provides both a generic `.operator()` API and convenient
7723
- * shorthand methods (`.keyof()`, `.readonly()`, `.unique()`).
7724
- *
7725
- * The node will throw during render if required fields are missing.
7726
- */
7727
- declare class TypeOperatorTsDsl extends Mixed$39 {
7728
- readonly '~dsl' = "TypeOperatorTsDsl";
7729
- protected _op?: Op;
7730
- protected _type?: Type$2;
7731
- analyze(ctx: AnalysisContext): void;
7732
- /** Shorthand: builds `keyof T`. */
7733
- keyof(type: Type$2): this;
7734
- /** Sets the operator explicitly. */
7735
- operator(op: Op): this;
7736
- /** Shorthand: builds `readonly T`. */
7737
- readonly(type: Type$2): this;
7738
- /** Sets the target type of the operator. */
7739
- type(type: Type$2): this;
7740
- /** Shorthand: builds `unique T`. */
7741
- unique(type: Type$2): this;
7742
- toAst(): ts.TypeOperatorNode;
7743
- /** Throws if required fields are not set. */
7744
- $validate(): asserts this is this & {
7745
- _op: Op;
7746
- _type: Type$2;
7747
- };
7748
- private missingRequiredCalls;
7749
- }
7750
- //#endregion
7751
- //#region src/ts-dsl/type/query.d.ts
7752
- declare const Mixed$38: MixinCtor<abstract new () => TypeTsDsl<ts.TypeQueryNode>, TypeExprMethods>;
7753
- declare class TypeQueryTsDsl extends Mixed$38 {
7754
- readonly '~dsl' = "TypeQueryTsDsl";
7755
- protected _expr: string | MaybeTsDsl<TypeTsDsl | ts.Expression>;
7756
- constructor(expr: string | MaybeTsDsl<TypeTsDsl | ts.Expression>);
7757
- analyze(ctx: AnalysisContext): void;
7758
- toAst(): ts.TypeQueryNode;
7759
- }
7760
- //#endregion
7761
- //#region src/ts-dsl/mixins/type-expr.d.ts
7762
- interface TypeExprMethods extends Node {
7763
- /** Creates an indexed-access type (e.g. `Foo<T>[K]`). */
7764
- idx(this: MaybeTsDsl<TypeTsDsl>, index: string | number | MaybeTsDsl<ts.TypeNode>): TypeIdxTsDsl;
7765
- /** Shorthand: builds `keyof T`. */
7766
- keyof(this: MaybeTsDsl<TypeTsDsl>): TypeOperatorTsDsl;
7767
- /** Shorthand: builds `readonly T`. */
7768
- readonly(this: MaybeTsDsl<TypeTsDsl>): TypeOperatorTsDsl;
7769
- /** Create a TypeExpr node representing ReturnType<this>. */
7770
- returnType(this: MaybeTsDsl<ts.Expression>): TypeExprTsDsl;
7771
- /** Create a TypeOfExpr node representing typeof this. */
7772
- typeofExpr(this: MaybeTsDsl<ts.Expression>): TypeOfExprTsDsl;
7773
- /** Create a TypeQuery node representing typeof this. */
7774
- typeofType(this: MaybeTsDsl<TypeTsDsl | ts.Expression>): TypeQueryTsDsl;
7775
- /** Shorthand: builds `unique T`. */
7776
- unique(this: MaybeTsDsl<TypeTsDsl>): TypeOperatorTsDsl;
7777
- }
7778
- //#endregion
7779
- //#region src/ts-dsl/type/attr.d.ts
7780
- type Base$1 = Symbol | string | MaybeTsDsl<ts.EntityName>;
7781
- type Right = Symbol | string | ts.Identifier;
7782
- declare const Mixed$37: MixinCtor<abstract new () => TypeTsDsl<ts.QualifiedName>, TypeExprMethods>;
7783
- declare class TypeAttrTsDsl extends Mixed$37 {
7784
- readonly '~dsl' = "TypeAttrTsDsl";
7785
- protected _base?: Ref<Base$1>;
7786
- protected _right: Ref<Right>;
7787
- constructor(base: Base$1 | Ref<Base$1>, right: string | ts.Identifier);
7788
- constructor(right: Right);
7789
- analyze(ctx: AnalysisContext): void;
7790
- base(base?: Base$1 | Ref<Base$1>): this;
7791
- right(right: Right): this;
7792
- toAst(): ts.QualifiedName;
7793
- }
7794
- //#endregion
7795
- //#region src/ts-dsl/type/expr.d.ts
7796
- type TypeExprName = Symbol | string;
7797
- type TypeExprExpr = TypeExprName | TypeAttrTsDsl;
7798
- declare const Mixed$36: MixinCtor<MixinCtor<abstract new () => TypeTsDsl<ts.TypeReferenceNode>, TypeExprMethods>, TypeArgsMethods>;
7799
- declare class TypeExprTsDsl extends Mixed$36 {
7800
- readonly '~dsl' = "TypeExprTsDsl";
7801
- protected _exprInput?: Ref<TypeExprExpr>;
7802
- constructor();
7803
- constructor(fn: (t: TypeExprTsDsl) => void);
7804
- constructor(name: TypeExprName);
7805
- constructor(name: TypeExprName, fn?: (t: TypeExprTsDsl) => void);
7806
- analyze(ctx: AnalysisContext): void;
7807
- /** Accesses a nested type (e.g. `Foo.Bar`). */
7808
- attr(right: string | ts.Identifier | TypeAttrTsDsl): this;
7809
- toAst(): ts.TypeReferenceNode;
7810
- }
7811
- //#endregion
7812
- //#region src/ts-dsl/decl/field.d.ts
7813
- type FieldType = TypeExprName | TypeTsDsl;
7814
- declare const Mixed$35: MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.PropertyDeclaration>, ValueMethods>, StaticMethods>, ReadonlyMethods>, PublicMethods>, ProtectedMethods>, PrivateMethods>, DocMethods>, DecoratorMethods>;
7815
- declare class FieldTsDsl extends Mixed$35 {
7816
- readonly '~dsl' = "FieldTsDsl";
7817
- protected name: string;
7818
- protected _type?: TypeTsDsl;
7819
- constructor(name: string, fn?: (f: FieldTsDsl) => void);
7820
- analyze(ctx: AnalysisContext): void;
7821
- /** Sets the field type. */
7822
- type(type: FieldType): this;
7823
- toAst(): ts.PropertyDeclaration;
7824
- }
7825
- //#endregion
7826
8045
  //#region src/ts-dsl/decl/init.d.ts
7827
- declare const Mixed$34: MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.ConstructorDeclaration>, PublicMethods>, ProtectedMethods>, PrivateMethods>, ParamMethods>, DocMethods>, DoMethods>, DecoratorMethods>;
7828
- declare class InitTsDsl extends Mixed$34 {
8046
+ declare const Mixed$28: MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.ConstructorDeclaration>, PublicMethods>, ProtectedMethods>, PrivateMethods>, ParamMethods>, DocMethods>, DoMethods>, DecoratorMethods>;
8047
+ declare class InitTsDsl extends Mixed$28 {
7829
8048
  readonly '~dsl' = "InitTsDsl";
7830
8049
  constructor(fn?: (i: InitTsDsl) => void);
7831
8050
  analyze(ctx: AnalysisContext): void;
7832
- toAst(): ts.ConstructorDeclaration;
8051
+ toAst(ctx: AstContext): ts.ConstructorDeclaration;
7833
8052
  }
7834
8053
  //#endregion
7835
8054
  //#region src/ts-dsl/decl/method.d.ts
7836
- declare const Mixed$33: MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.MethodDeclaration>, TypeParamsMethods>, StaticMethods>, PublicMethods>, ProtectedMethods>, PrivateMethods>, ParamMethods>, OptionalMethods>, DocMethods>, DoMethods>, DecoratorMethods>, AsyncMethods>, AbstractMethods>;
7837
- declare class MethodTsDsl extends Mixed$33 {
8055
+ declare const Mixed$27: MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.MethodDeclaration>, TypeReturnsMethods>, TypeParamsMethods>, StaticMethods>, PublicMethods>, ProtectedMethods>, PrivateMethods>, ParamMethods>, OptionalMethods>, DocMethods>, DoMethods>, DecoratorMethods>, AsyncMethods>, AbstractMethods>;
8056
+ declare class MethodTsDsl extends Mixed$27 {
7838
8057
  readonly '~dsl' = "MethodTsDsl";
7839
8058
  protected name: string;
7840
- protected _returns?: TypeTsDsl;
7841
8059
  constructor(name: string, fn?: (m: MethodTsDsl) => void);
7842
8060
  analyze(ctx: AnalysisContext): void;
7843
- /** Sets the return type. */
7844
- returns(type: string | TypeTsDsl): this;
7845
- toAst(): ts.MethodDeclaration;
8061
+ toAst(ctx: AstContext): ts.MethodDeclaration;
7846
8062
  }
7847
8063
  //#endregion
7848
8064
  //#region src/ts-dsl/decl/class.d.ts
7849
8065
  type Base = Symbol | string;
7850
8066
  type Name$1 = Symbol | string;
7851
8067
  type Body = Array<MaybeTsDsl<ts.ClassElement | ts.Node>>;
7852
- declare const Mixed$32: MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.ClassDeclaration>, TypeParamsMethods>, ExportMethods>, DocMethods>, DefaultMethods>, DecoratorMethods>, AbstractMethods>;
7853
- declare class ClassTsDsl extends Mixed$32 {
8068
+ declare const Mixed$26: MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.ClassDeclaration>, TypeParamsMethods>, ExportMethods>, DocMethods>, DefaultMethods>, DecoratorMethods>, AbstractMethods>;
8069
+ declare class ClassTsDsl extends Mixed$26 {
7854
8070
  readonly '~dsl' = "ClassTsDsl";
7855
8071
  protected baseClass?: Ref<Base>;
7856
8072
  protected body: Body;
@@ -7862,71 +8078,26 @@ declare class ClassTsDsl extends Mixed$32 {
7862
8078
  /** Records a base class to extend from. */
7863
8079
  extends(base?: Base): this;
7864
8080
  /** Adds a class field. */
7865
- field(name: string, fn?: (f: FieldTsDsl) => void): this;
8081
+ field(name: FieldName, fn?: (f: FieldTsDsl) => void): this;
7866
8082
  /** Adds a class constructor. */
7867
8083
  init(fn?: (i: InitTsDsl) => void): this;
7868
8084
  /** Adds a class method. */
7869
8085
  method(name: string, fn?: (m: MethodTsDsl) => void): this;
7870
8086
  /** Inserts an empty line between members for formatting. */
7871
8087
  newline(): this;
7872
- toAst(): ts.ClassDeclaration;
8088
+ toAst(ctx: AstContext): ts.ClassDeclaration;
7873
8089
  /** Builds heritage clauses (extends). */
7874
8090
  private _heritage;
7875
8091
  }
7876
8092
  //#endregion
7877
- //#region src/ts-dsl/decl/decorator.d.ts
7878
- type DecoratorName = Symbol | string | MaybeTsDsl<ts.Expression>;
7879
- declare const Mixed$31: MixinCtor<abstract new () => TsDsl<ts.Decorator>, ArgsMethods>;
7880
- declare class DecoratorTsDsl extends Mixed$31 {
7881
- readonly '~dsl' = "DecoratorTsDsl";
7882
- protected name: Ref<DecoratorName>;
7883
- constructor(name: DecoratorName, ...args: ReadonlyArray<string | MaybeTsDsl<ts.Expression>>);
7884
- analyze(ctx: AnalysisContext): void;
7885
- toAst(): ts.Decorator;
7886
- }
7887
- //#endregion
7888
- //#region src/ts-dsl/decl/member.d.ts
7889
- type Value$2 = string | number | MaybeTsDsl<ts.Expression>;
7890
- type ValueFn$1 = Value$2 | ((m: EnumMemberTsDsl) => void);
7891
- declare const Mixed$30: MixinCtor<abstract new () => TsDsl<ts.EnumMember>, DocMethods>;
7892
- declare class EnumMemberTsDsl extends Mixed$30 {
7893
- readonly '~dsl' = "EnumMemberTsDsl";
7894
- private _name;
7895
- private _value?;
7896
- constructor(name: string, value?: ValueFn$1);
7897
- analyze(ctx: AnalysisContext): void;
7898
- /** Sets the enum member value. */
7899
- value(value?: Value$2): this;
7900
- toAst(): ts.EnumMember;
7901
- }
7902
- //#endregion
7903
- //#region src/ts-dsl/decl/enum.d.ts
7904
- type EnumName = Symbol | string;
7905
- type Value$1 = string | number | MaybeTsDsl<ts.Expression>;
7906
- type ValueFn = Value$1 | ((m: EnumMemberTsDsl) => void);
7907
- declare const Mixed$29: MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.EnumDeclaration>, ExportMethods>, DocMethods>, ConstMethods>;
7908
- declare class EnumTsDsl extends Mixed$29 {
7909
- readonly '~dsl' = "EnumTsDsl";
7910
- private _members;
7911
- private _name;
7912
- constructor(name: EnumName, fn?: (e: EnumTsDsl) => void);
7913
- analyze(ctx: AnalysisContext): void;
7914
- /** Adds an enum member. */
7915
- member(name: string, value?: ValueFn): this;
7916
- /** Adds multiple enum members. */
7917
- members(...members: ReadonlyArray<EnumMemberTsDsl>): this;
7918
- toAst(): ts.EnumDeclaration;
7919
- }
7920
- //#endregion
7921
8093
  //#region src/ts-dsl/decl/func.d.ts
7922
8094
  type FuncMode = 'arrow' | 'decl' | 'expr';
7923
8095
  type FuncName = Symbol | string;
7924
- declare const Mixed$28: MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.ArrowFunction>, TypeParamsMethods>, StaticMethods>, PublicMethods>, ProtectedMethods>, PrivateMethods>, ParamMethods>, DocMethods>, DoMethods>, DecoratorMethods>, AsyncMethods>, AsMethods>, AbstractMethods>;
7925
- declare class ImplFuncTsDsl<M extends FuncMode = 'arrow'> extends Mixed$28 {
8096
+ declare const Mixed$25: MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.ArrowFunction>, TypeReturnsMethods>, TypeParamsMethods>, StaticMethods>, PublicMethods>, ProtectedMethods>, PrivateMethods>, ParamMethods>, DocMethods>, DoMethods>, DecoratorMethods>, AsyncMethods>, AsMethods>, AbstractMethods>;
8097
+ declare class ImplFuncTsDsl<M extends FuncMode = 'arrow'> extends Mixed$25 {
7926
8098
  readonly '~dsl' = "FuncTsDsl";
7927
8099
  protected mode?: FuncMode;
7928
8100
  protected name?: Ref<FuncName>;
7929
- protected _returns?: TypeTsDsl;
7930
8101
  constructor();
7931
8102
  constructor(fn: (f: ImplFuncTsDsl<'arrow'>) => void);
7932
8103
  constructor(name: FuncName);
@@ -7938,9 +8109,7 @@ declare class ImplFuncTsDsl<M extends FuncMode = 'arrow'> extends Mixed$28 {
7938
8109
  decl(): FuncTsDsl<'decl'>;
7939
8110
  /** Switches the function to a function expression form. */
7940
8111
  expr(): FuncTsDsl<'expr'>;
7941
- /** Sets the return type. */
7942
- returns(type: string | TypeTsDsl): this;
7943
- toAst(): M extends 'decl' ? ts.FunctionDeclaration : M extends 'expr' ? ts.FunctionExpression : ts.ArrowFunction;
8112
+ toAst(ctx: AstContext): M extends 'decl' ? ts.FunctionDeclaration : M extends 'expr' ? ts.FunctionExpression : ts.ArrowFunction;
7944
8113
  }
7945
8114
  declare const FuncTsDsl: {
7946
8115
  new (): FuncTsDsl<"arrow">;
@@ -7951,11 +8120,11 @@ declare const FuncTsDsl: {
7951
8120
  type FuncTsDsl<M extends FuncMode = 'arrow'> = ImplFuncTsDsl<M>;
7952
8121
  //#endregion
7953
8122
  //#region src/ts-dsl/decl/pattern.d.ts
7954
- declare const Mixed$27: abstract new () => TsDsl<ts.BindingName>;
8123
+ declare const Mixed$24: abstract new () => TsDsl<ts.BindingName>;
7955
8124
  /**
7956
8125
  * Builds binding patterns (e.g. `{ foo, bar }`, `[a, b, ...rest]`).
7957
8126
  */
7958
- declare class PatternTsDsl extends Mixed$27 {
8127
+ declare class PatternTsDsl extends Mixed$24 {
7959
8128
  readonly '~dsl' = "PatternTsDsl";
7960
8129
  protected pattern?: {
7961
8130
  kind: 'array';
@@ -7972,7 +8141,7 @@ declare class PatternTsDsl extends Mixed$27 {
7972
8141
  object(...props: ReadonlyArray<MaybeArray$1<string> | Record<string, string>>): this;
7973
8142
  /** Adds a spread element (e.g. `...rest`, `...options`, `...args`). */
7974
8143
  spread(name: string): this;
7975
- toAst(): ts.ObjectBindingPattern | ts.ArrayBindingPattern;
8144
+ toAst(ctx: AstContext): ts.ObjectBindingPattern | ts.ArrayBindingPattern;
7976
8145
  private createSpread;
7977
8146
  }
7978
8147
  //#endregion
@@ -7989,8 +8158,8 @@ interface LayoutMethods extends Node {
7989
8158
  }
7990
8159
  //#endregion
7991
8160
  //#region src/ts-dsl/expr/array.d.ts
7992
- declare const Mixed$26: MixinCtor<MixinCtor<abstract new () => TsDsl<ts.ArrayLiteralExpression>, LayoutMethods>, AsMethods>;
7993
- declare class ArrayTsDsl extends Mixed$26 {
8161
+ declare const Mixed$23: MixinCtor<MixinCtor<abstract new () => TsDsl<ts.ArrayLiteralExpression>, LayoutMethods>, AsMethods>;
8162
+ declare class ArrayTsDsl extends Mixed$23 {
7994
8163
  readonly '~dsl' = "ArrayTsDsl";
7995
8164
  protected _elements: Array<{
7996
8165
  expr: MaybeTsDsl<ts.Expression>;
@@ -8007,23 +8176,23 @@ declare class ArrayTsDsl extends Mixed$26 {
8007
8176
  elements(...exprs: ReadonlyArray<string | number | boolean | MaybeTsDsl<ts.Expression>>): this;
8008
8177
  /** Adds a spread element (`...expr`). */
8009
8178
  spread(expr: MaybeTsDsl<ts.Expression>): this;
8010
- toAst(): ts.ArrayLiteralExpression;
8179
+ toAst(ctx: AstContext): ts.ArrayLiteralExpression;
8011
8180
  }
8012
8181
  //#endregion
8013
8182
  //#region src/ts-dsl/expr/expr.d.ts
8014
8183
  type Id = Symbol | string | MaybeTsDsl<ts.Expression>;
8015
- declare const Mixed$25: MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.Expression>, TypeExprMethods>, OperatorMethods>, ExprMethods>, AsMethods>;
8016
- declare class ExprTsDsl extends Mixed$25 {
8184
+ declare const Mixed$22: MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.Expression>, TypeExprMethods>, OperatorMethods>, ExprMethods>, AsMethods>;
8185
+ declare class ExprTsDsl extends Mixed$22 {
8017
8186
  readonly '~dsl' = "ExprTsDsl";
8018
8187
  protected _exprInput: Ref<Id>;
8019
8188
  constructor(id: Id);
8020
8189
  analyze(ctx: AnalysisContext): void;
8021
- toAst(): any;
8190
+ toAst(ctx: AstContext): ts.Expression;
8022
8191
  }
8023
8192
  //#endregion
8024
8193
  //#region src/ts-dsl/expr/id.d.ts
8025
- declare const Mixed$24: abstract new () => TsDsl<ts.Identifier>;
8026
- declare class IdTsDsl extends Mixed$24 {
8194
+ declare const Mixed$21: abstract new () => TsDsl<ts.Identifier>;
8195
+ declare class IdTsDsl extends Mixed$21 {
8027
8196
  readonly '~dsl' = "IdTsDsl";
8028
8197
  protected name: string;
8029
8198
  constructor(name: string);
@@ -8032,41 +8201,13 @@ declare class IdTsDsl extends Mixed$24 {
8032
8201
  }
8033
8202
  //#endregion
8034
8203
  //#region src/ts-dsl/expr/literal.d.ts
8035
- declare const Mixed$23: MixinCtor<abstract new () => TsDsl<ts.LiteralExpression | ts.NullLiteral | ts.BooleanLiteral | ts.PrefixUnaryExpression>, AsMethods>;
8036
- declare class LiteralTsDsl extends Mixed$23 {
8204
+ declare const Mixed$20: MixinCtor<abstract new () => TsDsl<ts.LiteralExpression | ts.NullLiteral | ts.BooleanLiteral | ts.PrefixUnaryExpression>, AsMethods>;
8205
+ declare class LiteralTsDsl extends Mixed$20 {
8037
8206
  readonly '~dsl' = "LiteralTsDsl";
8038
8207
  protected value: string | number | boolean | null;
8039
8208
  constructor(value: string | number | boolean | null);
8040
8209
  analyze(ctx: AnalysisContext): void;
8041
- toAst(): any;
8042
- }
8043
- //#endregion
8044
- //#region src/ts-dsl/expr/new.d.ts
8045
- type NewExpr = Symbol | string | MaybeTsDsl<ts.Expression>;
8046
- declare const Mixed$22: MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.NewExpression>, TypeArgsMethods>, ExprMethods>, ArgsMethods>;
8047
- declare class NewTsDsl extends Mixed$22 {
8048
- readonly '~dsl' = "NewTsDsl";
8049
- protected classExpr: Ref<NewExpr>;
8050
- constructor(classExpr: NewExpr, ...args: ReadonlyArray<NewExpr>);
8051
- analyze(ctx: AnalysisContext): void;
8052
- toAst(): ts.NewExpression;
8053
- }
8054
- //#endregion
8055
- //#region src/ts-dsl/layout/hint.d.ts
8056
- declare class HintTsDsl extends TsDsl<ts.Node> {
8057
- readonly '~dsl' = "HintTsDsl";
8058
- protected _lines: Array<string>;
8059
- constructor(lines?: MaybeArray$1<string>, fn?: (d: HintTsDsl) => void);
8060
- analyze(ctx: AnalysisContext): void;
8061
- add(...lines: ReadonlyArray<string>): this;
8062
- apply<T extends ts.Node>(node: T): T;
8063
- toAst(): ts.Node;
8064
- }
8065
- //#endregion
8066
- //#region src/ts-dsl/mixins/hint.d.ts
8067
- interface HintMethods extends Node {
8068
- $hint<T extends ts.Node>(node: T): T;
8069
- hint(lines?: MaybeArray$1<string>, fn?: (h: HintTsDsl) => void): this;
8210
+ toAst(ctx: AstContext): ts.StringLiteral | ts.NumericLiteral | ts.NullLiteral | ts.TrueLiteral | ts.FalseLiteral | ts.PrefixUnaryExpression;
8070
8211
  }
8071
8212
  //#endregion
8072
8213
  //#region src/ts-dsl/expr/prop.d.ts
@@ -8089,8 +8230,8 @@ type Meta = {
8089
8230
  kind: 'spread';
8090
8231
  name?: undefined;
8091
8232
  };
8092
- declare const Mixed$21: MixinCtor<abstract new () => TsDsl<ts.ObjectLiteralElementLike>, DocMethods>;
8093
- declare class ObjectPropTsDsl extends Mixed$21 {
8233
+ declare const Mixed$19: MixinCtor<abstract new () => TsDsl<ts.ObjectLiteralElementLike>, DocMethods>;
8234
+ declare class ObjectPropTsDsl extends Mixed$19 {
8094
8235
  readonly '~dsl' = "ObjectPropTsDsl";
8095
8236
  protected _value?: Ref<Expr$1 | Stmt$1>;
8096
8237
  protected meta: Meta;
@@ -8099,7 +8240,7 @@ declare class ObjectPropTsDsl extends Mixed$21 {
8099
8240
  /** Returns true when all required builder calls are present. */
8100
8241
  get isValid(): boolean;
8101
8242
  value(value: Expr$1 | Stmt$1 | ((p: ObjectPropTsDsl) => void)): this;
8102
- toAst(): any;
8243
+ toAst(ctx: AstContext): ts.GetAccessorDeclaration | ts.SetAccessorDeclaration | ts.PropertyAssignment | ts.ShorthandPropertyAssignment | ts.SpreadAssignment;
8103
8244
  $validate(): asserts this is this & {
8104
8245
  _value: Expr$1 | Stmt$1;
8105
8246
  kind: Kind;
@@ -8112,8 +8253,8 @@ type Expr = Symbol | string | MaybeTsDsl<ts.Expression>;
8112
8253
  type Stmt = Symbol | string | MaybeTsDsl<ts.Statement>;
8113
8254
  type ExprFn = Expr | ((p: ObjectPropTsDsl) => void);
8114
8255
  type StmtFn = Stmt | ((p: ObjectPropTsDsl) => void);
8115
- declare const Mixed$20: MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.ObjectLiteralExpression>, LayoutMethods>, HintMethods>, ExprMethods>, AsMethods>;
8116
- declare class ObjectTsDsl extends Mixed$20 {
8256
+ declare const Mixed$18: MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.ObjectLiteralExpression>, LayoutMethods>, HintMethods>, ExprMethods>, AsMethods>;
8257
+ declare class ObjectTsDsl extends Mixed$18 {
8117
8258
  readonly '~dsl' = "ObjectTsDsl";
8118
8259
  protected _props: Array<ObjectPropTsDsl>;
8119
8260
  constructor(...props: Array<ObjectPropTsDsl>);
@@ -8134,12 +8275,12 @@ declare class ObjectTsDsl extends Mixed$20 {
8134
8275
  setter(name: string, stmt: StmtFn): this;
8135
8276
  /** Adds a spread property (e.g. `{ ...options }`). */
8136
8277
  spread(expr: ExprFn): this;
8137
- toAst(): ts.ObjectLiteralExpression;
8278
+ toAst(ctx: AstContext): ts.ObjectLiteralExpression;
8138
8279
  }
8139
8280
  //#endregion
8140
8281
  //#region src/ts-dsl/expr/prefix.d.ts
8141
- declare const Mixed$19: abstract new () => TsDsl<ts.PrefixUnaryExpression>;
8142
- declare class PrefixTsDsl extends Mixed$19 {
8282
+ declare const Mixed$17: abstract new () => TsDsl<ts.PrefixUnaryExpression>;
8283
+ declare class PrefixTsDsl extends Mixed$17 {
8143
8284
  readonly '~dsl' = "PrefixTsDsl";
8144
8285
  protected _expr?: string | MaybeTsDsl<ts.Expression>;
8145
8286
  protected _op?: ts.PrefixUnaryOperator;
@@ -8153,14 +8294,14 @@ declare class PrefixTsDsl extends Mixed$19 {
8153
8294
  not(): this;
8154
8295
  /** Sets the operator (e.g. `ts.SyntaxKind.ExclamationToken` for `!`). */
8155
8296
  op(op: ts.PrefixUnaryOperator): this;
8156
- toAst(): ts.PrefixUnaryExpression;
8297
+ toAst(ctx: AstContext): ts.PrefixUnaryExpression;
8157
8298
  }
8158
8299
  //#endregion
8159
8300
  //#region src/ts-dsl/expr/regexp.d.ts
8160
8301
  type RegexFlag = 'g' | 'i' | 'm' | 's' | 'u' | 'y';
8161
8302
  type RegexFlags<Avail extends string = RegexFlag> = '' | { [K in Avail]: `${K}${RegexFlags<Exclude<Avail, K>>}` }[Avail];
8162
- declare const Mixed$18: abstract new () => TsDsl<ts.RegularExpressionLiteral>;
8163
- declare class RegExpTsDsl extends Mixed$18 {
8303
+ declare const Mixed$16: abstract new () => TsDsl<ts.RegularExpressionLiteral>;
8304
+ declare class RegExpTsDsl extends Mixed$16 {
8164
8305
  readonly '~dsl' = "RegExpTsDsl";
8165
8306
  protected pattern: string;
8166
8307
  protected flags?: RegexFlags;
@@ -8169,21 +8310,9 @@ declare class RegExpTsDsl extends Mixed$18 {
8169
8310
  toAst(): ts.RegularExpressionLiteral;
8170
8311
  }
8171
8312
  //#endregion
8172
- //#region src/ts-dsl/expr/template.d.ts
8173
- type TemplatePart = Symbol | string | MaybeTsDsl<ts.Expression>;
8174
- declare const Mixed$17: abstract new () => TsDsl<ts.NoSubstitutionTemplateLiteral | ts.TemplateExpression>;
8175
- declare class TemplateTsDsl extends Mixed$17 {
8176
- readonly '~dsl' = "TemplateTsDsl";
8177
- protected parts: Array<Ref<TemplatePart>>;
8178
- constructor(value?: TemplatePart);
8179
- analyze(ctx: AnalysisContext): void;
8180
- add(value: TemplatePart): this;
8181
- toAst(): ts.NoSubstitutionTemplateLiteral | ts.TemplateExpression;
8182
- }
8183
- //#endregion
8184
8313
  //#region src/ts-dsl/expr/ternary.d.ts
8185
- declare const Mixed$16: abstract new () => TsDsl<ts.ConditionalExpression>;
8186
- declare class TernaryTsDsl extends Mixed$16 {
8314
+ declare const Mixed$15: abstract new () => TsDsl<ts.ConditionalExpression>;
8315
+ declare class TernaryTsDsl extends Mixed$15 {
8187
8316
  readonly '~dsl' = "TernaryTsDsl";
8188
8317
  protected _condition?: string | MaybeTsDsl<ts.Expression>;
8189
8318
  protected _then?: string | MaybeTsDsl<ts.Expression>;
@@ -8193,49 +8322,38 @@ declare class TernaryTsDsl extends Mixed$16 {
8193
8322
  condition(condition: string | MaybeTsDsl<ts.Expression>): this;
8194
8323
  do(expr: string | MaybeTsDsl<ts.Expression>): this;
8195
8324
  otherwise(expr: string | MaybeTsDsl<ts.Expression>): this;
8196
- toAst(): ts.ConditionalExpression;
8325
+ toAst(ctx: AstContext): ts.ConditionalExpression;
8197
8326
  }
8198
8327
  //#endregion
8199
8328
  //#region src/ts-dsl/layout/newline.d.ts
8200
8329
  declare class NewlineTsDsl extends TsDsl<ts.Identifier> {
8201
8330
  readonly '~dsl' = "NewlineTsDsl";
8202
8331
  analyze(ctx: AnalysisContext): void;
8203
- toAst(): ts.Identifier;
8204
- }
8205
- //#endregion
8206
- //#region src/ts-dsl/layout/note.d.ts
8207
- declare class NoteTsDsl extends TsDsl<ts.Node> {
8208
- readonly '~dsl' = "NoteTsDsl";
8209
- protected _lines: Array<string>;
8210
- constructor(lines?: MaybeArray$1<string>, fn?: (d: NoteTsDsl) => void);
8211
- analyze(ctx: AnalysisContext): void;
8212
- add(...lines: ReadonlyArray<string>): this;
8213
- apply<T extends ts.Node>(node: T): T;
8214
- toAst(): ts.Node;
8332
+ toAst(ctx: AstContext): ts.Identifier;
8215
8333
  }
8216
8334
  //#endregion
8217
8335
  //#region src/ts-dsl/stmt/block.d.ts
8218
- declare const Mixed$15: MixinCtor<MixinCtor<abstract new () => TsDsl<ts.Block>, LayoutMethods>, DoMethods>;
8219
- declare class BlockTsDsl extends Mixed$15 {
8336
+ declare const Mixed$14: MixinCtor<MixinCtor<abstract new () => TsDsl<ts.Block>, LayoutMethods>, DoMethods>;
8337
+ declare class BlockTsDsl extends Mixed$14 {
8220
8338
  readonly '~dsl' = "BlockTsDsl";
8221
8339
  constructor(...items: Array<DoExpr>);
8222
8340
  analyze(ctx: AnalysisContext): void;
8223
- toAst(): ts.Block;
8341
+ toAst(ctx: AstContext): ts.Block;
8224
8342
  }
8225
8343
  //#endregion
8226
8344
  //#region src/ts-dsl/stmt/stmt.d.ts
8227
- declare const Mixed$14: abstract new () => TsDsl<ts.Statement>;
8228
- declare class StmtTsDsl extends Mixed$14 {
8345
+ declare const Mixed$13: abstract new () => TsDsl<ts.Statement>;
8346
+ declare class StmtTsDsl extends Mixed$13 {
8229
8347
  readonly '~dsl' = "StmtTsDsl";
8230
8348
  protected _inner: ts.Expression | ts.Statement | TsDsl<any>;
8231
8349
  constructor(inner: ts.Expression | ts.Statement | TsDsl<any>);
8232
8350
  analyze(ctx: AnalysisContext): void;
8233
- toAst(): ts.Statement;
8351
+ toAst(ctx: AstContext): ts.Statement;
8234
8352
  }
8235
8353
  //#endregion
8236
8354
  //#region src/ts-dsl/stmt/throw.d.ts
8237
- declare const Mixed$13: abstract new () => TsDsl<ts.ThrowStatement>;
8238
- declare class ThrowTsDsl extends Mixed$13 {
8355
+ declare const Mixed$12: abstract new () => TsDsl<ts.ThrowStatement>;
8356
+ declare class ThrowTsDsl extends Mixed$12 {
8239
8357
  readonly '~dsl' = "ThrowTsDsl";
8240
8358
  protected error: string | MaybeTsDsl<ts.Expression>;
8241
8359
  protected msg?: string | MaybeTsDsl<ts.Expression>;
@@ -8243,13 +8361,13 @@ declare class ThrowTsDsl extends Mixed$13 {
8243
8361
  constructor(error: string | MaybeTsDsl<ts.Expression>, useNew?: boolean);
8244
8362
  analyze(ctx: AnalysisContext): void;
8245
8363
  message(value: string | MaybeTsDsl<ts.Expression>): this;
8246
- toAst(): ts.ThrowStatement;
8364
+ toAst(ctx: AstContext): ts.ThrowStatement;
8247
8365
  }
8248
8366
  //#endregion
8249
8367
  //#region src/ts-dsl/stmt/try.d.ts
8250
- declare const Mixed$12: abstract new () => TsDsl<ts.TryStatement>;
8368
+ declare const Mixed$11: abstract new () => TsDsl<ts.TryStatement>;
8251
8369
  type CatchParam = Symbol | string;
8252
- declare class TryTsDsl extends Mixed$12 {
8370
+ declare class TryTsDsl extends Mixed$11 {
8253
8371
  readonly '~dsl' = "TryTsDsl";
8254
8372
  protected _catch?: Array<DoExpr>;
8255
8373
  protected _catchArg?: CatchParam;
@@ -8261,25 +8379,7 @@ declare class TryTsDsl extends Mixed$12 {
8261
8379
  catchArg(arg: CatchParam): this;
8262
8380
  finally(...items: Array<DoExpr>): this;
8263
8381
  try(...items: Array<DoExpr>): this;
8264
- toAst(): ts.TryStatement;
8265
- }
8266
- //#endregion
8267
- //#region src/ts-dsl/stmt/var.d.ts
8268
- type VarName = Symbol | string;
8269
- declare const Mixed$11: MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.VariableStatement>, ValueMethods>, PatternMethods>, HintMethods>, ExportMethods>, DocMethods>, DefaultMethods>;
8270
- declare class VarTsDsl extends Mixed$11 {
8271
- readonly '~dsl' = "VarTsDsl";
8272
- protected kind: ts.NodeFlags;
8273
- protected name?: Ref<VarName>;
8274
- protected _type?: TypeTsDsl;
8275
- constructor(name?: VarName);
8276
- analyze(ctx: AnalysisContext): void;
8277
- const(): this;
8278
- let(): this;
8279
- /** Sets the variable type. */
8280
- type(type: string | TypeTsDsl): this;
8281
- var(): this;
8282
- toAst(): ts.VariableStatement;
8382
+ toAst(ctx: AstContext): ts.TryStatement;
8283
8383
  }
8284
8384
  //#endregion
8285
8385
  //#region src/ts-dsl/token.d.ts
@@ -8315,44 +8415,41 @@ declare class TypeAliasTsDsl extends Mixed$10 {
8315
8415
  analyze(ctx: AnalysisContext): void;
8316
8416
  /** Sets the type expression on the right-hand side of `= ...`. */
8317
8417
  type(node: Value): this;
8318
- toAst(): ts.TypeAliasDeclaration;
8418
+ toAst(ctx: AstContext): ts.TypeAliasDeclaration;
8319
8419
  }
8320
8420
  //#endregion
8321
8421
  //#region src/ts-dsl/type/and.d.ts
8322
8422
  type Type$1 = Symbol | string | ts.TypeNode | TypeTsDsl;
8323
- declare const Mixed$9: abstract new () => TypeTsDsl<ts.IntersectionTypeNode>;
8423
+ declare const Mixed$9: abstract new () => TsDsl<ts.IntersectionTypeNode>;
8324
8424
  declare class TypeAndTsDsl extends Mixed$9 {
8325
8425
  readonly '~dsl' = "TypeAndTsDsl";
8326
8426
  protected _types: Array<Ref<Type$1>>;
8327
8427
  constructor(...nodes: Array<Type$1>);
8328
8428
  analyze(ctx: AnalysisContext): void;
8329
8429
  types(...nodes: Array<Type$1>): this;
8330
- toAst(): ts.IntersectionTypeNode;
8430
+ toAst(ctx: AstContext): ts.IntersectionTypeNode;
8331
8431
  }
8332
8432
  //#endregion
8333
8433
  //#region src/ts-dsl/type/func.d.ts
8334
- declare const Mixed$8: MixinCtor<MixinCtor<MixinCtor<abstract new () => TypeTsDsl<ts.FunctionTypeNode>, TypeParamsMethods>, ParamMethods>, DocMethods>;
8434
+ declare const Mixed$8: MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.FunctionTypeNode>, TypeReturnsMethods>, TypeParamsMethods>, ParamMethods>, DocMethods>;
8335
8435
  declare class TypeFuncTsDsl extends Mixed$8 {
8336
8436
  readonly '~dsl' = "TypeFuncTsDsl";
8337
- protected _returns?: TypeTsDsl;
8338
8437
  analyze(ctx: AnalysisContext): void;
8339
- /** Sets the return type. */
8340
- returns(type: string | TypeTsDsl): this;
8341
- toAst(): ts.FunctionTypeNode;
8438
+ toAst(ctx: AstContext): ts.FunctionTypeNode;
8342
8439
  }
8343
8440
  //#endregion
8344
8441
  //#region src/ts-dsl/type/literal.d.ts
8345
- declare const Mixed$7: abstract new () => TypeTsDsl<ts.LiteralTypeNode>;
8442
+ declare const Mixed$7: abstract new () => TsDsl<ts.LiteralTypeNode>;
8346
8443
  declare class TypeLiteralTsDsl extends Mixed$7 {
8347
8444
  readonly '~dsl' = "TypeLiteralTsDsl";
8348
8445
  protected value: string | number | boolean | null;
8349
8446
  constructor(value: string | number | boolean | null);
8350
8447
  analyze(ctx: AnalysisContext): void;
8351
- toAst(): ts.LiteralTypeNode;
8448
+ toAst(ctx: AstContext): ts.LiteralTypeNode;
8352
8449
  }
8353
8450
  //#endregion
8354
8451
  //#region src/ts-dsl/type/mapped.d.ts
8355
- declare const Mixed$6: abstract new () => TypeTsDsl<ts.MappedTypeNode>;
8452
+ declare const Mixed$6: abstract new () => TsDsl<ts.MappedTypeNode>;
8356
8453
  declare class TypeMappedTsDsl extends Mixed$6 {
8357
8454
  readonly '~dsl' = "TypeMappedTsDsl";
8358
8455
  protected questionToken?: TokenTsDsl<ts.SyntaxKind.QuestionToken | ts.SyntaxKind.PlusToken | ts.SyntaxKind.MinusToken>;
@@ -8378,7 +8475,7 @@ declare class TypeMappedTsDsl extends Mixed$6 {
8378
8475
  required(): this;
8379
8476
  /** Sets the mapped value type: `[K in X]: ValueType` */
8380
8477
  type(type: string | MaybeTsDsl<ts.TypeNode>): this;
8381
- toAst(): ts.MappedTypeNode;
8478
+ toAst(ctx: AstContext): ts.MappedTypeNode;
8382
8479
  $validate(): asserts this is this & {
8383
8480
  _key: string | MaybeTsDsl<ts.TypeNode>;
8384
8481
  _name: string;
@@ -8390,7 +8487,7 @@ declare class TypeMappedTsDsl extends Mixed$6 {
8390
8487
  //#region src/ts-dsl/type/idx-sig.d.ts
8391
8488
  type TypeIdxSigName = string;
8392
8489
  type TypeIdxSigType = string | MaybeTsDsl<ts.TypeNode>;
8393
- declare const Mixed$5: MixinCtor<MixinCtor<abstract new () => TypeTsDsl<ts.IndexSignatureDeclaration>, ReadonlyMethods>, DocMethods>;
8490
+ declare const Mixed$5: MixinCtor<MixinCtor<abstract new () => TsDsl<ts.IndexSignatureDeclaration>, ReadonlyMethods>, DocMethods>;
8394
8491
  declare class TypeIdxSigTsDsl extends Mixed$5 {
8395
8492
  readonly '~dsl' = "TypeIdxSigTsDsl";
8396
8493
  protected _key?: TypeIdxSigType;
@@ -8404,7 +8501,7 @@ declare class TypeIdxSigTsDsl extends Mixed$5 {
8404
8501
  key(type: TypeIdxSigType): this;
8405
8502
  /** Sets the property type. */
8406
8503
  type(type: TypeIdxSigType): this;
8407
- toAst(): ts.IndexSignatureDeclaration;
8504
+ toAst(ctx: AstContext): ts.IndexSignatureDeclaration;
8408
8505
  $validate(): asserts this is this & {
8409
8506
  _key: TypeIdxSigType;
8410
8507
  _name: TypeIdxSigName;
@@ -8416,7 +8513,7 @@ declare class TypeIdxSigTsDsl extends Mixed$5 {
8416
8513
  //#region src/ts-dsl/type/prop.d.ts
8417
8514
  type TypePropName = string;
8418
8515
  type TypePropType = Symbol | string | MaybeTsDsl<ts.TypeNode>;
8419
- declare const Mixed$4: MixinCtor<MixinCtor<MixinCtor<abstract new () => TypeTsDsl<ts.TypeElement>, ReadonlyMethods>, OptionalMethods>, DocMethods>;
8516
+ declare const Mixed$4: MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.TypeElement>, ReadonlyMethods>, OptionalMethods>, DocMethods>;
8420
8517
  declare class TypePropTsDsl extends Mixed$4 {
8421
8518
  readonly '~dsl' = "TypePropTsDsl";
8422
8519
  protected name: TypePropName;
@@ -8425,11 +8522,11 @@ declare class TypePropTsDsl extends Mixed$4 {
8425
8522
  analyze(ctx: AnalysisContext): void;
8426
8523
  /** Sets the property type. */
8427
8524
  type(type: TypePropType): this;
8428
- toAst(): ts.PropertySignature;
8525
+ toAst(ctx: AstContext): ts.PropertySignature;
8429
8526
  }
8430
8527
  //#endregion
8431
8528
  //#region src/ts-dsl/type/object.d.ts
8432
- declare const Mixed$3: abstract new () => TypeTsDsl<ts.TypeNode>;
8529
+ declare const Mixed$3: abstract new () => TsDsl<ts.TypeNode>;
8433
8530
  declare class TypeObjectTsDsl extends Mixed$3 {
8434
8531
  readonly '~dsl' = "TypeObjectTsDsl";
8435
8532
  protected props: Array<TypePropTsDsl | TypeIdxSigTsDsl>;
@@ -8442,23 +8539,23 @@ declare class TypeObjectTsDsl extends Mixed$3 {
8442
8539
  get isEmpty(): boolean;
8443
8540
  /** Adds a property signature (returns property builder). */
8444
8541
  prop(name: string, fn: (p: TypePropTsDsl) => void): this;
8445
- toAst(): ts.TypeLiteralNode;
8542
+ toAst(ctx: AstContext): ts.TypeLiteralNode;
8446
8543
  }
8447
8544
  //#endregion
8448
8545
  //#region src/ts-dsl/type/or.d.ts
8449
8546
  type Type = Symbol | string | ts.TypeNode | TypeTsDsl;
8450
- declare const Mixed$2: abstract new () => TypeTsDsl<ts.UnionTypeNode>;
8547
+ declare const Mixed$2: abstract new () => TsDsl<ts.UnionTypeNode>;
8451
8548
  declare class TypeOrTsDsl extends Mixed$2 {
8452
8549
  readonly '~dsl' = "TypeOrTsDsl";
8453
8550
  protected _types: Array<Ref<Type>>;
8454
8551
  constructor(...nodes: Array<Type>);
8455
8552
  analyze(ctx: AnalysisContext): void;
8456
8553
  types(...nodes: Array<Type>): this;
8457
- toAst(): ts.UnionTypeNode;
8554
+ toAst(ctx: AstContext): ts.UnionTypeNode;
8458
8555
  }
8459
8556
  //#endregion
8460
8557
  //#region src/ts-dsl/type/template.d.ts
8461
- declare const Mixed$1: abstract new () => TypeTsDsl<ts.TemplateLiteralTypeNode>;
8558
+ declare const Mixed$1: abstract new () => TsDsl<ts.TemplateLiteralTypeNode>;
8462
8559
  declare class TypeTemplateTsDsl extends Mixed$1 {
8463
8560
  readonly '~dsl' = "TypeTemplateTsDsl";
8464
8561
  protected parts: Array<string | MaybeTsDsl<ts.TypeNode>>;
@@ -8466,18 +8563,18 @@ declare class TypeTemplateTsDsl extends Mixed$1 {
8466
8563
  analyze(ctx: AnalysisContext): void;
8467
8564
  /** Adds a raw string segment or embedded type expression. */
8468
8565
  add(part: string | MaybeTsDsl<ts.TypeNode>): this;
8469
- toAst(): ts.TemplateLiteralTypeNode;
8566
+ toAst(ctx: AstContext): ts.TemplateLiteralTypeNode;
8470
8567
  }
8471
8568
  //#endregion
8472
8569
  //#region src/ts-dsl/type/tuple.d.ts
8473
- declare const Mixed: abstract new () => TypeTsDsl<ts.TupleTypeNode>;
8570
+ declare const Mixed: abstract new () => TsDsl<ts.TupleTypeNode>;
8474
8571
  declare class TypeTupleTsDsl extends Mixed {
8475
8572
  readonly '~dsl' = "TypeTupleTsDsl";
8476
8573
  protected _elements: Array<string | ts.TypeNode | TypeTsDsl>;
8477
8574
  constructor(...nodes: Array<string | ts.TypeNode | TypeTsDsl>);
8478
8575
  analyze(ctx: AnalysisContext): void;
8479
8576
  elements(...types: Array<string | ts.TypeNode | TypeTsDsl>): this;
8480
- toAst(): ts.TupleTypeNode;
8577
+ toAst(ctx: AstContext): ts.TupleTypeNode;
8481
8578
  }
8482
8579
  //#endregion
8483
8580
  //#region src/ts-dsl/render/typescript.d.ts
@@ -8574,39 +8671,39 @@ declare const reserved: {
8574
8671
  };
8575
8672
  //#endregion
8576
8673
  //#region src/ts-dsl/index.d.ts
8577
- declare const $: ((id: any) => ExprTsDsl) & {
8674
+ declare const $: ((id: string | _hey_api_codegen_core0.Symbol | ts.Expression | TsDsl<ts.Expression>) => ExprTsDsl) & {
8578
8675
  /** Creates an array literal expression (e.g. `[1, 2, 3]`). */
8579
8676
  array: (...args: ConstructorParameters<typeof ArrayTsDsl>) => ArrayTsDsl;
8580
8677
  /** Creates an `as` type assertion expression (e.g. `value as Type`). */
8581
- as: (expr: any, type: any) => AsTsDsl;
8678
+ as: (expr: AsExpr, type: AsType) => AsTsDsl;
8582
8679
  /** Creates a property access expression (e.g. `obj.foo`). */
8583
- attr: (left: any, right: any) => AttrTsDsl;
8680
+ attr: (left: AttrLeft, right: AttrRight) => AttrTsDsl;
8584
8681
  /** Creates an await expression (e.g. `await promise`). */
8585
- await: (expr: any) => AwaitTsDsl;
8682
+ await: (expr: AwaitExpr) => AwaitTsDsl;
8586
8683
  /** Creates a binary expression (e.g. `a + b`). */
8587
- binary: (base: any, op?: (("!=" | "!==" | "&&" | "*" | "+" | "-" | "/" | "<" | "<=" | "=" | "==" | "===" | ">" | ">=" | "??" | "||") | typescript0.BinaryOperator) | undefined, expr?: any) => BinaryTsDsl;
8684
+ binary: (base: string | _hey_api_codegen_core0.Symbol | ts.Expression | TsDsl<ts.Expression>, op?: (("!=" | "!==" | "&&" | "*" | "+" | "-" | "/" | "<" | "<=" | "=" | "==" | "===" | ">" | ">=" | "??" | "??=" | "||") | ts.BinaryOperator) | undefined, expr?: (string | _hey_api_codegen_core0.Symbol | ts.Expression | TsDsl<ts.Expression>) | undefined) => BinaryTsDsl;
8588
8685
  /** Creates a statement block (`{ ... }`). */
8589
8686
  block: (...args: ConstructorParameters<typeof BlockTsDsl>) => BlockTsDsl;
8590
8687
  /** Creates a function or method call expression (e.g. `fn(arg)`). */
8591
- call: (callee: CallCallee, ...args: any[]) => CallTsDsl;
8688
+ call: (callee: CallCallee, ...args: (CallArg | undefined)[]) => CallTsDsl;
8592
8689
  /** Creates a class declaration or expression. */
8593
- class: (name: any) => ClassTsDsl;
8690
+ class: (name: string | _hey_api_codegen_core0.Symbol) => ClassTsDsl;
8594
8691
  /** Creates a constant variable declaration (`const`). */
8595
- const: (name?: any) => VarTsDsl;
8692
+ const: (name?: VarName | undefined) => VarTsDsl;
8596
8693
  /** Creates a decorator expression (e.g. `@decorator`). */
8597
- decorator: (name: any, ...args: (string | typescript0.Expression | TsDsl<typescript0.Expression>)[]) => DecoratorTsDsl;
8694
+ decorator: (name: DecoratorName, ...args: (string | ts.Expression | TsDsl<ts.Expression>)[]) => DecoratorTsDsl;
8598
8695
  /** Creates a JSDoc documentation block. */
8599
- doc: (lines?: MaybeArray$1<string> | undefined, fn?: ((d: DocTsDsl) => void) | undefined) => DocTsDsl;
8696
+ doc: (lines?: DocLines | undefined, fn?: DocFn | undefined) => DocTsDsl;
8600
8697
  /** Creates an enum declaration. */
8601
- enum: (name: any, fn?: ((e: EnumTsDsl) => void) | undefined) => EnumTsDsl;
8698
+ enum: (name: EnumName, fn?: ((e: EnumTsDsl) => void) | undefined) => EnumTsDsl;
8602
8699
  /** Creates a general expression node. */
8603
- expr: (id: any) => ExprTsDsl;
8700
+ expr: (id: string | _hey_api_codegen_core0.Symbol | ts.Expression | TsDsl<ts.Expression>) => ExprTsDsl;
8604
8701
  /** Creates a field declaration in a class or object. */
8605
- field: (name: string, fn?: ((f: FieldTsDsl) => void) | undefined) => FieldTsDsl;
8702
+ field: (name: FieldName, fn?: ((f: FieldTsDsl) => void) | undefined) => FieldTsDsl;
8606
8703
  /** Converts a runtime value into a corresponding expression node. */
8607
8704
  fromValue: (input: unknown, options?: {
8608
8705
  layout?: "pretty";
8609
- } | undefined) => TsDsl<typescript0.Expression>;
8706
+ } | undefined) => TsDsl<ts.Expression>;
8610
8707
  /** Creates a function expression or declaration. */
8611
8708
  func: {
8612
8709
  (): FuncTsDsl<"arrow">;
@@ -8618,39 +8715,41 @@ declare const $: ((id: any) => ExprTsDsl) & {
8618
8715
  /** Creates a getter method declaration. */
8619
8716
  getter: (name: GetterName, fn?: ((g: GetterTsDsl) => void) | undefined) => GetterTsDsl;
8620
8717
  /** Creates a single-line comment (//). */
8621
- hint: (lines?: MaybeArray$1<string> | undefined, fn?: ((d: HintTsDsl) => void) | undefined) => HintTsDsl;
8718
+ hint: (lines?: HintLines | undefined, fn?: HintFn | undefined) => HintTsDsl;
8622
8719
  /** Creates an identifier (e.g. `foo`). */
8623
8720
  id: (name: string) => IdTsDsl;
8624
8721
  /** Creates an if statement. */
8625
8722
  if: (condition?: IfCondition | undefined) => IfTsDsl;
8626
8723
  /** Creates an initialization block or statement. */
8627
8724
  init: (fn?: ((i: InitTsDsl) => void) | undefined) => InitTsDsl;
8725
+ /** Creates a lazy, context-aware node with deferred evaluation. */
8726
+ lazy: <T extends ts.Node>(thunk: LazyThunk<T>) => LazyTsDsl<T>;
8628
8727
  /** Creates a let variable declaration (`let`). */
8629
- let: (name?: any) => VarTsDsl;
8728
+ let: (name?: VarName | undefined) => VarTsDsl;
8630
8729
  /** Creates a literal value (e.g. string, number, boolean). */
8631
8730
  literal: (value: string | number | boolean | null) => LiteralTsDsl;
8632
8731
  /** Creates an enum member declaration. */
8633
- member: (name: string, value?: ((string | number | typescript0.Expression | TsDsl<typescript0.Expression>) | ((m: EnumMemberTsDsl) => void)) | undefined) => EnumMemberTsDsl;
8732
+ member: (name: string, value?: ((string | number | ts.Expression | TsDsl<ts.Expression>) | ((m: EnumMemberTsDsl) => void)) | undefined) => EnumMemberTsDsl;
8634
8733
  /** Creates a method declaration inside a class or object. */
8635
8734
  method: (name: string, fn?: ((m: MethodTsDsl) => void) | undefined) => MethodTsDsl;
8636
8735
  /** Creates a negation expression (`-x`). */
8637
- neg: (expr?: string | typescript0.Expression | TsDsl<typescript0.Expression> | undefined, op?: typescript0.PrefixUnaryOperator | undefined) => PrefixTsDsl;
8736
+ neg: (expr?: string | ts.Expression | TsDsl<ts.Expression> | undefined, op?: ts.PrefixUnaryOperator | undefined) => PrefixTsDsl;
8638
8737
  /** Creates a new expression (e.g. `new ClassName()`). */
8639
- new: (classExpr: any, ...args: any[]) => NewTsDsl;
8738
+ new: (classExpr: NewExpr, ...args: NewExpr[]) => NewTsDsl;
8640
8739
  /** Creates a newline (for formatting purposes). */
8641
8740
  newline: () => NewlineTsDsl;
8642
8741
  /** Creates a logical NOT expression (`!x`). */
8643
- not: (expr?: string | typescript0.Expression | TsDsl<typescript0.Expression> | undefined, op?: typescript0.PrefixUnaryOperator | undefined) => PrefixTsDsl;
8742
+ not: (expr?: string | ts.Expression | TsDsl<ts.Expression> | undefined, op?: ts.PrefixUnaryOperator | undefined) => PrefixTsDsl;
8644
8743
  /** Creates a block comment (/* ... *\/). */
8645
- note: (lines?: MaybeArray$1<string> | undefined, fn?: ((d: NoteTsDsl) => void) | undefined) => NoteTsDsl;
8744
+ note: (lines?: NoteLines | undefined, fn?: NoteFn | undefined) => NoteTsDsl;
8646
8745
  /** Creates an object literal expression. */
8647
8746
  object: (...args: ConstructorParameters<typeof ObjectTsDsl>) => ObjectTsDsl;
8648
8747
  /** Creates a parameter declaration for functions or methods. */
8649
- param: (name: any, fn?: ((p: ParamTsDsl) => void) | undefined) => ParamTsDsl;
8748
+ param: (name: ParamName | ((p: ParamTsDsl) => void), fn?: ((p: ParamTsDsl) => void) | undefined) => ParamTsDsl;
8650
8749
  /** Creates a pattern for destructuring or matching. */
8651
8750
  pattern: () => PatternTsDsl;
8652
8751
  /** Creates a prefix unary expression (e.g. `-x`, `!x`, `~x`). */
8653
- prefix: (expr?: string | typescript0.Expression | TsDsl<typescript0.Expression> | undefined, op?: typescript0.PrefixUnaryOperator | undefined) => PrefixTsDsl;
8752
+ prefix: (expr?: string | ts.Expression | TsDsl<ts.Expression> | undefined, op?: ts.PrefixUnaryOperator | undefined) => PrefixTsDsl;
8654
8753
  /** Creates an object literal property (e.g. `{ foo: bar }`). */
8655
8754
  prop: (meta: {
8656
8755
  kind: "computed";
@@ -8671,37 +8770,37 @@ declare const $: ((id: any) => ExprTsDsl) & {
8671
8770
  /** Creates a regular expression literal (e.g. `/foo/gi`). */
8672
8771
  regexp: (pattern: string, flags?: ("" | "g" | "i" | "m" | "s" | "u" | "y" | "uy" | "yu" | "su" | "sy" | "suy" | "syu" | "ys" | "us" | "usy" | "uys" | "ysu" | "yus" | "ms" | "mu" | "my" | "muy" | "myu" | "msu" | "msy" | "msuy" | "msyu" | "mys" | "mus" | "musy" | "muys" | "mysu" | "myus" | "ym" | "um" | "umy" | "uym" | "ymu" | "yum" | "sm" | "smu" | "smy" | "smuy" | "smyu" | "sym" | "sum" | "sumy" | "suym" | "symu" | "syum" | "yms" | "ysm" | "ums" | "umsy" | "umys" | "usm" | "usmy" | "usym" | "uyms" | "uysm" | "ymsu" | "ymus" | "ysmu" | "ysum" | "yums" | "yusm" | "im" | "is" | "iu" | "iy" | "iuy" | "iyu" | "isu" | "isy" | "isuy" | "isyu" | "iys" | "ius" | "iusy" | "iuys" | "iysu" | "iyus" | "ims" | "imu" | "imy" | "imuy" | "imyu" | "imsu" | "imsy" | "imsuy" | "imsyu" | "imys" | "imus" | "imusy" | "imuys" | "imysu" | "imyus" | "iym" | "ium" | "iumy" | "iuym" | "iymu" | "iyum" | "ism" | "ismu" | "ismy" | "ismuy" | "ismyu" | "isym" | "isum" | "isumy" | "isuym" | "isymu" | "isyum" | "iyms" | "iysm" | "iums" | "iumsy" | "iumys" | "iusm" | "iusmy" | "iusym" | "iuyms" | "iuysm" | "iymsu" | "iymus" | "iysmu" | "iysum" | "iyums" | "iyusm" | "yi" | "ui" | "uiy" | "uyi" | "yiu" | "yui" | "si" | "siu" | "siy" | "siuy" | "siyu" | "syi" | "sui" | "suiy" | "suyi" | "syiu" | "syui" | "yis" | "ysi" | "uis" | "uisy" | "uiys" | "usi" | "usiy" | "usyi" | "uyis" | "uysi" | "yisu" | "yius" | "ysiu" | "ysui" | "yuis" | "yusi" | "mi" | "mis" | "miu" | "miy" | "miuy" | "miyu" | "misu" | "misy" | "misuy" | "misyu" | "miys" | "mius" | "miusy" | "miuys" | "miysu" | "miyus" | "myi" | "mui" | "muiy" | "muyi" | "myiu" | "myui" | "msi" | "msiu" | "msiy" | "msiuy" | "msiyu" | "msyi" | "msui" | "msuiy" | "msuyi" | "msyiu" | "msyui" | "myis" | "mysi" | "muis" | "muisy" | "muiys" | "musi" | "musiy" | "musyi" | "muyis" | "muysi" | "myisu" | "myius" | "mysiu" | "mysui" | "myuis" | "myusi" | "yim" | "ymi" | "uim" | "uimy" | "uiym" | "umi" | "umiy" | "umyi" | "uyim" | "uymi" | "yimu" | "yium" | "ymiu" | "ymui" | "yuim" | "yumi" | "sim" | "simu" | "simy" | "simuy" | "simyu" | "siym" | "sium" | "siumy" | "siuym" | "siymu" | "siyum" | "smi" | "smiu" | "smiy" | "smiuy" | "smiyu" | "smyi" | "smui" | "smuiy" | "smuyi" | "smyiu" | "smyui" | "syim" | "symi" | "suim" | "suimy" | "suiym" | "sumi" | "sumiy" | "sumyi" | "suyim" | "suymi" | "syimu" | "syium" | "symiu" | "symui" | "syuim" | "syumi" | "yims" | "yism" | "ymis" | "ymsi" | "ysim" | "ysmi" | "uims" | "uimsy" | "uimys" | "uism" | "uismy" | "uisym" | "uiyms" | "uiysm" | "umis" | "umisy" | "umiys" | "umsi" | "umsiy" | "umsyi" | "umyis" | "umysi" | "usim" | "usimy" | "usiym" | "usmi" | "usmiy" | "usmyi" | "usyim" | "usymi" | "uyims" | "uyism" | "uymis" | "uymsi" | "uysim" | "uysmi" | "yimsu" | "yimus" | "yismu" | "yisum" | "yiums" | "yiusm" | "ymisu" | "ymius" | "ymsiu" | "ymsui" | "ymuis" | "ymusi" | "ysimu" | "ysium" | "ysmiu" | "ysmui" | "ysuim" | "ysumi" | "yuims" | "yuism" | "yumis" | "yumsi" | "yusim" | "yusmi" | "gi" | "gm" | "gs" | "gu" | "gy" | "guy" | "gyu" | "gsu" | "gsy" | "gsuy" | "gsyu" | "gys" | "gus" | "gusy" | "guys" | "gysu" | "gyus" | "gms" | "gmu" | "gmy" | "gmuy" | "gmyu" | "gmsu" | "gmsy" | "gmsuy" | "gmsyu" | "gmys" | "gmus" | "gmusy" | "gmuys" | "gmysu" | "gmyus" | "gym" | "gum" | "gumy" | "guym" | "gymu" | "gyum" | "gsm" | "gsmu" | "gsmy" | "gsmuy" | "gsmyu" | "gsym" | "gsum" | "gsumy" | "gsuym" | "gsymu" | "gsyum" | "gyms" | "gysm" | "gums" | "gumsy" | "gumys" | "gusm" | "gusmy" | "gusym" | "guyms" | "guysm" | "gymsu" | "gymus" | "gysmu" | "gysum" | "gyums" | "gyusm" | "gim" | "gis" | "giu" | "giy" | "giuy" | "giyu" | "gisu" | "gisy" | "gisuy" | "gisyu" | "giys" | "gius" | "giusy" | "giuys" | "giysu" | "giyus" | "gims" | "gimu" | "gimy" | "gimuy" | "gimyu" | "gimsu" | "gimsy" | "gimsuy" | "gimsyu" | "gimys" | "gimus" | "gimusy" | "gimuys" | "gimysu" | "gimyus" | "giym" | "gium" | "giumy" | "giuym" | "giymu" | "giyum" | "gism" | "gismu" | "gismy" | "gismuy" | "gismyu" | "gisym" | "gisum" | "gisumy" | "gisuym" | "gisymu" | "gisyum" | "giyms" | "giysm" | "giums" | "giumsy" | "giumys" | "giusm" | "giusmy" | "giusym" | "giuyms" | "giuysm" | "giymsu" | "giymus" | "giysmu" | "giysum" | "giyums" | "giyusm" | "gyi" | "gui" | "guiy" | "guyi" | "gyiu" | "gyui" | "gsi" | "gsiu" | "gsiy" | "gsiuy" | "gsiyu" | "gsyi" | "gsui" | "gsuiy" | "gsuyi" | "gsyiu" | "gsyui" | "gyis" | "gysi" | "guis" | "guisy" | "guiys" | "gusi" | "gusiy" | "gusyi" | "guyis" | "guysi" | "gyisu" | "gyius" | "gysiu" | "gysui" | "gyuis" | "gyusi" | "gmi" | "gmis" | "gmiu" | "gmiy" | "gmiuy" | "gmiyu" | "gmisu" | "gmisy" | "gmisuy" | "gmisyu" | "gmiys" | "gmius" | "gmiusy" | "gmiuys" | "gmiysu" | "gmiyus" | "gmyi" | "gmui" | "gmuiy" | "gmuyi" | "gmyiu" | "gmyui" | "gmsi" | "gmsiu" | "gmsiy" | "gmsiuy" | "gmsiyu" | "gmsyi" | "gmsui" | "gmsuiy" | "gmsuyi" | "gmsyiu" | "gmsyui" | "gmyis" | "gmysi" | "gmuis" | "gmuisy" | "gmuiys" | "gmusi" | "gmusiy" | "gmusyi" | "gmuyis" | "gmuysi" | "gmyisu" | "gmyius" | "gmysiu" | "gmysui" | "gmyuis" | "gmyusi" | "gyim" | "gymi" | "guim" | "guimy" | "guiym" | "gumi" | "gumiy" | "gumyi" | "guyim" | "guymi" | "gyimu" | "gyium" | "gymiu" | "gymui" | "gyuim" | "gyumi" | "gsim" | "gsimu" | "gsimy" | "gsimuy" | "gsimyu" | "gsiym" | "gsium" | "gsiumy" | "gsiuym" | "gsiymu" | "gsiyum" | "gsmi" | "gsmiu" | "gsmiy" | "gsmiuy" | "gsmiyu" | "gsmyi" | "gsmui" | "gsmuiy" | "gsmuyi" | "gsmyiu" | "gsmyui" | "gsyim" | "gsymi" | "gsuim" | "gsuimy" | "gsuiym" | "gsumi" | "gsumiy" | "gsumyi" | "gsuyim" | "gsuymi" | "gsyimu" | "gsyium" | "gsymiu" | "gsymui" | "gsyuim" | "gsyumi" | "gyims" | "gyism" | "gymis" | "gymsi" | "gysim" | "gysmi" | "guims" | "guimsy" | "guimys" | "guism" | "guismy" | "guisym" | "guiyms" | "guiysm" | "gumis" | "gumisy" | "gumiys" | "gumsi" | "gumsiy" | "gumsyi" | "gumyis" | "gumysi" | "gusim" | "gusimy" | "gusiym" | "gusmi" | "gusmiy" | "gusmyi" | "gusyim" | "gusymi" | "guyims" | "guyism" | "guymis" | "guymsi" | "guysim" | "guysmi" | "gyimsu" | "gyimus" | "gyismu" | "gyisum" | "gyiums" | "gyiusm" | "gymisu" | "gymius" | "gymsiu" | "gymsui" | "gymuis" | "gymusi" | "gysimu" | "gysium" | "gysmiu" | "gysmui" | "gysuim" | "gysumi" | "gyuims" | "gyuism" | "gyumis" | "gyumsi" | "gyusim" | "gyusmi" | "yg" | "ug" | "ugy" | "uyg" | "ygu" | "yug" | "sg" | "sgu" | "sgy" | "sguy" | "sgyu" | "syg" | "sug" | "sugy" | "suyg" | "sygu" | "syug" | "ygs" | "ysg" | "ugs" | "ugsy" | "ugys" | "usg" | "usgy" | "usyg" | "uygs" | "uysg" | "ygsu" | "ygus" | "ysgu" | "ysug" | "yugs" | "yusg" | "mg" | "mgs" | "mgu" | "mgy" | "mguy" | "mgyu" | "mgsu" | "mgsy" | "mgsuy" | "mgsyu" | "mgys" | "mgus" | "mgusy" | "mguys" | "mgysu" | "mgyus" | "myg" | "mug" | "mugy" | "muyg" | "mygu" | "myug" | "msg" | "msgu" | "msgy" | "msguy" | "msgyu" | "msyg" | "msug" | "msugy" | "msuyg" | "msygu" | "msyug" | "mygs" | "mysg" | "mugs" | "mugsy" | "mugys" | "musg" | "musgy" | "musyg" | "muygs" | "muysg" | "mygsu" | "mygus" | "mysgu" | "mysug" | "myugs" | "myusg" | "ygm" | "ymg" | "ugm" | "ugmy" | "ugym" | "umg" | "umgy" | "umyg" | "uygm" | "uymg" | "ygmu" | "ygum" | "ymgu" | "ymug" | "yugm" | "yumg" | "sgm" | "sgmu" | "sgmy" | "sgmuy" | "sgmyu" | "sgym" | "sgum" | "sgumy" | "sguym" | "sgymu" | "sgyum" | "smg" | "smgu" | "smgy" | "smguy" | "smgyu" | "smyg" | "smug" | "smugy" | "smuyg" | "smygu" | "smyug" | "sygm" | "symg" | "sugm" | "sugmy" | "sugym" | "sumg" | "sumgy" | "sumyg" | "suygm" | "suymg" | "sygmu" | "sygum" | "symgu" | "symug" | "syugm" | "syumg" | "ygms" | "ygsm" | "ymgs" | "ymsg" | "ysgm" | "ysmg" | "ugms" | "ugmsy" | "ugmys" | "ugsm" | "ugsmy" | "ugsym" | "ugyms" | "ugysm" | "umgs" | "umgsy" | "umgys" | "umsg" | "umsgy" | "umsyg" | "umygs" | "umysg" | "usgm" | "usgmy" | "usgym" | "usmg" | "usmgy" | "usmyg" | "usygm" | "usymg" | "uygms" | "uygsm" | "uymgs" | "uymsg" | "uysgm" | "uysmg" | "ygmsu" | "ygmus" | "ygsmu" | "ygsum" | "ygums" | "ygusm" | "ymgsu" | "ymgus" | "ymsgu" | "ymsug" | "ymugs" | "ymusg" | "ysgmu" | "ysgum" | "ysmgu" | "ysmug" | "ysugm" | "ysumg" | "yugms" | "yugsm" | "yumgs" | "yumsg" | "yusgm" | "yusmg" | "ig" | "igm" | "igs" | "igu" | "igy" | "iguy" | "igyu" | "igsu" | "igsy" | "igsuy" | "igsyu" | "igys" | "igus" | "igusy" | "iguys" | "igysu" | "igyus" | "igms" | "igmu" | "igmy" | "igmuy" | "igmyu" | "igmsu" | "igmsy" | "igmsuy" | "igmsyu" | "igmys" | "igmus" | "igmusy" | "igmuys" | "igmysu" | "igmyus" | "igym" | "igum" | "igumy" | "iguym" | "igymu" | "igyum" | "igsm" | "igsmu" | "igsmy" | "igsmuy" | "igsmyu" | "igsym" | "igsum" | "igsumy" | "igsuym" | "igsymu" | "igsyum" | "igyms" | "igysm" | "igums" | "igumsy" | "igumys" | "igusm" | "igusmy" | "igusym" | "iguyms" | "iguysm" | "igymsu" | "igymus" | "igysmu" | "igysum" | "igyums" | "igyusm" | "iyg" | "iug" | "iugy" | "iuyg" | "iygu" | "iyug" | "isg" | "isgu" | "isgy" | "isguy" | "isgyu" | "isyg" | "isug" | "isugy" | "isuyg" | "isygu" | "isyug" | "iygs" | "iysg" | "iugs" | "iugsy" | "iugys" | "iusg" | "iusgy" | "iusyg" | "iuygs" | "iuysg" | "iygsu" | "iygus" | "iysgu" | "iysug" | "iyugs" | "iyusg" | "img" | "imgs" | "imgu" | "imgy" | "imguy" | "imgyu" | "imgsu" | "imgsy" | "imgsuy" | "imgsyu" | "imgys" | "imgus" | "imgusy" | "imguys" | "imgysu" | "imgyus" | "imyg" | "imug" | "imugy" | "imuyg" | "imygu" | "imyug" | "imsg" | "imsgu" | "imsgy" | "imsguy" | "imsgyu" | "imsyg" | "imsug" | "imsugy" | "imsuyg" | "imsygu" | "imsyug" | "imygs" | "imysg" | "imugs" | "imugsy" | "imugys" | "imusg" | "imusgy" | "imusyg" | "imuygs" | "imuysg" | "imygsu" | "imygus" | "imysgu" | "imysug" | "imyugs" | "imyusg" | "iygm" | "iymg" | "iugm" | "iugmy" | "iugym" | "iumg" | "iumgy" | "iumyg" | "iuygm" | "iuymg" | "iygmu" | "iygum" | "iymgu" | "iymug" | "iyugm" | "iyumg" | "isgm" | "isgmu" | "isgmy" | "isgmuy" | "isgmyu" | "isgym" | "isgum" | "isgumy" | "isguym" | "isgymu" | "isgyum" | "ismg" | "ismgu" | "ismgy" | "ismguy" | "ismgyu" | "ismyg" | "ismug" | "ismugy" | "ismuyg" | "ismygu" | "ismyug" | "isygm" | "isymg" | "isugm" | "isugmy" | "isugym" | "isumg" | "isumgy" | "isumyg" | "isuygm" | "isuymg" | "isygmu" | "isygum" | "isymgu" | "isymug" | "isyugm" | "isyumg" | "iygms" | "iygsm" | "iymgs" | "iymsg" | "iysgm" | "iysmg" | "iugms" | "iugmsy" | "iugmys" | "iugsm" | "iugsmy" | "iugsym" | "iugyms" | "iugysm" | "iumgs" | "iumgsy" | "iumgys" | "iumsg" | "iumsgy" | "iumsyg" | "iumygs" | "iumysg" | "iusgm" | "iusgmy" | "iusgym" | "iusmg" | "iusmgy" | "iusmyg" | "iusygm" | "iusymg" | "iuygms" | "iuygsm" | "iuymgs" | "iuymsg" | "iuysgm" | "iuysmg" | "iygmsu" | "iygmus" | "iygsmu" | "iygsum" | "iygums" | "iygusm" | "iymgsu" | "iymgus" | "iymsgu" | "iymsug" | "iymugs" | "iymusg" | "iysgmu" | "iysgum" | "iysmgu" | "iysmug" | "iysugm" | "iysumg" | "iyugms" | "iyugsm" | "iyumgs" | "iyumsg" | "iyusgm" | "iyusmg" | "ygi" | "yig" | "ugi" | "ugiy" | "ugyi" | "uig" | "uigy" | "uiyg" | "uygi" | "uyig" | "ygiu" | "ygui" | "yigu" | "yiug" | "yugi" | "yuig" | "sgi" | "sgiu" | "sgiy" | "sgiuy" | "sgiyu" | "sgyi" | "sgui" | "sguiy" | "sguyi" | "sgyiu" | "sgyui" | "sig" | "sigu" | "sigy" | "siguy" | "sigyu" | "siyg" | "siug" | "siugy" | "siuyg" | "siygu" | "siyug" | "sygi" | "syig" | "sugi" | "sugiy" | "sugyi" | "suig" | "suigy" | "suiyg" | "suygi" | "suyig" | "sygiu" | "sygui" | "syigu" | "syiug" | "syugi" | "syuig" | "ygis" | "ygsi" | "yigs" | "yisg" | "ysgi" | "ysig" | "ugis" | "ugisy" | "ugiys" | "ugsi" | "ugsiy" | "ugsyi" | "ugyis" | "ugysi" | "uigs" | "uigsy" | "uigys" | "uisg" | "uisgy" | "uisyg" | "uiygs" | "uiysg" | "usgi" | "usgiy" | "usgyi" | "usig" | "usigy" | "usiyg" | "usygi" | "usyig" | "uygis" | "uygsi" | "uyigs" | "uyisg" | "uysgi" | "uysig" | "ygisu" | "ygius" | "ygsiu" | "ygsui" | "yguis" | "ygusi" | "yigsu" | "yigus" | "yisgu" | "yisug" | "yiugs" | "yiusg" | "ysgiu" | "ysgui" | "ysigu" | "ysiug" | "ysugi" | "ysuig" | "yugis" | "yugsi" | "yuigs" | "yuisg" | "yusgi" | "yusig" | "mgi" | "mgis" | "mgiu" | "mgiy" | "mgiuy" | "mgiyu" | "mgisu" | "mgisy" | "mgisuy" | "mgisyu" | "mgiys" | "mgius" | "mgiusy" | "mgiuys" | "mgiysu" | "mgiyus" | "mgyi" | "mgui" | "mguiy" | "mguyi" | "mgyiu" | "mgyui" | "mgsi" | "mgsiu" | "mgsiy" | "mgsiuy" | "mgsiyu" | "mgsyi" | "mgsui" | "mgsuiy" | "mgsuyi" | "mgsyiu" | "mgsyui" | "mgyis" | "mgysi" | "mguis" | "mguisy" | "mguiys" | "mgusi" | "mgusiy" | "mgusyi" | "mguyis" | "mguysi" | "mgyisu" | "mgyius" | "mgysiu" | "mgysui" | "mgyuis" | "mgyusi" | "mig" | "migs" | "migu" | "migy" | "miguy" | "migyu" | "migsu" | "migsy" | "migsuy" | "migsyu" | "migys" | "migus" | "migusy" | "miguys" | "migysu" | "migyus" | "miyg" | "miug" | "miugy" | "miuyg" | "miygu" | "miyug" | "misg" | "misgu" | "misgy" | "misguy" | "misgyu" | "misyg" | "misug" | "misugy" | "misuyg" | "misygu" | "misyug" | "miygs" | "miysg" | "miugs" | "miugsy" | "miugys" | "miusg" | "miusgy" | "miusyg" | "miuygs" | "miuysg" | "miygsu" | "miygus" | "miysgu" | "miysug" | "miyugs" | "miyusg" | "mygi" | "myig" | "mugi" | "mugiy" | "mugyi" | "muig" | "muigy" | "muiyg" | "muygi" | "muyig" | "mygiu" | "mygui" | "myigu" | "myiug" | "myugi" | "myuig" | "msgi" | "msgiu" | "msgiy" | "msgiuy" | "msgiyu" | "msgyi" | "msgui" | "msguiy" | "msguyi" | "msgyiu" | "msgyui" | "msig" | "msigu" | "msigy" | "msiguy" | "msigyu" | "msiyg" | "msiug" | "msiugy" | "msiuyg" | "msiygu" | "msiyug" | "msygi" | "msyig" | "msugi" | "msugiy" | "msugyi" | "msuig" | "msuigy" | "msuiyg" | "msuygi" | "msuyig" | "msygiu" | "msygui" | "msyigu" | "msyiug" | "msyugi" | "msyuig" | "mygis" | "mygsi" | "myigs" | "myisg" | "mysgi" | "mysig" | "mugis" | "mugisy" | "mugiys" | "mugsi" | "mugsiy" | "mugsyi" | "mugyis" | "mugysi" | "muigs" | "muigsy" | "muigys" | "muisg" | "muisgy" | "muisyg" | "muiygs" | "muiysg" | "musgi" | "musgiy" | "musgyi" | "musig" | "musigy" | "musiyg" | "musygi" | "musyig" | "muygis" | "muygsi" | "muyigs" | "muyisg" | "muysgi" | "muysig" | "mygisu" | "mygius" | "mygsiu" | "mygsui" | "myguis" | "mygusi" | "myigsu" | "myigus" | "myisgu" | "myisug" | "myiugs" | "myiusg" | "mysgiu" | "mysgui" | "mysigu" | "mysiug" | "mysugi" | "mysuig" | "myugis" | "myugsi" | "myuigs" | "myuisg" | "myusgi" | "myusig" | "ygim" | "ygmi" | "yigm" | "yimg" | "ymgi" | "ymig" | "ugim" | "ugimy" | "ugiym" | "ugmi" | "ugmiy" | "ugmyi" | "ugyim" | "ugymi" | "uigm" | "uigmy" | "uigym" | "uimg" | "uimgy" | "uimyg" | "uiygm" | "uiymg" | "umgi" | "umgiy" | "umgyi" | "umig" | "umigy" | "umiyg" | "umygi" | "umyig" | "uygim" | "uygmi" | "uyigm" | "uyimg" | "uymgi" | "uymig" | "ygimu" | "ygium" | "ygmiu" | "ygmui" | "yguim" | "ygumi" | "yigmu" | "yigum" | "yimgu" | "yimug" | "yiugm" | "yiumg" | "ymgiu" | "ymgui" | "ymigu" | "ymiug" | "ymugi" | "ymuig" | "yugim" | "yugmi" | "yuigm" | "yuimg" | "yumgi" | "yumig" | "sgim" | "sgimu" | "sgimy" | "sgimuy" | "sgimyu" | "sgiym" | "sgium" | "sgiumy" | "sgiuym" | "sgiymu" | "sgiyum" | "sgmi" | "sgmiu" | "sgmiy" | "sgmiuy" | "sgmiyu" | "sgmyi" | "sgmui" | "sgmuiy" | "sgmuyi" | "sgmyiu" | "sgmyui" | "sgyim" | "sgymi" | "sguim" | "sguimy" | "sguiym" | "sgumi" | "sgumiy" | "sgumyi" | "sguyim" | "sguymi" | "sgyimu" | "sgyium" | "sgymiu" | "sgymui" | "sgyuim" | "sgyumi" | "sigm" | "sigmu" | "sigmy" | "sigmuy" | "sigmyu" | "sigym" | "sigum" | "sigumy" | "siguym" | "sigymu" | "sigyum" | "simg" | "simgu" | "simgy" | "simguy" | "simgyu" | "simyg" | "simug" | "simugy" | "simuyg" | "simygu" | "simyug" | "siygm" | "siymg" | "siugm" | "siugmy" | "siugym" | "siumg" | "siumgy" | "siumyg" | "siuygm" | "siuymg" | "siygmu" | "siygum" | "siymgu" | "siymug" | "siyugm" | "siyumg" | "smgi" | "smgiu" | "smgiy" | "smgiuy" | "smgiyu" | "smgyi" | "smgui" | "smguiy" | "smguyi" | "smgyiu" | "smgyui" | "smig" | "smigu" | "smigy" | "smiguy" | "smigyu" | "smiyg" | "smiug" | "smiugy" | "smiuyg" | "smiygu" | "smiyug" | "smygi" | "smyig" | "smugi" | "smugiy" | "smugyi" | "smuig" | "smuigy" | "smuiyg" | "smuygi" | "smuyig" | "smygiu" | "smygui" | "smyigu" | "smyiug" | "smyugi" | "smyuig" | "sygim" | "sygmi" | "syigm" | "syimg" | "symgi" | "symig" | "sugim" | "sugimy" | "sugiym" | "sugmi" | "sugmiy" | "sugmyi" | "sugyim" | "sugymi" | "suigm" | "suigmy" | "suigym" | "suimg" | "suimgy" | "suimyg" | "suiygm" | "suiymg" | "sumgi" | "sumgiy" | "sumgyi" | "sumig" | "sumigy" | "sumiyg" | "sumygi" | "sumyig" | "suygim" | "suygmi" | "suyigm" | "suyimg" | "suymgi" | "suymig" | "sygimu" | "sygium" | "sygmiu" | "sygmui" | "syguim" | "sygumi" | "syigmu" | "syigum" | "syimgu" | "syimug" | "syiugm" | "syiumg" | "symgiu" | "symgui" | "symigu" | "symiug" | "symugi" | "symuig" | "syugim" | "syugmi" | "syuigm" | "syuimg" | "syumgi" | "syumig" | "ygims" | "ygism" | "ygmis" | "ygmsi" | "ygsim" | "ygsmi" | "yigms" | "yigsm" | "yimgs" | "yimsg" | "yisgm" | "yismg" | "ymgis" | "ymgsi" | "ymigs" | "ymisg" | "ymsgi" | "ymsig" | "ysgim" | "ysgmi" | "ysigm" | "ysimg" | "ysmgi" | "ysmig" | "ugims" | "ugimsy" | "ugimys" | "ugism" | "ugismy" | "ugisym" | "ugiyms" | "ugiysm" | "ugmis" | "ugmisy" | "ugmiys" | "ugmsi" | "ugmsiy" | "ugmsyi" | "ugmyis" | "ugmysi" | "ugsim" | "ugsimy" | "ugsiym" | "ugsmi" | "ugsmiy" | "ugsmyi" | "ugsyim" | "ugsymi" | "ugyims" | "ugyism" | "ugymis" | "ugymsi" | "ugysim" | "ugysmi" | "uigms" | "uigmsy" | "uigmys" | "uigsm" | "uigsmy" | "uigsym" | "uigyms" | "uigysm" | "uimgs" | "uimgsy" | "uimgys" | "uimsg" | "uimsgy" | "uimsyg" | "uimygs" | "uimysg" | "uisgm" | "uisgmy" | "uisgym" | "uismg" | "uismgy" | "uismyg" | "uisygm" | "uisymg" | "uiygms" | "uiygsm" | "uiymgs" | "uiymsg" | "uiysgm" | "uiysmg" | "umgis" | "umgisy" | "umgiys" | "umgsi" | "umgsiy" | "umgsyi" | "umgyis" | "umgysi" | "umigs" | "umigsy" | "umigys" | "umisg" | "umisgy" | "umisyg" | "umiygs" | "umiysg" | "umsgi" | "umsgiy" | "umsgyi" | "umsig" | "umsigy" | "umsiyg" | "umsygi" | "umsyig" | "umygis" | "umygsi" | "umyigs" | "umyisg" | "umysgi" | "umysig" | "usgim" | "usgimy" | "usgiym" | "usgmi" | "usgmiy" | "usgmyi" | "usgyim" | "usgymi" | "usigm" | "usigmy" | "usigym" | "usimg" | "usimgy" | "usimyg" | "usiygm" | "usiymg" | "usmgi" | "usmgiy" | "usmgyi" | "usmig" | "usmigy" | "usmiyg" | "usmygi" | "usmyig" | "usygim" | "usygmi" | "usyigm" | "usyimg" | "usymgi" | "usymig" | "uygims" | "uygism" | "uygmis" | "uygmsi" | "uygsim" | "uygsmi" | "uyigms" | "uyigsm" | "uyimgs" | "uyimsg" | "uyisgm" | "uyismg" | "uymgis" | "uymgsi" | "uymigs" | "uymisg" | "uymsgi" | "uymsig" | "uysgim" | "uysgmi" | "uysigm" | "uysimg" | "uysmgi" | "uysmig" | "ygimsu" | "ygimus" | "ygismu" | "ygisum" | "ygiums" | "ygiusm" | "ygmisu" | "ygmius" | "ygmsiu" | "ygmsui" | "ygmuis" | "ygmusi" | "ygsimu" | "ygsium" | "ygsmiu" | "ygsmui" | "ygsuim" | "ygsumi" | "yguims" | "yguism" | "ygumis" | "ygumsi" | "ygusim" | "ygusmi" | "yigmsu" | "yigmus" | "yigsmu" | "yigsum" | "yigums" | "yigusm" | "yimgsu" | "yimgus" | "yimsgu" | "yimsug" | "yimugs" | "yimusg" | "yisgmu" | "yisgum" | "yismgu" | "yismug" | "yisugm" | "yisumg" | "yiugms" | "yiugsm" | "yiumgs" | "yiumsg" | "yiusgm" | "yiusmg" | "ymgisu" | "ymgius" | "ymgsiu" | "ymgsui" | "ymguis" | "ymgusi" | "ymigsu" | "ymigus" | "ymisgu" | "ymisug" | "ymiugs" | "ymiusg" | "ymsgiu" | "ymsgui" | "ymsigu" | "ymsiug" | "ymsugi" | "ymsuig" | "ymugis" | "ymugsi" | "ymuigs" | "ymuisg" | "ymusgi" | "ymusig" | "ysgimu" | "ysgium" | "ysgmiu" | "ysgmui" | "ysguim" | "ysgumi" | "ysigmu" | "ysigum" | "ysimgu" | "ysimug" | "ysiugm" | "ysiumg" | "ysmgiu" | "ysmgui" | "ysmigu" | "ysmiug" | "ysmugi" | "ysmuig" | "ysugim" | "ysugmi" | "ysuigm" | "ysuimg" | "ysumgi" | "ysumig" | "yugims" | "yugism" | "yugmis" | "yugmsi" | "yugsim" | "yugsmi" | "yuigms" | "yuigsm" | "yuimgs" | "yuimsg" | "yuisgm" | "yuismg" | "yumgis" | "yumgsi" | "yumigs" | "yumisg" | "yumsgi" | "yumsig" | "yusgim" | "yusgmi" | "yusigm" | "yusimg" | "yusmgi" | "yusmig") | undefined) => RegExpTsDsl;
8673
8772
  /** Creates a return statement. */
8674
- return: (expr?: any) => ReturnTsDsl;
8773
+ return: (expr?: ReturnExpr | undefined) => ReturnTsDsl;
8675
8774
  /** Creates a setter method declaration. */
8676
8775
  setter: (name: SetterName, fn?: ((s: SetterTsDsl) => void) | undefined) => SetterTsDsl;
8677
8776
  /** Wraps an expression or statement-like value into a `StmtTsDsl`. */
8678
- stmt: (inner: typescript0.Expression | typescript0.Statement | TsDsl<any>) => StmtTsDsl;
8777
+ stmt: (inner: ts.Expression | ts.Statement | TsDsl<any>) => StmtTsDsl;
8679
8778
  /** Creates a template literal expression. */
8680
- template: (value?: any) => TemplateTsDsl;
8779
+ template: (value?: TemplatePart | undefined) => TemplateTsDsl;
8681
8780
  /** Creates a ternary conditional expression (if ? then : else). */
8682
- ternary: (condition?: string | typescript0.Expression | TsDsl<typescript0.Expression> | undefined) => TernaryTsDsl;
8781
+ ternary: (condition?: string | ts.Expression | TsDsl<ts.Expression> | undefined) => TernaryTsDsl;
8683
8782
  /** Creates a throw statement. */
8684
- throw: (error: string | typescript0.Expression | TsDsl<typescript0.Expression>, useNew?: boolean | undefined) => ThrowTsDsl;
8783
+ throw: (error: string | ts.Expression | TsDsl<ts.Expression>, useNew?: boolean | undefined) => ThrowTsDsl;
8685
8784
  /** Creates a syntax token (e.g. `?`, `readonly`, `+`, `-`). */
8686
8785
  token: () => TokenTsDsl<never>;
8687
8786
  /** Creates a try/catch/finally statement. */
8688
8787
  try: (...args: ConstructorParameters<typeof TryTsDsl>) => TryTsDsl;
8689
8788
  /** Creates a basic type reference or type expression (e.g. Foo or Foo<T>). */
8690
- type: ((name: any, fn?: ((t: TypeExprTsDsl) => void) | undefined) => TypeExprTsDsl) & {
8789
+ type: ((name: TypeExprName, fn?: TypeExprFn | undefined) => TypeExprTsDsl) & {
8691
8790
  /** Creates a type alias declaration (e.g. `type Foo = Bar`). */
8692
- alias: (name: any, fn?: ((t: TypeAliasTsDsl) => void) | undefined) => TypeAliasTsDsl;
8791
+ alias: (name: string | _hey_api_codegen_core0.Symbol, fn?: ((t: TypeAliasTsDsl) => void) | undefined) => TypeAliasTsDsl;
8693
8792
  /** Creates an intersection type (e.g. `A & B`). */
8694
8793
  and: (...args: ConstructorParameters<typeof TypeAndTsDsl>) => TypeAndTsDsl;
8695
8794
  /** Creates a qualified type reference (e.g. Foo.Bar). */
8696
- attr: (right: any) => TypeAttrTsDsl;
8795
+ attr: (right: string | _hey_api_codegen_core0.Symbol | ts.Identifier) => TypeAttrTsDsl;
8697
8796
  /** Creates a basic type reference or type expression (e.g. Foo or Foo<T>). */
8698
- expr: (name: any, fn?: ((t: TypeExprTsDsl) => void) | undefined) => TypeExprTsDsl;
8797
+ expr: (name: TypeExprName, fn?: TypeExprFn | undefined) => TypeExprTsDsl;
8699
8798
  /** Converts a runtime value into a corresponding type expression node. */
8700
- fromValue: (input: unknown) => TsDsl<typescript0.TypeNode>;
8799
+ fromValue: (input: unknown) => TsDsl<ts.TypeNode>;
8701
8800
  /** Creates a function type node (e.g. `(a: string) => number`). */
8702
8801
  func: (...args: ConstructorParameters<typeof TypeFuncTsDsl>) => TypeFuncTsDsl;
8703
8802
  /** Creates an indexed-access type (e.g. `Foo<T>[K]`). */
8704
- idx: (base: string | typescript0.TypeNode | TsDsl<typescript0.TypeNode>, index: string | number | typescript0.TypeNode | TsDsl<typescript0.TypeNode>) => TypeIdxTsDsl;
8803
+ idx: (base: string | ts.TypeNode | TsDsl<ts.TypeNode>, index: string | number | ts.TypeNode | TsDsl<ts.TypeNode>) => TypeIdxTsDsl;
8705
8804
  /** Creates a literal type node (e.g. 'foo', 42, or true). */
8706
8805
  literal: (value: string | number | boolean | null) => TypeLiteralTsDsl;
8707
8806
  /** Creates a mapped type (e.g. `{ [K in keyof T]: U }`). */
@@ -8713,18 +8812,18 @@ declare const $: ((id: any) => ExprTsDsl) & {
8713
8812
  /** Represents a union type (e.g. `A | B | C`). */
8714
8813
  or: (...args: ConstructorParameters<typeof TypeOrTsDsl>) => TypeOrTsDsl;
8715
8814
  /** Creates a type parameter (e.g. `<T>`). */
8716
- param: (name?: any, fn?: ((name: TypeParamTsDsl) => void) | undefined) => TypeParamTsDsl;
8815
+ param: (name?: TypeParamName | undefined, fn?: ((name: TypeParamTsDsl) => void) | undefined) => TypeParamTsDsl;
8717
8816
  /** Creates a type query node (e.g. `typeof Foo`). */
8718
- query: (expr: string | MaybeTsDsl<typescript0.Expression | TypeTsDsl<typescript0.TypeNode>>) => TypeQueryTsDsl;
8817
+ query: (expr: TypeQueryExpr) => TypeQueryTsDsl;
8719
8818
  /** Builds a TypeScript template literal *type* (e.g. `${Foo}-${Bar}` as a type). */
8720
- template: (value?: string | typescript0.TypeNode | TsDsl<typescript0.TypeNode> | undefined) => TypeTemplateTsDsl;
8819
+ template: (value?: string | ts.TypeNode | TsDsl<ts.TypeNode> | undefined) => TypeTemplateTsDsl;
8721
8820
  /** Creates a tuple type (e.g. [A, B, C]). */
8722
8821
  tuple: (...args: ConstructorParameters<typeof TypeTupleTsDsl>) => TypeTupleTsDsl;
8723
8822
  };
8724
- /** Creates a runtime `typeof` expression (e.g. typeof x). */
8725
- typeofExpr: (expr: string | typescript0.Expression | TsDsl<typescript0.Expression>) => TypeOfExprTsDsl;
8726
- /** Creates a variable declaration (var). */
8727
- var: (name?: any) => VarTsDsl;
8823
+ /** Creates a `typeof` expression (e.g. `typeof value`). */
8824
+ typeofExpr: (expr: TypeOfExpr) => TypeOfExprTsDsl;
8825
+ /** Creates a variable declaration (`var`). */
8826
+ var: (name?: VarName | undefined) => VarTsDsl;
8728
8827
  };
8729
8828
  type DollarTsDsl = {
8730
8829
  /**
@@ -8741,7 +8840,7 @@ type DollarTsDsl = {
8741
8840
  *
8742
8841
  * Returns:
8743
8842
  * - A new `ExprTsDsl` instance when called directly.
8744
- * - The `base` factory object for constructing more specific nodes.
8843
+ * - The `tsDsl` object for constructing more specific nodes.
8745
8844
  */
8746
8845
  $: typeof $;
8747
8846
  };
@@ -15007,8 +15106,6 @@ declare class PluginInstance<T extends Plugin.Types = Plugin.Types> {
15007
15106
  gen: IProject;
15008
15107
  name: string;
15009
15108
  });
15010
- addNode(node: Node | null): number;
15011
- updateNode(index: number, node: Node | null): void;
15012
15109
  /**
15013
15110
  * Iterates over various input elements as specified by the event types, in
15014
15111
  * a specific order: servers, schemas, parameters, request bodies, then
@@ -15059,6 +15156,14 @@ declare class PluginInstance<T extends Plugin.Types = Plugin.Types> {
15059
15156
  };
15060
15157
  };
15061
15158
  isSymbolRegistered(identifier: SymbolIdentifier): boolean;
15159
+ /**
15160
+ * Sets or adds a node to the project graph.
15161
+ *
15162
+ * @param node The node to be added or updated in the project graph.
15163
+ * @param index The index at which to update the node. If undefined, the node will be added.
15164
+ * @returns The index of the added node or void if updated.
15165
+ */
15166
+ node<T extends number | undefined = undefined>(node: Node | null, index?: T): T extends number ? void : number;
15062
15167
  querySymbol(filter: SymbolMeta): Symbol | undefined;
15063
15168
  referenceSymbol(meta: SymbolMeta): Symbol;
15064
15169
  /**
@@ -15637,8 +15742,8 @@ type UserOutput = {
15637
15742
  /**
15638
15743
  * If specified, this will be the file extension used when importing
15639
15744
  * other modules. By default, we don't add a file extension and let the
15640
- * runtime resolve it. If you're using moduleResolution `nodenext`, we
15641
- * default to `.js`.
15745
+ * runtime resolve it. If you're using moduleResolution `nodenext` or
15746
+ * `node16`, we default to `.js`.
15642
15747
  *
15643
15748
  * @default undefined
15644
15749
  */
@@ -15736,8 +15841,8 @@ type Output = {
15736
15841
  /**
15737
15842
  * If specified, this will be the file extension used when importing
15738
15843
  * other modules. By default, we don't add a file extension and let the
15739
- * runtime resolve it. If you're using moduleResolution `nodenext`, we
15740
- * default to `.js`.
15844
+ * runtime resolve it. If you're using moduleResolution `nodenext` or
15845
+ * `node16`, we default to `.js`.
15741
15846
  */
15742
15847
  importFileExtension: ImportFileExtensions | (string & {}) | null | undefined;
15743
15848
  /**
@@ -16424,4 +16529,4 @@ type Config = Omit<Required<UserConfig>, 'input' | 'logs' | 'output' | 'parser'
16424
16529
  };
16425
16530
  //#endregion
16426
16531
  export { Client$4 as A, MaybeTsDsl as C, PluginHandler as D, Client as E, IR$1 as F, LazyOrAsync as I, MaybeArray as L, Client$6 as M, Client$7 as N, Client$2 as O, StringCase as P, TypeScriptRenderer as S, TypeTsDsl as T, $ as _, Plugin as a, regexp as b, OpenApiOperationObject as c, OpenApiResponseObject as d, OpenApiSchemaObject as f, ExpressionTransformer as g, TypeTransformer as h, DefinePlugin as i, Client$5 as j, Client$3 as k, OpenApiParameterObject as l, Logger as m, UserConfig as n, OpenApi as o, Context as p, Input as r, OpenApiMetaObject as s, Config as t, OpenApiRequestBodyObject as u, DollarTsDsl as v, TsDsl as w, keywords as x, reserved as y };
16427
- //# sourceMappingURL=config-uoaRJc6A.d.mts.map
16532
+ //# sourceMappingURL=config-Baq-Kb-6.d.mts.map