@hey-api/openapi-ts 0.89.0 → 0.89.1

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,6 +1,6 @@
1
- import { AnalysisContext, File, FromRef, IProject, Language, NameConflictResolver, Node, Project, Ref, Refs, RenderContext, Renderer, Symbol, SymbolIdentifier, SymbolIn, SymbolMeta } from "@hey-api/codegen-core";
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";
2
3
  import { RangeOptions, SemVer } from "semver";
3
- import * as typescript0 from "typescript";
4
4
  import ts from "typescript";
5
5
 
6
6
  //#region src/openApi/shared/types/openapi-spec-extensions.d.ts
@@ -31,12 +31,20 @@ type LazyOrAsync<T> = T | (() => T) | (() => Promise<T>);
31
31
  type MaybeArray<T> = T | ReadonlyArray<T>;
32
32
  //#endregion
33
33
  //#region src/openApi/3.1.x/types/spec.d.ts
34
+ /**
35
+ * OpenAPI Specification Extensions.
36
+ *
37
+ * See {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#specification-extensions Specification Extensions}.
38
+ */
39
+ interface SpecificationExtensions$2 {
40
+ [extension: `x-${string}`]: unknown;
41
+ }
34
42
  /**
35
43
  * 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}.
36
44
  *
37
45
  * This object MAY be extended with {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#specification-extensions Specification Extensions}.
38
46
  */
39
- interface OpenApiV3_1_X {
47
+ interface OpenApiV3_1_X extends SpecificationExtensions$2 {
40
48
  /**
41
49
  * An element to hold various schemas for the document.
42
50
  */
@@ -159,11 +167,11 @@ interface OpenApiV3_1_X {
159
167
  * description: callback successfully processed
160
168
  * ```
161
169
  */
162
- interface CallbackObject$1 {
170
+ interface CallbackObject$1 extends SpecificationExtensions$2 {
163
171
  /**
164
172
  * 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.
165
173
  */
166
- [expression: string]: PathItemObject$2 | ReferenceObject$1;
174
+ [expression: string]: PathItemObject$2 | ReferenceObject$1 | unknown;
167
175
  }
168
176
  /**
169
177
  * 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.
@@ -254,7 +262,7 @@ interface CallbackObject$1 {
254
262
  * read:pets: read your pets
255
263
  * ```
256
264
  */
257
- interface ComponentsObject$1 {
265
+ interface ComponentsObject$1 extends SpecificationExtensions$2 {
258
266
  /**
259
267
  * An object to hold reusable {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#callback-object Callback Objects}.
260
268
  */
@@ -308,7 +316,7 @@ interface ComponentsObject$1 {
308
316
  * email: support@example.com
309
317
  * ```
310
318
  */
311
- interface ContactObject$2 {
319
+ interface ContactObject$2 extends SpecificationExtensions$2 {
312
320
  /**
313
321
  * The email address of the contact person/organization. This MUST be in the form of an email address.
314
322
  */
@@ -448,7 +456,7 @@ interface ContactObject$2 {
448
456
  *
449
457
  * will map to `Dog` because of the definition in the `mapping` element.
450
458
  */
451
- interface DiscriminatorObject$1 {
459
+ interface DiscriminatorObject$1 extends SpecificationExtensions$2 {
452
460
  /**
453
461
  * An object to hold mappings between payload values and schema names or references.
454
462
  */
@@ -499,7 +507,7 @@ interface DiscriminatorObject$1 {
499
507
  * type: integer
500
508
  * ```
501
509
  */
502
- interface EncodingObject$1 {
510
+ interface EncodingObject$1 extends SpecificationExtensions$2 {
503
511
  /**
504
512
  * 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.
505
513
  */
@@ -587,7 +595,7 @@ interface EncodingObject$1 {
587
595
  * $ref: '#/components/examples/confirmation-success'
588
596
  * ```
589
597
  */
590
- interface ExampleObject$2 {
598
+ interface ExampleObject$2 extends SpecificationExtensions$2 {
591
599
  /**
592
600
  * Long description for the example. {@link https://spec.commonmark.org/ CommonMark syntax} MAY be used for rich text representation.
593
601
  */
@@ -616,7 +624,7 @@ interface ExampleObject$2 {
616
624
  * url: https://example.com
617
625
  * ```
618
626
  */
619
- interface ExternalDocumentationObject$2 {
627
+ interface ExternalDocumentationObject$2 extends SpecificationExtensions$2 {
620
628
  /**
621
629
  * A description of the target documentation. {@link https://spec.commonmark.org/ CommonMark syntax} MAY be used for rich text representation.
622
630
  */
@@ -662,7 +670,7 @@ type HeaderObject$2 = Omit<ParameterObject, 'in' | 'name'>;
662
670
  * version: 1.0.1
663
671
  * ```
664
672
  */
665
- interface InfoObject {
673
+ interface InfoObject extends SpecificationExtensions$2 {
666
674
  /**
667
675
  * The contact information for the exposed API.
668
676
  */
@@ -703,7 +711,7 @@ interface InfoObject {
703
711
  * identifier: Apache-2.0
704
712
  * ```
705
713
  */
706
- interface LicenseObject$2 {
714
+ interface LicenseObject$2 extends SpecificationExtensions$2 {
707
715
  /**
708
716
  * An {@link https://spdx.org/licenses/ SPDX} license expression for the API. The `identifier` field is mutually exclusive of the `url` field.
709
717
  */
@@ -864,7 +872,7 @@ interface LicenseObject$2 {
864
872
  *
865
873
  * Runtime expressions preserve the type of the referenced value. Expressions can be embedded into string values by surrounding the expression with `{}` curly braces.
866
874
  */
867
- interface LinkObject$1 {
875
+ interface LinkObject$1 extends SpecificationExtensions$2 {
868
876
  /**
869
877
  * A description of the link. {@link https://spec.commonmark.org/ CommonMark syntax} MAY be used for rich text representation.
870
878
  */
@@ -923,7 +931,7 @@ interface LinkObject$1 {
923
931
  * $ref: "#/components/examples/frog-example"
924
932
  * ```
925
933
  */
926
- interface MediaTypeObject$1 {
934
+ interface MediaTypeObject$1 extends SpecificationExtensions$2 {
927
935
  /**
928
936
  * 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`.
929
937
  */
@@ -964,7 +972,7 @@ interface MediaTypeObject$1 {
964
972
  * read:pets: read your pets
965
973
  * ```
966
974
  */
967
- interface OAuthFlowObject$1 {
975
+ interface OAuthFlowObject$1 extends SpecificationExtensions$2 {
968
976
  /**
969
977
  * **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.
970
978
  */
@@ -987,7 +995,7 @@ interface OAuthFlowObject$1 {
987
995
  *
988
996
  * This object MAY be extended with {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#specification-extensions Specification Extensions}.
989
997
  */
990
- interface OAuthFlowsObject$1 {
998
+ interface OAuthFlowsObject$1 extends SpecificationExtensions$2 {
991
999
  /**
992
1000
  * Configuration for the OAuth Authorization Code flow. Previously called `accessCode` in OpenAPI 2.0.
993
1001
  */
@@ -1054,7 +1062,7 @@ interface OAuthFlowsObject$1 {
1054
1062
  * - read:pets
1055
1063
  * ```
1056
1064
  */
1057
- interface OperationObject {
1065
+ interface OperationObject extends SpecificationExtensions$2 {
1058
1066
  /**
1059
1067
  * 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.
1060
1068
  */
@@ -1201,7 +1209,7 @@ interface OperationObject {
1201
1209
  * type: number
1202
1210
  * ```
1203
1211
  */
1204
- interface ParameterObject {
1212
+ interface ParameterObject extends SpecificationExtensions$2 {
1205
1213
  /**
1206
1214
  * 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.
1207
1215
  */
@@ -1296,7 +1304,7 @@ interface ParameterObject {
1296
1304
  * style: simple
1297
1305
  * ```
1298
1306
  */
1299
- interface PathItemObject$2 {
1307
+ interface PathItemObject$2 extends SpecificationExtensions$2 {
1300
1308
  /**
1301
1309
  * 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}.
1302
1310
  */
@@ -1395,7 +1403,7 @@ interface PathItemObject$2 {
1395
1403
  * $ref: '#/components/schemas/pet'
1396
1404
  * ```
1397
1405
  */
1398
- interface PathsObject$2 {
1406
+ interface PathsObject$2 extends SpecificationExtensions$2 {
1399
1407
  /**
1400
1408
  * 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.
1401
1409
  */
@@ -1498,7 +1506,7 @@ interface ReferenceObject$1 {
1498
1506
  * type: string
1499
1507
  * ```
1500
1508
  */
1501
- interface RequestBodyObject {
1509
+ interface RequestBodyObject extends SpecificationExtensions$2 {
1502
1510
  /**
1503
1511
  * **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/*
1504
1512
  */
@@ -1573,7 +1581,7 @@ interface RequestBodyObject {
1573
1581
  * description: object created
1574
1582
  * ```
1575
1583
  */
1576
- interface ResponseObject {
1584
+ interface ResponseObject extends SpecificationExtensions$2 {
1577
1585
  /**
1578
1586
  * 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/*
1579
1587
  */
@@ -1620,11 +1628,11 @@ interface ResponseObject {
1620
1628
  * $ref: '#/components/schemas/ErrorModel'
1621
1629
  * ```
1622
1630
  */
1623
- interface ResponsesObject$2 {
1631
+ interface ResponsesObject$2 extends SpecificationExtensions$2 {
1624
1632
  /**
1625
1633
  * 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.
1626
1634
  */
1627
- [httpStatusCode: string]: ResponseObject | ReferenceObject$1 | undefined;
1635
+ [httpStatusCode: string]: ResponseObject | ReferenceObject$1 | undefined | unknown;
1628
1636
  /**
1629
1637
  * The documentation of responses other than the ones declared for specific HTTP response codes. Use this field to cover undeclared responses.
1630
1638
  */
@@ -1654,7 +1662,7 @@ interface ResponsesObject$2 {
1654
1662
  *
1655
1663
  * 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.
1656
1664
  */
1657
- type SchemaObject = JsonSchemaDraft2020_12;
1665
+ type SchemaObject = JsonSchemaDraft2020_12 & SpecificationExtensions$2;
1658
1666
  /**
1659
1667
  * 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}.
1660
1668
  *
@@ -1739,7 +1747,7 @@ interface SecurityRequirementObject$2 {
1739
1747
  * read:pets: read your pets
1740
1748
  * ```
1741
1749
  */
1742
- type SecuritySchemeObject$2 = {
1750
+ type SecuritySchemeObject$2 = SpecificationExtensions$2 & {
1743
1751
  /**
1744
1752
  * A description for security scheme. {@link https://spec.commonmark.org/ CommonMark syntax} MAY be used for rich text representation.
1745
1753
  */
@@ -1805,7 +1813,7 @@ type SecuritySchemeObject$2 = {
1805
1813
  * description: Development server
1806
1814
  * ```
1807
1815
  */
1808
- interface ServerObject$1 {
1816
+ interface ServerObject$1 extends SpecificationExtensions$2 {
1809
1817
  /**
1810
1818
  * An optional string describing the host designated by the URL. {@link https://spec.commonmark.org/ CommonMark syntax} MAY be used for rich text representation.
1811
1819
  */
@@ -1824,7 +1832,7 @@ interface ServerObject$1 {
1824
1832
  *
1825
1833
  * This object MAY be extended with {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#specification-extensions Specification Extensions}.
1826
1834
  */
1827
- interface ServerVariableObject$1 {
1835
+ interface ServerVariableObject$1 extends SpecificationExtensions$2 {
1828
1836
  /**
1829
1837
  * **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.
1830
1838
  */
@@ -1849,7 +1857,7 @@ interface ServerVariableObject$1 {
1849
1857
  * description: Pets operations
1850
1858
  * ```
1851
1859
  */
1852
- interface TagObject$2 {
1860
+ interface TagObject$2 extends SpecificationExtensions$2 {
1853
1861
  /**
1854
1862
  * A description for the tag. {@link https://spec.commonmark.org/ CommonMark syntax} MAY be used for rich text representation.
1855
1863
  */
@@ -2055,7 +2063,7 @@ interface TagObject$2 {
2055
2063
  * </aliens>
2056
2064
  * ```
2057
2065
  */
2058
- interface XMLObject$2 {
2066
+ interface XMLObject$2 extends SpecificationExtensions$2 {
2059
2067
  /**
2060
2068
  * Declares whether the property definition translates to an attribute instead of an element. Default value is `false`.
2061
2069
  */
@@ -2102,7 +2110,7 @@ interface OpenApiSchemaExtensions {
2102
2110
  //#endregion
2103
2111
  //#region src/openApi/3.1.x/types/json-schema-draft-2020-12.d.ts
2104
2112
  // TODO: left out some keywords related to structuring a complex schema and declaring a dialect
2105
- interface JsonSchemaDraft2020_12 extends ArrayKeywords, NumberKeywords, ObjectKeywords, StringKeywords, EnumExtensions, OpenApiSchemaExtensions {
2113
+ interface JsonSchemaDraft2020_12 extends ArrayKeywords, NumberKeywords, ObjectKeywords, StringKeywords, EnumExtensions, OpenApiSchemaExtensions, SpecificationExtensions$2 {
2106
2114
  /**
2107
2115
  * 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.
2108
2116
  */
@@ -2427,6 +2435,14 @@ type JsonSchemaTypes$1 = 'array' | 'boolean' | 'integer' | 'null' | 'number' | '
2427
2435
  type IRMediaType = 'form-data' | 'json' | 'text' | 'url-search-params' | 'octet-stream';
2428
2436
  //#endregion
2429
2437
  //#region src/ir/types.d.ts
2438
+ /**
2439
+ * OpenAPI Specification Extensions.
2440
+ *
2441
+ * See {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#specification-extensions Specification Extensions}.
2442
+ */
2443
+ interface SpecificationExtensions$1 {
2444
+ [extension: `x-${string}`]: unknown;
2445
+ }
2430
2446
  interface IRBodyObject {
2431
2447
  mediaType: string;
2432
2448
  /**
@@ -2443,7 +2459,7 @@ interface IRComponentsObject {
2443
2459
  requestBodies?: Record<string, IRRequestBodyObject>;
2444
2460
  schemas?: Record<string, IRSchemaObject>;
2445
2461
  }
2446
- interface IROperationObject {
2462
+ interface IROperationObject extends SpecificationExtensions$1 {
2447
2463
  body?: IRBodyObject;
2448
2464
  deprecated?: boolean;
2449
2465
  description?: string;
@@ -2464,7 +2480,7 @@ interface IRParametersObject {
2464
2480
  path?: Record<string, IRParameterObject>;
2465
2481
  query?: Record<string, IRParameterObject>;
2466
2482
  }
2467
- interface IRParameterObject extends Pick<JsonSchemaDraft2020_12, 'deprecated' | 'description'> {
2483
+ interface IRParameterObject extends Pick<JsonSchemaDraft2020_12, 'deprecated' | 'description'>, SpecificationExtensions$1 {
2468
2484
  /**
2469
2485
  * 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.
2470
2486
  */
@@ -2522,7 +2538,7 @@ interface IRResponseObject {
2522
2538
  mediaType?: string;
2523
2539
  schema: IRSchemaObject;
2524
2540
  }
2525
- interface IRSchemaObject extends Pick<JsonSchemaDraft2020_12, '$ref' | 'const' | 'default' | 'deprecated' | 'description' | 'exclusiveMaximum' | 'exclusiveMinimum' | 'maximum' | 'maxItems' | 'maxLength' | 'minimum' | 'minItems' | 'minLength' | 'pattern' | 'required' | 'title' | 'example'> {
2541
+ 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 {
2526
2542
  /**
2527
2543
  * If the schema is intended to be used as an object property, it can be
2528
2544
  * marked as read-only or write-only. This value controls whether the schema
@@ -4746,12 +4762,20 @@ interface OpenApiV2_0_XTypes {
4746
4762
  }
4747
4763
  //#endregion
4748
4764
  //#region src/openApi/3.0.x/types/spec.d.ts
4765
+ /**
4766
+ * OpenAPI Specification Extensions.
4767
+ *
4768
+ * See {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#specification-extensions Specification Extensions}.
4769
+ */
4770
+ interface SpecificationExtensions {
4771
+ [extension: `x-${string}`]: unknown;
4772
+ }
4749
4773
  /**
4750
4774
  * 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}.
4751
4775
  *
4752
4776
  * This object MAY be extended with {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#specification-extensions Specification Extensions}.
4753
4777
  */
4754
- interface OpenApiV3_0_X {
4778
+ interface OpenApiV3_0_X extends SpecificationExtensions {
4755
4779
  /**
4756
4780
  * An element to hold various Objects for the OpenAPI Description.
4757
4781
  */
@@ -4792,11 +4816,11 @@ interface OpenApiV3_0_X {
4792
4816
  *
4793
4817
  * TODO: examples
4794
4818
  */
4795
- interface CallbackObject {
4819
+ interface CallbackObject extends SpecificationExtensions {
4796
4820
  /**
4797
4821
  * 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.
4798
4822
  */
4799
- [expression: string]: PathItemObject | ReferenceObject$2;
4823
+ [expression: string]: PathItemObject | ReferenceObject$2 | unknown;
4800
4824
  }
4801
4825
  /**
4802
4826
  * 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.
@@ -4807,7 +4831,7 @@ interface CallbackObject {
4807
4831
  *
4808
4832
  * TODO: examples
4809
4833
  */
4810
- interface ComponentsObject {
4834
+ interface ComponentsObject extends SpecificationExtensions {
4811
4835
  /**
4812
4836
  * An object to hold reusable {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#callback-object Callback Objects}.
4813
4837
  */
@@ -4856,7 +4880,7 @@ interface ComponentsObject {
4856
4880
  * email: support@example.com
4857
4881
  * ```
4858
4882
  */
4859
- interface ContactObject {
4883
+ interface ContactObject extends SpecificationExtensions {
4860
4884
  /**
4861
4885
  * The email address of the contact person/organization. This MUST be in the form of an email address.
4862
4886
  */
@@ -4901,7 +4925,7 @@ interface DiscriminatorObject {
4901
4925
  * TODO: default values examples
4902
4926
  * TODO: examples
4903
4927
  */
4904
- interface EncodingObject {
4928
+ interface EncodingObject extends SpecificationExtensions {
4905
4929
  /**
4906
4930
  * 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`.
4907
4931
  */
@@ -4934,7 +4958,7 @@ interface EncodingObject {
4934
4958
  *
4935
4959
  * TODO: examples
4936
4960
  */
4937
- interface ExampleObject {
4961
+ interface ExampleObject extends SpecificationExtensions {
4938
4962
  /**
4939
4963
  * Long description for the example. {@link https://spec.commonmark.org/ CommonMark syntax} MAY be used for rich text representation.
4940
4964
  */
@@ -4964,7 +4988,7 @@ interface ExampleObject {
4964
4988
  * url: https://example.com
4965
4989
  * ```
4966
4990
  */
4967
- interface ExternalDocumentationObject {
4991
+ interface ExternalDocumentationObject extends SpecificationExtensions {
4968
4992
  /**
4969
4993
  * A description of the target documentation. {@link https://spec.commonmark.org/ CommonMark syntax} MAY be used for rich text representation.
4970
4994
  */
@@ -5006,7 +5030,7 @@ type HeaderObject = Omit<ParameterObject$1, 'in' | 'name'>;
5006
5030
  * version: 1.0.1
5007
5031
  * ```
5008
5032
  */
5009
- interface InfoObject$1 {
5033
+ interface InfoObject$1 extends SpecificationExtensions {
5010
5034
  /**
5011
5035
  * The contact information for the exposed API.
5012
5036
  */
@@ -5042,7 +5066,7 @@ interface InfoObject$1 {
5042
5066
  * url: https://www.apache.org/licenses/LICENSE-2.0.html
5043
5067
  * ```
5044
5068
  */
5045
- interface LicenseObject {
5069
+ interface LicenseObject extends SpecificationExtensions {
5046
5070
  /**
5047
5071
  * **REQUIRED**. The license name used for the API.
5048
5072
  */
@@ -5067,7 +5091,7 @@ interface LicenseObject {
5067
5091
  *
5068
5092
  * TODO: examples
5069
5093
  */
5070
- interface LinkObject {
5094
+ interface LinkObject extends SpecificationExtensions {
5071
5095
  /**
5072
5096
  * A description of the link. {@link https://spec.commonmark.org/ CommonMark syntax} MAY be used for rich text representation.
5073
5097
  */
@@ -5102,7 +5126,7 @@ interface LinkObject {
5102
5126
  *
5103
5127
  * TODO: examples
5104
5128
  */
5105
- interface MediaTypeObject {
5129
+ interface MediaTypeObject extends SpecificationExtensions {
5106
5130
  /**
5107
5131
  * 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.
5108
5132
  */
@@ -5127,7 +5151,7 @@ interface MediaTypeObject {
5127
5151
  *
5128
5152
  * TODO: examples
5129
5153
  */
5130
- interface OAuthFlowObject {
5154
+ interface OAuthFlowObject extends SpecificationExtensions {
5131
5155
  /**
5132
5156
  * **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.
5133
5157
  */
@@ -5150,7 +5174,7 @@ interface OAuthFlowObject {
5150
5174
  *
5151
5175
  * This object MAY be extended with {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#specification-extensions Specification Extensions}.
5152
5176
  */
5153
- interface OAuthFlowsObject {
5177
+ interface OAuthFlowsObject extends SpecificationExtensions {
5154
5178
  /**
5155
5179
  * Configuration for the OAuth Authorization Code flow. Previously called `accessCode` in OpenAPI 2.0.
5156
5180
  */
@@ -5175,7 +5199,7 @@ interface OAuthFlowsObject {
5175
5199
  *
5176
5200
  * TODO: examples
5177
5201
  */
5178
- interface OperationObject$1 {
5202
+ interface OperationObject$1 extends SpecificationExtensions {
5179
5203
  /**
5180
5204
  * 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.
5181
5205
  */
@@ -5269,7 +5293,7 @@ interface OperationObject$1 {
5269
5293
  *
5270
5294
  * TODO: examples
5271
5295
  */
5272
- interface ParameterObject$1 {
5296
+ interface ParameterObject$1 extends SpecificationExtensions {
5273
5297
  /**
5274
5298
  * 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.
5275
5299
  */
@@ -5333,7 +5357,7 @@ interface ParameterObject$1 {
5333
5357
  *
5334
5358
  * TODO: examples
5335
5359
  */
5336
- interface PathItemObject {
5360
+ interface PathItemObject extends SpecificationExtensions {
5337
5361
  /**
5338
5362
  * 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}.
5339
5363
  */
@@ -5394,7 +5418,7 @@ interface PathItemObject {
5394
5418
  *
5395
5419
  * TODO: examples
5396
5420
  */
5397
- interface PathsObject {
5421
+ interface PathsObject extends SpecificationExtensions {
5398
5422
  /**
5399
5423
  * 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.
5400
5424
  */
@@ -5440,7 +5464,7 @@ interface ReferenceObject$2 {
5440
5464
  *
5441
5465
  * TODO: examples
5442
5466
  */
5443
- interface RequestBodyObject$1 {
5467
+ interface RequestBodyObject$1 extends SpecificationExtensions {
5444
5468
  /**
5445
5469
  * **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/*"`
5446
5470
  */
@@ -5461,7 +5485,7 @@ interface RequestBodyObject$1 {
5461
5485
  *
5462
5486
  * TODO: examples
5463
5487
  */
5464
- interface ResponseObject$1 {
5488
+ interface ResponseObject$1 extends SpecificationExtensions {
5465
5489
  /**
5466
5490
  * 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/*"`
5467
5491
  */
@@ -5492,11 +5516,11 @@ interface ResponseObject$1 {
5492
5516
  *
5493
5517
  * TODO: examples
5494
5518
  */
5495
- interface ResponsesObject {
5519
+ interface ResponsesObject extends SpecificationExtensions {
5496
5520
  /**
5497
5521
  * 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.
5498
5522
  */
5499
- [httpStatusCode: string]: ResponseObject$1 | ReferenceObject$2 | undefined;
5523
+ [httpStatusCode: string]: ResponseObject$1 | ReferenceObject$2 | undefined | unknown;
5500
5524
  /**
5501
5525
  * 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.
5502
5526
  */
@@ -5553,7 +5577,7 @@ interface ResponsesObject {
5553
5577
  *
5554
5578
  * TODO: content, examples
5555
5579
  */
5556
- interface SchemaObject$1 extends EnumExtensions {
5580
+ interface SchemaObject$1 extends EnumExtensions, SpecificationExtensions {
5557
5581
  /**
5558
5582
  * The value of "additionalProperties" MUST be a boolean or a schema.
5559
5583
  *
@@ -5804,7 +5828,7 @@ interface SecurityRequirementObject {
5804
5828
  *
5805
5829
  * TODO: examples
5806
5830
  */
5807
- type SecuritySchemeObject = {
5831
+ type SecuritySchemeObject = SpecificationExtensions & {
5808
5832
  /**
5809
5833
  * A description for security scheme. {@link https://spec.commonmark.org/ CommonMark syntax} MAY be used for rich text representation.
5810
5834
  */
@@ -5861,7 +5885,7 @@ type SecuritySchemeObject = {
5861
5885
  *
5862
5886
  * TODO: examples
5863
5887
  */
5864
- interface ServerObject {
5888
+ interface ServerObject extends SpecificationExtensions {
5865
5889
  /**
5866
5890
  * An optional string describing the host designated by the URL. {@link https://spec.commonmark.org/ CommonMark syntax} MAY be used for rich text representation.
5867
5891
  */
@@ -5880,7 +5904,7 @@ interface ServerObject {
5880
5904
  *
5881
5905
  * This object MAY be extended with {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#specification-extensions Specification Extensions}.
5882
5906
  */
5883
- interface ServerVariableObject {
5907
+ interface ServerVariableObject extends SpecificationExtensions {
5884
5908
  /**
5885
5909
  * **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.
5886
5910
  */
@@ -5906,7 +5930,7 @@ interface ServerVariableObject {
5906
5930
  * description: Pets operations
5907
5931
  * ```
5908
5932
  */
5909
- interface TagObject {
5933
+ interface TagObject extends SpecificationExtensions {
5910
5934
  /**
5911
5935
  * A description for the tag. {@link https://spec.commonmark.org/ CommonMark syntax} MAY be used for rich text representation.
5912
5936
  */
@@ -5934,7 +5958,7 @@ interface TagObject {
5934
5958
  *
5935
5959
  * TODO: examples
5936
5960
  */
5937
- interface XMLObject {
5961
+ interface XMLObject extends SpecificationExtensions {
5938
5962
  /**
5939
5963
  * Declares whether the property definition translates to an attribute instead of an element. Default value is `false`.
5940
5964
  */
@@ -6250,10 +6274,8 @@ type Config$13 = Plugin.Name<'@hey-api/sdk'> & Plugin.Hooks & {
6250
6274
  * Set `instance` to create an instantiable SDK. Using `true` will use the
6251
6275
  * default instance name; in practice, you want to define your own by passing
6252
6276
  * a string value.
6253
- *
6254
- * @default false
6255
6277
  */
6256
- instance: string | boolean;
6278
+ instance: string;
6257
6279
  /**
6258
6280
  * Customise the name of methods within the service. By default,
6259
6281
  * {@link IR.OperationObject.id} is used.
@@ -6353,8 +6375,8 @@ declare abstract class TsDsl<T extends ts.Node = ts.Node> implements Node<T> {
6353
6375
  parent?: Node;
6354
6376
  root?: Node;
6355
6377
  symbol?: Symbol;
6356
- toAst(): T;
6357
- readonly '~brand': any;
6378
+ toAst(_: AstContext): T;
6379
+ readonly '~brand' = "heyapi.node";
6358
6380
  /** Branding property to identify the DSL class at runtime. */
6359
6381
  abstract readonly '~dsl': string;
6360
6382
  /** Conditionally applies a callback to this builder. */
@@ -6362,8 +6384,8 @@ declare abstract class TsDsl<T extends ts.Node = ts.Node> implements Node<T> {
6362
6384
  $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;
6363
6385
  $if<T extends TsDsl, V, R extends TsDsl = T>(this: T, value: V, ifTrue: () => R | void, ifFalse?: () => R | void): R | T;
6364
6386
  protected $maybeId<T extends string | ts.Expression>(expr: T): T extends string ? ts.Identifier : T;
6365
- protected $node<I>(value: I): NodeOfMaybe<I>;
6366
- protected $type<I>(value: I, args?: ReadonlyArray<ts.TypeNode>): TypeOfMaybe<I>;
6387
+ protected $node<I>(ctx: AstContext, value: I): NodeOfMaybe<I>;
6388
+ protected $type<I>(ctx: AstContext, value: I, args?: ReadonlyArray<ts.TypeNode>): TypeOfMaybe<I>;
6367
6389
  /** Unwraps nested nodes into raw TypeScript AST. */
6368
6390
  private unwrap;
6369
6391
  }
@@ -6375,19 +6397,9 @@ type TypeOfMaybe<I> = undefined extends I ? TypeOf<NonNullable<FromRef<I>>> | un
6375
6397
  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;
6376
6398
  //#endregion
6377
6399
  //#region src/ts-dsl/mixins/types.d.ts
6378
- type BaseCtor<T> = abstract new (...args: any[]) => TsDsl<T>;
6379
- type MixinCtor<T extends BaseCtor<any>, K$1> = abstract new (...args: any[]) => InstanceType<T> & K$1;
6380
- //#endregion
6381
- //#region src/ts-dsl/mixins/type-args.d.ts
6382
- type Arg$1 = Symbol | string | MaybeTsDsl<TypeTsDsl>;
6383
- interface TypeArgsMethods extends Node {
6384
- /** Returns the type arguments as an array of ts.TypeNode nodes. */
6385
- $generics(): ReadonlyArray<ts.TypeNode> | undefined;
6386
- /** Adds a single type argument (e.g. `string` in `Foo<string>`). */
6387
- generic(arg: Arg$1): this;
6388
- /** Adds type arguments (e.g. `Map<string, number>`). */
6389
- generics(...args: ReadonlyArray<Arg$1>): this;
6390
- }
6400
+ type BaseCtor<T> = abstract new (...args: Array<any>) => TsDsl<T>;
6401
+ type DropFirst<T extends Array<any>> = T extends [any, ...infer Rest] ? Rest : never;
6402
+ type MixinCtor<T extends BaseCtor<any>, K$1> = abstract new (...args: Array<any>) => InstanceType<T> & K$1;
6391
6403
  //#endregion
6392
6404
  //#region src/ts-dsl/mixins/optional.d.ts
6393
6405
  interface OptionalMethods extends Node {
@@ -6398,31 +6410,18 @@ interface OptionalMethods extends Node {
6398
6410
  required(condition?: boolean): this;
6399
6411
  }
6400
6412
  //#endregion
6401
- //#region src/ts-dsl/expr/as.d.ts
6402
- type AsExpr = Symbol | string | MaybeTsDsl<ts.Expression>;
6403
- type AsType = Symbol | string | TypeTsDsl;
6404
- declare const Mixed$52: MixinCtor<MixinCtor<abstract new () => TsDsl<ts.AsExpression>, ExprMethods>, AsMethods>;
6405
- declare class AsTsDsl extends Mixed$52 {
6406
- readonly '~dsl' = "AsTsDsl";
6407
- protected expr: Ref<AsExpr>;
6408
- protected type: Ref<AsType>;
6409
- constructor(expr: AsExpr, type: AsType);
6410
- analyze(ctx: AnalysisContext): void;
6411
- toAst(): ts.AsExpression;
6412
- }
6413
- //#endregion
6414
6413
  //#region src/ts-dsl/mixins/as.d.ts
6415
6414
  interface AsMethods extends Node {
6416
6415
  /** Creates an `as` type assertion expression (e.g. `value as Type`). */
6417
- as(type: AsType): AsTsDsl;
6416
+ as(...args: DropFirst<Parameters<typeof f.as>>): ReturnType<typeof f.as>;
6418
6417
  }
6419
6418
  //#endregion
6420
6419
  //#region src/ts-dsl/expr/binary.d.ts
6421
6420
  type Expr$3 = Symbol | string | MaybeTsDsl<ts.Expression>;
6422
6421
  type Op$1 = Operator | ts.BinaryOperator;
6423
- type Operator = '!=' | '!==' | '&&' | '*' | '+' | '-' | '/' | '<' | '<=' | '=' | '==' | '===' | '>' | '>=' | '??' | '||';
6424
- declare const Mixed$51: MixinCtor<MixinCtor<abstract new () => TsDsl<ts.BinaryExpression>, ExprMethods>, AsMethods>;
6425
- declare class BinaryTsDsl extends Mixed$51 {
6422
+ type Operator = '!=' | '!==' | '&&' | '*' | '+' | '-' | '/' | '<' | '<=' | '=' | '==' | '===' | '>' | '>=' | '??' | '??=' | '||';
6423
+ declare const Mixed$52: MixinCtor<MixinCtor<abstract new () => TsDsl<ts.BinaryExpression>, ExprMethods>, AsMethods>;
6424
+ declare class BinaryTsDsl extends Mixed$52 {
6426
6425
  readonly '~dsl' = "BinaryTsDsl";
6427
6426
  protected _base: Ref<Expr$3>;
6428
6427
  protected _expr?: Ref<Expr$3>;
@@ -6455,13 +6454,15 @@ declare class BinaryTsDsl extends Mixed$51 {
6455
6454
  minus(expr: Expr$3): this;
6456
6455
  /** Strict inequality — `this !== expr` */
6457
6456
  neq(expr: Expr$3): this;
6457
+ /** Nullish assignment — `this ??= expr` */
6458
+ nullishAssign(expr: Expr$3): this;
6458
6459
  /** Logical OR — `this || expr` */
6459
6460
  or(expr: Expr$3): this;
6460
6461
  /** Addition — `this + expr` */
6461
6462
  plus(expr: Expr$3): this;
6462
6463
  /** Multiplication — `this * expr` */
6463
6464
  times(expr: Expr$3): this;
6464
- toAst(): ts.BinaryExpression;
6465
+ toAst(ctx: AstContext): ts.BinaryExpression;
6465
6466
  /** Sets the binary operator and right-hand operand for this expression. */
6466
6467
  private opAndExpr;
6467
6468
  private opToToken;
@@ -6496,6 +6497,8 @@ interface OperatorMethods extends Node {
6496
6497
  minus(expr: Expr$2): BinaryTsDsl;
6497
6498
  /** Strict inequality — `this !== expr` */
6498
6499
  neq(expr: Expr$2): BinaryTsDsl;
6500
+ /** Nullish assignment — `this ??= expr` */
6501
+ nullishAssign(expr: Expr$2): BinaryTsDsl;
6499
6502
  /** Logical OR — `this || expr` */
6500
6503
  or(expr: Expr$2): BinaryTsDsl;
6501
6504
  /** Addition — `this + expr` */
@@ -6507,55 +6510,45 @@ interface OperatorMethods extends Node {
6507
6510
  //#region src/ts-dsl/expr/attr.d.ts
6508
6511
  type AttrLeft = Symbol | string | MaybeTsDsl<ts.Expression>;
6509
6512
  type AttrRight = Symbol | string | ts.MemberName | number;
6510
- declare const Mixed$50: MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.PropertyAccessExpression | ts.ElementAccessExpression>, OptionalMethods>, OperatorMethods>, ExprMethods>, AsMethods>;
6511
- declare class AttrTsDsl extends Mixed$50 {
6513
+ type AttrCtor = (left: AttrLeft, right: AttrRight) => AttrTsDsl;
6514
+ declare const Mixed$51: MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.PropertyAccessExpression | ts.ElementAccessExpression>, OptionalMethods>, OperatorMethods>, ExprMethods>, AsMethods>;
6515
+ declare class AttrTsDsl extends Mixed$51 {
6512
6516
  readonly '~dsl' = "AttrTsDsl";
6513
6517
  protected left: Ref<AttrLeft>;
6514
6518
  protected right: Ref<AttrRight>;
6515
6519
  constructor(left: AttrLeft, right: AttrRight);
6516
6520
  analyze(ctx: AnalysisContext): void;
6517
- toAst(): ts.PropertyAccessExpression | ts.ElementAccessExpression;
6521
+ toAst(ctx: AstContext): ts.PropertyAccessExpression | ts.ElementAccessExpression;
6518
6522
  }
6519
6523
  //#endregion
6520
6524
  //#region src/ts-dsl/expr/await.d.ts
6521
6525
  type AwaitExpr = Symbol | string | MaybeTsDsl<ts.Expression>;
6522
- declare const Mixed$49: MixinCtor<abstract new () => TsDsl<ts.AwaitExpression>, ExprMethods>;
6523
- declare class AwaitTsDsl extends Mixed$49 {
6526
+ type AwaitCtor = (expr: AwaitExpr) => AwaitTsDsl;
6527
+ declare const Mixed$50: MixinCtor<abstract new () => TsDsl<ts.AwaitExpression>, ExprMethods>;
6528
+ declare class AwaitTsDsl extends Mixed$50 {
6524
6529
  readonly '~dsl' = "AwaitTsDsl";
6525
6530
  protected _awaitExpr: Ref<AwaitExpr>;
6526
6531
  constructor(expr: AwaitExpr);
6527
6532
  analyze(ctx: AnalysisContext): void;
6528
- toAst(): ts.AwaitExpression;
6529
- }
6530
- //#endregion
6531
- //#region src/ts-dsl/stmt/return.d.ts
6532
- type ReturnExpr = Symbol | string | MaybeTsDsl<ts.Expression>;
6533
- declare const Mixed$48: abstract new () => TsDsl<ts.ReturnStatement>;
6534
- declare class ReturnTsDsl extends Mixed$48 {
6535
- readonly '~dsl' = "ReturnTsDsl";
6536
- protected _returnExpr?: Ref<ReturnExpr>;
6537
- constructor(expr?: ReturnExpr);
6538
- analyze(ctx: AnalysisContext): void;
6539
- toAst(): ts.ReturnStatement;
6533
+ toAst(ctx: AstContext): ts.AwaitExpression;
6540
6534
  }
6541
6535
  //#endregion
6542
- //#region src/ts-dsl/mixins/expr.d.ts
6543
- interface ExprMethods extends Node {
6544
- /** Accesses a property on the current expression (e.g. `this.foo`). */
6545
- attr(name: AttrRight): AttrTsDsl;
6546
- /** Awaits the current expression (e.g. `await expr`). */
6547
- await(): AwaitTsDsl;
6548
- /** Calls the current expression (e.g. `fn(arg1, arg2)`). */
6549
- call(...args: CallArgs): CallTsDsl;
6550
- /** Produces a `return` statement returning the current expression. */
6551
- return(): ReturnTsDsl;
6536
+ //#region src/ts-dsl/mixins/type-args.d.ts
6537
+ type Arg$1 = Symbol | string | MaybeTsDsl<TypeTsDsl>;
6538
+ interface TypeArgsMethods extends Node {
6539
+ /** Returns the type arguments as an array of ts.TypeNode nodes. */
6540
+ $generics(ctx: AstContext): ReadonlyArray<ts.TypeNode> | undefined;
6541
+ /** Adds a single type argument (e.g. `string` in `Foo<string>`). */
6542
+ generic(arg: Arg$1): this;
6543
+ /** Adds type arguments (e.g. `Map<string, number>`). */
6544
+ generics(...args: ReadonlyArray<Arg$1>): this;
6552
6545
  }
6553
6546
  //#endregion
6554
6547
  //#region src/ts-dsl/mixins/args.d.ts
6555
6548
  type Arg = Symbol | string | MaybeTsDsl<ts.Expression>;
6556
6549
  interface ArgsMethods extends Node {
6557
6550
  /** Renders the arguments into an array of `Expression`s. */
6558
- $args(): ReadonlyArray<ts.Expression>;
6551
+ $args(ctx: AstContext): ReadonlyArray<ts.Expression>;
6559
6552
  /** Adds a single expression argument. */
6560
6553
  arg(arg: Arg | undefined): this;
6561
6554
  /** Adds one or more expression arguments. */
@@ -6566,13 +6559,259 @@ interface ArgsMethods extends Node {
6566
6559
  type CallCallee = string | MaybeTsDsl<ts.Expression>;
6567
6560
  type CallArg = Symbol | string | MaybeTsDsl<ts.Expression>;
6568
6561
  type CallArgs = ReadonlyArray<CallArg | undefined>;
6569
- declare const Mixed$47: MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.CallExpression>, TypeArgsMethods>, ExprMethods>, AsMethods>, ArgsMethods>;
6570
- declare class CallTsDsl extends Mixed$47 {
6562
+ type CallCtor = (callee: CallCallee, ...args: CallArgs) => CallTsDsl;
6563
+ declare const Mixed$49: MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.CallExpression>, TypeArgsMethods>, ExprMethods>, AsMethods>, ArgsMethods>;
6564
+ declare class CallTsDsl extends Mixed$49 {
6571
6565
  readonly '~dsl' = "CallTsDsl";
6572
6566
  protected _callee: CallCallee;
6573
6567
  constructor(callee: CallCallee, ...args: CallArgs);
6574
6568
  analyze(ctx: AnalysisContext): void;
6575
- toAst(): ts.CallExpression;
6569
+ toAst(ctx: AstContext): ts.CallExpression;
6570
+ }
6571
+ //#endregion
6572
+ //#region src/ts-dsl/expr/typeof.d.ts
6573
+ type TypeOfExpr = string | MaybeTsDsl<ts.Expression>;
6574
+ type TypeOfExprCtor = (expr: TypeOfExpr) => TypeOfExprTsDsl;
6575
+ declare const Mixed$48: MixinCtor<abstract new () => TsDsl<ts.TypeOfExpression>, OperatorMethods>;
6576
+ declare class TypeOfExprTsDsl extends Mixed$48 {
6577
+ readonly '~dsl' = "TypeOfExprTsDsl";
6578
+ protected _expr: TypeOfExpr;
6579
+ constructor(expr: TypeOfExpr);
6580
+ analyze(ctx: AnalysisContext): void;
6581
+ toAst(ctx: AstContext): ts.TypeOfExpression;
6582
+ }
6583
+ //#endregion
6584
+ //#region src/ts-dsl/stmt/return.d.ts
6585
+ type ReturnExpr = Symbol | string | MaybeTsDsl<ts.Expression>;
6586
+ type ReturnCtor = (expr?: ReturnExpr) => ReturnTsDsl;
6587
+ declare const Mixed$47: abstract new () => TsDsl<ts.ReturnStatement>;
6588
+ declare class ReturnTsDsl extends Mixed$47 {
6589
+ readonly '~dsl' = "ReturnTsDsl";
6590
+ protected _returnExpr?: Ref<ReturnExpr>;
6591
+ constructor(expr?: ReturnExpr);
6592
+ analyze(ctx: AnalysisContext): void;
6593
+ toAst(ctx: AstContext): ts.ReturnStatement;
6594
+ }
6595
+ //#endregion
6596
+ //#region src/ts-dsl/mixins/type-expr.d.ts
6597
+ interface TypeExprMethods extends Node {
6598
+ /** Creates an indexed-access type (e.g. `Foo<T>[K]`). */
6599
+ idx(this: Parameters<typeof f.type.idx>[0], ...args: DropFirst<Parameters<typeof f.type.idx>>): ReturnType<typeof f.type.idx>;
6600
+ /** Shorthand: builds `keyof T`. */
6601
+ keyof(this: MaybeTsDsl<TypeTsDsl>): ReturnType<typeof f.type.operator>;
6602
+ /** Shorthand: builds `readonly T`. */
6603
+ readonly(this: MaybeTsDsl<TypeTsDsl>): ReturnType<typeof f.type.operator>;
6604
+ /** Create a TypeExpr node representing ReturnType<this>. */
6605
+ returnType(this: Parameters<typeof f.type.query>[0], ...args: DropFirst<Parameters<typeof f.type.query>>): ReturnType<typeof f.type.expr>;
6606
+ /** Create a TypeOfExpr node representing typeof this. */
6607
+ typeofExpr(this: Parameters<typeof f.typeofExpr>[0], ...args: DropFirst<Parameters<typeof f.typeofExpr>>): ReturnType<typeof f.typeofExpr>;
6608
+ /** Create a TypeQuery node representing typeof this. */
6609
+ typeofType(this: Parameters<typeof f.type.query>[0], ...args: DropFirst<Parameters<typeof f.type.query>>): ReturnType<typeof f.type.query>;
6610
+ /** Shorthand: builds `unique T`. */
6611
+ unique(this: MaybeTsDsl<TypeTsDsl>): ReturnType<typeof f.type.operator>;
6612
+ }
6613
+ //#endregion
6614
+ //#region src/ts-dsl/type/attr.d.ts
6615
+ type Base$2 = Symbol | string | MaybeTsDsl<ts.EntityName>;
6616
+ type Right = Symbol | string | ts.Identifier;
6617
+ declare const Mixed$46: MixinCtor<abstract new () => TsDsl<ts.QualifiedName>, TypeExprMethods>;
6618
+ declare class TypeAttrTsDsl extends Mixed$46 {
6619
+ readonly '~dsl' = "TypeAttrTsDsl";
6620
+ protected _base?: Ref<Base$2>;
6621
+ protected _right: Ref<Right>;
6622
+ constructor(base: Base$2 | Ref<Base$2>, right: string | ts.Identifier);
6623
+ constructor(right: Right);
6624
+ analyze(ctx: AnalysisContext): void;
6625
+ base(base?: Base$2 | Ref<Base$2>): this;
6626
+ right(right: Right): this;
6627
+ toAst(ctx: AstContext): ts.QualifiedName;
6628
+ }
6629
+ //#endregion
6630
+ //#region src/ts-dsl/type/expr.d.ts
6631
+ type TypeExprName = Symbol | string;
6632
+ type TypeExprExpr = TypeExprName | TypeAttrTsDsl;
6633
+ type TypeExprFn = (t: TypeExprTsDsl) => void;
6634
+ type TypeExprCtor = (nameOrFn?: TypeExprName | TypeExprFn, fn?: TypeExprFn) => TypeExprTsDsl;
6635
+ declare const Mixed$45: MixinCtor<MixinCtor<abstract new () => TsDsl<ts.TypeReferenceNode>, TypeExprMethods>, TypeArgsMethods>;
6636
+ declare class TypeExprTsDsl extends Mixed$45 {
6637
+ readonly '~dsl' = "TypeExprTsDsl";
6638
+ protected _exprInput?: Ref<TypeExprExpr>;
6639
+ constructor();
6640
+ constructor(fn: TypeExprFn);
6641
+ constructor(name: TypeExprName);
6642
+ constructor(name: TypeExprName, fn?: TypeExprFn);
6643
+ analyze(ctx: AnalysisContext): void;
6644
+ /** Accesses a nested type (e.g. `Foo.Bar`). */
6645
+ attr(right: string | ts.Identifier | TypeAttrTsDsl): this;
6646
+ toAst(ctx: AstContext): ts.TypeReferenceNode;
6647
+ }
6648
+ //#endregion
6649
+ //#region src/ts-dsl/type/idx.d.ts
6650
+ type Base$1 = string | MaybeTsDsl<ts.TypeNode>;
6651
+ type Index = string | number | MaybeTsDsl<ts.TypeNode>;
6652
+ type TypeIdxCtor = (base: Base$1, index: Index) => TypeIdxTsDsl;
6653
+ declare const Mixed$44: MixinCtor<abstract new () => TsDsl<ts.IndexedAccessTypeNode>, TypeExprMethods>;
6654
+ declare class TypeIdxTsDsl extends Mixed$44 {
6655
+ readonly '~dsl' = "TypeIdxTsDsl";
6656
+ protected _base: Base$1;
6657
+ protected _index: Index;
6658
+ constructor(base: Base$1, index: Index);
6659
+ analyze(ctx: AnalysisContext): void;
6660
+ base(base: Base$1): this;
6661
+ index(index: Index): this;
6662
+ toAst(ctx: AstContext): ts.IndexedAccessTypeNode;
6663
+ }
6664
+ //#endregion
6665
+ //#region src/ts-dsl/type/operator.d.ts
6666
+ type Op = ts.SyntaxKind.KeyOfKeyword | ts.SyntaxKind.ReadonlyKeyword | ts.SyntaxKind.UniqueKeyword;
6667
+ type Type$2 = string | MaybeTsDsl<ts.TypeNode>;
6668
+ type TypeOperatorCtor = () => TypeOperatorTsDsl;
6669
+ declare const Mixed$43: abstract new () => TsDsl<ts.TypeOperatorNode>;
6670
+ /**
6671
+ * Builds a TypeScript `TypeOperatorNode`, such as:
6672
+ *
6673
+ * - `keyof T`
6674
+ * - `readonly U`
6675
+ * - `unique V`
6676
+ *
6677
+ * This DSL provides both a generic `.operator()` API and convenient
6678
+ * shorthand methods (`.keyof()`, `.readonly()`, `.unique()`).
6679
+ *
6680
+ * The node will throw during render if required fields are missing.
6681
+ */
6682
+ declare class TypeOperatorTsDsl extends Mixed$43 {
6683
+ readonly '~dsl' = "TypeOperatorTsDsl";
6684
+ protected _op?: Op;
6685
+ protected _type?: Type$2;
6686
+ analyze(ctx: AnalysisContext): void;
6687
+ /** Shorthand: builds `keyof T`. */
6688
+ keyof(type: Type$2): this;
6689
+ /** Sets the operator explicitly. */
6690
+ operator(op: Op): this;
6691
+ /** Shorthand: builds `readonly T`. */
6692
+ readonly(type: Type$2): this;
6693
+ /** Sets the target type of the operator. */
6694
+ type(type: Type$2): this;
6695
+ /** Shorthand: builds `unique T`. */
6696
+ unique(type: Type$2): this;
6697
+ toAst(ctx: AstContext): ts.TypeOperatorNode;
6698
+ /** Throws if required fields are not set. */
6699
+ $validate(): asserts this is this & {
6700
+ _op: Op;
6701
+ _type: Type$2;
6702
+ };
6703
+ private missingRequiredCalls;
6704
+ }
6705
+ //#endregion
6706
+ //#region src/ts-dsl/type/query.d.ts
6707
+ type TypeQueryExpr = string | MaybeTsDsl<TypeTsDsl | ts.Expression>;
6708
+ type TypeQueryCtor = (expr: TypeQueryExpr) => TypeQueryTsDsl;
6709
+ declare const Mixed$42: MixinCtor<abstract new () => TsDsl<ts.TypeQueryNode>, TypeExprMethods>;
6710
+ declare class TypeQueryTsDsl extends Mixed$42 {
6711
+ readonly '~dsl' = "TypeQueryTsDsl";
6712
+ protected _expr: TypeQueryExpr;
6713
+ constructor(expr: TypeQueryExpr);
6714
+ analyze(ctx: AnalysisContext): void;
6715
+ toAst(ctx: AstContext): ts.TypeQueryNode;
6716
+ }
6717
+ //#endregion
6718
+ //#region src/ts-dsl/utils/factories.d.ts
6719
+ type Ctor = (...args: Array<any>) => any;
6720
+ type Factory<T extends Ctor> = {
6721
+ (...args: Parameters<T>): ReturnType<T>;
6722
+ /** Sets the implementation of this factory. */
6723
+ set(fn: T): void;
6724
+ };
6725
+ declare const f: {
6726
+ /** Factory for creating `as` type assertion expressions (e.g. `value as Type`). */
6727
+ as: Factory<AsCtor>;
6728
+ /** Factory for creating property access expressions (e.g. `obj.foo`). */
6729
+ attr: Factory<AttrCtor>;
6730
+ /** Factory for creating await expressions (e.g. `await promise`). */
6731
+ await: Factory<AwaitCtor>;
6732
+ /** Factory for creating function or method call expressions (e.g. `fn(arg)`). */
6733
+ call: Factory<CallCtor>;
6734
+ /** Factory for creating return statements. */
6735
+ return: Factory<ReturnCtor>;
6736
+ /** Factories for creating type nodes. */
6737
+ type: {
6738
+ /** Factory for creating basic type references or type expressions (e.g. Foo or Foo<T>). */
6739
+ expr: Factory<TypeExprCtor>;
6740
+ /** Factory for creating indexed-access types (e.g. `Foo<T>[K]`). */
6741
+ idx: Factory<TypeIdxCtor>;
6742
+ /** Factory for creating type operator nodes (e.g. `readonly T`, `keyof T`, `unique T`). */
6743
+ operator: Factory<TypeOperatorCtor>;
6744
+ /** Factory for creating type query nodes (e.g. `typeof Foo`). */
6745
+ query: Factory<TypeQueryCtor>;
6746
+ };
6747
+ /** Factory for creating `typeof` expressions (e.g. `typeof value`). */
6748
+ typeofExpr: Factory<TypeOfExprCtor>;
6749
+ };
6750
+ //#endregion
6751
+ //#region src/ts-dsl/mixins/expr.d.ts
6752
+ interface ExprMethods extends Node {
6753
+ /** Accesses a property on the current expression (e.g. `this.foo`). */
6754
+ attr(...args: DropFirst<Parameters<typeof f.attr>>): ReturnType<typeof f.attr>;
6755
+ /** Awaits the current expression (e.g. `await expr`). */
6756
+ await(): ReturnType<typeof f.await>;
6757
+ /** Calls the current expression (e.g. `fn(arg1, arg2)`). */
6758
+ call(...args: DropFirst<Parameters<typeof f.call>>): ReturnType<typeof f.call>;
6759
+ /** Produces a `return` statement returning the current expression. */
6760
+ return(): ReturnType<typeof f.return>;
6761
+ }
6762
+ //#endregion
6763
+ //#region src/ts-dsl/expr/as.d.ts
6764
+ type AsExpr = Symbol | string | MaybeTsDsl<ts.Expression>;
6765
+ type AsType = Symbol | string | TypeTsDsl;
6766
+ type AsCtor = (expr: AsExpr, type: AsType) => AsTsDsl;
6767
+ declare const Mixed$41: MixinCtor<MixinCtor<abstract new () => TsDsl<ts.AsExpression>, ExprMethods>, AsMethods>;
6768
+ declare class AsTsDsl extends Mixed$41 {
6769
+ readonly '~dsl' = "AsTsDsl";
6770
+ protected expr: Ref<AsExpr>;
6771
+ protected type: Ref<AsType>;
6772
+ constructor(expr: AsExpr, type: AsType);
6773
+ analyze(ctx: AnalysisContext): void;
6774
+ toAst(ctx: AstContext): ts.AsExpression;
6775
+ }
6776
+ //#endregion
6777
+ //#region src/ts-dsl/mixins/value.d.ts
6778
+ type ValueExpr = string | MaybeTsDsl<ts.Expression>;
6779
+ interface ValueMethods extends Node {
6780
+ $value(ctx: AstContext): ts.Expression | undefined;
6781
+ /** Sets the initializer expression (e.g. `= expr`). */
6782
+ assign(expr: ValueExpr): this;
6783
+ }
6784
+ //#endregion
6785
+ //#region src/ts-dsl/mixins/pattern.d.ts
6786
+ interface PatternMethods extends Node {
6787
+ /** Renders the pattern into a `BindingName`. */
6788
+ $pattern(ctx: AstContext): ts.BindingName | undefined;
6789
+ /** Defines an array binding pattern. */
6790
+ array(...props: ReadonlyArray<string> | [ReadonlyArray<string>]): this;
6791
+ /** Defines an object binding pattern. */
6792
+ object(...props: ReadonlyArray<MaybeArray$1<string> | Record<string, string>>): this;
6793
+ /** Adds a spread element (e.g. `...args`, `...options`) to the pattern. */
6794
+ spread(name: string): this;
6795
+ }
6796
+ //#endregion
6797
+ //#region src/ts-dsl/layout/hint.d.ts
6798
+ type HintMaybeLazy<T> = ((ctx: AstContext) => T) | T;
6799
+ type HintFn = (d: HintTsDsl) => void;
6800
+ type HintLines = HintMaybeLazy<MaybeArray$1<string>>;
6801
+ declare class HintTsDsl extends TsDsl<ts.Node> {
6802
+ readonly '~dsl' = "HintTsDsl";
6803
+ protected _lines: Array<HintLines>;
6804
+ constructor(lines?: HintLines, fn?: HintFn);
6805
+ analyze(ctx: AnalysisContext): void;
6806
+ add(lines: HintLines): this;
6807
+ apply<T extends ts.Node>(ctx: AstContext, node: T): T;
6808
+ toAst(ctx: AstContext): ts.Node;
6809
+ }
6810
+ //#endregion
6811
+ //#region src/ts-dsl/mixins/hint.d.ts
6812
+ interface HintMethods extends Node {
6813
+ $hint<T extends ts.Node>(ctx: AstContext, node: T): T;
6814
+ hint(lines?: HintLines, fn?: HintFn): this;
6576
6815
  }
6577
6816
  //#endregion
6578
6817
  //#region src/ts-dsl/mixins/modifiers.d.ts
@@ -6670,39 +6909,124 @@ interface StaticMethods extends Modifiers {
6670
6909
  static(condition?: boolean): this;
6671
6910
  }
6672
6911
  //#endregion
6673
- //#region src/ts-dsl/mixins/value.d.ts
6674
- type ValueExpr = string | MaybeTsDsl<ts.Expression>;
6675
- interface ValueMethods extends Node {
6676
- $value(): ts.Expression | undefined;
6677
- /** Sets the initializer expression (e.g. `= expr`). */
6678
- assign(expr: ValueExpr): this;
6912
+ //#region src/ts-dsl/layout/doc.d.ts
6913
+ type DocMaybeLazy<T> = ((ctx: AstContext) => T) | T;
6914
+ type DocFn = (d: DocTsDsl) => void;
6915
+ type DocLines = DocMaybeLazy<MaybeArray$1<string>>;
6916
+ declare class DocTsDsl extends TsDsl<ts.Node> {
6917
+ readonly '~dsl' = "DocTsDsl";
6918
+ protected _lines: Array<DocLines>;
6919
+ constructor(lines?: DocLines, fn?: DocFn);
6920
+ analyze(ctx: AnalysisContext): void;
6921
+ add(lines: DocLines): this;
6922
+ apply<T extends ts.Node>(ctx: AstContext, node: T): T;
6923
+ toAst(ctx: AstContext): ts.Node;
6679
6924
  }
6680
6925
  //#endregion
6681
- //#region src/ts-dsl/mixins/pattern.d.ts
6682
- interface PatternMethods extends Node {
6683
- /** Renders the pattern into a `BindingName`. */
6684
- $pattern(): ts.BindingName | undefined;
6685
- /** Defines an array binding pattern. */
6686
- array(...props: ReadonlyArray<string> | [ReadonlyArray<string>]): this;
6687
- /** Defines an object binding pattern. */
6688
- object(...props: ReadonlyArray<MaybeArray$1<string> | Record<string, string>>): this;
6689
- /** Adds a spread element (e.g. `...args`, `...options`) to the pattern. */
6690
- spread(name: string): this;
6926
+ //#region src/ts-dsl/mixins/doc.d.ts
6927
+ interface DocMethods extends Node {
6928
+ $docs<T extends ts.Node>(ctx: AstContext, node: T): T;
6929
+ doc(lines?: DocLines, fn?: DocFn): this;
6930
+ }
6931
+ //#endregion
6932
+ //#region src/ts-dsl/stmt/var.d.ts
6933
+ type VarName = Symbol | string;
6934
+ declare const Mixed$40: MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.VariableStatement>, ValueMethods>, PatternMethods>, HintMethods>, ExportMethods>, DocMethods>, DefaultMethods>;
6935
+ declare class VarTsDsl extends Mixed$40 {
6936
+ readonly '~dsl' = "VarTsDsl";
6937
+ protected kind: ts.NodeFlags;
6938
+ protected name?: Ref<VarName>;
6939
+ protected _type?: TypeTsDsl;
6940
+ constructor(name?: VarName);
6941
+ analyze(ctx: AnalysisContext): void;
6942
+ const(): this;
6943
+ let(): this;
6944
+ /** Sets the variable type. */
6945
+ type(type: string | TypeTsDsl): this;
6946
+ var(): this;
6947
+ toAst(ctx: AstContext): ts.VariableStatement;
6948
+ }
6949
+ //#endregion
6950
+ //#region src/ts-dsl/decl/decorator.d.ts
6951
+ type DecoratorName = Symbol | string | MaybeTsDsl<ts.Expression>;
6952
+ declare const Mixed$39: MixinCtor<abstract new () => TsDsl<ts.Decorator>, ArgsMethods>;
6953
+ declare class DecoratorTsDsl extends Mixed$39 {
6954
+ readonly '~dsl' = "DecoratorTsDsl";
6955
+ protected name: Ref<DecoratorName>;
6956
+ constructor(name: DecoratorName, ...args: ReadonlyArray<string | MaybeTsDsl<ts.Expression>>);
6957
+ analyze(ctx: AnalysisContext): void;
6958
+ toAst(ctx: AstContext): ts.Decorator;
6959
+ }
6960
+ //#endregion
6961
+ //#region src/ts-dsl/decl/member.d.ts
6962
+ type Value$2 = string | number | MaybeTsDsl<ts.Expression>;
6963
+ type ValueFn$1 = Value$2 | ((m: EnumMemberTsDsl) => void);
6964
+ declare const Mixed$38: MixinCtor<abstract new () => TsDsl<ts.EnumMember>, DocMethods>;
6965
+ declare class EnumMemberTsDsl extends Mixed$38 {
6966
+ readonly '~dsl' = "EnumMemberTsDsl";
6967
+ private _name;
6968
+ private _value?;
6969
+ constructor(name: string, value?: ValueFn$1);
6970
+ analyze(ctx: AnalysisContext): void;
6971
+ /** Sets the enum member value. */
6972
+ value(value?: Value$2): this;
6973
+ toAst(ctx: AstContext): ts.EnumMember;
6974
+ }
6975
+ //#endregion
6976
+ //#region src/ts-dsl/decl/enum.d.ts
6977
+ type EnumName = Symbol | string;
6978
+ type Value$1 = string | number | MaybeTsDsl<ts.Expression>;
6979
+ type ValueFn = Value$1 | ((m: EnumMemberTsDsl) => void);
6980
+ declare const Mixed$37: MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.EnumDeclaration>, ExportMethods>, DocMethods>, ConstMethods>;
6981
+ declare class EnumTsDsl extends Mixed$37 {
6982
+ readonly '~dsl' = "EnumTsDsl";
6983
+ private _members;
6984
+ private _name;
6985
+ constructor(name: EnumName, fn?: (e: EnumTsDsl) => void);
6986
+ analyze(ctx: AnalysisContext): void;
6987
+ /** Adds an enum member. */
6988
+ member(name: string, value?: ValueFn): this;
6989
+ /** Adds multiple enum members. */
6990
+ members(...members: ReadonlyArray<EnumMemberTsDsl>): this;
6991
+ toAst(ctx: AstContext): ts.EnumDeclaration;
6691
6992
  }
6692
6993
  //#endregion
6693
6994
  //#region src/ts-dsl/mixins/decorator.d.ts
6694
6995
  interface DecoratorMethods extends Node {
6695
6996
  /** Renders the decorators into an array of `ts.Decorator`s. */
6696
- $decorators(): ReadonlyArray<ts.Decorator>;
6997
+ $decorators(ctx: AstContext): ReadonlyArray<ts.Decorator>;
6697
6998
  /** Adds a decorator (e.g. `@sealed({ in: 'root' })`). */
6698
6999
  decorator(name: Symbol | string | MaybeTsDsl<ts.Expression>, ...args: ReadonlyArray<string | MaybeTsDsl<ts.Expression>>): this;
6699
7000
  }
6700
7001
  //#endregion
7002
+ //#region src/ts-dsl/decl/field.d.ts
7003
+ type FieldName = Symbol | string;
7004
+ type FieldType = TypeExprName | TypeTsDsl;
7005
+ 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>;
7006
+ declare class FieldTsDsl extends Mixed$36 {
7007
+ readonly '~dsl' = "FieldTsDsl";
7008
+ protected name: FieldName;
7009
+ protected _type?: TypeTsDsl;
7010
+ constructor(name: FieldName, fn?: (f: FieldTsDsl) => void);
7011
+ analyze(ctx: AnalysisContext): void;
7012
+ /** Sets the field type. */
7013
+ type(type: FieldType): this;
7014
+ toAst(ctx: AstContext): ts.PropertyDeclaration;
7015
+ }
7016
+ //#endregion
7017
+ //#region src/ts-dsl/mixins/type-returns.d.ts
7018
+ interface TypeReturnsMethods extends Node {
7019
+ /** Returns the return type node. */
7020
+ $returns(ctx: AstContext): ts.TypeNode | undefined;
7021
+ /** Sets the return type. */
7022
+ returns(type: TypeExprName | TypeTsDsl): this;
7023
+ }
7024
+ //#endregion
6701
7025
  //#region src/ts-dsl/decl/param.d.ts
6702
7026
  type ParamName = Symbol | string;
6703
7027
  type ParamCtor = (name: ParamName | ((p: ParamTsDsl) => void), fn?: (p: ParamTsDsl) => void) => ParamTsDsl;
6704
- declare const Mixed$46: MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.ParameterDeclaration>, ValueMethods>, PatternMethods>, OptionalMethods>, DecoratorMethods>;
6705
- declare class ParamTsDsl extends Mixed$46 {
7028
+ declare const Mixed$35: MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.ParameterDeclaration>, ValueMethods>, PatternMethods>, OptionalMethods>, DecoratorMethods>;
7029
+ declare class ParamTsDsl extends Mixed$35 {
6706
7030
  readonly '~dsl' = "ParamTsDsl";
6707
7031
  protected name?: Ref<ParamName>;
6708
7032
  protected _type?: TypeTsDsl;
@@ -6710,41 +7034,24 @@ declare class ParamTsDsl extends Mixed$46 {
6710
7034
  analyze(ctx: AnalysisContext): void;
6711
7035
  /** Sets the parameter type. */
6712
7036
  type(type: string | TypeTsDsl): this;
6713
- toAst(): ts.ParameterDeclaration;
7037
+ toAst(ctx: AstContext): ts.ParameterDeclaration;
6714
7038
  }
6715
7039
  //#endregion
6716
7040
  //#region src/ts-dsl/mixins/param.d.ts
6717
7041
  interface ParamMethods extends Node {
6718
7042
  /** Renders the parameters into an array of `ParameterDeclaration`s. */
6719
- $params(): ReadonlyArray<ts.ParameterDeclaration>;
7043
+ $params(ast: AstContext): ReadonlyArray<ts.ParameterDeclaration>;
6720
7044
  /** Adds a parameter. */
6721
7045
  param(...args: Parameters<ParamCtor>): this;
6722
7046
  /** Adds multiple parameters. */
6723
7047
  params(...params: ReadonlyArray<MaybeTsDsl<ts.ParameterDeclaration>>): this;
6724
7048
  }
6725
7049
  //#endregion
6726
- //#region src/ts-dsl/layout/doc.d.ts
6727
- declare class DocTsDsl extends TsDsl<ts.Node> {
6728
- readonly '~dsl' = "DocTsDsl";
6729
- protected _lines: Array<string>;
6730
- constructor(lines?: MaybeArray$1<string>, fn?: (d: DocTsDsl) => void);
6731
- analyze(ctx: AnalysisContext): void;
6732
- add(...lines: ReadonlyArray<string>): this;
6733
- apply<T extends ts.Node>(node: T): T;
6734
- toAst(): ts.Node;
6735
- }
6736
- //#endregion
6737
- //#region src/ts-dsl/mixins/doc.d.ts
6738
- interface DocMethods extends Node {
6739
- $docs<T extends ts.Node>(node: T): T;
6740
- doc(lines?: MaybeArray$1<string>, fn?: (d: DocTsDsl) => void): this;
6741
- }
6742
- //#endregion
6743
7050
  //#region src/ts-dsl/mixins/do.d.ts
6744
7051
  type DoExpr = MaybeTsDsl<ts.Expression | ts.Statement>;
6745
7052
  interface DoMethods extends Node {
6746
7053
  /** Renders the collected `.do()` calls into an array of `Statement` nodes. */
6747
- $do(): ReadonlyArray<ts.Statement>;
7054
+ $do(ctx: AstContext): ReadonlyArray<ts.Statement>;
6748
7055
  _do: Array<DoExpr>;
6749
7056
  /** Adds one or more expressions/statements to the body. */
6750
7057
  do(...items: ReadonlyArray<DoExpr>): this;
@@ -6752,19 +7059,19 @@ interface DoMethods extends Node {
6752
7059
  //#endregion
6753
7060
  //#region src/ts-dsl/decl/getter.d.ts
6754
7061
  type GetterName = string | ts.PropertyName;
6755
- 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>;
6756
- declare class GetterTsDsl extends Mixed$45 {
7062
+ 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>;
7063
+ declare class GetterTsDsl extends Mixed$34 {
6757
7064
  readonly '~dsl' = "GetterTsDsl";
6758
7065
  protected name: GetterName;
6759
7066
  constructor(name: GetterName, fn?: (g: GetterTsDsl) => void);
6760
7067
  analyze(ctx: AnalysisContext): void;
6761
- toAst(): ts.GetAccessorDeclaration;
7068
+ toAst(ctx: AstContext): ts.GetAccessorDeclaration;
6762
7069
  }
6763
7070
  //#endregion
6764
7071
  //#region src/ts-dsl/stmt/if.d.ts
6765
7072
  type IfCondition = string | MaybeTsDsl<ts.Expression>;
6766
- declare const Mixed$44: MixinCtor<abstract new () => TsDsl<ts.IfStatement>, DoMethods>;
6767
- declare class IfTsDsl extends Mixed$44 {
7073
+ declare const Mixed$33: MixinCtor<abstract new () => TsDsl<ts.IfStatement>, DoMethods>;
7074
+ declare class IfTsDsl extends Mixed$33 {
6768
7075
  readonly '~dsl' = "IfTsDsl";
6769
7076
  protected _condition?: IfCondition;
6770
7077
  protected _else?: Array<DoExpr>;
@@ -6772,25 +7079,72 @@ declare class IfTsDsl extends Mixed$44 {
6772
7079
  analyze(ctx: AnalysisContext): void;
6773
7080
  condition(condition: IfCondition): this;
6774
7081
  otherwise(...items: Array<DoExpr>): this;
6775
- toAst(): ts.IfStatement;
7082
+ toAst(ctx: AstContext): ts.IfStatement;
7083
+ }
7084
+ //#endregion
7085
+ //#region src/ts-dsl/utils/lazy.d.ts
7086
+ type LazyThunk<T extends ts.Node> = (ctx: AstContext) => TsDsl<T>;
7087
+ declare class LazyTsDsl<T extends ts.Node = ts.Node> extends TsDsl<T> {
7088
+ readonly '~dsl' = "LazyTsDsl";
7089
+ private _thunk;
7090
+ constructor(thunk: LazyThunk<T>);
7091
+ analyze(ctx: AnalysisContext): void;
7092
+ toAst(ctx: AstContext): T;
7093
+ }
7094
+ //#endregion
7095
+ //#region src/ts-dsl/expr/new.d.ts
7096
+ type NewExpr = Symbol | string | MaybeTsDsl<ts.Expression>;
7097
+ declare const Mixed$32: MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.NewExpression>, TypeArgsMethods>, ExprMethods>, ArgsMethods>;
7098
+ declare class NewTsDsl extends Mixed$32 {
7099
+ readonly '~dsl' = "NewTsDsl";
7100
+ protected classExpr: Ref<NewExpr>;
7101
+ constructor(classExpr: NewExpr, ...args: ReadonlyArray<NewExpr>);
7102
+ analyze(ctx: AnalysisContext): void;
7103
+ toAst(ctx: AstContext): ts.NewExpression;
7104
+ }
7105
+ //#endregion
7106
+ //#region src/ts-dsl/layout/note.d.ts
7107
+ type NoteMaybeLazy<T> = ((ctx: AstContext) => T) | T;
7108
+ type NoteFn = (d: NoteTsDsl) => void;
7109
+ type NoteLines = NoteMaybeLazy<MaybeArray$1<string>>;
7110
+ declare class NoteTsDsl extends TsDsl<ts.Node> {
7111
+ readonly '~dsl' = "NoteTsDsl";
7112
+ protected _lines: Array<NoteLines>;
7113
+ constructor(lines?: NoteLines, fn?: NoteFn);
7114
+ analyze(ctx: AnalysisContext): void;
7115
+ add(lines: NoteLines): this;
7116
+ apply<T extends ts.Node>(ctx: AstContext, node: T): T;
7117
+ toAst(ctx: AstContext): ts.Node;
6776
7118
  }
6777
7119
  //#endregion
6778
7120
  //#region src/ts-dsl/decl/setter.d.ts
6779
7121
  type SetterName = string | ts.PropertyName;
6780
- 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>;
6781
- declare class SetterTsDsl extends Mixed$43 {
7122
+ 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>;
7123
+ declare class SetterTsDsl extends Mixed$31 {
6782
7124
  readonly '~dsl' = "SetterTsDsl";
6783
7125
  protected name: SetterName;
6784
7126
  constructor(name: SetterName, fn?: (s: SetterTsDsl) => void);
6785
7127
  analyze(ctx: AnalysisContext): void;
6786
- toAst(): ts.SetAccessorDeclaration;
7128
+ toAst(ctx: AstContext): ts.SetAccessorDeclaration;
7129
+ }
7130
+ //#endregion
7131
+ //#region src/ts-dsl/expr/template.d.ts
7132
+ type TemplatePart = Symbol | string | MaybeTsDsl<ts.Expression>;
7133
+ declare const Mixed$30: abstract new () => TsDsl<ts.NoSubstitutionTemplateLiteral | ts.TemplateExpression>;
7134
+ declare class TemplateTsDsl extends Mixed$30 {
7135
+ readonly '~dsl' = "TemplateTsDsl";
7136
+ protected parts: Array<Ref<TemplatePart>>;
7137
+ constructor(value?: TemplatePart);
7138
+ analyze(ctx: AnalysisContext): void;
7139
+ add(value: TemplatePart): this;
7140
+ toAst(ctx: AstContext): ts.NoSubstitutionTemplateLiteral | ts.TemplateExpression;
6787
7141
  }
6788
7142
  //#endregion
6789
7143
  //#region src/ts-dsl/type/param.d.ts
6790
7144
  type TypeParamName = Symbol | string;
6791
7145
  type TypeParamExpr = Symbol | string | boolean | MaybeTsDsl<TypeTsDsl>;
6792
- declare const Mixed$42: abstract new () => TypeTsDsl<ts.TypeParameterDeclaration>;
6793
- declare class TypeParamTsDsl extends Mixed$42 {
7146
+ declare const Mixed$29: abstract new () => TsDsl<ts.TypeParameterDeclaration>;
7147
+ declare class TypeParamTsDsl extends Mixed$29 {
6794
7148
  readonly '~dsl' = "TypeParamTsDsl";
6795
7149
  protected constraint?: Ref<TypeParamExpr>;
6796
7150
  protected defaultValue?: Ref<TypeParamExpr>;
@@ -6799,187 +7153,44 @@ declare class TypeParamTsDsl extends Mixed$42 {
6799
7153
  analyze(ctx: AnalysisContext): void;
6800
7154
  default(value: TypeParamExpr): this;
6801
7155
  extends(constraint: TypeParamExpr): this;
6802
- toAst(): ts.TypeParameterDeclaration;
7156
+ toAst(ctx: AstContext): ts.TypeParameterDeclaration;
6803
7157
  }
6804
7158
  //#endregion
6805
7159
  //#region src/ts-dsl/mixins/type-params.d.ts
6806
7160
  interface TypeParamsMethods extends Node {
6807
7161
  /** Returns the type parameters as an array of ts.TypeParameterDeclaration nodes. */
6808
- $generics(): ReadonlyArray<ts.TypeParameterDeclaration> | undefined;
7162
+ $generics(ast: AstContext): ReadonlyArray<ts.TypeParameterDeclaration> | undefined;
6809
7163
  /** Adds a single type parameter (e.g. `T` in `Array<T>`). */
6810
7164
  generic(...args: ConstructorParameters<typeof TypeParamTsDsl>): this;
6811
7165
  /** Adds type parameters (e.g. `Map<string, T>`). */
6812
7166
  generics(...args: ReadonlyArray<Symbol | string | MaybeTsDsl<TypeParamTsDsl>>): this;
6813
7167
  }
6814
7168
  //#endregion
6815
- //#region src/ts-dsl/expr/typeof.d.ts
6816
- declare const Mixed$41: MixinCtor<abstract new () => TsDsl<ts.TypeOfExpression>, OperatorMethods>;
6817
- declare class TypeOfExprTsDsl extends Mixed$41 {
6818
- readonly '~dsl' = "TypeOfExprTsDsl";
6819
- protected _expr: string | MaybeTsDsl<ts.Expression>;
6820
- constructor(expr: string | MaybeTsDsl<ts.Expression>);
6821
- analyze(ctx: AnalysisContext): void;
6822
- toAst(): ts.TypeOfExpression;
6823
- }
6824
- //#endregion
6825
- //#region src/ts-dsl/type/idx.d.ts
6826
- type Base$2 = string | MaybeTsDsl<ts.TypeNode>;
6827
- type Index = string | number | MaybeTsDsl<ts.TypeNode>;
6828
- declare const Mixed$40: MixinCtor<abstract new () => TypeTsDsl<ts.IndexedAccessTypeNode>, TypeExprMethods>;
6829
- declare class TypeIdxTsDsl extends Mixed$40 {
6830
- readonly '~dsl' = "TypeIdxTsDsl";
6831
- protected _base: Base$2;
6832
- protected _index: Index;
6833
- constructor(base: Base$2, index: Index);
6834
- analyze(ctx: AnalysisContext): void;
6835
- base(base: Base$2): this;
6836
- index(index: Index): this;
6837
- toAst(): ts.IndexedAccessTypeNode;
6838
- }
6839
- //#endregion
6840
- //#region src/ts-dsl/type/operator.d.ts
6841
- type Op = ts.SyntaxKind.KeyOfKeyword | ts.SyntaxKind.ReadonlyKeyword | ts.SyntaxKind.UniqueKeyword;
6842
- type Type$2 = string | MaybeTsDsl<ts.TypeNode>;
6843
- declare const Mixed$39: abstract new () => TypeTsDsl<ts.TypeOperatorNode>;
6844
- /**
6845
- * Builds a TypeScript `TypeOperatorNode`, such as:
6846
- *
6847
- * - `keyof T`
6848
- * - `readonly U`
6849
- * - `unique V`
6850
- *
6851
- * This DSL provides both a generic `.operator()` API and convenient
6852
- * shorthand methods (`.keyof()`, `.readonly()`, `.unique()`).
6853
- *
6854
- * The node will throw during render if required fields are missing.
6855
- */
6856
- declare class TypeOperatorTsDsl extends Mixed$39 {
6857
- readonly '~dsl' = "TypeOperatorTsDsl";
6858
- protected _op?: Op;
6859
- protected _type?: Type$2;
6860
- analyze(ctx: AnalysisContext): void;
6861
- /** Shorthand: builds `keyof T`. */
6862
- keyof(type: Type$2): this;
6863
- /** Sets the operator explicitly. */
6864
- operator(op: Op): this;
6865
- /** Shorthand: builds `readonly T`. */
6866
- readonly(type: Type$2): this;
6867
- /** Sets the target type of the operator. */
6868
- type(type: Type$2): this;
6869
- /** Shorthand: builds `unique T`. */
6870
- unique(type: Type$2): this;
6871
- toAst(): ts.TypeOperatorNode;
6872
- /** Throws if required fields are not set. */
6873
- $validate(): asserts this is this & {
6874
- _op: Op;
6875
- _type: Type$2;
6876
- };
6877
- private missingRequiredCalls;
6878
- }
6879
- //#endregion
6880
- //#region src/ts-dsl/type/query.d.ts
6881
- declare const Mixed$38: MixinCtor<abstract new () => TypeTsDsl<ts.TypeQueryNode>, TypeExprMethods>;
6882
- declare class TypeQueryTsDsl extends Mixed$38 {
6883
- readonly '~dsl' = "TypeQueryTsDsl";
6884
- protected _expr: string | MaybeTsDsl<TypeTsDsl | ts.Expression>;
6885
- constructor(expr: string | MaybeTsDsl<TypeTsDsl | ts.Expression>);
6886
- analyze(ctx: AnalysisContext): void;
6887
- toAst(): ts.TypeQueryNode;
6888
- }
6889
- //#endregion
6890
- //#region src/ts-dsl/mixins/type-expr.d.ts
6891
- interface TypeExprMethods extends Node {
6892
- /** Creates an indexed-access type (e.g. `Foo<T>[K]`). */
6893
- idx(this: MaybeTsDsl<TypeTsDsl>, index: string | number | MaybeTsDsl<ts.TypeNode>): TypeIdxTsDsl;
6894
- /** Shorthand: builds `keyof T`. */
6895
- keyof(this: MaybeTsDsl<TypeTsDsl>): TypeOperatorTsDsl;
6896
- /** Shorthand: builds `readonly T`. */
6897
- readonly(this: MaybeTsDsl<TypeTsDsl>): TypeOperatorTsDsl;
6898
- /** Create a TypeExpr node representing ReturnType<this>. */
6899
- returnType(this: MaybeTsDsl<ts.Expression>): TypeExprTsDsl;
6900
- /** Create a TypeOfExpr node representing typeof this. */
6901
- typeofExpr(this: MaybeTsDsl<ts.Expression>): TypeOfExprTsDsl;
6902
- /** Create a TypeQuery node representing typeof this. */
6903
- typeofType(this: MaybeTsDsl<TypeTsDsl | ts.Expression>): TypeQueryTsDsl;
6904
- /** Shorthand: builds `unique T`. */
6905
- unique(this: MaybeTsDsl<TypeTsDsl>): TypeOperatorTsDsl;
6906
- }
6907
- //#endregion
6908
- //#region src/ts-dsl/type/attr.d.ts
6909
- type Base$1 = Symbol | string | MaybeTsDsl<ts.EntityName>;
6910
- type Right = Symbol | string | ts.Identifier;
6911
- declare const Mixed$37: MixinCtor<abstract new () => TypeTsDsl<ts.QualifiedName>, TypeExprMethods>;
6912
- declare class TypeAttrTsDsl extends Mixed$37 {
6913
- readonly '~dsl' = "TypeAttrTsDsl";
6914
- protected _base?: Ref<Base$1>;
6915
- protected _right: Ref<Right>;
6916
- constructor(base: Base$1 | Ref<Base$1>, right: string | ts.Identifier);
6917
- constructor(right: Right);
6918
- analyze(ctx: AnalysisContext): void;
6919
- base(base?: Base$1 | Ref<Base$1>): this;
6920
- right(right: Right): this;
6921
- toAst(): ts.QualifiedName;
6922
- }
6923
- //#endregion
6924
- //#region src/ts-dsl/type/expr.d.ts
6925
- type TypeExprName = Symbol | string;
6926
- type TypeExprExpr = TypeExprName | TypeAttrTsDsl;
6927
- declare const Mixed$36: MixinCtor<MixinCtor<abstract new () => TypeTsDsl<ts.TypeReferenceNode>, TypeExprMethods>, TypeArgsMethods>;
6928
- declare class TypeExprTsDsl extends Mixed$36 {
6929
- readonly '~dsl' = "TypeExprTsDsl";
6930
- protected _exprInput?: Ref<TypeExprExpr>;
6931
- constructor();
6932
- constructor(fn: (t: TypeExprTsDsl) => void);
6933
- constructor(name: TypeExprName);
6934
- constructor(name: TypeExprName, fn?: (t: TypeExprTsDsl) => void);
6935
- analyze(ctx: AnalysisContext): void;
6936
- /** Accesses a nested type (e.g. `Foo.Bar`). */
6937
- attr(right: string | ts.Identifier | TypeAttrTsDsl): this;
6938
- toAst(): ts.TypeReferenceNode;
6939
- }
6940
- //#endregion
6941
- //#region src/ts-dsl/decl/field.d.ts
6942
- type FieldType = TypeExprName | TypeTsDsl;
6943
- 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>;
6944
- declare class FieldTsDsl extends Mixed$35 {
6945
- readonly '~dsl' = "FieldTsDsl";
6946
- protected name: string;
6947
- protected _type?: TypeTsDsl;
6948
- constructor(name: string, fn?: (f: FieldTsDsl) => void);
6949
- analyze(ctx: AnalysisContext): void;
6950
- /** Sets the field type. */
6951
- type(type: FieldType): this;
6952
- toAst(): ts.PropertyDeclaration;
6953
- }
6954
- //#endregion
6955
7169
  //#region src/ts-dsl/decl/init.d.ts
6956
- declare const Mixed$34: MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.ConstructorDeclaration>, PublicMethods>, ProtectedMethods>, PrivateMethods>, ParamMethods>, DocMethods>, DoMethods>, DecoratorMethods>;
6957
- declare class InitTsDsl extends Mixed$34 {
7170
+ declare const Mixed$28: MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.ConstructorDeclaration>, PublicMethods>, ProtectedMethods>, PrivateMethods>, ParamMethods>, DocMethods>, DoMethods>, DecoratorMethods>;
7171
+ declare class InitTsDsl extends Mixed$28 {
6958
7172
  readonly '~dsl' = "InitTsDsl";
6959
7173
  constructor(fn?: (i: InitTsDsl) => void);
6960
7174
  analyze(ctx: AnalysisContext): void;
6961
- toAst(): ts.ConstructorDeclaration;
7175
+ toAst(ctx: AstContext): ts.ConstructorDeclaration;
6962
7176
  }
6963
7177
  //#endregion
6964
7178
  //#region src/ts-dsl/decl/method.d.ts
6965
- 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>;
6966
- declare class MethodTsDsl extends Mixed$33 {
7179
+ 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>;
7180
+ declare class MethodTsDsl extends Mixed$27 {
6967
7181
  readonly '~dsl' = "MethodTsDsl";
6968
7182
  protected name: string;
6969
- protected _returns?: TypeTsDsl;
6970
7183
  constructor(name: string, fn?: (m: MethodTsDsl) => void);
6971
7184
  analyze(ctx: AnalysisContext): void;
6972
- /** Sets the return type. */
6973
- returns(type: string | TypeTsDsl): this;
6974
- toAst(): ts.MethodDeclaration;
7185
+ toAst(ctx: AstContext): ts.MethodDeclaration;
6975
7186
  }
6976
7187
  //#endregion
6977
7188
  //#region src/ts-dsl/decl/class.d.ts
6978
7189
  type Base = Symbol | string;
6979
7190
  type Name$1 = Symbol | string;
6980
7191
  type Body = Array<MaybeTsDsl<ts.ClassElement | ts.Node>>;
6981
- declare const Mixed$32: MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.ClassDeclaration>, TypeParamsMethods>, ExportMethods>, DocMethods>, DefaultMethods>, DecoratorMethods>, AbstractMethods>;
6982
- declare class ClassTsDsl extends Mixed$32 {
7192
+ declare const Mixed$26: MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.ClassDeclaration>, TypeParamsMethods>, ExportMethods>, DocMethods>, DefaultMethods>, DecoratorMethods>, AbstractMethods>;
7193
+ declare class ClassTsDsl extends Mixed$26 {
6983
7194
  readonly '~dsl' = "ClassTsDsl";
6984
7195
  protected baseClass?: Ref<Base>;
6985
7196
  protected body: Body;
@@ -6991,71 +7202,26 @@ declare class ClassTsDsl extends Mixed$32 {
6991
7202
  /** Records a base class to extend from. */
6992
7203
  extends(base?: Base): this;
6993
7204
  /** Adds a class field. */
6994
- field(name: string, fn?: (f: FieldTsDsl) => void): this;
7205
+ field(name: FieldName, fn?: (f: FieldTsDsl) => void): this;
6995
7206
  /** Adds a class constructor. */
6996
7207
  init(fn?: (i: InitTsDsl) => void): this;
6997
7208
  /** Adds a class method. */
6998
7209
  method(name: string, fn?: (m: MethodTsDsl) => void): this;
6999
7210
  /** Inserts an empty line between members for formatting. */
7000
7211
  newline(): this;
7001
- toAst(): ts.ClassDeclaration;
7212
+ toAst(ctx: AstContext): ts.ClassDeclaration;
7002
7213
  /** Builds heritage clauses (extends). */
7003
7214
  private _heritage;
7004
7215
  }
7005
7216
  //#endregion
7006
- //#region src/ts-dsl/decl/decorator.d.ts
7007
- type DecoratorName = Symbol | string | MaybeTsDsl<ts.Expression>;
7008
- declare const Mixed$31: MixinCtor<abstract new () => TsDsl<ts.Decorator>, ArgsMethods>;
7009
- declare class DecoratorTsDsl extends Mixed$31 {
7010
- readonly '~dsl' = "DecoratorTsDsl";
7011
- protected name: Ref<DecoratorName>;
7012
- constructor(name: DecoratorName, ...args: ReadonlyArray<string | MaybeTsDsl<ts.Expression>>);
7013
- analyze(ctx: AnalysisContext): void;
7014
- toAst(): ts.Decorator;
7015
- }
7016
- //#endregion
7017
- //#region src/ts-dsl/decl/member.d.ts
7018
- type Value$2 = string | number | MaybeTsDsl<ts.Expression>;
7019
- type ValueFn$1 = Value$2 | ((m: EnumMemberTsDsl) => void);
7020
- declare const Mixed$30: MixinCtor<abstract new () => TsDsl<ts.EnumMember>, DocMethods>;
7021
- declare class EnumMemberTsDsl extends Mixed$30 {
7022
- readonly '~dsl' = "EnumMemberTsDsl";
7023
- private _name;
7024
- private _value?;
7025
- constructor(name: string, value?: ValueFn$1);
7026
- analyze(ctx: AnalysisContext): void;
7027
- /** Sets the enum member value. */
7028
- value(value?: Value$2): this;
7029
- toAst(): ts.EnumMember;
7030
- }
7031
- //#endregion
7032
- //#region src/ts-dsl/decl/enum.d.ts
7033
- type EnumName = Symbol | string;
7034
- type Value$1 = string | number | MaybeTsDsl<ts.Expression>;
7035
- type ValueFn = Value$1 | ((m: EnumMemberTsDsl) => void);
7036
- declare const Mixed$29: MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.EnumDeclaration>, ExportMethods>, DocMethods>, ConstMethods>;
7037
- declare class EnumTsDsl extends Mixed$29 {
7038
- readonly '~dsl' = "EnumTsDsl";
7039
- private _members;
7040
- private _name;
7041
- constructor(name: EnumName, fn?: (e: EnumTsDsl) => void);
7042
- analyze(ctx: AnalysisContext): void;
7043
- /** Adds an enum member. */
7044
- member(name: string, value?: ValueFn): this;
7045
- /** Adds multiple enum members. */
7046
- members(...members: ReadonlyArray<EnumMemberTsDsl>): this;
7047
- toAst(): ts.EnumDeclaration;
7048
- }
7049
- //#endregion
7050
7217
  //#region src/ts-dsl/decl/func.d.ts
7051
7218
  type FuncMode = 'arrow' | 'decl' | 'expr';
7052
7219
  type FuncName = Symbol | string;
7053
- 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>;
7054
- declare class ImplFuncTsDsl<M extends FuncMode = 'arrow'> extends Mixed$28 {
7220
+ 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>;
7221
+ declare class ImplFuncTsDsl<M extends FuncMode = 'arrow'> extends Mixed$25 {
7055
7222
  readonly '~dsl' = "FuncTsDsl";
7056
7223
  protected mode?: FuncMode;
7057
7224
  protected name?: Ref<FuncName>;
7058
- protected _returns?: TypeTsDsl;
7059
7225
  constructor();
7060
7226
  constructor(fn: (f: ImplFuncTsDsl<'arrow'>) => void);
7061
7227
  constructor(name: FuncName);
@@ -7067,9 +7233,7 @@ declare class ImplFuncTsDsl<M extends FuncMode = 'arrow'> extends Mixed$28 {
7067
7233
  decl(): FuncTsDsl<'decl'>;
7068
7234
  /** Switches the function to a function expression form. */
7069
7235
  expr(): FuncTsDsl<'expr'>;
7070
- /** Sets the return type. */
7071
- returns(type: string | TypeTsDsl): this;
7072
- toAst(): M extends 'decl' ? ts.FunctionDeclaration : M extends 'expr' ? ts.FunctionExpression : ts.ArrowFunction;
7236
+ toAst(ctx: AstContext): M extends 'decl' ? ts.FunctionDeclaration : M extends 'expr' ? ts.FunctionExpression : ts.ArrowFunction;
7073
7237
  }
7074
7238
  declare const FuncTsDsl: {
7075
7239
  new (): FuncTsDsl<"arrow">;
@@ -7080,11 +7244,11 @@ declare const FuncTsDsl: {
7080
7244
  type FuncTsDsl<M extends FuncMode = 'arrow'> = ImplFuncTsDsl<M>;
7081
7245
  //#endregion
7082
7246
  //#region src/ts-dsl/decl/pattern.d.ts
7083
- declare const Mixed$27: abstract new () => TsDsl<ts.BindingName>;
7247
+ declare const Mixed$24: abstract new () => TsDsl<ts.BindingName>;
7084
7248
  /**
7085
7249
  * Builds binding patterns (e.g. `{ foo, bar }`, `[a, b, ...rest]`).
7086
7250
  */
7087
- declare class PatternTsDsl extends Mixed$27 {
7251
+ declare class PatternTsDsl extends Mixed$24 {
7088
7252
  readonly '~dsl' = "PatternTsDsl";
7089
7253
  protected pattern?: {
7090
7254
  kind: 'array';
@@ -7101,7 +7265,7 @@ declare class PatternTsDsl extends Mixed$27 {
7101
7265
  object(...props: ReadonlyArray<MaybeArray$1<string> | Record<string, string>>): this;
7102
7266
  /** Adds a spread element (e.g. `...rest`, `...options`, `...args`). */
7103
7267
  spread(name: string): this;
7104
- toAst(): ts.ObjectBindingPattern | ts.ArrayBindingPattern;
7268
+ toAst(ctx: AstContext): ts.ObjectBindingPattern | ts.ArrayBindingPattern;
7105
7269
  private createSpread;
7106
7270
  }
7107
7271
  //#endregion
@@ -7118,8 +7282,8 @@ interface LayoutMethods extends Node {
7118
7282
  }
7119
7283
  //#endregion
7120
7284
  //#region src/ts-dsl/expr/array.d.ts
7121
- declare const Mixed$26: MixinCtor<MixinCtor<abstract new () => TsDsl<ts.ArrayLiteralExpression>, LayoutMethods>, AsMethods>;
7122
- declare class ArrayTsDsl extends Mixed$26 {
7285
+ declare const Mixed$23: MixinCtor<MixinCtor<abstract new () => TsDsl<ts.ArrayLiteralExpression>, LayoutMethods>, AsMethods>;
7286
+ declare class ArrayTsDsl extends Mixed$23 {
7123
7287
  readonly '~dsl' = "ArrayTsDsl";
7124
7288
  protected _elements: Array<{
7125
7289
  expr: MaybeTsDsl<ts.Expression>;
@@ -7136,23 +7300,23 @@ declare class ArrayTsDsl extends Mixed$26 {
7136
7300
  elements(...exprs: ReadonlyArray<string | number | boolean | MaybeTsDsl<ts.Expression>>): this;
7137
7301
  /** Adds a spread element (`...expr`). */
7138
7302
  spread(expr: MaybeTsDsl<ts.Expression>): this;
7139
- toAst(): ts.ArrayLiteralExpression;
7303
+ toAst(ctx: AstContext): ts.ArrayLiteralExpression;
7140
7304
  }
7141
7305
  //#endregion
7142
7306
  //#region src/ts-dsl/expr/expr.d.ts
7143
7307
  type Id = Symbol | string | MaybeTsDsl<ts.Expression>;
7144
- declare const Mixed$25: MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.Expression>, TypeExprMethods>, OperatorMethods>, ExprMethods>, AsMethods>;
7145
- declare class ExprTsDsl extends Mixed$25 {
7308
+ declare const Mixed$22: MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.Expression>, TypeExprMethods>, OperatorMethods>, ExprMethods>, AsMethods>;
7309
+ declare class ExprTsDsl extends Mixed$22 {
7146
7310
  readonly '~dsl' = "ExprTsDsl";
7147
7311
  protected _exprInput: Ref<Id>;
7148
7312
  constructor(id: Id);
7149
7313
  analyze(ctx: AnalysisContext): void;
7150
- toAst(): any;
7314
+ toAst(ctx: AstContext): ts.Expression;
7151
7315
  }
7152
7316
  //#endregion
7153
7317
  //#region src/ts-dsl/expr/id.d.ts
7154
- declare const Mixed$24: abstract new () => TsDsl<ts.Identifier>;
7155
- declare class IdTsDsl extends Mixed$24 {
7318
+ declare const Mixed$21: abstract new () => TsDsl<ts.Identifier>;
7319
+ declare class IdTsDsl extends Mixed$21 {
7156
7320
  readonly '~dsl' = "IdTsDsl";
7157
7321
  protected name: string;
7158
7322
  constructor(name: string);
@@ -7161,41 +7325,13 @@ declare class IdTsDsl extends Mixed$24 {
7161
7325
  }
7162
7326
  //#endregion
7163
7327
  //#region src/ts-dsl/expr/literal.d.ts
7164
- declare const Mixed$23: MixinCtor<abstract new () => TsDsl<ts.LiteralExpression | ts.NullLiteral | ts.BooleanLiteral | ts.PrefixUnaryExpression>, AsMethods>;
7165
- declare class LiteralTsDsl extends Mixed$23 {
7328
+ declare const Mixed$20: MixinCtor<abstract new () => TsDsl<ts.LiteralExpression | ts.NullLiteral | ts.BooleanLiteral | ts.PrefixUnaryExpression>, AsMethods>;
7329
+ declare class LiteralTsDsl extends Mixed$20 {
7166
7330
  readonly '~dsl' = "LiteralTsDsl";
7167
7331
  protected value: string | number | boolean | null;
7168
7332
  constructor(value: string | number | boolean | null);
7169
7333
  analyze(ctx: AnalysisContext): void;
7170
- toAst(): any;
7171
- }
7172
- //#endregion
7173
- //#region src/ts-dsl/expr/new.d.ts
7174
- type NewExpr = Symbol | string | MaybeTsDsl<ts.Expression>;
7175
- declare const Mixed$22: MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.NewExpression>, TypeArgsMethods>, ExprMethods>, ArgsMethods>;
7176
- declare class NewTsDsl extends Mixed$22 {
7177
- readonly '~dsl' = "NewTsDsl";
7178
- protected classExpr: Ref<NewExpr>;
7179
- constructor(classExpr: NewExpr, ...args: ReadonlyArray<NewExpr>);
7180
- analyze(ctx: AnalysisContext): void;
7181
- toAst(): ts.NewExpression;
7182
- }
7183
- //#endregion
7184
- //#region src/ts-dsl/layout/hint.d.ts
7185
- declare class HintTsDsl extends TsDsl<ts.Node> {
7186
- readonly '~dsl' = "HintTsDsl";
7187
- protected _lines: Array<string>;
7188
- constructor(lines?: MaybeArray$1<string>, fn?: (d: HintTsDsl) => void);
7189
- analyze(ctx: AnalysisContext): void;
7190
- add(...lines: ReadonlyArray<string>): this;
7191
- apply<T extends ts.Node>(node: T): T;
7192
- toAst(): ts.Node;
7193
- }
7194
- //#endregion
7195
- //#region src/ts-dsl/mixins/hint.d.ts
7196
- interface HintMethods extends Node {
7197
- $hint<T extends ts.Node>(node: T): T;
7198
- hint(lines?: MaybeArray$1<string>, fn?: (h: HintTsDsl) => void): this;
7334
+ toAst(ctx: AstContext): ts.StringLiteral | ts.NumericLiteral | ts.NullLiteral | ts.TrueLiteral | ts.FalseLiteral | ts.PrefixUnaryExpression;
7199
7335
  }
7200
7336
  //#endregion
7201
7337
  //#region src/ts-dsl/expr/prop.d.ts
@@ -7218,8 +7354,8 @@ type Meta = {
7218
7354
  kind: 'spread';
7219
7355
  name?: undefined;
7220
7356
  };
7221
- declare const Mixed$21: MixinCtor<abstract new () => TsDsl<ts.ObjectLiteralElementLike>, DocMethods>;
7222
- declare class ObjectPropTsDsl extends Mixed$21 {
7357
+ declare const Mixed$19: MixinCtor<abstract new () => TsDsl<ts.ObjectLiteralElementLike>, DocMethods>;
7358
+ declare class ObjectPropTsDsl extends Mixed$19 {
7223
7359
  readonly '~dsl' = "ObjectPropTsDsl";
7224
7360
  protected _value?: Ref<Expr$1 | Stmt$1>;
7225
7361
  protected meta: Meta;
@@ -7228,7 +7364,7 @@ declare class ObjectPropTsDsl extends Mixed$21 {
7228
7364
  /** Returns true when all required builder calls are present. */
7229
7365
  get isValid(): boolean;
7230
7366
  value(value: Expr$1 | Stmt$1 | ((p: ObjectPropTsDsl) => void)): this;
7231
- toAst(): any;
7367
+ toAst(ctx: AstContext): ts.GetAccessorDeclaration | ts.SetAccessorDeclaration | ts.PropertyAssignment | ts.ShorthandPropertyAssignment | ts.SpreadAssignment;
7232
7368
  $validate(): asserts this is this & {
7233
7369
  _value: Expr$1 | Stmt$1;
7234
7370
  kind: Kind;
@@ -7241,8 +7377,8 @@ type Expr = Symbol | string | MaybeTsDsl<ts.Expression>;
7241
7377
  type Stmt = Symbol | string | MaybeTsDsl<ts.Statement>;
7242
7378
  type ExprFn = Expr | ((p: ObjectPropTsDsl) => void);
7243
7379
  type StmtFn = Stmt | ((p: ObjectPropTsDsl) => void);
7244
- declare const Mixed$20: MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.ObjectLiteralExpression>, LayoutMethods>, HintMethods>, ExprMethods>, AsMethods>;
7245
- declare class ObjectTsDsl extends Mixed$20 {
7380
+ declare const Mixed$18: MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.ObjectLiteralExpression>, LayoutMethods>, HintMethods>, ExprMethods>, AsMethods>;
7381
+ declare class ObjectTsDsl extends Mixed$18 {
7246
7382
  readonly '~dsl' = "ObjectTsDsl";
7247
7383
  protected _props: Array<ObjectPropTsDsl>;
7248
7384
  constructor(...props: Array<ObjectPropTsDsl>);
@@ -7263,12 +7399,12 @@ declare class ObjectTsDsl extends Mixed$20 {
7263
7399
  setter(name: string, stmt: StmtFn): this;
7264
7400
  /** Adds a spread property (e.g. `{ ...options }`). */
7265
7401
  spread(expr: ExprFn): this;
7266
- toAst(): ts.ObjectLiteralExpression;
7402
+ toAst(ctx: AstContext): ts.ObjectLiteralExpression;
7267
7403
  }
7268
7404
  //#endregion
7269
7405
  //#region src/ts-dsl/expr/prefix.d.ts
7270
- declare const Mixed$19: abstract new () => TsDsl<ts.PrefixUnaryExpression>;
7271
- declare class PrefixTsDsl extends Mixed$19 {
7406
+ declare const Mixed$17: abstract new () => TsDsl<ts.PrefixUnaryExpression>;
7407
+ declare class PrefixTsDsl extends Mixed$17 {
7272
7408
  readonly '~dsl' = "PrefixTsDsl";
7273
7409
  protected _expr?: string | MaybeTsDsl<ts.Expression>;
7274
7410
  protected _op?: ts.PrefixUnaryOperator;
@@ -7282,14 +7418,14 @@ declare class PrefixTsDsl extends Mixed$19 {
7282
7418
  not(): this;
7283
7419
  /** Sets the operator (e.g. `ts.SyntaxKind.ExclamationToken` for `!`). */
7284
7420
  op(op: ts.PrefixUnaryOperator): this;
7285
- toAst(): ts.PrefixUnaryExpression;
7421
+ toAst(ctx: AstContext): ts.PrefixUnaryExpression;
7286
7422
  }
7287
7423
  //#endregion
7288
7424
  //#region src/ts-dsl/expr/regexp.d.ts
7289
7425
  type RegexFlag = 'g' | 'i' | 'm' | 's' | 'u' | 'y';
7290
7426
  type RegexFlags<Avail extends string = RegexFlag> = '' | { [K in Avail]: `${K}${RegexFlags<Exclude<Avail, K>>}` }[Avail];
7291
- declare const Mixed$18: abstract new () => TsDsl<ts.RegularExpressionLiteral>;
7292
- declare class RegExpTsDsl extends Mixed$18 {
7427
+ declare const Mixed$16: abstract new () => TsDsl<ts.RegularExpressionLiteral>;
7428
+ declare class RegExpTsDsl extends Mixed$16 {
7293
7429
  readonly '~dsl' = "RegExpTsDsl";
7294
7430
  protected pattern: string;
7295
7431
  protected flags?: RegexFlags;
@@ -7298,21 +7434,9 @@ declare class RegExpTsDsl extends Mixed$18 {
7298
7434
  toAst(): ts.RegularExpressionLiteral;
7299
7435
  }
7300
7436
  //#endregion
7301
- //#region src/ts-dsl/expr/template.d.ts
7302
- type TemplatePart = Symbol | string | MaybeTsDsl<ts.Expression>;
7303
- declare const Mixed$17: abstract new () => TsDsl<ts.NoSubstitutionTemplateLiteral | ts.TemplateExpression>;
7304
- declare class TemplateTsDsl extends Mixed$17 {
7305
- readonly '~dsl' = "TemplateTsDsl";
7306
- protected parts: Array<Ref<TemplatePart>>;
7307
- constructor(value?: TemplatePart);
7308
- analyze(ctx: AnalysisContext): void;
7309
- add(value: TemplatePart): this;
7310
- toAst(): ts.NoSubstitutionTemplateLiteral | ts.TemplateExpression;
7311
- }
7312
- //#endregion
7313
7437
  //#region src/ts-dsl/expr/ternary.d.ts
7314
- declare const Mixed$16: abstract new () => TsDsl<ts.ConditionalExpression>;
7315
- declare class TernaryTsDsl extends Mixed$16 {
7438
+ declare const Mixed$15: abstract new () => TsDsl<ts.ConditionalExpression>;
7439
+ declare class TernaryTsDsl extends Mixed$15 {
7316
7440
  readonly '~dsl' = "TernaryTsDsl";
7317
7441
  protected _condition?: string | MaybeTsDsl<ts.Expression>;
7318
7442
  protected _then?: string | MaybeTsDsl<ts.Expression>;
@@ -7322,49 +7446,38 @@ declare class TernaryTsDsl extends Mixed$16 {
7322
7446
  condition(condition: string | MaybeTsDsl<ts.Expression>): this;
7323
7447
  do(expr: string | MaybeTsDsl<ts.Expression>): this;
7324
7448
  otherwise(expr: string | MaybeTsDsl<ts.Expression>): this;
7325
- toAst(): ts.ConditionalExpression;
7449
+ toAst(ctx: AstContext): ts.ConditionalExpression;
7326
7450
  }
7327
7451
  //#endregion
7328
7452
  //#region src/ts-dsl/layout/newline.d.ts
7329
7453
  declare class NewlineTsDsl extends TsDsl<ts.Identifier> {
7330
7454
  readonly '~dsl' = "NewlineTsDsl";
7331
7455
  analyze(ctx: AnalysisContext): void;
7332
- toAst(): ts.Identifier;
7333
- }
7334
- //#endregion
7335
- //#region src/ts-dsl/layout/note.d.ts
7336
- declare class NoteTsDsl extends TsDsl<ts.Node> {
7337
- readonly '~dsl' = "NoteTsDsl";
7338
- protected _lines: Array<string>;
7339
- constructor(lines?: MaybeArray$1<string>, fn?: (d: NoteTsDsl) => void);
7340
- analyze(ctx: AnalysisContext): void;
7341
- add(...lines: ReadonlyArray<string>): this;
7342
- apply<T extends ts.Node>(node: T): T;
7343
- toAst(): ts.Node;
7456
+ toAst(ctx: AstContext): ts.Identifier;
7344
7457
  }
7345
7458
  //#endregion
7346
7459
  //#region src/ts-dsl/stmt/block.d.ts
7347
- declare const Mixed$15: MixinCtor<MixinCtor<abstract new () => TsDsl<ts.Block>, LayoutMethods>, DoMethods>;
7348
- declare class BlockTsDsl extends Mixed$15 {
7460
+ declare const Mixed$14: MixinCtor<MixinCtor<abstract new () => TsDsl<ts.Block>, LayoutMethods>, DoMethods>;
7461
+ declare class BlockTsDsl extends Mixed$14 {
7349
7462
  readonly '~dsl' = "BlockTsDsl";
7350
7463
  constructor(...items: Array<DoExpr>);
7351
7464
  analyze(ctx: AnalysisContext): void;
7352
- toAst(): ts.Block;
7465
+ toAst(ctx: AstContext): ts.Block;
7353
7466
  }
7354
7467
  //#endregion
7355
7468
  //#region src/ts-dsl/stmt/stmt.d.ts
7356
- declare const Mixed$14: abstract new () => TsDsl<ts.Statement>;
7357
- declare class StmtTsDsl extends Mixed$14 {
7469
+ declare const Mixed$13: abstract new () => TsDsl<ts.Statement>;
7470
+ declare class StmtTsDsl extends Mixed$13 {
7358
7471
  readonly '~dsl' = "StmtTsDsl";
7359
7472
  protected _inner: ts.Expression | ts.Statement | TsDsl<any>;
7360
7473
  constructor(inner: ts.Expression | ts.Statement | TsDsl<any>);
7361
7474
  analyze(ctx: AnalysisContext): void;
7362
- toAst(): ts.Statement;
7475
+ toAst(ctx: AstContext): ts.Statement;
7363
7476
  }
7364
7477
  //#endregion
7365
7478
  //#region src/ts-dsl/stmt/throw.d.ts
7366
- declare const Mixed$13: abstract new () => TsDsl<ts.ThrowStatement>;
7367
- declare class ThrowTsDsl extends Mixed$13 {
7479
+ declare const Mixed$12: abstract new () => TsDsl<ts.ThrowStatement>;
7480
+ declare class ThrowTsDsl extends Mixed$12 {
7368
7481
  readonly '~dsl' = "ThrowTsDsl";
7369
7482
  protected error: string | MaybeTsDsl<ts.Expression>;
7370
7483
  protected msg?: string | MaybeTsDsl<ts.Expression>;
@@ -7372,13 +7485,13 @@ declare class ThrowTsDsl extends Mixed$13 {
7372
7485
  constructor(error: string | MaybeTsDsl<ts.Expression>, useNew?: boolean);
7373
7486
  analyze(ctx: AnalysisContext): void;
7374
7487
  message(value: string | MaybeTsDsl<ts.Expression>): this;
7375
- toAst(): ts.ThrowStatement;
7488
+ toAst(ctx: AstContext): ts.ThrowStatement;
7376
7489
  }
7377
7490
  //#endregion
7378
7491
  //#region src/ts-dsl/stmt/try.d.ts
7379
- declare const Mixed$12: abstract new () => TsDsl<ts.TryStatement>;
7492
+ declare const Mixed$11: abstract new () => TsDsl<ts.TryStatement>;
7380
7493
  type CatchParam = Symbol | string;
7381
- declare class TryTsDsl extends Mixed$12 {
7494
+ declare class TryTsDsl extends Mixed$11 {
7382
7495
  readonly '~dsl' = "TryTsDsl";
7383
7496
  protected _catch?: Array<DoExpr>;
7384
7497
  protected _catchArg?: CatchParam;
@@ -7390,25 +7503,7 @@ declare class TryTsDsl extends Mixed$12 {
7390
7503
  catchArg(arg: CatchParam): this;
7391
7504
  finally(...items: Array<DoExpr>): this;
7392
7505
  try(...items: Array<DoExpr>): this;
7393
- toAst(): ts.TryStatement;
7394
- }
7395
- //#endregion
7396
- //#region src/ts-dsl/stmt/var.d.ts
7397
- type VarName = Symbol | string;
7398
- declare const Mixed$11: MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.VariableStatement>, ValueMethods>, PatternMethods>, HintMethods>, ExportMethods>, DocMethods>, DefaultMethods>;
7399
- declare class VarTsDsl extends Mixed$11 {
7400
- readonly '~dsl' = "VarTsDsl";
7401
- protected kind: ts.NodeFlags;
7402
- protected name?: Ref<VarName>;
7403
- protected _type?: TypeTsDsl;
7404
- constructor(name?: VarName);
7405
- analyze(ctx: AnalysisContext): void;
7406
- const(): this;
7407
- let(): this;
7408
- /** Sets the variable type. */
7409
- type(type: string | TypeTsDsl): this;
7410
- var(): this;
7411
- toAst(): ts.VariableStatement;
7506
+ toAst(ctx: AstContext): ts.TryStatement;
7412
7507
  }
7413
7508
  //#endregion
7414
7509
  //#region src/ts-dsl/token.d.ts
@@ -7444,44 +7539,41 @@ declare class TypeAliasTsDsl extends Mixed$10 {
7444
7539
  analyze(ctx: AnalysisContext): void;
7445
7540
  /** Sets the type expression on the right-hand side of `= ...`. */
7446
7541
  type(node: Value): this;
7447
- toAst(): ts.TypeAliasDeclaration;
7542
+ toAst(ctx: AstContext): ts.TypeAliasDeclaration;
7448
7543
  }
7449
7544
  //#endregion
7450
7545
  //#region src/ts-dsl/type/and.d.ts
7451
7546
  type Type$1 = Symbol | string | ts.TypeNode | TypeTsDsl;
7452
- declare const Mixed$9: abstract new () => TypeTsDsl<ts.IntersectionTypeNode>;
7547
+ declare const Mixed$9: abstract new () => TsDsl<ts.IntersectionTypeNode>;
7453
7548
  declare class TypeAndTsDsl extends Mixed$9 {
7454
7549
  readonly '~dsl' = "TypeAndTsDsl";
7455
7550
  protected _types: Array<Ref<Type$1>>;
7456
7551
  constructor(...nodes: Array<Type$1>);
7457
7552
  analyze(ctx: AnalysisContext): void;
7458
7553
  types(...nodes: Array<Type$1>): this;
7459
- toAst(): ts.IntersectionTypeNode;
7554
+ toAst(ctx: AstContext): ts.IntersectionTypeNode;
7460
7555
  }
7461
7556
  //#endregion
7462
7557
  //#region src/ts-dsl/type/func.d.ts
7463
- declare const Mixed$8: MixinCtor<MixinCtor<MixinCtor<abstract new () => TypeTsDsl<ts.FunctionTypeNode>, TypeParamsMethods>, ParamMethods>, DocMethods>;
7558
+ declare const Mixed$8: MixinCtor<MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.FunctionTypeNode>, TypeReturnsMethods>, TypeParamsMethods>, ParamMethods>, DocMethods>;
7464
7559
  declare class TypeFuncTsDsl extends Mixed$8 {
7465
7560
  readonly '~dsl' = "TypeFuncTsDsl";
7466
- protected _returns?: TypeTsDsl;
7467
7561
  analyze(ctx: AnalysisContext): void;
7468
- /** Sets the return type. */
7469
- returns(type: string | TypeTsDsl): this;
7470
- toAst(): ts.FunctionTypeNode;
7562
+ toAst(ctx: AstContext): ts.FunctionTypeNode;
7471
7563
  }
7472
7564
  //#endregion
7473
7565
  //#region src/ts-dsl/type/literal.d.ts
7474
- declare const Mixed$7: abstract new () => TypeTsDsl<ts.LiteralTypeNode>;
7566
+ declare const Mixed$7: abstract new () => TsDsl<ts.LiteralTypeNode>;
7475
7567
  declare class TypeLiteralTsDsl extends Mixed$7 {
7476
7568
  readonly '~dsl' = "TypeLiteralTsDsl";
7477
7569
  protected value: string | number | boolean | null;
7478
7570
  constructor(value: string | number | boolean | null);
7479
7571
  analyze(ctx: AnalysisContext): void;
7480
- toAst(): ts.LiteralTypeNode;
7572
+ toAst(ctx: AstContext): ts.LiteralTypeNode;
7481
7573
  }
7482
7574
  //#endregion
7483
7575
  //#region src/ts-dsl/type/mapped.d.ts
7484
- declare const Mixed$6: abstract new () => TypeTsDsl<ts.MappedTypeNode>;
7576
+ declare const Mixed$6: abstract new () => TsDsl<ts.MappedTypeNode>;
7485
7577
  declare class TypeMappedTsDsl extends Mixed$6 {
7486
7578
  readonly '~dsl' = "TypeMappedTsDsl";
7487
7579
  protected questionToken?: TokenTsDsl<ts.SyntaxKind.QuestionToken | ts.SyntaxKind.PlusToken | ts.SyntaxKind.MinusToken>;
@@ -7507,7 +7599,7 @@ declare class TypeMappedTsDsl extends Mixed$6 {
7507
7599
  required(): this;
7508
7600
  /** Sets the mapped value type: `[K in X]: ValueType` */
7509
7601
  type(type: string | MaybeTsDsl<ts.TypeNode>): this;
7510
- toAst(): ts.MappedTypeNode;
7602
+ toAst(ctx: AstContext): ts.MappedTypeNode;
7511
7603
  $validate(): asserts this is this & {
7512
7604
  _key: string | MaybeTsDsl<ts.TypeNode>;
7513
7605
  _name: string;
@@ -7519,7 +7611,7 @@ declare class TypeMappedTsDsl extends Mixed$6 {
7519
7611
  //#region src/ts-dsl/type/idx-sig.d.ts
7520
7612
  type TypeIdxSigName = string;
7521
7613
  type TypeIdxSigType = string | MaybeTsDsl<ts.TypeNode>;
7522
- declare const Mixed$5: MixinCtor<MixinCtor<abstract new () => TypeTsDsl<ts.IndexSignatureDeclaration>, ReadonlyMethods>, DocMethods>;
7614
+ declare const Mixed$5: MixinCtor<MixinCtor<abstract new () => TsDsl<ts.IndexSignatureDeclaration>, ReadonlyMethods>, DocMethods>;
7523
7615
  declare class TypeIdxSigTsDsl extends Mixed$5 {
7524
7616
  readonly '~dsl' = "TypeIdxSigTsDsl";
7525
7617
  protected _key?: TypeIdxSigType;
@@ -7533,7 +7625,7 @@ declare class TypeIdxSigTsDsl extends Mixed$5 {
7533
7625
  key(type: TypeIdxSigType): this;
7534
7626
  /** Sets the property type. */
7535
7627
  type(type: TypeIdxSigType): this;
7536
- toAst(): ts.IndexSignatureDeclaration;
7628
+ toAst(ctx: AstContext): ts.IndexSignatureDeclaration;
7537
7629
  $validate(): asserts this is this & {
7538
7630
  _key: TypeIdxSigType;
7539
7631
  _name: TypeIdxSigName;
@@ -7545,7 +7637,7 @@ declare class TypeIdxSigTsDsl extends Mixed$5 {
7545
7637
  //#region src/ts-dsl/type/prop.d.ts
7546
7638
  type TypePropName = string;
7547
7639
  type TypePropType = Symbol | string | MaybeTsDsl<ts.TypeNode>;
7548
- declare const Mixed$4: MixinCtor<MixinCtor<MixinCtor<abstract new () => TypeTsDsl<ts.TypeElement>, ReadonlyMethods>, OptionalMethods>, DocMethods>;
7640
+ declare const Mixed$4: MixinCtor<MixinCtor<MixinCtor<abstract new () => TsDsl<ts.TypeElement>, ReadonlyMethods>, OptionalMethods>, DocMethods>;
7549
7641
  declare class TypePropTsDsl extends Mixed$4 {
7550
7642
  readonly '~dsl' = "TypePropTsDsl";
7551
7643
  protected name: TypePropName;
@@ -7554,11 +7646,11 @@ declare class TypePropTsDsl extends Mixed$4 {
7554
7646
  analyze(ctx: AnalysisContext): void;
7555
7647
  /** Sets the property type. */
7556
7648
  type(type: TypePropType): this;
7557
- toAst(): ts.PropertySignature;
7649
+ toAst(ctx: AstContext): ts.PropertySignature;
7558
7650
  }
7559
7651
  //#endregion
7560
7652
  //#region src/ts-dsl/type/object.d.ts
7561
- declare const Mixed$3: abstract new () => TypeTsDsl<ts.TypeNode>;
7653
+ declare const Mixed$3: abstract new () => TsDsl<ts.TypeNode>;
7562
7654
  declare class TypeObjectTsDsl extends Mixed$3 {
7563
7655
  readonly '~dsl' = "TypeObjectTsDsl";
7564
7656
  protected props: Array<TypePropTsDsl | TypeIdxSigTsDsl>;
@@ -7571,23 +7663,23 @@ declare class TypeObjectTsDsl extends Mixed$3 {
7571
7663
  get isEmpty(): boolean;
7572
7664
  /** Adds a property signature (returns property builder). */
7573
7665
  prop(name: string, fn: (p: TypePropTsDsl) => void): this;
7574
- toAst(): ts.TypeLiteralNode;
7666
+ toAst(ctx: AstContext): ts.TypeLiteralNode;
7575
7667
  }
7576
7668
  //#endregion
7577
7669
  //#region src/ts-dsl/type/or.d.ts
7578
7670
  type Type = Symbol | string | ts.TypeNode | TypeTsDsl;
7579
- declare const Mixed$2: abstract new () => TypeTsDsl<ts.UnionTypeNode>;
7671
+ declare const Mixed$2: abstract new () => TsDsl<ts.UnionTypeNode>;
7580
7672
  declare class TypeOrTsDsl extends Mixed$2 {
7581
7673
  readonly '~dsl' = "TypeOrTsDsl";
7582
7674
  protected _types: Array<Ref<Type>>;
7583
7675
  constructor(...nodes: Array<Type>);
7584
7676
  analyze(ctx: AnalysisContext): void;
7585
7677
  types(...nodes: Array<Type>): this;
7586
- toAst(): ts.UnionTypeNode;
7678
+ toAst(ctx: AstContext): ts.UnionTypeNode;
7587
7679
  }
7588
7680
  //#endregion
7589
7681
  //#region src/ts-dsl/type/template.d.ts
7590
- declare const Mixed$1: abstract new () => TypeTsDsl<ts.TemplateLiteralTypeNode>;
7682
+ declare const Mixed$1: abstract new () => TsDsl<ts.TemplateLiteralTypeNode>;
7591
7683
  declare class TypeTemplateTsDsl extends Mixed$1 {
7592
7684
  readonly '~dsl' = "TypeTemplateTsDsl";
7593
7685
  protected parts: Array<string | MaybeTsDsl<ts.TypeNode>>;
@@ -7595,18 +7687,18 @@ declare class TypeTemplateTsDsl extends Mixed$1 {
7595
7687
  analyze(ctx: AnalysisContext): void;
7596
7688
  /** Adds a raw string segment or embedded type expression. */
7597
7689
  add(part: string | MaybeTsDsl<ts.TypeNode>): this;
7598
- toAst(): ts.TemplateLiteralTypeNode;
7690
+ toAst(ctx: AstContext): ts.TemplateLiteralTypeNode;
7599
7691
  }
7600
7692
  //#endregion
7601
7693
  //#region src/ts-dsl/type/tuple.d.ts
7602
- declare const Mixed: abstract new () => TypeTsDsl<ts.TupleTypeNode>;
7694
+ declare const Mixed: abstract new () => TsDsl<ts.TupleTypeNode>;
7603
7695
  declare class TypeTupleTsDsl extends Mixed {
7604
7696
  readonly '~dsl' = "TypeTupleTsDsl";
7605
7697
  protected _elements: Array<string | ts.TypeNode | TypeTsDsl>;
7606
7698
  constructor(...nodes: Array<string | ts.TypeNode | TypeTsDsl>);
7607
7699
  analyze(ctx: AnalysisContext): void;
7608
7700
  elements(...types: Array<string | ts.TypeNode | TypeTsDsl>): this;
7609
- toAst(): ts.TupleTypeNode;
7701
+ toAst(ctx: AstContext): ts.TupleTypeNode;
7610
7702
  }
7611
7703
  //#endregion
7612
7704
  //#region src/ts-dsl/render/typescript.d.ts
@@ -7703,39 +7795,39 @@ declare const reserved: {
7703
7795
  };
7704
7796
  //#endregion
7705
7797
  //#region src/ts-dsl/index.d.ts
7706
- declare const $: ((id: any) => ExprTsDsl) & {
7798
+ declare const $: ((id: string | _hey_api_codegen_core0.Symbol | ts.Expression | TsDsl<ts.Expression>) => ExprTsDsl) & {
7707
7799
  /** Creates an array literal expression (e.g. `[1, 2, 3]`). */
7708
7800
  array: (...args: ConstructorParameters<typeof ArrayTsDsl>) => ArrayTsDsl;
7709
7801
  /** Creates an `as` type assertion expression (e.g. `value as Type`). */
7710
- as: (expr: any, type: any) => AsTsDsl;
7802
+ as: (expr: AsExpr, type: AsType) => AsTsDsl;
7711
7803
  /** Creates a property access expression (e.g. `obj.foo`). */
7712
- attr: (left: any, right: any) => AttrTsDsl;
7804
+ attr: (left: AttrLeft, right: AttrRight) => AttrTsDsl;
7713
7805
  /** Creates an await expression (e.g. `await promise`). */
7714
- await: (expr: any) => AwaitTsDsl;
7806
+ await: (expr: AwaitExpr) => AwaitTsDsl;
7715
7807
  /** Creates a binary expression (e.g. `a + b`). */
7716
- binary: (base: any, op?: (("!=" | "!==" | "&&" | "*" | "+" | "-" | "/" | "<" | "<=" | "=" | "==" | "===" | ">" | ">=" | "??" | "||") | typescript0.BinaryOperator) | undefined, expr?: any) => BinaryTsDsl;
7808
+ 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;
7717
7809
  /** Creates a statement block (`{ ... }`). */
7718
7810
  block: (...args: ConstructorParameters<typeof BlockTsDsl>) => BlockTsDsl;
7719
7811
  /** Creates a function or method call expression (e.g. `fn(arg)`). */
7720
- call: (callee: CallCallee, ...args: any[]) => CallTsDsl;
7812
+ call: (callee: CallCallee, ...args: (CallArg | undefined)[]) => CallTsDsl;
7721
7813
  /** Creates a class declaration or expression. */
7722
- class: (name: any) => ClassTsDsl;
7814
+ class: (name: string | _hey_api_codegen_core0.Symbol) => ClassTsDsl;
7723
7815
  /** Creates a constant variable declaration (`const`). */
7724
- const: (name?: any) => VarTsDsl;
7816
+ const: (name?: VarName | undefined) => VarTsDsl;
7725
7817
  /** Creates a decorator expression (e.g. `@decorator`). */
7726
- decorator: (name: any, ...args: (string | typescript0.Expression | TsDsl<typescript0.Expression>)[]) => DecoratorTsDsl;
7818
+ decorator: (name: DecoratorName, ...args: (string | ts.Expression | TsDsl<ts.Expression>)[]) => DecoratorTsDsl;
7727
7819
  /** Creates a JSDoc documentation block. */
7728
- doc: (lines?: MaybeArray$1<string> | undefined, fn?: ((d: DocTsDsl) => void) | undefined) => DocTsDsl;
7820
+ doc: (lines?: DocLines | undefined, fn?: DocFn | undefined) => DocTsDsl;
7729
7821
  /** Creates an enum declaration. */
7730
- enum: (name: any, fn?: ((e: EnumTsDsl) => void) | undefined) => EnumTsDsl;
7822
+ enum: (name: EnumName, fn?: ((e: EnumTsDsl) => void) | undefined) => EnumTsDsl;
7731
7823
  /** Creates a general expression node. */
7732
- expr: (id: any) => ExprTsDsl;
7824
+ expr: (id: string | _hey_api_codegen_core0.Symbol | ts.Expression | TsDsl<ts.Expression>) => ExprTsDsl;
7733
7825
  /** Creates a field declaration in a class or object. */
7734
- field: (name: string, fn?: ((f: FieldTsDsl) => void) | undefined) => FieldTsDsl;
7826
+ field: (name: FieldName, fn?: ((f: FieldTsDsl) => void) | undefined) => FieldTsDsl;
7735
7827
  /** Converts a runtime value into a corresponding expression node. */
7736
7828
  fromValue: (input: unknown, options?: {
7737
7829
  layout?: "pretty";
7738
- } | undefined) => TsDsl<typescript0.Expression>;
7830
+ } | undefined) => TsDsl<ts.Expression>;
7739
7831
  /** Creates a function expression or declaration. */
7740
7832
  func: {
7741
7833
  (): FuncTsDsl<"arrow">;
@@ -7747,39 +7839,41 @@ declare const $: ((id: any) => ExprTsDsl) & {
7747
7839
  /** Creates a getter method declaration. */
7748
7840
  getter: (name: GetterName, fn?: ((g: GetterTsDsl) => void) | undefined) => GetterTsDsl;
7749
7841
  /** Creates a single-line comment (//). */
7750
- hint: (lines?: MaybeArray$1<string> | undefined, fn?: ((d: HintTsDsl) => void) | undefined) => HintTsDsl;
7842
+ hint: (lines?: HintLines | undefined, fn?: HintFn | undefined) => HintTsDsl;
7751
7843
  /** Creates an identifier (e.g. `foo`). */
7752
7844
  id: (name: string) => IdTsDsl;
7753
7845
  /** Creates an if statement. */
7754
7846
  if: (condition?: IfCondition | undefined) => IfTsDsl;
7755
7847
  /** Creates an initialization block or statement. */
7756
7848
  init: (fn?: ((i: InitTsDsl) => void) | undefined) => InitTsDsl;
7849
+ /** Creates a lazy, context-aware node with deferred evaluation. */
7850
+ lazy: <T extends ts.Node>(thunk: LazyThunk<T>) => LazyTsDsl<T>;
7757
7851
  /** Creates a let variable declaration (`let`). */
7758
- let: (name?: any) => VarTsDsl;
7852
+ let: (name?: VarName | undefined) => VarTsDsl;
7759
7853
  /** Creates a literal value (e.g. string, number, boolean). */
7760
7854
  literal: (value: string | number | boolean | null) => LiteralTsDsl;
7761
7855
  /** Creates an enum member declaration. */
7762
- member: (name: string, value?: ((string | number | typescript0.Expression | TsDsl<typescript0.Expression>) | ((m: EnumMemberTsDsl) => void)) | undefined) => EnumMemberTsDsl;
7856
+ member: (name: string, value?: ((string | number | ts.Expression | TsDsl<ts.Expression>) | ((m: EnumMemberTsDsl) => void)) | undefined) => EnumMemberTsDsl;
7763
7857
  /** Creates a method declaration inside a class or object. */
7764
7858
  method: (name: string, fn?: ((m: MethodTsDsl) => void) | undefined) => MethodTsDsl;
7765
7859
  /** Creates a negation expression (`-x`). */
7766
- neg: (expr?: string | typescript0.Expression | TsDsl<typescript0.Expression> | undefined, op?: typescript0.PrefixUnaryOperator | undefined) => PrefixTsDsl;
7860
+ neg: (expr?: string | ts.Expression | TsDsl<ts.Expression> | undefined, op?: ts.PrefixUnaryOperator | undefined) => PrefixTsDsl;
7767
7861
  /** Creates a new expression (e.g. `new ClassName()`). */
7768
- new: (classExpr: any, ...args: any[]) => NewTsDsl;
7862
+ new: (classExpr: NewExpr, ...args: NewExpr[]) => NewTsDsl;
7769
7863
  /** Creates a newline (for formatting purposes). */
7770
7864
  newline: () => NewlineTsDsl;
7771
7865
  /** Creates a logical NOT expression (`!x`). */
7772
- not: (expr?: string | typescript0.Expression | TsDsl<typescript0.Expression> | undefined, op?: typescript0.PrefixUnaryOperator | undefined) => PrefixTsDsl;
7866
+ not: (expr?: string | ts.Expression | TsDsl<ts.Expression> | undefined, op?: ts.PrefixUnaryOperator | undefined) => PrefixTsDsl;
7773
7867
  /** Creates a block comment (/* ... *\/). */
7774
- note: (lines?: MaybeArray$1<string> | undefined, fn?: ((d: NoteTsDsl) => void) | undefined) => NoteTsDsl;
7868
+ note: (lines?: NoteLines | undefined, fn?: NoteFn | undefined) => NoteTsDsl;
7775
7869
  /** Creates an object literal expression. */
7776
7870
  object: (...args: ConstructorParameters<typeof ObjectTsDsl>) => ObjectTsDsl;
7777
7871
  /** Creates a parameter declaration for functions or methods. */
7778
- param: (name: any, fn?: ((p: ParamTsDsl) => void) | undefined) => ParamTsDsl;
7872
+ param: (name: ParamName | ((p: ParamTsDsl) => void), fn?: ((p: ParamTsDsl) => void) | undefined) => ParamTsDsl;
7779
7873
  /** Creates a pattern for destructuring or matching. */
7780
7874
  pattern: () => PatternTsDsl;
7781
7875
  /** Creates a prefix unary expression (e.g. `-x`, `!x`, `~x`). */
7782
- prefix: (expr?: string | typescript0.Expression | TsDsl<typescript0.Expression> | undefined, op?: typescript0.PrefixUnaryOperator | undefined) => PrefixTsDsl;
7876
+ prefix: (expr?: string | ts.Expression | TsDsl<ts.Expression> | undefined, op?: ts.PrefixUnaryOperator | undefined) => PrefixTsDsl;
7783
7877
  /** Creates an object literal property (e.g. `{ foo: bar }`). */
7784
7878
  prop: (meta: {
7785
7879
  kind: "computed";
@@ -7800,37 +7894,37 @@ declare const $: ((id: any) => ExprTsDsl) & {
7800
7894
  /** Creates a regular expression literal (e.g. `/foo/gi`). */
7801
7895
  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;
7802
7896
  /** Creates a return statement. */
7803
- return: (expr?: any) => ReturnTsDsl;
7897
+ return: (expr?: ReturnExpr | undefined) => ReturnTsDsl;
7804
7898
  /** Creates a setter method declaration. */
7805
7899
  setter: (name: SetterName, fn?: ((s: SetterTsDsl) => void) | undefined) => SetterTsDsl;
7806
7900
  /** Wraps an expression or statement-like value into a `StmtTsDsl`. */
7807
- stmt: (inner: typescript0.Expression | typescript0.Statement | TsDsl<any>) => StmtTsDsl;
7901
+ stmt: (inner: ts.Expression | ts.Statement | TsDsl<any>) => StmtTsDsl;
7808
7902
  /** Creates a template literal expression. */
7809
- template: (value?: any) => TemplateTsDsl;
7903
+ template: (value?: TemplatePart | undefined) => TemplateTsDsl;
7810
7904
  /** Creates a ternary conditional expression (if ? then : else). */
7811
- ternary: (condition?: string | typescript0.Expression | TsDsl<typescript0.Expression> | undefined) => TernaryTsDsl;
7905
+ ternary: (condition?: string | ts.Expression | TsDsl<ts.Expression> | undefined) => TernaryTsDsl;
7812
7906
  /** Creates a throw statement. */
7813
- throw: (error: string | typescript0.Expression | TsDsl<typescript0.Expression>, useNew?: boolean | undefined) => ThrowTsDsl;
7907
+ throw: (error: string | ts.Expression | TsDsl<ts.Expression>, useNew?: boolean | undefined) => ThrowTsDsl;
7814
7908
  /** Creates a syntax token (e.g. `?`, `readonly`, `+`, `-`). */
7815
7909
  token: () => TokenTsDsl<never>;
7816
7910
  /** Creates a try/catch/finally statement. */
7817
7911
  try: (...args: ConstructorParameters<typeof TryTsDsl>) => TryTsDsl;
7818
7912
  /** Creates a basic type reference or type expression (e.g. Foo or Foo<T>). */
7819
- type: ((name: any, fn?: ((t: TypeExprTsDsl) => void) | undefined) => TypeExprTsDsl) & {
7913
+ type: ((name: TypeExprName, fn?: TypeExprFn | undefined) => TypeExprTsDsl) & {
7820
7914
  /** Creates a type alias declaration (e.g. `type Foo = Bar`). */
7821
- alias: (name: any, fn?: ((t: TypeAliasTsDsl) => void) | undefined) => TypeAliasTsDsl;
7915
+ alias: (name: string | _hey_api_codegen_core0.Symbol, fn?: ((t: TypeAliasTsDsl) => void) | undefined) => TypeAliasTsDsl;
7822
7916
  /** Creates an intersection type (e.g. `A & B`). */
7823
7917
  and: (...args: ConstructorParameters<typeof TypeAndTsDsl>) => TypeAndTsDsl;
7824
7918
  /** Creates a qualified type reference (e.g. Foo.Bar). */
7825
- attr: (right: any) => TypeAttrTsDsl;
7919
+ attr: (right: string | _hey_api_codegen_core0.Symbol | ts.Identifier) => TypeAttrTsDsl;
7826
7920
  /** Creates a basic type reference or type expression (e.g. Foo or Foo<T>). */
7827
- expr: (name: any, fn?: ((t: TypeExprTsDsl) => void) | undefined) => TypeExprTsDsl;
7921
+ expr: (name: TypeExprName, fn?: TypeExprFn | undefined) => TypeExprTsDsl;
7828
7922
  /** Converts a runtime value into a corresponding type expression node. */
7829
- fromValue: (input: unknown) => TsDsl<typescript0.TypeNode>;
7923
+ fromValue: (input: unknown) => TsDsl<ts.TypeNode>;
7830
7924
  /** Creates a function type node (e.g. `(a: string) => number`). */
7831
7925
  func: (...args: ConstructorParameters<typeof TypeFuncTsDsl>) => TypeFuncTsDsl;
7832
7926
  /** Creates an indexed-access type (e.g. `Foo<T>[K]`). */
7833
- idx: (base: string | typescript0.TypeNode | TsDsl<typescript0.TypeNode>, index: string | number | typescript0.TypeNode | TsDsl<typescript0.TypeNode>) => TypeIdxTsDsl;
7927
+ idx: (base: string | ts.TypeNode | TsDsl<ts.TypeNode>, index: string | number | ts.TypeNode | TsDsl<ts.TypeNode>) => TypeIdxTsDsl;
7834
7928
  /** Creates a literal type node (e.g. 'foo', 42, or true). */
7835
7929
  literal: (value: string | number | boolean | null) => TypeLiteralTsDsl;
7836
7930
  /** Creates a mapped type (e.g. `{ [K in keyof T]: U }`). */
@@ -7842,18 +7936,18 @@ declare const $: ((id: any) => ExprTsDsl) & {
7842
7936
  /** Represents a union type (e.g. `A | B | C`). */
7843
7937
  or: (...args: ConstructorParameters<typeof TypeOrTsDsl>) => TypeOrTsDsl;
7844
7938
  /** Creates a type parameter (e.g. `<T>`). */
7845
- param: (name?: any, fn?: ((name: TypeParamTsDsl) => void) | undefined) => TypeParamTsDsl;
7939
+ param: (name?: TypeParamName | undefined, fn?: ((name: TypeParamTsDsl) => void) | undefined) => TypeParamTsDsl;
7846
7940
  /** Creates a type query node (e.g. `typeof Foo`). */
7847
- query: (expr: string | MaybeTsDsl<typescript0.Expression | TypeTsDsl<typescript0.TypeNode>>) => TypeQueryTsDsl;
7941
+ query: (expr: TypeQueryExpr) => TypeQueryTsDsl;
7848
7942
  /** Builds a TypeScript template literal *type* (e.g. `${Foo}-${Bar}` as a type). */
7849
- template: (value?: string | typescript0.TypeNode | TsDsl<typescript0.TypeNode> | undefined) => TypeTemplateTsDsl;
7943
+ template: (value?: string | ts.TypeNode | TsDsl<ts.TypeNode> | undefined) => TypeTemplateTsDsl;
7850
7944
  /** Creates a tuple type (e.g. [A, B, C]). */
7851
7945
  tuple: (...args: ConstructorParameters<typeof TypeTupleTsDsl>) => TypeTupleTsDsl;
7852
7946
  };
7853
- /** Creates a runtime `typeof` expression (e.g. typeof x). */
7854
- typeofExpr: (expr: string | typescript0.Expression | TsDsl<typescript0.Expression>) => TypeOfExprTsDsl;
7855
- /** Creates a variable declaration (var). */
7856
- var: (name?: any) => VarTsDsl;
7947
+ /** Creates a `typeof` expression (e.g. `typeof value`). */
7948
+ typeofExpr: (expr: TypeOfExpr) => TypeOfExprTsDsl;
7949
+ /** Creates a variable declaration (`var`). */
7950
+ var: (name?: VarName | undefined) => VarTsDsl;
7857
7951
  };
7858
7952
  type DollarTsDsl = {
7859
7953
  /**
@@ -7870,7 +7964,7 @@ type DollarTsDsl = {
7870
7964
  *
7871
7965
  * Returns:
7872
7966
  * - A new `ExprTsDsl` instance when called directly.
7873
- * - The `base` factory object for constructing more specific nodes.
7967
+ * - The `tsDsl` object for constructing more specific nodes.
7874
7968
  */
7875
7969
  $: typeof $;
7876
7970
  };
@@ -14136,8 +14230,6 @@ declare class PluginInstance<T extends Plugin.Types = Plugin.Types> {
14136
14230
  gen: IProject;
14137
14231
  name: string;
14138
14232
  });
14139
- addNode(node: Node | null): number;
14140
- updateNode(index: number, node: Node | null): void;
14141
14233
  /**
14142
14234
  * Iterates over various input elements as specified by the event types, in
14143
14235
  * a specific order: servers, schemas, parameters, request bodies, then
@@ -14188,6 +14280,14 @@ declare class PluginInstance<T extends Plugin.Types = Plugin.Types> {
14188
14280
  };
14189
14281
  };
14190
14282
  isSymbolRegistered(identifier: SymbolIdentifier): boolean;
14283
+ /**
14284
+ * Sets or adds a node to the project graph.
14285
+ *
14286
+ * @param node The node to be added or updated in the project graph.
14287
+ * @param index The index at which to update the node. If undefined, the node will be added.
14288
+ * @returns The index of the added node or void if updated.
14289
+ */
14290
+ node<T extends number | undefined = undefined>(node: Node | null, index?: T): T extends number ? void : number;
14191
14291
  querySymbol(filter: SymbolMeta): Symbol | undefined;
14192
14292
  referenceSymbol(meta: SymbolMeta): Symbol;
14193
14293
  /**
@@ -14766,8 +14866,8 @@ type UserOutput = {
14766
14866
  /**
14767
14867
  * If specified, this will be the file extension used when importing
14768
14868
  * other modules. By default, we don't add a file extension and let the
14769
- * runtime resolve it. If you're using moduleResolution `nodenext`, we
14770
- * default to `.js`.
14869
+ * runtime resolve it. If you're using moduleResolution `nodenext` or
14870
+ * `node16`, we default to `.js`.
14771
14871
  *
14772
14872
  * @default undefined
14773
14873
  */
@@ -14865,8 +14965,8 @@ type Output = {
14865
14965
  /**
14866
14966
  * If specified, this will be the file extension used when importing
14867
14967
  * other modules. By default, we don't add a file extension and let the
14868
- * runtime resolve it. If you're using moduleResolution `nodenext`, we
14869
- * default to `.js`.
14968
+ * runtime resolve it. If you're using moduleResolution `nodenext` or
14969
+ * `node16`, we default to `.js`.
14870
14970
  */
14871
14971
  importFileExtension: ImportFileExtensions | (string & {}) | null | undefined;
14872
14972
  /**
@@ -15553,4 +15653,4 @@ type Config = Omit<Required<UserConfig>, 'input' | 'logs' | 'output' | 'parser'
15553
15653
  };
15554
15654
  //#endregion
15555
15655
  export { LazyOrAsync as A, MaybeTsDsl as C, PluginHandler as D, Client as E, StringCase as O, 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, MaybeArray as j, IR$1 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 };
15556
- //# sourceMappingURL=config-CBa-XLy8.d.cts.map
15656
+ //# sourceMappingURL=config-Duuay7XM.d.cts.map