@typespec/prettier-plugin-typespec 0.46.0-dev.1 → 0.46.0-dev.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +347 -77
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../compiler/dist/core/nonascii.js","../../compiler/dist/core/charcode.js","../../compiler/dist/core/types.js","../../compiler/dist/core/library.js","../../compiler/dist/core/messages.js","../../compiler/dist/core/diagnostics.js","../../compiler/dist/core/scanner.js","../../compiler/dist/core/util.js","../../compiler/dist/formatter/print/comment-handler.js","../../compiler/dist/formatter/print/needs-parens.js","../../compiler/dist/formatter/print/printer.js","../../compiler/dist/core/parser.js","../../compiler/dist/formatter/parser.js","../../compiler/dist/formatter/index.js","../../compiler/dist/core/index.js","../src/index.mjs"],"sourcesContent":["//\n// Generated by scripts/regen-nonascii-map.js\n// on node v16.15.0 with unicode 14.0.\n//\n/**\n * @internal\n *\n * Map of non-ascii characters that are valid in an identifier. Each pair of\n * numbers represents an inclusive range of code points.\n */\n//prettier-ignore\nexport const nonAsciiIdentifierMap = [\n 0xa0, 0x377,\n 0x37a, 0x37f,\n 0x384, 0x38a,\n 0x38c, 0x38c,\n 0x38e, 0x3a1,\n 0x3a3, 0x52f,\n 0x531, 0x556,\n 0x559, 0x58a,\n 0x58d, 0x58f,\n 0x591, 0x5c7,\n 0x5d0, 0x5ea,\n 0x5ef, 0x5f4,\n 0x600, 0x70d,\n 0x70f, 0x74a,\n 0x74d, 0x7b1,\n 0x7c0, 0x7fa,\n 0x7fd, 0x82d,\n 0x830, 0x83e,\n 0x840, 0x85b,\n 0x85e, 0x85e,\n 0x860, 0x86a,\n 0x870, 0x88e,\n 0x890, 0x891,\n 0x898, 0x983,\n 0x985, 0x98c,\n 0x98f, 0x990,\n 0x993, 0x9a8,\n 0x9aa, 0x9b0,\n 0x9b2, 0x9b2,\n 0x9b6, 0x9b9,\n 0x9bc, 0x9c4,\n 0x9c7, 0x9c8,\n 0x9cb, 0x9ce,\n 0x9d7, 0x9d7,\n 0x9dc, 0x9dd,\n 0x9df, 0x9e3,\n 0x9e6, 0x9fe,\n 0xa01, 0xa03,\n 0xa05, 0xa0a,\n 0xa0f, 0xa10,\n 0xa13, 0xa28,\n 0xa2a, 0xa30,\n 0xa32, 0xa33,\n 0xa35, 0xa36,\n 0xa38, 0xa39,\n 0xa3c, 0xa3c,\n 0xa3e, 0xa42,\n 0xa47, 0xa48,\n 0xa4b, 0xa4d,\n 0xa51, 0xa51,\n 0xa59, 0xa5c,\n 0xa5e, 0xa5e,\n 0xa66, 0xa76,\n 0xa81, 0xa83,\n 0xa85, 0xa8d,\n 0xa8f, 0xa91,\n 0xa93, 0xaa8,\n 0xaaa, 0xab0,\n 0xab2, 0xab3,\n 0xab5, 0xab9,\n 0xabc, 0xac5,\n 0xac7, 0xac9,\n 0xacb, 0xacd,\n 0xad0, 0xad0,\n 0xae0, 0xae3,\n 0xae6, 0xaf1,\n 0xaf9, 0xaff,\n 0xb01, 0xb03,\n 0xb05, 0xb0c,\n 0xb0f, 0xb10,\n 0xb13, 0xb28,\n 0xb2a, 0xb30,\n 0xb32, 0xb33,\n 0xb35, 0xb39,\n 0xb3c, 0xb44,\n 0xb47, 0xb48,\n 0xb4b, 0xb4d,\n 0xb55, 0xb57,\n 0xb5c, 0xb5d,\n 0xb5f, 0xb63,\n 0xb66, 0xb77,\n 0xb82, 0xb83,\n 0xb85, 0xb8a,\n 0xb8e, 0xb90,\n 0xb92, 0xb95,\n 0xb99, 0xb9a,\n 0xb9c, 0xb9c,\n 0xb9e, 0xb9f,\n 0xba3, 0xba4,\n 0xba8, 0xbaa,\n 0xbae, 0xbb9,\n 0xbbe, 0xbc2,\n 0xbc6, 0xbc8,\n 0xbca, 0xbcd,\n 0xbd0, 0xbd0,\n 0xbd7, 0xbd7,\n 0xbe6, 0xbfa,\n 0xc00, 0xc0c,\n 0xc0e, 0xc10,\n 0xc12, 0xc28,\n 0xc2a, 0xc39,\n 0xc3c, 0xc44,\n 0xc46, 0xc48,\n 0xc4a, 0xc4d,\n 0xc55, 0xc56,\n 0xc58, 0xc5a,\n 0xc5d, 0xc5d,\n 0xc60, 0xc63,\n 0xc66, 0xc6f,\n 0xc77, 0xc8c,\n 0xc8e, 0xc90,\n 0xc92, 0xca8,\n 0xcaa, 0xcb3,\n 0xcb5, 0xcb9,\n 0xcbc, 0xcc4,\n 0xcc6, 0xcc8,\n 0xcca, 0xccd,\n 0xcd5, 0xcd6,\n 0xcdd, 0xcde,\n 0xce0, 0xce3,\n 0xce6, 0xcef,\n 0xcf1, 0xcf2,\n 0xd00, 0xd0c,\n 0xd0e, 0xd10,\n 0xd12, 0xd44,\n 0xd46, 0xd48,\n 0xd4a, 0xd4f,\n 0xd54, 0xd63,\n 0xd66, 0xd7f,\n 0xd81, 0xd83,\n 0xd85, 0xd96,\n 0xd9a, 0xdb1,\n 0xdb3, 0xdbb,\n 0xdbd, 0xdbd,\n 0xdc0, 0xdc6,\n 0xdca, 0xdca,\n 0xdcf, 0xdd4,\n 0xdd6, 0xdd6,\n 0xdd8, 0xddf,\n 0xde6, 0xdef,\n 0xdf2, 0xdf4,\n 0xe01, 0xe3a,\n 0xe3f, 0xe5b,\n 0xe81, 0xe82,\n 0xe84, 0xe84,\n 0xe86, 0xe8a,\n 0xe8c, 0xea3,\n 0xea5, 0xea5,\n 0xea7, 0xebd,\n 0xec0, 0xec4,\n 0xec6, 0xec6,\n 0xec8, 0xecd,\n 0xed0, 0xed9,\n 0xedc, 0xedf,\n 0xf00, 0xf47,\n 0xf49, 0xf6c,\n 0xf71, 0xf97,\n 0xf99, 0xfbc,\n 0xfbe, 0xfcc,\n 0xfce, 0xfda,\n 0x1000, 0x10c5,\n 0x10c7, 0x10c7,\n 0x10cd, 0x10cd,\n 0x10d0, 0x1248,\n 0x124a, 0x124d,\n 0x1250, 0x1256,\n 0x1258, 0x1258,\n 0x125a, 0x125d,\n 0x1260, 0x1288,\n 0x128a, 0x128d,\n 0x1290, 0x12b0,\n 0x12b2, 0x12b5,\n 0x12b8, 0x12be,\n 0x12c0, 0x12c0,\n 0x12c2, 0x12c5,\n 0x12c8, 0x12d6,\n 0x12d8, 0x1310,\n 0x1312, 0x1315,\n 0x1318, 0x135a,\n 0x135d, 0x137c,\n 0x1380, 0x1399,\n 0x13a0, 0x13f5,\n 0x13f8, 0x13fd,\n 0x1400, 0x169c,\n 0x16a0, 0x16f8,\n 0x1700, 0x1715,\n 0x171f, 0x1736,\n 0x1740, 0x1753,\n 0x1760, 0x176c,\n 0x176e, 0x1770,\n 0x1772, 0x1773,\n 0x1780, 0x17dd,\n 0x17e0, 0x17e9,\n 0x17f0, 0x17f9,\n 0x1800, 0x1819,\n 0x1820, 0x1878,\n 0x1880, 0x18aa,\n 0x18b0, 0x18f5,\n 0x1900, 0x191e,\n 0x1920, 0x192b,\n 0x1930, 0x193b,\n 0x1940, 0x1940,\n 0x1944, 0x196d,\n 0x1970, 0x1974,\n 0x1980, 0x19ab,\n 0x19b0, 0x19c9,\n 0x19d0, 0x19da,\n 0x19de, 0x1a1b,\n 0x1a1e, 0x1a5e,\n 0x1a60, 0x1a7c,\n 0x1a7f, 0x1a89,\n 0x1a90, 0x1a99,\n 0x1aa0, 0x1aad,\n 0x1ab0, 0x1ace,\n 0x1b00, 0x1b4c,\n 0x1b50, 0x1b7e,\n 0x1b80, 0x1bf3,\n 0x1bfc, 0x1c37,\n 0x1c3b, 0x1c49,\n 0x1c4d, 0x1c88,\n 0x1c90, 0x1cba,\n 0x1cbd, 0x1cc7,\n 0x1cd0, 0x1cfa,\n 0x1d00, 0x1f15,\n 0x1f18, 0x1f1d,\n 0x1f20, 0x1f45,\n 0x1f48, 0x1f4d,\n 0x1f50, 0x1f57,\n 0x1f59, 0x1f59,\n 0x1f5b, 0x1f5b,\n 0x1f5d, 0x1f5d,\n 0x1f5f, 0x1f7d,\n 0x1f80, 0x1fb4,\n 0x1fb6, 0x1fc4,\n 0x1fc6, 0x1fd3,\n 0x1fd6, 0x1fdb,\n 0x1fdd, 0x1fef,\n 0x1ff2, 0x1ff4,\n 0x1ff6, 0x1ffe,\n 0x2000, 0x200d,\n 0x2010, 0x2027,\n 0x202a, 0x2064,\n 0x2066, 0x2071,\n 0x2074, 0x208e,\n 0x2090, 0x209c,\n 0x20a0, 0x20c0,\n 0x20d0, 0x20f0,\n 0x2100, 0x218b,\n 0x2190, 0x2426,\n 0x2440, 0x244a,\n 0x2460, 0x2b73,\n 0x2b76, 0x2b95,\n 0x2b97, 0x2cf3,\n 0x2cf9, 0x2d25,\n 0x2d27, 0x2d27,\n 0x2d2d, 0x2d2d,\n 0x2d30, 0x2d67,\n 0x2d6f, 0x2d70,\n 0x2d7f, 0x2d96,\n 0x2da0, 0x2da6,\n 0x2da8, 0x2dae,\n 0x2db0, 0x2db6,\n 0x2db8, 0x2dbe,\n 0x2dc0, 0x2dc6,\n 0x2dc8, 0x2dce,\n 0x2dd0, 0x2dd6,\n 0x2dd8, 0x2dde,\n 0x2de0, 0x2e5d,\n 0x2e80, 0x2e99,\n 0x2e9b, 0x2ef3,\n 0x2f00, 0x2fd5,\n 0x2ff0, 0x2ffb,\n 0x3000, 0x303f,\n 0x3041, 0x3096,\n 0x3099, 0x30ff,\n 0x3105, 0x312f,\n 0x3131, 0x318e,\n 0x3190, 0x31e3,\n 0x31f0, 0x321e,\n 0x3220, 0xa48c,\n 0xa490, 0xa4c6,\n 0xa4d0, 0xa62b,\n 0xa640, 0xa6f7,\n 0xa700, 0xa7ca,\n 0xa7d0, 0xa7d1,\n 0xa7d3, 0xa7d3,\n 0xa7d5, 0xa7d9,\n 0xa7f2, 0xa82c,\n 0xa830, 0xa839,\n 0xa840, 0xa877,\n 0xa880, 0xa8c5,\n 0xa8ce, 0xa8d9,\n 0xa8e0, 0xa953,\n 0xa95f, 0xa97c,\n 0xa980, 0xa9cd,\n 0xa9cf, 0xa9d9,\n 0xa9de, 0xa9fe,\n 0xaa00, 0xaa36,\n 0xaa40, 0xaa4d,\n 0xaa50, 0xaa59,\n 0xaa5c, 0xaac2,\n 0xaadb, 0xaaf6,\n 0xab01, 0xab06,\n 0xab09, 0xab0e,\n 0xab11, 0xab16,\n 0xab20, 0xab26,\n 0xab28, 0xab2e,\n 0xab30, 0xab6b,\n 0xab70, 0xabed,\n 0xabf0, 0xabf9,\n 0xac00, 0xd7a3,\n 0xd7b0, 0xd7c6,\n 0xd7cb, 0xd7fb,\n 0xf900, 0xfa6d,\n 0xfa70, 0xfad9,\n 0xfb00, 0xfb06,\n 0xfb13, 0xfb17,\n 0xfb1d, 0xfb36,\n 0xfb38, 0xfb3c,\n 0xfb3e, 0xfb3e,\n 0xfb40, 0xfb41,\n 0xfb43, 0xfb44,\n 0xfb46, 0xfbc2,\n 0xfbd3, 0xfd8f,\n 0xfd92, 0xfdc7,\n 0xfdcf, 0xfdcf,\n 0xfdf0, 0xfe19,\n 0xfe20, 0xfe52,\n 0xfe54, 0xfe66,\n 0xfe68, 0xfe6b,\n 0xfe70, 0xfe74,\n 0xfe76, 0xfefc,\n 0xfeff, 0xfeff,\n 0xff01, 0xffbe,\n 0xffc2, 0xffc7,\n 0xffca, 0xffcf,\n 0xffd2, 0xffd7,\n 0xffda, 0xffdc,\n 0xffe0, 0xffe6,\n 0xffe8, 0xffee,\n 0xfff9, 0xfffc,\n 0x10000, 0x1000b,\n 0x1000d, 0x10026,\n 0x10028, 0x1003a,\n 0x1003c, 0x1003d,\n 0x1003f, 0x1004d,\n 0x10050, 0x1005d,\n 0x10080, 0x100fa,\n 0x10100, 0x10102,\n 0x10107, 0x10133,\n 0x10137, 0x1018e,\n 0x10190, 0x1019c,\n 0x101a0, 0x101a0,\n 0x101d0, 0x101fd,\n 0x10280, 0x1029c,\n 0x102a0, 0x102d0,\n 0x102e0, 0x102fb,\n 0x10300, 0x10323,\n 0x1032d, 0x1034a,\n 0x10350, 0x1037a,\n 0x10380, 0x1039d,\n 0x1039f, 0x103c3,\n 0x103c8, 0x103d5,\n 0x10400, 0x1049d,\n 0x104a0, 0x104a9,\n 0x104b0, 0x104d3,\n 0x104d8, 0x104fb,\n 0x10500, 0x10527,\n 0x10530, 0x10563,\n 0x1056f, 0x1057a,\n 0x1057c, 0x1058a,\n 0x1058c, 0x10592,\n 0x10594, 0x10595,\n 0x10597, 0x105a1,\n 0x105a3, 0x105b1,\n 0x105b3, 0x105b9,\n 0x105bb, 0x105bc,\n 0x10600, 0x10736,\n 0x10740, 0x10755,\n 0x10760, 0x10767,\n 0x10780, 0x10785,\n 0x10787, 0x107b0,\n 0x107b2, 0x107ba,\n 0x10800, 0x10805,\n 0x10808, 0x10808,\n 0x1080a, 0x10835,\n 0x10837, 0x10838,\n 0x1083c, 0x1083c,\n 0x1083f, 0x10855,\n 0x10857, 0x1089e,\n 0x108a7, 0x108af,\n 0x108e0, 0x108f2,\n 0x108f4, 0x108f5,\n 0x108fb, 0x1091b,\n 0x1091f, 0x10939,\n 0x1093f, 0x1093f,\n 0x10980, 0x109b7,\n 0x109bc, 0x109cf,\n 0x109d2, 0x10a03,\n 0x10a05, 0x10a06,\n 0x10a0c, 0x10a13,\n 0x10a15, 0x10a17,\n 0x10a19, 0x10a35,\n 0x10a38, 0x10a3a,\n 0x10a3f, 0x10a48,\n 0x10a50, 0x10a58,\n 0x10a60, 0x10a9f,\n 0x10ac0, 0x10ae6,\n 0x10aeb, 0x10af6,\n 0x10b00, 0x10b35,\n 0x10b39, 0x10b55,\n 0x10b58, 0x10b72,\n 0x10b78, 0x10b91,\n 0x10b99, 0x10b9c,\n 0x10ba9, 0x10baf,\n 0x10c00, 0x10c48,\n 0x10c80, 0x10cb2,\n 0x10cc0, 0x10cf2,\n 0x10cfa, 0x10d27,\n 0x10d30, 0x10d39,\n 0x10e60, 0x10e7e,\n 0x10e80, 0x10ea9,\n 0x10eab, 0x10ead,\n 0x10eb0, 0x10eb1,\n 0x10f00, 0x10f27,\n 0x10f30, 0x10f59,\n 0x10f70, 0x10f89,\n 0x10fb0, 0x10fcb,\n 0x10fe0, 0x10ff6,\n 0x11000, 0x1104d,\n 0x11052, 0x11075,\n 0x1107f, 0x110c2,\n 0x110cd, 0x110cd,\n 0x110d0, 0x110e8,\n 0x110f0, 0x110f9,\n 0x11100, 0x11134,\n 0x11136, 0x11147,\n 0x11150, 0x11176,\n 0x11180, 0x111df,\n 0x111e1, 0x111f4,\n 0x11200, 0x11211,\n 0x11213, 0x1123e,\n 0x11280, 0x11286,\n 0x11288, 0x11288,\n 0x1128a, 0x1128d,\n 0x1128f, 0x1129d,\n 0x1129f, 0x112a9,\n 0x112b0, 0x112ea,\n 0x112f0, 0x112f9,\n 0x11300, 0x11303,\n 0x11305, 0x1130c,\n 0x1130f, 0x11310,\n 0x11313, 0x11328,\n 0x1132a, 0x11330,\n 0x11332, 0x11333,\n 0x11335, 0x11339,\n 0x1133b, 0x11344,\n 0x11347, 0x11348,\n 0x1134b, 0x1134d,\n 0x11350, 0x11350,\n 0x11357, 0x11357,\n 0x1135d, 0x11363,\n 0x11366, 0x1136c,\n 0x11370, 0x11374,\n 0x11400, 0x1145b,\n 0x1145d, 0x11461,\n 0x11480, 0x114c7,\n 0x114d0, 0x114d9,\n 0x11580, 0x115b5,\n 0x115b8, 0x115dd,\n 0x11600, 0x11644,\n 0x11650, 0x11659,\n 0x11660, 0x1166c,\n 0x11680, 0x116b9,\n 0x116c0, 0x116c9,\n 0x11700, 0x1171a,\n 0x1171d, 0x1172b,\n 0x11730, 0x11746,\n 0x11800, 0x1183b,\n 0x118a0, 0x118f2,\n 0x118ff, 0x11906,\n 0x11909, 0x11909,\n 0x1190c, 0x11913,\n 0x11915, 0x11916,\n 0x11918, 0x11935,\n 0x11937, 0x11938,\n 0x1193b, 0x11946,\n 0x11950, 0x11959,\n 0x119a0, 0x119a7,\n 0x119aa, 0x119d7,\n 0x119da, 0x119e4,\n 0x11a00, 0x11a47,\n 0x11a50, 0x11aa2,\n 0x11ab0, 0x11af8,\n 0x11c00, 0x11c08,\n 0x11c0a, 0x11c36,\n 0x11c38, 0x11c45,\n 0x11c50, 0x11c6c,\n 0x11c70, 0x11c8f,\n 0x11c92, 0x11ca7,\n 0x11ca9, 0x11cb6,\n 0x11d00, 0x11d06,\n 0x11d08, 0x11d09,\n 0x11d0b, 0x11d36,\n 0x11d3a, 0x11d3a,\n 0x11d3c, 0x11d3d,\n 0x11d3f, 0x11d47,\n 0x11d50, 0x11d59,\n 0x11d60, 0x11d65,\n 0x11d67, 0x11d68,\n 0x11d6a, 0x11d8e,\n 0x11d90, 0x11d91,\n 0x11d93, 0x11d98,\n 0x11da0, 0x11da9,\n 0x11ee0, 0x11ef8,\n 0x11fb0, 0x11fb0,\n 0x11fc0, 0x11ff1,\n 0x11fff, 0x12399,\n 0x12400, 0x1246e,\n 0x12470, 0x12474,\n 0x12480, 0x12543,\n 0x12f90, 0x12ff2,\n 0x13000, 0x1342e,\n 0x13430, 0x13438,\n 0x14400, 0x14646,\n 0x16800, 0x16a38,\n 0x16a40, 0x16a5e,\n 0x16a60, 0x16a69,\n 0x16a6e, 0x16abe,\n 0x16ac0, 0x16ac9,\n 0x16ad0, 0x16aed,\n 0x16af0, 0x16af5,\n 0x16b00, 0x16b45,\n 0x16b50, 0x16b59,\n 0x16b5b, 0x16b61,\n 0x16b63, 0x16b77,\n 0x16b7d, 0x16b8f,\n 0x16e40, 0x16e9a,\n 0x16f00, 0x16f4a,\n 0x16f4f, 0x16f87,\n 0x16f8f, 0x16f9f,\n 0x16fe0, 0x16fe4,\n 0x16ff0, 0x16ff1,\n 0x17000, 0x187f7,\n 0x18800, 0x18cd5,\n 0x18d00, 0x18d08,\n 0x1aff0, 0x1aff3,\n 0x1aff5, 0x1affb,\n 0x1affd, 0x1affe,\n 0x1b000, 0x1b122,\n 0x1b150, 0x1b152,\n 0x1b164, 0x1b167,\n 0x1b170, 0x1b2fb,\n 0x1bc00, 0x1bc6a,\n 0x1bc70, 0x1bc7c,\n 0x1bc80, 0x1bc88,\n 0x1bc90, 0x1bc99,\n 0x1bc9c, 0x1bca3,\n 0x1cf00, 0x1cf2d,\n 0x1cf30, 0x1cf46,\n 0x1cf50, 0x1cfc3,\n 0x1d000, 0x1d0f5,\n 0x1d100, 0x1d126,\n 0x1d129, 0x1d1ea,\n 0x1d200, 0x1d245,\n 0x1d2e0, 0x1d2f3,\n 0x1d300, 0x1d356,\n 0x1d360, 0x1d378,\n 0x1d400, 0x1d454,\n 0x1d456, 0x1d49c,\n 0x1d49e, 0x1d49f,\n 0x1d4a2, 0x1d4a2,\n 0x1d4a5, 0x1d4a6,\n 0x1d4a9, 0x1d4ac,\n 0x1d4ae, 0x1d4b9,\n 0x1d4bb, 0x1d4bb,\n 0x1d4bd, 0x1d4c3,\n 0x1d4c5, 0x1d505,\n 0x1d507, 0x1d50a,\n 0x1d50d, 0x1d514,\n 0x1d516, 0x1d51c,\n 0x1d51e, 0x1d539,\n 0x1d53b, 0x1d53e,\n 0x1d540, 0x1d544,\n 0x1d546, 0x1d546,\n 0x1d54a, 0x1d550,\n 0x1d552, 0x1d6a5,\n 0x1d6a8, 0x1d7cb,\n 0x1d7ce, 0x1da8b,\n 0x1da9b, 0x1da9f,\n 0x1daa1, 0x1daaf,\n 0x1df00, 0x1df1e,\n 0x1e000, 0x1e006,\n 0x1e008, 0x1e018,\n 0x1e01b, 0x1e021,\n 0x1e023, 0x1e024,\n 0x1e026, 0x1e02a,\n 0x1e100, 0x1e12c,\n 0x1e130, 0x1e13d,\n 0x1e140, 0x1e149,\n 0x1e14e, 0x1e14f,\n 0x1e290, 0x1e2ae,\n 0x1e2c0, 0x1e2f9,\n 0x1e2ff, 0x1e2ff,\n 0x1e7e0, 0x1e7e6,\n 0x1e7e8, 0x1e7eb,\n 0x1e7ed, 0x1e7ee,\n 0x1e7f0, 0x1e7fe,\n 0x1e800, 0x1e8c4,\n 0x1e8c7, 0x1e8d6,\n 0x1e900, 0x1e94b,\n 0x1e950, 0x1e959,\n 0x1e95e, 0x1e95f,\n 0x1ec71, 0x1ecb4,\n 0x1ed01, 0x1ed3d,\n 0x1ee00, 0x1ee03,\n 0x1ee05, 0x1ee1f,\n 0x1ee21, 0x1ee22,\n 0x1ee24, 0x1ee24,\n 0x1ee27, 0x1ee27,\n 0x1ee29, 0x1ee32,\n 0x1ee34, 0x1ee37,\n 0x1ee39, 0x1ee39,\n 0x1ee3b, 0x1ee3b,\n 0x1ee42, 0x1ee42,\n 0x1ee47, 0x1ee47,\n 0x1ee49, 0x1ee49,\n 0x1ee4b, 0x1ee4b,\n 0x1ee4d, 0x1ee4f,\n 0x1ee51, 0x1ee52,\n 0x1ee54, 0x1ee54,\n 0x1ee57, 0x1ee57,\n 0x1ee59, 0x1ee59,\n 0x1ee5b, 0x1ee5b,\n 0x1ee5d, 0x1ee5d,\n 0x1ee5f, 0x1ee5f,\n 0x1ee61, 0x1ee62,\n 0x1ee64, 0x1ee64,\n 0x1ee67, 0x1ee6a,\n 0x1ee6c, 0x1ee72,\n 0x1ee74, 0x1ee77,\n 0x1ee79, 0x1ee7c,\n 0x1ee7e, 0x1ee7e,\n 0x1ee80, 0x1ee89,\n 0x1ee8b, 0x1ee9b,\n 0x1eea1, 0x1eea3,\n 0x1eea5, 0x1eea9,\n 0x1eeab, 0x1eebb,\n 0x1eef0, 0x1eef1,\n 0x1f000, 0x1f02b,\n 0x1f030, 0x1f093,\n 0x1f0a0, 0x1f0ae,\n 0x1f0b1, 0x1f0bf,\n 0x1f0c1, 0x1f0cf,\n 0x1f0d1, 0x1f0f5,\n 0x1f100, 0x1f1ad,\n 0x1f1e6, 0x1f202,\n 0x1f210, 0x1f23b,\n 0x1f240, 0x1f248,\n 0x1f250, 0x1f251,\n 0x1f260, 0x1f265,\n 0x1f300, 0x1f6d7,\n 0x1f6dd, 0x1f6ec,\n 0x1f6f0, 0x1f6fc,\n 0x1f700, 0x1f773,\n 0x1f780, 0x1f7d8,\n 0x1f7e0, 0x1f7eb,\n 0x1f7f0, 0x1f7f0,\n 0x1f800, 0x1f80b,\n 0x1f810, 0x1f847,\n 0x1f850, 0x1f859,\n 0x1f860, 0x1f887,\n 0x1f890, 0x1f8ad,\n 0x1f8b0, 0x1f8b1,\n 0x1f900, 0x1fa53,\n 0x1fa60, 0x1fa6d,\n 0x1fa70, 0x1fa74,\n 0x1fa78, 0x1fa7c,\n 0x1fa80, 0x1fa86,\n 0x1fa90, 0x1faac,\n 0x1fab0, 0x1faba,\n 0x1fac0, 0x1fac5,\n 0x1fad0, 0x1fad9,\n 0x1fae0, 0x1fae7,\n 0x1faf0, 0x1faf6,\n 0x1fb00, 0x1fb92,\n 0x1fb94, 0x1fbca,\n 0x1fbf0, 0x1fbf9,\n 0x20000, 0x2a6df,\n 0x2a700, 0x2b738,\n 0x2b740, 0x2b81d,\n 0x2b820, 0x2cea1,\n 0x2ceb0, 0x2ebe0,\n 0x2f800, 0x2fa1d,\n 0x30000, 0x3134a,\n 0xe0001, 0xe0001,\n 0xe0020, 0xe007f,\n 0xe0100, 0xe01ef,\n];\n//# sourceMappingURL=nonascii.js.map","import { nonAsciiIdentifierMap } from \"./nonascii.js\";\nexport function utf16CodeUnits(codePoint) {\n return codePoint >= 0x10000 ? 2 : 1;\n}\nexport function isHighSurrogate(ch) {\n return ch >= 0xd800 && ch <= 0xdbff;\n}\nexport function isLowSurrogate(ch) {\n return ch >= 0xdc00 && ch <= 0xdfff;\n}\nexport function isLineBreak(ch) {\n return ch === 10 /* CharCode.LineFeed */ || ch === 13 /* CharCode.CarriageReturn */;\n}\nexport function isAsciiWhiteSpaceSingleLine(ch) {\n return (ch === 32 /* CharCode.Space */ ||\n ch === 9 /* CharCode.Tab */ ||\n ch === 11 /* CharCode.VerticalTab */ ||\n ch === 12 /* CharCode.FormFeed */);\n}\nexport function isNonAsciiWhiteSpaceSingleLine(ch) {\n return (ch === 133 /* CharCode.NextLine */ || // not considered a line break\n ch === 8206 /* CharCode.LeftToRightMark */ ||\n ch === 8207 /* CharCode.RightToLeftMark */ ||\n ch === 8232 /* CharCode.LineSeparator */ ||\n ch === 8233 /* CharCode.ParagraphSeparator */);\n}\nexport function isWhiteSpace(ch) {\n return isWhiteSpaceSingleLine(ch) || isLineBreak(ch);\n}\nexport function isWhiteSpaceSingleLine(ch) {\n return (isAsciiWhiteSpaceSingleLine(ch) ||\n (ch > 127 /* CharCode.MaxAscii */ && isNonAsciiWhiteSpaceSingleLine(ch)));\n}\nexport function trim(str) {\n let start = 0;\n let end = str.length - 1;\n if (!isWhiteSpace(str.charCodeAt(start)) && !isWhiteSpace(str.charCodeAt(end))) {\n return str;\n }\n while (isWhiteSpace(str.charCodeAt(start))) {\n start++;\n }\n while (isWhiteSpace(str.charCodeAt(end))) {\n end--;\n }\n return str.substring(start, end + 1);\n}\nexport function isDigit(ch) {\n return ch >= 48 /* CharCode._0 */ && ch <= 57 /* CharCode._9 */;\n}\nexport function isHexDigit(ch) {\n return (isDigit(ch) || (ch >= 65 /* CharCode.A */ && ch <= 70 /* CharCode.F */) || (ch >= 97 /* CharCode.a */ && ch <= 102 /* CharCode.f */));\n}\nexport function isBinaryDigit(ch) {\n return ch === 48 /* CharCode._0 */ || ch === 49 /* CharCode._1 */;\n}\nexport function isLowercaseAsciiLetter(ch) {\n return ch >= 97 /* CharCode.a */ && ch <= 122 /* CharCode.z */;\n}\nexport function isAsciiIdentifierStart(ch) {\n return ((ch >= 65 /* CharCode.A */ && ch <= 90 /* CharCode.Z */) ||\n (ch >= 97 /* CharCode.a */ && ch <= 122 /* CharCode.z */) ||\n ch === 36 /* CharCode.$ */ ||\n ch === 95 /* CharCode._ */);\n}\nexport function isAsciiIdentifierContinue(ch) {\n return ((ch >= 65 /* CharCode.A */ && ch <= 90 /* CharCode.Z */) ||\n (ch >= 97 /* CharCode.a */ && ch <= 122 /* CharCode.z */) ||\n (ch >= 48 /* CharCode._0 */ && ch <= 57 /* CharCode._9 */) ||\n ch === 36 /* CharCode.$ */ ||\n ch === 95 /* CharCode._ */);\n}\nexport function isIdentifierStart(codePoint) {\n return (isAsciiIdentifierStart(codePoint) ||\n (codePoint > 127 /* CharCode.MaxAscii */ && isNonAsciiIdentifierCharacter(codePoint)));\n}\nexport function isIdentifierContinue(codePoint) {\n return (isAsciiIdentifierContinue(codePoint) ||\n (codePoint > 127 /* CharCode.MaxAscii */ && isNonAsciiIdentifierCharacter(codePoint)));\n}\nexport function isNonAsciiIdentifierCharacter(codePoint) {\n return lookupInNonAsciiMap(codePoint, nonAsciiIdentifierMap);\n}\nexport function codePointBefore(text, pos) {\n if (pos <= 0 || pos >= text.length) {\n return undefined;\n }\n const ch = text.charCodeAt(pos - 1);\n if (!isLowSurrogate(ch) || !isHighSurrogate(text.charCodeAt(pos - 2))) {\n return ch;\n }\n return text.codePointAt(pos - 2);\n}\nfunction lookupInNonAsciiMap(codePoint, map) {\n // Perform binary search in one of the Unicode range maps\n let lo = 0;\n let hi = map.length;\n let mid;\n while (lo + 1 < hi) {\n mid = lo + (hi - lo) / 2;\n // mid has to be even to catch a range's beginning\n mid -= mid % 2;\n if (map[mid] <= codePoint && codePoint <= map[mid + 1]) {\n return true;\n }\n if (codePoint < map[mid]) {\n hi = mid;\n }\n else {\n lo = mid + 2;\n }\n }\n return false;\n}\n//# sourceMappingURL=charcode.js.map","/**\n * AST types\n */\nexport var SyntaxKind;\n(function (SyntaxKind) {\n SyntaxKind[SyntaxKind[\"TypeSpecScript\"] = 0] = \"TypeSpecScript\";\n /** @deprecated Use TypeSpecScript */\n SyntaxKind[SyntaxKind[\"CadlScript\"] = 0] = \"CadlScript\";\n SyntaxKind[SyntaxKind[\"JsSourceFile\"] = 1] = \"JsSourceFile\";\n SyntaxKind[SyntaxKind[\"ImportStatement\"] = 2] = \"ImportStatement\";\n SyntaxKind[SyntaxKind[\"Identifier\"] = 3] = \"Identifier\";\n SyntaxKind[SyntaxKind[\"AugmentDecoratorStatement\"] = 4] = \"AugmentDecoratorStatement\";\n SyntaxKind[SyntaxKind[\"DecoratorExpression\"] = 5] = \"DecoratorExpression\";\n SyntaxKind[SyntaxKind[\"DirectiveExpression\"] = 6] = \"DirectiveExpression\";\n SyntaxKind[SyntaxKind[\"MemberExpression\"] = 7] = \"MemberExpression\";\n SyntaxKind[SyntaxKind[\"NamespaceStatement\"] = 8] = \"NamespaceStatement\";\n SyntaxKind[SyntaxKind[\"UsingStatement\"] = 9] = \"UsingStatement\";\n SyntaxKind[SyntaxKind[\"OperationStatement\"] = 10] = \"OperationStatement\";\n SyntaxKind[SyntaxKind[\"OperationSignatureDeclaration\"] = 11] = \"OperationSignatureDeclaration\";\n SyntaxKind[SyntaxKind[\"OperationSignatureReference\"] = 12] = \"OperationSignatureReference\";\n SyntaxKind[SyntaxKind[\"ModelStatement\"] = 13] = \"ModelStatement\";\n SyntaxKind[SyntaxKind[\"ModelExpression\"] = 14] = \"ModelExpression\";\n SyntaxKind[SyntaxKind[\"ModelProperty\"] = 15] = \"ModelProperty\";\n SyntaxKind[SyntaxKind[\"ModelSpreadProperty\"] = 16] = \"ModelSpreadProperty\";\n SyntaxKind[SyntaxKind[\"ScalarStatement\"] = 17] = \"ScalarStatement\";\n SyntaxKind[SyntaxKind[\"InterfaceStatement\"] = 18] = \"InterfaceStatement\";\n SyntaxKind[SyntaxKind[\"UnionStatement\"] = 19] = \"UnionStatement\";\n SyntaxKind[SyntaxKind[\"UnionVariant\"] = 20] = \"UnionVariant\";\n SyntaxKind[SyntaxKind[\"EnumStatement\"] = 21] = \"EnumStatement\";\n SyntaxKind[SyntaxKind[\"EnumMember\"] = 22] = \"EnumMember\";\n SyntaxKind[SyntaxKind[\"EnumSpreadMember\"] = 23] = \"EnumSpreadMember\";\n SyntaxKind[SyntaxKind[\"AliasStatement\"] = 24] = \"AliasStatement\";\n SyntaxKind[SyntaxKind[\"DecoratorDeclarationStatement\"] = 25] = \"DecoratorDeclarationStatement\";\n SyntaxKind[SyntaxKind[\"FunctionDeclarationStatement\"] = 26] = \"FunctionDeclarationStatement\";\n SyntaxKind[SyntaxKind[\"FunctionParameter\"] = 27] = \"FunctionParameter\";\n SyntaxKind[SyntaxKind[\"UnionExpression\"] = 28] = \"UnionExpression\";\n SyntaxKind[SyntaxKind[\"IntersectionExpression\"] = 29] = \"IntersectionExpression\";\n SyntaxKind[SyntaxKind[\"TupleExpression\"] = 30] = \"TupleExpression\";\n SyntaxKind[SyntaxKind[\"ArrayExpression\"] = 31] = \"ArrayExpression\";\n SyntaxKind[SyntaxKind[\"StringLiteral\"] = 32] = \"StringLiteral\";\n SyntaxKind[SyntaxKind[\"NumericLiteral\"] = 33] = \"NumericLiteral\";\n SyntaxKind[SyntaxKind[\"BooleanLiteral\"] = 34] = \"BooleanLiteral\";\n SyntaxKind[SyntaxKind[\"ExternKeyword\"] = 35] = \"ExternKeyword\";\n SyntaxKind[SyntaxKind[\"VoidKeyword\"] = 36] = \"VoidKeyword\";\n SyntaxKind[SyntaxKind[\"NeverKeyword\"] = 37] = \"NeverKeyword\";\n SyntaxKind[SyntaxKind[\"UnknownKeyword\"] = 38] = \"UnknownKeyword\";\n SyntaxKind[SyntaxKind[\"ValueOfExpression\"] = 39] = \"ValueOfExpression\";\n SyntaxKind[SyntaxKind[\"TypeReference\"] = 40] = \"TypeReference\";\n SyntaxKind[SyntaxKind[\"ProjectionReference\"] = 41] = \"ProjectionReference\";\n SyntaxKind[SyntaxKind[\"TemplateParameterDeclaration\"] = 42] = \"TemplateParameterDeclaration\";\n SyntaxKind[SyntaxKind[\"EmptyStatement\"] = 43] = \"EmptyStatement\";\n SyntaxKind[SyntaxKind[\"InvalidStatement\"] = 44] = \"InvalidStatement\";\n SyntaxKind[SyntaxKind[\"LineComment\"] = 45] = \"LineComment\";\n SyntaxKind[SyntaxKind[\"BlockComment\"] = 46] = \"BlockComment\";\n SyntaxKind[SyntaxKind[\"Doc\"] = 47] = \"Doc\";\n SyntaxKind[SyntaxKind[\"DocText\"] = 48] = \"DocText\";\n SyntaxKind[SyntaxKind[\"DocParamTag\"] = 49] = \"DocParamTag\";\n SyntaxKind[SyntaxKind[\"DocReturnsTag\"] = 50] = \"DocReturnsTag\";\n SyntaxKind[SyntaxKind[\"DocTemplateTag\"] = 51] = \"DocTemplateTag\";\n SyntaxKind[SyntaxKind[\"DocUnknownTag\"] = 52] = \"DocUnknownTag\";\n SyntaxKind[SyntaxKind[\"Projection\"] = 53] = \"Projection\";\n SyntaxKind[SyntaxKind[\"ProjectionParameterDeclaration\"] = 54] = \"ProjectionParameterDeclaration\";\n SyntaxKind[SyntaxKind[\"ProjectionModelSelector\"] = 55] = \"ProjectionModelSelector\";\n SyntaxKind[SyntaxKind[\"ProjectionModelPropertySelector\"] = 56] = \"ProjectionModelPropertySelector\";\n SyntaxKind[SyntaxKind[\"ProjectionOperationSelector\"] = 57] = \"ProjectionOperationSelector\";\n SyntaxKind[SyntaxKind[\"ProjectionUnionSelector\"] = 58] = \"ProjectionUnionSelector\";\n SyntaxKind[SyntaxKind[\"ProjectionUnionVariantSelector\"] = 59] = \"ProjectionUnionVariantSelector\";\n SyntaxKind[SyntaxKind[\"ProjectionInterfaceSelector\"] = 60] = \"ProjectionInterfaceSelector\";\n SyntaxKind[SyntaxKind[\"ProjectionEnumSelector\"] = 61] = \"ProjectionEnumSelector\";\n SyntaxKind[SyntaxKind[\"ProjectionEnumMemberSelector\"] = 62] = \"ProjectionEnumMemberSelector\";\n SyntaxKind[SyntaxKind[\"ProjectionExpressionStatement\"] = 63] = \"ProjectionExpressionStatement\";\n SyntaxKind[SyntaxKind[\"ProjectionIfExpression\"] = 64] = \"ProjectionIfExpression\";\n SyntaxKind[SyntaxKind[\"ProjectionBlockExpression\"] = 65] = \"ProjectionBlockExpression\";\n SyntaxKind[SyntaxKind[\"ProjectionMemberExpression\"] = 66] = \"ProjectionMemberExpression\";\n SyntaxKind[SyntaxKind[\"ProjectionLogicalExpression\"] = 67] = \"ProjectionLogicalExpression\";\n SyntaxKind[SyntaxKind[\"ProjectionEqualityExpression\"] = 68] = \"ProjectionEqualityExpression\";\n SyntaxKind[SyntaxKind[\"ProjectionUnaryExpression\"] = 69] = \"ProjectionUnaryExpression\";\n SyntaxKind[SyntaxKind[\"ProjectionRelationalExpression\"] = 70] = \"ProjectionRelationalExpression\";\n SyntaxKind[SyntaxKind[\"ProjectionArithmeticExpression\"] = 71] = \"ProjectionArithmeticExpression\";\n SyntaxKind[SyntaxKind[\"ProjectionCallExpression\"] = 72] = \"ProjectionCallExpression\";\n SyntaxKind[SyntaxKind[\"ProjectionLambdaExpression\"] = 73] = \"ProjectionLambdaExpression\";\n SyntaxKind[SyntaxKind[\"ProjectionLambdaParameterDeclaration\"] = 74] = \"ProjectionLambdaParameterDeclaration\";\n SyntaxKind[SyntaxKind[\"ProjectionModelExpression\"] = 75] = \"ProjectionModelExpression\";\n SyntaxKind[SyntaxKind[\"ProjectionModelProperty\"] = 76] = \"ProjectionModelProperty\";\n SyntaxKind[SyntaxKind[\"ProjectionModelSpreadProperty\"] = 77] = \"ProjectionModelSpreadProperty\";\n SyntaxKind[SyntaxKind[\"ProjectionSpreadProperty\"] = 78] = \"ProjectionSpreadProperty\";\n SyntaxKind[SyntaxKind[\"ProjectionTupleExpression\"] = 79] = \"ProjectionTupleExpression\";\n SyntaxKind[SyntaxKind[\"ProjectionStatement\"] = 80] = \"ProjectionStatement\";\n SyntaxKind[SyntaxKind[\"ProjectionDecoratorReferenceExpression\"] = 81] = \"ProjectionDecoratorReferenceExpression\";\n SyntaxKind[SyntaxKind[\"Return\"] = 82] = \"Return\";\n})(SyntaxKind || (SyntaxKind = {}));\nexport var IdentifierKind;\n(function (IdentifierKind) {\n IdentifierKind[IdentifierKind[\"TypeReference\"] = 0] = \"TypeReference\";\n IdentifierKind[IdentifierKind[\"Decorator\"] = 1] = \"Decorator\";\n IdentifierKind[IdentifierKind[\"Function\"] = 2] = \"Function\";\n IdentifierKind[IdentifierKind[\"Using\"] = 3] = \"Using\";\n IdentifierKind[IdentifierKind[\"Declaration\"] = 4] = \"Declaration\";\n IdentifierKind[IdentifierKind[\"Other\"] = 5] = \"Other\";\n})(IdentifierKind || (IdentifierKind = {}));\nexport const NoTarget = Symbol.for(\"NoTarget\");\nexport var ListenerFlow;\n(function (ListenerFlow) {\n /**\n * Do not navigate any containing or referenced type.\n */\n ListenerFlow[ListenerFlow[\"NoRecursion\"] = 1] = \"NoRecursion\";\n})(ListenerFlow || (ListenerFlow = {}));\n//# sourceMappingURL=types.js.map","import { createDiagnosticCreator } from \"./diagnostics.js\";\nimport { createJSONSchemaValidator } from \"./schema-validator.js\";\nconst globalLibraryUrlsLoadedSym = Symbol.for(\"TYPESPEC_LIBRARY_URLS_LOADED\");\nif (globalThis[globalLibraryUrlsLoadedSym] === undefined) {\n globalThis[globalLibraryUrlsLoadedSym] = new Set();\n}\nconst loadedUrls = globalThis[globalLibraryUrlsLoadedSym];\n/**\n * @internal List of urls that used `createTypeSpecLibrary`. Used to keep track of the loaded version of library and make sure they are compatible.\n */\nexport function getLibraryUrlsLoaded() {\n return loadedUrls;\n}\n/** @deprecated use createTypeSpecLibrary */\nexport const createCadlLibrary = createTypeSpecLibrary;\n/**\n * Create a new TypeSpec library definition.\n * @param lib Library definition.\n * @returns Library with utility functions.\n *\n *\n * @tutorial Create the lib object with `as const` to get the full typing.\n *\n * @example\n * const libDef = {\n * name: \"myLib\",\n * diagnostics: {\n * \"my-code\": {serverity: \"error\", messages: {default: \"Foo bar\"}}\n * },\n * } as const;\n *\n * const lib = createTypeSpecLibrary(libDef);\n */\nexport function createTypeSpecLibrary(lib) {\n let emitterOptionValidator;\n const { reportDiagnostic, createDiagnostic } = createDiagnosticCreator(lib.diagnostics, lib.name);\n function createStateSymbol(name) {\n return Symbol.for(`${lib.name}.${name}`);\n }\n const caller = getCaller();\n if (caller) {\n loadedUrls.add(caller);\n }\n return {\n ...lib,\n reportDiagnostic,\n createDiagnostic,\n createStateSymbol,\n get emitterOptionValidator() {\n var _a;\n if (!emitterOptionValidator && ((_a = lib.emitter) === null || _a === void 0 ? void 0 : _a.options)) {\n emitterOptionValidator = createJSONSchemaValidator(lib.emitter.options, {\n coerceTypes: true,\n });\n }\n return emitterOptionValidator;\n },\n getTracer,\n };\n function getTracer(program) {\n return program.tracer.sub(lib.name);\n }\n}\nexport function paramMessage(strings, ...keys) {\n const template = (dict) => {\n const result = [strings[0]];\n keys.forEach((key, i) => {\n const value = dict[key];\n if (value !== undefined) {\n result.push(value);\n }\n result.push(strings[i + 1]);\n });\n return result.join(\"\");\n };\n template.keys = keys;\n return template;\n}\n/** @deprecated use setTypeSpecNamespace */\nexport const setCadlNamespace = setTypeSpecNamespace;\n/**\n * Set the TypeSpec namespace for that function.\n * @param namespace Namespace string (e.g. \"Foo.Bar\")\n * @param functions Functions\n */\nexport function setTypeSpecNamespace(namespace, ...functions) {\n functions.forEach((c) => (c.namespace = namespace));\n}\nfunction getCaller() {\n const caller = getCallStack()[2];\n return typeof caller === \"object\" && \"getFileName\" in caller ? caller.getFileName() : undefined;\n}\nfunction getCallStack() {\n const _prepareStackTrace = Error.prepareStackTrace;\n Error.prepareStackTrace = (_, stack) => stack;\n const stack = new Error().stack.slice(1); // eslint-disable-line unicorn/error-message\n Error.prepareStackTrace = _prepareStackTrace;\n return stack;\n}\n//# sourceMappingURL=library.js.map","// Static assert: this won't compile if one of the entries above is invalid.\nimport { createDiagnosticCreator } from \"./diagnostics.js\";\nimport { paramMessage } from \"./library.js\";\nconst diagnostics = {\n /**\n * Scanner errors.\n */\n \"digit-expected\": {\n severity: \"error\",\n messages: {\n default: \"Digit expected.\",\n },\n },\n \"hex-digit-expected\": {\n severity: \"error\",\n messages: {\n default: \"Hexadecimal digit expected.\",\n },\n },\n \"binary-digit-expected\": {\n severity: \"error\",\n messages: {\n default: \"Binary digit expected.\",\n },\n },\n unterminated: {\n severity: \"error\",\n messages: {\n default: paramMessage `Unterminated ${\"token\"}.`,\n },\n },\n \"creating-file\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Error creating single file: ${\"filename\"}, ${\"error\"}`,\n },\n },\n \"invalid-escape-sequence\": {\n severity: \"error\",\n messages: {\n default: \"Invalid escape sequence.\",\n },\n },\n \"no-new-line-start-triple-quote\": {\n severity: \"error\",\n messages: {\n default: \"String content in triple quotes must begin on a new line.\",\n },\n },\n \"no-new-line-end-triple-quote\": {\n severity: \"error\",\n messages: {\n default: \"Closing triple quotes must begin on a new line.\",\n },\n },\n \"triple-quote-indent\": {\n severity: \"error\",\n messages: {\n default: \"All lines in triple-quoted string lines must have the same indentation as closing triple quotes.\",\n },\n },\n \"invalid-character\": {\n severity: \"error\",\n messages: {\n default: \"Invalid character.\",\n },\n },\n /**\n * Utils\n */\n \"file-not-found\": {\n severity: \"error\",\n messages: {\n default: paramMessage `File ${\"path\"} not found.`,\n },\n },\n \"file-load\": {\n severity: \"error\",\n messages: {\n default: paramMessage `${\"message\"}`,\n },\n },\n /**\n * Init templates\n */\n \"init-template-invalid-json\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Unable to parse ${\"url\"}: ${\"message\"}. Check that the template URL is correct.`,\n },\n },\n \"init-template-download-failed\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Failed to download template from ${\"url\"}: ${\"message\"}. Check that the template URL is correct.`,\n },\n },\n /**\n * Parser errors.\n */\n \"multiple-blockless-namespace\": {\n severity: \"error\",\n messages: {\n default: \"Cannot use multiple blockless namespaces.\",\n },\n },\n \"blockless-namespace-first\": {\n severity: \"error\",\n messages: {\n default: \"Blockless namespaces can't follow other declarations.\",\n topLevel: \"Blockless namespace can only be top-level.\",\n },\n },\n \"import-first\": {\n severity: \"error\",\n messages: {\n default: \"Imports must come prior to namespaces or other declarations.\",\n topLevel: \"Imports must be top-level and come prior to namespaces or other declarations.\",\n },\n },\n \"token-expected\": {\n severity: \"error\",\n messages: {\n default: paramMessage `${\"token\"} expected.`,\n unexpected: paramMessage `Unexpected token ${\"token\"}`,\n numericOrStringLiteral: \"Expected numeric or string literal.\",\n identifier: \"Identifier expected.\",\n projectionDirection: \"from or to expected.\",\n expression: \"Expression expected.\",\n statement: \"Statement expected.\",\n property: \"Property expected.\",\n enumMember: \"Enum member expected.\",\n },\n },\n \"trailing-token\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Trailing ${\"token\"}`,\n },\n },\n \"unknown-directive\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Unknown directive '#${\"id\"}'`,\n },\n },\n \"augment-decorator-target\": {\n severity: \"error\",\n messages: {\n default: `Augment decorator first argument must be a type reference.`,\n noInstance: `Cannot reference template instances`,\n },\n },\n \"duplicate-decorator\": {\n severity: \"warning\",\n messages: {\n default: paramMessage `Decorator ${\"decoratorName\"} cannot be used twice on the same declaration.`,\n },\n },\n \"decorator-conflict\": {\n severity: \"warning\",\n messages: {\n default: paramMessage `Decorator ${\"decoratorName\"} cannot be used with decorator ${\"otherDecoratorName\"} on the same declaration.`,\n },\n },\n \"reserved-identifier\": {\n severity: \"error\",\n messages: {\n default: \"Keyword cannot be used as identifier.\",\n },\n },\n \"invalid-directive-location\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Cannot place directive on ${\"nodeName\"}.`,\n },\n },\n \"invalid-decorator-location\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Cannot decorate ${\"nodeName\"}.`,\n },\n },\n \"invalid-projection\": {\n severity: \"error\",\n messages: {\n default: \"Invalid projection\",\n wrongType: \"Non-projection can't be used to project\",\n noTo: \"Projection missing to projection\",\n projectionError: paramMessage `An error occurred when projecting this type: ${\"message\"}`,\n },\n },\n \"default-required\": {\n severity: \"error\",\n messages: {\n default: \"Required template parameters must not follow optional template parameters\",\n },\n },\n \"invalid-template-default\": {\n severity: \"error\",\n messages: {\n default: \"Template parameter defaults can only reference previously declared type parameters.\",\n },\n },\n \"required-parameter-first\": {\n severity: \"error\",\n messages: {\n default: \"A required parameter cannot follow an optional parameter.\",\n },\n },\n \"rest-parameter-last\": {\n severity: \"error\",\n messages: {\n default: \"A rest parameter must be last in a parameter list.\",\n },\n },\n \"rest-parameter-required\": {\n severity: \"error\",\n messages: {\n default: \"A rest parameter cannot be optional.\",\n },\n },\n /**\n * Parser doc comment warnings.\n * Design goal: Malformed doc comments should only produce warnings, not errors.\n */\n \"doc-invalid-identifier\": {\n severity: \"warning\",\n messages: {\n default: \"Invalid identifier.\",\n tag: \"Invalid tag name. Use backticks around code if this was not meant to be a tag.\",\n param: \"Invalid parameter name.\",\n templateParam: \"Invalid template parameter name.\",\n },\n },\n /**\n * Checker\n */\n \"using-invalid-ref\": {\n severity: \"error\",\n messages: {\n default: \"Using must refer to a namespace\",\n decorator: \"Can't use a decorator\",\n function: \"Can't use a function\",\n projection: \"Can't use a projection\",\n },\n },\n \"invalid-type-ref\": {\n severity: \"error\",\n messages: {\n default: \"Invalid type reference\",\n decorator: \"Can't put a decorator in a type\",\n function: \"Can't use a function as a type\",\n },\n },\n \"invalid-template-args\": {\n severity: \"error\",\n messages: {\n default: \"Invalid template arguments.\",\n notTemplate: \"Can't pass template arguments to non-templated type\",\n tooFew: \"Too few template arguments provided.\",\n tooMany: \"Too many template arguments provided.\",\n },\n },\n \"intersect-non-model\": {\n severity: \"error\",\n messages: {\n default: \"Cannot intersect non-model types (including union types).\",\n },\n },\n \"intersect-invalid-index\": {\n severity: \"error\",\n messages: {\n default: \"Cannot intersect incompatible models.\",\n never: \"Cannot intersect a model that cannot hold properties.\",\n array: \"Cannot intersect an array model.\",\n },\n },\n \"intersect-duplicate-property\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Intersection contains duplicate property definitions for ${\"propName\"}`,\n },\n },\n \"unknown-identifier\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Unknown identifier ${\"id\"}`,\n },\n },\n \"unknown-decorator\": {\n severity: \"error\",\n messages: {\n default: \"Unknown decorator\",\n },\n },\n \"invalid-decorator\": {\n severity: \"error\",\n messages: {\n default: paramMessage `${\"id\"} is not a decorator`,\n },\n },\n \"invalid-ref\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Cannot resolve ${\"id\"}`,\n inDecorator: paramMessage `Cannot resolve ${\"id\"} in decorator`,\n underNamespace: paramMessage `Namespace ${\"namespace\"} doesn't have member ${\"id\"}`,\n underContainer: paramMessage `${\"kind\"} doesn't have member ${\"id\"}`,\n node: paramMessage `Cannot resolve '${\"id\"}' in node ${\"nodeName\"} since it has no members. Did you mean to use \"::\" instead of \".\"?`,\n },\n },\n \"duplicate-property\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Model already has a property named ${\"propName\"}`,\n },\n },\n \"override-property-mismatch\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Model has an inherited property named ${\"propName\"} of type ${\"propType\"} which cannot override type ${\"parentType\"}`,\n },\n },\n \"extend-scalar\": {\n severity: \"error\",\n messages: {\n default: \"Scalar must extend other scalars.\",\n },\n },\n \"extend-model\": {\n severity: \"error\",\n messages: {\n default: \"Models must extend other models.\",\n modelExpression: \"Models cannot extend model expressions.\",\n },\n },\n \"is-model\": {\n severity: \"error\",\n messages: {\n default: \"Model `is` must specify another model.\",\n modelExpression: \"Model `is` cannot specify a model expression.\",\n },\n },\n \"is-operation\": {\n severity: \"error\",\n messages: {\n default: \"Operation can only reuse the signature of another operation.\",\n },\n },\n \"spread-model\": {\n severity: \"error\",\n messages: {\n default: \"Cannot spread properties of non-model type.\",\n neverIndex: \"Cannot spread type because it cannot hold properties.\",\n },\n },\n \"unsupported-default\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Default must be have a value type but has type '${\"type\"}'.`,\n },\n },\n unassignable: {\n severity: \"error\",\n messages: {\n default: paramMessage `Type '${\"value\"}' is not assignable to type '${\"targetType\"}'`,\n withDetails: paramMessage `Type '${\"sourceType\"}' is not assignable to type '${\"targetType\"}'\\n ${\"details\"}`,\n },\n },\n \"no-prop\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Property '${\"propName\"}' cannot be defined because model cannot hold properties.`,\n },\n },\n \"missing-index\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Index signature for type '${\"indexType\"}' is missing in type '${\"sourceType\"}'.`,\n },\n },\n \"missing-property\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Property '${\"propertyName\"}' is missing on type '${\"sourceType\"}' but required in '${\"targetType\"}'`,\n },\n },\n \"extends-interface\": {\n severity: \"error\",\n messages: {\n default: \"Interfaces can only extend other interfaces\",\n },\n },\n \"extends-interface-duplicate\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Interface extends cannot have duplicate members. The duplicate member is named ${\"name\"}`,\n },\n },\n \"interface-duplicate\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Interface already has a member named ${\"name\"}`,\n },\n },\n \"union-duplicate\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Union already has a variant named ${\"name\"}`,\n },\n },\n \"enum-member-duplicate\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Enum already has a member named ${\"name\"}`,\n },\n },\n \"spread-enum\": {\n severity: \"error\",\n messages: {\n default: \"Cannot spread members of non-enum type.\",\n },\n },\n \"decorator-fail\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Decorator ${\"decoratorName\"} failed!\\n\\n${\"error\"}`,\n },\n },\n \"rest-parameter-array\": {\n severity: \"error\",\n messages: {\n default: \"A rest parameter must be of an array type.\",\n },\n },\n \"decorator-extern\": {\n severity: \"error\",\n messages: {\n default: \"A decorator declaration must be prefixed with the 'extern' modifier.\",\n },\n },\n \"function-extern\": {\n severity: \"error\",\n messages: {\n default: \"A function declaration must be prefixed with the 'extern' modifier.\",\n },\n },\n \"missing-implementation\": {\n severity: \"error\",\n messages: {\n default: \"Extern declaration must have an implementation in JS file.\",\n },\n },\n \"overload-same-parent\": {\n severity: \"error\",\n messages: {\n default: `Overload must be in the same interface or namespace.`,\n },\n },\n shadow: {\n severity: \"warning\",\n messages: {\n default: paramMessage `Shadowing parent template parmaeter with the same name \"${\"name\"}\"`,\n },\n },\n /**\n * Configuration\n */\n \"config-invalid-argument\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Argument \"${\"name\"}\" is not defined as a parameter in the config.`,\n },\n },\n \"config-circular-variable\": {\n severity: \"error\",\n messages: {\n default: paramMessage `There is a circular reference to variable \"${\"name\"}\" in the cli configuration or arguments.`,\n },\n },\n \"config-path-absolute\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Path \"${\"path\"}\" cannot be relative. Use {cwd} or {project-root} to specify what the path should be relative to.`,\n },\n },\n \"config-path-not-found\": {\n severity: \"error\",\n messages: {\n default: paramMessage `No configuration file found at config path \"${\"path\"}\".`,\n },\n },\n /**\n * Program\n */\n \"dynamic-import\": {\n severity: \"error\",\n messages: {\n default: \"Dynamically generated TypeSpec cannot have imports\",\n },\n },\n \"invalid-import\": {\n severity: \"error\",\n messages: {\n default: \"Import paths must reference either a directory, a .tsp file, or .js file\",\n },\n },\n \"invalid-main\": {\n severity: \"error\",\n messages: {\n default: \"Main file must either be a .tsp file or a .js file.\",\n },\n },\n \"import-not-found\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Couldn't resolve import \"${\"path\"}\"`,\n },\n },\n \"library-invalid\": {\n severity: \"error\",\n messages: {\n tspMain: paramMessage `Library \"${\"path\"}\" has an invalid tspMain file.`,\n default: paramMessage `Library \"${\"path\"}\" has an invalid main file.`,\n },\n },\n \"incompatible-library\": {\n severity: \"warning\",\n messages: {\n default: paramMessage `Multiple versions of \"${\"name\"}\" library were loaded:\\n${\"versionMap\"}`,\n },\n },\n \"compiler-version-mismatch\": {\n severity: \"warning\",\n messages: {\n default: paramMessage `Current TypeSpec compiler conflicts with local version of @typespec/compiler referenced in ${\"basedir\"}. \\nIf this warning occurs on the command line, try running \\`typespec\\` with a working directory of ${\"basedir\"}. \\nIf this warning occurs in the IDE, try configuring the \\`tsp-server\\` path to ${\"betterTypeSpecServerPath\"}.\\n Expected: ${\"expected\"}\\n Resolved: ${\"actual\"}`,\n },\n },\n \"duplicate-symbol\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Duplicate name: \"${\"name\"}\"`,\n },\n },\n \"decorator-decl-target\": {\n severity: \"error\",\n messages: {\n default: \"dec must have at least one parameter.\",\n required: \"dec first parameter must be required.\",\n },\n },\n \"projections-are-experimental\": {\n severity: \"warning\",\n messages: {\n default: \"Projections are experimental - your code will need to change as this feature evolves.\",\n },\n },\n /**\n * Binder\n */\n \"ambiguous-symbol\": {\n severity: \"error\",\n messages: {\n default: paramMessage `\"${\"name\"}\" is an ambiguous name between ${\"duplicateNames\"}. Try using fully qualified name instead: ${\"duplicateNames\"}`,\n },\n },\n \"duplicate-using\": {\n severity: \"error\",\n messages: {\n default: paramMessage `duplicate using of \"${\"usingName\"}\" namespace`,\n },\n },\n /**\n * Library\n */\n \"on-validate-fail\": {\n severity: \"error\",\n messages: {\n default: paramMessage `onValidate failed with errors. ${\"error\"}`,\n },\n },\n \"invalid-emitter\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Requested emitter package ${\"emitterPackage\"} does not provide an \"onEmit\" function.`,\n },\n },\n \"missing-import\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Emitter '${\"emitterName\"}' requires '${\"requiredImport\"}' to be imported. Add 'import \"${\"requiredImport\"}\".`,\n },\n },\n /**\n * Decorator\n */\n \"decorator-wrong-target\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Cannot apply ${\"decorator\"} decorator to ${\"to\"}`,\n withExpected: paramMessage `Cannot apply ${\"decorator\"} decorator to ${\"to\"} since it is not assignable to ${\"expected\"}`,\n },\n },\n \"invalid-argument\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Argument '${\"value\"}' is not assignable to parameter of type '${\"expected\"}'`,\n },\n },\n \"invalid-argument-count\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Expected ${\"expected\"} arguments, but got ${\"actual\"}.`,\n atLeast: paramMessage `Expected at least ${\"expected\"} arguments, but got ${\"actual\"}.`,\n },\n },\n \"known-values-invalid-enum\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Enum cannot be used on this type. Member ${\"member\"} is not assignable to type ${\"type\"}.`,\n },\n },\n \"invalid-value\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Type '${\"kind\"}' is not a value type.`,\n atPath: paramMessage `Type '${\"kind\"}' of '${\"path\"}' is not a value type.`,\n },\n },\n deprecated: {\n severity: \"warning\",\n messages: {\n default: paramMessage `Deprecated: ${\"message\"}`,\n },\n },\n \"no-optional-key\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Property '${\"propertyName\"}' marked as key cannot be optional.`,\n },\n },\n \"invalid-discriminated-union\": {\n severity: \"error\",\n messages: {\n default: \"\",\n noAnonVariants: \"Unions with anonymous variants cannot be discriminated\",\n },\n },\n \"invalid-discriminated-union-variant\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Union variant \"${\"name\"}\" must be a model type.`,\n noDiscriminant: paramMessage `Variant \"${\"name\"}\" type is missing the discriminant property \"${\"discriminant\"}\".`,\n wrongDiscriminantType: paramMessage `Variant \"${\"name\"}\" type's discriminant property \"${\"discriminant\"}\" must be a string literal or string enum member.`,\n },\n },\n \"missing-discriminator-property\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Each derived model of a discriminated model type should have set the discriminator property(\"${\"discriminator\"}\") or have a derived model which has. Add \\`${\"discriminator\"}: \"<discriminator-value>\"\\``,\n },\n },\n \"invalid-discriminator-value\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Discriminator value should be a string, union of string or string enum but was ${\"kind\"}.`,\n required: \"The discriminator property must be a required property.\",\n duplicate: paramMessage `Discriminator value \"${\"discriminator\"}\" is already used in another variant.`,\n },\n },\n \"invalid-encode\": {\n severity: \"error\",\n messages: {\n default: \"Invalid encoding\",\n wrongType: paramMessage `Encoding '${\"encoding\"}' cannot be used on type '${\"type\"}'. Expected: ${\"expected\"}.`,\n wrongEncodingType: paramMessage `Encoding '${\"encoding\"}' on type '${\"type\"}' is expected to be serialized as '${\"expected\"}' but got '${\"actual\"}'.`,\n },\n },\n /**\n * Service\n */\n \"service-decorator-duplicate\": {\n severity: \"error\",\n messages: {\n default: `@service can only be set once per TypeSpec document.`,\n },\n },\n \"list-type-not-model\": {\n severity: \"error\",\n messages: {\n default: \"@list decorator's parameter must be a model type.\",\n },\n },\n \"invalid-range\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Range \"${\"start\"}..${\"end\"}\" is invalid.`,\n },\n },\n /**\n * Mutator\n */\n \"add-response\": {\n severity: \"error\",\n messages: {\n default: \"Cannot add a response to anything except an operation statement.\",\n },\n },\n \"add-parameter\": {\n severity: \"error\",\n messages: {\n default: \"Cannot add a parameter to anything except an operation statement.\",\n },\n },\n \"add-model-property\": {\n severity: \"error\",\n messages: {\n default: \"Cannot add a model property to anything except a model statement.\",\n },\n },\n \"add-model-property-fail\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Could not add property/parameter \"${\"propertyName\"}\" of type \"${\"propertyTypeName\"}\"`,\n },\n },\n \"add-response-type\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Could not add response type \"${\"responseTypeName\"}\" to operation ${\"operationName\"}\"`,\n },\n },\n \"circular-base-type\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Type '${\"typeName\"}' recursively references itself as a base type.`,\n },\n },\n \"circular-op-signature\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Operation '${\"typeName\"}' recursively references itself.`,\n },\n },\n \"circular-alias-type\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Alias type '${\"typeName\"}' recursively references itself.`,\n },\n },\n \"conflict-marker\": {\n severity: \"error\",\n messages: {\n default: \"Conflict marker encountered.\",\n },\n },\n};\nexport const { createDiagnostic, reportDiagnostic } = createDiagnosticCreator(diagnostics);\n//# sourceMappingURL=messages.js.map","import { formatLog } from \"./logger/index.js\";\nimport { reportDiagnostic } from \"./messages.js\";\nimport { NoTarget, SyntaxKind, } from \"./types.js\";\n/**\n * Create a new diagnostics creator.\n * @param diagnostics Map of the potential diagnostics.\n * @param libraryName Optional name of the library if in the scope of a library.\n * @returns @see DiagnosticCreator\n */\nexport function createDiagnosticCreator(diagnostics, libraryName) {\n const errorMessage = libraryName\n ? `It must match one of the code defined in the library '${libraryName}'`\n : \"It must match one of the code defined in the compiler.\";\n function createDiagnostic(diagnostic) {\n var _a;\n const diagnosticDef = diagnostics[diagnostic.code];\n if (!diagnosticDef) {\n const codeStr = Object.keys(diagnostics)\n .map((x) => ` - ${x}`)\n .join(\"\\n\");\n const code = String(diagnostic.code);\n throw new Error(`Unexpected diagnostic code '${code}'. ${errorMessage}. Defined codes:\\n${codeStr}`);\n }\n const message = diagnosticDef.messages[(_a = diagnostic.messageId) !== null && _a !== void 0 ? _a : \"default\"];\n if (!message) {\n const codeStr = Object.keys(diagnosticDef.messages)\n .map((x) => ` - ${x}`)\n .join(\"\\n\");\n const messageId = String(diagnostic.messageId);\n const code = String(diagnostic.code);\n throw new Error(`Unexpected message id '${messageId}'. ${errorMessage} for code '${code}'. Defined codes:\\n${codeStr}`);\n }\n const messageStr = typeof message === \"string\" ? message : message(diagnostic.format);\n return {\n code: libraryName ? `${libraryName}/${String(diagnostic.code)}` : diagnostic.code.toString(),\n severity: diagnosticDef.severity,\n message: messageStr,\n target: diagnostic.target,\n };\n }\n function reportDiagnostic(program, diagnostic) {\n const diag = createDiagnostic(diagnostic);\n program.reportDiagnostic(diag);\n }\n return {\n diagnostics,\n createDiagnostic,\n reportDiagnostic,\n };\n}\n/**\n * Represents a failure while interpreting a projection.\n */\nexport class ProjectionError extends Error {\n constructor(message) {\n super(message);\n this.name = \"ProjectionError\";\n }\n}\nexport function logDiagnostics(diagnostics, logger) {\n for (const diagnostic of diagnostics) {\n logger.log({\n level: diagnostic.severity,\n message: diagnostic.message,\n code: diagnostic.code,\n sourceLocation: getSourceLocation(diagnostic.target),\n });\n }\n}\nexport function formatDiagnostic(diagnostic) {\n return formatLog({\n code: diagnostic.code,\n level: diagnostic.severity,\n message: diagnostic.message,\n sourceLocation: getSourceLocation(diagnostic.target),\n }, { pretty: false });\n}\nexport function createSourceFile(text, path) {\n let lineStarts = undefined;\n return {\n text,\n path,\n getLineStarts,\n getLineAndCharacterOfPosition,\n };\n function getLineStarts() {\n return (lineStarts = lineStarts !== null && lineStarts !== void 0 ? lineStarts : scanLineStarts(text));\n }\n function getLineAndCharacterOfPosition(position) {\n const starts = getLineStarts();\n let line = binarySearch(starts, position);\n // When binarySearch returns < 0 indicating that the value was not found, it\n // returns the bitwise complement of the index where the value would need to\n // be inserted to keep the array sorted. So flipping the bits back to this\n // positive index tells us what the line number would be if we were to\n // create a new line starting at the given position, and subtracting 1 from\n // that therefore gives us the line number we're after.\n if (line < 0) {\n line = ~line - 1;\n }\n return {\n line,\n character: position - starts[line],\n };\n }\n}\nexport function getSourceLocation(target) {\n if (target === NoTarget || target === undefined) {\n return undefined;\n }\n if (\"file\" in target) {\n return target;\n }\n if (!(\"kind\" in target)) {\n // symbol\n if (target.flags & 524288 /* SymbolFlags.Using */) {\n target = target.symbolSource;\n }\n if (!target.declarations[0]) {\n return createSyntheticSourceLocation();\n }\n return getSourceLocationOfNode(target.declarations[0]);\n }\n else if (typeof target.kind === \"number\") {\n // node\n return getSourceLocationOfNode(target);\n }\n else {\n // type\n const targetNode = target.node;\n if (targetNode) {\n return getSourceLocationOfNode(targetNode);\n }\n return createSyntheticSourceLocation();\n }\n}\nfunction createSyntheticSourceLocation(loc = \"<unknown location>\") {\n return {\n file: createSourceFile(\"\", loc),\n pos: 0,\n end: 0,\n isSynthetic: true,\n };\n}\nfunction getSourceLocationOfNode(node) {\n let root = node;\n while (root.parent !== undefined) {\n root = root.parent;\n }\n if (root.kind !== SyntaxKind.TypeSpecScript && root.kind !== SyntaxKind.JsSourceFile) {\n return createSyntheticSourceLocation(node.flags & 8 /* NodeFlags.Synthetic */\n ? undefined\n : \"<unknown location - cannot obtain source location of unbound node - file bug at https://github.com/microsoft/typespec>\");\n }\n return {\n file: root.file,\n pos: node.pos,\n end: node.end,\n };\n}\n/**\n * Verbose output is enabled by default for runs in mocha explorer in VS Code,\n * where the output is nicely associated with the individual test, and disabled\n * by default for command line runs where we don't want to spam the console.\n *\n * If the steps taken to produce the message are expensive, pass a callback\n * instead of producing the message then passing it here only to be dropped\n * when verbose output is disabled.\n */\nexport function logVerboseTestOutput(messageOrCallback) {\n if (process.env.TYPESPEC_VERBOSE_TEST_OUTPUT) {\n if (typeof messageOrCallback === \"string\") {\n // eslint-disable-next-line no-console\n console.log(messageOrCallback);\n }\n else {\n // eslint-disable-next-line no-console\n messageOrCallback(console.log);\n }\n }\n}\n/**\n * Use this to report bugs in the compiler, and not errors in the source code\n * being compiled.\n *\n * @param condition Throw if this is not true.\n *\n * @param message Error message.\n *\n * @param target Optional location in source code that might give a clue about\n * what got the compiler off track.\n */\nexport function compilerAssert(condition, message, target) {\n if (condition) {\n return;\n }\n if (target) {\n let location;\n try {\n location = getSourceLocation(target);\n }\n catch (err) { }\n if (location) {\n const pos = location.file.getLineAndCharacterOfPosition(location.pos);\n const file = location.file.path;\n const line = pos.line + 1;\n const col = pos.character + 1;\n message += `\\nOccurred while compiling code in ${file} near line ${line}, column ${col}`;\n }\n }\n throw new Error(message);\n}\nfunction scanLineStarts(text) {\n const starts = [];\n let start = 0;\n let pos = 0;\n while (pos < text.length) {\n const ch = text.charCodeAt(pos);\n pos++;\n switch (ch) {\n case 13 /* CharCode.CarriageReturn */:\n if (text.charCodeAt(pos) === 10 /* CharCode.LineFeed */) {\n pos++;\n }\n // fallthrough\n case 10 /* CharCode.LineFeed */:\n starts.push(start);\n start = pos;\n break;\n }\n }\n starts.push(start);\n return starts;\n}\n/**\n * Search sorted array of numbers for the given value. If found, return index\n * in array where value was found. If not found, return a negative number that\n * is the bitwise complement of the index where value would need to be inserted\n * to keep the array sorted.\n */\nfunction binarySearch(array, value) {\n let low = 0;\n let high = array.length - 1;\n while (low <= high) {\n const middle = low + ((high - low) >> 1);\n const v = array[middle];\n if (v < value) {\n low = middle + 1;\n }\n else if (v > value) {\n high = middle - 1;\n }\n else {\n return middle;\n }\n }\n return ~low;\n}\n/**\n * Assert that the input type has one of the kinds provided\n */\nexport function assertType(typeDescription, t, ...kinds) {\n if (kinds.indexOf(t.kind) === -1) {\n throw new ProjectionError(`Expected ${typeDescription} to be type ${kinds.join(\", \")}`);\n }\n}\n/**\n * Report a deprecated diagnostic.\n * @param program TypeSpec Program.\n * @param message Message describing the deprecation.\n * @param target Target of the deprecation.\n */\nexport function reportDeprecated(program, message, target) {\n reportDiagnostic(program, {\n code: \"deprecated\",\n format: {\n message,\n },\n target,\n });\n}\n/**\n * Create a new instance of the @see DiagnosticCollector.\n */\nexport function createDiagnosticCollector() {\n const diagnostics = [];\n return {\n diagnostics,\n add,\n pipe,\n wrap,\n };\n function add(diagnostic) {\n diagnostics.push(diagnostic);\n }\n function pipe(result) {\n const [value, diags] = result;\n for (const diag of diags) {\n diagnostics.push(diag);\n }\n return value;\n }\n function wrap(value) {\n return [value, diagnostics];\n }\n}\n/**\n * Ignore the diagnostics emitted by the diagnostic accessor pattern and just return the actual result.\n * @param result: Accessor pattern tuple result including the actual result and the list of diagnostics.\n * @returns Actual result.\n */\nexport function ignoreDiagnostics(result) {\n return result[0];\n}\n//# sourceMappingURL=diagnostics.js.map","import { isAsciiIdentifierContinue, isAsciiIdentifierStart, isBinaryDigit, isDigit, isHexDigit, isIdentifierContinue, isIdentifierStart, isLineBreak, isLowercaseAsciiLetter, isNonAsciiIdentifierCharacter, isNonAsciiWhiteSpaceSingleLine, isWhiteSpace, isWhiteSpaceSingleLine, utf16CodeUnits, } from \"./charcode.js\";\nimport { compilerAssert, createSourceFile } from \"./diagnostics.js\";\nimport { createDiagnostic } from \"./messages.js\";\n// All conflict markers consist of the same character repeated seven times. If it is\n// a <<<<<<< or >>>>>>> marker then it is also followed by a space.\nconst mergeConflictMarkerLength = 7;\nexport var Token;\n(function (Token) {\n Token[Token[\"None\"] = 0] = \"None\";\n Token[Token[\"Invalid\"] = 1] = \"Invalid\";\n Token[Token[\"EndOfFile\"] = 2] = \"EndOfFile\";\n Token[Token[\"Identifier\"] = 3] = \"Identifier\";\n Token[Token[\"NumericLiteral\"] = 4] = \"NumericLiteral\";\n Token[Token[\"StringLiteral\"] = 5] = \"StringLiteral\";\n // Add new tokens above if they don't fit any of the categories below\n ///////////////////////////////////////////////////////////////\n // Trivia\n /**@internal */ Token[Token[\"__StartTrivia\"] = 6] = \"__StartTrivia\";\n Token[Token[\"SingleLineComment\"] = 6] = \"SingleLineComment\";\n Token[Token[\"MultiLineComment\"] = 7] = \"MultiLineComment\";\n Token[Token[\"NewLine\"] = 8] = \"NewLine\";\n Token[Token[\"Whitespace\"] = 9] = \"Whitespace\";\n Token[Token[\"ConflictMarker\"] = 10] = \"ConflictMarker\";\n // Add new trivia above\n /** @internal */ Token[Token[\"__EndTrivia\"] = 11] = \"__EndTrivia\";\n ///////////////////////////////////////////////////////////////\n ///////////////////////////////////////////////////////////////\n // Doc comment content\n /** @internal */ Token[Token[\"__StartDocComment\"] = 11] = \"__StartDocComment\";\n Token[Token[\"DocText\"] = 11] = \"DocText\";\n Token[Token[\"DocCodeSpan\"] = 12] = \"DocCodeSpan\";\n Token[Token[\"DocCodeFenceDelimiter\"] = 13] = \"DocCodeFenceDelimiter\";\n /** @internal */ Token[Token[\"__EndDocComment\"] = 14] = \"__EndDocComment\";\n ///////////////////////////////////////////////////////////////\n ///////////////////////////////////////////////////////////////\n // Punctuation\n /** @internal */ Token[Token[\"__StartPunctuation\"] = 14] = \"__StartPunctuation\";\n Token[Token[\"OpenBrace\"] = 14] = \"OpenBrace\";\n Token[Token[\"CloseBrace\"] = 15] = \"CloseBrace\";\n Token[Token[\"OpenParen\"] = 16] = \"OpenParen\";\n Token[Token[\"CloseParen\"] = 17] = \"CloseParen\";\n Token[Token[\"OpenBracket\"] = 18] = \"OpenBracket\";\n Token[Token[\"CloseBracket\"] = 19] = \"CloseBracket\";\n Token[Token[\"Dot\"] = 20] = \"Dot\";\n Token[Token[\"Ellipsis\"] = 21] = \"Ellipsis\";\n Token[Token[\"Semicolon\"] = 22] = \"Semicolon\";\n Token[Token[\"Comma\"] = 23] = \"Comma\";\n Token[Token[\"LessThan\"] = 24] = \"LessThan\";\n Token[Token[\"GreaterThan\"] = 25] = \"GreaterThan\";\n Token[Token[\"Equals\"] = 26] = \"Equals\";\n Token[Token[\"Ampersand\"] = 27] = \"Ampersand\";\n Token[Token[\"Bar\"] = 28] = \"Bar\";\n Token[Token[\"Question\"] = 29] = \"Question\";\n Token[Token[\"Colon\"] = 30] = \"Colon\";\n Token[Token[\"ColonColon\"] = 31] = \"ColonColon\";\n Token[Token[\"At\"] = 32] = \"At\";\n Token[Token[\"AtAt\"] = 33] = \"AtAt\";\n Token[Token[\"Hash\"] = 34] = \"Hash\";\n Token[Token[\"Star\"] = 35] = \"Star\";\n Token[Token[\"ForwardSlash\"] = 36] = \"ForwardSlash\";\n Token[Token[\"Plus\"] = 37] = \"Plus\";\n Token[Token[\"Hyphen\"] = 38] = \"Hyphen\";\n Token[Token[\"Exclamation\"] = 39] = \"Exclamation\";\n Token[Token[\"LessThanEquals\"] = 40] = \"LessThanEquals\";\n Token[Token[\"GreaterThanEquals\"] = 41] = \"GreaterThanEquals\";\n Token[Token[\"AmpsersandAmpersand\"] = 42] = \"AmpsersandAmpersand\";\n Token[Token[\"BarBar\"] = 43] = \"BarBar\";\n Token[Token[\"EqualsEquals\"] = 44] = \"EqualsEquals\";\n Token[Token[\"ExclamationEquals\"] = 45] = \"ExclamationEquals\";\n Token[Token[\"EqualsGreaterThan\"] = 46] = \"EqualsGreaterThan\";\n // Add new punctuation above\n /** @internal */ Token[Token[\"__EndPunctuation\"] = 47] = \"__EndPunctuation\";\n ///////////////////////////////////////////////////////////////\n ///////////////////////////////////////////////////////////////\n // Statement keywords\n /** @internal */ Token[Token[\"__StartKeyword\"] = 47] = \"__StartKeyword\";\n /** @internal */ Token[Token[\"__StartStatementKeyword\"] = 47] = \"__StartStatementKeyword\";\n Token[Token[\"ImportKeyword\"] = 47] = \"ImportKeyword\";\n Token[Token[\"ModelKeyword\"] = 48] = \"ModelKeyword\";\n Token[Token[\"ScalarKeyword\"] = 49] = \"ScalarKeyword\";\n Token[Token[\"NamespaceKeyword\"] = 50] = \"NamespaceKeyword\";\n Token[Token[\"UsingKeyword\"] = 51] = \"UsingKeyword\";\n Token[Token[\"OpKeyword\"] = 52] = \"OpKeyword\";\n Token[Token[\"EnumKeyword\"] = 53] = \"EnumKeyword\";\n Token[Token[\"AliasKeyword\"] = 54] = \"AliasKeyword\";\n Token[Token[\"IsKeyword\"] = 55] = \"IsKeyword\";\n Token[Token[\"InterfaceKeyword\"] = 56] = \"InterfaceKeyword\";\n Token[Token[\"UnionKeyword\"] = 57] = \"UnionKeyword\";\n Token[Token[\"ProjectionKeyword\"] = 58] = \"ProjectionKeyword\";\n Token[Token[\"ElseKeyword\"] = 59] = \"ElseKeyword\";\n Token[Token[\"IfKeyword\"] = 60] = \"IfKeyword\";\n Token[Token[\"DecKeyword\"] = 61] = \"DecKeyword\";\n Token[Token[\"FnKeyword\"] = 62] = \"FnKeyword\";\n Token[Token[\"ValueOfKeyword\"] = 63] = \"ValueOfKeyword\";\n // Add new statement keyword above\n /** @internal */ Token[Token[\"__EndStatementKeyword\"] = 64] = \"__EndStatementKeyword\";\n ///////////////////////////////////////////////////////////////\n ///////////////////////////////////////////////////////////////\n /** @internal */ Token[Token[\"__StartModifierKeyword\"] = 64] = \"__StartModifierKeyword\";\n Token[Token[\"ExternKeyword\"] = 64] = \"ExternKeyword\";\n /** @internal */ Token[Token[\"__EndModifierKeyword\"] = 65] = \"__EndModifierKeyword\";\n ///////////////////////////////////////////////////////////////\n ///////////////////////////////////////////////////////////////\n // Other keywords\n Token[Token[\"ExtendsKeyword\"] = 65] = \"ExtendsKeyword\";\n Token[Token[\"TrueKeyword\"] = 66] = \"TrueKeyword\";\n Token[Token[\"FalseKeyword\"] = 67] = \"FalseKeyword\";\n Token[Token[\"ReturnKeyword\"] = 68] = \"ReturnKeyword\";\n Token[Token[\"VoidKeyword\"] = 69] = \"VoidKeyword\";\n Token[Token[\"NeverKeyword\"] = 70] = \"NeverKeyword\";\n Token[Token[\"UnknownKeyword\"] = 71] = \"UnknownKeyword\";\n // Add new non-statement keyword above\n /** @internal */ Token[Token[\"__EndKeyword\"] = 72] = \"__EndKeyword\";\n ///////////////////////////////////////////////////////////////\n /** @internal */ Token[Token[\"__Count\"] = 72] = \"__Count\";\n})(Token || (Token = {}));\n/** @internal */\nexport const TokenDisplay = getTokenDisplayTable([\n [Token.None, \"none\"],\n [Token.Invalid, \"invalid\"],\n [Token.EndOfFile, \"end of file\"],\n [Token.SingleLineComment, \"single-line comment\"],\n [Token.MultiLineComment, \"multi-line comment\"],\n [Token.ConflictMarker, \"conflict marker\"],\n [Token.NumericLiteral, \"numeric literal\"],\n [Token.StringLiteral, \"string literal\"],\n [Token.NewLine, \"newline\"],\n [Token.Whitespace, \"whitespace\"],\n [Token.DocCodeFenceDelimiter, \"doc code fence delimiter\"],\n [Token.DocCodeSpan, \"doc code span\"],\n [Token.DocText, \"doc text\"],\n [Token.OpenBrace, \"'{'\"],\n [Token.CloseBrace, \"'}'\"],\n [Token.OpenParen, \"'('\"],\n [Token.CloseParen, \"')'\"],\n [Token.OpenBracket, \"'['\"],\n [Token.CloseBracket, \"']'\"],\n [Token.Dot, \"'.'\"],\n [Token.Ellipsis, \"'...'\"],\n [Token.Semicolon, \"';'\"],\n [Token.Comma, \"','\"],\n [Token.LessThan, \"'<'\"],\n [Token.GreaterThan, \"'>'\"],\n [Token.Equals, \"'='\"],\n [Token.Ampersand, \"'&'\"],\n [Token.Bar, \"'|'\"],\n [Token.Question, \"'?'\"],\n [Token.Colon, \"':'\"],\n [Token.ColonColon, \"'::'\"],\n [Token.At, \"'@'\"],\n [Token.AtAt, \"'@@'\"],\n [Token.Hash, \"'#'\"],\n [Token.Star, \"'*'\"],\n [Token.ForwardSlash, \"'/'\"],\n [Token.Plus, \"'+'\"],\n [Token.Hyphen, \"'-'\"],\n [Token.Exclamation, \"'!'\"],\n [Token.LessThanEquals, \"'<='\"],\n [Token.GreaterThanEquals, \"'>='\"],\n [Token.AmpsersandAmpersand, \"'&&'\"],\n [Token.BarBar, \"'||'\"],\n [Token.EqualsEquals, \"'=='\"],\n [Token.ExclamationEquals, \"'!='\"],\n [Token.EqualsGreaterThan, \"'=>'\"],\n [Token.Identifier, \"identifier\"],\n [Token.ImportKeyword, \"'import'\"],\n [Token.ModelKeyword, \"'model'\"],\n [Token.ScalarKeyword, \"'scalar'\"],\n [Token.NamespaceKeyword, \"'namespace'\"],\n [Token.UsingKeyword, \"'using'\"],\n [Token.OpKeyword, \"'op'\"],\n [Token.EnumKeyword, \"'enum'\"],\n [Token.AliasKeyword, \"'alias'\"],\n [Token.IsKeyword, \"'is'\"],\n [Token.InterfaceKeyword, \"'interface'\"],\n [Token.UnionKeyword, \"'union'\"],\n [Token.ProjectionKeyword, \"'projection'\"],\n [Token.ElseKeyword, \"'else'\"],\n [Token.IfKeyword, \"'if'\"],\n [Token.DecKeyword, \"'dec'\"],\n [Token.FnKeyword, \"'fn'\"],\n [Token.ValueOfKeyword, \"'valueof'\"],\n [Token.ExtendsKeyword, \"'extends'\"],\n [Token.TrueKeyword, \"'true'\"],\n [Token.FalseKeyword, \"'false'\"],\n [Token.ReturnKeyword, \"'return'\"],\n [Token.VoidKeyword, \"'void'\"],\n [Token.NeverKeyword, \"'never'\"],\n [Token.UnknownKeyword, \"'unknown'\"],\n [Token.ExternKeyword, \"'extern'\"],\n]);\n/** @internal */\nexport const Keywords = new Map([\n [\"import\", Token.ImportKeyword],\n [\"model\", Token.ModelKeyword],\n [\"scalar\", Token.ScalarKeyword],\n [\"namespace\", Token.NamespaceKeyword],\n [\"interface\", Token.InterfaceKeyword],\n [\"union\", Token.UnionKeyword],\n [\"if\", Token.IfKeyword],\n [\"else\", Token.ElseKeyword],\n [\"projection\", Token.ProjectionKeyword],\n [\"using\", Token.UsingKeyword],\n [\"op\", Token.OpKeyword],\n [\"extends\", Token.ExtendsKeyword],\n [\"is\", Token.IsKeyword],\n [\"enum\", Token.EnumKeyword],\n [\"alias\", Token.AliasKeyword],\n [\"dec\", Token.DecKeyword],\n [\"fn\", Token.FnKeyword],\n [\"valueof\", Token.ValueOfKeyword],\n [\"true\", Token.TrueKeyword],\n [\"false\", Token.FalseKeyword],\n [\"return\", Token.ReturnKeyword],\n [\"void\", Token.VoidKeyword],\n [\"never\", Token.NeverKeyword],\n [\"unknown\", Token.UnknownKeyword],\n [\"extern\", Token.ExternKeyword],\n]);\nexport var TokenFlags;\n(function (TokenFlags) {\n TokenFlags[TokenFlags[\"None\"] = 0] = \"None\";\n TokenFlags[TokenFlags[\"Escaped\"] = 1] = \"Escaped\";\n TokenFlags[TokenFlags[\"TripleQuoted\"] = 2] = \"TripleQuoted\";\n TokenFlags[TokenFlags[\"Unterminated\"] = 4] = \"Unterminated\";\n TokenFlags[TokenFlags[\"NonAscii\"] = 8] = \"NonAscii\";\n TokenFlags[TokenFlags[\"DocComment\"] = 16] = \"DocComment\";\n TokenFlags[TokenFlags[\"Backticked\"] = 32] = \"Backticked\";\n})(TokenFlags || (TokenFlags = {}));\nexport function isTrivia(token) {\n return token >= Token.__StartTrivia && token < Token.__EndTrivia;\n}\nexport function isComment(token) {\n return token === Token.SingleLineComment || token === Token.MultiLineComment;\n}\nexport function isKeyword(token) {\n return token >= Token.__StartKeyword && token < Token.__EndKeyword;\n}\nexport function isPunctuation(token) {\n return token >= Token.__StartPunctuation && token < Token.__EndPunctuation;\n}\nexport function isModifier(token) {\n return token >= Token.__StartModifierKeyword && token < Token.__EndModifierKeyword;\n}\nexport function isStatementKeyword(token) {\n return token >= Token.__StartStatementKeyword && token < Token.__EndStatementKeyword;\n}\nexport function createScanner(source, diagnosticHandler) {\n const file = typeof source === \"string\" ? createSourceFile(source, \"<anonymous file>\") : source;\n const input = file.text;\n let position = 0;\n let endPosition = input.length;\n let token = Token.None;\n let tokenPosition = -1;\n let tokenFlags = TokenFlags.None;\n // Skip BOM\n if (position < endPosition && input.charCodeAt(position) === 65279 /* CharCode.ByteOrderMark */) {\n position++;\n }\n return {\n get position() {\n return position;\n },\n get token() {\n return token;\n },\n get tokenPosition() {\n return tokenPosition;\n },\n get tokenFlags() {\n return tokenFlags;\n },\n file,\n scan,\n scanRange,\n scanDoc,\n eof,\n getTokenText,\n getTokenValue,\n };\n function eof() {\n return position >= endPosition;\n }\n function getTokenText() {\n return input.substring(tokenPosition, position);\n }\n function getTokenValue() {\n switch (token) {\n case Token.StringLiteral:\n return getStringTokenValue();\n case Token.Identifier:\n return getIdentifierTokenValue();\n default:\n return getTokenText();\n }\n }\n function lookAhead(offset) {\n const p = position + offset;\n if (p >= endPosition) {\n return Number.NaN;\n }\n return input.charCodeAt(p);\n }\n function scan() {\n tokenPosition = position;\n tokenFlags = TokenFlags.None;\n if (!eof()) {\n const ch = input.charCodeAt(position);\n switch (ch) {\n case 13 /* CharCode.CarriageReturn */:\n if (lookAhead(1) === 10 /* CharCode.LineFeed */) {\n position++;\n }\n // fallthrough\n case 10 /* CharCode.LineFeed */:\n return next(Token.NewLine);\n case 32 /* CharCode.Space */:\n case 9 /* CharCode.Tab */:\n case 11 /* CharCode.VerticalTab */:\n case 12 /* CharCode.FormFeed */:\n return scanWhitespace();\n case 40 /* CharCode.OpenParen */:\n return next(Token.OpenParen);\n case 41 /* CharCode.CloseParen */:\n return next(Token.CloseParen);\n case 44 /* CharCode.Comma */:\n return next(Token.Comma);\n case 58 /* CharCode.Colon */:\n return lookAhead(1) === 58 /* CharCode.Colon */ ? next(Token.ColonColon, 2) : next(Token.Colon);\n case 59 /* CharCode.Semicolon */:\n return next(Token.Semicolon);\n case 91 /* CharCode.OpenBracket */:\n return next(Token.OpenBracket);\n case 93 /* CharCode.CloseBracket */:\n return next(Token.CloseBracket);\n case 123 /* CharCode.OpenBrace */:\n return next(Token.OpenBrace);\n case 125 /* CharCode.CloseBrace */:\n return next(Token.CloseBrace);\n case 64 /* CharCode.At */:\n return lookAhead(1) === 64 /* CharCode.At */ ? next(Token.AtAt, 2) : next(Token.At);\n case 35 /* CharCode.Hash */:\n return next(Token.Hash);\n case 43 /* CharCode.Plus */:\n return isDigit(lookAhead(1)) ? scanSignedNumber() : next(Token.Plus);\n case 45 /* CharCode.Minus */:\n return isDigit(lookAhead(1)) ? scanSignedNumber() : next(Token.Hyphen);\n case 42 /* CharCode.Asterisk */:\n return next(Token.Star);\n case 63 /* CharCode.Question */:\n return next(Token.Question);\n case 38 /* CharCode.Ampersand */:\n return lookAhead(1) === 38 /* CharCode.Ampersand */\n ? next(Token.AmpsersandAmpersand, 2)\n : next(Token.Ampersand);\n case 46 /* CharCode.Dot */:\n return lookAhead(1) === 46 /* CharCode.Dot */ && lookAhead(2) === 46 /* CharCode.Dot */\n ? next(Token.Ellipsis, 3)\n : next(Token.Dot);\n case 47 /* CharCode.Slash */:\n switch (lookAhead(1)) {\n case 47 /* CharCode.Slash */:\n return scanSingleLineComment();\n case 42 /* CharCode.Asterisk */:\n return scanMultiLineComment();\n }\n return next(Token.ForwardSlash);\n case 48 /* CharCode._0 */:\n switch (lookAhead(1)) {\n case 120 /* CharCode.x */:\n return scanHexNumber();\n case 98 /* CharCode.b */:\n return scanBinaryNumber();\n }\n // fallthrough\n case 49 /* CharCode._1 */:\n case 50 /* CharCode._2 */:\n case 51 /* CharCode._3 */:\n case 52 /* CharCode._4 */:\n case 53 /* CharCode._5 */:\n case 54 /* CharCode._6 */:\n case 55 /* CharCode._7 */:\n case 56 /* CharCode._8 */:\n case 57 /* CharCode._9 */:\n return scanNumber();\n case 60 /* CharCode.LessThan */:\n if (atConflictMarker())\n return scanConflictMarker();\n return lookAhead(1) === 61 /* CharCode.Equals */\n ? next(Token.LessThanEquals, 2)\n : next(Token.LessThan);\n case 62 /* CharCode.GreaterThan */:\n if (atConflictMarker())\n return scanConflictMarker();\n return lookAhead(1) === 61 /* CharCode.Equals */\n ? next(Token.GreaterThanEquals, 2)\n : next(Token.GreaterThan);\n case 61 /* CharCode.Equals */:\n if (atConflictMarker())\n return scanConflictMarker();\n switch (lookAhead(1)) {\n case 61 /* CharCode.Equals */:\n return next(Token.EqualsEquals, 2);\n case 62 /* CharCode.GreaterThan */:\n return next(Token.EqualsGreaterThan, 2);\n }\n return next(Token.Equals);\n case 124 /* CharCode.Bar */:\n if (atConflictMarker())\n return scanConflictMarker();\n return lookAhead(1) === 124 /* CharCode.Bar */ ? next(Token.BarBar, 2) : next(Token.Bar);\n case 34 /* CharCode.DoubleQuote */:\n return lookAhead(1) === 34 /* CharCode.DoubleQuote */ && lookAhead(2) === 34 /* CharCode.DoubleQuote */\n ? scanTripleQuotedString()\n : scanString();\n case 33 /* CharCode.Exclamation */:\n return lookAhead(1) === 61 /* CharCode.Equals */\n ? next(Token.ExclamationEquals, 2)\n : next(Token.Exclamation);\n case 96 /* CharCode.Backtick */:\n return scanBacktickedIdentifier();\n default:\n if (isLowercaseAsciiLetter(ch)) {\n return scanIdentifierOrKeyword();\n }\n if (isAsciiIdentifierStart(ch)) {\n return scanIdentifier();\n }\n if (ch <= 127 /* CharCode.MaxAscii */) {\n return scanInvalidCharacter();\n }\n return scanNonAsciiToken();\n }\n }\n return (token = Token.EndOfFile);\n }\n function scanDoc() {\n tokenPosition = position;\n tokenFlags = TokenFlags.None;\n if (!eof()) {\n const ch = input.charCodeAt(position);\n switch (ch) {\n case 13 /* CharCode.CarriageReturn */:\n if (lookAhead(1) === 10 /* CharCode.LineFeed */) {\n position++;\n }\n // fallthrough\n case 10 /* CharCode.LineFeed */:\n return next(Token.NewLine);\n case 32 /* CharCode.Space */:\n case 9 /* CharCode.Tab */:\n case 11 /* CharCode.VerticalTab */:\n case 12 /* CharCode.FormFeed */:\n return scanWhitespace();\n case 125 /* CharCode.CloseBrace */:\n return next(Token.CloseBrace);\n case 64 /* CharCode.At */:\n return next(Token.At);\n case 42 /* CharCode.Asterisk */:\n return next(Token.Star);\n case 96 /* CharCode.Backtick */:\n return lookAhead(1) === 96 /* CharCode.Backtick */ && lookAhead(2) === 96 /* CharCode.Backtick */\n ? next(Token.DocCodeFenceDelimiter, 3)\n : scanDocCodeSpan();\n case 60 /* CharCode.LessThan */:\n case 62 /* CharCode.GreaterThan */:\n case 61 /* CharCode.Equals */:\n case 124 /* CharCode.Bar */:\n if (atConflictMarker())\n return scanConflictMarker();\n return next(Token.DocText);\n }\n if (isAsciiIdentifierStart(ch)) {\n return scanIdentifier();\n }\n if (ch <= 127 /* CharCode.MaxAscii */) {\n return next(Token.DocText);\n }\n const cp = input.codePointAt(position);\n if (isIdentifierStart(cp)) {\n return scanNonAsciiIdentifier(cp);\n }\n return scanUnknown(Token.DocText);\n }\n return (token = Token.EndOfFile);\n }\n function scanRange(range, callback) {\n const savedPosition = position;\n const savedEndPosition = endPosition;\n const savedToken = token;\n const savedTokenPosition = tokenPosition;\n const savedTokenFlags = tokenFlags;\n position = range.pos;\n endPosition = range.end;\n token = Token.None;\n tokenPosition = -1;\n tokenFlags = TokenFlags.None;\n const result = callback();\n position = savedPosition;\n endPosition = savedEndPosition;\n token = savedToken;\n tokenPosition = savedTokenPosition;\n tokenFlags = savedTokenFlags;\n return result;\n }\n function next(t, count = 1) {\n position += count;\n return (token = t);\n }\n function unterminated(t) {\n tokenFlags |= TokenFlags.Unterminated;\n error({ code: \"unterminated\", format: { token: TokenDisplay[t] } });\n return (token = t);\n }\n function scanNonAsciiToken() {\n tokenFlags |= TokenFlags.NonAscii;\n const ch = input.charCodeAt(position);\n if (isNonAsciiWhiteSpaceSingleLine(ch)) {\n return scanWhitespace();\n }\n const cp = input.codePointAt(position);\n if (isNonAsciiIdentifierCharacter(cp)) {\n return scanNonAsciiIdentifier(cp);\n }\n return scanInvalidCharacter();\n }\n function scanInvalidCharacter() {\n token = scanUnknown(Token.Invalid);\n error({ code: \"invalid-character\" });\n return token;\n }\n function scanUnknown(t) {\n const codePoint = input.codePointAt(position);\n return (token = next(t, utf16CodeUnits(codePoint)));\n }\n function error(report) {\n const diagnostic = createDiagnostic({\n ...report,\n target: { file, pos: tokenPosition, end: position },\n });\n diagnosticHandler(diagnostic);\n }\n function scanWhitespace() {\n do {\n position++;\n } while (!eof() && isWhiteSpaceSingleLine(input.charCodeAt(position)));\n return (token = Token.Whitespace);\n }\n function scanSignedNumber() {\n position++; // consume '+/-'\n return scanNumber();\n }\n function scanNumber() {\n scanKnownDigits();\n if (!eof() && input.charCodeAt(position) === 46 /* CharCode.Dot */) {\n position++;\n scanRequiredDigits();\n }\n if (!eof() && input.charCodeAt(position) === 101 /* CharCode.e */) {\n position++;\n const ch = input.charCodeAt(position);\n if (ch === 43 /* CharCode.Plus */ || ch === 45 /* CharCode.Minus */) {\n position++;\n }\n scanRequiredDigits();\n }\n return (token = Token.NumericLiteral);\n }\n function scanKnownDigits() {\n do {\n position++;\n } while (!eof() && isDigit(input.charCodeAt(position)));\n }\n function scanRequiredDigits() {\n if (eof() || !isDigit(input.charCodeAt(position))) {\n error({ code: \"digit-expected\" });\n return;\n }\n scanKnownDigits();\n }\n function scanHexNumber() {\n position += 2; // consume '0x'\n if (eof() || !isHexDigit(input.charCodeAt(position))) {\n error({ code: \"hex-digit-expected\" });\n return (token = Token.NumericLiteral);\n }\n do {\n position++;\n } while (!eof() && isHexDigit(input.charCodeAt(position)));\n return (token = Token.NumericLiteral);\n }\n function scanBinaryNumber() {\n position += 2; // consume '0b'\n if (eof() || !isBinaryDigit(input.charCodeAt(position))) {\n error({ code: \"binary-digit-expected\" });\n return (token = Token.NumericLiteral);\n }\n do {\n position++;\n } while (!eof() && isBinaryDigit(input.charCodeAt(position)));\n return (token = Token.NumericLiteral);\n }\n function scanSingleLineComment() {\n position = skipSingleLineComment(input, position, endPosition);\n return (token = Token.SingleLineComment);\n }\n function scanMultiLineComment() {\n token = Token.MultiLineComment;\n if (lookAhead(2) === 42 /* CharCode.Asterisk */) {\n tokenFlags |= TokenFlags.DocComment;\n }\n const [newPosition, terminated] = skipMultiLineComment(input, position);\n position = newPosition;\n return terminated ? token : unterminated(token);\n }\n function scanDocCodeSpan() {\n position++; // consume '`'\n loop: for (; !eof(); position++) {\n const ch = input.charCodeAt(position);\n switch (ch) {\n case 96 /* CharCode.Backtick */:\n position++;\n return (token = Token.DocCodeSpan);\n case 13 /* CharCode.CarriageReturn */:\n case 10 /* CharCode.LineFeed */:\n break loop;\n }\n }\n return unterminated(Token.DocCodeSpan);\n }\n function scanString() {\n position++; // consume '\"'\n loop: for (; !eof(); position++) {\n const ch = input.charCodeAt(position);\n switch (ch) {\n case 92 /* CharCode.Backslash */:\n tokenFlags |= TokenFlags.Escaped;\n position++;\n if (eof()) {\n break loop;\n }\n continue;\n case 34 /* CharCode.DoubleQuote */:\n position++;\n return (token = Token.StringLiteral);\n case 13 /* CharCode.CarriageReturn */:\n case 10 /* CharCode.LineFeed */:\n break loop;\n }\n }\n return unterminated(Token.StringLiteral);\n }\n function scanTripleQuotedString() {\n tokenFlags |= TokenFlags.TripleQuoted;\n position += 3; // consume '\"\"\"'\n for (; !eof(); position++) {\n if (input.charCodeAt(position) === 34 /* CharCode.DoubleQuote */ &&\n lookAhead(1) === 34 /* CharCode.DoubleQuote */ &&\n lookAhead(2) === 34 /* CharCode.DoubleQuote */) {\n position += 3;\n return (token = Token.StringLiteral);\n }\n }\n return unterminated(Token.StringLiteral);\n }\n function getStringTokenValue() {\n const quoteLength = tokenFlags & TokenFlags.TripleQuoted ? 3 : 1;\n const start = tokenPosition + quoteLength;\n const end = tokenFlags & TokenFlags.Unterminated ? position : position - quoteLength;\n if (tokenFlags & TokenFlags.TripleQuoted) {\n return unindentAndUnescapeTripleQuotedString(start, end);\n }\n if (tokenFlags & TokenFlags.Escaped) {\n return unescapeString(start, end);\n }\n return input.substring(start, end);\n }\n function getIdentifierTokenValue() {\n const start = tokenFlags & TokenFlags.Backticked ? tokenPosition + 1 : tokenPosition;\n const end = tokenFlags & TokenFlags.Backticked && !(tokenFlags & TokenFlags.Unterminated)\n ? position - 1\n : position;\n const text = tokenFlags & TokenFlags.Escaped ? unescapeString(start, end) : input.substring(start, end);\n if (tokenFlags & TokenFlags.NonAscii) {\n return text.normalize(\"NFC\");\n }\n return text;\n }\n function unindentAndUnescapeTripleQuotedString(start, end) {\n // ignore leading whitespace before required initial line break\n while (start < end && isWhiteSpaceSingleLine(input.charCodeAt(start))) {\n start++;\n }\n // remove required initial line break\n if (isLineBreak(input.charCodeAt(start))) {\n if (isCrlf(start, start, end)) {\n start++;\n }\n start++;\n }\n else {\n error({ code: \"no-new-line-start-triple-quote\" });\n }\n // remove whitespace before closing delimiter and record it as required\n // indentation for all lines\n const indentationEnd = end;\n while (end > start && isWhiteSpaceSingleLine(input.charCodeAt(end - 1))) {\n end--;\n }\n const indentationStart = end;\n // remove required final line break\n if (isLineBreak(input.charCodeAt(end - 1))) {\n if (isCrlf(end - 2, start, end)) {\n end--;\n }\n end--;\n }\n else {\n error({ code: \"no-new-line-end-triple-quote\" });\n }\n // remove required matching indentation from each line and unescape in the\n // process of doing so\n let result = \"\";\n let pos = start;\n while (pos < end) {\n // skip indentation at start of line\n start = skipMatchingIndentation(pos, end, indentationStart, indentationEnd);\n let ch;\n while (pos < end && !isLineBreak((ch = input.charCodeAt(pos)))) {\n if (ch !== 92 /* CharCode.Backslash */) {\n pos++;\n continue;\n }\n result += input.substring(start, pos);\n if (pos === end - 1) {\n error({ code: \"invalid-escape-sequence\" });\n pos++;\n }\n else {\n result += unescapeOne(pos);\n pos += 2;\n }\n start = pos;\n }\n if (pos < end) {\n if (isCrlf(pos, start, end)) {\n // CRLF in multi-line string is normalized to LF in string value.\n // This keeps program behavior unchanged by line-ending conversion.\n result += input.substring(start, pos);\n result += \"\\n\";\n pos += 2;\n }\n else {\n pos++; // include non-CRLF newline\n result += input.substring(start, pos);\n }\n start = pos;\n }\n }\n result += input.substring(start, pos);\n return result;\n }\n function isCrlf(pos, start, end) {\n return (pos >= start &&\n pos < end - 1 &&\n input.charCodeAt(pos) === 13 /* CharCode.CarriageReturn */ &&\n input.charCodeAt(pos + 1) === 10 /* CharCode.LineFeed */);\n }\n function skipMatchingIndentation(pos, end, indentationStart, indentationEnd) {\n let indentationPos = indentationStart;\n end = Math.min(end, pos + (indentationEnd - indentationStart));\n while (pos < end) {\n const ch = input.charCodeAt(pos);\n if (isLineBreak(ch)) {\n // allow subset of indentation if line has only whitespace\n break;\n }\n if (ch !== input.charCodeAt(indentationPos)) {\n error({ code: \"triple-quote-indent\" });\n break;\n }\n indentationPos++;\n pos++;\n }\n return pos;\n }\n function unescapeString(start, end) {\n let result = \"\";\n let pos = start;\n while (pos < end) {\n const ch = input.charCodeAt(pos);\n if (ch !== 92 /* CharCode.Backslash */) {\n pos++;\n continue;\n }\n if (pos === end - 1) {\n error({ code: \"invalid-escape-sequence\" });\n break;\n }\n result += input.substring(start, pos);\n result += unescapeOne(pos);\n pos += 2;\n start = pos;\n }\n result += input.substring(start, pos);\n return result;\n }\n function unescapeOne(pos) {\n const ch = input.charCodeAt(pos + 1);\n switch (ch) {\n case 114 /* CharCode.r */:\n return \"\\r\";\n case 110 /* CharCode.n */:\n return \"\\n\";\n case 116 /* CharCode.t */:\n return \"\\t\";\n case 34 /* CharCode.DoubleQuote */:\n return '\"';\n case 92 /* CharCode.Backslash */:\n return \"\\\\\";\n case 96 /* CharCode.Backtick */:\n return \"`\";\n default:\n error({ code: \"invalid-escape-sequence\" });\n return String.fromCharCode(ch);\n }\n }\n function scanIdentifierOrKeyword() {\n let count = 0;\n let ch = input.charCodeAt(position);\n while (true) {\n position++;\n count++;\n if (eof()) {\n break;\n }\n ch = input.charCodeAt(position);\n if (count < 10 /* KeywordLimit.MaxLength */ && isLowercaseAsciiLetter(ch)) {\n continue;\n }\n if (isAsciiIdentifierContinue(ch)) {\n return scanIdentifier();\n }\n if (ch > 127 /* CharCode.MaxAscii */) {\n const cp = input.codePointAt(position);\n if (isNonAsciiIdentifierCharacter(cp)) {\n return scanNonAsciiIdentifier(cp);\n }\n }\n break;\n }\n if (count >= 2 /* KeywordLimit.MinLength */ && count <= 10 /* KeywordLimit.MaxLength */) {\n const keyword = Keywords.get(getTokenText());\n if (keyword) {\n return (token = keyword);\n }\n }\n return (token = Token.Identifier);\n }\n function scanIdentifier() {\n let ch;\n do {\n position++;\n if (eof()) {\n return (token = Token.Identifier);\n }\n } while (isAsciiIdentifierContinue((ch = input.charCodeAt(position))));\n if (ch > 127 /* CharCode.MaxAscii */) {\n const cp = input.codePointAt(position);\n if (isNonAsciiIdentifierCharacter(cp)) {\n return scanNonAsciiIdentifier(cp);\n }\n }\n return (token = Token.Identifier);\n }\n function scanBacktickedIdentifier() {\n position++; // consume '`'\n tokenFlags |= TokenFlags.Backticked;\n loop: for (; !eof(); position++) {\n const ch = input.charCodeAt(position);\n switch (ch) {\n case 92 /* CharCode.Backslash */:\n position++;\n tokenFlags |= TokenFlags.Escaped;\n continue;\n case 96 /* CharCode.Backtick */:\n position++;\n return (token = Token.Identifier);\n case 13 /* CharCode.CarriageReturn */:\n case 10 /* CharCode.LineFeed */:\n break loop;\n default:\n if (ch > 127 /* CharCode.MaxAscii */) {\n tokenFlags |= TokenFlags.NonAscii;\n }\n }\n }\n return unterminated(Token.Identifier);\n }\n function scanNonAsciiIdentifier(startCodePoint) {\n tokenFlags |= TokenFlags.NonAscii;\n let cp = startCodePoint;\n do {\n position += utf16CodeUnits(cp);\n } while (!eof() && isIdentifierContinue((cp = input.codePointAt(position))));\n return (token = Token.Identifier);\n }\n function atConflictMarker() {\n return isConflictMarker(input, position, endPosition);\n }\n function scanConflictMarker() {\n const marker = input.charCodeAt(position);\n position += mergeConflictMarkerLength;\n error({ code: \"conflict-marker\" });\n if (marker === 60 /* CharCode.LessThan */ || marker === 62 /* CharCode.GreaterThan */) {\n // Consume everything from >>>>>>> or <<<<<<< to the end of the line.\n while (position < endPosition && !isLineBreak(input.charCodeAt(position))) {\n position++;\n }\n }\n else {\n // Consume everything from the start of a ||||||| or =======\n // marker to the start of the next ======= or >>>>>>> marker.\n while (position < endPosition) {\n const ch = input.charCodeAt(position);\n if ((ch === 61 /* CharCode.Equals */ || ch === 62 /* CharCode.GreaterThan */) &&\n ch !== marker &&\n isConflictMarker(input, position, endPosition)) {\n break;\n }\n position++;\n }\n }\n return (token = Token.ConflictMarker);\n }\n}\nexport function skipTrivia(input, position, endPosition = input.length) {\n while (position < endPosition) {\n const ch = input.charCodeAt(position);\n if (isWhiteSpace(ch)) {\n position++;\n continue;\n }\n if (ch === 47 /* CharCode.Slash */) {\n switch (input.charCodeAt(position + 1)) {\n case 47 /* CharCode.Slash */:\n position = skipSingleLineComment(input, position, endPosition);\n continue;\n case 42 /* CharCode.Asterisk */:\n position = skipMultiLineComment(input, position, endPosition)[0];\n continue;\n }\n }\n break;\n }\n return position;\n}\nexport function skipWhiteSpace(input, position, endPosition = input.length) {\n while (position < endPosition) {\n const ch = input.charCodeAt(position);\n if (!isWhiteSpace(ch)) {\n break;\n }\n position++;\n }\n return position;\n}\nfunction skipSingleLineComment(input, position, endPosition = input.length) {\n position += 2; // consume '//'\n for (; position < endPosition; position++) {\n if (isLineBreak(input.charCodeAt(position))) {\n break;\n }\n }\n return position;\n}\nfunction skipMultiLineComment(input, position, endPosition = input.length) {\n position += 2; // consume '/*'\n for (; position < endPosition; position++) {\n if (input.charCodeAt(position) === 42 /* CharCode.Asterisk */ &&\n input.charCodeAt(position + 1) === 47 /* CharCode.Slash */) {\n return [position + 2, true];\n }\n }\n return [position, false];\n}\nfunction isConflictMarker(input, position, endPosition = input.length) {\n // Conflict markers must be at the start of a line.\n const ch = input.charCodeAt(position);\n if (position === 0 || isLineBreak(input.charCodeAt(position - 1))) {\n if (position + mergeConflictMarkerLength < endPosition) {\n for (let i = 0; i < mergeConflictMarkerLength; i++) {\n if (input.charCodeAt(position + i) !== ch) {\n return false;\n }\n }\n return (ch === 61 /* CharCode.Equals */ ||\n input.charCodeAt(position + mergeConflictMarkerLength) === 32 /* CharCode.Space */);\n }\n }\n return false;\n}\nfunction getTokenDisplayTable(entries) {\n const table = new Array(entries.length);\n for (const [token, display] of entries) {\n compilerAssert(token >= 0 && token < Token.__Count, `Invalid entry in token display table, ${token}, ${Token[token]}, ${display}`);\n compilerAssert(!table[token], `Duplicate entry in token display table for: ${token}, ${Token[token]}, ${display}`);\n table[token] = display;\n }\n for (let token = 0; token < Token.__Count; token++) {\n compilerAssert(table[token], `Missing entry in token display table: ${token}, ${Token[token]}`);\n }\n return table;\n}\n//# sourceMappingURL=scanner.js.map","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _MultiKeyMap_currentId, _MultiKeyMap_idMap, _MultiKeyMap_items, _Queue_elements, _Queue_headIndex, _DuplicateTracker_entries, _RekeyableMapImpl_keys, _RekeyableMapImpl_values, _a;\nimport { createSourceFile } from \"./diagnostics.js\";\nimport { createDiagnostic } from \"./messages.js\";\nimport { getAnyExtensionFromPath, getDirectoryPath, isPathAbsolute, isUrl, joinPaths, normalizePath, resolvePath, } from \"./path-utils.js\";\nimport { NoTarget, } from \"./types.js\";\nexport { typespecVersion } from \"./manifest.js\";\nexport { NodeHost } from \"./node-host.js\";\nexport class ExternalError extends Error {\n}\n/**\n * Recursively calls Object.freeze such that all objects and arrays\n * referenced are frozen.\n *\n * Does not support cycles. Intended to be used only on plain data that can\n * be directly represented in JSON.\n */\nexport function deepFreeze(value) {\n if (Array.isArray(value)) {\n value.forEach(deepFreeze);\n }\n else if (typeof value === \"object\") {\n for (const prop in value) {\n deepFreeze(value[prop]);\n }\n }\n return Object.freeze(value);\n}\n/**\n * Deeply clones an object.\n *\n * Does not support cycles. Intended to be used only on plain data that can\n * be directly represented in JSON.\n */\nexport function deepClone(value) {\n if (Array.isArray(value)) {\n return value.map(deepClone);\n }\n if (typeof value === \"object\") {\n const obj = {};\n for (const prop in value) {\n obj[prop] = deepClone(value[prop]);\n }\n return obj;\n }\n return value;\n}\n/**\n * Checks if two objects are deeply equal.\n *\n * Does not support cycles. Intended to be used only on plain data that can\n * be directly represented in JSON.\n */\nexport function deepEquals(left, right) {\n if (left === right) {\n return true;\n }\n if (left === null || right === null || typeof left !== \"object\" || typeof right !== \"object\") {\n return false;\n }\n if (Array.isArray(left)) {\n return Array.isArray(right) ? arrayEquals(left, right, deepEquals) : false;\n }\n return mapEquals(new Map(Object.entries(left)), new Map(Object.entries(right)), deepEquals);\n}\n/**\n * Check if two arrays have the same elements.\n *\n * @param equals Optional callback for element equality comparison.\n * Default is to compare by identity using `===`.\n */\nexport function arrayEquals(left, right, equals = (x, y) => x === y) {\n if (left === right) {\n return true;\n }\n if (left.length !== right.length) {\n return false;\n }\n for (let i = 0; i < left.length; i++) {\n if (!equals(left[i], right[i])) {\n return false;\n }\n }\n return true;\n}\n/**\n * Check if two maps have the same entries.\n *\n * @param equals Optional callback for value equality comparison.\n * Default is to compare by identity using `===`.\n */\nexport function mapEquals(left, right, equals = (x, y) => x === y) {\n if (left === right) {\n return true;\n }\n if (left.size !== right.size) {\n return false;\n }\n for (const [key, value] of left) {\n if (!right.has(key) || !equals(value, right.get(key))) {\n return false;\n }\n }\n return true;\n}\nexport async function getNormalizedRealPath(host, path) {\n return normalizePath(await host.realpath(path));\n}\nexport async function doIO(action, path, reportDiagnostic, options) {\n var _b;\n let result;\n try {\n result = await action(path);\n }\n catch (e) {\n let diagnostic;\n let target = (_b = options === null || options === void 0 ? void 0 : options.diagnosticTarget) !== null && _b !== void 0 ? _b : NoTarget;\n // blame the JS file, not the TypeSpec import statement for JS syntax errors.\n if (e instanceof SyntaxError && (options === null || options === void 0 ? void 0 : options.jsDiagnosticTarget)) {\n target = options.jsDiagnosticTarget;\n }\n switch (e.code) {\n case \"ENOENT\":\n if (options === null || options === void 0 ? void 0 : options.allowFileNotFound) {\n return undefined;\n }\n diagnostic = createDiagnostic({ code: \"file-not-found\", target, format: { path } });\n break;\n default:\n diagnostic = createDiagnostic({\n code: \"file-load\",\n target,\n format: { message: e.message },\n });\n break;\n }\n reportDiagnostic(diagnostic);\n return undefined;\n }\n return result;\n}\nexport async function loadFile(host, path, load, reportDiagnostic, options) {\n const file = await doIO(host.readFile, path, reportDiagnostic, options);\n if (!file) {\n return [undefined, createSourceFile(\"\", path)];\n }\n let data;\n try {\n data = load(file.text);\n }\n catch (e) {\n reportDiagnostic({\n code: \"file-load\",\n message: e.message,\n severity: \"error\",\n target: { file, pos: 1, end: 1 },\n });\n return [undefined, file];\n }\n return [data, file];\n}\nexport async function readUrlOrPath(host, pathOrUrl) {\n if (isUrl(pathOrUrl)) {\n return host.readUrl(pathOrUrl);\n }\n return host.readFile(pathOrUrl);\n}\nexport function resolveRelativeUrlOrPath(base, relativeOrAbsolute) {\n if (isUrl(relativeOrAbsolute)) {\n return relativeOrAbsolute;\n }\n else if (isPathAbsolute(relativeOrAbsolute)) {\n return relativeOrAbsolute;\n }\n else if (isUrl(base)) {\n return new URL(relativeOrAbsolute, base).href;\n }\n else {\n return resolvePath(base, relativeOrAbsolute);\n }\n}\n/**\n * A specially typed version of `Array.isArray` to work around [this issue](https://github.com/microsoft/TypeScript/issues/17002).\n */\nexport function isArray(\n// eslint-disable-next-line @typescript-eslint/ban-types\narg) {\n return Array.isArray(arg);\n}\n/**\n * Check if argument is not undefined.\n */\nexport function isDefined(arg) {\n return arg !== undefined;\n}\n/**\n * Remove undefined properties from object.\n */\nexport function omitUndefined(data) {\n return Object.fromEntries(Object.entries(data).filter(([k, v]) => v !== undefined));\n}\n/**\n * Look for the project root by looking up until a `package.json` is found.\n * @param path Path to start looking\n * @param lookIn\n */\nexport async function findProjectRoot(host, path) {\n let current = path;\n while (true) {\n const pkgPath = joinPaths(current, \"package.json\");\n const stat = await doIO(() => host.stat(pkgPath), pkgPath, () => { });\n if (stat === null || stat === void 0 ? void 0 : stat.isFile()) {\n return current;\n }\n const parent = getDirectoryPath(current);\n if (parent === current) {\n return undefined;\n }\n current = parent;\n }\n}\n/**\n * Extract package.json's tspMain entry point in a given path. Note, it takes into\n * back compat for deprecated cadlMain\n * @param path Path that contains package.json\n * @param reportDiagnostic optional diagnostic handler.\n */\nexport function resolveTspMain(packageJson) {\n if ((packageJson === null || packageJson === void 0 ? void 0 : packageJson.tspMain) !== undefined) {\n return packageJson.tspMain;\n }\n if ((packageJson === null || packageJson === void 0 ? void 0 : packageJson.cadlMain) !== undefined) {\n return packageJson.cadlMain;\n }\n return undefined;\n}\n/**\n * A map keyed by a set of objects.\n *\n * This is likely non-optimal.\n */\nexport class MultiKeyMap {\n constructor() {\n _MultiKeyMap_currentId.set(this, 0);\n _MultiKeyMap_idMap.set(this, new WeakMap());\n _MultiKeyMap_items.set(this, new Map());\n }\n get(items) {\n return __classPrivateFieldGet(this, _MultiKeyMap_items, \"f\").get(this.compositeKeyFor(items));\n }\n set(items, value) {\n const key = this.compositeKeyFor(items);\n __classPrivateFieldGet(this, _MultiKeyMap_items, \"f\").set(key, value);\n }\n compositeKeyFor(items) {\n return items.map((i) => this.keyFor(i)).join(\",\");\n }\n keyFor(item) {\n var _b, _c;\n if (__classPrivateFieldGet(this, _MultiKeyMap_idMap, \"f\").has(item)) {\n return __classPrivateFieldGet(this, _MultiKeyMap_idMap, \"f\").get(item);\n }\n const id = (__classPrivateFieldSet(this, _MultiKeyMap_currentId, (_c = __classPrivateFieldGet(this, _MultiKeyMap_currentId, \"f\"), _b = _c++, _c), \"f\"), _b);\n __classPrivateFieldGet(this, _MultiKeyMap_idMap, \"f\").set(item, id);\n return id;\n }\n}\n_MultiKeyMap_currentId = new WeakMap(), _MultiKeyMap_idMap = new WeakMap(), _MultiKeyMap_items = new WeakMap();\n/**\n * A map with exactly two keys per value.\n *\n * Functionally the same as `MultiKeyMap<[K1, K2], V>`, but more efficient.\n */\nexport class TwoLevelMap extends Map {\n /**\n * Get an existing entry in the map or add a new one if not found.\n *\n * @param key1 The first key\n * @param key2 The second key\n * @param create A callback to create the new entry when not found.\n * @param sentinel An optional sentinel value to use to indicate that the\n * entry is being created.\n */\n getOrAdd(key1, key2, create, sentinel) {\n let map = this.get(key1);\n if (map === undefined) {\n map = new Map();\n this.set(key1, map);\n }\n let entry = map.get(key2);\n if (entry === undefined) {\n if (sentinel !== undefined) {\n map.set(key2, sentinel);\n }\n entry = create();\n map.set(key2, entry);\n }\n return entry;\n }\n}\n// Adapted from https://github.com/microsoft/TypeScript/blob/bc52ff6f4be9347981de415a35da90497eae84ac/src/compiler/core.ts#L1507\nexport class Queue {\n constructor(elements) {\n var _b;\n _Queue_elements.set(this, void 0);\n _Queue_headIndex.set(this, 0);\n __classPrivateFieldSet(this, _Queue_elements, (_b = elements === null || elements === void 0 ? void 0 : elements.slice()) !== null && _b !== void 0 ? _b : [], \"f\");\n }\n isEmpty() {\n return __classPrivateFieldGet(this, _Queue_headIndex, \"f\") === __classPrivateFieldGet(this, _Queue_elements, \"f\").length;\n }\n enqueue(...items) {\n __classPrivateFieldGet(this, _Queue_elements, \"f\").push(...items);\n }\n dequeue() {\n var _b;\n if (this.isEmpty()) {\n throw new Error(\"Queue is empty.\");\n }\n const result = __classPrivateFieldGet(this, _Queue_elements, \"f\")[__classPrivateFieldGet(this, _Queue_headIndex, \"f\")];\n __classPrivateFieldGet(this, _Queue_elements, \"f\")[__classPrivateFieldGet(this, _Queue_headIndex, \"f\")] = undefined; // Don't keep referencing dequeued item\n __classPrivateFieldSet(this, _Queue_headIndex, // Don't keep referencing dequeued item\n (_b = __classPrivateFieldGet(this, _Queue_headIndex, \"f\"), _b++, _b), \"f\");\n // If more than half of the queue is empty, copy the remaining elements to the\n // front and shrink the array (unless we'd be saving fewer than 100 slots)\n if (__classPrivateFieldGet(this, _Queue_headIndex, \"f\") > 100 && __classPrivateFieldGet(this, _Queue_headIndex, \"f\") > __classPrivateFieldGet(this, _Queue_elements, \"f\").length >> 1) {\n const newLength = __classPrivateFieldGet(this, _Queue_elements, \"f\").length - __classPrivateFieldGet(this, _Queue_headIndex, \"f\");\n __classPrivateFieldGet(this, _Queue_elements, \"f\").copyWithin(0, __classPrivateFieldGet(this, _Queue_headIndex, \"f\"));\n __classPrivateFieldGet(this, _Queue_elements, \"f\").length = newLength;\n __classPrivateFieldSet(this, _Queue_headIndex, 0, \"f\");\n }\n return result;\n }\n}\n_Queue_elements = new WeakMap(), _Queue_headIndex = new WeakMap();\n/**\n * Casts away readonly typing.\n *\n * Use it like this when it is safe to override readonly typing:\n * mutate(item).prop = value;\n */\nexport function mutate(value) {\n return value;\n}\nexport function getSourceFileKindFromExt(path) {\n const ext = getAnyExtensionFromPath(path);\n if (ext === \".js\" || ext === \".mjs\") {\n return \"js\";\n }\n else if (ext === \".tsp\" || ext === \".cadl\") {\n return \"typespec\";\n }\n else {\n return undefined;\n }\n}\nexport function createStringMap(caseInsensitive) {\n return caseInsensitive ? new CaseInsensitiveMap() : new Map();\n}\nclass CaseInsensitiveMap extends Map {\n get(key) {\n return super.get(key.toUpperCase());\n }\n set(key, value) {\n return super.set(key.toUpperCase(), value);\n }\n has(key) {\n return super.has(key.toUpperCase());\n }\n delete(key) {\n return super.delete(key.toUpperCase());\n }\n}\n/**\n * Helper class to track duplicate instance\n */\nexport class DuplicateTracker {\n constructor() {\n _DuplicateTracker_entries.set(this, new Map());\n }\n /**\n * Track usage of K.\n * @param k key that is being checked for duplicate.\n * @param v value that map to the key\n */\n track(k, v) {\n const existing = __classPrivateFieldGet(this, _DuplicateTracker_entries, \"f\").get(k);\n if (existing === undefined) {\n __classPrivateFieldGet(this, _DuplicateTracker_entries, \"f\").set(k, [v]);\n }\n else {\n existing.push(v);\n }\n }\n /**\n * Return iterator of all the duplicate entries.\n */\n *entries() {\n for (const [k, v] of __classPrivateFieldGet(this, _DuplicateTracker_entries, \"f\").entries()) {\n if (v.length > 1) {\n yield [k, v];\n }\n }\n }\n}\n_DuplicateTracker_entries = new WeakMap();\nexport function createRekeyableMap(entries) {\n return new RekeyableMapImpl(entries);\n}\nclass RekeyableMapImpl {\n constructor(entries) {\n _RekeyableMapImpl_keys.set(this, new Map());\n _RekeyableMapImpl_values.set(this, new Map());\n this[_a] = \"RekeyableMap\";\n if (entries) {\n for (const [key, value] of entries) {\n this.set(key, value);\n }\n }\n }\n clear() {\n __classPrivateFieldGet(this, _RekeyableMapImpl_keys, \"f\").clear();\n __classPrivateFieldGet(this, _RekeyableMapImpl_values, \"f\").clear();\n }\n delete(key) {\n const keyItem = __classPrivateFieldGet(this, _RekeyableMapImpl_keys, \"f\").get(key);\n if (keyItem) {\n __classPrivateFieldGet(this, _RekeyableMapImpl_keys, \"f\").delete(key);\n return __classPrivateFieldGet(this, _RekeyableMapImpl_values, \"f\").delete(keyItem);\n }\n return false;\n }\n forEach(callbackfn, thisArg) {\n __classPrivateFieldGet(this, _RekeyableMapImpl_values, \"f\").forEach((value, keyItem) => {\n callbackfn(value, keyItem.key, this);\n }, thisArg);\n }\n get(key) {\n const keyItem = __classPrivateFieldGet(this, _RekeyableMapImpl_keys, \"f\").get(key);\n return keyItem ? __classPrivateFieldGet(this, _RekeyableMapImpl_values, \"f\").get(keyItem) : undefined;\n }\n has(key) {\n return __classPrivateFieldGet(this, _RekeyableMapImpl_keys, \"f\").has(key);\n }\n set(key, value) {\n let keyItem = __classPrivateFieldGet(this, _RekeyableMapImpl_keys, \"f\").get(key);\n if (!keyItem) {\n keyItem = { key };\n __classPrivateFieldGet(this, _RekeyableMapImpl_keys, \"f\").set(key, keyItem);\n }\n __classPrivateFieldGet(this, _RekeyableMapImpl_values, \"f\").set(keyItem, value);\n return this;\n }\n get size() {\n return __classPrivateFieldGet(this, _RekeyableMapImpl_values, \"f\").size;\n }\n *entries() {\n for (const [k, v] of __classPrivateFieldGet(this, _RekeyableMapImpl_values, \"f\")) {\n yield [k.key, v];\n }\n }\n *keys() {\n for (const k of __classPrivateFieldGet(this, _RekeyableMapImpl_values, \"f\").keys()) {\n yield k.key;\n }\n }\n values() {\n return __classPrivateFieldGet(this, _RekeyableMapImpl_values, \"f\").values();\n }\n [(_RekeyableMapImpl_keys = new WeakMap(), _RekeyableMapImpl_values = new WeakMap(), Symbol.iterator)]() {\n return this.entries();\n }\n rekey(existingKey, newKey) {\n const keyItem = __classPrivateFieldGet(this, _RekeyableMapImpl_keys, \"f\").get(existingKey);\n if (!keyItem) {\n return false;\n }\n __classPrivateFieldGet(this, _RekeyableMapImpl_keys, \"f\").delete(existingKey);\n keyItem.key = newKey;\n __classPrivateFieldGet(this, _RekeyableMapImpl_keys, \"f\").set(newKey, keyItem);\n return true;\n }\n}\n_a = Symbol.toStringTag;\n//# sourceMappingURL=util.js.map","import prettier from \"prettier\";\nimport { SyntaxKind } from \"../../core/types.js\";\nconst { util } = prettier;\n/**\n * Override the default behavior to attach comments to syntax node.\n */\nexport const commentHandler = {\n ownLine: (comment) => [addEmptyInterfaceComment, addEmptyModelComment, addStatementDecoratorComment].some((x) => x(comment)),\n};\n/**\n * When a comment is on an empty interface make sure it gets added as a dangling comment on it and not on the identifier.\n *\n * @example\n *\n * interface Foo {\n * // My comment\n * }\n */\nfunction addEmptyInterfaceComment(comment) {\n const { precedingNode, enclosingNode } = comment;\n if (enclosingNode &&\n enclosingNode.kind === SyntaxKind.InterfaceStatement &&\n enclosingNode.operations.length === 0 &&\n precedingNode &&\n precedingNode.kind === SyntaxKind.Identifier) {\n util.addDanglingComment(enclosingNode, comment, undefined);\n return true;\n }\n return false;\n}\n/**\n * When a comment is in between decorators.\n *\n * @example\n *\n * @foo\n * // My comment\n * @bar\n * model Foo {\n * }\n */\nfunction addStatementDecoratorComment(comment) {\n const { enclosingNode, precedingNode } = comment;\n if (precedingNode &&\n precedingNode.kind === SyntaxKind.DecoratorExpression &&\n enclosingNode &&\n (enclosingNode.kind === SyntaxKind.NamespaceStatement ||\n enclosingNode.kind === SyntaxKind.ModelStatement ||\n enclosingNode.kind === SyntaxKind.EnumStatement ||\n enclosingNode.kind === SyntaxKind.OperationStatement ||\n enclosingNode.kind === SyntaxKind.ModelProperty ||\n enclosingNode.kind === SyntaxKind.EnumMember ||\n enclosingNode.kind === SyntaxKind.UnionStatement)) {\n util.addTrailingComment(precedingNode, comment);\n return true;\n }\n return false;\n}\n/**\n * When a comment is on an empty model make sure it gets added as a dangling comment on it and not on the identifier.\n *\n * @example\n *\n * model Foo {\n * // My comment\n * }\n */\nfunction addEmptyModelComment(comment) {\n const { precedingNode, enclosingNode } = comment;\n if (enclosingNode &&\n enclosingNode.kind === SyntaxKind.ModelStatement &&\n enclosingNode.properties.length === 0 &&\n precedingNode &&\n (precedingNode === enclosingNode.is ||\n precedingNode === enclosingNode.id ||\n precedingNode === enclosingNode.extends)) {\n util.addDanglingComment(enclosingNode, comment, undefined);\n return true;\n }\n return false;\n}\n//# sourceMappingURL=comment-handler.js.map","import { SyntaxKind } from \"../../core/types.js\";\n/**\n * Check if the current path should be wrapped in parentheses\n * @param path Prettier print path.\n * @param options Prettier options\n */\nexport function needsParens(path, options) {\n const parent = path.getParentNode();\n if (!parent) {\n return false;\n }\n const node = path.getValue();\n switch (node.kind) {\n case SyntaxKind.IntersectionExpression:\n return (parent.kind === SyntaxKind.UnionExpression || parent.kind === SyntaxKind.ArrayExpression);\n case SyntaxKind.UnionExpression:\n return (parent.kind === SyntaxKind.IntersectionExpression ||\n parent.kind === SyntaxKind.ArrayExpression);\n case SyntaxKind.ProjectionLogicalExpression:\n return parent.kind === SyntaxKind.ProjectionLogicalExpression;\n case SyntaxKind.ProjectionArithmeticExpression:\n return parent.kind === SyntaxKind.ProjectionArithmeticExpression;\n default:\n return false;\n }\n}\n//# sourceMappingURL=needs-parens.js.map","import prettier from \"prettier\";\nimport { isIdentifierContinue, isIdentifierStart, utf16CodeUnits } from \"../../core/charcode.js\";\nimport { compilerAssert } from \"../../core/diagnostics.js\";\nimport { Keywords } from \"../../core/scanner.js\";\nimport { SyntaxKind, } from \"../../core/types.js\";\nimport { isArray } from \"../../core/util.js\";\nimport { commentHandler } from \"./comment-handler.js\";\nimport { needsParens } from \"./needs-parens.js\";\nconst { align, breakParent, group, hardline, ifBreak, indent, join, line, softline } = prettier.doc.builders;\nconst { isNextLineEmpty } = prettier.util;\nexport const typespecPrinter = {\n print: printTypeSpec,\n canAttachComment: canAttachComment,\n printComment: printComment,\n handleComments: commentHandler,\n};\nexport function printTypeSpec(\n// Path to the AST node to print\npath, options, print) {\n const node = path.getValue();\n const directives = shouldPrintDirective(node) ? printDirectives(path, options, print) : \"\";\n const printedNode = printNode(path, options, print);\n const value = needsParens(path, options) ? [\"(\", printedNode, \")\"] : printedNode;\n const parts = [directives, value];\n if (node.kind === SyntaxKind.TypeSpecScript) {\n // For TypeSpecScript(root of typespec document) we had a new line at the end.\n // This must be done here so the hardline entry can be the last item of the doc array returned by the printer\n // so the markdown(and other embedded formatter) can omit that extra line.\n parts.push(hardline);\n }\n return parts;\n}\nfunction shouldPrintDirective(node) {\n // Model property handle printing directive itself.\n return node.kind !== SyntaxKind.ModelProperty;\n}\nexport function printNode(\n// Path to the AST node to print\npath, options, print) {\n const node = path.getValue();\n printDirectives(path, options, print);\n switch (node.kind) {\n // Root\n case SyntaxKind.TypeSpecScript:\n return [\n printStatementSequence(path, options, print, \"statements\"),\n ];\n // Statements\n case SyntaxKind.ImportStatement:\n return [`import \"${node.path.value}\";`];\n case SyntaxKind.UsingStatement:\n return [`using `, path.call(print, \"name\"), `;`];\n case SyntaxKind.OperationStatement:\n return printOperationStatement(path, options, print);\n case SyntaxKind.OperationSignatureDeclaration:\n return printOperationSignatureDeclaration(path, options, print);\n case SyntaxKind.OperationSignatureReference:\n return printOperationSignatureReference(path, options, print);\n case SyntaxKind.NamespaceStatement:\n return printNamespaceStatement(path, options, print);\n case SyntaxKind.ModelStatement:\n return printModelStatement(path, options, print);\n case SyntaxKind.ScalarStatement:\n return printScalarStatement(path, options, print);\n case SyntaxKind.AliasStatement:\n return printAliasStatement(path, options, print);\n case SyntaxKind.EnumStatement:\n return printEnumStatement(path, options, print);\n case SyntaxKind.UnionStatement:\n return printUnionStatement(path, options, print);\n case SyntaxKind.InterfaceStatement:\n return printInterfaceStatement(path, options, print);\n // Others.\n case SyntaxKind.Identifier:\n return printIdentifier(node, options);\n case SyntaxKind.StringLiteral:\n return printStringLiteral(path, options);\n case SyntaxKind.NumericLiteral:\n return printNumberLiteral(path, options);\n case SyntaxKind.BooleanLiteral:\n return printBooleanLiteral(path, options);\n case SyntaxKind.ModelExpression:\n return printModelExpression(path, options, print);\n case SyntaxKind.ModelProperty:\n return printModelProperty(path, options, print);\n case SyntaxKind.DecoratorExpression:\n return printDecorator(path, options, print);\n case SyntaxKind.AugmentDecoratorStatement:\n return printAugmentDecorator(path, options, print);\n case SyntaxKind.DirectiveExpression:\n return printDirective(path, options, print);\n case SyntaxKind.UnionExpression:\n return printUnion(path, options, print);\n case SyntaxKind.IntersectionExpression:\n return printIntersection(path, options, print);\n case SyntaxKind.ArrayExpression:\n return printArray(path, options, print);\n case SyntaxKind.TupleExpression:\n return printTuple(path, options, print);\n case SyntaxKind.MemberExpression:\n return printMemberExpression(path, options, print);\n case SyntaxKind.EnumMember:\n return printEnumMember(path, options, print);\n case SyntaxKind.EnumSpreadMember:\n return printEnumSpreadMember(path, options, print);\n case SyntaxKind.UnionVariant:\n return printUnionVariant(path, options, print);\n case SyntaxKind.TypeReference:\n return printTypeReference(path, options, print);\n case SyntaxKind.ValueOfExpression:\n return printValueOfExpression(path, options, print);\n case SyntaxKind.TemplateParameterDeclaration:\n return printTemplateParameterDeclaration(path, options, print);\n case SyntaxKind.ModelSpreadProperty:\n return printModelSpread(path, options, print);\n case SyntaxKind.DecoratorDeclarationStatement:\n return printDecoratorDeclarationStatement(path, options, print);\n case SyntaxKind.FunctionDeclarationStatement:\n return printFunctionDeclarationStatement(path, options, print);\n case SyntaxKind.FunctionParameter:\n return printFunctionParameterDeclaration(path, options, print);\n case SyntaxKind.ExternKeyword:\n return \"extern\";\n case SyntaxKind.VoidKeyword:\n return \"void\";\n case SyntaxKind.NeverKeyword:\n return \"never\";\n case SyntaxKind.UnknownKeyword:\n return \"unknown\";\n case SyntaxKind.ProjectionStatement:\n return printProjectionStatement(path, options, print);\n case SyntaxKind.ProjectionModelSelector:\n return \"model\";\n case SyntaxKind.ProjectionModelPropertySelector:\n return \"modelproperty\";\n case SyntaxKind.ProjectionOperationSelector:\n return \"op\";\n case SyntaxKind.ProjectionUnionSelector:\n return \"union\";\n case SyntaxKind.ProjectionUnionVariantSelector:\n return \"unionvariant\";\n case SyntaxKind.ProjectionInterfaceSelector:\n return \"interface\";\n case SyntaxKind.ProjectionEnumSelector:\n return \"enum\";\n case SyntaxKind.ProjectionEnumMemberSelector:\n return \"enummember\";\n case SyntaxKind.Projection:\n return printProjection(path, options, print);\n case SyntaxKind.ProjectionParameterDeclaration:\n return printProjectionParameterDeclaration(path, options, print);\n case SyntaxKind.ProjectionExpressionStatement:\n return printProjectionExpressionStatement(path, options, print);\n case SyntaxKind.ProjectionIfExpression:\n return printProjectionIfExpressionNode(path, options, print);\n case SyntaxKind.ProjectionBlockExpression:\n return printProjectionBlockExpressionNode(path, options, print);\n case SyntaxKind.ProjectionMemberExpression:\n return printProjectionMemberExpression(path, options, print);\n case SyntaxKind.ProjectionLogicalExpression:\n case SyntaxKind.ProjectionEqualityExpression:\n case SyntaxKind.ProjectionRelationalExpression:\n case SyntaxKind.ProjectionArithmeticExpression:\n return printProjectionLeftRightExpression(path, options, print);\n case SyntaxKind.ProjectionUnaryExpression:\n return printProjectionUnaryExpression(path, options, print);\n case SyntaxKind.ProjectionCallExpression:\n return printProjectionCallExpression(path, options, print);\n case SyntaxKind.ProjectionLambdaExpression:\n return printProjectionLambdaExpression(path, options, print);\n case SyntaxKind.ProjectionLambdaParameterDeclaration:\n return printProjectionLambdaParameterDeclaration(path, options, print);\n case SyntaxKind.ProjectionModelExpression:\n return printModelExpression(path, options, print);\n case SyntaxKind.ProjectionModelProperty:\n return printModelProperty(path, options, print);\n case SyntaxKind.ProjectionModelSpreadProperty:\n return printModelSpread(path, options, print);\n case SyntaxKind.ProjectionTupleExpression:\n return printTuple(path, options, print);\n case SyntaxKind.ProjectionDecoratorReferenceExpression:\n return path.call(print, \"target\");\n case SyntaxKind.Return:\n return printReturnExpression(path, options, print);\n case SyntaxKind.Doc:\n case SyntaxKind.DocText:\n case SyntaxKind.DocParamTag:\n case SyntaxKind.DocTemplateTag:\n case SyntaxKind.DocReturnsTag:\n case SyntaxKind.DocUnknownTag:\n // https://github.com/microsoft/typespec/issues/1319 Tracks pretty-printing doc comments.\n compilerAssert(false, \"Currently, doc comments are only handled as regular comments and we do not opt in to parsing them so we shouldn't reach here.\");\n return \"\";\n case SyntaxKind.JsSourceFile:\n case SyntaxKind.EmptyStatement:\n case SyntaxKind.InvalidStatement:\n return getRawText(node, options);\n default:\n // Dummy const to ensure we handle all node types.\n // If you get an error here, add a case for the new node type\n // you added..\n const _assertNever = node;\n return getRawText(node, options);\n }\n}\nexport function printAliasStatement(path, options, print) {\n const id = path.call(print, \"id\");\n const template = printTemplateParameters(path, options, print, \"templateParameters\");\n return [\"alias \", id, template, \" = \", path.call(print, \"value\"), \";\"];\n}\nfunction printTemplateParameters(path, options, print, propertyName) {\n const node = path.getValue();\n const args = node[propertyName];\n if (args.length === 0) {\n return \"\";\n }\n const shouldHug = args.length === 1;\n if (shouldHug) {\n return [\"<\", join(\", \", path.map(print, propertyName)), \">\"];\n }\n else {\n const body = indent([softline, join([\", \", softline], path.map(print, propertyName))]);\n return group([\"<\", body, softline, \">\"]);\n }\n}\nexport function canAttachComment(node) {\n const kind = node.kind;\n return Boolean(kind &&\n kind !== SyntaxKind.LineComment &&\n kind !== SyntaxKind.BlockComment &&\n !(node.flags & 8 /* NodeFlags.Synthetic */));\n}\nexport function printComment(commentPath, options) {\n const comment = commentPath.getValue();\n comment.printed = true;\n switch (comment.kind) {\n case SyntaxKind.BlockComment:\n return printBlockComment(commentPath, options);\n case SyntaxKind.LineComment:\n return `${options.originalText.slice(comment.pos, comment.end).trimEnd()}`;\n default:\n throw new Error(`Not a comment: ${JSON.stringify(comment)}`);\n }\n}\nfunction printBlockComment(commentPath, options) {\n const comment = commentPath.getValue();\n const rawComment = options.originalText.slice(comment.pos + 2, comment.end - 2);\n if (isIndentableBlockComment(rawComment)) {\n const printed = printIndentableBlockComment(rawComment);\n return printed;\n }\n return [\"/*\", rawComment, \"*/\"];\n}\nfunction isIndentableBlockComment(rawComment) {\n // If the comment has multiple lines and every line starts with a star\n // we can fix the indentation of each line. The stars in the `/*` and\n // `*/` delimiters are not included in the comment value, so add them\n // back first.\n const lines = `*${rawComment}*`.split(\"\\n\");\n return lines.length > 1 && lines.every((line) => line.trim()[0] === \"*\");\n}\nfunction printIndentableBlockComment(rawComment) {\n const lines = rawComment.split(\"\\n\");\n return [\n \"/*\",\n join(hardline, lines.map((line, index) => index === 0\n ? line.trimEnd()\n : \" \" + (index < lines.length - 1 ? line.trim() : line.trimStart()))),\n \"*/\",\n ];\n}\nexport function printDecorators(path, options, print, { tryInline }) {\n const node = path.getValue();\n if (node.decorators.length === 0) {\n return { decorators: \"\", multiline: false };\n }\n const shouldBreak = !tryInline || node.decorators.length >= 3 || hasNewlineBetweenOrAfterDecorators(node, options);\n const decorators = path.map((x) => [print(x), ifBreak(line, \" \")], \"decorators\");\n return {\n decorators: group([shouldBreak ? breakParent : \"\", decorators]),\n multiline: shouldBreak,\n };\n}\n/**\n * Check if there is already new lines in between the decorators of the node.\n */\nfunction hasNewlineBetweenOrAfterDecorators(node, options) {\n return node.decorators.some((decorator) => prettier.util.hasNewline(options.originalText, decorator.end));\n}\nexport function printDecorator(path, options, print) {\n const args = printDecoratorArgs(path, options, print);\n return [\"@\", path.call(print, \"target\"), args];\n}\nexport function printAugmentDecorator(path, options, print) {\n const args = printAugmentDecoratorArgs(path, options, print);\n return [\"@@\", path.call(print, \"target\"), args, \";\"];\n}\nfunction printAugmentDecoratorArgs(path, options, print) {\n return [\n \"(\",\n group([\n indent(join(\", \", [\n path.call(print, \"targetType\"),\n ...path.map((arg) => [softline, print(arg)], \"arguments\"),\n ])),\n softline,\n ]),\n \")\",\n ];\n}\nexport function printDirectives(path, options, print) {\n const node = path.getValue();\n if (node.directives === undefined || node.directives.length === 0) {\n return \"\";\n }\n const directives = path.map((x) => [print(x), line], \"directives\");\n return group([...directives, breakParent]);\n}\nexport function printDirective(path, options, print) {\n const args = printDirectiveArgs(path, options, print);\n return [\"#\", path.call(print, \"target\"), \" \", args];\n}\nfunction printDecoratorArgs(path, options, print) {\n const node = path.getValue();\n if (node.arguments.length === 0) {\n return \"\";\n }\n // So that decorator with single object arguments have ( and { hugging.\n // @deco({\n // value: \"foo\"\n // })\n const shouldHug = node.arguments.length === 1 &&\n (node.arguments[0].kind === SyntaxKind.ModelExpression ||\n node.arguments[0].kind === SyntaxKind.StringLiteral);\n if (shouldHug) {\n return [\n \"(\",\n join(\", \", path.map((arg) => [print(arg)], \"arguments\")),\n \")\",\n ];\n }\n return [\n \"(\",\n group([\n indent(join(\", \", path.map((arg) => [softline, print(arg)], \"arguments\"))),\n softline,\n ]),\n \")\",\n ];\n}\nexport function printDirectiveArgs(path, options, print) {\n const node = path.getValue();\n if (node.arguments.length === 0) {\n return \"\";\n }\n return join(\" \", path.map((arg) => [print(arg)], \"arguments\"));\n}\nexport function printEnumStatement(path, options, print) {\n const { decorators } = printDecorators(path, options, print, { tryInline: false });\n const id = path.call(print, \"id\");\n return [decorators, \"enum \", id, \" \", printEnumBlock(path, options, print)];\n}\nfunction printEnumBlock(path, options, print) {\n const node = path.getValue();\n if (node.members.length === 0) {\n return \"{}\";\n }\n return group([\n \"{\",\n indent([\n hardline,\n join(hardline, path.map((x) => [print(x), \",\"], \"members\")),\n ]),\n hardline,\n \"}\",\n ]);\n}\nexport function printEnumMember(path, options, print) {\n const node = path.getValue();\n const id = path.call(print, \"id\");\n const value = node.value ? [\": \", path.call(print, \"value\")] : \"\";\n const { decorators, multiline } = printDecorators(path, options, print, { tryInline: true });\n const propertyIndex = path.stack[path.stack.length - 2];\n const isNotFirst = typeof propertyIndex === \"number\" && propertyIndex > 0;\n return [multiline && isNotFirst ? hardline : \"\", decorators, id, value];\n}\nfunction printEnumSpreadMember(path, options, print) {\n return [\"...\", path.call(print, \"target\")];\n}\nexport function printUnionStatement(path, options, print) {\n const id = path.call(print, \"id\");\n const { decorators } = printDecorators(path, options, print, { tryInline: false });\n const generic = printTemplateParameters(path, options, print, \"templateParameters\");\n return [decorators, \"union \", id, generic, \" \", printUnionVariantsBlock(path, options, print)];\n}\nexport function printUnionVariantsBlock(path, options, print) {\n const node = path.getValue();\n if (node.options.length === 0) {\n return \"{}\";\n }\n return group([\n \"{\",\n indent([\n hardline,\n join(hardline, path.map((x) => [print(x), \",\"], \"options\")),\n ]),\n hardline,\n \"}\",\n ]);\n}\nexport function printUnionVariant(path, options, print) {\n const id = path.call(print, \"id\");\n const value = [\": \", path.call(print, \"value\")];\n const { decorators } = printDecorators(path, options, print, { tryInline: true });\n return [decorators, id, value];\n}\nexport function printInterfaceStatement(path, options, print) {\n const id = path.call(print, \"id\");\n const { decorators } = printDecorators(path, options, print, { tryInline: false });\n const generic = printTemplateParameters(path, options, print, \"templateParameters\");\n const extendList = printInterfaceExtends(path, options, print);\n return [\n decorators,\n \"interface \",\n id,\n generic,\n extendList,\n \" \",\n printInterfaceMembers(path, options, print),\n ];\n}\nfunction printInterfaceExtends(path, options, print) {\n const node = path.getValue();\n if (node.extends.length === 0) {\n return \"\";\n }\n const keyword = \"extends \";\n return [group(indent([line, keyword, indent(join([\",\", line], path.map(print, \"extends\")))]))];\n}\nexport function printInterfaceMembers(path, options, print) {\n const node = path.getValue();\n const hasOperations = node.operations.length > 0;\n const nodeHasComments = hasComments(node, CommentCheckFlags.Dangling);\n if (!hasOperations && !nodeHasComments) {\n return \"{}\";\n }\n const lastOperation = node.operations[node.operations.length - 1];\n const parts = [];\n path.each((operationPath) => {\n const node = operationPath.getValue();\n const printed = print(operationPath);\n parts.push(printed);\n if (node !== lastOperation) {\n parts.push(hardline);\n if (isNextLineEmpty(options.originalText, node, options.locEnd)) {\n parts.push(hardline);\n }\n }\n }, \"operations\");\n const body = [hardline, parts];\n if (nodeHasComments) {\n body.push(printDanglingComments(path, options, { sameIndent: true }));\n }\n return group([\"{\", indent(body), hardline, \"}\"]);\n}\nfunction printDanglingComments(path, options, { sameIndent }) {\n const node = path.getValue();\n const parts = [];\n if (!node || !node.comments) {\n return \"\";\n }\n path.each((commentPath) => {\n const comment = commentPath.getValue();\n if (!comment.leading && !comment.trailing) {\n parts.push(printComment(path, options));\n }\n }, \"comments\");\n if (parts.length === 0) {\n return \"\";\n }\n if (sameIndent) {\n return join(hardline, parts);\n }\n return indent([hardline, join(hardline, parts)]);\n}\n/**\n * Handle printing an intersection node.\n * @example `Foo & Bar` or `{foo: string} & {bar: string}`\n *\n * @param path Prettier AST Path.\n * @param options Prettier options\n * @param print Prettier child print callback.\n * @returns Prettier document.\n */\nexport function printIntersection(path, options, print) {\n const node = path.getValue();\n const types = path.map(print, \"options\");\n const result = [];\n let wasIndented = false;\n for (let i = 0; i < types.length; ++i) {\n if (i === 0) {\n result.push(types[i]);\n }\n else if (isModelNode(node.options[i - 1]) && isModelNode(node.options[i])) {\n // If both are objects, don't indent\n result.push([\" & \", wasIndented ? indent(types[i]) : types[i]]);\n }\n else if (!isModelNode(node.options[i - 1]) && !isModelNode(node.options[i])) {\n // If no object is involved, go to the next line if it breaks\n result.push(indent([\" &\", line, types[i]]));\n }\n else {\n // If you go from object to non-object or vis-versa, then inline it\n if (i > 1) {\n wasIndented = true;\n }\n result.push(\" & \", i > 1 ? indent(types[i]) : types[i]);\n }\n }\n return group(result);\n}\nfunction isModelNode(node) {\n return node.kind === SyntaxKind.ModelExpression;\n}\nexport function printArray(path, options, print) {\n return [path.call(print, \"elementType\"), \"[]\"];\n}\nexport function printTuple(path, options, print) {\n return group([\n \"[\",\n indent(join(\", \", path.map((arg) => [softline, print(arg)], \"values\"))),\n softline,\n \"]\",\n ]);\n}\nexport function printMemberExpression(path, options, print) {\n const node = path.getValue();\n return [node.base ? [path.call(print, \"base\"), \".\"] : \"\", path.call(print, \"id\")];\n}\nexport function printModelExpression(path, options, print) {\n const inBlock = isModelExpressionInBlock(path);\n if (inBlock) {\n return group(printModelPropertiesBlock(path, options, print));\n }\n else {\n return group([\n indent(join(\", \", path.map((arg) => [softline, print(arg)], \"properties\"))),\n softline,\n ]);\n }\n}\nexport function printModelStatement(path, options, print) {\n const node = path.getValue();\n const id = path.call(print, \"id\");\n const heritage = node.extends\n ? [ifBreak(line, \" \"), \"extends \", path.call(print, \"extends\")]\n : \"\";\n const isBase = node.is ? [ifBreak(line, \" \"), \"is \", path.call(print, \"is\")] : \"\";\n const generic = printTemplateParameters(path, options, print, \"templateParameters\");\n const nodeHasComments = hasComments(node, CommentCheckFlags.Dangling);\n const shouldPrintBody = nodeHasComments || !(node.properties.length === 0 && node.is);\n const body = shouldPrintBody ? [\" \", printModelPropertiesBlock(path, options, print)] : \";\";\n return [\n printDecorators(path, options, print, { tryInline: false }).decorators,\n \"model \",\n id,\n generic,\n group(indent([\"\", heritage, isBase])),\n body,\n ];\n}\nfunction printModelPropertiesBlock(path, options, print) {\n var _a;\n const node = path.getValue();\n const hasProperties = node.properties && node.properties.length > 0;\n const nodeHasComments = hasComments(node, CommentCheckFlags.Dangling);\n if (!hasProperties && !nodeHasComments) {\n return \"{}\";\n }\n const tryInline = ((_a = path.getParentNode()) === null || _a === void 0 ? void 0 : _a.kind) === SyntaxKind.TemplateParameterDeclaration;\n const lineDoc = tryInline ? softline : hardline;\n const seperator = isModelAValue(path) ? \",\" : \";\";\n const body = [\n lineDoc,\n join([seperator, lineDoc], path.map((x) => [print(x)], \"properties\")),\n hasProperties ? ifBreak(seperator) : \"\",\n ];\n if (nodeHasComments) {\n body.push(printDanglingComments(path, options, { sameIndent: true }));\n }\n return group([\"{\", indent(body), lineDoc, \"}\"]);\n}\n/**\n * Figure out if this model is being used as a definition or value.\n * @returns true if the model is used as a value(e.g. decorator value), false if it is used as a model definition.\n */\nfunction isModelAValue(path) {\n let count = 0;\n let node = path.getValue();\n do {\n switch (node.kind) {\n case SyntaxKind.ModelStatement:\n case SyntaxKind.AliasStatement:\n case SyntaxKind.OperationStatement:\n return false;\n case SyntaxKind.DecoratorExpression:\n return true;\n }\n } while ((node = path.getParentNode(count++)));\n return true;\n}\nexport function printModelProperty(path, options, print) {\n const node = path.getValue();\n const propertyIndex = path.stack[path.stack.length - 2];\n const isNotFirst = typeof propertyIndex === \"number\" && propertyIndex > 0;\n const { decorators, multiline } = printDecorators(path, options, print, {\n tryInline: true,\n });\n const id = printIdentifier(node.id, options);\n return [\n multiline && isNotFirst ? hardline : \"\",\n printDirectives(path, options, print),\n decorators,\n id,\n node.optional ? \"?: \" : \": \",\n path.call(print, \"value\"),\n node.default ? [\" = \", path.call(print, \"default\")] : \"\",\n ];\n}\nfunction printIdentifier(id, options) {\n return printId(id.sv);\n}\nexport function printId(sv) {\n if (needBacktick(sv)) {\n const escapedString = sv\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/\\t/g, \"\\\\t\")\n .replace(/`/g, \"\\\\`\");\n return `\\`${escapedString}\\``;\n }\n else {\n return sv;\n }\n}\nfunction needBacktick(sv) {\n if (sv.length === 0) {\n return false;\n }\n if (Keywords.has(sv)) {\n return true;\n }\n let cp = sv.codePointAt(0);\n if (!isIdentifierStart(cp)) {\n return true;\n }\n let pos = 0;\n do {\n pos += utf16CodeUnits(cp);\n } while (pos < sv.length && isIdentifierContinue((cp = sv.codePointAt(pos))));\n return pos < sv.length;\n}\nfunction isModelExpressionInBlock(path) {\n const parent = path.getParentNode();\n switch (parent === null || parent === void 0 ? void 0 : parent.kind) {\n case SyntaxKind.OperationSignatureDeclaration:\n return parent.parameters !== path.getNode();\n default:\n return true;\n }\n}\nexport function printScalarStatement(path, options, print) {\n const node = path.getValue();\n const id = path.call(print, \"id\");\n const template = printTemplateParameters(path, options, print, \"templateParameters\");\n const heritage = node.extends\n ? [ifBreak(line, \" \"), \"extends \", path.call(print, \"extends\")]\n : \"\";\n return [\n printDecorators(path, options, print, { tryInline: false }).decorators,\n \"scalar \",\n id,\n template,\n group(indent([\"\", heritage])),\n \";\",\n ];\n}\nexport function printNamespaceStatement(path, options, print) {\n const printNested = (currentPath, parentNames) => {\n var _a;\n const names = [...parentNames, currentPath.call(print, \"id\")];\n const currentNode = currentPath.getNode();\n if (!isArray(currentNode === null || currentNode === void 0 ? void 0 : currentNode.statements) &&\n ((_a = currentNode === null || currentNode === void 0 ? void 0 : currentNode.statements) === null || _a === void 0 ? void 0 : _a.kind) === SyntaxKind.NamespaceStatement) {\n return path.call((x) => printNested(x, names), \"statements\");\n }\n const suffix = (currentNode === null || currentNode === void 0 ? void 0 : currentNode.statements) === undefined\n ? \";\"\n : [\n \" {\",\n indent([hardline, printStatementSequence(path, options, print, \"statements\")]),\n hardline,\n \"}\",\n ];\n const { decorators } = printDecorators(path, options, print, { tryInline: false });\n return [decorators, `namespace `, join(\".\", names), suffix];\n };\n return printNested(path, []);\n}\nexport function printOperationSignatureDeclaration(path, options, print) {\n return [\"(\", path.call(print, \"parameters\"), \"): \", path.call(print, \"returnType\")];\n}\nexport function printOperationSignatureReference(path, options, print) {\n return [\" is \", path.call(print, \"baseOperation\")];\n}\nexport function printOperationStatement(path, options, print) {\n var _a;\n const inInterface = ((_a = path.getParentNode()) === null || _a === void 0 ? void 0 : _a.kind) === SyntaxKind.InterfaceStatement;\n const templateParams = printTemplateParameters(path, options, print, \"templateParameters\");\n const { decorators } = printDecorators(path, options, print, {\n tryInline: true,\n });\n return [\n decorators,\n inInterface ? \"\" : \"op \",\n path.call(print, \"id\"),\n templateParams,\n path.call(print, \"signature\"),\n `;`,\n ];\n}\nexport function printStatementSequence(path, options, print, property) {\n const node = path.getValue();\n const parts = [];\n const lastStatement = getLastStatement(node[property]);\n path.each((statementPath) => {\n const node = path.getValue();\n if (node.kind === SyntaxKind.EmptyStatement) {\n return;\n }\n const printed = print(statementPath);\n parts.push(printed);\n if (node !== lastStatement) {\n parts.push(hardline);\n if (isNextLineEmpty(options.originalText, node, options.locEnd)) {\n parts.push(hardline);\n }\n }\n }, property);\n return parts;\n}\nfunction getLastStatement(statements) {\n for (let i = statements.length - 1; i >= 0; i--) {\n const statement = statements[i];\n if (statement.kind !== SyntaxKind.EmptyStatement) {\n return statement;\n }\n }\n return undefined;\n}\nexport function printUnion(path, options, print) {\n const node = path.getValue();\n const shouldHug = shouldHugType(node);\n const types = path.map((typePath) => {\n let printedType = print(typePath);\n if (!shouldHug) {\n printedType = align(2, printedType);\n }\n return printedType;\n }, \"options\");\n if (shouldHug) {\n return join(\" | \", types);\n }\n const shouldAddStartLine = true;\n const code = [ifBreak([shouldAddStartLine ? line : \"\", \"| \"], \"\"), join([line, \"| \"], types)];\n return group(indent(code));\n}\nfunction shouldHugType(node) {\n if (node.kind === SyntaxKind.UnionExpression || node.kind === SyntaxKind.IntersectionExpression) {\n return node.options.length < 4;\n }\n return false;\n}\nexport function printTypeReference(path, options, print) {\n const type = path.call(print, \"target\");\n const template = printTemplateParameters(path, options, print, \"arguments\");\n return [type, template];\n}\nexport function printValueOfExpression(path, options, print) {\n const type = path.call(print, \"target\");\n return [\"valueof \", type];\n}\nfunction printTemplateParameterDeclaration(path, options, print) {\n const node = path.getValue();\n return [\n path.call(print, \"id\"),\n node.constraint ? [\" extends \", path.call(print, \"constraint\")] : \"\",\n node.default ? [\" = \", path.call(print, \"default\")] : \"\",\n ];\n}\nfunction printModelSpread(path, options, print) {\n return [\"...\", path.call(print, \"target\")];\n}\nfunction printDecoratorDeclarationStatement(path, options, print) {\n const id = path.call(print, \"id\");\n const parameters = [\n group([\n indent(join(\", \", [\n [softline, path.call(print, \"target\")],\n ...path.map((arg) => [softline, print(arg)], \"parameters\"),\n ])),\n softline,\n ]),\n ];\n return [printModifiers(path, options, print), \"dec \", id, \"(\", parameters, \")\", \";\"];\n}\nfunction printFunctionDeclarationStatement(path, options, print) {\n const node = path.getValue();\n const id = path.call(print, \"id\");\n const parameters = [\n group([\n indent(join(\", \", path.map((arg) => [softline, print(arg)], \"parameters\"))),\n softline,\n ]),\n ];\n const returnType = node.returnType ? [\": \", path.call(print, \"returnType\")] : \"\";\n return [printModifiers(path, options, print), \"fn \", id, \"(\", parameters, \")\", returnType, \";\"];\n}\nfunction printFunctionParameterDeclaration(path, options, print) {\n const node = path.getValue();\n const id = path.call(print, \"id\");\n const type = node.type ? [\": \", path.call(print, \"type\")] : \"\";\n return [\n node.rest ? \"...\" : \"\",\n printDirectives(path, options, print),\n id,\n node.optional ? \"?\" : \"\",\n type,\n ];\n}\nexport function printModifiers(path, options, print) {\n const node = path.getValue();\n if (node.modifiers.length === 0) {\n return \"\";\n }\n return path.map((x) => [print(x), \" \"], \"modifiers\");\n}\nfunction printStringLiteral(path, options) {\n const node = path.getValue();\n return getRawText(node, options);\n}\nfunction printNumberLiteral(path, options) {\n const node = path.getValue();\n return getRawText(node, options);\n}\nfunction printBooleanLiteral(path, options) {\n const node = path.getValue();\n return node.value ? \"true\" : \"false\";\n}\nfunction printProjectionStatement(path, options, print) {\n const selector = path.call(print, \"selector\");\n const id = path.call(print, \"id\");\n const projections = path.map(print, \"projections\").flatMap((x) => [hardline, x]);\n return [\n \"projection \",\n selector,\n \"#\",\n id,\n \" {\",\n indent(projections),\n projections.length > 0 ? hardline : \"\",\n \"}\",\n ];\n}\nfunction printProjection(path, options, print) {\n const node = path.getValue();\n const params = printProjectionParameters(path, options, print);\n const body = printProjectionExpressionStatements(path, options, print, \"body\");\n return [\n ...node.modifierIds.flatMap((i) => [i.sv, \" \"]),\n node.directionId.sv,\n params,\n \" {\",\n indent(body),\n hardline,\n \"}\",\n ];\n}\nfunction printProjectionParameters(path, options, print) {\n const node = path.getValue();\n const params = node.parameters;\n if (params.length === 0) {\n return \"\";\n }\n const shouldHug = params.length === 1;\n if (shouldHug) {\n return [\"(\", printItemList(path, options, print, \"parameters\"), \")\"];\n }\n else {\n const body = indent([softline, join([\", \", softline], path.map(print, \"parameters\"))]);\n return group([\"(\", body, softline, \")\"]);\n }\n}\nfunction printProjectionExpressionStatements(path, options, print, key) {\n const parts = [hardline];\n const lastIndex = path.getValue()[key].length - 1;\n path.each((statementPath, index) => {\n const node = path.getValue();\n if (node.kind === SyntaxKind.EmptyStatement) {\n return;\n }\n const printed = print(statementPath);\n parts.push(printed);\n parts.push(\";\");\n if (index < lastIndex) {\n parts.push(hardline);\n if (isNextLineEmpty(options.originalText, node, options.locEnd)) {\n parts.push(hardline);\n }\n }\n }, key);\n return parts;\n}\nfunction printProjectionParameterDeclaration(path, options, print) {\n return path.call(print, \"id\");\n}\nfunction printProjectionExpressionStatement(path, options, print) {\n return path.call(print, \"expr\");\n}\nfunction printProjectionIfExpressionNode(path, options, print) {\n const node = path.getValue();\n const test = path.call(print, \"test\");\n const consequent = path.call(print, \"consequent\");\n const alternate = node.alternate ? [\" else \", path.call(print, \"alternate\")] : \"\";\n return [\"if \", test, \" \", consequent, alternate];\n}\nexport function printProjectionBlockExpressionNode(path, options, print) {\n const node = path.getValue();\n if (node.statements.length === 0) {\n return \"{}\";\n }\n return [\n \"{\",\n indent(printProjectionExpressionStatements(path, options, print, \"statements\")),\n hardline,\n \"}\",\n ];\n}\nexport function printProjectionMemberExpression(path, options, print) {\n const node = path.getValue();\n return [path.call(print, \"base\"), node.selector, path.call(print, \"id\")];\n}\nexport function printProjectionLeftRightExpression(path, options, print) {\n const node = path.getValue();\n return [path.call(print, \"left\"), \" \", node.op, \" \", path.call(print, \"right\")];\n}\nexport function printProjectionUnaryExpression(path, options, print) {\n return [\"!\", path.call(print, \"target\")];\n}\nexport function printProjectionCallExpression(path, options, print) {\n const node = path.getValue();\n const target = path.call(print, \"target\");\n const params = printItemList(path, options, print, \"arguments\");\n if (node.callKind === \"method\") {\n return [target, \"(\", params, \")\"];\n }\n else {\n return [target, \"<\", params, \">\"];\n }\n}\nexport function printProjectionLambdaExpression(path, options, print) {\n return [\n \"(\",\n printItemList(path, options, print, \"parameters\"),\n \")\",\n \" => \",\n path.call(print, \"body\"),\n ];\n}\nexport function printProjectionLambdaParameterDeclaration(path, options, print) {\n return path.call(print, \"id\");\n}\nexport function printReturnExpression(path, options, print) {\n return [\"return \", path.call(print, \"value\")];\n}\nfunction printItemList(path, options, print, key) {\n return join(\", \", path.map(print, key));\n}\n/**\n * @param node Node that has postition information.\n * @param options Prettier options\n * @returns Raw text in the file for the given node.\n */\nfunction getRawText(node, options) {\n return options.originalText.slice(node.pos, node.end);\n}\nfunction hasComments(node, flags) {\n if (!node.comments || node.comments.length === 0) {\n return false;\n }\n const test = getCommentTestFunction(flags);\n return test ? node.comments.some(test) : true;\n}\nvar CommentCheckFlags;\n(function (CommentCheckFlags) {\n /** Check comment is a leading comment */\n CommentCheckFlags[CommentCheckFlags[\"Leading\"] = 2] = \"Leading\";\n /** Check comment is a trailing comment */\n CommentCheckFlags[CommentCheckFlags[\"Trailing\"] = 4] = \"Trailing\";\n /** Check comment is a dangling comment */\n CommentCheckFlags[CommentCheckFlags[\"Dangling\"] = 8] = \"Dangling\";\n /** Check comment is a block comment */\n CommentCheckFlags[CommentCheckFlags[\"Block\"] = 16] = \"Block\";\n /** Check comment is a line comment */\n CommentCheckFlags[CommentCheckFlags[\"Line\"] = 32] = \"Line\";\n /** Check comment is a `prettier-ignore` comment */\n CommentCheckFlags[CommentCheckFlags[\"PrettierIgnore\"] = 64] = \"PrettierIgnore\";\n /** Check comment is the first attached comment */\n CommentCheckFlags[CommentCheckFlags[\"First\"] = 128] = \"First\";\n /** Check comment is the last attached comment */\n CommentCheckFlags[CommentCheckFlags[\"Last\"] = 256] = \"Last\";\n})(CommentCheckFlags || (CommentCheckFlags = {}));\nfunction getCommentTestFunction(flags) {\n if (flags) {\n return (comment, index, comments) => !((flags & CommentCheckFlags.Leading && !comment.leading) ||\n (flags & CommentCheckFlags.Trailing && !comment.trailing) ||\n (flags & CommentCheckFlags.Dangling && (comment.leading || comment.trailing)) ||\n (flags & CommentCheckFlags.Block && !isBlockComment(comment)) ||\n (flags & CommentCheckFlags.Line && !isLineComment(comment)) ||\n (flags & CommentCheckFlags.First && index !== 0) ||\n (flags & CommentCheckFlags.Last && index !== comments.length - 1));\n }\n return undefined;\n}\nfunction isBlockComment(comment) {\n return comment.kind === SyntaxKind.BlockComment;\n}\nfunction isLineComment(comment) {\n return comment.kind === SyntaxKind.BlockComment;\n}\n//# sourceMappingURL=printer.js.map","import { trim } from \"./charcode.js\";\nimport { compilerAssert } from \"./diagnostics.js\";\nimport { createDiagnostic } from \"./messages.js\";\nimport { Token, TokenDisplay, TokenFlags, createScanner, isComment, isKeyword, isPunctuation, isStatementKeyword, isTrivia, } from \"./scanner.js\";\nimport { IdentifierKind, SyntaxKind, } from \"./types.js\";\nimport { isArray, mutate } from \"./util.js\";\n/**\n * The fixed set of options for each of the kinds of delimited lists in TypeSpec.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nvar ListKind;\n(function (ListKind) {\n const PropertiesBase = {\n allowEmpty: true,\n toleratedDelimiterIsValid: true,\n trailingDelimiterIsValid: true,\n allowedStatementKeyword: Token.None,\n };\n ListKind.OperationParameters = {\n ...PropertiesBase,\n open: Token.OpenParen,\n close: Token.CloseParen,\n delimiter: Token.Comma,\n toleratedDelimiter: Token.Semicolon,\n };\n ListKind.DecoratorArguments = {\n ...ListKind.OperationParameters,\n invalidAnnotationTarget: \"expression\",\n };\n ListKind.ModelProperties = {\n ...PropertiesBase,\n open: Token.OpenBrace,\n close: Token.CloseBrace,\n delimiter: Token.Semicolon,\n toleratedDelimiter: Token.Comma,\n };\n ListKind.InterfaceMembers = {\n ...PropertiesBase,\n open: Token.OpenBrace,\n close: Token.CloseBrace,\n delimiter: Token.Semicolon,\n toleratedDelimiter: Token.Comma,\n toleratedDelimiterIsValid: false,\n allowedStatementKeyword: Token.OpKeyword,\n };\n ListKind.UnionVariants = {\n ...PropertiesBase,\n open: Token.OpenBrace,\n close: Token.CloseBrace,\n delimiter: Token.Semicolon,\n toleratedDelimiter: Token.Comma,\n toleratedDelimiterIsValid: true,\n };\n ListKind.EnumMembers = {\n ...ListKind.ModelProperties,\n };\n const ExpresionsBase = {\n allowEmpty: true,\n delimiter: Token.Comma,\n toleratedDelimiter: Token.Semicolon,\n toleratedDelimiterIsValid: false,\n trailingDelimiterIsValid: false,\n invalidAnnotationTarget: \"expression\",\n allowedStatementKeyword: Token.None,\n };\n ListKind.TemplateParameters = {\n ...ExpresionsBase,\n allowEmpty: false,\n open: Token.LessThan,\n close: Token.GreaterThan,\n invalidAnnotationTarget: \"template parameter\",\n };\n ListKind.TemplateArguments = {\n ...ListKind.TemplateParameters,\n };\n ListKind.CallArguments = {\n ...ExpresionsBase,\n allowEmpty: true,\n open: Token.OpenParen,\n close: Token.CloseParen,\n };\n ListKind.Heritage = {\n ...ExpresionsBase,\n allowEmpty: false,\n open: Token.None,\n close: Token.None,\n };\n ListKind.Tuple = {\n ...ExpresionsBase,\n allowEmpty: true,\n open: Token.OpenBracket,\n close: Token.CloseBracket,\n };\n ListKind.FunctionParameters = {\n ...ExpresionsBase,\n allowEmpty: true,\n open: Token.OpenParen,\n close: Token.CloseParen,\n invalidAnnotationTarget: \"expression\",\n };\n ListKind.ProjectionExpression = {\n ...ExpresionsBase,\n allowEmpty: true,\n open: Token.OpenParen,\n close: Token.CloseParen,\n };\n ListKind.ProjectionParameter = {\n ...ExpresionsBase,\n allowEmpty: true,\n open: Token.OpenParen,\n close: Token.CloseParen,\n };\n})(ListKind || (ListKind = {}));\nexport function parse(code, options = {}) {\n const parser = createParser(code, options);\n return parser.parseTypeSpecScript();\n}\nexport function parseStandaloneTypeReference(code) {\n const parser = createParser(code);\n const node = parser.parseStandaloneReferenceExpression();\n return [node, parser.parseDiagnostics];\n}\nfunction createParser(code, options = {}) {\n let parseErrorInNextFinishedNode = false;\n let previousTokenEnd = -1;\n let realPositionOfLastError = -1;\n let missingIdentifierCounter = 0;\n let treePrintable = true;\n let newLineIsTrivia = true;\n let currentMode = 0 /* ParseMode.Syntax */;\n const parseDiagnostics = [];\n const scanner = createScanner(code, reportDiagnostic);\n const comments = [];\n let docRanges = [];\n nextToken();\n return {\n parseDiagnostics,\n parseTypeSpecScript,\n parseStandaloneReferenceExpression,\n };\n function parseTypeSpecScript() {\n const statements = parseTypeSpecScriptItemList();\n return {\n kind: SyntaxKind.TypeSpecScript,\n statements,\n file: scanner.file,\n id: {\n kind: SyntaxKind.Identifier,\n sv: scanner.file.path,\n pos: 0,\n end: 0,\n flags: 8 /* NodeFlags.Synthetic */,\n },\n namespaces: [],\n usings: [],\n locals: undefined,\n inScopeNamespaces: [],\n parseDiagnostics,\n comments,\n printable: treePrintable,\n parseOptions: options,\n ...finishNode(0),\n };\n }\n function parseTypeSpecScriptItemList() {\n const stmts = [];\n let seenBlocklessNs = false;\n let seenDecl = false;\n let seenUsing = false;\n while (token() !== Token.EndOfFile) {\n const [pos, docs] = parseDocList();\n const directives = parseDirectiveList();\n const decorators = parseDecoratorList();\n const tok = token();\n let item;\n switch (tok) {\n case Token.AtAt:\n reportInvalidDecorators(decorators, \"augment decorator statement\");\n item = parseAugmentDecorator();\n break;\n case Token.ImportKeyword:\n reportInvalidDecorators(decorators, \"import statement\");\n item = parseImportStatement();\n break;\n case Token.ModelKeyword:\n item = parseModelStatement(pos, decorators);\n break;\n case Token.ScalarKeyword:\n item = parseScalarStatement(pos, decorators);\n break;\n case Token.NamespaceKeyword:\n item = parseNamespaceStatement(pos, decorators);\n break;\n case Token.InterfaceKeyword:\n item = parseInterfaceStatement(pos, decorators);\n break;\n case Token.UnionKeyword:\n item = parseUnionStatement(pos, decorators);\n break;\n case Token.OpKeyword:\n item = parseOperationStatement(pos, decorators);\n break;\n case Token.EnumKeyword:\n item = parseEnumStatement(pos, decorators);\n break;\n case Token.AliasKeyword:\n reportInvalidDecorators(decorators, \"alias statement\");\n item = parseAliasStatement(pos);\n break;\n case Token.UsingKeyword:\n reportInvalidDecorators(decorators, \"using statement\");\n item = parseUsingStatement(pos);\n break;\n case Token.ProjectionKeyword:\n reportInvalidDecorators(decorators, \"projection statement\");\n item = parseProjectionStatement(pos);\n break;\n case Token.Semicolon:\n reportInvalidDecorators(decorators, \"empty statement\");\n item = parseEmptyStatement(pos);\n break;\n // Start of declaration with modifiers\n case Token.ExternKeyword:\n case Token.FnKeyword:\n case Token.DecKeyword:\n item = parseDeclaration(pos);\n break;\n default:\n item = parseInvalidStatement(pos, decorators);\n break;\n }\n mutate(item).directives = directives;\n mutate(item).docs = docs;\n if (isBlocklessNamespace(item)) {\n if (seenBlocklessNs) {\n error({ code: \"multiple-blockless-namespace\", target: item });\n }\n if (seenDecl) {\n error({ code: \"blockless-namespace-first\", target: item });\n }\n seenBlocklessNs = true;\n }\n else if (item.kind === SyntaxKind.ImportStatement) {\n if (seenDecl || seenBlocklessNs || seenUsing) {\n error({ code: \"import-first\", target: item });\n }\n }\n else if (item.kind === SyntaxKind.UsingStatement) {\n seenUsing = true;\n }\n else {\n seenDecl = true;\n }\n stmts.push(item);\n }\n return stmts;\n }\n function parseStatementList() {\n const stmts = [];\n while (token() !== Token.CloseBrace) {\n const [pos, docs] = parseDocList();\n const directives = parseDirectiveList();\n const decorators = parseDecoratorList();\n const tok = token();\n let item;\n switch (tok) {\n case Token.AtAt:\n reportInvalidDecorators(decorators, \"augment decorator statement\");\n item = parseAugmentDecorator();\n break;\n case Token.ImportKeyword:\n reportInvalidDecorators(decorators, \"import statement\");\n item = parseImportStatement();\n error({ code: \"import-first\", messageId: \"topLevel\", target: item });\n break;\n case Token.ModelKeyword:\n item = parseModelStatement(pos, decorators);\n break;\n case Token.ScalarKeyword:\n item = parseScalarStatement(pos, decorators);\n break;\n case Token.NamespaceKeyword:\n const ns = parseNamespaceStatement(pos, decorators);\n if (!Array.isArray(ns.statements)) {\n error({ code: \"blockless-namespace-first\", messageId: \"topLevel\", target: ns });\n }\n item = ns;\n break;\n case Token.InterfaceKeyword:\n item = parseInterfaceStatement(pos, decorators);\n break;\n case Token.UnionKeyword:\n item = parseUnionStatement(pos, decorators);\n break;\n case Token.OpKeyword:\n item = parseOperationStatement(pos, decorators);\n break;\n case Token.EnumKeyword:\n item = parseEnumStatement(pos, decorators);\n break;\n case Token.AliasKeyword:\n reportInvalidDecorators(decorators, \"alias statement\");\n item = parseAliasStatement(pos);\n break;\n case Token.UsingKeyword:\n reportInvalidDecorators(decorators, \"using statement\");\n item = parseUsingStatement(pos);\n break;\n case Token.ExternKeyword:\n case Token.FnKeyword:\n case Token.DecKeyword:\n item = parseDeclaration(pos);\n break;\n case Token.ProjectionKeyword:\n reportInvalidDecorators(decorators, \"project statement\");\n item = parseProjectionStatement(pos);\n break;\n case Token.EndOfFile:\n parseExpected(Token.CloseBrace);\n return stmts;\n case Token.Semicolon:\n reportInvalidDecorators(decorators, \"empty statement\");\n item = parseEmptyStatement(pos);\n break;\n default:\n item = parseInvalidStatement(pos, decorators);\n break;\n }\n mutate(item).directives = directives;\n mutate(item).docs = docs;\n stmts.push(item);\n }\n return stmts;\n }\n function parseDecoratorList() {\n const decorators = [];\n while (token() === Token.At) {\n decorators.push(parseDecoratorExpression());\n }\n return decorators;\n }\n function parseDirectiveList() {\n const directives = [];\n while (token() === Token.Hash) {\n directives.push(parseDirectiveExpression());\n }\n return directives;\n }\n function parseNamespaceStatement(pos, decorators) {\n parseExpected(Token.NamespaceKeyword);\n let currentName = parseIdentifierOrMemberExpression();\n const nsSegments = [];\n while (currentName.kind !== SyntaxKind.Identifier) {\n nsSegments.push(currentName.id);\n currentName = currentName.base;\n }\n nsSegments.push(currentName);\n const nextTok = parseExpectedOneOf(Token.Semicolon, Token.OpenBrace);\n let statements;\n if (nextTok === Token.OpenBrace) {\n statements = parseStatementList();\n parseExpected(Token.CloseBrace);\n }\n let outerNs = {\n kind: SyntaxKind.NamespaceStatement,\n decorators,\n id: nsSegments[0],\n locals: undefined,\n statements,\n ...finishNode(pos),\n };\n for (let i = 1; i < nsSegments.length; i++) {\n outerNs = {\n kind: SyntaxKind.NamespaceStatement,\n decorators: [],\n id: nsSegments[i],\n statements: outerNs,\n locals: undefined,\n ...finishNode(pos),\n };\n }\n return outerNs;\n }\n function parseInterfaceStatement(pos, decorators) {\n parseExpected(Token.InterfaceKeyword);\n const id = parseIdentifier();\n const templateParameters = parseTemplateParameterList();\n let extendList = [];\n if (token() === Token.ExtendsKeyword) {\n nextToken();\n extendList = parseList(ListKind.Heritage, parseReferenceExpression);\n }\n else if (token() === Token.Identifier) {\n error({ code: \"token-expected\", format: { token: \"'extends' or '{'\" } });\n nextToken();\n }\n const operations = parseList(ListKind.InterfaceMembers, (pos, decorators) => parseOperationStatement(pos, decorators, true));\n return {\n kind: SyntaxKind.InterfaceStatement,\n id,\n templateParameters,\n operations,\n extends: extendList,\n decorators,\n ...finishNode(pos),\n };\n }\n function parseTemplateParameterList() {\n const list = parseOptionalList(ListKind.TemplateParameters, parseTemplateParameter);\n let setDefault = false;\n for (const item of list) {\n if (!item.default && setDefault) {\n error({ code: \"default-required\", target: item });\n continue;\n }\n if (item.default) {\n setDefault = true;\n }\n }\n return list;\n }\n function parseUnionStatement(pos, decorators) {\n parseExpected(Token.UnionKeyword);\n const id = parseIdentifier();\n const templateParameters = parseTemplateParameterList();\n const options = parseList(ListKind.UnionVariants, parseUnionVariant);\n return {\n kind: SyntaxKind.UnionStatement,\n id,\n templateParameters,\n decorators,\n options,\n ...finishNode(pos),\n };\n }\n function parseUnionVariant(pos, decorators) {\n const id = parseIdentifier({\n message: \"property\",\n allowStringLiteral: true,\n });\n parseExpected(Token.Colon);\n const value = parseExpression();\n return {\n kind: SyntaxKind.UnionVariant,\n id,\n value,\n decorators,\n ...finishNode(pos),\n };\n }\n function parseUsingStatement(pos) {\n parseExpected(Token.UsingKeyword);\n const name = parseIdentifierOrMemberExpression(undefined, true);\n parseExpected(Token.Semicolon);\n return {\n kind: SyntaxKind.UsingStatement,\n name,\n ...finishNode(pos),\n };\n }\n function parseOperationStatement(pos, decorators, inInterface) {\n if (inInterface) {\n parseOptional(Token.OpKeyword);\n }\n else {\n parseExpected(Token.OpKeyword);\n }\n const id = parseIdentifier();\n const templateParameters = parseTemplateParameterList();\n // Make sure the next token is one that is expected\n const token = expectTokenIsOneOf(Token.OpenParen, Token.IsKeyword);\n // Check if we're parsing a declaration or reuse of another operation\n let signature;\n const signaturePos = tokenPos();\n if (token === Token.OpenParen) {\n const parameters = parseOperationParameters();\n parseExpected(Token.Colon);\n const returnType = parseExpression();\n signature = {\n kind: SyntaxKind.OperationSignatureDeclaration,\n parameters,\n returnType,\n ...finishNode(signaturePos),\n };\n }\n else {\n parseExpected(Token.IsKeyword);\n const opReference = parseReferenceExpression();\n signature = {\n kind: SyntaxKind.OperationSignatureReference,\n baseOperation: opReference,\n ...finishNode(signaturePos),\n };\n }\n // The interface parser handles semicolon parsing between statements\n if (!inInterface) {\n parseExpected(Token.Semicolon);\n }\n return {\n kind: SyntaxKind.OperationStatement,\n id,\n templateParameters,\n signature,\n decorators,\n ...finishNode(pos),\n };\n }\n function parseOperationParameters() {\n const pos = tokenPos();\n const properties = parseList(ListKind.OperationParameters, parseModelPropertyOrSpread);\n const parameters = {\n kind: SyntaxKind.ModelExpression,\n properties,\n ...finishNode(pos),\n };\n return parameters;\n }\n function parseModelStatement(pos, decorators) {\n parseExpected(Token.ModelKeyword);\n const id = parseIdentifier();\n const templateParameters = parseTemplateParameterList();\n expectTokenIsOneOf(Token.OpenBrace, Token.Equals, Token.ExtendsKeyword, Token.IsKeyword);\n const optionalExtends = parseOptionalModelExtends();\n const optionalIs = optionalExtends ? undefined : parseOptionalModelIs();\n let properties = [];\n if (optionalIs) {\n const tok = expectTokenIsOneOf(Token.Semicolon, Token.OpenBrace);\n if (tok === Token.Semicolon) {\n nextToken();\n }\n else {\n properties = parseList(ListKind.ModelProperties, parseModelPropertyOrSpread);\n }\n }\n else {\n properties = parseList(ListKind.ModelProperties, parseModelPropertyOrSpread);\n }\n return {\n kind: SyntaxKind.ModelStatement,\n id,\n extends: optionalExtends,\n is: optionalIs,\n templateParameters,\n decorators,\n properties,\n ...finishNode(pos),\n };\n }\n function parseOptionalModelExtends() {\n if (parseOptional(Token.ExtendsKeyword)) {\n return parseExpression();\n }\n return undefined;\n }\n function parseOptionalModelIs() {\n if (parseOptional(Token.IsKeyword)) {\n return parseExpression();\n }\n return;\n }\n function parseTemplateParameter() {\n const pos = tokenPos();\n const id = parseIdentifier();\n let constraint;\n if (parseOptional(Token.ExtendsKeyword)) {\n constraint = parseExpression();\n }\n let def;\n if (parseOptional(Token.Equals)) {\n def = parseExpression();\n }\n return {\n kind: SyntaxKind.TemplateParameterDeclaration,\n id,\n constraint,\n default: def,\n ...finishNode(pos),\n };\n }\n function parseModelPropertyOrSpread(pos, decorators) {\n return token() === Token.Ellipsis\n ? parseModelSpreadProperty(pos, decorators)\n : parseModelProperty(pos, decorators);\n }\n function parseModelSpreadProperty(pos, decorators) {\n parseExpected(Token.Ellipsis);\n reportInvalidDecorators(decorators, \"spread property\");\n // This could be broadened to allow any type expression\n const target = parseReferenceExpression();\n return {\n kind: SyntaxKind.ModelSpreadProperty,\n target,\n ...finishNode(pos),\n };\n }\n function parseModelProperty(pos, decorators) {\n const id = parseIdentifier({\n message: \"property\",\n allowStringLiteral: true,\n });\n const optional = parseOptional(Token.Question);\n parseExpected(Token.Colon);\n const value = parseExpression();\n const hasDefault = parseOptional(Token.Equals);\n const defaultValue = hasDefault ? parseExpression() : undefined;\n return {\n kind: SyntaxKind.ModelProperty,\n id,\n decorators,\n value,\n optional,\n default: defaultValue,\n ...finishNode(pos),\n };\n }\n function parseScalarStatement(pos, decorators) {\n parseExpected(Token.ScalarKeyword);\n const id = parseIdentifier();\n const templateParameters = parseTemplateParameterList();\n const optionalExtends = parseOptionalScalarExtends();\n return {\n kind: SyntaxKind.ScalarStatement,\n id,\n templateParameters,\n extends: optionalExtends,\n decorators,\n ...finishNode(pos),\n };\n }\n function parseOptionalScalarExtends() {\n if (parseOptional(Token.ExtendsKeyword)) {\n return parseReferenceExpression();\n }\n return undefined;\n }\n function parseEnumStatement(pos, decorators) {\n parseExpected(Token.EnumKeyword);\n const id = parseIdentifier();\n const members = parseList(ListKind.EnumMembers, parseEnumMemberOrSpread);\n return {\n kind: SyntaxKind.EnumStatement,\n id,\n decorators,\n members,\n ...finishNode(pos),\n };\n }\n function parseEnumMemberOrSpread(pos, decorators) {\n return token() === Token.Ellipsis\n ? parseEnumSpreadMember(pos, decorators)\n : parseEnumMember(pos, decorators);\n }\n function parseEnumSpreadMember(pos, decorators) {\n parseExpected(Token.Ellipsis);\n reportInvalidDecorators(decorators, \"spread enum\");\n const target = parseReferenceExpression();\n return {\n kind: SyntaxKind.EnumSpreadMember,\n target,\n ...finishNode(pos),\n };\n }\n function parseEnumMember(pos, decorators) {\n const id = parseIdentifier({\n message: \"enumMember\",\n allowStringLiteral: true,\n });\n let value;\n if (parseOptional(Token.Colon)) {\n const expr = parseExpression();\n if (expr.kind === SyntaxKind.StringLiteral || expr.kind === SyntaxKind.NumericLiteral) {\n value = expr;\n }\n else if (expr.kind === SyntaxKind.TypeReference &&\n expr.target.flags & 2 /* NodeFlags.ThisNodeHasError */) {\n parseErrorInNextFinishedNode = true;\n }\n else {\n error({ code: \"token-expected\", messageId: \"numericOrStringLiteral\", target: expr });\n }\n }\n return {\n kind: SyntaxKind.EnumMember,\n id,\n value,\n decorators,\n ...finishNode(pos),\n };\n }\n function parseAliasStatement(pos) {\n parseExpected(Token.AliasKeyword);\n const id = parseIdentifier();\n const templateParameters = parseTemplateParameterList();\n parseExpected(Token.Equals);\n const value = parseExpression();\n parseExpected(Token.Semicolon);\n return {\n kind: SyntaxKind.AliasStatement,\n id,\n templateParameters,\n value,\n ...finishNode(pos),\n };\n }\n function parseExpression() {\n return parseUnionExpressionOrHigher();\n }\n function parseUnionExpressionOrHigher() {\n const pos = tokenPos();\n parseOptional(Token.Bar);\n const node = parseIntersectionExpressionOrHigher();\n if (token() !== Token.Bar) {\n return node;\n }\n const options = [node];\n while (parseOptional(Token.Bar)) {\n const expr = parseIntersectionExpressionOrHigher();\n options.push(expr);\n }\n return {\n kind: SyntaxKind.UnionExpression,\n options,\n ...finishNode(pos),\n };\n }\n function parseIntersectionExpressionOrHigher() {\n const pos = tokenPos();\n parseOptional(Token.Ampersand);\n const node = parseArrayExpressionOrHigher();\n if (token() !== Token.Ampersand) {\n return node;\n }\n const options = [node];\n while (parseOptional(Token.Ampersand)) {\n const expr = parseArrayExpressionOrHigher();\n options.push(expr);\n }\n return {\n kind: SyntaxKind.IntersectionExpression,\n options,\n ...finishNode(pos),\n };\n }\n function parseArrayExpressionOrHigher() {\n const pos = tokenPos();\n let expr = parsePrimaryExpression();\n while (parseOptional(Token.OpenBracket)) {\n parseExpected(Token.CloseBracket);\n expr = {\n kind: SyntaxKind.ArrayExpression,\n elementType: expr,\n ...finishNode(pos),\n };\n }\n return expr;\n }\n function parseStandaloneReferenceExpression() {\n const expr = parseReferenceExpression();\n if (parseDiagnostics.length === 0 && token() !== Token.EndOfFile) {\n error({ code: \"token-expected\", messageId: \"unexpected\", format: { token: Token[token()] } });\n }\n return expr;\n }\n function parseValueOfExpression() {\n const pos = tokenPos();\n parseExpected(Token.ValueOfKeyword);\n const target = parseExpression();\n return {\n kind: SyntaxKind.ValueOfExpression,\n target,\n ...finishNode(pos),\n };\n }\n function parseReferenceExpression(message) {\n const pos = tokenPos();\n const target = parseIdentifierOrMemberExpression(message);\n const args = parseOptionalList(ListKind.TemplateArguments, parseExpression);\n return {\n kind: SyntaxKind.TypeReference,\n target,\n arguments: args,\n ...finishNode(pos),\n };\n }\n function parseAugmentDecorator() {\n const pos = tokenPos();\n parseExpected(Token.AtAt);\n // Error recovery: false arg here means don't treat a keyword as an\n // identifier. We want to parse `@ model Foo` as invalid decorator\n // `@<missing identifier>` applied to `model Foo`, and not as `@model`\n // applied to invalid statement `Foo`.\n const target = parseIdentifierOrMemberExpression(undefined, false);\n const args = parseOptionalList(ListKind.DecoratorArguments, parseExpression);\n if (args.length === 0) {\n error({ code: \"augment-decorator-target\" });\n return {\n kind: SyntaxKind.AugmentDecoratorStatement,\n target,\n targetType: {\n kind: SyntaxKind.TypeReference,\n target: createMissingIdentifier(),\n arguments: [],\n ...finishNode(pos),\n },\n arguments: [],\n ...finishNode(pos),\n };\n }\n let [targetEntity, ...decoratorArgs] = args;\n if (targetEntity.kind !== SyntaxKind.TypeReference) {\n error({ code: \"augment-decorator-target\", target: targetEntity });\n targetEntity = {\n kind: SyntaxKind.TypeReference,\n target: createMissingIdentifier(),\n arguments: [],\n ...finishNode(pos),\n };\n }\n return {\n kind: SyntaxKind.AugmentDecoratorStatement,\n target,\n targetType: targetEntity,\n arguments: decoratorArgs,\n ...finishNode(pos),\n };\n }\n function parseImportStatement() {\n const pos = tokenPos();\n parseExpected(Token.ImportKeyword);\n const path = parseStringLiteral();\n parseExpected(Token.Semicolon);\n return {\n kind: SyntaxKind.ImportStatement,\n path,\n ...finishNode(pos),\n };\n }\n function parseDecoratorExpression() {\n const pos = tokenPos();\n parseExpected(Token.At);\n // Error recovery: false arg here means don't treat a keyword as an\n // identifier. We want to parse `@ model Foo` as invalid decorator\n // `@<missing identifier>` applied to `model Foo`, and not as `@model`\n // applied to invalid statement `Foo`.\n const target = parseIdentifierOrMemberExpression(undefined, false);\n const args = parseOptionalList(ListKind.DecoratorArguments, parseExpression);\n return {\n kind: SyntaxKind.DecoratorExpression,\n arguments: args,\n target,\n ...finishNode(pos),\n };\n }\n function parseDirectiveExpression() {\n const pos = tokenPos();\n parseExpected(Token.Hash);\n const target = parseIdentifier();\n if (target.sv !== \"suppress\") {\n error({\n code: \"unknown-directive\",\n format: { id: target.sv },\n target: { pos, end: pos + target.sv.length },\n printable: true,\n });\n }\n // The newline will mark the end of the directive.\n newLineIsTrivia = false;\n const args = [];\n while (token() !== Token.NewLine && token() !== Token.EndOfFile) {\n const param = parseDirectiveParameter();\n if (param) {\n args.push(param);\n }\n }\n newLineIsTrivia = true;\n nextToken();\n return {\n kind: SyntaxKind.DirectiveExpression,\n arguments: args,\n target,\n ...finishNode(pos),\n };\n }\n function parseDirectiveParameter() {\n switch (token()) {\n case Token.Identifier:\n return parseIdentifier();\n case Token.StringLiteral:\n return parseStringLiteral();\n default:\n error({\n code: \"token-expected\",\n messageId: \"unexpected\",\n format: { token: Token[token()] },\n });\n do {\n nextToken();\n } while (!isStatementKeyword(token()) &&\n token() !== Token.NewLine &&\n token() !== Token.At &&\n token() !== Token.Semicolon &&\n token() !== Token.EndOfFile);\n return undefined;\n }\n }\n function parseIdentifierOrMemberExpression(message, recoverFromKeyword = true) {\n const pos = tokenPos();\n let base = parseIdentifier({\n message,\n recoverFromKeyword,\n });\n while (token() !== Token.EndOfFile) {\n if (parseOptional(Token.Dot)) {\n base = {\n kind: SyntaxKind.MemberExpression,\n base,\n // Error recovery: false arg here means don't treat a keyword as an\n // identifier after `.` in member expression. Otherwise we will\n // parse `@Outer.<missing identifier> model M{}` as having decorator\n // `@Outer.model` applied to invalid statement `M {}` instead of\n // having incomplete decorator `@Outer.` applied to `model M {}`.\n id: parseIdentifier({\n recoverFromKeyword: false,\n }),\n selector: \".\",\n ...finishNode(pos),\n };\n }\n else if (parseOptional(Token.ColonColon)) {\n base = {\n kind: SyntaxKind.MemberExpression,\n base,\n id: parseIdentifier(),\n selector: \"::\",\n ...finishNode(pos),\n };\n }\n else {\n break;\n }\n }\n return base;\n }\n function parsePrimaryExpression() {\n while (true) {\n switch (token()) {\n case Token.ValueOfKeyword:\n return parseValueOfExpression();\n case Token.Identifier:\n return parseReferenceExpression();\n case Token.StringLiteral:\n return parseStringLiteral();\n case Token.TrueKeyword:\n case Token.FalseKeyword:\n return parseBooleanLiteral();\n case Token.NumericLiteral:\n return parseNumericLiteral();\n case Token.OpenBrace:\n return parseModelExpression();\n case Token.OpenBracket:\n return parseTupleExpression();\n case Token.OpenParen:\n return parseParenthesizedExpression();\n case Token.At:\n const decorators = parseDecoratorList();\n reportInvalidDecorators(decorators, \"expression\");\n continue;\n case Token.Hash:\n const directives = parseDirectiveList();\n reportInvalidDirective(directives, \"expression\");\n continue;\n case Token.VoidKeyword:\n return parseVoidKeyword();\n case Token.NeverKeyword:\n return parseNeverKeyword();\n case Token.UnknownKeyword:\n return parseUnknownKeyword();\n default:\n return parseReferenceExpression(\"expression\");\n }\n }\n }\n function parseExternKeyword() {\n const pos = tokenPos();\n parseExpected(Token.ExternKeyword);\n return {\n kind: SyntaxKind.ExternKeyword,\n ...finishNode(pos),\n };\n }\n function parseVoidKeyword() {\n const pos = tokenPos();\n parseExpected(Token.VoidKeyword);\n return {\n kind: SyntaxKind.VoidKeyword,\n ...finishNode(pos),\n };\n }\n function parseNeverKeyword() {\n const pos = tokenPos();\n parseExpected(Token.NeverKeyword);\n return {\n kind: SyntaxKind.NeverKeyword,\n ...finishNode(pos),\n };\n }\n function parseUnknownKeyword() {\n const pos = tokenPos();\n parseExpected(Token.UnknownKeyword);\n return {\n kind: SyntaxKind.UnknownKeyword,\n ...finishNode(pos),\n };\n }\n function parseParenthesizedExpression() {\n const pos = tokenPos();\n parseExpected(Token.OpenParen);\n const expr = parseExpression();\n parseExpected(Token.CloseParen);\n return { ...expr, ...finishNode(pos) };\n }\n function parseTupleExpression() {\n const pos = tokenPos();\n const values = parseList(ListKind.Tuple, parseExpression);\n return {\n kind: SyntaxKind.TupleExpression,\n values,\n ...finishNode(pos),\n };\n }\n function parseModelExpression() {\n const pos = tokenPos();\n const properties = parseList(ListKind.ModelProperties, parseModelPropertyOrSpread);\n return {\n kind: SyntaxKind.ModelExpression,\n properties,\n ...finishNode(pos),\n };\n }\n function parseStringLiteral() {\n const pos = tokenPos();\n const value = tokenValue();\n parseExpected(Token.StringLiteral);\n return {\n kind: SyntaxKind.StringLiteral,\n value,\n ...finishNode(pos),\n };\n }\n function parseNumericLiteral() {\n const pos = tokenPos();\n const valueAsString = tokenValue();\n const value = Number(valueAsString);\n parseExpected(Token.NumericLiteral);\n return {\n kind: SyntaxKind.NumericLiteral,\n value,\n valueAsString,\n ...finishNode(pos),\n };\n }\n function parseBooleanLiteral() {\n const pos = tokenPos();\n const token = parseExpectedOneOf(Token.TrueKeyword, Token.FalseKeyword);\n const value = token === Token.TrueKeyword;\n return {\n kind: SyntaxKind.BooleanLiteral,\n value,\n ...finishNode(pos),\n };\n }\n function parseIdentifier(options) {\n var _a;\n if ((options === null || options === void 0 ? void 0 : options.recoverFromKeyword) !== false && isKeyword(token())) {\n error({ code: \"reserved-identifier\" });\n }\n else if (token() !== Token.Identifier &&\n (!(options === null || options === void 0 ? void 0 : options.allowStringLiteral) || token() !== Token.StringLiteral)) {\n // Error recovery: when we fail to parse an identifier or expression,\n // we insert a synthesized identifier with a unique name.\n error({ code: \"token-expected\", messageId: (_a = options === null || options === void 0 ? void 0 : options.message) !== null && _a !== void 0 ? _a : \"identifier\" });\n return createMissingIdentifier();\n }\n const pos = tokenPos();\n const sv = tokenValue();\n nextToken();\n return {\n kind: SyntaxKind.Identifier,\n sv,\n ...finishNode(pos),\n };\n }\n function parseDeclaration(pos) {\n const modifiers = parseModifiers();\n switch (token()) {\n case Token.DecKeyword:\n return parseDecoratorDeclarationStatement(pos, modifiers);\n case Token.FnKeyword:\n return parseFunctionDeclarationStatement(pos, modifiers);\n }\n return parseInvalidStatement(pos, []);\n }\n function parseModifiers() {\n const modifiers = [];\n let modifier;\n while ((modifier = parseModifier())) {\n modifiers.push(modifier);\n }\n return modifiers;\n }\n function parseModifier() {\n switch (token()) {\n case Token.ExternKeyword:\n return parseExternKeyword();\n default:\n return undefined;\n }\n }\n function parseDecoratorDeclarationStatement(pos, modifiers) {\n const modifierFlags = modifiersToFlags(modifiers);\n parseExpected(Token.DecKeyword);\n const id = parseIdentifier();\n let [target, ...parameters] = parseFunctionParameters();\n if (target === undefined) {\n error({ code: \"decorator-decl-target\", target: { pos, end: previousTokenEnd } });\n target = {\n kind: SyntaxKind.FunctionParameter,\n id: createMissingIdentifier(),\n type: createMissingIdentifier(),\n optional: false,\n rest: false,\n ...finishNode(pos),\n };\n }\n if (target.optional) {\n error({ code: \"decorator-decl-target\", messageId: \"required\" });\n }\n parseExpected(Token.Semicolon);\n return {\n kind: SyntaxKind.DecoratorDeclarationStatement,\n modifiers,\n modifierFlags,\n id,\n target,\n parameters,\n ...finishNode(pos),\n };\n }\n function parseFunctionDeclarationStatement(pos, modifiers) {\n const modifierFlags = modifiersToFlags(modifiers);\n parseExpected(Token.FnKeyword);\n const id = parseIdentifier();\n const parameters = parseFunctionParameters();\n let returnType;\n if (parseOptional(Token.Colon)) {\n returnType = parseExpression();\n }\n parseExpected(Token.Semicolon);\n return {\n kind: SyntaxKind.FunctionDeclarationStatement,\n modifiers,\n modifierFlags,\n id,\n parameters,\n returnType,\n ...finishNode(pos),\n };\n }\n function parseFunctionParameters() {\n const parameters = parseList(ListKind.FunctionParameters, parseFunctionParameter);\n let foundOptional = false;\n for (const [index, item] of parameters.entries()) {\n if (!item.optional && foundOptional) {\n error({ code: \"required-parameter-first\", target: item });\n continue;\n }\n if (item.optional) {\n foundOptional = true;\n }\n if (item.rest && item.optional) {\n error({ code: \"rest-parameter-required\", target: item });\n }\n if (item.rest && index !== parameters.length - 1) {\n error({ code: \"rest-parameter-last\", target: item });\n }\n }\n return parameters;\n }\n function parseFunctionParameter() {\n const pos = tokenPos();\n const rest = parseOptional(Token.Ellipsis);\n const id = parseIdentifier({ message: \"property\" });\n const optional = parseOptional(Token.Question);\n let type;\n if (parseOptional(Token.Colon)) {\n type = parseExpression();\n }\n return {\n kind: SyntaxKind.FunctionParameter,\n id,\n type,\n optional,\n rest,\n ...finishNode(pos),\n };\n }\n function modifiersToFlags(modifiers) {\n let flags = 0 /* ModifierFlags.None */;\n for (const modifier of modifiers) {\n switch (modifier.kind) {\n case SyntaxKind.ExternKeyword:\n flags |= 2 /* ModifierFlags.Extern */;\n break;\n }\n }\n return flags;\n }\n function parseProjectionStatement(pos) {\n parseExpected(Token.ProjectionKeyword);\n const selector = parseProjectionSelector();\n parseExpected(Token.Hash);\n const id = parseIdentifier();\n parseExpected(Token.OpenBrace);\n const projectionMap = new Map();\n const projections = [];\n while (token() === Token.Identifier) {\n const projection = parseProjection();\n if (projection.direction !== \"<error>\") {\n if (projectionMap.has(projection.direction)) {\n error({ code: \"duplicate-symbol\", target: projection, format: { name: \"projection\" } });\n }\n else {\n projectionMap.set(projection.direction, projection);\n }\n }\n // NOTE: Don't drop projections with error in direction definition from the AST.\n projections.push(projection);\n }\n parseExpected(Token.CloseBrace);\n return {\n kind: SyntaxKind.ProjectionStatement,\n selector,\n projections,\n preTo: projectionMap.get(\"pre_to\"),\n preFrom: projectionMap.get(\"pre_from\"),\n from: projectionMap.get(\"from\"),\n to: projectionMap.get(\"to\"),\n id,\n ...finishNode(pos),\n };\n }\n function parseProjection() {\n const pos = tokenPos();\n let directionId = parseIdentifier({ message: \"projectionDirection\" });\n let direction;\n const modifierIds = [];\n let isPre = false;\n if (directionId.sv === \"pre\") {\n isPre = true;\n modifierIds.push(directionId);\n directionId = parseIdentifier({ message: \"projectionDirection\" });\n }\n if (directionId.sv !== \"to\" && directionId.sv !== \"from\") {\n error({ code: \"token-expected\", messageId: \"projectionDirection\" });\n direction = \"<error>\";\n }\n else if (isPre) {\n direction = directionId.sv === \"to\" ? \"pre_to\" : \"pre_from\";\n }\n else {\n direction = directionId.sv;\n }\n let parameters;\n if (token() === Token.OpenParen) {\n parameters = parseList(ListKind.ProjectionParameter, parseProjectionParameter);\n }\n else {\n parameters = [];\n }\n parseExpected(Token.OpenBrace);\n const body = parseProjectionStatementList();\n parseExpected(Token.CloseBrace);\n return {\n kind: SyntaxKind.Projection,\n body,\n direction,\n directionId,\n modifierIds,\n parameters,\n ...finishNode(pos),\n };\n }\n function parseProjectionParameter() {\n const pos = tokenPos();\n const id = parseIdentifier();\n return {\n kind: SyntaxKind.ProjectionParameterDeclaration,\n id,\n ...finishNode(pos),\n };\n }\n function parseProjectionStatementList() {\n const stmts = [];\n while (token() !== Token.CloseBrace) {\n const startPos = tokenPos();\n if (token() === Token.EndOfFile) {\n error({ code: \"token-expected\", messageId: \"default\", format: { token: \"}\" } });\n break;\n }\n const expr = parseProjectionExpressionStatement();\n stmts.push(expr);\n if (tokenPos() === startPos) {\n // we didn't manage to parse anything, so break out\n // and we'll report errors elsewhere.\n break;\n }\n }\n return stmts;\n }\n function parseProjectionExpressionStatement() {\n const pos = tokenPos();\n const expr = parseProjectionExpression();\n parseExpected(Token.Semicolon);\n return {\n kind: SyntaxKind.ProjectionExpressionStatement,\n expr,\n ...finishNode(pos),\n };\n }\n function parseProjectionExpression() {\n return parseProjectionReturnExpressionOrHigher();\n }\n function parseProjectionReturnExpressionOrHigher() {\n if (token() === Token.ReturnKeyword) {\n const pos = tokenPos();\n parseExpected(Token.ReturnKeyword);\n return {\n kind: SyntaxKind.Return,\n value: parseProjectionExpression(),\n ...finishNode(pos),\n };\n }\n return parseProjectionLogicalOrExpressionOrHigher();\n }\n function parseProjectionLogicalOrExpressionOrHigher() {\n let expr = parseProjectionLogicalAndExpressionOrHigher();\n while (token() !== Token.EndOfFile) {\n const pos = expr.pos;\n if (parseOptional(Token.BarBar)) {\n expr = {\n kind: SyntaxKind.ProjectionLogicalExpression,\n op: \"||\",\n left: expr,\n right: parseProjectionLogicalAndExpressionOrHigher(),\n ...finishNode(pos),\n };\n }\n else {\n break;\n }\n }\n return expr;\n }\n function parseProjectionLogicalAndExpressionOrHigher() {\n let expr = parseProjectionEqualityExpressionOrHigher();\n while (token() !== Token.EndOfFile) {\n const pos = expr.pos;\n if (parseOptional(Token.AmpsersandAmpersand)) {\n expr = {\n kind: SyntaxKind.ProjectionLogicalExpression,\n op: \"&&\",\n left: expr,\n right: parseProjectionEqualityExpressionOrHigher(),\n ...finishNode(pos),\n };\n }\n else {\n break;\n }\n }\n return expr;\n }\n function parseProjectionEqualityExpressionOrHigher() {\n let expr = parseProjectionRelationalExpressionOrHigher();\n while (token() !== Token.EndOfFile) {\n const pos = expr.pos;\n const tok = token();\n if (tok === Token.EqualsEquals || tok === Token.ExclamationEquals) {\n const op = tokenValue();\n nextToken();\n expr = {\n kind: SyntaxKind.ProjectionEqualityExpression,\n op,\n left: expr,\n right: parseProjectionRelationalExpressionOrHigher(),\n ...finishNode(pos),\n };\n }\n else {\n break;\n }\n }\n return expr;\n }\n function parseProjectionRelationalExpressionOrHigher() {\n let expr = parseProjectionAdditiveExpressionOrHigher();\n while (token() !== Token.EndOfFile) {\n const pos = expr.pos;\n const tok = token();\n if (tok === Token.LessThan ||\n tok === Token.LessThanEquals ||\n tok === Token.GreaterThan ||\n tok === Token.GreaterThanEquals) {\n const op = tokenValue();\n nextToken();\n expr = {\n kind: SyntaxKind.ProjectionRelationalExpression,\n op,\n left: expr,\n right: parseProjectionAdditiveExpressionOrHigher(),\n ...finishNode(pos),\n };\n }\n else {\n break;\n }\n }\n return expr;\n }\n function parseProjectionAdditiveExpressionOrHigher() {\n let expr = parseProjectionMultiplicativeExpressionOrHigher();\n while (token() !== Token.EndOfFile) {\n const pos = expr.pos;\n const tok = token();\n if (tok === Token.Plus || tok === Token.Hyphen) {\n const op = tokenValue();\n nextToken();\n expr = {\n kind: SyntaxKind.ProjectionArithmeticExpression,\n op,\n left: expr,\n right: parseProjectionMultiplicativeExpressionOrHigher(),\n ...finishNode(pos),\n };\n }\n else {\n break;\n }\n }\n return expr;\n }\n function parseProjectionMultiplicativeExpressionOrHigher() {\n let expr = parseProjectionUnaryExpressionOrHigher();\n while (token() !== Token.EndOfFile) {\n const pos = expr.pos;\n const tok = token();\n if (tok === Token.ForwardSlash || tok === Token.Star) {\n const op = tokenValue();\n nextToken();\n expr = {\n kind: SyntaxKind.ProjectionArithmeticExpression,\n op,\n left: expr,\n right: parseProjectionUnaryExpressionOrHigher(),\n ...finishNode(pos),\n };\n }\n else {\n break;\n }\n }\n return expr;\n }\n function parseProjectionUnaryExpressionOrHigher() {\n if (token() === Token.Exclamation) {\n const pos = tokenPos();\n nextToken();\n return {\n kind: SyntaxKind.ProjectionUnaryExpression,\n op: \"!\",\n target: parseProjectionUnaryExpressionOrHigher(),\n ...finishNode(pos),\n };\n }\n return parseProjectionCallExpressionOrHigher();\n }\n function parseProjectionCallExpressionOrHigher() {\n let expr = parseProjectionDecoratorReferenceExpressionOrHigher();\n while (token() !== Token.EndOfFile) {\n const pos = expr.pos;\n expr = parseProjectionMemberExpressionRest(expr, pos);\n if (token() === Token.OpenParen) {\n expr = {\n kind: SyntaxKind.ProjectionCallExpression,\n callKind: \"method\",\n target: expr,\n arguments: parseList(ListKind.CallArguments, parseProjectionExpression),\n ...finishNode(pos),\n };\n }\n else {\n break;\n }\n }\n return expr;\n }\n function parseProjectionDecoratorReferenceExpressionOrHigher() {\n if (token() === Token.At) {\n const pos = tokenPos();\n nextToken();\n return {\n kind: SyntaxKind.ProjectionDecoratorReferenceExpression,\n target: parseIdentifierOrMemberExpression(undefined, true),\n ...finishNode(pos),\n };\n }\n return parseProjectionMemberExpressionOrHigher();\n }\n function parseProjectionMemberExpressionOrHigher() {\n const pos = tokenPos();\n let expr = parseProjectionPrimaryExpression();\n expr = parseProjectionMemberExpressionRest(expr, pos);\n return expr;\n }\n function parseProjectionMemberExpressionRest(expr, pos) {\n while (token() !== Token.EndOfFile) {\n if (parseOptional(Token.Dot)) {\n expr = {\n kind: SyntaxKind.ProjectionMemberExpression,\n base: expr,\n id: parseIdentifier(),\n selector: \".\",\n ...finishNode(pos),\n };\n }\n else if (parseOptional(Token.ColonColon)) {\n expr = {\n kind: SyntaxKind.ProjectionMemberExpression,\n base: expr,\n id: parseIdentifier(),\n selector: \"::\",\n ...finishNode(pos),\n };\n }\n else {\n break;\n }\n }\n return expr;\n }\n function parseProjectionPrimaryExpression() {\n switch (token()) {\n case Token.IfKeyword:\n return parseProjectionIfExpression();\n case Token.NumericLiteral:\n return parseNumericLiteral();\n case Token.StringLiteral:\n return parseStringLiteral();\n case Token.TrueKeyword:\n case Token.FalseKeyword:\n return parseBooleanLiteral();\n case Token.OpenBracket:\n return parseProjectionTupleExpression();\n case Token.OpenBrace:\n return parseProjectionModelExpression();\n case Token.OpenParen:\n return parseProjectionLambdaOrParenthesizedExpression();\n case Token.VoidKeyword:\n return parseVoidKeyword();\n case Token.NeverKeyword:\n return parseNeverKeyword();\n case Token.UnknownKeyword:\n return parseUnknownKeyword();\n default:\n return parseIdentifier({ message: \"expression\" });\n }\n }\n function parseProjectionLambdaOrParenthesizedExpression() {\n const pos = tokenPos();\n const exprs = parseList(ListKind.ProjectionExpression, parseProjectionExpression);\n if (token() === Token.EqualsGreaterThan) {\n // unpack the exprs (which should be just identifiers) into a param list\n const params = [];\n for (const expr of exprs) {\n if (expr.kind === SyntaxKind.Identifier) {\n params.push(withSymbol({\n kind: SyntaxKind.ProjectionLambdaParameterDeclaration,\n id: expr,\n pos: expr.pos,\n end: expr.end,\n flags: 0 /* NodeFlags.None */,\n }));\n }\n else {\n error({ code: \"token-expected\", messageId: \"identifier\", target: expr });\n }\n }\n return parseProjectionLambdaExpressionRest(pos, params);\n }\n else {\n if (exprs.length === 0) {\n error({\n code: \"token-expected\",\n messageId: \"expression\",\n });\n }\n // verify we only have one entry\n for (let i = 1; i < exprs.length; i++) {\n error({\n code: \"token-expected\",\n messageId: \"unexpected\",\n format: { token: \"expression\" },\n target: exprs[i],\n });\n }\n return exprs[0];\n }\n }\n function parseProjectionLambdaExpressionRest(pos, parameters) {\n parseExpected(Token.EqualsGreaterThan);\n const body = parseProjectionBlockExpression();\n return {\n kind: SyntaxKind.ProjectionLambdaExpression,\n parameters,\n body,\n ...finishNode(pos),\n };\n }\n function parseProjectionModelExpression() {\n const pos = tokenPos();\n const properties = parseList(ListKind.ModelProperties, parseProjectionModelPropertyOrSpread);\n return {\n kind: SyntaxKind.ProjectionModelExpression,\n properties,\n ...finishNode(pos),\n };\n }\n function parseProjectionModelPropertyOrSpread(pos, decorators) {\n return token() === Token.Ellipsis\n ? parseProjectionModelSpreadProperty(pos, decorators)\n : parseProjectionModelProperty(pos, decorators);\n }\n function parseProjectionModelSpreadProperty(pos, decorators) {\n parseExpected(Token.Ellipsis);\n reportInvalidDecorators(decorators, \"spread property\");\n const target = parseProjectionExpression();\n return {\n kind: SyntaxKind.ProjectionModelSpreadProperty,\n target,\n ...finishNode(pos),\n };\n }\n function parseProjectionModelProperty(pos, decorators) {\n const id = parseIdentifier({ message: \"property\", allowStringLiteral: true });\n const optional = parseOptional(Token.Question);\n parseExpected(Token.Colon);\n const value = parseProjectionExpression();\n const hasDefault = parseOptional(Token.Equals);\n const defaultValue = hasDefault ? parseProjectionExpression() : undefined;\n return {\n kind: SyntaxKind.ProjectionModelProperty,\n id,\n decorators,\n value,\n optional,\n default: defaultValue,\n ...finishNode(pos),\n };\n }\n function parseProjectionIfExpression() {\n const pos = tokenPos();\n parseExpected(Token.IfKeyword);\n const test = parseProjectionExpression();\n const consequent = parseProjectionBlockExpression();\n let alternate = undefined;\n if (parseOptional(Token.ElseKeyword)) {\n if (token() === Token.IfKeyword) {\n alternate = parseProjectionIfExpression();\n }\n else {\n alternate = parseProjectionBlockExpression();\n }\n }\n return {\n kind: SyntaxKind.ProjectionIfExpression,\n test,\n consequent,\n alternate,\n ...finishNode(pos),\n };\n }\n function parseProjectionBlockExpression() {\n const pos = tokenPos();\n parseExpected(Token.OpenBrace);\n const statements = parseProjectionStatementList();\n parseExpected(Token.CloseBrace);\n return {\n kind: SyntaxKind.ProjectionBlockExpression,\n statements,\n ...finishNode(pos),\n };\n }\n function parseProjectionTupleExpression() {\n const pos = tokenPos();\n const values = parseList(ListKind.Tuple, parseProjectionExpression);\n return {\n kind: SyntaxKind.ProjectionTupleExpression,\n values,\n ...finishNode(pos),\n };\n }\n function parseProjectionSelector() {\n const pos = tokenPos();\n const selectorTok = expectTokenIsOneOf(Token.Identifier, Token.ModelKeyword, Token.OpKeyword, Token.InterfaceKeyword, Token.UnionKeyword, Token.EnumKeyword);\n switch (selectorTok) {\n case Token.Identifier:\n const id = parseIdentifierOrMemberExpression(undefined, true);\n if (id.kind === SyntaxKind.Identifier) {\n switch (id.sv) {\n case \"modelproperty\":\n return {\n kind: SyntaxKind.ProjectionModelPropertySelector,\n ...finishNode(pos),\n };\n case \"unionvariant\":\n return {\n kind: SyntaxKind.ProjectionUnionVariantSelector,\n ...finishNode(pos),\n };\n case \"enummember\":\n return {\n kind: SyntaxKind.ProjectionEnumMemberSelector,\n ...finishNode(pos),\n };\n }\n }\n return id;\n case Token.ModelKeyword:\n nextToken();\n return {\n kind: SyntaxKind.ProjectionModelSelector,\n ...finishNode(pos),\n };\n case Token.OpKeyword:\n nextToken();\n return {\n kind: SyntaxKind.ProjectionOperationSelector,\n ...finishNode(pos),\n };\n case Token.InterfaceKeyword:\n nextToken();\n return {\n kind: SyntaxKind.ProjectionInterfaceSelector,\n ...finishNode(pos),\n };\n case Token.UnionKeyword:\n nextToken();\n return {\n kind: SyntaxKind.ProjectionUnionSelector,\n ...finishNode(pos),\n };\n case Token.EnumKeyword:\n nextToken();\n return {\n kind: SyntaxKind.ProjectionEnumSelector,\n ...finishNode(pos),\n };\n default:\n // recovery: return a missing identifier to use as the selector\n // we don't need to emit a diagnostic here as the `expectTokenOneOf` above\n // will have done so.\n return createMissingIdentifier();\n }\n }\n function parseRange(mode, range, callback) {\n const savedMode = currentMode;\n const result = scanner.scanRange(range, () => {\n currentMode = mode;\n nextToken();\n return callback();\n });\n currentMode = savedMode;\n return result;\n }\n /** Remove leading slash-star-star and trailing star-slash (if terminated) from doc comment range. */\n function innerDocRange(range) {\n return {\n pos: range.pos + 3,\n end: tokenFlags() & TokenFlags.Unterminated ? range.end : range.end - 2,\n };\n }\n function parseDocList() {\n if (docRanges.length === 0 || options.docs === false) {\n return [tokenPos(), []];\n }\n const docs = [];\n for (const range of docRanges) {\n const doc = parseRange(1 /* ParseMode.Doc */, innerDocRange(range), parseDoc);\n docs.push(doc);\n }\n return [docRanges[0].pos, docs];\n }\n function parseDoc() {\n const pos = tokenPos();\n const content = [];\n const tags = [];\n loop: while (true) {\n switch (token()) {\n case Token.EndOfFile:\n break loop;\n case Token.At:\n const tag = parseDocTag();\n tags.push(tag);\n break;\n default:\n content.push(...parseDocContent());\n break;\n }\n }\n return {\n kind: SyntaxKind.Doc,\n content,\n tags,\n ...finishNode(pos),\n };\n }\n function parseDocContent() {\n const parts = [];\n const source = scanner.file.text;\n const pos = tokenPos();\n let start = pos;\n let inCodeFence = false;\n loop: while (true) {\n switch (token()) {\n case Token.DocCodeFenceDelimiter:\n inCodeFence = !inCodeFence;\n nextDocToken();\n break;\n case Token.NewLine:\n parts.push(source.substring(start, tokenPos()));\n parts.push(\"\\n\"); // normalize line endings\n nextDocToken();\n start = tokenPos();\n while (parseOptional(Token.Whitespace))\n ;\n if (parseOptional(Token.Star)) {\n parseOptional(Token.Whitespace);\n start = tokenPos();\n break;\n }\n break;\n case Token.EndOfFile:\n break loop;\n case Token.At:\n if (!inCodeFence) {\n break loop;\n }\n nextDocToken();\n break;\n default:\n nextDocToken();\n break;\n }\n }\n parts.push(source.substring(start, tokenPos()));\n const text = trim(parts.join(\"\"));\n return [\n {\n kind: SyntaxKind.DocText,\n text,\n ...finishNode(pos),\n },\n ];\n }\n function parseDocTag() {\n const pos = tokenPos();\n parseExpected(Token.At);\n const tagName = parseDocIdentifier(\"tag\");\n switch (tagName.sv) {\n case \"param\":\n return parseDocParamLikeTag(pos, tagName, SyntaxKind.DocParamTag, \"param\");\n case \"template\":\n return parseDocParamLikeTag(pos, tagName, SyntaxKind.DocTemplateTag, \"templateParam\");\n case \"return\":\n case \"returns\":\n return parseDocSimpleTag(pos, tagName, SyntaxKind.DocReturnsTag);\n default:\n return parseDocSimpleTag(pos, tagName, SyntaxKind.DocUnknownTag);\n }\n }\n function parseDocParamLikeTag(pos, tagName, kind, messageId) {\n const name = parseDocIdentifier(messageId);\n const content = parseDocContent();\n return {\n kind,\n tagName,\n paramName: name,\n content,\n ...finishNode(pos),\n };\n }\n function parseDocSimpleTag(pos, tagName, kind) {\n const content = parseDocContent();\n return {\n kind,\n tagName,\n content,\n ...finishNode(pos),\n };\n }\n function parseDocIdentifier(messageId) {\n // We don't allow whitespace between @ and tag name, but allow\n // whitespace before all other identifiers.\n if (messageId !== \"tag\") {\n while (parseOptional(Token.Whitespace))\n ;\n }\n const pos = tokenPos();\n let sv;\n if (token() === Token.Identifier) {\n sv = tokenValue();\n nextDocToken();\n }\n else {\n sv = \"\";\n warning({ code: \"doc-invalid-identifier\", messageId });\n }\n return {\n kind: SyntaxKind.Identifier,\n sv,\n ...finishNode(pos),\n };\n }\n // utility functions\n function token() {\n return scanner.token;\n }\n function tokenFlags() {\n return scanner.tokenFlags;\n }\n function tokenValue() {\n return scanner.getTokenValue();\n }\n function tokenPos() {\n return scanner.tokenPosition;\n }\n function tokenEnd() {\n return scanner.position;\n }\n function nextToken() {\n // keep track of the previous token end separately from the current scanner\n // position as these will differ when the previous token had trailing\n // trivia, and we don't want to squiggle the trivia.\n previousTokenEnd = scanner.position;\n return currentMode === 0 /* ParseMode.Syntax */ ? nextSyntaxToken() : nextDocToken();\n }\n function nextSyntaxToken() {\n docRanges = [];\n for (;;) {\n scanner.scan();\n if (isTrivia(token())) {\n if (!newLineIsTrivia && token() === Token.NewLine) {\n break;\n }\n if (tokenFlags() & TokenFlags.DocComment) {\n docRanges.push({\n pos: tokenPos(),\n end: tokenEnd(),\n });\n }\n if (options.comments && isComment(token())) {\n comments.push({\n kind: token() === Token.SingleLineComment\n ? SyntaxKind.LineComment\n : SyntaxKind.BlockComment,\n pos: tokenPos(),\n end: tokenEnd(),\n });\n }\n }\n else {\n break;\n }\n }\n }\n function nextDocToken() {\n // NOTE: trivia tokens are always significant in doc comments.\n scanner.scanDoc();\n }\n function createMissingIdentifier() {\n const pos = tokenPos();\n previousTokenEnd = pos;\n missingIdentifierCounter++;\n return {\n kind: SyntaxKind.Identifier,\n sv: \"<missing identifier>\" + missingIdentifierCounter,\n ...finishNode(pos),\n };\n }\n function finishNode(pos) {\n const flags = parseErrorInNextFinishedNode ? 2 /* NodeFlags.ThisNodeHasError */ : 0 /* NodeFlags.None */;\n parseErrorInNextFinishedNode = false;\n return withSymbol({ pos, end: previousTokenEnd, flags });\n }\n // pretend to add as symbol property, likely to a node that is being created.\n function withSymbol(obj) {\n return obj;\n }\n /**\n * Parse a delimited list of elements, including the surrounding open and\n * close punctuation\n *\n * This shared driver function is used to share sensitive error recovery code.\n * In particular, error recovery by inserting tokens deemed missing is\n * susceptible to getting stalled in a loop iteration without making any\n * progress, and we guard against this in a shared place here.\n *\n * Note that statement and decorator lists do not have this issue. We always\n * consume at least a real '@' for a decorator and if the leading token of a\n * statement is not one of our statement keywords, ';', or '@', it is consumed\n * as part of a bad statement. As such, parsing of decorators and statements\n * do not go through here.\n */\n function parseList(kind, parseItem) {\n if (kind.open !== Token.None) {\n parseExpected(kind.open);\n }\n if (kind.allowEmpty && parseOptional(kind.close)) {\n return [];\n }\n const items = [];\n while (true) {\n let pos = tokenPos();\n let docs;\n if (!kind.invalidAnnotationTarget) {\n [pos, docs] = parseDocList();\n }\n const directives = parseDirectiveList();\n const decorators = parseDecoratorList();\n if (kind.invalidAnnotationTarget) {\n reportInvalidDecorators(decorators, kind.invalidAnnotationTarget);\n reportInvalidDirective(directives, kind.invalidAnnotationTarget);\n }\n if (directives.length === 0 && decorators.length === 0 && atEndOfListWithError(kind)) {\n // Error recovery: end surrounded list at statement keyword or end\n // of file. Note, however, that we must parse a missing element if\n // there were directives or decorators as we cannot drop those from\n // the tree.\n parseExpected(kind.close);\n break;\n }\n let item;\n if (kind.invalidAnnotationTarget) {\n item = parseItem();\n }\n else {\n item = parseItem(pos, decorators);\n mutate(item).docs = docs;\n mutate(item).directives = directives;\n }\n items.push(item);\n const delimiter = token();\n const delimiterPos = tokenPos();\n if (parseOptionalDelimiter(kind)) {\n // Delimiter found: check if it's trailing.\n if (parseOptional(kind.close)) {\n if (!kind.trailingDelimiterIsValid) {\n error({\n code: \"trailing-token\",\n format: { token: TokenDisplay[delimiter] },\n target: {\n pos: delimiterPos,\n end: delimiterPos + 1,\n },\n });\n }\n // It was trailing and we've consumed the close token.\n break;\n }\n // Not trailing. We can safely skip the progress check below here\n // because we know that we consumed a real delimiter.\n continue;\n }\n else if (kind.close === Token.None) {\n // If a list is *not* surrounded by punctuation, then the list ends when\n // there's no delimiter after an item.\n break;\n }\n else if (parseOptional(kind.close)) {\n // If a list *is* surrounded by punctuation, then the list ends when we\n // reach the close token.\n break;\n }\n else if (atEndOfListWithError(kind)) {\n // Error recovery: If a list *is* surrounded by punctuation, then\n // the list ends at statement keyword or end-of-file under the\n // assumption that the closing delimiter is missing. This check is\n // duplicated from above to preempt the parseExpected(delimeter)\n // below.\n parseExpected(kind.close);\n break;\n }\n else {\n // Error recovery: if a list kind *is* surrounded by punctuation and we\n // find neither a delimiter nor a close token after an item, then we\n // assume there is a missing delimiter between items.\n //\n // Example: `model M { a: B <missing semicolon> c: D }\n parseExpected(kind.delimiter);\n }\n if (pos === tokenPos()) {\n // Error recovery: we've inserted everything during this loop iteration\n // and haven't made any progress. Assume that the current token is a bad\n // representation of the end of the the list that we're trying to get\n // through.\n //\n // Simple repro: `model M { ]` would loop forever without this check.\n //\n parseExpected(kind.close);\n nextToken();\n // remove the item that was entirely inserted by error recovery.\n items.pop();\n break;\n }\n }\n return items;\n }\n /**\n * Parse a delimited list with surrounding open and close punctuation if the\n * open token is present. Otherwise, return an empty list.\n */\n function parseOptionalList(kind, parseItem) {\n return token() === kind.open ? parseList(kind, parseItem) : [];\n }\n function parseOptionalDelimiter(kind) {\n if (parseOptional(kind.delimiter)) {\n return true;\n }\n if (token() === kind.toleratedDelimiter) {\n if (!kind.toleratedDelimiterIsValid) {\n parseExpected(kind.delimiter);\n }\n nextToken();\n return true;\n }\n return false;\n }\n function atEndOfListWithError(kind) {\n return (kind.close !== Token.None &&\n (isStatementKeyword(token()) || token() === Token.EndOfFile) &&\n token() !== kind.allowedStatementKeyword);\n }\n function parseEmptyStatement(pos) {\n parseExpected(Token.Semicolon);\n return { kind: SyntaxKind.EmptyStatement, ...finishNode(pos) };\n }\n function parseInvalidStatement(pos, decorators) {\n // Error recovery: avoid an avalanche of errors when we get cornered into\n // parsing statements where none exist. Skip until we find a statement\n // keyword or decorator and only report one error for a contiguous range of\n // neither.\n do {\n nextToken();\n } while (!isStatementKeyword(token()) &&\n token() !== Token.At &&\n token() !== Token.Semicolon &&\n token() !== Token.EndOfFile);\n error({\n code: \"token-expected\",\n messageId: \"statement\",\n target: { pos, end: previousTokenEnd },\n });\n return { kind: SyntaxKind.InvalidStatement, decorators, ...finishNode(pos) };\n }\n function error(report) {\n var _a, _b, _c, _d, _e, _f;\n parseErrorInNextFinishedNode = true;\n const location = {\n file: scanner.file,\n pos: (_b = (_a = report.target) === null || _a === void 0 ? void 0 : _a.pos) !== null && _b !== void 0 ? _b : tokenPos(),\n end: (_d = (_c = report.target) === null || _c === void 0 ? void 0 : _c.end) !== null && _d !== void 0 ? _d : tokenEnd(),\n };\n if (!report.printable) {\n treePrintable = false;\n }\n // Error recovery: don't report more than 1 consecutive error at the same\n // position. The code path taken by error recovery after logging an error\n // can otherwise produce redundant and less decipherable errors, which this\n // suppresses.\n const realPos = (_f = (_e = report.target) === null || _e === void 0 ? void 0 : _e.realPos) !== null && _f !== void 0 ? _f : location.pos;\n if (realPositionOfLastError === realPos) {\n return;\n }\n realPositionOfLastError = realPos;\n const diagnostic = createDiagnostic({\n ...report,\n target: location,\n });\n assert(diagnostic.severity === \"error\", \"This function is for reporting errors. Use warning() for warnings.\");\n parseDiagnostics.push(diagnostic);\n }\n function warning(report) {\n var _a, _b, _c, _d;\n const location = {\n file: scanner.file,\n pos: (_b = (_a = report.target) === null || _a === void 0 ? void 0 : _a.pos) !== null && _b !== void 0 ? _b : tokenPos(),\n end: (_d = (_c = report.target) === null || _c === void 0 ? void 0 : _c.end) !== null && _d !== void 0 ? _d : tokenEnd(),\n };\n const diagnostic = createDiagnostic({\n ...report,\n target: location,\n });\n assert(diagnostic.severity === \"warning\", \"This function is for reporting warnings only. Use error() for errors.\");\n parseDiagnostics.push(diagnostic);\n }\n function reportDiagnostic(diagnostic) {\n if (diagnostic.severity === \"error\") {\n parseErrorInNextFinishedNode = true;\n treePrintable = false;\n }\n parseDiagnostics.push(diagnostic);\n }\n function assert(condition, message) {\n const location = {\n file: scanner.file,\n pos: tokenPos(),\n end: tokenEnd(),\n };\n compilerAssert(condition, message, location);\n }\n function reportInvalidDecorators(decorators, nodeName) {\n for (const decorator of decorators) {\n error({ code: \"invalid-decorator-location\", format: { nodeName }, target: decorator });\n }\n }\n function reportInvalidDirective(directives, nodeName) {\n for (const directive of directives) {\n error({ code: \"invalid-directive-location\", format: { nodeName }, target: directive });\n }\n }\n function parseExpected(expectedToken) {\n if (token() === expectedToken) {\n nextToken();\n return true;\n }\n const location = getAdjustedDefaultLocation(expectedToken);\n error({\n code: \"token-expected\",\n format: { token: TokenDisplay[expectedToken] },\n target: location,\n printable: isPunctuation(expectedToken),\n });\n return false;\n }\n function expectTokenIsOneOf(...args) {\n const tok = token();\n for (const expected of args) {\n if (expected === Token.None) {\n continue;\n }\n if (tok === expected) {\n return tok;\n }\n }\n errorTokenIsNotOneOf(...args);\n return Token.None;\n }\n function parseExpectedOneOf(...args) {\n const tok = expectTokenIsOneOf(...args);\n if (tok !== Token.None) {\n nextToken();\n }\n return tok;\n }\n function errorTokenIsNotOneOf(...args) {\n const location = getAdjustedDefaultLocation(args[0]);\n const displayList = args.map((t, i) => {\n if (i === args.length - 1) {\n return `or ${TokenDisplay[t]}`;\n }\n return TokenDisplay[t];\n });\n error({ code: \"token-expected\", format: { token: displayList.join(\", \") }, target: location });\n }\n function parseOptional(optionalToken) {\n if (token() === optionalToken) {\n nextToken();\n return true;\n }\n return false;\n }\n function getAdjustedDefaultLocation(token) {\n // Put the squiggly immediately after prior token when missing punctuation.\n // Avoids saying ';' is expected far away after a long comment, for example.\n // It's also confusing to squiggle the current token even if its nearby\n // in this case.\n return isPunctuation(token)\n ? { pos: previousTokenEnd, end: previousTokenEnd + 1, realPos: tokenPos() }\n : undefined;\n }\n}\nexport function visitChildren(node, cb) {\n if (node.directives) {\n const result = visitEach(cb, node.directives);\n if (result)\n return result;\n }\n if (node.docs) {\n const result = visitEach(cb, node.docs);\n if (result)\n return result;\n }\n switch (node.kind) {\n case SyntaxKind.TypeSpecScript:\n return visitNode(cb, node.id) || visitEach(cb, node.statements);\n case SyntaxKind.ArrayExpression:\n return visitNode(cb, node.elementType);\n case SyntaxKind.AugmentDecoratorStatement:\n return (visitNode(cb, node.target) ||\n visitNode(cb, node.targetType) ||\n visitEach(cb, node.arguments));\n case SyntaxKind.DecoratorExpression:\n return visitNode(cb, node.target) || visitEach(cb, node.arguments);\n case SyntaxKind.DirectiveExpression:\n return visitNode(cb, node.target) || visitEach(cb, node.arguments);\n case SyntaxKind.ImportStatement:\n return visitNode(cb, node.path);\n case SyntaxKind.OperationStatement:\n return (visitEach(cb, node.decorators) ||\n visitNode(cb, node.id) ||\n visitEach(cb, node.templateParameters) ||\n visitNode(cb, node.signature));\n case SyntaxKind.OperationSignatureDeclaration:\n return visitNode(cb, node.parameters) || visitNode(cb, node.returnType);\n case SyntaxKind.OperationSignatureReference:\n return visitNode(cb, node.baseOperation);\n case SyntaxKind.NamespaceStatement:\n return (visitEach(cb, node.decorators) ||\n visitNode(cb, node.id) ||\n (isArray(node.statements) ? visitEach(cb, node.statements) : visitNode(cb, node.statements)));\n case SyntaxKind.InterfaceStatement:\n return (visitEach(cb, node.decorators) ||\n visitNode(cb, node.id) ||\n visitEach(cb, node.templateParameters) ||\n visitEach(cb, node.extends) ||\n visitEach(cb, node.operations));\n case SyntaxKind.UsingStatement:\n return visitNode(cb, node.name);\n case SyntaxKind.IntersectionExpression:\n return visitEach(cb, node.options);\n case SyntaxKind.MemberExpression:\n return visitNode(cb, node.base) || visitNode(cb, node.id);\n case SyntaxKind.ModelExpression:\n return visitEach(cb, node.properties);\n case SyntaxKind.ModelProperty:\n return (visitEach(cb, node.decorators) ||\n visitNode(cb, node.id) ||\n visitNode(cb, node.value) ||\n visitNode(cb, node.default));\n case SyntaxKind.ModelSpreadProperty:\n return visitNode(cb, node.target);\n case SyntaxKind.ModelStatement:\n return (visitEach(cb, node.decorators) ||\n visitNode(cb, node.id) ||\n visitEach(cb, node.templateParameters) ||\n visitNode(cb, node.extends) ||\n visitNode(cb, node.is) ||\n visitEach(cb, node.properties));\n case SyntaxKind.ScalarStatement:\n return (visitEach(cb, node.decorators) ||\n visitNode(cb, node.id) ||\n visitEach(cb, node.templateParameters) ||\n visitNode(cb, node.extends));\n case SyntaxKind.UnionStatement:\n return (visitEach(cb, node.decorators) ||\n visitNode(cb, node.id) ||\n visitEach(cb, node.templateParameters) ||\n visitEach(cb, node.options));\n case SyntaxKind.UnionVariant:\n return visitEach(cb, node.decorators) || visitNode(cb, node.id) || visitNode(cb, node.value);\n case SyntaxKind.EnumStatement:\n return (visitEach(cb, node.decorators) || visitNode(cb, node.id) || visitEach(cb, node.members));\n case SyntaxKind.EnumMember:\n return visitEach(cb, node.decorators) || visitNode(cb, node.id) || visitNode(cb, node.value);\n case SyntaxKind.EnumSpreadMember:\n return visitNode(cb, node.target);\n case SyntaxKind.AliasStatement:\n return (visitNode(cb, node.id) ||\n visitEach(cb, node.templateParameters) ||\n visitNode(cb, node.value));\n case SyntaxKind.DecoratorDeclarationStatement:\n return (visitEach(cb, node.modifiers) ||\n visitNode(cb, node.id) ||\n visitNode(cb, node.target) ||\n visitEach(cb, node.parameters));\n case SyntaxKind.FunctionDeclarationStatement:\n return (visitEach(cb, node.modifiers) ||\n visitNode(cb, node.id) ||\n visitEach(cb, node.parameters) ||\n visitNode(cb, node.returnType));\n case SyntaxKind.FunctionParameter:\n return visitNode(cb, node.id) || visitNode(cb, node.type);\n case SyntaxKind.TypeReference:\n return visitNode(cb, node.target) || visitEach(cb, node.arguments);\n case SyntaxKind.ValueOfExpression:\n return visitNode(cb, node.target);\n case SyntaxKind.TupleExpression:\n return visitEach(cb, node.values);\n case SyntaxKind.UnionExpression:\n return visitEach(cb, node.options);\n case SyntaxKind.Projection:\n return (visitNode(cb, node.directionId) ||\n visitEach(cb, node.modifierIds) ||\n visitEach(cb, node.parameters) ||\n visitEach(cb, node.body));\n case SyntaxKind.ProjectionExpressionStatement:\n return visitNode(cb, node.expr);\n case SyntaxKind.ProjectionCallExpression:\n return visitNode(cb, node.target) || visitEach(cb, node.arguments);\n case SyntaxKind.ProjectionMemberExpression:\n return visitNode(cb, node.base) || visitNode(cb, node.id);\n // binops\n case SyntaxKind.ProjectionLogicalExpression:\n case SyntaxKind.ProjectionRelationalExpression:\n case SyntaxKind.ProjectionArithmeticExpression:\n case SyntaxKind.ProjectionEqualityExpression:\n return visitNode(cb, node.left) || visitNode(cb, node.right);\n case SyntaxKind.ProjectionUnaryExpression:\n return visitNode(cb, node.target);\n case SyntaxKind.ProjectionModelExpression:\n return visitEach(cb, node.properties);\n case SyntaxKind.ProjectionModelProperty:\n return (visitEach(cb, node.decorators) ||\n visitNode(cb, node.id) ||\n visitNode(cb, node.value) ||\n visitNode(cb, node.default));\n case SyntaxKind.ProjectionModelSpreadProperty:\n return visitNode(cb, node.target);\n case SyntaxKind.ProjectionTupleExpression:\n return visitEach(cb, node.values);\n case SyntaxKind.ProjectionBlockExpression:\n return visitEach(cb, node.statements);\n case SyntaxKind.ProjectionIfExpression:\n return (visitNode(cb, node.test) || visitNode(cb, node.consequent) || visitNode(cb, node.alternate));\n case SyntaxKind.ProjectionLambdaExpression:\n return visitEach(cb, node.parameters) || visitNode(cb, node.body);\n case SyntaxKind.ProjectionStatement:\n return (visitNode(cb, node.id) || visitNode(cb, node.selector) || visitEach(cb, node.projections));\n case SyntaxKind.ProjectionDecoratorReferenceExpression:\n return visitNode(cb, node.target);\n case SyntaxKind.Return:\n return visitNode(cb, node.value);\n case SyntaxKind.InvalidStatement:\n return visitEach(cb, node.decorators);\n case SyntaxKind.TemplateParameterDeclaration:\n return (visitNode(cb, node.id) || visitNode(cb, node.constraint) || visitNode(cb, node.default));\n case SyntaxKind.ProjectionLambdaParameterDeclaration:\n return visitNode(cb, node.id);\n case SyntaxKind.ProjectionParameterDeclaration:\n return visitNode(cb, node.id);\n case SyntaxKind.Doc:\n return visitEach(cb, node.content) || visitEach(cb, node.tags);\n case SyntaxKind.DocParamTag:\n case SyntaxKind.DocTemplateTag:\n return (visitNode(cb, node.tagName) || visitNode(cb, node.paramName) || visitEach(cb, node.content));\n case SyntaxKind.DocReturnsTag:\n case SyntaxKind.DocUnknownTag:\n return visitNode(cb, node.tagName) || visitEach(cb, node.content);\n // no children for the rest of these.\n case SyntaxKind.StringLiteral:\n case SyntaxKind.NumericLiteral:\n case SyntaxKind.BooleanLiteral:\n case SyntaxKind.Identifier:\n case SyntaxKind.EmptyStatement:\n case SyntaxKind.ProjectionModelSelector:\n case SyntaxKind.ProjectionModelPropertySelector:\n case SyntaxKind.ProjectionUnionSelector:\n case SyntaxKind.ProjectionUnionVariantSelector:\n case SyntaxKind.ProjectionInterfaceSelector:\n case SyntaxKind.ProjectionOperationSelector:\n case SyntaxKind.ProjectionEnumSelector:\n case SyntaxKind.ProjectionEnumMemberSelector:\n case SyntaxKind.VoidKeyword:\n case SyntaxKind.NeverKeyword:\n case SyntaxKind.ExternKeyword:\n case SyntaxKind.UnknownKeyword:\n case SyntaxKind.JsSourceFile:\n case SyntaxKind.DocText:\n return;\n default:\n // Dummy const to ensure we handle all node types.\n // If you get an error here, add a case for the new node type\n // you added..\n const _assertNever = node;\n return;\n }\n}\nfunction visitNode(cb, node) {\n return node && cb(node);\n}\nfunction visitEach(cb, nodes) {\n if (!nodes) {\n return;\n }\n for (const node of nodes) {\n const result = cb(node);\n if (result) {\n return result;\n }\n }\n return;\n}\nexport function getNodeAtPosition(script, position, filter = (node) => true) {\n return visit(script);\n function visit(node) {\n // We deliberately include the end position here because we need to hit\n // nodes when the cursor is positioned immediately after an identifier.\n // This is especially vital for completion. It's also generally OK\n // because the language doesn't (and should never) have syntax where you\n // could place the cursor ambiguously between two adjacent,\n // non-punctuation, non-trivia tokens that have no punctuation or trivia\n // separating them.\n if (node.pos <= position && position <= node.end) {\n // We only need to recursively visit children of nodes that satisfied\n // the condition above and therefore contain the given position. If a\n // node does not contain a position, then neither do its children.\n const child = visitChildren(node, visit);\n // A child match here is better than a self-match below as we want the\n // deepest (most specific) node. In other words, the search is depth\n // first. For example, consider `A<B<C>>`: If the cursor is on `B`,\n // then prefer B<C> over A<B<C>>.\n if (child) {\n return child;\n }\n if (filter(node)) {\n return node;\n }\n }\n return undefined;\n }\n}\nexport function hasParseError(node) {\n if (node.flags & 2 /* NodeFlags.ThisNodeHasError */) {\n return true;\n }\n checkForDescendantErrors(node);\n return node.flags & 4 /* NodeFlags.DescendantHasError */;\n}\nfunction checkForDescendantErrors(node) {\n if (node.flags & 1 /* NodeFlags.DescendantErrorsExamined */) {\n return;\n }\n mutate(node).flags |= 1 /* NodeFlags.DescendantErrorsExamined */;\n visitChildren(node, (child) => {\n if (child.flags & 2 /* NodeFlags.ThisNodeHasError */) {\n mutate(node).flags |= 4 /* NodeFlags.DescendantHasError */ | 1 /* NodeFlags.DescendantErrorsExamined */;\n return true;\n }\n checkForDescendantErrors(child);\n if (child.flags & 4 /* NodeFlags.DescendantHasError */) {\n mutate(node).flags |= 4 /* NodeFlags.DescendantHasError */ | 1 /* NodeFlags.DescendantErrorsExamined */;\n return true;\n }\n mutate(child).flags |= 1 /* NodeFlags.DescendantErrorsExamined */;\n return false;\n });\n}\nexport function isImportStatement(node) {\n return node.kind === SyntaxKind.ImportStatement;\n}\nfunction isBlocklessNamespace(node) {\n if (node.kind !== SyntaxKind.NamespaceStatement) {\n return false;\n }\n while (!isArray(node.statements) && node.statements) {\n node = node.statements;\n }\n return node.statements === undefined;\n}\nexport function getFirstAncestor(node, test) {\n for (let n = node.parent; n; n = n.parent) {\n if (test(n)) {\n return n;\n }\n }\n return undefined;\n}\nexport function getIdentifierContext(id) {\n const node = getFirstAncestor(id, (n) => n.kind !== SyntaxKind.MemberExpression);\n compilerAssert(node, \"Identifier with no non-member-expression ancestor.\");\n let kind;\n switch (node.kind) {\n case SyntaxKind.TypeReference:\n kind = IdentifierKind.TypeReference;\n break;\n case SyntaxKind.AugmentDecoratorStatement:\n case SyntaxKind.DecoratorExpression:\n kind = IdentifierKind.Decorator;\n break;\n case SyntaxKind.ProjectionCallExpression:\n kind = IdentifierKind.Function;\n break;\n case SyntaxKind.UsingStatement:\n kind = IdentifierKind.Using;\n break;\n default:\n kind =\n id.parent.id === id\n ? IdentifierKind.Declaration\n : IdentifierKind.Other;\n break;\n }\n return { node, kind };\n}\n//# sourceMappingURL=parser.js.map","import { getSourceLocation } from \"../core/diagnostics.js\";\nimport { parse as typespecParse } from \"../core/parser.js\";\nexport function parse(text, parsers, opts) {\n const result = typespecParse(text, { comments: true, docs: false });\n const errors = result.parseDiagnostics.filter((x) => x.severity === \"error\");\n if (errors.length > 0 && !result.printable) {\n throw new PrettierParserError(errors[0]);\n }\n return result;\n}\nexport class PrettierParserError extends Error {\n constructor(error) {\n var _a, _b;\n super(error.message);\n this.error = error;\n const location = getSourceLocation(error.target);\n this.loc = {\n start: (_a = location === null || location === void 0 ? void 0 : location.pos) !== null && _a !== void 0 ? _a : 0,\n end: (_b = location === null || location === void 0 ? void 0 : location.end) !== null && _b !== void 0 ? _b : 0,\n };\n }\n}\n//# sourceMappingURL=parser.js.map","import { parse } from \"./parser.js\";\nimport { typespecPrinter } from \"./print/index.js\";\nexport const defaultOptions = {};\nexport const languages = [\n {\n name: \"TypeSpec\",\n parsers: [\"typespec\"],\n extensions: [\".tsp\", \".cadl\"],\n vscodeLanguageIds: [\"typespec\"],\n },\n];\nconst TypeSpecParser = {\n parse,\n astFormat: \"typespec-format\",\n locStart(node) {\n return node.pos;\n },\n locEnd(node) {\n return node.end;\n },\n};\nexport const parsers = {\n typespec: TypeSpecParser,\n};\nexport const printers = {\n \"typespec-format\": typespecPrinter,\n};\n//# sourceMappingURL=index.js.map","export * from \"../lib/decorators.js\";\nexport * as decorators from \"../lib/decorators.js\";\nexport * from \"../server/index.js\";\nexport * from \"./checker.js\";\nexport * from \"./decorator-utils.js\";\nexport * from \"./diagnostics.js\";\nexport * from \"./emitter-utils.js\";\nexport * from \"./formatter.js\";\nexport * from \"./helpers/index.js\";\nexport { \n// eslint-disable-next-line deprecation/deprecation\ncreateCadlLibrary, createTypeSpecLibrary, paramMessage, \n// eslint-disable-next-line deprecation/deprecation\nsetCadlNamespace, setTypeSpecNamespace, } from \"./library.js\";\nexport * from \"./manifest.js\";\nexport * from \"./module-resolver.js\";\nexport * from \"./node-host.js\";\nexport * from \"./parser.js\";\nexport * from \"./path-utils.js\";\nexport * from \"./program.js\";\nexport * from \"./scanner.js\";\nexport * from \"./semantic-walker.js\";\nexport * from \"./type-utils.js\";\nexport * from \"./types.js\";\nexport { DuplicateTracker, Queue, TwoLevelMap, createRekeyableMap, getSourceFileKindFromExt, } from \"./util.js\";\nimport * as formatter from \"../formatter/index.js\";\nexport const TypeSpecPrettierPlugin = formatter;\n/** @deprecated Use TypeSpecPrettierPlugin */\nexport const CadlPrettierPlugin = TypeSpecPrettierPlugin;\n//# sourceMappingURL=index.js.map","/**\n * Reexport the bare minimum for rollup to do the tree shaking.\n */\nimport { TypeSpecPrettierPlugin } from \"@typespec/compiler\";\nexport default TypeSpecPrettierPlugin;\n"],"names":["this","parse","typespecParse"],"mappings":";;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,qBAAqB,GAAG;AACrC,IAAI,IAAI,EAAE,KAAK;AACf,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../compiler/dist/src/core/nonascii.js","../../compiler/dist/src/core/charcode.js","../../compiler/dist/src/core/types.js","../../compiler/dist/src/core/library.js","../../compiler/dist/src/core/messages.js","../../compiler/dist/src/core/diagnostics.js","../../compiler/dist/src/core/scanner.js","../../compiler/dist/src/formatter/print/comment-handler.js","../../compiler/dist/src/formatter/print/needs-parens.js","../../compiler/dist/src/formatter/print/printer.js","../../compiler/dist/src/core/util.js","../../compiler/dist/src/core/parser.js","../../compiler/dist/src/formatter/parser.js","../../compiler/dist/src/formatter/index.js","../../compiler/dist/src/index.js","../src/index.mjs"],"sourcesContent":["//\n// Generated by scripts/regen-nonascii-map.js\n// on node v18.16.0 with unicode 15.0.\n//\n/**\n * @internal\n *\n * Map of non-ascii characters that are valid in an identifier. Each pair of\n * numbers represents an inclusive range of code points.\n */\n//prettier-ignore\nexport const nonAsciiIdentifierMap = [\n 0xa0, 0x377,\n 0x37a, 0x37f,\n 0x384, 0x38a,\n 0x38c, 0x38c,\n 0x38e, 0x3a1,\n 0x3a3, 0x52f,\n 0x531, 0x556,\n 0x559, 0x58a,\n 0x58d, 0x58f,\n 0x591, 0x5c7,\n 0x5d0, 0x5ea,\n 0x5ef, 0x5f4,\n 0x600, 0x70d,\n 0x70f, 0x74a,\n 0x74d, 0x7b1,\n 0x7c0, 0x7fa,\n 0x7fd, 0x82d,\n 0x830, 0x83e,\n 0x840, 0x85b,\n 0x85e, 0x85e,\n 0x860, 0x86a,\n 0x870, 0x88e,\n 0x890, 0x891,\n 0x898, 0x983,\n 0x985, 0x98c,\n 0x98f, 0x990,\n 0x993, 0x9a8,\n 0x9aa, 0x9b0,\n 0x9b2, 0x9b2,\n 0x9b6, 0x9b9,\n 0x9bc, 0x9c4,\n 0x9c7, 0x9c8,\n 0x9cb, 0x9ce,\n 0x9d7, 0x9d7,\n 0x9dc, 0x9dd,\n 0x9df, 0x9e3,\n 0x9e6, 0x9fe,\n 0xa01, 0xa03,\n 0xa05, 0xa0a,\n 0xa0f, 0xa10,\n 0xa13, 0xa28,\n 0xa2a, 0xa30,\n 0xa32, 0xa33,\n 0xa35, 0xa36,\n 0xa38, 0xa39,\n 0xa3c, 0xa3c,\n 0xa3e, 0xa42,\n 0xa47, 0xa48,\n 0xa4b, 0xa4d,\n 0xa51, 0xa51,\n 0xa59, 0xa5c,\n 0xa5e, 0xa5e,\n 0xa66, 0xa76,\n 0xa81, 0xa83,\n 0xa85, 0xa8d,\n 0xa8f, 0xa91,\n 0xa93, 0xaa8,\n 0xaaa, 0xab0,\n 0xab2, 0xab3,\n 0xab5, 0xab9,\n 0xabc, 0xac5,\n 0xac7, 0xac9,\n 0xacb, 0xacd,\n 0xad0, 0xad0,\n 0xae0, 0xae3,\n 0xae6, 0xaf1,\n 0xaf9, 0xaff,\n 0xb01, 0xb03,\n 0xb05, 0xb0c,\n 0xb0f, 0xb10,\n 0xb13, 0xb28,\n 0xb2a, 0xb30,\n 0xb32, 0xb33,\n 0xb35, 0xb39,\n 0xb3c, 0xb44,\n 0xb47, 0xb48,\n 0xb4b, 0xb4d,\n 0xb55, 0xb57,\n 0xb5c, 0xb5d,\n 0xb5f, 0xb63,\n 0xb66, 0xb77,\n 0xb82, 0xb83,\n 0xb85, 0xb8a,\n 0xb8e, 0xb90,\n 0xb92, 0xb95,\n 0xb99, 0xb9a,\n 0xb9c, 0xb9c,\n 0xb9e, 0xb9f,\n 0xba3, 0xba4,\n 0xba8, 0xbaa,\n 0xbae, 0xbb9,\n 0xbbe, 0xbc2,\n 0xbc6, 0xbc8,\n 0xbca, 0xbcd,\n 0xbd0, 0xbd0,\n 0xbd7, 0xbd7,\n 0xbe6, 0xbfa,\n 0xc00, 0xc0c,\n 0xc0e, 0xc10,\n 0xc12, 0xc28,\n 0xc2a, 0xc39,\n 0xc3c, 0xc44,\n 0xc46, 0xc48,\n 0xc4a, 0xc4d,\n 0xc55, 0xc56,\n 0xc58, 0xc5a,\n 0xc5d, 0xc5d,\n 0xc60, 0xc63,\n 0xc66, 0xc6f,\n 0xc77, 0xc8c,\n 0xc8e, 0xc90,\n 0xc92, 0xca8,\n 0xcaa, 0xcb3,\n 0xcb5, 0xcb9,\n 0xcbc, 0xcc4,\n 0xcc6, 0xcc8,\n 0xcca, 0xccd,\n 0xcd5, 0xcd6,\n 0xcdd, 0xcde,\n 0xce0, 0xce3,\n 0xce6, 0xcef,\n 0xcf1, 0xcf3,\n 0xd00, 0xd0c,\n 0xd0e, 0xd10,\n 0xd12, 0xd44,\n 0xd46, 0xd48,\n 0xd4a, 0xd4f,\n 0xd54, 0xd63,\n 0xd66, 0xd7f,\n 0xd81, 0xd83,\n 0xd85, 0xd96,\n 0xd9a, 0xdb1,\n 0xdb3, 0xdbb,\n 0xdbd, 0xdbd,\n 0xdc0, 0xdc6,\n 0xdca, 0xdca,\n 0xdcf, 0xdd4,\n 0xdd6, 0xdd6,\n 0xdd8, 0xddf,\n 0xde6, 0xdef,\n 0xdf2, 0xdf4,\n 0xe01, 0xe3a,\n 0xe3f, 0xe5b,\n 0xe81, 0xe82,\n 0xe84, 0xe84,\n 0xe86, 0xe8a,\n 0xe8c, 0xea3,\n 0xea5, 0xea5,\n 0xea7, 0xebd,\n 0xec0, 0xec4,\n 0xec6, 0xec6,\n 0xec8, 0xece,\n 0xed0, 0xed9,\n 0xedc, 0xedf,\n 0xf00, 0xf47,\n 0xf49, 0xf6c,\n 0xf71, 0xf97,\n 0xf99, 0xfbc,\n 0xfbe, 0xfcc,\n 0xfce, 0xfda,\n 0x1000, 0x10c5,\n 0x10c7, 0x10c7,\n 0x10cd, 0x10cd,\n 0x10d0, 0x1248,\n 0x124a, 0x124d,\n 0x1250, 0x1256,\n 0x1258, 0x1258,\n 0x125a, 0x125d,\n 0x1260, 0x1288,\n 0x128a, 0x128d,\n 0x1290, 0x12b0,\n 0x12b2, 0x12b5,\n 0x12b8, 0x12be,\n 0x12c0, 0x12c0,\n 0x12c2, 0x12c5,\n 0x12c8, 0x12d6,\n 0x12d8, 0x1310,\n 0x1312, 0x1315,\n 0x1318, 0x135a,\n 0x135d, 0x137c,\n 0x1380, 0x1399,\n 0x13a0, 0x13f5,\n 0x13f8, 0x13fd,\n 0x1400, 0x169c,\n 0x16a0, 0x16f8,\n 0x1700, 0x1715,\n 0x171f, 0x1736,\n 0x1740, 0x1753,\n 0x1760, 0x176c,\n 0x176e, 0x1770,\n 0x1772, 0x1773,\n 0x1780, 0x17dd,\n 0x17e0, 0x17e9,\n 0x17f0, 0x17f9,\n 0x1800, 0x1819,\n 0x1820, 0x1878,\n 0x1880, 0x18aa,\n 0x18b0, 0x18f5,\n 0x1900, 0x191e,\n 0x1920, 0x192b,\n 0x1930, 0x193b,\n 0x1940, 0x1940,\n 0x1944, 0x196d,\n 0x1970, 0x1974,\n 0x1980, 0x19ab,\n 0x19b0, 0x19c9,\n 0x19d0, 0x19da,\n 0x19de, 0x1a1b,\n 0x1a1e, 0x1a5e,\n 0x1a60, 0x1a7c,\n 0x1a7f, 0x1a89,\n 0x1a90, 0x1a99,\n 0x1aa0, 0x1aad,\n 0x1ab0, 0x1ace,\n 0x1b00, 0x1b4c,\n 0x1b50, 0x1b7e,\n 0x1b80, 0x1bf3,\n 0x1bfc, 0x1c37,\n 0x1c3b, 0x1c49,\n 0x1c4d, 0x1c88,\n 0x1c90, 0x1cba,\n 0x1cbd, 0x1cc7,\n 0x1cd0, 0x1cfa,\n 0x1d00, 0x1f15,\n 0x1f18, 0x1f1d,\n 0x1f20, 0x1f45,\n 0x1f48, 0x1f4d,\n 0x1f50, 0x1f57,\n 0x1f59, 0x1f59,\n 0x1f5b, 0x1f5b,\n 0x1f5d, 0x1f5d,\n 0x1f5f, 0x1f7d,\n 0x1f80, 0x1fb4,\n 0x1fb6, 0x1fc4,\n 0x1fc6, 0x1fd3,\n 0x1fd6, 0x1fdb,\n 0x1fdd, 0x1fef,\n 0x1ff2, 0x1ff4,\n 0x1ff6, 0x1ffe,\n 0x2000, 0x200d,\n 0x2010, 0x2027,\n 0x202a, 0x2064,\n 0x2066, 0x2071,\n 0x2074, 0x208e,\n 0x2090, 0x209c,\n 0x20a0, 0x20c0,\n 0x20d0, 0x20f0,\n 0x2100, 0x218b,\n 0x2190, 0x2426,\n 0x2440, 0x244a,\n 0x2460, 0x2b73,\n 0x2b76, 0x2b95,\n 0x2b97, 0x2cf3,\n 0x2cf9, 0x2d25,\n 0x2d27, 0x2d27,\n 0x2d2d, 0x2d2d,\n 0x2d30, 0x2d67,\n 0x2d6f, 0x2d70,\n 0x2d7f, 0x2d96,\n 0x2da0, 0x2da6,\n 0x2da8, 0x2dae,\n 0x2db0, 0x2db6,\n 0x2db8, 0x2dbe,\n 0x2dc0, 0x2dc6,\n 0x2dc8, 0x2dce,\n 0x2dd0, 0x2dd6,\n 0x2dd8, 0x2dde,\n 0x2de0, 0x2e5d,\n 0x2e80, 0x2e99,\n 0x2e9b, 0x2ef3,\n 0x2f00, 0x2fd5,\n 0x2ff0, 0x2ffb,\n 0x3000, 0x303f,\n 0x3041, 0x3096,\n 0x3099, 0x30ff,\n 0x3105, 0x312f,\n 0x3131, 0x318e,\n 0x3190, 0x31e3,\n 0x31f0, 0x321e,\n 0x3220, 0xa48c,\n 0xa490, 0xa4c6,\n 0xa4d0, 0xa62b,\n 0xa640, 0xa6f7,\n 0xa700, 0xa7ca,\n 0xa7d0, 0xa7d1,\n 0xa7d3, 0xa7d3,\n 0xa7d5, 0xa7d9,\n 0xa7f2, 0xa82c,\n 0xa830, 0xa839,\n 0xa840, 0xa877,\n 0xa880, 0xa8c5,\n 0xa8ce, 0xa8d9,\n 0xa8e0, 0xa953,\n 0xa95f, 0xa97c,\n 0xa980, 0xa9cd,\n 0xa9cf, 0xa9d9,\n 0xa9de, 0xa9fe,\n 0xaa00, 0xaa36,\n 0xaa40, 0xaa4d,\n 0xaa50, 0xaa59,\n 0xaa5c, 0xaac2,\n 0xaadb, 0xaaf6,\n 0xab01, 0xab06,\n 0xab09, 0xab0e,\n 0xab11, 0xab16,\n 0xab20, 0xab26,\n 0xab28, 0xab2e,\n 0xab30, 0xab6b,\n 0xab70, 0xabed,\n 0xabf0, 0xabf9,\n 0xac00, 0xd7a3,\n 0xd7b0, 0xd7c6,\n 0xd7cb, 0xd7fb,\n 0xf900, 0xfa6d,\n 0xfa70, 0xfad9,\n 0xfb00, 0xfb06,\n 0xfb13, 0xfb17,\n 0xfb1d, 0xfb36,\n 0xfb38, 0xfb3c,\n 0xfb3e, 0xfb3e,\n 0xfb40, 0xfb41,\n 0xfb43, 0xfb44,\n 0xfb46, 0xfbc2,\n 0xfbd3, 0xfd8f,\n 0xfd92, 0xfdc7,\n 0xfdcf, 0xfdcf,\n 0xfdf0, 0xfe19,\n 0xfe20, 0xfe52,\n 0xfe54, 0xfe66,\n 0xfe68, 0xfe6b,\n 0xfe70, 0xfe74,\n 0xfe76, 0xfefc,\n 0xfeff, 0xfeff,\n 0xff01, 0xffbe,\n 0xffc2, 0xffc7,\n 0xffca, 0xffcf,\n 0xffd2, 0xffd7,\n 0xffda, 0xffdc,\n 0xffe0, 0xffe6,\n 0xffe8, 0xffee,\n 0xfff9, 0xfffc,\n 0x10000, 0x1000b,\n 0x1000d, 0x10026,\n 0x10028, 0x1003a,\n 0x1003c, 0x1003d,\n 0x1003f, 0x1004d,\n 0x10050, 0x1005d,\n 0x10080, 0x100fa,\n 0x10100, 0x10102,\n 0x10107, 0x10133,\n 0x10137, 0x1018e,\n 0x10190, 0x1019c,\n 0x101a0, 0x101a0,\n 0x101d0, 0x101fd,\n 0x10280, 0x1029c,\n 0x102a0, 0x102d0,\n 0x102e0, 0x102fb,\n 0x10300, 0x10323,\n 0x1032d, 0x1034a,\n 0x10350, 0x1037a,\n 0x10380, 0x1039d,\n 0x1039f, 0x103c3,\n 0x103c8, 0x103d5,\n 0x10400, 0x1049d,\n 0x104a0, 0x104a9,\n 0x104b0, 0x104d3,\n 0x104d8, 0x104fb,\n 0x10500, 0x10527,\n 0x10530, 0x10563,\n 0x1056f, 0x1057a,\n 0x1057c, 0x1058a,\n 0x1058c, 0x10592,\n 0x10594, 0x10595,\n 0x10597, 0x105a1,\n 0x105a3, 0x105b1,\n 0x105b3, 0x105b9,\n 0x105bb, 0x105bc,\n 0x10600, 0x10736,\n 0x10740, 0x10755,\n 0x10760, 0x10767,\n 0x10780, 0x10785,\n 0x10787, 0x107b0,\n 0x107b2, 0x107ba,\n 0x10800, 0x10805,\n 0x10808, 0x10808,\n 0x1080a, 0x10835,\n 0x10837, 0x10838,\n 0x1083c, 0x1083c,\n 0x1083f, 0x10855,\n 0x10857, 0x1089e,\n 0x108a7, 0x108af,\n 0x108e0, 0x108f2,\n 0x108f4, 0x108f5,\n 0x108fb, 0x1091b,\n 0x1091f, 0x10939,\n 0x1093f, 0x1093f,\n 0x10980, 0x109b7,\n 0x109bc, 0x109cf,\n 0x109d2, 0x10a03,\n 0x10a05, 0x10a06,\n 0x10a0c, 0x10a13,\n 0x10a15, 0x10a17,\n 0x10a19, 0x10a35,\n 0x10a38, 0x10a3a,\n 0x10a3f, 0x10a48,\n 0x10a50, 0x10a58,\n 0x10a60, 0x10a9f,\n 0x10ac0, 0x10ae6,\n 0x10aeb, 0x10af6,\n 0x10b00, 0x10b35,\n 0x10b39, 0x10b55,\n 0x10b58, 0x10b72,\n 0x10b78, 0x10b91,\n 0x10b99, 0x10b9c,\n 0x10ba9, 0x10baf,\n 0x10c00, 0x10c48,\n 0x10c80, 0x10cb2,\n 0x10cc0, 0x10cf2,\n 0x10cfa, 0x10d27,\n 0x10d30, 0x10d39,\n 0x10e60, 0x10e7e,\n 0x10e80, 0x10ea9,\n 0x10eab, 0x10ead,\n 0x10eb0, 0x10eb1,\n 0x10efd, 0x10f27,\n 0x10f30, 0x10f59,\n 0x10f70, 0x10f89,\n 0x10fb0, 0x10fcb,\n 0x10fe0, 0x10ff6,\n 0x11000, 0x1104d,\n 0x11052, 0x11075,\n 0x1107f, 0x110c2,\n 0x110cd, 0x110cd,\n 0x110d0, 0x110e8,\n 0x110f0, 0x110f9,\n 0x11100, 0x11134,\n 0x11136, 0x11147,\n 0x11150, 0x11176,\n 0x11180, 0x111df,\n 0x111e1, 0x111f4,\n 0x11200, 0x11211,\n 0x11213, 0x11241,\n 0x11280, 0x11286,\n 0x11288, 0x11288,\n 0x1128a, 0x1128d,\n 0x1128f, 0x1129d,\n 0x1129f, 0x112a9,\n 0x112b0, 0x112ea,\n 0x112f0, 0x112f9,\n 0x11300, 0x11303,\n 0x11305, 0x1130c,\n 0x1130f, 0x11310,\n 0x11313, 0x11328,\n 0x1132a, 0x11330,\n 0x11332, 0x11333,\n 0x11335, 0x11339,\n 0x1133b, 0x11344,\n 0x11347, 0x11348,\n 0x1134b, 0x1134d,\n 0x11350, 0x11350,\n 0x11357, 0x11357,\n 0x1135d, 0x11363,\n 0x11366, 0x1136c,\n 0x11370, 0x11374,\n 0x11400, 0x1145b,\n 0x1145d, 0x11461,\n 0x11480, 0x114c7,\n 0x114d0, 0x114d9,\n 0x11580, 0x115b5,\n 0x115b8, 0x115dd,\n 0x11600, 0x11644,\n 0x11650, 0x11659,\n 0x11660, 0x1166c,\n 0x11680, 0x116b9,\n 0x116c0, 0x116c9,\n 0x11700, 0x1171a,\n 0x1171d, 0x1172b,\n 0x11730, 0x11746,\n 0x11800, 0x1183b,\n 0x118a0, 0x118f2,\n 0x118ff, 0x11906,\n 0x11909, 0x11909,\n 0x1190c, 0x11913,\n 0x11915, 0x11916,\n 0x11918, 0x11935,\n 0x11937, 0x11938,\n 0x1193b, 0x11946,\n 0x11950, 0x11959,\n 0x119a0, 0x119a7,\n 0x119aa, 0x119d7,\n 0x119da, 0x119e4,\n 0x11a00, 0x11a47,\n 0x11a50, 0x11aa2,\n 0x11ab0, 0x11af8,\n 0x11b00, 0x11b09,\n 0x11c00, 0x11c08,\n 0x11c0a, 0x11c36,\n 0x11c38, 0x11c45,\n 0x11c50, 0x11c6c,\n 0x11c70, 0x11c8f,\n 0x11c92, 0x11ca7,\n 0x11ca9, 0x11cb6,\n 0x11d00, 0x11d06,\n 0x11d08, 0x11d09,\n 0x11d0b, 0x11d36,\n 0x11d3a, 0x11d3a,\n 0x11d3c, 0x11d3d,\n 0x11d3f, 0x11d47,\n 0x11d50, 0x11d59,\n 0x11d60, 0x11d65,\n 0x11d67, 0x11d68,\n 0x11d6a, 0x11d8e,\n 0x11d90, 0x11d91,\n 0x11d93, 0x11d98,\n 0x11da0, 0x11da9,\n 0x11ee0, 0x11ef8,\n 0x11f00, 0x11f10,\n 0x11f12, 0x11f3a,\n 0x11f3e, 0x11f59,\n 0x11fb0, 0x11fb0,\n 0x11fc0, 0x11ff1,\n 0x11fff, 0x12399,\n 0x12400, 0x1246e,\n 0x12470, 0x12474,\n 0x12480, 0x12543,\n 0x12f90, 0x12ff2,\n 0x13000, 0x13455,\n 0x14400, 0x14646,\n 0x16800, 0x16a38,\n 0x16a40, 0x16a5e,\n 0x16a60, 0x16a69,\n 0x16a6e, 0x16abe,\n 0x16ac0, 0x16ac9,\n 0x16ad0, 0x16aed,\n 0x16af0, 0x16af5,\n 0x16b00, 0x16b45,\n 0x16b50, 0x16b59,\n 0x16b5b, 0x16b61,\n 0x16b63, 0x16b77,\n 0x16b7d, 0x16b8f,\n 0x16e40, 0x16e9a,\n 0x16f00, 0x16f4a,\n 0x16f4f, 0x16f87,\n 0x16f8f, 0x16f9f,\n 0x16fe0, 0x16fe4,\n 0x16ff0, 0x16ff1,\n 0x17000, 0x187f7,\n 0x18800, 0x18cd5,\n 0x18d00, 0x18d08,\n 0x1aff0, 0x1aff3,\n 0x1aff5, 0x1affb,\n 0x1affd, 0x1affe,\n 0x1b000, 0x1b122,\n 0x1b132, 0x1b132,\n 0x1b150, 0x1b152,\n 0x1b155, 0x1b155,\n 0x1b164, 0x1b167,\n 0x1b170, 0x1b2fb,\n 0x1bc00, 0x1bc6a,\n 0x1bc70, 0x1bc7c,\n 0x1bc80, 0x1bc88,\n 0x1bc90, 0x1bc99,\n 0x1bc9c, 0x1bca3,\n 0x1cf00, 0x1cf2d,\n 0x1cf30, 0x1cf46,\n 0x1cf50, 0x1cfc3,\n 0x1d000, 0x1d0f5,\n 0x1d100, 0x1d126,\n 0x1d129, 0x1d1ea,\n 0x1d200, 0x1d245,\n 0x1d2c0, 0x1d2d3,\n 0x1d2e0, 0x1d2f3,\n 0x1d300, 0x1d356,\n 0x1d360, 0x1d378,\n 0x1d400, 0x1d454,\n 0x1d456, 0x1d49c,\n 0x1d49e, 0x1d49f,\n 0x1d4a2, 0x1d4a2,\n 0x1d4a5, 0x1d4a6,\n 0x1d4a9, 0x1d4ac,\n 0x1d4ae, 0x1d4b9,\n 0x1d4bb, 0x1d4bb,\n 0x1d4bd, 0x1d4c3,\n 0x1d4c5, 0x1d505,\n 0x1d507, 0x1d50a,\n 0x1d50d, 0x1d514,\n 0x1d516, 0x1d51c,\n 0x1d51e, 0x1d539,\n 0x1d53b, 0x1d53e,\n 0x1d540, 0x1d544,\n 0x1d546, 0x1d546,\n 0x1d54a, 0x1d550,\n 0x1d552, 0x1d6a5,\n 0x1d6a8, 0x1d7cb,\n 0x1d7ce, 0x1da8b,\n 0x1da9b, 0x1da9f,\n 0x1daa1, 0x1daaf,\n 0x1df00, 0x1df1e,\n 0x1df25, 0x1df2a,\n 0x1e000, 0x1e006,\n 0x1e008, 0x1e018,\n 0x1e01b, 0x1e021,\n 0x1e023, 0x1e024,\n 0x1e026, 0x1e02a,\n 0x1e030, 0x1e06d,\n 0x1e08f, 0x1e08f,\n 0x1e100, 0x1e12c,\n 0x1e130, 0x1e13d,\n 0x1e140, 0x1e149,\n 0x1e14e, 0x1e14f,\n 0x1e290, 0x1e2ae,\n 0x1e2c0, 0x1e2f9,\n 0x1e2ff, 0x1e2ff,\n 0x1e4d0, 0x1e4f9,\n 0x1e7e0, 0x1e7e6,\n 0x1e7e8, 0x1e7eb,\n 0x1e7ed, 0x1e7ee,\n 0x1e7f0, 0x1e7fe,\n 0x1e800, 0x1e8c4,\n 0x1e8c7, 0x1e8d6,\n 0x1e900, 0x1e94b,\n 0x1e950, 0x1e959,\n 0x1e95e, 0x1e95f,\n 0x1ec71, 0x1ecb4,\n 0x1ed01, 0x1ed3d,\n 0x1ee00, 0x1ee03,\n 0x1ee05, 0x1ee1f,\n 0x1ee21, 0x1ee22,\n 0x1ee24, 0x1ee24,\n 0x1ee27, 0x1ee27,\n 0x1ee29, 0x1ee32,\n 0x1ee34, 0x1ee37,\n 0x1ee39, 0x1ee39,\n 0x1ee3b, 0x1ee3b,\n 0x1ee42, 0x1ee42,\n 0x1ee47, 0x1ee47,\n 0x1ee49, 0x1ee49,\n 0x1ee4b, 0x1ee4b,\n 0x1ee4d, 0x1ee4f,\n 0x1ee51, 0x1ee52,\n 0x1ee54, 0x1ee54,\n 0x1ee57, 0x1ee57,\n 0x1ee59, 0x1ee59,\n 0x1ee5b, 0x1ee5b,\n 0x1ee5d, 0x1ee5d,\n 0x1ee5f, 0x1ee5f,\n 0x1ee61, 0x1ee62,\n 0x1ee64, 0x1ee64,\n 0x1ee67, 0x1ee6a,\n 0x1ee6c, 0x1ee72,\n 0x1ee74, 0x1ee77,\n 0x1ee79, 0x1ee7c,\n 0x1ee7e, 0x1ee7e,\n 0x1ee80, 0x1ee89,\n 0x1ee8b, 0x1ee9b,\n 0x1eea1, 0x1eea3,\n 0x1eea5, 0x1eea9,\n 0x1eeab, 0x1eebb,\n 0x1eef0, 0x1eef1,\n 0x1f000, 0x1f02b,\n 0x1f030, 0x1f093,\n 0x1f0a0, 0x1f0ae,\n 0x1f0b1, 0x1f0bf,\n 0x1f0c1, 0x1f0cf,\n 0x1f0d1, 0x1f0f5,\n 0x1f100, 0x1f1ad,\n 0x1f1e6, 0x1f202,\n 0x1f210, 0x1f23b,\n 0x1f240, 0x1f248,\n 0x1f250, 0x1f251,\n 0x1f260, 0x1f265,\n 0x1f300, 0x1f6d7,\n 0x1f6dc, 0x1f6ec,\n 0x1f6f0, 0x1f6fc,\n 0x1f700, 0x1f776,\n 0x1f77b, 0x1f7d9,\n 0x1f7e0, 0x1f7eb,\n 0x1f7f0, 0x1f7f0,\n 0x1f800, 0x1f80b,\n 0x1f810, 0x1f847,\n 0x1f850, 0x1f859,\n 0x1f860, 0x1f887,\n 0x1f890, 0x1f8ad,\n 0x1f8b0, 0x1f8b1,\n 0x1f900, 0x1fa53,\n 0x1fa60, 0x1fa6d,\n 0x1fa70, 0x1fa7c,\n 0x1fa80, 0x1fa88,\n 0x1fa90, 0x1fabd,\n 0x1fabf, 0x1fac5,\n 0x1face, 0x1fadb,\n 0x1fae0, 0x1fae8,\n 0x1faf0, 0x1faf8,\n 0x1fb00, 0x1fb92,\n 0x1fb94, 0x1fbca,\n 0x1fbf0, 0x1fbf9,\n 0x20000, 0x2a6df,\n 0x2a700, 0x2b739,\n 0x2b740, 0x2b81d,\n 0x2b820, 0x2cea1,\n 0x2ceb0, 0x2ebe0,\n 0x2f800, 0x2fa1d,\n 0x30000, 0x3134a,\n 0x31350, 0x323af,\n 0xe0001, 0xe0001,\n 0xe0020, 0xe007f,\n 0xe0100, 0xe01ef,\n];\n//# sourceMappingURL=nonascii.js.map","import { nonAsciiIdentifierMap } from \"./nonascii.js\";\nexport function utf16CodeUnits(codePoint) {\n return codePoint >= 0x10000 ? 2 : 1;\n}\nexport function isHighSurrogate(ch) {\n return ch >= 0xd800 && ch <= 0xdbff;\n}\nexport function isLowSurrogate(ch) {\n return ch >= 0xdc00 && ch <= 0xdfff;\n}\nexport function isLineBreak(ch) {\n return ch === 10 /* CharCode.LineFeed */ || ch === 13 /* CharCode.CarriageReturn */;\n}\nexport function isAsciiWhiteSpaceSingleLine(ch) {\n return (ch === 32 /* CharCode.Space */ ||\n ch === 9 /* CharCode.Tab */ ||\n ch === 11 /* CharCode.VerticalTab */ ||\n ch === 12 /* CharCode.FormFeed */);\n}\nexport function isNonAsciiWhiteSpaceSingleLine(ch) {\n return (ch === 133 /* CharCode.NextLine */ || // not considered a line break\n ch === 8206 /* CharCode.LeftToRightMark */ ||\n ch === 8207 /* CharCode.RightToLeftMark */ ||\n ch === 8232 /* CharCode.LineSeparator */ ||\n ch === 8233 /* CharCode.ParagraphSeparator */);\n}\nexport function isWhiteSpace(ch) {\n return isWhiteSpaceSingleLine(ch) || isLineBreak(ch);\n}\nexport function isWhiteSpaceSingleLine(ch) {\n return (isAsciiWhiteSpaceSingleLine(ch) ||\n (ch > 127 /* CharCode.MaxAscii */ && isNonAsciiWhiteSpaceSingleLine(ch)));\n}\nexport function trim(str) {\n let start = 0;\n let end = str.length - 1;\n if (!isWhiteSpace(str.charCodeAt(start)) && !isWhiteSpace(str.charCodeAt(end))) {\n return str;\n }\n while (isWhiteSpace(str.charCodeAt(start))) {\n start++;\n }\n while (isWhiteSpace(str.charCodeAt(end))) {\n end--;\n }\n return str.substring(start, end + 1);\n}\nexport function isDigit(ch) {\n return ch >= 48 /* CharCode._0 */ && ch <= 57 /* CharCode._9 */;\n}\nexport function isHexDigit(ch) {\n return (isDigit(ch) || (ch >= 65 /* CharCode.A */ && ch <= 70 /* CharCode.F */) || (ch >= 97 /* CharCode.a */ && ch <= 102 /* CharCode.f */));\n}\nexport function isBinaryDigit(ch) {\n return ch === 48 /* CharCode._0 */ || ch === 49 /* CharCode._1 */;\n}\nexport function isLowercaseAsciiLetter(ch) {\n return ch >= 97 /* CharCode.a */ && ch <= 122 /* CharCode.z */;\n}\nexport function isAsciiIdentifierStart(ch) {\n return ((ch >= 65 /* CharCode.A */ && ch <= 90 /* CharCode.Z */) ||\n (ch >= 97 /* CharCode.a */ && ch <= 122 /* CharCode.z */) ||\n ch === 36 /* CharCode.$ */ ||\n ch === 95 /* CharCode._ */);\n}\nexport function isAsciiIdentifierContinue(ch) {\n return ((ch >= 65 /* CharCode.A */ && ch <= 90 /* CharCode.Z */) ||\n (ch >= 97 /* CharCode.a */ && ch <= 122 /* CharCode.z */) ||\n (ch >= 48 /* CharCode._0 */ && ch <= 57 /* CharCode._9 */) ||\n ch === 36 /* CharCode.$ */ ||\n ch === 95 /* CharCode._ */);\n}\nexport function isIdentifierStart(codePoint) {\n return (isAsciiIdentifierStart(codePoint) ||\n (codePoint > 127 /* CharCode.MaxAscii */ && isNonAsciiIdentifierCharacter(codePoint)));\n}\nexport function isIdentifierContinue(codePoint) {\n return (isAsciiIdentifierContinue(codePoint) ||\n (codePoint > 127 /* CharCode.MaxAscii */ && isNonAsciiIdentifierCharacter(codePoint)));\n}\nexport function isNonAsciiIdentifierCharacter(codePoint) {\n return lookupInNonAsciiMap(codePoint, nonAsciiIdentifierMap);\n}\nexport function codePointBefore(text, pos) {\n if (pos <= 0 || pos >= text.length) {\n return undefined;\n }\n const ch = text.charCodeAt(pos - 1);\n if (!isLowSurrogate(ch) || !isHighSurrogate(text.charCodeAt(pos - 2))) {\n return ch;\n }\n return text.codePointAt(pos - 2);\n}\nfunction lookupInNonAsciiMap(codePoint, map) {\n // Perform binary search in one of the Unicode range maps\n let lo = 0;\n let hi = map.length;\n let mid;\n while (lo + 1 < hi) {\n mid = lo + (hi - lo) / 2;\n // mid has to be even to catch a range's beginning\n mid -= mid % 2;\n if (map[mid] <= codePoint && codePoint <= map[mid + 1]) {\n return true;\n }\n if (codePoint < map[mid]) {\n hi = mid;\n }\n else {\n lo = mid + 2;\n }\n }\n return false;\n}\n//# sourceMappingURL=charcode.js.map","/**\n * AST types\n */\nexport var SyntaxKind;\n(function (SyntaxKind) {\n SyntaxKind[SyntaxKind[\"TypeSpecScript\"] = 0] = \"TypeSpecScript\";\n /** @deprecated Use TypeSpecScript */\n SyntaxKind[SyntaxKind[\"CadlScript\"] = 0] = \"CadlScript\";\n SyntaxKind[SyntaxKind[\"JsSourceFile\"] = 1] = \"JsSourceFile\";\n SyntaxKind[SyntaxKind[\"ImportStatement\"] = 2] = \"ImportStatement\";\n SyntaxKind[SyntaxKind[\"Identifier\"] = 3] = \"Identifier\";\n SyntaxKind[SyntaxKind[\"AugmentDecoratorStatement\"] = 4] = \"AugmentDecoratorStatement\";\n SyntaxKind[SyntaxKind[\"DecoratorExpression\"] = 5] = \"DecoratorExpression\";\n SyntaxKind[SyntaxKind[\"DirectiveExpression\"] = 6] = \"DirectiveExpression\";\n SyntaxKind[SyntaxKind[\"MemberExpression\"] = 7] = \"MemberExpression\";\n SyntaxKind[SyntaxKind[\"NamespaceStatement\"] = 8] = \"NamespaceStatement\";\n SyntaxKind[SyntaxKind[\"UsingStatement\"] = 9] = \"UsingStatement\";\n SyntaxKind[SyntaxKind[\"OperationStatement\"] = 10] = \"OperationStatement\";\n SyntaxKind[SyntaxKind[\"OperationSignatureDeclaration\"] = 11] = \"OperationSignatureDeclaration\";\n SyntaxKind[SyntaxKind[\"OperationSignatureReference\"] = 12] = \"OperationSignatureReference\";\n SyntaxKind[SyntaxKind[\"ModelStatement\"] = 13] = \"ModelStatement\";\n SyntaxKind[SyntaxKind[\"ModelExpression\"] = 14] = \"ModelExpression\";\n SyntaxKind[SyntaxKind[\"ModelProperty\"] = 15] = \"ModelProperty\";\n SyntaxKind[SyntaxKind[\"ModelSpreadProperty\"] = 16] = \"ModelSpreadProperty\";\n SyntaxKind[SyntaxKind[\"ScalarStatement\"] = 17] = \"ScalarStatement\";\n SyntaxKind[SyntaxKind[\"InterfaceStatement\"] = 18] = \"InterfaceStatement\";\n SyntaxKind[SyntaxKind[\"UnionStatement\"] = 19] = \"UnionStatement\";\n SyntaxKind[SyntaxKind[\"UnionVariant\"] = 20] = \"UnionVariant\";\n SyntaxKind[SyntaxKind[\"EnumStatement\"] = 21] = \"EnumStatement\";\n SyntaxKind[SyntaxKind[\"EnumMember\"] = 22] = \"EnumMember\";\n SyntaxKind[SyntaxKind[\"EnumSpreadMember\"] = 23] = \"EnumSpreadMember\";\n SyntaxKind[SyntaxKind[\"AliasStatement\"] = 24] = \"AliasStatement\";\n SyntaxKind[SyntaxKind[\"DecoratorDeclarationStatement\"] = 25] = \"DecoratorDeclarationStatement\";\n SyntaxKind[SyntaxKind[\"FunctionDeclarationStatement\"] = 26] = \"FunctionDeclarationStatement\";\n SyntaxKind[SyntaxKind[\"FunctionParameter\"] = 27] = \"FunctionParameter\";\n SyntaxKind[SyntaxKind[\"UnionExpression\"] = 28] = \"UnionExpression\";\n SyntaxKind[SyntaxKind[\"IntersectionExpression\"] = 29] = \"IntersectionExpression\";\n SyntaxKind[SyntaxKind[\"TupleExpression\"] = 30] = \"TupleExpression\";\n SyntaxKind[SyntaxKind[\"ArrayExpression\"] = 31] = \"ArrayExpression\";\n SyntaxKind[SyntaxKind[\"StringLiteral\"] = 32] = \"StringLiteral\";\n SyntaxKind[SyntaxKind[\"NumericLiteral\"] = 33] = \"NumericLiteral\";\n SyntaxKind[SyntaxKind[\"BooleanLiteral\"] = 34] = \"BooleanLiteral\";\n SyntaxKind[SyntaxKind[\"ExternKeyword\"] = 35] = \"ExternKeyword\";\n SyntaxKind[SyntaxKind[\"VoidKeyword\"] = 36] = \"VoidKeyword\";\n SyntaxKind[SyntaxKind[\"NeverKeyword\"] = 37] = \"NeverKeyword\";\n SyntaxKind[SyntaxKind[\"UnknownKeyword\"] = 38] = \"UnknownKeyword\";\n SyntaxKind[SyntaxKind[\"ValueOfExpression\"] = 39] = \"ValueOfExpression\";\n SyntaxKind[SyntaxKind[\"TypeReference\"] = 40] = \"TypeReference\";\n SyntaxKind[SyntaxKind[\"ProjectionReference\"] = 41] = \"ProjectionReference\";\n SyntaxKind[SyntaxKind[\"TemplateParameterDeclaration\"] = 42] = \"TemplateParameterDeclaration\";\n SyntaxKind[SyntaxKind[\"EmptyStatement\"] = 43] = \"EmptyStatement\";\n SyntaxKind[SyntaxKind[\"InvalidStatement\"] = 44] = \"InvalidStatement\";\n SyntaxKind[SyntaxKind[\"LineComment\"] = 45] = \"LineComment\";\n SyntaxKind[SyntaxKind[\"BlockComment\"] = 46] = \"BlockComment\";\n SyntaxKind[SyntaxKind[\"Doc\"] = 47] = \"Doc\";\n SyntaxKind[SyntaxKind[\"DocText\"] = 48] = \"DocText\";\n SyntaxKind[SyntaxKind[\"DocParamTag\"] = 49] = \"DocParamTag\";\n SyntaxKind[SyntaxKind[\"DocReturnsTag\"] = 50] = \"DocReturnsTag\";\n SyntaxKind[SyntaxKind[\"DocTemplateTag\"] = 51] = \"DocTemplateTag\";\n SyntaxKind[SyntaxKind[\"DocUnknownTag\"] = 52] = \"DocUnknownTag\";\n SyntaxKind[SyntaxKind[\"Projection\"] = 53] = \"Projection\";\n SyntaxKind[SyntaxKind[\"ProjectionParameterDeclaration\"] = 54] = \"ProjectionParameterDeclaration\";\n SyntaxKind[SyntaxKind[\"ProjectionModelSelector\"] = 55] = \"ProjectionModelSelector\";\n SyntaxKind[SyntaxKind[\"ProjectionModelPropertySelector\"] = 56] = \"ProjectionModelPropertySelector\";\n SyntaxKind[SyntaxKind[\"ProjectionOperationSelector\"] = 57] = \"ProjectionOperationSelector\";\n SyntaxKind[SyntaxKind[\"ProjectionUnionSelector\"] = 58] = \"ProjectionUnionSelector\";\n SyntaxKind[SyntaxKind[\"ProjectionUnionVariantSelector\"] = 59] = \"ProjectionUnionVariantSelector\";\n SyntaxKind[SyntaxKind[\"ProjectionInterfaceSelector\"] = 60] = \"ProjectionInterfaceSelector\";\n SyntaxKind[SyntaxKind[\"ProjectionEnumSelector\"] = 61] = \"ProjectionEnumSelector\";\n SyntaxKind[SyntaxKind[\"ProjectionEnumMemberSelector\"] = 62] = \"ProjectionEnumMemberSelector\";\n SyntaxKind[SyntaxKind[\"ProjectionExpressionStatement\"] = 63] = \"ProjectionExpressionStatement\";\n SyntaxKind[SyntaxKind[\"ProjectionIfExpression\"] = 64] = \"ProjectionIfExpression\";\n SyntaxKind[SyntaxKind[\"ProjectionBlockExpression\"] = 65] = \"ProjectionBlockExpression\";\n SyntaxKind[SyntaxKind[\"ProjectionMemberExpression\"] = 66] = \"ProjectionMemberExpression\";\n SyntaxKind[SyntaxKind[\"ProjectionLogicalExpression\"] = 67] = \"ProjectionLogicalExpression\";\n SyntaxKind[SyntaxKind[\"ProjectionEqualityExpression\"] = 68] = \"ProjectionEqualityExpression\";\n SyntaxKind[SyntaxKind[\"ProjectionUnaryExpression\"] = 69] = \"ProjectionUnaryExpression\";\n SyntaxKind[SyntaxKind[\"ProjectionRelationalExpression\"] = 70] = \"ProjectionRelationalExpression\";\n SyntaxKind[SyntaxKind[\"ProjectionArithmeticExpression\"] = 71] = \"ProjectionArithmeticExpression\";\n SyntaxKind[SyntaxKind[\"ProjectionCallExpression\"] = 72] = \"ProjectionCallExpression\";\n SyntaxKind[SyntaxKind[\"ProjectionLambdaExpression\"] = 73] = \"ProjectionLambdaExpression\";\n SyntaxKind[SyntaxKind[\"ProjectionLambdaParameterDeclaration\"] = 74] = \"ProjectionLambdaParameterDeclaration\";\n SyntaxKind[SyntaxKind[\"ProjectionModelExpression\"] = 75] = \"ProjectionModelExpression\";\n SyntaxKind[SyntaxKind[\"ProjectionModelProperty\"] = 76] = \"ProjectionModelProperty\";\n SyntaxKind[SyntaxKind[\"ProjectionModelSpreadProperty\"] = 77] = \"ProjectionModelSpreadProperty\";\n SyntaxKind[SyntaxKind[\"ProjectionSpreadProperty\"] = 78] = \"ProjectionSpreadProperty\";\n SyntaxKind[SyntaxKind[\"ProjectionTupleExpression\"] = 79] = \"ProjectionTupleExpression\";\n SyntaxKind[SyntaxKind[\"ProjectionStatement\"] = 80] = \"ProjectionStatement\";\n SyntaxKind[SyntaxKind[\"ProjectionDecoratorReferenceExpression\"] = 81] = \"ProjectionDecoratorReferenceExpression\";\n SyntaxKind[SyntaxKind[\"Return\"] = 82] = \"Return\";\n})(SyntaxKind || (SyntaxKind = {}));\nexport var IdentifierKind;\n(function (IdentifierKind) {\n IdentifierKind[IdentifierKind[\"TypeReference\"] = 0] = \"TypeReference\";\n IdentifierKind[IdentifierKind[\"Decorator\"] = 1] = \"Decorator\";\n IdentifierKind[IdentifierKind[\"Function\"] = 2] = \"Function\";\n IdentifierKind[IdentifierKind[\"Using\"] = 3] = \"Using\";\n IdentifierKind[IdentifierKind[\"Declaration\"] = 4] = \"Declaration\";\n IdentifierKind[IdentifierKind[\"Other\"] = 5] = \"Other\";\n})(IdentifierKind || (IdentifierKind = {}));\nexport const NoTarget = Symbol.for(\"NoTarget\");\nexport var ListenerFlow;\n(function (ListenerFlow) {\n /**\n * Do not navigate any containing or referenced type.\n */\n ListenerFlow[ListenerFlow[\"NoRecursion\"] = 1] = \"NoRecursion\";\n})(ListenerFlow || (ListenerFlow = {}));\n//# sourceMappingURL=types.js.map","import { createDiagnosticCreator } from \"./diagnostics.js\";\nimport { createJSONSchemaValidator } from \"./schema-validator.js\";\nconst globalLibraryUrlsLoadedSym = Symbol.for(\"TYPESPEC_LIBRARY_URLS_LOADED\");\nif (globalThis[globalLibraryUrlsLoadedSym] === undefined) {\n globalThis[globalLibraryUrlsLoadedSym] = new Set();\n}\nconst loadedUrls = globalThis[globalLibraryUrlsLoadedSym];\n/**\n * @internal List of urls that used `createTypeSpecLibrary`. Used to keep track of the loaded version of library and make sure they are compatible.\n */\nexport function getLibraryUrlsLoaded() {\n return loadedUrls;\n}\n/** @deprecated use createTypeSpecLibrary */\nexport const createCadlLibrary = createTypeSpecLibrary;\n/**\n * Create a new TypeSpec library definition.\n * @param lib Library definition.\n * @returns Library with utility functions.\n *\n *\n * @tutorial Create the lib object with `as const` to get the full typing.\n *\n * @example\n * const libDef = {\n * name: \"myLib\",\n * diagnostics: {\n * \"my-code\": {serverity: \"error\", messages: {default: \"Foo bar\"}}\n * },\n * } as const;\n *\n * const lib = createTypeSpecLibrary(libDef);\n */\nexport function createTypeSpecLibrary(lib) {\n let emitterOptionValidator;\n const { reportDiagnostic, createDiagnostic } = createDiagnosticCreator(lib.diagnostics, lib.name);\n function createStateSymbol(name) {\n return Symbol.for(`${lib.name}.${name}`);\n }\n const caller = getCaller();\n if (caller) {\n loadedUrls.add(caller);\n }\n return {\n ...lib,\n reportDiagnostic,\n createDiagnostic,\n createStateSymbol,\n get emitterOptionValidator() {\n var _a;\n if (!emitterOptionValidator && ((_a = lib.emitter) === null || _a === void 0 ? void 0 : _a.options)) {\n emitterOptionValidator = createJSONSchemaValidator(lib.emitter.options, {\n coerceTypes: true,\n });\n }\n return emitterOptionValidator;\n },\n getTracer,\n };\n function getTracer(program) {\n return program.tracer.sub(lib.name);\n }\n}\nexport function paramMessage(strings, ...keys) {\n const template = (dict) => {\n const result = [strings[0]];\n keys.forEach((key, i) => {\n const value = dict[key];\n if (value !== undefined) {\n result.push(value);\n }\n result.push(strings[i + 1]);\n });\n return result.join(\"\");\n };\n template.keys = keys;\n return template;\n}\n/** @deprecated use setTypeSpecNamespace */\nexport const setCadlNamespace = setTypeSpecNamespace;\n/**\n * Set the TypeSpec namespace for that function.\n * @param namespace Namespace string (e.g. \"Foo.Bar\")\n * @param functions Functions\n */\nexport function setTypeSpecNamespace(namespace, ...functions) {\n functions.forEach((c) => (c.namespace = namespace));\n}\nfunction getCaller() {\n const caller = getCallStack()[2];\n return typeof caller === \"object\" && \"getFileName\" in caller ? caller.getFileName() : undefined;\n}\nfunction getCallStack() {\n const _prepareStackTrace = Error.prepareStackTrace;\n Error.prepareStackTrace = (_, stack) => stack;\n const stack = new Error().stack.slice(1); // eslint-disable-line unicorn/error-message\n Error.prepareStackTrace = _prepareStackTrace;\n return stack;\n}\n//# sourceMappingURL=library.js.map","// Static assert: this won't compile if one of the entries above is invalid.\nimport { createDiagnosticCreator } from \"./diagnostics.js\";\nimport { paramMessage } from \"./library.js\";\nconst diagnostics = {\n /**\n * Scanner errors.\n */\n \"digit-expected\": {\n severity: \"error\",\n messages: {\n default: \"Digit expected.\",\n },\n },\n \"hex-digit-expected\": {\n severity: \"error\",\n messages: {\n default: \"Hexadecimal digit expected.\",\n },\n },\n \"binary-digit-expected\": {\n severity: \"error\",\n messages: {\n default: \"Binary digit expected.\",\n },\n },\n unterminated: {\n severity: \"error\",\n messages: {\n default: paramMessage `Unterminated ${\"token\"}.`,\n },\n },\n \"creating-file\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Error creating single file: ${\"filename\"}, ${\"error\"}`,\n },\n },\n \"invalid-escape-sequence\": {\n severity: \"error\",\n messages: {\n default: \"Invalid escape sequence.\",\n },\n },\n \"no-new-line-start-triple-quote\": {\n severity: \"error\",\n messages: {\n default: \"String content in triple quotes must begin on a new line.\",\n },\n },\n \"no-new-line-end-triple-quote\": {\n severity: \"error\",\n messages: {\n default: \"Closing triple quotes must begin on a new line.\",\n },\n },\n \"triple-quote-indent\": {\n severity: \"error\",\n messages: {\n default: \"All lines in triple-quoted string lines must have the same indentation as closing triple quotes.\",\n },\n },\n \"invalid-character\": {\n severity: \"error\",\n messages: {\n default: \"Invalid character.\",\n },\n },\n /**\n * Utils\n */\n \"file-not-found\": {\n severity: \"error\",\n messages: {\n default: paramMessage `File ${\"path\"} not found.`,\n },\n },\n \"file-load\": {\n severity: \"error\",\n messages: {\n default: paramMessage `${\"message\"}`,\n },\n },\n /**\n * Init templates\n */\n \"init-template-invalid-json\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Unable to parse ${\"url\"}: ${\"message\"}. Check that the template URL is correct.`,\n },\n },\n \"init-template-download-failed\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Failed to download template from ${\"url\"}: ${\"message\"}. Check that the template URL is correct.`,\n },\n },\n /**\n * Parser errors.\n */\n \"multiple-blockless-namespace\": {\n severity: \"error\",\n messages: {\n default: \"Cannot use multiple blockless namespaces.\",\n },\n },\n \"blockless-namespace-first\": {\n severity: \"error\",\n messages: {\n default: \"Blockless namespaces can't follow other declarations.\",\n topLevel: \"Blockless namespace can only be top-level.\",\n },\n },\n \"import-first\": {\n severity: \"error\",\n messages: {\n default: \"Imports must come prior to namespaces or other declarations.\",\n topLevel: \"Imports must be top-level and come prior to namespaces or other declarations.\",\n },\n },\n \"token-expected\": {\n severity: \"error\",\n messages: {\n default: paramMessage `${\"token\"} expected.`,\n unexpected: paramMessage `Unexpected token ${\"token\"}`,\n numericOrStringLiteral: \"Expected numeric or string literal.\",\n identifier: \"Identifier expected.\",\n projectionDirection: \"from or to expected.\",\n expression: \"Expression expected.\",\n statement: \"Statement expected.\",\n property: \"Property expected.\",\n enumMember: \"Enum member expected.\",\n },\n },\n \"trailing-token\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Trailing ${\"token\"}`,\n },\n },\n \"unknown-directive\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Unknown directive '#${\"id\"}'`,\n },\n },\n \"augment-decorator-target\": {\n severity: \"error\",\n messages: {\n default: `Augment decorator first argument must be a type reference.`,\n noInstance: `Cannot reference template instances`,\n },\n },\n \"duplicate-decorator\": {\n severity: \"warning\",\n messages: {\n default: paramMessage `Decorator ${\"decoratorName\"} cannot be used twice on the same declaration.`,\n },\n },\n \"decorator-conflict\": {\n severity: \"warning\",\n messages: {\n default: paramMessage `Decorator ${\"decoratorName\"} cannot be used with decorator ${\"otherDecoratorName\"} on the same declaration.`,\n },\n },\n \"reserved-identifier\": {\n severity: \"error\",\n messages: {\n default: \"Keyword cannot be used as identifier.\",\n },\n },\n \"invalid-directive-location\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Cannot place directive on ${\"nodeName\"}.`,\n },\n },\n \"invalid-decorator-location\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Cannot decorate ${\"nodeName\"}.`,\n },\n },\n \"invalid-projection\": {\n severity: \"error\",\n messages: {\n default: \"Invalid projection\",\n wrongType: \"Non-projection can't be used to project\",\n noTo: \"Projection missing to projection\",\n projectionError: paramMessage `An error occurred when projecting this type: ${\"message\"}`,\n },\n },\n \"default-required\": {\n severity: \"error\",\n messages: {\n default: \"Required template parameters must not follow optional template parameters\",\n },\n },\n \"invalid-template-default\": {\n severity: \"error\",\n messages: {\n default: \"Template parameter defaults can only reference previously declared type parameters.\",\n },\n },\n \"required-parameter-first\": {\n severity: \"error\",\n messages: {\n default: \"A required parameter cannot follow an optional parameter.\",\n },\n },\n \"rest-parameter-last\": {\n severity: \"error\",\n messages: {\n default: \"A rest parameter must be last in a parameter list.\",\n },\n },\n \"rest-parameter-required\": {\n severity: \"error\",\n messages: {\n default: \"A rest parameter cannot be optional.\",\n },\n },\n /**\n * Parser doc comment warnings.\n * Design goal: Malformed doc comments should only produce warnings, not errors.\n */\n \"doc-invalid-identifier\": {\n severity: \"warning\",\n messages: {\n default: \"Invalid identifier.\",\n tag: \"Invalid tag name. Use backticks around code if this was not meant to be a tag.\",\n param: \"Invalid parameter name.\",\n templateParam: \"Invalid template parameter name.\",\n },\n },\n /**\n * Checker\n */\n \"using-invalid-ref\": {\n severity: \"error\",\n messages: {\n default: \"Using must refer to a namespace\",\n decorator: \"Can't use a decorator\",\n function: \"Can't use a function\",\n projection: \"Can't use a projection\",\n },\n },\n \"invalid-type-ref\": {\n severity: \"error\",\n messages: {\n default: \"Invalid type reference\",\n decorator: \"Can't put a decorator in a type\",\n function: \"Can't use a function as a type\",\n },\n },\n \"invalid-template-args\": {\n severity: \"error\",\n messages: {\n default: \"Invalid template arguments.\",\n notTemplate: \"Can't pass template arguments to non-templated type\",\n tooFew: \"Too few template arguments provided.\",\n tooMany: \"Too many template arguments provided.\",\n },\n },\n \"intersect-non-model\": {\n severity: \"error\",\n messages: {\n default: \"Cannot intersect non-model types (including union types).\",\n },\n },\n \"intersect-invalid-index\": {\n severity: \"error\",\n messages: {\n default: \"Cannot intersect incompatible models.\",\n never: \"Cannot intersect a model that cannot hold properties.\",\n array: \"Cannot intersect an array model.\",\n },\n },\n \"intersect-duplicate-property\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Intersection contains duplicate property definitions for ${\"propName\"}`,\n },\n },\n \"unknown-identifier\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Unknown identifier ${\"id\"}`,\n },\n },\n \"unknown-decorator\": {\n severity: \"error\",\n messages: {\n default: \"Unknown decorator\",\n },\n },\n \"invalid-decorator\": {\n severity: \"error\",\n messages: {\n default: paramMessage `${\"id\"} is not a decorator`,\n },\n },\n \"invalid-ref\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Cannot resolve ${\"id\"}`,\n inDecorator: paramMessage `Cannot resolve ${\"id\"} in decorator`,\n underNamespace: paramMessage `Namespace ${\"namespace\"} doesn't have member ${\"id\"}`,\n underContainer: paramMessage `${\"kind\"} doesn't have member ${\"id\"}`,\n node: paramMessage `Cannot resolve '${\"id\"}' in node ${\"nodeName\"} since it has no members. Did you mean to use \"::\" instead of \".\"?`,\n },\n },\n \"duplicate-property\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Model already has a property named ${\"propName\"}`,\n },\n },\n \"override-property-mismatch\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Model has an inherited property named ${\"propName\"} of type ${\"propType\"} which cannot override type ${\"parentType\"}`,\n },\n },\n \"extend-scalar\": {\n severity: \"error\",\n messages: {\n default: \"Scalar must extend other scalars.\",\n },\n },\n \"extend-model\": {\n severity: \"error\",\n messages: {\n default: \"Models must extend other models.\",\n modelExpression: \"Models cannot extend model expressions.\",\n },\n },\n \"is-model\": {\n severity: \"error\",\n messages: {\n default: \"Model `is` must specify another model.\",\n modelExpression: \"Model `is` cannot specify a model expression.\",\n },\n },\n \"is-operation\": {\n severity: \"error\",\n messages: {\n default: \"Operation can only reuse the signature of another operation.\",\n },\n },\n \"spread-model\": {\n severity: \"error\",\n messages: {\n default: \"Cannot spread properties of non-model type.\",\n neverIndex: \"Cannot spread type because it cannot hold properties.\",\n },\n },\n \"unsupported-default\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Default must be have a value type but has type '${\"type\"}'.`,\n },\n },\n unassignable: {\n severity: \"error\",\n messages: {\n default: paramMessage `Type '${\"value\"}' is not assignable to type '${\"targetType\"}'`,\n withDetails: paramMessage `Type '${\"sourceType\"}' is not assignable to type '${\"targetType\"}'\\n ${\"details\"}`,\n },\n },\n \"no-prop\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Property '${\"propName\"}' cannot be defined because model cannot hold properties.`,\n },\n },\n \"missing-index\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Index signature for type '${\"indexType\"}' is missing in type '${\"sourceType\"}'.`,\n },\n },\n \"missing-property\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Property '${\"propertyName\"}' is missing on type '${\"sourceType\"}' but required in '${\"targetType\"}'`,\n },\n },\n \"extends-interface\": {\n severity: \"error\",\n messages: {\n default: \"Interfaces can only extend other interfaces\",\n },\n },\n \"extends-interface-duplicate\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Interface extends cannot have duplicate members. The duplicate member is named ${\"name\"}`,\n },\n },\n \"interface-duplicate\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Interface already has a member named ${\"name\"}`,\n },\n },\n \"union-duplicate\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Union already has a variant named ${\"name\"}`,\n },\n },\n \"enum-member-duplicate\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Enum already has a member named ${\"name\"}`,\n },\n },\n \"spread-enum\": {\n severity: \"error\",\n messages: {\n default: \"Cannot spread members of non-enum type.\",\n },\n },\n \"decorator-fail\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Decorator ${\"decoratorName\"} failed!\\n\\n${\"error\"}`,\n },\n },\n \"rest-parameter-array\": {\n severity: \"error\",\n messages: {\n default: \"A rest parameter must be of an array type.\",\n },\n },\n \"decorator-extern\": {\n severity: \"error\",\n messages: {\n default: \"A decorator declaration must be prefixed with the 'extern' modifier.\",\n },\n },\n \"function-extern\": {\n severity: \"error\",\n messages: {\n default: \"A function declaration must be prefixed with the 'extern' modifier.\",\n },\n },\n \"missing-implementation\": {\n severity: \"error\",\n messages: {\n default: \"Extern declaration must have an implementation in JS file.\",\n },\n },\n \"overload-same-parent\": {\n severity: \"error\",\n messages: {\n default: `Overload must be in the same interface or namespace.`,\n },\n },\n shadow: {\n severity: \"warning\",\n messages: {\n default: paramMessage `Shadowing parent template parmaeter with the same name \"${\"name\"}\"`,\n },\n },\n /**\n * Configuration\n */\n \"config-invalid-argument\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Argument \"${\"name\"}\" is not defined as a parameter in the config.`,\n },\n },\n \"config-circular-variable\": {\n severity: \"error\",\n messages: {\n default: paramMessage `There is a circular reference to variable \"${\"name\"}\" in the cli configuration or arguments.`,\n },\n },\n \"config-path-absolute\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Path \"${\"path\"}\" cannot be relative. Use {cwd} or {project-root} to specify what the path should be relative to.`,\n },\n },\n \"config-path-not-found\": {\n severity: \"error\",\n messages: {\n default: paramMessage `No configuration file found at config path \"${\"path\"}\".`,\n },\n },\n /**\n * Program\n */\n \"dynamic-import\": {\n severity: \"error\",\n messages: {\n default: \"Dynamically generated TypeSpec cannot have imports\",\n },\n },\n \"invalid-import\": {\n severity: \"error\",\n messages: {\n default: \"Import paths must reference either a directory, a .tsp file, or .js file\",\n },\n },\n \"invalid-main\": {\n severity: \"error\",\n messages: {\n default: \"Main file must either be a .tsp file or a .js file.\",\n },\n },\n \"import-not-found\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Couldn't resolve import \"${\"path\"}\"`,\n },\n },\n \"library-invalid\": {\n severity: \"error\",\n messages: {\n tspMain: paramMessage `Library \"${\"path\"}\" has an invalid tspMain file.`,\n default: paramMessage `Library \"${\"path\"}\" has an invalid main file.`,\n },\n },\n \"incompatible-library\": {\n severity: \"warning\",\n messages: {\n default: paramMessage `Multiple versions of \"${\"name\"}\" library were loaded:\\n${\"versionMap\"}`,\n },\n },\n \"compiler-version-mismatch\": {\n severity: \"warning\",\n messages: {\n default: paramMessage `Current TypeSpec compiler conflicts with local version of @typespec/compiler referenced in ${\"basedir\"}. \\nIf this warning occurs on the command line, try running \\`typespec\\` with a working directory of ${\"basedir\"}. \\nIf this warning occurs in the IDE, try configuring the \\`tsp-server\\` path to ${\"betterTypeSpecServerPath\"}.\\n Expected: ${\"expected\"}\\n Resolved: ${\"actual\"}`,\n },\n },\n \"duplicate-symbol\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Duplicate name: \"${\"name\"}\"`,\n },\n },\n \"decorator-decl-target\": {\n severity: \"error\",\n messages: {\n default: \"dec must have at least one parameter.\",\n required: \"dec first parameter must be required.\",\n },\n },\n \"projections-are-experimental\": {\n severity: \"warning\",\n messages: {\n default: \"Projections are experimental - your code will need to change as this feature evolves.\",\n },\n },\n /**\n * Binder\n */\n \"ambiguous-symbol\": {\n severity: \"error\",\n messages: {\n default: paramMessage `\"${\"name\"}\" is an ambiguous name between ${\"duplicateNames\"}. Try using fully qualified name instead: ${\"duplicateNames\"}`,\n },\n },\n \"duplicate-using\": {\n severity: \"error\",\n messages: {\n default: paramMessage `duplicate using of \"${\"usingName\"}\" namespace`,\n },\n },\n /**\n * Library\n */\n \"on-validate-fail\": {\n severity: \"error\",\n messages: {\n default: paramMessage `onValidate failed with errors. ${\"error\"}`,\n },\n },\n \"invalid-emitter\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Requested emitter package ${\"emitterPackage\"} does not provide an \"onEmit\" function.`,\n },\n },\n \"missing-import\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Emitter '${\"emitterName\"}' requires '${\"requiredImport\"}' to be imported. Add 'import \"${\"requiredImport\"}\".`,\n },\n },\n /**\n * Decorator\n */\n \"decorator-wrong-target\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Cannot apply ${\"decorator\"} decorator to ${\"to\"}`,\n withExpected: paramMessage `Cannot apply ${\"decorator\"} decorator to ${\"to\"} since it is not assignable to ${\"expected\"}`,\n },\n },\n \"invalid-argument\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Argument '${\"value\"}' is not assignable to parameter of type '${\"expected\"}'`,\n },\n },\n \"invalid-argument-count\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Expected ${\"expected\"} arguments, but got ${\"actual\"}.`,\n atLeast: paramMessage `Expected at least ${\"expected\"} arguments, but got ${\"actual\"}.`,\n },\n },\n \"known-values-invalid-enum\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Enum cannot be used on this type. Member ${\"member\"} is not assignable to type ${\"type\"}.`,\n },\n },\n \"invalid-value\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Type '${\"kind\"}' is not a value type.`,\n atPath: paramMessage `Type '${\"kind\"}' of '${\"path\"}' is not a value type.`,\n },\n },\n deprecated: {\n severity: \"warning\",\n messages: {\n default: paramMessage `Deprecated: ${\"message\"}`,\n },\n },\n \"no-optional-key\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Property '${\"propertyName\"}' marked as key cannot be optional.`,\n },\n },\n \"invalid-discriminated-union\": {\n severity: \"error\",\n messages: {\n default: \"\",\n noAnonVariants: \"Unions with anonymous variants cannot be discriminated\",\n },\n },\n \"invalid-discriminated-union-variant\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Union variant \"${\"name\"}\" must be a model type.`,\n noDiscriminant: paramMessage `Variant \"${\"name\"}\" type is missing the discriminant property \"${\"discriminant\"}\".`,\n wrongDiscriminantType: paramMessage `Variant \"${\"name\"}\" type's discriminant property \"${\"discriminant\"}\" must be a string literal or string enum member.`,\n },\n },\n \"missing-discriminator-property\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Each derived model of a discriminated model type should have set the discriminator property(\"${\"discriminator\"}\") or have a derived model which has. Add \\`${\"discriminator\"}: \"<discriminator-value>\"\\``,\n },\n },\n \"invalid-discriminator-value\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Discriminator value should be a string, union of string or string enum but was ${\"kind\"}.`,\n required: \"The discriminator property must be a required property.\",\n duplicate: paramMessage `Discriminator value \"${\"discriminator\"}\" is already used in another variant.`,\n },\n },\n \"invalid-encode\": {\n severity: \"error\",\n messages: {\n default: \"Invalid encoding\",\n wrongType: paramMessage `Encoding '${\"encoding\"}' cannot be used on type '${\"type\"}'. Expected: ${\"expected\"}.`,\n wrongEncodingType: paramMessage `Encoding '${\"encoding\"}' on type '${\"type\"}' is expected to be serialized as '${\"expected\"}' but got '${\"actual\"}'.`,\n },\n },\n /**\n * Service\n */\n \"service-decorator-duplicate\": {\n severity: \"error\",\n messages: {\n default: `@service can only be set once per TypeSpec document.`,\n },\n },\n \"list-type-not-model\": {\n severity: \"error\",\n messages: {\n default: \"@list decorator's parameter must be a model type.\",\n },\n },\n \"invalid-range\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Range \"${\"start\"}..${\"end\"}\" is invalid.`,\n },\n },\n /**\n * Mutator\n */\n \"add-response\": {\n severity: \"error\",\n messages: {\n default: \"Cannot add a response to anything except an operation statement.\",\n },\n },\n \"add-parameter\": {\n severity: \"error\",\n messages: {\n default: \"Cannot add a parameter to anything except an operation statement.\",\n },\n },\n \"add-model-property\": {\n severity: \"error\",\n messages: {\n default: \"Cannot add a model property to anything except a model statement.\",\n },\n },\n \"add-model-property-fail\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Could not add property/parameter \"${\"propertyName\"}\" of type \"${\"propertyTypeName\"}\"`,\n },\n },\n \"add-response-type\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Could not add response type \"${\"responseTypeName\"}\" to operation ${\"operationName\"}\"`,\n },\n },\n \"circular-base-type\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Type '${\"typeName\"}' recursively references itself as a base type.`,\n },\n },\n \"circular-op-signature\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Operation '${\"typeName\"}' recursively references itself.`,\n },\n },\n \"circular-alias-type\": {\n severity: \"error\",\n messages: {\n default: paramMessage `Alias type '${\"typeName\"}' recursively references itself.`,\n },\n },\n \"conflict-marker\": {\n severity: \"error\",\n messages: {\n default: \"Conflict marker encountered.\",\n },\n },\n};\nexport const { createDiagnostic, reportDiagnostic } = createDiagnosticCreator(diagnostics);\n//# sourceMappingURL=messages.js.map","import { formatLog } from \"./logger/index.js\";\nimport { reportDiagnostic } from \"./messages.js\";\nimport { NoTarget, SyntaxKind, } from \"./types.js\";\n/**\n * Create a new diagnostics creator.\n * @param diagnostics Map of the potential diagnostics.\n * @param libraryName Optional name of the library if in the scope of a library.\n * @returns @see DiagnosticCreator\n */\nexport function createDiagnosticCreator(diagnostics, libraryName) {\n const errorMessage = libraryName\n ? `It must match one of the code defined in the library '${libraryName}'`\n : \"It must match one of the code defined in the compiler.\";\n function createDiagnostic(diagnostic) {\n var _a;\n const diagnosticDef = diagnostics[diagnostic.code];\n if (!diagnosticDef) {\n const codeStr = Object.keys(diagnostics)\n .map((x) => ` - ${x}`)\n .join(\"\\n\");\n const code = String(diagnostic.code);\n throw new Error(`Unexpected diagnostic code '${code}'. ${errorMessage}. Defined codes:\\n${codeStr}`);\n }\n const message = diagnosticDef.messages[(_a = diagnostic.messageId) !== null && _a !== void 0 ? _a : \"default\"];\n if (!message) {\n const codeStr = Object.keys(diagnosticDef.messages)\n .map((x) => ` - ${x}`)\n .join(\"\\n\");\n const messageId = String(diagnostic.messageId);\n const code = String(diagnostic.code);\n throw new Error(`Unexpected message id '${messageId}'. ${errorMessage} for code '${code}'. Defined codes:\\n${codeStr}`);\n }\n const messageStr = typeof message === \"string\" ? message : message(diagnostic.format);\n return {\n code: libraryName ? `${libraryName}/${String(diagnostic.code)}` : diagnostic.code.toString(),\n severity: diagnosticDef.severity,\n message: messageStr,\n target: diagnostic.target,\n };\n }\n function reportDiagnostic(program, diagnostic) {\n const diag = createDiagnostic(diagnostic);\n program.reportDiagnostic(diag);\n }\n return {\n diagnostics,\n createDiagnostic,\n reportDiagnostic,\n };\n}\n/**\n * Represents a failure while interpreting a projection.\n */\nexport class ProjectionError extends Error {\n constructor(message) {\n super(message);\n this.name = \"ProjectionError\";\n }\n}\nexport function logDiagnostics(diagnostics, logger) {\n for (const diagnostic of diagnostics) {\n logger.log({\n level: diagnostic.severity,\n message: diagnostic.message,\n code: diagnostic.code,\n sourceLocation: getSourceLocation(diagnostic.target),\n });\n }\n}\nexport function formatDiagnostic(diagnostic) {\n return formatLog({\n code: diagnostic.code,\n level: diagnostic.severity,\n message: diagnostic.message,\n sourceLocation: getSourceLocation(diagnostic.target),\n }, { pretty: false });\n}\nexport function createSourceFile(text, path) {\n let lineStarts = undefined;\n return {\n text,\n path,\n getLineStarts,\n getLineAndCharacterOfPosition,\n };\n function getLineStarts() {\n return (lineStarts = lineStarts !== null && lineStarts !== void 0 ? lineStarts : scanLineStarts(text));\n }\n function getLineAndCharacterOfPosition(position) {\n const starts = getLineStarts();\n let line = binarySearch(starts, position);\n // When binarySearch returns < 0 indicating that the value was not found, it\n // returns the bitwise complement of the index where the value would need to\n // be inserted to keep the array sorted. So flipping the bits back to this\n // positive index tells us what the line number would be if we were to\n // create a new line starting at the given position, and subtracting 1 from\n // that therefore gives us the line number we're after.\n if (line < 0) {\n line = ~line - 1;\n }\n return {\n line,\n character: position - starts[line],\n };\n }\n}\nexport function getSourceLocation(target) {\n if (target === NoTarget || target === undefined) {\n return undefined;\n }\n if (\"file\" in target) {\n return target;\n }\n if (!(\"kind\" in target)) {\n // symbol\n if (target.flags & 524288 /* SymbolFlags.Using */) {\n target = target.symbolSource;\n }\n if (!target.declarations[0]) {\n return createSyntheticSourceLocation();\n }\n return getSourceLocationOfNode(target.declarations[0]);\n }\n else if (typeof target.kind === \"number\") {\n // node\n return getSourceLocationOfNode(target);\n }\n else {\n // type\n const targetNode = target.node;\n if (targetNode) {\n return getSourceLocationOfNode(targetNode);\n }\n return createSyntheticSourceLocation();\n }\n}\nfunction createSyntheticSourceLocation(loc = \"<unknown location>\") {\n return {\n file: createSourceFile(\"\", loc),\n pos: 0,\n end: 0,\n isSynthetic: true,\n };\n}\nfunction getSourceLocationOfNode(node) {\n let root = node;\n while (root.parent !== undefined) {\n root = root.parent;\n }\n if (root.kind !== SyntaxKind.TypeSpecScript && root.kind !== SyntaxKind.JsSourceFile) {\n return createSyntheticSourceLocation(node.flags & 8 /* NodeFlags.Synthetic */\n ? undefined\n : \"<unknown location - cannot obtain source location of unbound node - file bug at https://github.com/microsoft/typespec>\");\n }\n return {\n file: root.file,\n pos: node.pos,\n end: node.end,\n };\n}\n/**\n * Verbose output is enabled by default for runs in mocha explorer in VS Code,\n * where the output is nicely associated with the individual test, and disabled\n * by default for command line runs where we don't want to spam the console.\n *\n * If the steps taken to produce the message are expensive, pass a callback\n * instead of producing the message then passing it here only to be dropped\n * when verbose output is disabled.\n */\nexport function logVerboseTestOutput(messageOrCallback) {\n if (process.env.TYPESPEC_VERBOSE_TEST_OUTPUT) {\n if (typeof messageOrCallback === \"string\") {\n // eslint-disable-next-line no-console\n console.log(messageOrCallback);\n }\n else {\n // eslint-disable-next-line no-console\n messageOrCallback(console.log);\n }\n }\n}\n/**\n * Use this to report bugs in the compiler, and not errors in the source code\n * being compiled.\n *\n * @param condition Throw if this is not true.\n *\n * @param message Error message.\n *\n * @param target Optional location in source code that might give a clue about\n * what got the compiler off track.\n */\nexport function compilerAssert(condition, message, target) {\n if (condition) {\n return;\n }\n if (target) {\n let location;\n try {\n location = getSourceLocation(target);\n }\n catch (err) { }\n if (location) {\n const pos = location.file.getLineAndCharacterOfPosition(location.pos);\n const file = location.file.path;\n const line = pos.line + 1;\n const col = pos.character + 1;\n message += `\\nOccurred while compiling code in ${file} near line ${line}, column ${col}`;\n }\n }\n throw new Error(message);\n}\nfunction scanLineStarts(text) {\n const starts = [];\n let start = 0;\n let pos = 0;\n while (pos < text.length) {\n const ch = text.charCodeAt(pos);\n pos++;\n switch (ch) {\n case 13 /* CharCode.CarriageReturn */:\n if (text.charCodeAt(pos) === 10 /* CharCode.LineFeed */) {\n pos++;\n }\n // fallthrough\n case 10 /* CharCode.LineFeed */:\n starts.push(start);\n start = pos;\n break;\n }\n }\n starts.push(start);\n return starts;\n}\n/**\n * Search sorted array of numbers for the given value. If found, return index\n * in array where value was found. If not found, return a negative number that\n * is the bitwise complement of the index where value would need to be inserted\n * to keep the array sorted.\n */\nfunction binarySearch(array, value) {\n let low = 0;\n let high = array.length - 1;\n while (low <= high) {\n const middle = low + ((high - low) >> 1);\n const v = array[middle];\n if (v < value) {\n low = middle + 1;\n }\n else if (v > value) {\n high = middle - 1;\n }\n else {\n return middle;\n }\n }\n return ~low;\n}\n/**\n * Assert that the input type has one of the kinds provided\n */\nexport function assertType(typeDescription, t, ...kinds) {\n if (kinds.indexOf(t.kind) === -1) {\n throw new ProjectionError(`Expected ${typeDescription} to be type ${kinds.join(\", \")}`);\n }\n}\n/**\n * Report a deprecated diagnostic.\n * @param program TypeSpec Program.\n * @param message Message describing the deprecation.\n * @param target Target of the deprecation.\n */\nexport function reportDeprecated(program, message, target) {\n reportDiagnostic(program, {\n code: \"deprecated\",\n format: {\n message,\n },\n target,\n });\n}\n/**\n * Create a new instance of the @see DiagnosticCollector.\n */\nexport function createDiagnosticCollector() {\n const diagnostics = [];\n return {\n diagnostics,\n add,\n pipe,\n wrap,\n };\n function add(diagnostic) {\n diagnostics.push(diagnostic);\n }\n function pipe(result) {\n const [value, diags] = result;\n for (const diag of diags) {\n diagnostics.push(diag);\n }\n return value;\n }\n function wrap(value) {\n return [value, diagnostics];\n }\n}\n/**\n * Ignore the diagnostics emitted by the diagnostic accessor pattern and just return the actual result.\n * @param result: Accessor pattern tuple result including the actual result and the list of diagnostics.\n * @returns Actual result.\n */\nexport function ignoreDiagnostics(result) {\n return result[0];\n}\n//# sourceMappingURL=diagnostics.js.map","import { isAsciiIdentifierContinue, isAsciiIdentifierStart, isBinaryDigit, isDigit, isHexDigit, isIdentifierContinue, isIdentifierStart, isLineBreak, isLowercaseAsciiLetter, isNonAsciiIdentifierCharacter, isNonAsciiWhiteSpaceSingleLine, isWhiteSpace, isWhiteSpaceSingleLine, utf16CodeUnits, } from \"./charcode.js\";\nimport { compilerAssert, createSourceFile } from \"./diagnostics.js\";\nimport { createDiagnostic } from \"./messages.js\";\n// All conflict markers consist of the same character repeated seven times. If it is\n// a <<<<<<< or >>>>>>> marker then it is also followed by a space.\nconst mergeConflictMarkerLength = 7;\nexport var Token;\n(function (Token) {\n Token[Token[\"None\"] = 0] = \"None\";\n Token[Token[\"Invalid\"] = 1] = \"Invalid\";\n Token[Token[\"EndOfFile\"] = 2] = \"EndOfFile\";\n Token[Token[\"Identifier\"] = 3] = \"Identifier\";\n Token[Token[\"NumericLiteral\"] = 4] = \"NumericLiteral\";\n Token[Token[\"StringLiteral\"] = 5] = \"StringLiteral\";\n // Add new tokens above if they don't fit any of the categories below\n ///////////////////////////////////////////////////////////////\n // Trivia\n /**@internal */ Token[Token[\"__StartTrivia\"] = 6] = \"__StartTrivia\";\n Token[Token[\"SingleLineComment\"] = 6] = \"SingleLineComment\";\n Token[Token[\"MultiLineComment\"] = 7] = \"MultiLineComment\";\n Token[Token[\"NewLine\"] = 8] = \"NewLine\";\n Token[Token[\"Whitespace\"] = 9] = \"Whitespace\";\n Token[Token[\"ConflictMarker\"] = 10] = \"ConflictMarker\";\n // Add new trivia above\n /** @internal */ Token[Token[\"__EndTrivia\"] = 11] = \"__EndTrivia\";\n ///////////////////////////////////////////////////////////////\n ///////////////////////////////////////////////////////////////\n // Doc comment content\n /** @internal */ Token[Token[\"__StartDocComment\"] = 11] = \"__StartDocComment\";\n Token[Token[\"DocText\"] = 11] = \"DocText\";\n Token[Token[\"DocCodeSpan\"] = 12] = \"DocCodeSpan\";\n Token[Token[\"DocCodeFenceDelimiter\"] = 13] = \"DocCodeFenceDelimiter\";\n /** @internal */ Token[Token[\"__EndDocComment\"] = 14] = \"__EndDocComment\";\n ///////////////////////////////////////////////////////////////\n ///////////////////////////////////////////////////////////////\n // Punctuation\n /** @internal */ Token[Token[\"__StartPunctuation\"] = 14] = \"__StartPunctuation\";\n Token[Token[\"OpenBrace\"] = 14] = \"OpenBrace\";\n Token[Token[\"CloseBrace\"] = 15] = \"CloseBrace\";\n Token[Token[\"OpenParen\"] = 16] = \"OpenParen\";\n Token[Token[\"CloseParen\"] = 17] = \"CloseParen\";\n Token[Token[\"OpenBracket\"] = 18] = \"OpenBracket\";\n Token[Token[\"CloseBracket\"] = 19] = \"CloseBracket\";\n Token[Token[\"Dot\"] = 20] = \"Dot\";\n Token[Token[\"Ellipsis\"] = 21] = \"Ellipsis\";\n Token[Token[\"Semicolon\"] = 22] = \"Semicolon\";\n Token[Token[\"Comma\"] = 23] = \"Comma\";\n Token[Token[\"LessThan\"] = 24] = \"LessThan\";\n Token[Token[\"GreaterThan\"] = 25] = \"GreaterThan\";\n Token[Token[\"Equals\"] = 26] = \"Equals\";\n Token[Token[\"Ampersand\"] = 27] = \"Ampersand\";\n Token[Token[\"Bar\"] = 28] = \"Bar\";\n Token[Token[\"Question\"] = 29] = \"Question\";\n Token[Token[\"Colon\"] = 30] = \"Colon\";\n Token[Token[\"ColonColon\"] = 31] = \"ColonColon\";\n Token[Token[\"At\"] = 32] = \"At\";\n Token[Token[\"AtAt\"] = 33] = \"AtAt\";\n Token[Token[\"Hash\"] = 34] = \"Hash\";\n Token[Token[\"Star\"] = 35] = \"Star\";\n Token[Token[\"ForwardSlash\"] = 36] = \"ForwardSlash\";\n Token[Token[\"Plus\"] = 37] = \"Plus\";\n Token[Token[\"Hyphen\"] = 38] = \"Hyphen\";\n Token[Token[\"Exclamation\"] = 39] = \"Exclamation\";\n Token[Token[\"LessThanEquals\"] = 40] = \"LessThanEquals\";\n Token[Token[\"GreaterThanEquals\"] = 41] = \"GreaterThanEquals\";\n Token[Token[\"AmpsersandAmpersand\"] = 42] = \"AmpsersandAmpersand\";\n Token[Token[\"BarBar\"] = 43] = \"BarBar\";\n Token[Token[\"EqualsEquals\"] = 44] = \"EqualsEquals\";\n Token[Token[\"ExclamationEquals\"] = 45] = \"ExclamationEquals\";\n Token[Token[\"EqualsGreaterThan\"] = 46] = \"EqualsGreaterThan\";\n // Add new punctuation above\n /** @internal */ Token[Token[\"__EndPunctuation\"] = 47] = \"__EndPunctuation\";\n ///////////////////////////////////////////////////////////////\n ///////////////////////////////////////////////////////////////\n // Statement keywords\n /** @internal */ Token[Token[\"__StartKeyword\"] = 47] = \"__StartKeyword\";\n /** @internal */ Token[Token[\"__StartStatementKeyword\"] = 47] = \"__StartStatementKeyword\";\n Token[Token[\"ImportKeyword\"] = 47] = \"ImportKeyword\";\n Token[Token[\"ModelKeyword\"] = 48] = \"ModelKeyword\";\n Token[Token[\"ScalarKeyword\"] = 49] = \"ScalarKeyword\";\n Token[Token[\"NamespaceKeyword\"] = 50] = \"NamespaceKeyword\";\n Token[Token[\"UsingKeyword\"] = 51] = \"UsingKeyword\";\n Token[Token[\"OpKeyword\"] = 52] = \"OpKeyword\";\n Token[Token[\"EnumKeyword\"] = 53] = \"EnumKeyword\";\n Token[Token[\"AliasKeyword\"] = 54] = \"AliasKeyword\";\n Token[Token[\"IsKeyword\"] = 55] = \"IsKeyword\";\n Token[Token[\"InterfaceKeyword\"] = 56] = \"InterfaceKeyword\";\n Token[Token[\"UnionKeyword\"] = 57] = \"UnionKeyword\";\n Token[Token[\"ProjectionKeyword\"] = 58] = \"ProjectionKeyword\";\n Token[Token[\"ElseKeyword\"] = 59] = \"ElseKeyword\";\n Token[Token[\"IfKeyword\"] = 60] = \"IfKeyword\";\n Token[Token[\"DecKeyword\"] = 61] = \"DecKeyword\";\n Token[Token[\"FnKeyword\"] = 62] = \"FnKeyword\";\n Token[Token[\"ValueOfKeyword\"] = 63] = \"ValueOfKeyword\";\n // Add new statement keyword above\n /** @internal */ Token[Token[\"__EndStatementKeyword\"] = 64] = \"__EndStatementKeyword\";\n ///////////////////////////////////////////////////////////////\n ///////////////////////////////////////////////////////////////\n /** @internal */ Token[Token[\"__StartModifierKeyword\"] = 64] = \"__StartModifierKeyword\";\n Token[Token[\"ExternKeyword\"] = 64] = \"ExternKeyword\";\n /** @internal */ Token[Token[\"__EndModifierKeyword\"] = 65] = \"__EndModifierKeyword\";\n ///////////////////////////////////////////////////////////////\n ///////////////////////////////////////////////////////////////\n // Other keywords\n Token[Token[\"ExtendsKeyword\"] = 65] = \"ExtendsKeyword\";\n Token[Token[\"TrueKeyword\"] = 66] = \"TrueKeyword\";\n Token[Token[\"FalseKeyword\"] = 67] = \"FalseKeyword\";\n Token[Token[\"ReturnKeyword\"] = 68] = \"ReturnKeyword\";\n Token[Token[\"VoidKeyword\"] = 69] = \"VoidKeyword\";\n Token[Token[\"NeverKeyword\"] = 70] = \"NeverKeyword\";\n Token[Token[\"UnknownKeyword\"] = 71] = \"UnknownKeyword\";\n // Add new non-statement keyword above\n /** @internal */ Token[Token[\"__EndKeyword\"] = 72] = \"__EndKeyword\";\n ///////////////////////////////////////////////////////////////\n /** @internal */ Token[Token[\"__Count\"] = 72] = \"__Count\";\n})(Token || (Token = {}));\n/** @internal */\nexport const TokenDisplay = getTokenDisplayTable([\n [Token.None, \"none\"],\n [Token.Invalid, \"invalid\"],\n [Token.EndOfFile, \"end of file\"],\n [Token.SingleLineComment, \"single-line comment\"],\n [Token.MultiLineComment, \"multi-line comment\"],\n [Token.ConflictMarker, \"conflict marker\"],\n [Token.NumericLiteral, \"numeric literal\"],\n [Token.StringLiteral, \"string literal\"],\n [Token.NewLine, \"newline\"],\n [Token.Whitespace, \"whitespace\"],\n [Token.DocCodeFenceDelimiter, \"doc code fence delimiter\"],\n [Token.DocCodeSpan, \"doc code span\"],\n [Token.DocText, \"doc text\"],\n [Token.OpenBrace, \"'{'\"],\n [Token.CloseBrace, \"'}'\"],\n [Token.OpenParen, \"'('\"],\n [Token.CloseParen, \"')'\"],\n [Token.OpenBracket, \"'['\"],\n [Token.CloseBracket, \"']'\"],\n [Token.Dot, \"'.'\"],\n [Token.Ellipsis, \"'...'\"],\n [Token.Semicolon, \"';'\"],\n [Token.Comma, \"','\"],\n [Token.LessThan, \"'<'\"],\n [Token.GreaterThan, \"'>'\"],\n [Token.Equals, \"'='\"],\n [Token.Ampersand, \"'&'\"],\n [Token.Bar, \"'|'\"],\n [Token.Question, \"'?'\"],\n [Token.Colon, \"':'\"],\n [Token.ColonColon, \"'::'\"],\n [Token.At, \"'@'\"],\n [Token.AtAt, \"'@@'\"],\n [Token.Hash, \"'#'\"],\n [Token.Star, \"'*'\"],\n [Token.ForwardSlash, \"'/'\"],\n [Token.Plus, \"'+'\"],\n [Token.Hyphen, \"'-'\"],\n [Token.Exclamation, \"'!'\"],\n [Token.LessThanEquals, \"'<='\"],\n [Token.GreaterThanEquals, \"'>='\"],\n [Token.AmpsersandAmpersand, \"'&&'\"],\n [Token.BarBar, \"'||'\"],\n [Token.EqualsEquals, \"'=='\"],\n [Token.ExclamationEquals, \"'!='\"],\n [Token.EqualsGreaterThan, \"'=>'\"],\n [Token.Identifier, \"identifier\"],\n [Token.ImportKeyword, \"'import'\"],\n [Token.ModelKeyword, \"'model'\"],\n [Token.ScalarKeyword, \"'scalar'\"],\n [Token.NamespaceKeyword, \"'namespace'\"],\n [Token.UsingKeyword, \"'using'\"],\n [Token.OpKeyword, \"'op'\"],\n [Token.EnumKeyword, \"'enum'\"],\n [Token.AliasKeyword, \"'alias'\"],\n [Token.IsKeyword, \"'is'\"],\n [Token.InterfaceKeyword, \"'interface'\"],\n [Token.UnionKeyword, \"'union'\"],\n [Token.ProjectionKeyword, \"'projection'\"],\n [Token.ElseKeyword, \"'else'\"],\n [Token.IfKeyword, \"'if'\"],\n [Token.DecKeyword, \"'dec'\"],\n [Token.FnKeyword, \"'fn'\"],\n [Token.ValueOfKeyword, \"'valueof'\"],\n [Token.ExtendsKeyword, \"'extends'\"],\n [Token.TrueKeyword, \"'true'\"],\n [Token.FalseKeyword, \"'false'\"],\n [Token.ReturnKeyword, \"'return'\"],\n [Token.VoidKeyword, \"'void'\"],\n [Token.NeverKeyword, \"'never'\"],\n [Token.UnknownKeyword, \"'unknown'\"],\n [Token.ExternKeyword, \"'extern'\"],\n]);\n/** @internal */\nexport const Keywords = new Map([\n [\"import\", Token.ImportKeyword],\n [\"model\", Token.ModelKeyword],\n [\"scalar\", Token.ScalarKeyword],\n [\"namespace\", Token.NamespaceKeyword],\n [\"interface\", Token.InterfaceKeyword],\n [\"union\", Token.UnionKeyword],\n [\"if\", Token.IfKeyword],\n [\"else\", Token.ElseKeyword],\n [\"projection\", Token.ProjectionKeyword],\n [\"using\", Token.UsingKeyword],\n [\"op\", Token.OpKeyword],\n [\"extends\", Token.ExtendsKeyword],\n [\"is\", Token.IsKeyword],\n [\"enum\", Token.EnumKeyword],\n [\"alias\", Token.AliasKeyword],\n [\"dec\", Token.DecKeyword],\n [\"fn\", Token.FnKeyword],\n [\"valueof\", Token.ValueOfKeyword],\n [\"true\", Token.TrueKeyword],\n [\"false\", Token.FalseKeyword],\n [\"return\", Token.ReturnKeyword],\n [\"void\", Token.VoidKeyword],\n [\"never\", Token.NeverKeyword],\n [\"unknown\", Token.UnknownKeyword],\n [\"extern\", Token.ExternKeyword],\n]);\nexport var TokenFlags;\n(function (TokenFlags) {\n TokenFlags[TokenFlags[\"None\"] = 0] = \"None\";\n TokenFlags[TokenFlags[\"Escaped\"] = 1] = \"Escaped\";\n TokenFlags[TokenFlags[\"TripleQuoted\"] = 2] = \"TripleQuoted\";\n TokenFlags[TokenFlags[\"Unterminated\"] = 4] = \"Unterminated\";\n TokenFlags[TokenFlags[\"NonAscii\"] = 8] = \"NonAscii\";\n TokenFlags[TokenFlags[\"DocComment\"] = 16] = \"DocComment\";\n TokenFlags[TokenFlags[\"Backticked\"] = 32] = \"Backticked\";\n})(TokenFlags || (TokenFlags = {}));\nexport function isTrivia(token) {\n return token >= Token.__StartTrivia && token < Token.__EndTrivia;\n}\nexport function isComment(token) {\n return token === Token.SingleLineComment || token === Token.MultiLineComment;\n}\nexport function isKeyword(token) {\n return token >= Token.__StartKeyword && token < Token.__EndKeyword;\n}\nexport function isPunctuation(token) {\n return token >= Token.__StartPunctuation && token < Token.__EndPunctuation;\n}\nexport function isModifier(token) {\n return token >= Token.__StartModifierKeyword && token < Token.__EndModifierKeyword;\n}\nexport function isStatementKeyword(token) {\n return token >= Token.__StartStatementKeyword && token < Token.__EndStatementKeyword;\n}\nexport function createScanner(source, diagnosticHandler) {\n const file = typeof source === \"string\" ? createSourceFile(source, \"<anonymous file>\") : source;\n const input = file.text;\n let position = 0;\n let endPosition = input.length;\n let token = Token.None;\n let tokenPosition = -1;\n let tokenFlags = TokenFlags.None;\n // Skip BOM\n if (position < endPosition && input.charCodeAt(position) === 65279 /* CharCode.ByteOrderMark */) {\n position++;\n }\n return {\n get position() {\n return position;\n },\n get token() {\n return token;\n },\n get tokenPosition() {\n return tokenPosition;\n },\n get tokenFlags() {\n return tokenFlags;\n },\n file,\n scan,\n scanRange,\n scanDoc,\n eof,\n getTokenText,\n getTokenValue,\n };\n function eof() {\n return position >= endPosition;\n }\n function getTokenText() {\n return input.substring(tokenPosition, position);\n }\n function getTokenValue() {\n switch (token) {\n case Token.StringLiteral:\n return getStringTokenValue();\n case Token.Identifier:\n return getIdentifierTokenValue();\n default:\n return getTokenText();\n }\n }\n function lookAhead(offset) {\n const p = position + offset;\n if (p >= endPosition) {\n return Number.NaN;\n }\n return input.charCodeAt(p);\n }\n function scan() {\n tokenPosition = position;\n tokenFlags = TokenFlags.None;\n if (!eof()) {\n const ch = input.charCodeAt(position);\n switch (ch) {\n case 13 /* CharCode.CarriageReturn */:\n if (lookAhead(1) === 10 /* CharCode.LineFeed */) {\n position++;\n }\n // fallthrough\n case 10 /* CharCode.LineFeed */:\n return next(Token.NewLine);\n case 32 /* CharCode.Space */:\n case 9 /* CharCode.Tab */:\n case 11 /* CharCode.VerticalTab */:\n case 12 /* CharCode.FormFeed */:\n return scanWhitespace();\n case 40 /* CharCode.OpenParen */:\n return next(Token.OpenParen);\n case 41 /* CharCode.CloseParen */:\n return next(Token.CloseParen);\n case 44 /* CharCode.Comma */:\n return next(Token.Comma);\n case 58 /* CharCode.Colon */:\n return lookAhead(1) === 58 /* CharCode.Colon */ ? next(Token.ColonColon, 2) : next(Token.Colon);\n case 59 /* CharCode.Semicolon */:\n return next(Token.Semicolon);\n case 91 /* CharCode.OpenBracket */:\n return next(Token.OpenBracket);\n case 93 /* CharCode.CloseBracket */:\n return next(Token.CloseBracket);\n case 123 /* CharCode.OpenBrace */:\n return next(Token.OpenBrace);\n case 125 /* CharCode.CloseBrace */:\n return next(Token.CloseBrace);\n case 64 /* CharCode.At */:\n return lookAhead(1) === 64 /* CharCode.At */ ? next(Token.AtAt, 2) : next(Token.At);\n case 35 /* CharCode.Hash */:\n return next(Token.Hash);\n case 43 /* CharCode.Plus */:\n return isDigit(lookAhead(1)) ? scanSignedNumber() : next(Token.Plus);\n case 45 /* CharCode.Minus */:\n return isDigit(lookAhead(1)) ? scanSignedNumber() : next(Token.Hyphen);\n case 42 /* CharCode.Asterisk */:\n return next(Token.Star);\n case 63 /* CharCode.Question */:\n return next(Token.Question);\n case 38 /* CharCode.Ampersand */:\n return lookAhead(1) === 38 /* CharCode.Ampersand */\n ? next(Token.AmpsersandAmpersand, 2)\n : next(Token.Ampersand);\n case 46 /* CharCode.Dot */:\n return lookAhead(1) === 46 /* CharCode.Dot */ && lookAhead(2) === 46 /* CharCode.Dot */\n ? next(Token.Ellipsis, 3)\n : next(Token.Dot);\n case 47 /* CharCode.Slash */:\n switch (lookAhead(1)) {\n case 47 /* CharCode.Slash */:\n return scanSingleLineComment();\n case 42 /* CharCode.Asterisk */:\n return scanMultiLineComment();\n }\n return next(Token.ForwardSlash);\n case 48 /* CharCode._0 */:\n switch (lookAhead(1)) {\n case 120 /* CharCode.x */:\n return scanHexNumber();\n case 98 /* CharCode.b */:\n return scanBinaryNumber();\n }\n // fallthrough\n case 49 /* CharCode._1 */:\n case 50 /* CharCode._2 */:\n case 51 /* CharCode._3 */:\n case 52 /* CharCode._4 */:\n case 53 /* CharCode._5 */:\n case 54 /* CharCode._6 */:\n case 55 /* CharCode._7 */:\n case 56 /* CharCode._8 */:\n case 57 /* CharCode._9 */:\n return scanNumber();\n case 60 /* CharCode.LessThan */:\n if (atConflictMarker())\n return scanConflictMarker();\n return lookAhead(1) === 61 /* CharCode.Equals */\n ? next(Token.LessThanEquals, 2)\n : next(Token.LessThan);\n case 62 /* CharCode.GreaterThan */:\n if (atConflictMarker())\n return scanConflictMarker();\n return lookAhead(1) === 61 /* CharCode.Equals */\n ? next(Token.GreaterThanEquals, 2)\n : next(Token.GreaterThan);\n case 61 /* CharCode.Equals */:\n if (atConflictMarker())\n return scanConflictMarker();\n switch (lookAhead(1)) {\n case 61 /* CharCode.Equals */:\n return next(Token.EqualsEquals, 2);\n case 62 /* CharCode.GreaterThan */:\n return next(Token.EqualsGreaterThan, 2);\n }\n return next(Token.Equals);\n case 124 /* CharCode.Bar */:\n if (atConflictMarker())\n return scanConflictMarker();\n return lookAhead(1) === 124 /* CharCode.Bar */ ? next(Token.BarBar, 2) : next(Token.Bar);\n case 34 /* CharCode.DoubleQuote */:\n return lookAhead(1) === 34 /* CharCode.DoubleQuote */ && lookAhead(2) === 34 /* CharCode.DoubleQuote */\n ? scanTripleQuotedString()\n : scanString();\n case 33 /* CharCode.Exclamation */:\n return lookAhead(1) === 61 /* CharCode.Equals */\n ? next(Token.ExclamationEquals, 2)\n : next(Token.Exclamation);\n case 96 /* CharCode.Backtick */:\n return scanBacktickedIdentifier();\n default:\n if (isLowercaseAsciiLetter(ch)) {\n return scanIdentifierOrKeyword();\n }\n if (isAsciiIdentifierStart(ch)) {\n return scanIdentifier();\n }\n if (ch <= 127 /* CharCode.MaxAscii */) {\n return scanInvalidCharacter();\n }\n return scanNonAsciiToken();\n }\n }\n return (token = Token.EndOfFile);\n }\n function scanDoc() {\n tokenPosition = position;\n tokenFlags = TokenFlags.None;\n if (!eof()) {\n const ch = input.charCodeAt(position);\n switch (ch) {\n case 13 /* CharCode.CarriageReturn */:\n if (lookAhead(1) === 10 /* CharCode.LineFeed */) {\n position++;\n }\n // fallthrough\n case 10 /* CharCode.LineFeed */:\n return next(Token.NewLine);\n case 32 /* CharCode.Space */:\n case 9 /* CharCode.Tab */:\n case 11 /* CharCode.VerticalTab */:\n case 12 /* CharCode.FormFeed */:\n return scanWhitespace();\n case 125 /* CharCode.CloseBrace */:\n return next(Token.CloseBrace);\n case 64 /* CharCode.At */:\n return next(Token.At);\n case 42 /* CharCode.Asterisk */:\n return next(Token.Star);\n case 96 /* CharCode.Backtick */:\n return lookAhead(1) === 96 /* CharCode.Backtick */ && lookAhead(2) === 96 /* CharCode.Backtick */\n ? next(Token.DocCodeFenceDelimiter, 3)\n : scanDocCodeSpan();\n case 60 /* CharCode.LessThan */:\n case 62 /* CharCode.GreaterThan */:\n case 61 /* CharCode.Equals */:\n case 124 /* CharCode.Bar */:\n if (atConflictMarker())\n return scanConflictMarker();\n return next(Token.DocText);\n }\n if (isAsciiIdentifierStart(ch)) {\n return scanIdentifier();\n }\n if (ch <= 127 /* CharCode.MaxAscii */) {\n return next(Token.DocText);\n }\n const cp = input.codePointAt(position);\n if (isIdentifierStart(cp)) {\n return scanNonAsciiIdentifier(cp);\n }\n return scanUnknown(Token.DocText);\n }\n return (token = Token.EndOfFile);\n }\n function scanRange(range, callback) {\n const savedPosition = position;\n const savedEndPosition = endPosition;\n const savedToken = token;\n const savedTokenPosition = tokenPosition;\n const savedTokenFlags = tokenFlags;\n position = range.pos;\n endPosition = range.end;\n token = Token.None;\n tokenPosition = -1;\n tokenFlags = TokenFlags.None;\n const result = callback();\n position = savedPosition;\n endPosition = savedEndPosition;\n token = savedToken;\n tokenPosition = savedTokenPosition;\n tokenFlags = savedTokenFlags;\n return result;\n }\n function next(t, count = 1) {\n position += count;\n return (token = t);\n }\n function unterminated(t) {\n tokenFlags |= TokenFlags.Unterminated;\n error({ code: \"unterminated\", format: { token: TokenDisplay[t] } });\n return (token = t);\n }\n function scanNonAsciiToken() {\n tokenFlags |= TokenFlags.NonAscii;\n const ch = input.charCodeAt(position);\n if (isNonAsciiWhiteSpaceSingleLine(ch)) {\n return scanWhitespace();\n }\n const cp = input.codePointAt(position);\n if (isNonAsciiIdentifierCharacter(cp)) {\n return scanNonAsciiIdentifier(cp);\n }\n return scanInvalidCharacter();\n }\n function scanInvalidCharacter() {\n token = scanUnknown(Token.Invalid);\n error({ code: \"invalid-character\" });\n return token;\n }\n function scanUnknown(t) {\n const codePoint = input.codePointAt(position);\n return (token = next(t, utf16CodeUnits(codePoint)));\n }\n function error(report) {\n const diagnostic = createDiagnostic({\n ...report,\n target: { file, pos: tokenPosition, end: position },\n });\n diagnosticHandler(diagnostic);\n }\n function scanWhitespace() {\n do {\n position++;\n } while (!eof() && isWhiteSpaceSingleLine(input.charCodeAt(position)));\n return (token = Token.Whitespace);\n }\n function scanSignedNumber() {\n position++; // consume '+/-'\n return scanNumber();\n }\n function scanNumber() {\n scanKnownDigits();\n if (!eof() && input.charCodeAt(position) === 46 /* CharCode.Dot */) {\n position++;\n scanRequiredDigits();\n }\n if (!eof() && input.charCodeAt(position) === 101 /* CharCode.e */) {\n position++;\n const ch = input.charCodeAt(position);\n if (ch === 43 /* CharCode.Plus */ || ch === 45 /* CharCode.Minus */) {\n position++;\n }\n scanRequiredDigits();\n }\n return (token = Token.NumericLiteral);\n }\n function scanKnownDigits() {\n do {\n position++;\n } while (!eof() && isDigit(input.charCodeAt(position)));\n }\n function scanRequiredDigits() {\n if (eof() || !isDigit(input.charCodeAt(position))) {\n error({ code: \"digit-expected\" });\n return;\n }\n scanKnownDigits();\n }\n function scanHexNumber() {\n position += 2; // consume '0x'\n if (eof() || !isHexDigit(input.charCodeAt(position))) {\n error({ code: \"hex-digit-expected\" });\n return (token = Token.NumericLiteral);\n }\n do {\n position++;\n } while (!eof() && isHexDigit(input.charCodeAt(position)));\n return (token = Token.NumericLiteral);\n }\n function scanBinaryNumber() {\n position += 2; // consume '0b'\n if (eof() || !isBinaryDigit(input.charCodeAt(position))) {\n error({ code: \"binary-digit-expected\" });\n return (token = Token.NumericLiteral);\n }\n do {\n position++;\n } while (!eof() && isBinaryDigit(input.charCodeAt(position)));\n return (token = Token.NumericLiteral);\n }\n function scanSingleLineComment() {\n position = skipSingleLineComment(input, position, endPosition);\n return (token = Token.SingleLineComment);\n }\n function scanMultiLineComment() {\n token = Token.MultiLineComment;\n if (lookAhead(2) === 42 /* CharCode.Asterisk */) {\n tokenFlags |= TokenFlags.DocComment;\n }\n const [newPosition, terminated] = skipMultiLineComment(input, position);\n position = newPosition;\n return terminated ? token : unterminated(token);\n }\n function scanDocCodeSpan() {\n position++; // consume '`'\n loop: for (; !eof(); position++) {\n const ch = input.charCodeAt(position);\n switch (ch) {\n case 96 /* CharCode.Backtick */:\n position++;\n return (token = Token.DocCodeSpan);\n case 13 /* CharCode.CarriageReturn */:\n case 10 /* CharCode.LineFeed */:\n break loop;\n }\n }\n return unterminated(Token.DocCodeSpan);\n }\n function scanString() {\n position++; // consume '\"'\n loop: for (; !eof(); position++) {\n const ch = input.charCodeAt(position);\n switch (ch) {\n case 92 /* CharCode.Backslash */:\n tokenFlags |= TokenFlags.Escaped;\n position++;\n if (eof()) {\n break loop;\n }\n continue;\n case 34 /* CharCode.DoubleQuote */:\n position++;\n return (token = Token.StringLiteral);\n case 13 /* CharCode.CarriageReturn */:\n case 10 /* CharCode.LineFeed */:\n break loop;\n }\n }\n return unterminated(Token.StringLiteral);\n }\n function scanTripleQuotedString() {\n tokenFlags |= TokenFlags.TripleQuoted;\n position += 3; // consume '\"\"\"'\n for (; !eof(); position++) {\n if (input.charCodeAt(position) === 34 /* CharCode.DoubleQuote */ &&\n lookAhead(1) === 34 /* CharCode.DoubleQuote */ &&\n lookAhead(2) === 34 /* CharCode.DoubleQuote */) {\n position += 3;\n return (token = Token.StringLiteral);\n }\n }\n return unterminated(Token.StringLiteral);\n }\n function getStringTokenValue() {\n const quoteLength = tokenFlags & TokenFlags.TripleQuoted ? 3 : 1;\n const start = tokenPosition + quoteLength;\n const end = tokenFlags & TokenFlags.Unterminated ? position : position - quoteLength;\n if (tokenFlags & TokenFlags.TripleQuoted) {\n return unindentAndUnescapeTripleQuotedString(start, end);\n }\n if (tokenFlags & TokenFlags.Escaped) {\n return unescapeString(start, end);\n }\n return input.substring(start, end);\n }\n function getIdentifierTokenValue() {\n const start = tokenFlags & TokenFlags.Backticked ? tokenPosition + 1 : tokenPosition;\n const end = tokenFlags & TokenFlags.Backticked && !(tokenFlags & TokenFlags.Unterminated)\n ? position - 1\n : position;\n const text = tokenFlags & TokenFlags.Escaped ? unescapeString(start, end) : input.substring(start, end);\n if (tokenFlags & TokenFlags.NonAscii) {\n return text.normalize(\"NFC\");\n }\n return text;\n }\n function unindentAndUnescapeTripleQuotedString(start, end) {\n // ignore leading whitespace before required initial line break\n while (start < end && isWhiteSpaceSingleLine(input.charCodeAt(start))) {\n start++;\n }\n // remove required initial line break\n if (isLineBreak(input.charCodeAt(start))) {\n if (isCrlf(start, start, end)) {\n start++;\n }\n start++;\n }\n else {\n error({ code: \"no-new-line-start-triple-quote\" });\n }\n // remove whitespace before closing delimiter and record it as required\n // indentation for all lines\n const indentationEnd = end;\n while (end > start && isWhiteSpaceSingleLine(input.charCodeAt(end - 1))) {\n end--;\n }\n const indentationStart = end;\n // remove required final line break\n if (isLineBreak(input.charCodeAt(end - 1))) {\n if (isCrlf(end - 2, start, end)) {\n end--;\n }\n end--;\n }\n else {\n error({ code: \"no-new-line-end-triple-quote\" });\n }\n // remove required matching indentation from each line and unescape in the\n // process of doing so\n let result = \"\";\n let pos = start;\n while (pos < end) {\n // skip indentation at start of line\n start = skipMatchingIndentation(pos, end, indentationStart, indentationEnd);\n let ch;\n while (pos < end && !isLineBreak((ch = input.charCodeAt(pos)))) {\n if (ch !== 92 /* CharCode.Backslash */) {\n pos++;\n continue;\n }\n result += input.substring(start, pos);\n if (pos === end - 1) {\n error({ code: \"invalid-escape-sequence\" });\n pos++;\n }\n else {\n result += unescapeOne(pos);\n pos += 2;\n }\n start = pos;\n }\n if (pos < end) {\n if (isCrlf(pos, start, end)) {\n // CRLF in multi-line string is normalized to LF in string value.\n // This keeps program behavior unchanged by line-ending conversion.\n result += input.substring(start, pos);\n result += \"\\n\";\n pos += 2;\n }\n else {\n pos++; // include non-CRLF newline\n result += input.substring(start, pos);\n }\n start = pos;\n }\n }\n result += input.substring(start, pos);\n return result;\n }\n function isCrlf(pos, start, end) {\n return (pos >= start &&\n pos < end - 1 &&\n input.charCodeAt(pos) === 13 /* CharCode.CarriageReturn */ &&\n input.charCodeAt(pos + 1) === 10 /* CharCode.LineFeed */);\n }\n function skipMatchingIndentation(pos, end, indentationStart, indentationEnd) {\n let indentationPos = indentationStart;\n end = Math.min(end, pos + (indentationEnd - indentationStart));\n while (pos < end) {\n const ch = input.charCodeAt(pos);\n if (isLineBreak(ch)) {\n // allow subset of indentation if line has only whitespace\n break;\n }\n if (ch !== input.charCodeAt(indentationPos)) {\n error({ code: \"triple-quote-indent\" });\n break;\n }\n indentationPos++;\n pos++;\n }\n return pos;\n }\n function unescapeString(start, end) {\n let result = \"\";\n let pos = start;\n while (pos < end) {\n const ch = input.charCodeAt(pos);\n if (ch !== 92 /* CharCode.Backslash */) {\n pos++;\n continue;\n }\n if (pos === end - 1) {\n error({ code: \"invalid-escape-sequence\" });\n break;\n }\n result += input.substring(start, pos);\n result += unescapeOne(pos);\n pos += 2;\n start = pos;\n }\n result += input.substring(start, pos);\n return result;\n }\n function unescapeOne(pos) {\n const ch = input.charCodeAt(pos + 1);\n switch (ch) {\n case 114 /* CharCode.r */:\n return \"\\r\";\n case 110 /* CharCode.n */:\n return \"\\n\";\n case 116 /* CharCode.t */:\n return \"\\t\";\n case 34 /* CharCode.DoubleQuote */:\n return '\"';\n case 92 /* CharCode.Backslash */:\n return \"\\\\\";\n case 96 /* CharCode.Backtick */:\n return \"`\";\n default:\n error({ code: \"invalid-escape-sequence\" });\n return String.fromCharCode(ch);\n }\n }\n function scanIdentifierOrKeyword() {\n let count = 0;\n let ch = input.charCodeAt(position);\n while (true) {\n position++;\n count++;\n if (eof()) {\n break;\n }\n ch = input.charCodeAt(position);\n if (count < 10 /* KeywordLimit.MaxLength */ && isLowercaseAsciiLetter(ch)) {\n continue;\n }\n if (isAsciiIdentifierContinue(ch)) {\n return scanIdentifier();\n }\n if (ch > 127 /* CharCode.MaxAscii */) {\n const cp = input.codePointAt(position);\n if (isNonAsciiIdentifierCharacter(cp)) {\n return scanNonAsciiIdentifier(cp);\n }\n }\n break;\n }\n if (count >= 2 /* KeywordLimit.MinLength */ && count <= 10 /* KeywordLimit.MaxLength */) {\n const keyword = Keywords.get(getTokenText());\n if (keyword) {\n return (token = keyword);\n }\n }\n return (token = Token.Identifier);\n }\n function scanIdentifier() {\n let ch;\n do {\n position++;\n if (eof()) {\n return (token = Token.Identifier);\n }\n } while (isAsciiIdentifierContinue((ch = input.charCodeAt(position))));\n if (ch > 127 /* CharCode.MaxAscii */) {\n const cp = input.codePointAt(position);\n if (isNonAsciiIdentifierCharacter(cp)) {\n return scanNonAsciiIdentifier(cp);\n }\n }\n return (token = Token.Identifier);\n }\n function scanBacktickedIdentifier() {\n position++; // consume '`'\n tokenFlags |= TokenFlags.Backticked;\n loop: for (; !eof(); position++) {\n const ch = input.charCodeAt(position);\n switch (ch) {\n case 92 /* CharCode.Backslash */:\n position++;\n tokenFlags |= TokenFlags.Escaped;\n continue;\n case 96 /* CharCode.Backtick */:\n position++;\n return (token = Token.Identifier);\n case 13 /* CharCode.CarriageReturn */:\n case 10 /* CharCode.LineFeed */:\n break loop;\n default:\n if (ch > 127 /* CharCode.MaxAscii */) {\n tokenFlags |= TokenFlags.NonAscii;\n }\n }\n }\n return unterminated(Token.Identifier);\n }\n function scanNonAsciiIdentifier(startCodePoint) {\n tokenFlags |= TokenFlags.NonAscii;\n let cp = startCodePoint;\n do {\n position += utf16CodeUnits(cp);\n } while (!eof() && isIdentifierContinue((cp = input.codePointAt(position))));\n return (token = Token.Identifier);\n }\n function atConflictMarker() {\n return isConflictMarker(input, position, endPosition);\n }\n function scanConflictMarker() {\n const marker = input.charCodeAt(position);\n position += mergeConflictMarkerLength;\n error({ code: \"conflict-marker\" });\n if (marker === 60 /* CharCode.LessThan */ || marker === 62 /* CharCode.GreaterThan */) {\n // Consume everything from >>>>>>> or <<<<<<< to the end of the line.\n while (position < endPosition && !isLineBreak(input.charCodeAt(position))) {\n position++;\n }\n }\n else {\n // Consume everything from the start of a ||||||| or =======\n // marker to the start of the next ======= or >>>>>>> marker.\n while (position < endPosition) {\n const ch = input.charCodeAt(position);\n if ((ch === 61 /* CharCode.Equals */ || ch === 62 /* CharCode.GreaterThan */) &&\n ch !== marker &&\n isConflictMarker(input, position, endPosition)) {\n break;\n }\n position++;\n }\n }\n return (token = Token.ConflictMarker);\n }\n}\nexport function skipTrivia(input, position, endPosition = input.length) {\n while (position < endPosition) {\n const ch = input.charCodeAt(position);\n if (isWhiteSpace(ch)) {\n position++;\n continue;\n }\n if (ch === 47 /* CharCode.Slash */) {\n switch (input.charCodeAt(position + 1)) {\n case 47 /* CharCode.Slash */:\n position = skipSingleLineComment(input, position, endPosition);\n continue;\n case 42 /* CharCode.Asterisk */:\n position = skipMultiLineComment(input, position, endPosition)[0];\n continue;\n }\n }\n break;\n }\n return position;\n}\nexport function skipWhiteSpace(input, position, endPosition = input.length) {\n while (position < endPosition) {\n const ch = input.charCodeAt(position);\n if (!isWhiteSpace(ch)) {\n break;\n }\n position++;\n }\n return position;\n}\nfunction skipSingleLineComment(input, position, endPosition = input.length) {\n position += 2; // consume '//'\n for (; position < endPosition; position++) {\n if (isLineBreak(input.charCodeAt(position))) {\n break;\n }\n }\n return position;\n}\nfunction skipMultiLineComment(input, position, endPosition = input.length) {\n position += 2; // consume '/*'\n for (; position < endPosition; position++) {\n if (input.charCodeAt(position) === 42 /* CharCode.Asterisk */ &&\n input.charCodeAt(position + 1) === 47 /* CharCode.Slash */) {\n return [position + 2, true];\n }\n }\n return [position, false];\n}\nfunction isConflictMarker(input, position, endPosition = input.length) {\n // Conflict markers must be at the start of a line.\n const ch = input.charCodeAt(position);\n if (position === 0 || isLineBreak(input.charCodeAt(position - 1))) {\n if (position + mergeConflictMarkerLength < endPosition) {\n for (let i = 0; i < mergeConflictMarkerLength; i++) {\n if (input.charCodeAt(position + i) !== ch) {\n return false;\n }\n }\n return (ch === 61 /* CharCode.Equals */ ||\n input.charCodeAt(position + mergeConflictMarkerLength) === 32 /* CharCode.Space */);\n }\n }\n return false;\n}\nfunction getTokenDisplayTable(entries) {\n const table = new Array(entries.length);\n for (const [token, display] of entries) {\n compilerAssert(token >= 0 && token < Token.__Count, `Invalid entry in token display table, ${token}, ${Token[token]}, ${display}`);\n compilerAssert(!table[token], `Duplicate entry in token display table for: ${token}, ${Token[token]}, ${display}`);\n table[token] = display;\n }\n for (let token = 0; token < Token.__Count; token++) {\n compilerAssert(table[token], `Missing entry in token display table: ${token}, ${Token[token]}`);\n }\n return table;\n}\n//# sourceMappingURL=scanner.js.map","import prettier from \"prettier\";\nimport { SyntaxKind } from \"../../core/types.js\";\nconst { util } = prettier;\n/**\n * Override the default behavior to attach comments to syntax node.\n */\nexport const commentHandler = {\n ownLine: (comment, text, options, ast, isLastComment) => [\n addEmptyInterfaceComment,\n addEmptyModelComment,\n addStatementDecoratorComment,\n handleOnlyComments,\n ].some((x) => x({ comment, text, options, ast: ast, isLastComment })),\n};\n/**\n * When a comment is on an empty interface make sure it gets added as a dangling comment on it and not on the identifier.\n *\n * @example\n *\n * interface Foo {\n * // My comment\n * }\n */\nfunction addEmptyInterfaceComment({ comment }) {\n const { precedingNode, enclosingNode } = comment;\n if (enclosingNode &&\n enclosingNode.kind === SyntaxKind.InterfaceStatement &&\n enclosingNode.operations.length === 0 &&\n precedingNode &&\n precedingNode.kind === SyntaxKind.Identifier) {\n util.addDanglingComment(enclosingNode, comment, undefined);\n return true;\n }\n return false;\n}\n/**\n * When a comment is in between decorators.\n *\n * @example\n *\n * @foo\n * // My comment\n * @bar\n * model Foo {\n * }\n */\nfunction addStatementDecoratorComment({ comment }) {\n const { enclosingNode, precedingNode } = comment;\n if (precedingNode &&\n precedingNode.kind === SyntaxKind.DecoratorExpression &&\n enclosingNode &&\n (enclosingNode.kind === SyntaxKind.NamespaceStatement ||\n enclosingNode.kind === SyntaxKind.ModelStatement ||\n enclosingNode.kind === SyntaxKind.EnumStatement ||\n enclosingNode.kind === SyntaxKind.OperationStatement ||\n enclosingNode.kind === SyntaxKind.ModelProperty ||\n enclosingNode.kind === SyntaxKind.EnumMember ||\n enclosingNode.kind === SyntaxKind.UnionStatement)) {\n util.addTrailingComment(precedingNode, comment);\n return true;\n }\n return false;\n}\n/**\n * When a comment is on an empty model make sure it gets added as a dangling comment on it and not on the identifier.\n *\n * @example\n *\n * model Foo {\n * // My comment\n * }\n */\nfunction addEmptyModelComment({ comment }) {\n const { precedingNode, enclosingNode } = comment;\n if (enclosingNode &&\n enclosingNode.kind === SyntaxKind.ModelStatement &&\n enclosingNode.properties.length === 0 &&\n precedingNode &&\n (precedingNode === enclosingNode.is ||\n precedingNode === enclosingNode.id ||\n precedingNode === enclosingNode.extends)) {\n util.addDanglingComment(enclosingNode, comment, undefined);\n return true;\n }\n return false;\n}\nfunction handleOnlyComments({ comment, ast, isLastComment }) {\n var _a, _b;\n const { enclosingNode } = comment;\n if (((_a = ast === null || ast === void 0 ? void 0 : ast.statements) === null || _a === void 0 ? void 0 : _a.length) === 0) {\n if (isLastComment) {\n util.addDanglingComment(ast, comment, undefined);\n }\n else {\n util.addLeadingComment(ast, comment);\n }\n return true;\n }\n if ((enclosingNode === null || enclosingNode === void 0 ? void 0 : enclosingNode.kind) === SyntaxKind.TypeSpecScript &&\n enclosingNode.statements.length === 0 &&\n ((_b = enclosingNode.directives) === null || _b === void 0 ? void 0 : _b.length) === 0) {\n if (isLastComment) {\n util.addDanglingComment(enclosingNode, comment, undefined);\n }\n else {\n util.addLeadingComment(enclosingNode, comment);\n }\n return true;\n }\n return false;\n}\n//# sourceMappingURL=comment-handler.js.map","import { SyntaxKind } from \"../../core/index.js\";\n/**\n * Check if the current path should be wrapped in parentheses\n * @param path Prettier print path.\n * @param options Prettier options\n */\nexport function needsParens(path, options) {\n const parent = path.getParentNode();\n if (!parent) {\n return false;\n }\n const node = path.getValue();\n switch (node.kind) {\n case SyntaxKind.IntersectionExpression:\n return (parent.kind === SyntaxKind.UnionExpression || parent.kind === SyntaxKind.ArrayExpression);\n case SyntaxKind.UnionExpression:\n return (parent.kind === SyntaxKind.IntersectionExpression ||\n parent.kind === SyntaxKind.ArrayExpression);\n case SyntaxKind.ProjectionLogicalExpression:\n return parent.kind === SyntaxKind.ProjectionLogicalExpression;\n case SyntaxKind.ProjectionArithmeticExpression:\n return parent.kind === SyntaxKind.ProjectionArithmeticExpression;\n default:\n return false;\n }\n}\n//# sourceMappingURL=needs-parens.js.map","import prettier from \"prettier\";\nimport { isIdentifierContinue, isIdentifierStart, utf16CodeUnits } from \"../../core/charcode.js\";\nimport { compilerAssert } from \"../../core/diagnostics.js\";\nimport { Keywords } from \"../../core/scanner.js\";\nimport { SyntaxKind, } from \"../../core/types.js\";\nimport { commentHandler } from \"./comment-handler.js\";\nimport { needsParens } from \"./needs-parens.js\";\nconst { align, breakParent, group, hardline, ifBreak, indent, join, line, softline } = prettier.doc.builders;\nconst { isNextLineEmpty } = prettier.util;\nexport const typespecPrinter = {\n print: printTypeSpec,\n canAttachComment: canAttachComment,\n printComment: printComment,\n handleComments: commentHandler,\n};\nexport function printTypeSpec(\n// Path to the AST node to print\npath, options, print) {\n const node = path.getValue();\n const directives = shouldPrintDirective(node) ? printDirectives(path, options, print) : \"\";\n const printedNode = printNode(path, options, print);\n const value = needsParens(path, options) ? [\"(\", printedNode, \")\"] : printedNode;\n const parts = [directives, value];\n if (node.kind === SyntaxKind.TypeSpecScript) {\n // For TypeSpecScript(root of typespec document) we had a new line at the end.\n // This must be done here so the hardline entry can be the last item of the doc array returned by the printer\n // so the markdown(and other embedded formatter) can omit that extra line.\n parts.push(hardline);\n }\n return parts;\n}\nfunction shouldPrintDirective(node) {\n // Model property handle printing directive itself.\n return node.kind !== SyntaxKind.ModelProperty;\n}\nexport function printNode(\n// Path to the AST node to print\npath, options, print) {\n const node = path.getValue();\n printDirectives(path, options, print);\n switch (node.kind) {\n // Root\n case SyntaxKind.TypeSpecScript:\n return printTypeSpecScript(path, options, print);\n // Statements\n case SyntaxKind.ImportStatement:\n return [`import \"${node.path.value}\";`];\n case SyntaxKind.UsingStatement:\n return [`using `, path.call(print, \"name\"), `;`];\n case SyntaxKind.OperationStatement:\n return printOperationStatement(path, options, print);\n case SyntaxKind.OperationSignatureDeclaration:\n return printOperationSignatureDeclaration(path, options, print);\n case SyntaxKind.OperationSignatureReference:\n return printOperationSignatureReference(path, options, print);\n case SyntaxKind.NamespaceStatement:\n return printNamespaceStatement(path, options, print);\n case SyntaxKind.ModelStatement:\n return printModelStatement(path, options, print);\n case SyntaxKind.ScalarStatement:\n return printScalarStatement(path, options, print);\n case SyntaxKind.AliasStatement:\n return printAliasStatement(path, options, print);\n case SyntaxKind.EnumStatement:\n return printEnumStatement(path, options, print);\n case SyntaxKind.UnionStatement:\n return printUnionStatement(path, options, print);\n case SyntaxKind.InterfaceStatement:\n return printInterfaceStatement(path, options, print);\n // Others.\n case SyntaxKind.Identifier:\n return printIdentifier(node, options);\n case SyntaxKind.StringLiteral:\n return printStringLiteral(path, options);\n case SyntaxKind.NumericLiteral:\n return printNumberLiteral(path, options);\n case SyntaxKind.BooleanLiteral:\n return printBooleanLiteral(path, options);\n case SyntaxKind.ModelExpression:\n return printModelExpression(path, options, print);\n case SyntaxKind.ModelProperty:\n return printModelProperty(path, options, print);\n case SyntaxKind.DecoratorExpression:\n return printDecorator(path, options, print);\n case SyntaxKind.AugmentDecoratorStatement:\n return printAugmentDecorator(path, options, print);\n case SyntaxKind.DirectiveExpression:\n return printDirective(path, options, print);\n case SyntaxKind.UnionExpression:\n return printUnion(path, options, print);\n case SyntaxKind.IntersectionExpression:\n return printIntersection(path, options, print);\n case SyntaxKind.ArrayExpression:\n return printArray(path, options, print);\n case SyntaxKind.TupleExpression:\n return printTuple(path, options, print);\n case SyntaxKind.MemberExpression:\n return printMemberExpression(path, options, print);\n case SyntaxKind.EnumMember:\n return printEnumMember(path, options, print);\n case SyntaxKind.EnumSpreadMember:\n return printEnumSpreadMember(path, options, print);\n case SyntaxKind.UnionVariant:\n return printUnionVariant(path, options, print);\n case SyntaxKind.TypeReference:\n return printTypeReference(path, options, print);\n case SyntaxKind.ValueOfExpression:\n return printValueOfExpression(path, options, print);\n case SyntaxKind.TemplateParameterDeclaration:\n return printTemplateParameterDeclaration(path, options, print);\n case SyntaxKind.ModelSpreadProperty:\n return printModelSpread(path, options, print);\n case SyntaxKind.DecoratorDeclarationStatement:\n return printDecoratorDeclarationStatement(path, options, print);\n case SyntaxKind.FunctionDeclarationStatement:\n return printFunctionDeclarationStatement(path, options, print);\n case SyntaxKind.FunctionParameter:\n return printFunctionParameterDeclaration(path, options, print);\n case SyntaxKind.ExternKeyword:\n return \"extern\";\n case SyntaxKind.VoidKeyword:\n return \"void\";\n case SyntaxKind.NeverKeyword:\n return \"never\";\n case SyntaxKind.UnknownKeyword:\n return \"unknown\";\n case SyntaxKind.ProjectionStatement:\n return printProjectionStatement(path, options, print);\n case SyntaxKind.ProjectionModelSelector:\n return \"model\";\n case SyntaxKind.ProjectionModelPropertySelector:\n return \"modelproperty\";\n case SyntaxKind.ProjectionOperationSelector:\n return \"op\";\n case SyntaxKind.ProjectionUnionSelector:\n return \"union\";\n case SyntaxKind.ProjectionUnionVariantSelector:\n return \"unionvariant\";\n case SyntaxKind.ProjectionInterfaceSelector:\n return \"interface\";\n case SyntaxKind.ProjectionEnumSelector:\n return \"enum\";\n case SyntaxKind.ProjectionEnumMemberSelector:\n return \"enummember\";\n case SyntaxKind.Projection:\n return printProjection(path, options, print);\n case SyntaxKind.ProjectionParameterDeclaration:\n return printProjectionParameterDeclaration(path, options, print);\n case SyntaxKind.ProjectionExpressionStatement:\n return printProjectionExpressionStatement(path, options, print);\n case SyntaxKind.ProjectionIfExpression:\n return printProjectionIfExpressionNode(path, options, print);\n case SyntaxKind.ProjectionBlockExpression:\n return printProjectionBlockExpressionNode(path, options, print);\n case SyntaxKind.ProjectionMemberExpression:\n return printProjectionMemberExpression(path, options, print);\n case SyntaxKind.ProjectionLogicalExpression:\n case SyntaxKind.ProjectionEqualityExpression:\n case SyntaxKind.ProjectionRelationalExpression:\n case SyntaxKind.ProjectionArithmeticExpression:\n return printProjectionLeftRightExpression(path, options, print);\n case SyntaxKind.ProjectionUnaryExpression:\n return printProjectionUnaryExpression(path, options, print);\n case SyntaxKind.ProjectionCallExpression:\n return printProjectionCallExpression(path, options, print);\n case SyntaxKind.ProjectionLambdaExpression:\n return printProjectionLambdaExpression(path, options, print);\n case SyntaxKind.ProjectionLambdaParameterDeclaration:\n return printProjectionLambdaParameterDeclaration(path, options, print);\n case SyntaxKind.ProjectionModelExpression:\n return printModelExpression(path, options, print);\n case SyntaxKind.ProjectionModelProperty:\n return printModelProperty(path, options, print);\n case SyntaxKind.ProjectionModelSpreadProperty:\n return printModelSpread(path, options, print);\n case SyntaxKind.ProjectionTupleExpression:\n return printTuple(path, options, print);\n case SyntaxKind.ProjectionDecoratorReferenceExpression:\n return path.call(print, \"target\");\n case SyntaxKind.Return:\n return printReturnExpression(path, options, print);\n case SyntaxKind.Doc:\n case SyntaxKind.DocText:\n case SyntaxKind.DocParamTag:\n case SyntaxKind.DocTemplateTag:\n case SyntaxKind.DocReturnsTag:\n case SyntaxKind.DocUnknownTag:\n // https://github.com/microsoft/typespec/issues/1319 Tracks pretty-printing doc comments.\n compilerAssert(false, \"Currently, doc comments are only handled as regular comments and we do not opt in to parsing them so we shouldn't reach here.\");\n return \"\";\n case SyntaxKind.EmptyStatement:\n return \"\";\n case SyntaxKind.JsSourceFile:\n case SyntaxKind.InvalidStatement:\n return getRawText(node, options);\n default:\n // Dummy const to ensure we handle all node types.\n // If you get an error here, add a case for the new node type\n // you added..\n const _assertNever = node;\n return getRawText(node, options);\n }\n}\nexport function printTypeSpecScript(path, options, print) {\n const node = path.getValue();\n const nodeHasComments = hasComments(node, CommentCheckFlags.Dangling);\n const body = [];\n if (nodeHasComments) {\n body.push(printDanglingComments(path, options, { sameIndent: true }));\n }\n body.push(printStatementSequence(path, options, print, \"statements\"));\n return body;\n}\nexport function printAliasStatement(path, options, print) {\n const id = path.call(print, \"id\");\n const template = printTemplateParameters(path, options, print, \"templateParameters\");\n return [\"alias \", id, template, \" = \", path.call(print, \"value\"), \";\"];\n}\nfunction printTemplateParameters(path, options, print, propertyName) {\n const node = path.getValue();\n const args = node[propertyName];\n if (args.length === 0) {\n return \"\";\n }\n const shouldHug = args.length === 1;\n if (shouldHug) {\n return [\"<\", join(\", \", path.map(print, propertyName)), \">\"];\n }\n else {\n const body = indent([softline, join([\", \", softline], path.map(print, propertyName))]);\n return group([\"<\", body, softline, \">\"]);\n }\n}\nexport function canAttachComment(node) {\n const kind = node.kind;\n return Boolean(kind &&\n kind !== SyntaxKind.LineComment &&\n kind !== SyntaxKind.BlockComment &&\n kind !== SyntaxKind.EmptyStatement &&\n !(node.flags & 8 /* NodeFlags.Synthetic */));\n}\nexport function printComment(commentPath, options) {\n const comment = commentPath.getValue();\n comment.printed = true;\n switch (comment.kind) {\n case SyntaxKind.BlockComment:\n return printBlockComment(commentPath, options);\n case SyntaxKind.LineComment:\n return `${options.originalText.slice(comment.pos, comment.end).trimEnd()}`;\n default:\n throw new Error(`Not a comment: ${JSON.stringify(comment)}`);\n }\n}\nfunction printBlockComment(commentPath, options) {\n const comment = commentPath.getValue();\n const rawComment = options.originalText.slice(comment.pos + 2, comment.end - 2);\n if (isIndentableBlockComment(rawComment)) {\n const printed = printIndentableBlockComment(rawComment);\n return printed;\n }\n return [\"/*\", rawComment, \"*/\"];\n}\nfunction isIndentableBlockComment(rawComment) {\n // If the comment has multiple lines and every line starts with a star\n // we can fix the indentation of each line. The stars in the `/*` and\n // `*/` delimiters are not included in the comment value, so add them\n // back first.\n const lines = `*${rawComment}*`.split(\"\\n\");\n return lines.length > 1 && lines.every((line) => line.trim()[0] === \"*\");\n}\nfunction printIndentableBlockComment(rawComment) {\n const lines = rawComment.split(\"\\n\");\n return [\n \"/*\",\n join(hardline, lines.map((line, index) => index === 0\n ? line.trimEnd()\n : \" \" + (index < lines.length - 1 ? line.trim() : line.trimStart()))),\n \"*/\",\n ];\n}\nexport function printDecorators(path, options, print, { tryInline }) {\n const node = path.getValue();\n if (node.decorators.length === 0) {\n return { decorators: \"\", multiline: false };\n }\n const shouldBreak = !tryInline || node.decorators.length >= 3 || hasNewlineBetweenOrAfterDecorators(node, options);\n const decorators = path.map((x) => [print(x), ifBreak(line, \" \")], \"decorators\");\n return {\n decorators: group([shouldBreak ? breakParent : \"\", decorators]),\n multiline: shouldBreak,\n };\n}\n/**\n * Check if there is already new lines in between the decorators of the node.\n */\nfunction hasNewlineBetweenOrAfterDecorators(node, options) {\n return node.decorators.some((decorator) => prettier.util.hasNewline(options.originalText, decorator.end));\n}\nexport function printDecorator(path, options, print) {\n const args = printDecoratorArgs(path, options, print);\n return [\"@\", path.call(print, \"target\"), args];\n}\nexport function printAugmentDecorator(path, options, print) {\n const args = printAugmentDecoratorArgs(path, options, print);\n return [\"@@\", path.call(print, \"target\"), args, \";\"];\n}\nfunction printAugmentDecoratorArgs(path, options, print) {\n return [\n \"(\",\n group([\n indent(join(\", \", [\n path.call(print, \"targetType\"),\n ...path.map((arg) => [softline, print(arg)], \"arguments\"),\n ])),\n softline,\n ]),\n \")\",\n ];\n}\nexport function printDirectives(path, options, print) {\n const node = path.getValue();\n if (node.directives === undefined || node.directives.length === 0) {\n return \"\";\n }\n const directives = path.map((x) => [print(x), line], \"directives\");\n return group([...directives, breakParent]);\n}\nexport function printDirective(path, options, print) {\n const args = printDirectiveArgs(path, options, print);\n return [\"#\", path.call(print, \"target\"), \" \", args];\n}\nfunction printDecoratorArgs(path, options, print) {\n const node = path.getValue();\n if (node.arguments.length === 0) {\n return \"\";\n }\n // So that decorator with single object arguments have ( and { hugging.\n // @deco({\n // value: \"foo\"\n // })\n const shouldHug = node.arguments.length === 1 &&\n (node.arguments[0].kind === SyntaxKind.ModelExpression ||\n node.arguments[0].kind === SyntaxKind.StringLiteral);\n if (shouldHug) {\n return [\n \"(\",\n join(\", \", path.map((arg) => [print(arg)], \"arguments\")),\n \")\",\n ];\n }\n return [\n \"(\",\n group([\n indent(join(\", \", path.map((arg) => [softline, print(arg)], \"arguments\"))),\n softline,\n ]),\n \")\",\n ];\n}\nexport function printDirectiveArgs(path, options, print) {\n const node = path.getValue();\n if (node.arguments.length === 0) {\n return \"\";\n }\n return join(\" \", path.map((arg) => [print(arg)], \"arguments\"));\n}\nexport function printEnumStatement(path, options, print) {\n const { decorators } = printDecorators(path, options, print, { tryInline: false });\n const id = path.call(print, \"id\");\n return [decorators, \"enum \", id, \" \", printEnumBlock(path, options, print)];\n}\nfunction printEnumBlock(path, options, print) {\n const node = path.getValue();\n if (node.members.length === 0) {\n return \"{}\";\n }\n return group([\n \"{\",\n indent([\n hardline,\n join(hardline, path.map((x) => [print(x), \",\"], \"members\")),\n ]),\n hardline,\n \"}\",\n ]);\n}\nexport function printEnumMember(path, options, print) {\n const node = path.getValue();\n const id = path.call(print, \"id\");\n const value = node.value ? [\": \", path.call(print, \"value\")] : \"\";\n const { decorators, multiline } = printDecorators(path, options, print, { tryInline: true });\n const propertyIndex = path.stack[path.stack.length - 2];\n const isNotFirst = typeof propertyIndex === \"number\" && propertyIndex > 0;\n return [multiline && isNotFirst ? hardline : \"\", decorators, id, value];\n}\nfunction printEnumSpreadMember(path, options, print) {\n return [\"...\", path.call(print, \"target\")];\n}\nexport function printUnionStatement(path, options, print) {\n const id = path.call(print, \"id\");\n const { decorators } = printDecorators(path, options, print, { tryInline: false });\n const generic = printTemplateParameters(path, options, print, \"templateParameters\");\n return [decorators, \"union \", id, generic, \" \", printUnionVariantsBlock(path, options, print)];\n}\nexport function printUnionVariantsBlock(path, options, print) {\n const node = path.getValue();\n if (node.options.length === 0) {\n return \"{}\";\n }\n return group([\n \"{\",\n indent([\n hardline,\n join(hardline, path.map((x) => [print(x), \",\"], \"options\")),\n ]),\n hardline,\n \"}\",\n ]);\n}\nexport function printUnionVariant(path, options, print) {\n const id = path.call(print, \"id\");\n const value = [\": \", path.call(print, \"value\")];\n const { decorators } = printDecorators(path, options, print, { tryInline: true });\n return [decorators, id, value];\n}\nexport function printInterfaceStatement(path, options, print) {\n const id = path.call(print, \"id\");\n const { decorators } = printDecorators(path, options, print, { tryInline: false });\n const generic = printTemplateParameters(path, options, print, \"templateParameters\");\n const extendList = printInterfaceExtends(path, options, print);\n return [\n decorators,\n \"interface \",\n id,\n generic,\n extendList,\n \" \",\n printInterfaceMembers(path, options, print),\n ];\n}\nfunction printInterfaceExtends(path, options, print) {\n const node = path.getValue();\n if (node.extends.length === 0) {\n return \"\";\n }\n const keyword = \"extends \";\n return [group(indent([line, keyword, indent(join([\",\", line], path.map(print, \"extends\")))]))];\n}\nexport function printInterfaceMembers(path, options, print) {\n const node = path.getValue();\n const hasOperations = node.operations.length > 0;\n const nodeHasComments = hasComments(node, CommentCheckFlags.Dangling);\n if (!hasOperations && !nodeHasComments) {\n return \"{}\";\n }\n const lastOperation = node.operations[node.operations.length - 1];\n const parts = [];\n path.each((operationPath) => {\n const node = operationPath.getValue();\n const printed = print(operationPath);\n parts.push(printed);\n if (node !== lastOperation) {\n parts.push(hardline);\n if (isNextLineEmpty(options.originalText, node, options.locEnd)) {\n parts.push(hardline);\n }\n }\n }, \"operations\");\n const body = [hardline, parts];\n if (nodeHasComments) {\n body.push(printDanglingComments(path, options, { sameIndent: true }));\n }\n return group([\"{\", indent(body), hardline, \"}\"]);\n}\nfunction printDanglingComments(path, options, { sameIndent }) {\n const node = path.getValue();\n const parts = [];\n if (!node || !node.comments) {\n return \"\";\n }\n path.each((commentPath) => {\n const comment = commentPath.getValue();\n if (!comment.leading && !comment.trailing) {\n parts.push(printComment(path, options));\n }\n }, \"comments\");\n if (parts.length === 0) {\n return \"\";\n }\n if (sameIndent) {\n return join(hardline, parts);\n }\n return indent([hardline, join(hardline, parts)]);\n}\n/**\n * Handle printing an intersection node.\n * @example `Foo & Bar` or `{foo: string} & {bar: string}`\n *\n * @param path Prettier AST Path.\n * @param options Prettier options\n * @param print Prettier child print callback.\n * @returns Prettier document.\n */\nexport function printIntersection(path, options, print) {\n const node = path.getValue();\n const types = path.map(print, \"options\");\n const result = [];\n let wasIndented = false;\n for (let i = 0; i < types.length; ++i) {\n if (i === 0) {\n result.push(types[i]);\n }\n else if (isModelNode(node.options[i - 1]) && isModelNode(node.options[i])) {\n // If both are objects, don't indent\n result.push([\" & \", wasIndented ? indent(types[i]) : types[i]]);\n }\n else if (!isModelNode(node.options[i - 1]) && !isModelNode(node.options[i])) {\n // If no object is involved, go to the next line if it breaks\n result.push(indent([\" &\", line, types[i]]));\n }\n else {\n // If you go from object to non-object or vis-versa, then inline it\n if (i > 1) {\n wasIndented = true;\n }\n result.push(\" & \", i > 1 ? indent(types[i]) : types[i]);\n }\n }\n return group(result);\n}\nfunction isModelNode(node) {\n return node.kind === SyntaxKind.ModelExpression;\n}\nexport function printArray(path, options, print) {\n return [path.call(print, \"elementType\"), \"[]\"];\n}\nexport function printTuple(path, options, print) {\n return group([\n \"[\",\n indent(join(\", \", path.map((arg) => [softline, print(arg)], \"values\"))),\n softline,\n \"]\",\n ]);\n}\nexport function printMemberExpression(path, options, print) {\n const node = path.getValue();\n return [node.base ? [path.call(print, \"base\"), \".\"] : \"\", path.call(print, \"id\")];\n}\nexport function printModelExpression(path, options, print) {\n const inBlock = isModelExpressionInBlock(path);\n if (inBlock) {\n return group(printModelPropertiesBlock(path, options, print));\n }\n else {\n return group([\n indent(join(\", \", path.map((arg) => [softline, print(arg)], \"properties\"))),\n softline,\n ]);\n }\n}\nexport function printModelStatement(path, options, print) {\n const node = path.getValue();\n const id = path.call(print, \"id\");\n const heritage = node.extends\n ? [ifBreak(line, \" \"), \"extends \", path.call(print, \"extends\")]\n : \"\";\n const isBase = node.is ? [ifBreak(line, \" \"), \"is \", path.call(print, \"is\")] : \"\";\n const generic = printTemplateParameters(path, options, print, \"templateParameters\");\n const nodeHasComments = hasComments(node, CommentCheckFlags.Dangling);\n const shouldPrintBody = nodeHasComments || !(node.properties.length === 0 && node.is);\n const body = shouldPrintBody ? [\" \", printModelPropertiesBlock(path, options, print)] : \";\";\n return [\n printDecorators(path, options, print, { tryInline: false }).decorators,\n \"model \",\n id,\n generic,\n group(indent([\"\", heritage, isBase])),\n body,\n ];\n}\nfunction printModelPropertiesBlock(path, options, print) {\n var _a;\n const node = path.getValue();\n const hasProperties = node.properties && node.properties.length > 0;\n const nodeHasComments = hasComments(node, CommentCheckFlags.Dangling);\n if (!hasProperties && !nodeHasComments) {\n return \"{}\";\n }\n const tryInline = ((_a = path.getParentNode()) === null || _a === void 0 ? void 0 : _a.kind) === SyntaxKind.TemplateParameterDeclaration;\n const lineDoc = tryInline ? softline : hardline;\n const seperator = isModelAValue(path) ? \",\" : \";\";\n const body = [\n lineDoc,\n join([seperator, lineDoc], path.map((x) => [print(x)], \"properties\")),\n hasProperties ? ifBreak(seperator) : \"\",\n ];\n if (nodeHasComments) {\n body.push(printDanglingComments(path, options, { sameIndent: true }));\n }\n return group([\"{\", indent(body), lineDoc, \"}\"]);\n}\n/**\n * Figure out if this model is being used as a definition or value.\n * @returns true if the model is used as a value(e.g. decorator value), false if it is used as a model definition.\n */\nfunction isModelAValue(path) {\n let count = 0;\n let node = path.getValue();\n do {\n switch (node.kind) {\n case SyntaxKind.ModelStatement:\n case SyntaxKind.AliasStatement:\n case SyntaxKind.OperationStatement:\n return false;\n case SyntaxKind.DecoratorExpression:\n return true;\n }\n } while ((node = path.getParentNode(count++)));\n return true;\n}\nexport function printModelProperty(path, options, print) {\n const node = path.getValue();\n const propertyIndex = path.stack[path.stack.length - 2];\n const isNotFirst = typeof propertyIndex === \"number\" && propertyIndex > 0;\n const { decorators, multiline } = printDecorators(path, options, print, {\n tryInline: true,\n });\n const id = printIdentifier(node.id, options);\n return [\n multiline && isNotFirst ? hardline : \"\",\n printDirectives(path, options, print),\n decorators,\n id,\n node.optional ? \"?: \" : \": \",\n path.call(print, \"value\"),\n node.default ? [\" = \", path.call(print, \"default\")] : \"\",\n ];\n}\nfunction printIdentifier(id, options) {\n return printId(id.sv);\n}\nexport function printId(sv) {\n if (needBacktick(sv)) {\n const escapedString = sv\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/\\t/g, \"\\\\t\")\n .replace(/`/g, \"\\\\`\");\n return `\\`${escapedString}\\``;\n }\n else {\n return sv;\n }\n}\nfunction needBacktick(sv) {\n if (sv.length === 0) {\n return false;\n }\n if (Keywords.has(sv)) {\n return true;\n }\n let cp = sv.codePointAt(0);\n if (!isIdentifierStart(cp)) {\n return true;\n }\n let pos = 0;\n do {\n pos += utf16CodeUnits(cp);\n } while (pos < sv.length && isIdentifierContinue((cp = sv.codePointAt(pos))));\n return pos < sv.length;\n}\nfunction isModelExpressionInBlock(path) {\n const parent = path.getParentNode();\n switch (parent === null || parent === void 0 ? void 0 : parent.kind) {\n case SyntaxKind.OperationSignatureDeclaration:\n return parent.parameters !== path.getNode();\n default:\n return true;\n }\n}\nexport function printScalarStatement(path, options, print) {\n const node = path.getValue();\n const id = path.call(print, \"id\");\n const template = printTemplateParameters(path, options, print, \"templateParameters\");\n const heritage = node.extends\n ? [ifBreak(line, \" \"), \"extends \", path.call(print, \"extends\")]\n : \"\";\n return [\n printDecorators(path, options, print, { tryInline: false }).decorators,\n \"scalar \",\n id,\n template,\n group(indent([\"\", heritage])),\n \";\",\n ];\n}\nexport function printNamespaceStatement(path, options, print) {\n const names = path.map(print, \"ids\");\n const currentNode = path.getNode();\n const suffix = (currentNode === null || currentNode === void 0 ? void 0 : currentNode.statements) === undefined\n ? \";\"\n : [\n \" {\",\n indent([hardline, printStatementSequence(path, options, print, \"statements\")]),\n hardline,\n \"}\",\n ];\n const { decorators } = printDecorators(path, options, print, { tryInline: false });\n return [decorators, `namespace `, join(\".\", names), suffix];\n}\nexport function printOperationSignatureDeclaration(path, options, print) {\n return [\"(\", path.call(print, \"parameters\"), \"): \", path.call(print, \"returnType\")];\n}\nexport function printOperationSignatureReference(path, options, print) {\n return [\" is \", path.call(print, \"baseOperation\")];\n}\nexport function printOperationStatement(path, options, print) {\n var _a;\n const inInterface = ((_a = path.getParentNode()) === null || _a === void 0 ? void 0 : _a.kind) === SyntaxKind.InterfaceStatement;\n const templateParams = printTemplateParameters(path, options, print, \"templateParameters\");\n const { decorators } = printDecorators(path, options, print, {\n tryInline: true,\n });\n return [\n decorators,\n inInterface ? \"\" : \"op \",\n path.call(print, \"id\"),\n templateParams,\n path.call(print, \"signature\"),\n `;`,\n ];\n}\nexport function printStatementSequence(path, options, print, property) {\n const node = path.getValue();\n const parts = [];\n const lastStatement = getLastStatement(node[property]);\n path.each((statementPath) => {\n const node = path.getValue();\n if (node.kind === SyntaxKind.EmptyStatement) {\n return;\n }\n const printed = print(statementPath);\n parts.push(printed);\n if (node !== lastStatement) {\n parts.push(hardline);\n if (isNextLineEmpty(options.originalText, node, options.locEnd)) {\n parts.push(hardline);\n }\n }\n }, property);\n return parts;\n}\nfunction getLastStatement(statements) {\n for (let i = statements.length - 1; i >= 0; i--) {\n const statement = statements[i];\n if (statement.kind !== SyntaxKind.EmptyStatement) {\n return statement;\n }\n }\n return undefined;\n}\nexport function printUnion(path, options, print) {\n const node = path.getValue();\n const shouldHug = shouldHugType(node);\n const types = path.map((typePath) => {\n let printedType = print(typePath);\n if (!shouldHug) {\n printedType = align(2, printedType);\n }\n return printedType;\n }, \"options\");\n if (shouldHug) {\n return join(\" | \", types);\n }\n const shouldAddStartLine = true;\n const code = [ifBreak([shouldAddStartLine ? line : \"\", \"| \"], \"\"), join([line, \"| \"], types)];\n return group(indent(code));\n}\nfunction shouldHugType(node) {\n if (node.kind === SyntaxKind.UnionExpression || node.kind === SyntaxKind.IntersectionExpression) {\n return node.options.length < 4;\n }\n return false;\n}\nexport function printTypeReference(path, options, print) {\n const type = path.call(print, \"target\");\n const template = printTemplateParameters(path, options, print, \"arguments\");\n return [type, template];\n}\nexport function printValueOfExpression(path, options, print) {\n const type = path.call(print, \"target\");\n return [\"valueof \", type];\n}\nfunction printTemplateParameterDeclaration(path, options, print) {\n const node = path.getValue();\n return [\n path.call(print, \"id\"),\n node.constraint ? [\" extends \", path.call(print, \"constraint\")] : \"\",\n node.default ? [\" = \", path.call(print, \"default\")] : \"\",\n ];\n}\nfunction printModelSpread(path, options, print) {\n return [\"...\", path.call(print, \"target\")];\n}\nfunction printDecoratorDeclarationStatement(path, options, print) {\n const id = path.call(print, \"id\");\n const parameters = [\n group([\n indent(join(\", \", [\n [softline, path.call(print, \"target\")],\n ...path.map((arg) => [softline, print(arg)], \"parameters\"),\n ])),\n softline,\n ]),\n ];\n return [printModifiers(path, options, print), \"dec \", id, \"(\", parameters, \")\", \";\"];\n}\nfunction printFunctionDeclarationStatement(path, options, print) {\n const node = path.getValue();\n const id = path.call(print, \"id\");\n const parameters = [\n group([\n indent(join(\", \", path.map((arg) => [softline, print(arg)], \"parameters\"))),\n softline,\n ]),\n ];\n const returnType = node.returnType ? [\": \", path.call(print, \"returnType\")] : \"\";\n return [printModifiers(path, options, print), \"fn \", id, \"(\", parameters, \")\", returnType, \";\"];\n}\nfunction printFunctionParameterDeclaration(path, options, print) {\n const node = path.getValue();\n const id = path.call(print, \"id\");\n const type = node.type ? [\": \", path.call(print, \"type\")] : \"\";\n return [\n node.rest ? \"...\" : \"\",\n printDirectives(path, options, print),\n id,\n node.optional ? \"?\" : \"\",\n type,\n ];\n}\nexport function printModifiers(path, options, print) {\n const node = path.getValue();\n if (node.modifiers.length === 0) {\n return \"\";\n }\n return path.map((x) => [print(x), \" \"], \"modifiers\");\n}\nfunction printStringLiteral(path, options) {\n const node = path.getValue();\n return getRawText(node, options);\n}\nfunction printNumberLiteral(path, options) {\n const node = path.getValue();\n return getRawText(node, options);\n}\nfunction printBooleanLiteral(path, options) {\n const node = path.getValue();\n return node.value ? \"true\" : \"false\";\n}\nfunction printProjectionStatement(path, options, print) {\n const selector = path.call(print, \"selector\");\n const id = path.call(print, \"id\");\n const projections = path.map(print, \"projections\").flatMap((x) => [hardline, x]);\n return [\n \"projection \",\n selector,\n \"#\",\n id,\n \" {\",\n indent(projections),\n projections.length > 0 ? hardline : \"\",\n \"}\",\n ];\n}\nfunction printProjection(path, options, print) {\n const node = path.getValue();\n const params = printProjectionParameters(path, options, print);\n const body = printProjectionExpressionStatements(path, options, print, \"body\");\n return [\n ...node.modifierIds.flatMap((i) => [i.sv, \" \"]),\n node.directionId.sv,\n params,\n \" {\",\n indent(body),\n hardline,\n \"}\",\n ];\n}\nfunction printProjectionParameters(path, options, print) {\n const node = path.getValue();\n const params = node.parameters;\n if (params.length === 0) {\n return \"\";\n }\n const shouldHug = params.length === 1;\n if (shouldHug) {\n return [\"(\", printItemList(path, options, print, \"parameters\"), \")\"];\n }\n else {\n const body = indent([softline, join([\", \", softline], path.map(print, \"parameters\"))]);\n return group([\"(\", body, softline, \")\"]);\n }\n}\nfunction printProjectionExpressionStatements(path, options, print, key) {\n const parts = [hardline];\n const lastIndex = path.getValue()[key].length - 1;\n path.each((statementPath, index) => {\n const node = path.getValue();\n if (node.kind === SyntaxKind.EmptyStatement) {\n return;\n }\n const printed = print(statementPath);\n parts.push(printed);\n parts.push(\";\");\n if (index < lastIndex) {\n parts.push(hardline);\n if (isNextLineEmpty(options.originalText, node, options.locEnd)) {\n parts.push(hardline);\n }\n }\n }, key);\n return parts;\n}\nfunction printProjectionParameterDeclaration(path, options, print) {\n return path.call(print, \"id\");\n}\nfunction printProjectionExpressionStatement(path, options, print) {\n return path.call(print, \"expr\");\n}\nfunction printProjectionIfExpressionNode(path, options, print) {\n const node = path.getValue();\n const test = path.call(print, \"test\");\n const consequent = path.call(print, \"consequent\");\n const alternate = node.alternate ? [\" else \", path.call(print, \"alternate\")] : \"\";\n return [\"if \", test, \" \", consequent, alternate];\n}\nexport function printProjectionBlockExpressionNode(path, options, print) {\n const node = path.getValue();\n if (node.statements.length === 0) {\n return \"{}\";\n }\n return [\n \"{\",\n indent(printProjectionExpressionStatements(path, options, print, \"statements\")),\n hardline,\n \"}\",\n ];\n}\nexport function printProjectionMemberExpression(path, options, print) {\n const node = path.getValue();\n return [path.call(print, \"base\"), node.selector, path.call(print, \"id\")];\n}\nexport function printProjectionLeftRightExpression(path, options, print) {\n const node = path.getValue();\n return [path.call(print, \"left\"), \" \", node.op, \" \", path.call(print, \"right\")];\n}\nexport function printProjectionUnaryExpression(path, options, print) {\n return [\"!\", path.call(print, \"target\")];\n}\nexport function printProjectionCallExpression(path, options, print) {\n const node = path.getValue();\n const target = path.call(print, \"target\");\n const params = printItemList(path, options, print, \"arguments\");\n if (node.callKind === \"method\") {\n return [target, \"(\", params, \")\"];\n }\n else {\n return [target, \"<\", params, \">\"];\n }\n}\nexport function printProjectionLambdaExpression(path, options, print) {\n return [\n \"(\",\n printItemList(path, options, print, \"parameters\"),\n \")\",\n \" => \",\n path.call(print, \"body\"),\n ];\n}\nexport function printProjectionLambdaParameterDeclaration(path, options, print) {\n return path.call(print, \"id\");\n}\nexport function printReturnExpression(path, options, print) {\n return [\"return \", path.call(print, \"value\")];\n}\nfunction printItemList(path, options, print, key) {\n return join(\", \", path.map(print, key));\n}\n/**\n * @param node Node that has postition information.\n * @param options Prettier options\n * @returns Raw text in the file for the given node.\n */\nfunction getRawText(node, options) {\n return options.originalText.slice(node.pos, node.end);\n}\nfunction hasComments(node, flags) {\n if (!node.comments || node.comments.length === 0) {\n return false;\n }\n const test = getCommentTestFunction(flags);\n return test ? node.comments.some(test) : true;\n}\nvar CommentCheckFlags;\n(function (CommentCheckFlags) {\n /** Check comment is a leading comment */\n CommentCheckFlags[CommentCheckFlags[\"Leading\"] = 2] = \"Leading\";\n /** Check comment is a trailing comment */\n CommentCheckFlags[CommentCheckFlags[\"Trailing\"] = 4] = \"Trailing\";\n /** Check comment is a dangling comment */\n CommentCheckFlags[CommentCheckFlags[\"Dangling\"] = 8] = \"Dangling\";\n /** Check comment is a block comment */\n CommentCheckFlags[CommentCheckFlags[\"Block\"] = 16] = \"Block\";\n /** Check comment is a line comment */\n CommentCheckFlags[CommentCheckFlags[\"Line\"] = 32] = \"Line\";\n /** Check comment is a `prettier-ignore` comment */\n CommentCheckFlags[CommentCheckFlags[\"PrettierIgnore\"] = 64] = \"PrettierIgnore\";\n /** Check comment is the first attached comment */\n CommentCheckFlags[CommentCheckFlags[\"First\"] = 128] = \"First\";\n /** Check comment is the last attached comment */\n CommentCheckFlags[CommentCheckFlags[\"Last\"] = 256] = \"Last\";\n})(CommentCheckFlags || (CommentCheckFlags = {}));\nfunction getCommentTestFunction(flags) {\n if (flags) {\n return (comment, index, comments) => !((flags & CommentCheckFlags.Leading && !comment.leading) ||\n (flags & CommentCheckFlags.Trailing && !comment.trailing) ||\n (flags & CommentCheckFlags.Dangling && (comment.leading || comment.trailing)) ||\n (flags & CommentCheckFlags.Block && !isBlockComment(comment)) ||\n (flags & CommentCheckFlags.Line && !isLineComment(comment)) ||\n (flags & CommentCheckFlags.First && index !== 0) ||\n (flags & CommentCheckFlags.Last && index !== comments.length - 1));\n }\n return undefined;\n}\nfunction isBlockComment(comment) {\n return comment.kind === SyntaxKind.BlockComment;\n}\nfunction isLineComment(comment) {\n return comment.kind === SyntaxKind.BlockComment;\n}\n//# sourceMappingURL=printer.js.map","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _MultiKeyMap_currentId, _MultiKeyMap_idMap, _MultiKeyMap_items, _Queue_elements, _Queue_headIndex, _DuplicateTracker_entries, _RekeyableMapImpl_keys, _RekeyableMapImpl_values, _a;\nimport { createSourceFile } from \"./diagnostics.js\";\nimport { createDiagnostic } from \"./messages.js\";\nimport { getAnyExtensionFromPath, getDirectoryPath, isPathAbsolute, isUrl, joinPaths, normalizePath, resolvePath, } from \"./path-utils.js\";\nimport { NoTarget, } from \"./types.js\";\nexport { typespecVersion } from \"../manifest.js\";\nexport { NodeHost } from \"./node-host.js\";\nexport class ExternalError extends Error {\n}\n/**\n * Recursively calls Object.freeze such that all objects and arrays\n * referenced are frozen.\n *\n * Does not support cycles. Intended to be used only on plain data that can\n * be directly represented in JSON.\n */\nexport function deepFreeze(value) {\n if (Array.isArray(value)) {\n value.forEach(deepFreeze);\n }\n else if (typeof value === \"object\") {\n for (const prop in value) {\n deepFreeze(value[prop]);\n }\n }\n return Object.freeze(value);\n}\n/**\n * Deeply clones an object.\n *\n * Does not support cycles. Intended to be used only on plain data that can\n * be directly represented in JSON.\n */\nexport function deepClone(value) {\n if (Array.isArray(value)) {\n return value.map(deepClone);\n }\n if (typeof value === \"object\") {\n const obj = {};\n for (const prop in value) {\n obj[prop] = deepClone(value[prop]);\n }\n return obj;\n }\n return value;\n}\n/**\n * Checks if two objects are deeply equal.\n *\n * Does not support cycles. Intended to be used only on plain data that can\n * be directly represented in JSON.\n */\nexport function deepEquals(left, right) {\n if (left === right) {\n return true;\n }\n if (left === null || right === null || typeof left !== \"object\" || typeof right !== \"object\") {\n return false;\n }\n if (Array.isArray(left)) {\n return Array.isArray(right) ? arrayEquals(left, right, deepEquals) : false;\n }\n return mapEquals(new Map(Object.entries(left)), new Map(Object.entries(right)), deepEquals);\n}\n/**\n * Check if two arrays have the same elements.\n *\n * @param equals Optional callback for element equality comparison.\n * Default is to compare by identity using `===`.\n */\nexport function arrayEquals(left, right, equals = (x, y) => x === y) {\n if (left === right) {\n return true;\n }\n if (left.length !== right.length) {\n return false;\n }\n for (let i = 0; i < left.length; i++) {\n if (!equals(left[i], right[i])) {\n return false;\n }\n }\n return true;\n}\n/**\n * Check if two maps have the same entries.\n *\n * @param equals Optional callback for value equality comparison.\n * Default is to compare by identity using `===`.\n */\nexport function mapEquals(left, right, equals = (x, y) => x === y) {\n if (left === right) {\n return true;\n }\n if (left.size !== right.size) {\n return false;\n }\n for (const [key, value] of left) {\n if (!right.has(key) || !equals(value, right.get(key))) {\n return false;\n }\n }\n return true;\n}\nexport async function getNormalizedRealPath(host, path) {\n return normalizePath(await host.realpath(path));\n}\nexport async function doIO(action, path, reportDiagnostic, options) {\n var _b;\n let result;\n try {\n result = await action(path);\n }\n catch (e) {\n let diagnostic;\n let target = (_b = options === null || options === void 0 ? void 0 : options.diagnosticTarget) !== null && _b !== void 0 ? _b : NoTarget;\n // blame the JS file, not the TypeSpec import statement for JS syntax errors.\n if (e instanceof SyntaxError && (options === null || options === void 0 ? void 0 : options.jsDiagnosticTarget)) {\n target = options.jsDiagnosticTarget;\n }\n switch (e.code) {\n case \"ENOENT\":\n if (options === null || options === void 0 ? void 0 : options.allowFileNotFound) {\n return undefined;\n }\n diagnostic = createDiagnostic({ code: \"file-not-found\", target, format: { path } });\n break;\n default:\n diagnostic = createDiagnostic({\n code: \"file-load\",\n target,\n format: { message: e.message },\n });\n break;\n }\n reportDiagnostic(diagnostic);\n return undefined;\n }\n return result;\n}\nexport async function loadFile(host, path, load, reportDiagnostic, options) {\n const file = await doIO(host.readFile, path, reportDiagnostic, options);\n if (!file) {\n return [undefined, createSourceFile(\"\", path)];\n }\n let data;\n try {\n data = load(file.text);\n }\n catch (e) {\n reportDiagnostic({\n code: \"file-load\",\n message: e.message,\n severity: \"error\",\n target: { file, pos: 1, end: 1 },\n });\n return [undefined, file];\n }\n return [data, file];\n}\nexport async function readUrlOrPath(host, pathOrUrl) {\n if (isUrl(pathOrUrl)) {\n return host.readUrl(pathOrUrl);\n }\n return host.readFile(pathOrUrl);\n}\nexport function resolveRelativeUrlOrPath(base, relativeOrAbsolute) {\n if (isUrl(relativeOrAbsolute)) {\n return relativeOrAbsolute;\n }\n else if (isPathAbsolute(relativeOrAbsolute)) {\n return relativeOrAbsolute;\n }\n else if (isUrl(base)) {\n return new URL(relativeOrAbsolute, base).href;\n }\n else {\n return resolvePath(base, relativeOrAbsolute);\n }\n}\n/**\n * A specially typed version of `Array.isArray` to work around [this issue](https://github.com/microsoft/TypeScript/issues/17002).\n */\nexport function isArray(\n// eslint-disable-next-line @typescript-eslint/ban-types\narg) {\n return Array.isArray(arg);\n}\n/**\n * Check if argument is not undefined.\n */\nexport function isDefined(arg) {\n return arg !== undefined;\n}\n/**\n * Remove undefined properties from object.\n */\nexport function omitUndefined(data) {\n return Object.fromEntries(Object.entries(data).filter(([k, v]) => v !== undefined));\n}\n/**\n * Look for the project root by looking up until a `package.json` is found.\n * @param path Path to start looking\n * @param lookIn\n */\nexport async function findProjectRoot(host, path) {\n let current = path;\n while (true) {\n const pkgPath = joinPaths(current, \"package.json\");\n const stat = await doIO(() => host.stat(pkgPath), pkgPath, () => { });\n if (stat === null || stat === void 0 ? void 0 : stat.isFile()) {\n return current;\n }\n const parent = getDirectoryPath(current);\n if (parent === current) {\n return undefined;\n }\n current = parent;\n }\n}\n/**\n * Extract package.json's tspMain entry point in a given path. Note, it takes into\n * back compat for deprecated cadlMain\n * @param path Path that contains package.json\n * @param reportDiagnostic optional diagnostic handler.\n */\nexport function resolveTspMain(packageJson) {\n if ((packageJson === null || packageJson === void 0 ? void 0 : packageJson.tspMain) !== undefined) {\n return packageJson.tspMain;\n }\n if ((packageJson === null || packageJson === void 0 ? void 0 : packageJson.cadlMain) !== undefined) {\n return packageJson.cadlMain;\n }\n return undefined;\n}\n/**\n * A map keyed by a set of objects.\n *\n * This is likely non-optimal.\n */\nexport class MultiKeyMap {\n constructor() {\n _MultiKeyMap_currentId.set(this, 0);\n _MultiKeyMap_idMap.set(this, new WeakMap());\n _MultiKeyMap_items.set(this, new Map());\n }\n get(items) {\n return __classPrivateFieldGet(this, _MultiKeyMap_items, \"f\").get(this.compositeKeyFor(items));\n }\n set(items, value) {\n const key = this.compositeKeyFor(items);\n __classPrivateFieldGet(this, _MultiKeyMap_items, \"f\").set(key, value);\n }\n compositeKeyFor(items) {\n return items.map((i) => this.keyFor(i)).join(\",\");\n }\n keyFor(item) {\n var _b, _c;\n if (__classPrivateFieldGet(this, _MultiKeyMap_idMap, \"f\").has(item)) {\n return __classPrivateFieldGet(this, _MultiKeyMap_idMap, \"f\").get(item);\n }\n const id = (__classPrivateFieldSet(this, _MultiKeyMap_currentId, (_c = __classPrivateFieldGet(this, _MultiKeyMap_currentId, \"f\"), _b = _c++, _c), \"f\"), _b);\n __classPrivateFieldGet(this, _MultiKeyMap_idMap, \"f\").set(item, id);\n return id;\n }\n}\n_MultiKeyMap_currentId = new WeakMap(), _MultiKeyMap_idMap = new WeakMap(), _MultiKeyMap_items = new WeakMap();\n/**\n * A map with exactly two keys per value.\n *\n * Functionally the same as `MultiKeyMap<[K1, K2], V>`, but more efficient.\n */\nexport class TwoLevelMap extends Map {\n /**\n * Get an existing entry in the map or add a new one if not found.\n *\n * @param key1 The first key\n * @param key2 The second key\n * @param create A callback to create the new entry when not found.\n * @param sentinel An optional sentinel value to use to indicate that the\n * entry is being created.\n */\n getOrAdd(key1, key2, create, sentinel) {\n let map = this.get(key1);\n if (map === undefined) {\n map = new Map();\n this.set(key1, map);\n }\n let entry = map.get(key2);\n if (entry === undefined) {\n if (sentinel !== undefined) {\n map.set(key2, sentinel);\n }\n entry = create();\n map.set(key2, entry);\n }\n return entry;\n }\n}\n// Adapted from https://github.com/microsoft/TypeScript/blob/bc52ff6f4be9347981de415a35da90497eae84ac/src/compiler/core.ts#L1507\nexport class Queue {\n constructor(elements) {\n var _b;\n _Queue_elements.set(this, void 0);\n _Queue_headIndex.set(this, 0);\n __classPrivateFieldSet(this, _Queue_elements, (_b = elements === null || elements === void 0 ? void 0 : elements.slice()) !== null && _b !== void 0 ? _b : [], \"f\");\n }\n isEmpty() {\n return __classPrivateFieldGet(this, _Queue_headIndex, \"f\") === __classPrivateFieldGet(this, _Queue_elements, \"f\").length;\n }\n enqueue(...items) {\n __classPrivateFieldGet(this, _Queue_elements, \"f\").push(...items);\n }\n dequeue() {\n var _b;\n if (this.isEmpty()) {\n throw new Error(\"Queue is empty.\");\n }\n const result = __classPrivateFieldGet(this, _Queue_elements, \"f\")[__classPrivateFieldGet(this, _Queue_headIndex, \"f\")];\n __classPrivateFieldGet(this, _Queue_elements, \"f\")[__classPrivateFieldGet(this, _Queue_headIndex, \"f\")] = undefined; // Don't keep referencing dequeued item\n __classPrivateFieldSet(this, _Queue_headIndex, // Don't keep referencing dequeued item\n (_b = __classPrivateFieldGet(this, _Queue_headIndex, \"f\"), _b++, _b), \"f\");\n // If more than half of the queue is empty, copy the remaining elements to the\n // front and shrink the array (unless we'd be saving fewer than 100 slots)\n if (__classPrivateFieldGet(this, _Queue_headIndex, \"f\") > 100 && __classPrivateFieldGet(this, _Queue_headIndex, \"f\") > __classPrivateFieldGet(this, _Queue_elements, \"f\").length >> 1) {\n const newLength = __classPrivateFieldGet(this, _Queue_elements, \"f\").length - __classPrivateFieldGet(this, _Queue_headIndex, \"f\");\n __classPrivateFieldGet(this, _Queue_elements, \"f\").copyWithin(0, __classPrivateFieldGet(this, _Queue_headIndex, \"f\"));\n __classPrivateFieldGet(this, _Queue_elements, \"f\").length = newLength;\n __classPrivateFieldSet(this, _Queue_headIndex, 0, \"f\");\n }\n return result;\n }\n}\n_Queue_elements = new WeakMap(), _Queue_headIndex = new WeakMap();\n/**\n * Casts away readonly typing.\n *\n * Use it like this when it is safe to override readonly typing:\n * mutate(item).prop = value;\n */\nexport function mutate(value) {\n return value;\n}\nexport function getSourceFileKindFromExt(path) {\n const ext = getAnyExtensionFromPath(path);\n if (ext === \".js\" || ext === \".mjs\") {\n return \"js\";\n }\n else if (ext === \".tsp\" || ext === \".cadl\") {\n return \"typespec\";\n }\n else {\n return undefined;\n }\n}\nexport function createStringMap(caseInsensitive) {\n return caseInsensitive ? new CaseInsensitiveMap() : new Map();\n}\nclass CaseInsensitiveMap extends Map {\n get(key) {\n return super.get(key.toUpperCase());\n }\n set(key, value) {\n return super.set(key.toUpperCase(), value);\n }\n has(key) {\n return super.has(key.toUpperCase());\n }\n delete(key) {\n return super.delete(key.toUpperCase());\n }\n}\n/**\n * Helper class to track duplicate instance\n */\nexport class DuplicateTracker {\n constructor() {\n _DuplicateTracker_entries.set(this, new Map());\n }\n /**\n * Track usage of K.\n * @param k key that is being checked for duplicate.\n * @param v value that map to the key\n */\n track(k, v) {\n const existing = __classPrivateFieldGet(this, _DuplicateTracker_entries, \"f\").get(k);\n if (existing === undefined) {\n __classPrivateFieldGet(this, _DuplicateTracker_entries, \"f\").set(k, [v]);\n }\n else {\n existing.push(v);\n }\n }\n /**\n * Return iterator of all the duplicate entries.\n */\n *entries() {\n for (const [k, v] of __classPrivateFieldGet(this, _DuplicateTracker_entries, \"f\").entries()) {\n if (v.length > 1) {\n yield [k, v];\n }\n }\n }\n}\n_DuplicateTracker_entries = new WeakMap();\nexport function createRekeyableMap(entries) {\n return new RekeyableMapImpl(entries);\n}\nclass RekeyableMapImpl {\n constructor(entries) {\n _RekeyableMapImpl_keys.set(this, new Map());\n _RekeyableMapImpl_values.set(this, new Map());\n this[_a] = \"RekeyableMap\";\n if (entries) {\n for (const [key, value] of entries) {\n this.set(key, value);\n }\n }\n }\n clear() {\n __classPrivateFieldGet(this, _RekeyableMapImpl_keys, \"f\").clear();\n __classPrivateFieldGet(this, _RekeyableMapImpl_values, \"f\").clear();\n }\n delete(key) {\n const keyItem = __classPrivateFieldGet(this, _RekeyableMapImpl_keys, \"f\").get(key);\n if (keyItem) {\n __classPrivateFieldGet(this, _RekeyableMapImpl_keys, \"f\").delete(key);\n return __classPrivateFieldGet(this, _RekeyableMapImpl_values, \"f\").delete(keyItem);\n }\n return false;\n }\n forEach(callbackfn, thisArg) {\n __classPrivateFieldGet(this, _RekeyableMapImpl_values, \"f\").forEach((value, keyItem) => {\n callbackfn(value, keyItem.key, this);\n }, thisArg);\n }\n get(key) {\n const keyItem = __classPrivateFieldGet(this, _RekeyableMapImpl_keys, \"f\").get(key);\n return keyItem ? __classPrivateFieldGet(this, _RekeyableMapImpl_values, \"f\").get(keyItem) : undefined;\n }\n has(key) {\n return __classPrivateFieldGet(this, _RekeyableMapImpl_keys, \"f\").has(key);\n }\n set(key, value) {\n let keyItem = __classPrivateFieldGet(this, _RekeyableMapImpl_keys, \"f\").get(key);\n if (!keyItem) {\n keyItem = { key };\n __classPrivateFieldGet(this, _RekeyableMapImpl_keys, \"f\").set(key, keyItem);\n }\n __classPrivateFieldGet(this, _RekeyableMapImpl_values, \"f\").set(keyItem, value);\n return this;\n }\n get size() {\n return __classPrivateFieldGet(this, _RekeyableMapImpl_values, \"f\").size;\n }\n *entries() {\n for (const [k, v] of __classPrivateFieldGet(this, _RekeyableMapImpl_values, \"f\")) {\n yield [k.key, v];\n }\n }\n *keys() {\n for (const k of __classPrivateFieldGet(this, _RekeyableMapImpl_values, \"f\").keys()) {\n yield k.key;\n }\n }\n values() {\n return __classPrivateFieldGet(this, _RekeyableMapImpl_values, \"f\").values();\n }\n [(_RekeyableMapImpl_keys = new WeakMap(), _RekeyableMapImpl_values = new WeakMap(), Symbol.iterator)]() {\n return this.entries();\n }\n rekey(existingKey, newKey) {\n const keyItem = __classPrivateFieldGet(this, _RekeyableMapImpl_keys, \"f\").get(existingKey);\n if (!keyItem) {\n return false;\n }\n __classPrivateFieldGet(this, _RekeyableMapImpl_keys, \"f\").delete(existingKey);\n keyItem.key = newKey;\n __classPrivateFieldGet(this, _RekeyableMapImpl_keys, \"f\").set(newKey, keyItem);\n return true;\n }\n}\n_a = Symbol.toStringTag;\n//# sourceMappingURL=util.js.map","import { trim } from \"./charcode.js\";\nimport { compilerAssert } from \"./diagnostics.js\";\nimport { createDiagnostic } from \"./messages.js\";\nimport { Token, TokenDisplay, TokenFlags, createScanner, isComment, isKeyword, isPunctuation, isStatementKeyword, isTrivia, } from \"./scanner.js\";\nimport { IdentifierKind, SyntaxKind, } from \"./types.js\";\nimport { isArray, mutate } from \"./util.js\";\n/**\n * The fixed set of options for each of the kinds of delimited lists in TypeSpec.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nvar ListKind;\n(function (ListKind) {\n const PropertiesBase = {\n allowEmpty: true,\n toleratedDelimiterIsValid: true,\n trailingDelimiterIsValid: true,\n allowedStatementKeyword: Token.None,\n };\n ListKind.OperationParameters = {\n ...PropertiesBase,\n open: Token.OpenParen,\n close: Token.CloseParen,\n delimiter: Token.Comma,\n toleratedDelimiter: Token.Semicolon,\n };\n ListKind.DecoratorArguments = {\n ...ListKind.OperationParameters,\n invalidAnnotationTarget: \"expression\",\n };\n ListKind.ModelProperties = {\n ...PropertiesBase,\n open: Token.OpenBrace,\n close: Token.CloseBrace,\n delimiter: Token.Semicolon,\n toleratedDelimiter: Token.Comma,\n };\n ListKind.InterfaceMembers = {\n ...PropertiesBase,\n open: Token.OpenBrace,\n close: Token.CloseBrace,\n delimiter: Token.Semicolon,\n toleratedDelimiter: Token.Comma,\n toleratedDelimiterIsValid: false,\n allowedStatementKeyword: Token.OpKeyword,\n };\n ListKind.UnionVariants = {\n ...PropertiesBase,\n open: Token.OpenBrace,\n close: Token.CloseBrace,\n delimiter: Token.Semicolon,\n toleratedDelimiter: Token.Comma,\n toleratedDelimiterIsValid: true,\n };\n ListKind.EnumMembers = {\n ...ListKind.ModelProperties,\n };\n const ExpresionsBase = {\n allowEmpty: true,\n delimiter: Token.Comma,\n toleratedDelimiter: Token.Semicolon,\n toleratedDelimiterIsValid: false,\n trailingDelimiterIsValid: false,\n invalidAnnotationTarget: \"expression\",\n allowedStatementKeyword: Token.None,\n };\n ListKind.TemplateParameters = {\n ...ExpresionsBase,\n allowEmpty: false,\n open: Token.LessThan,\n close: Token.GreaterThan,\n invalidAnnotationTarget: \"template parameter\",\n };\n ListKind.TemplateArguments = {\n ...ListKind.TemplateParameters,\n };\n ListKind.CallArguments = {\n ...ExpresionsBase,\n allowEmpty: true,\n open: Token.OpenParen,\n close: Token.CloseParen,\n };\n ListKind.Heritage = {\n ...ExpresionsBase,\n allowEmpty: false,\n open: Token.None,\n close: Token.None,\n };\n ListKind.Tuple = {\n ...ExpresionsBase,\n allowEmpty: true,\n open: Token.OpenBracket,\n close: Token.CloseBracket,\n };\n ListKind.FunctionParameters = {\n ...ExpresionsBase,\n allowEmpty: true,\n open: Token.OpenParen,\n close: Token.CloseParen,\n invalidAnnotationTarget: \"expression\",\n };\n ListKind.ProjectionExpression = {\n ...ExpresionsBase,\n allowEmpty: true,\n open: Token.OpenParen,\n close: Token.CloseParen,\n };\n ListKind.ProjectionParameter = {\n ...ExpresionsBase,\n allowEmpty: true,\n open: Token.OpenParen,\n close: Token.CloseParen,\n };\n})(ListKind || (ListKind = {}));\nexport function parse(code, options = {}) {\n const parser = createParser(code, options);\n return parser.parseTypeSpecScript();\n}\nexport function parseStandaloneTypeReference(code) {\n const parser = createParser(code);\n const node = parser.parseStandaloneReferenceExpression();\n return [node, parser.parseDiagnostics];\n}\nfunction createParser(code, options = {}) {\n let parseErrorInNextFinishedNode = false;\n let previousTokenEnd = -1;\n let realPositionOfLastError = -1;\n let missingIdentifierCounter = 0;\n let treePrintable = true;\n let newLineIsTrivia = true;\n let currentMode = 0 /* ParseMode.Syntax */;\n const parseDiagnostics = [];\n const scanner = createScanner(code, reportDiagnostic);\n const comments = [];\n let docRanges = [];\n nextToken();\n return {\n parseDiagnostics,\n parseTypeSpecScript,\n parseStandaloneReferenceExpression,\n };\n function parseTypeSpecScript() {\n const statements = parseTypeSpecScriptItemList();\n return {\n kind: SyntaxKind.TypeSpecScript,\n statements,\n file: scanner.file,\n id: {\n kind: SyntaxKind.Identifier,\n sv: scanner.file.path,\n pos: 0,\n end: 0,\n flags: 8 /* NodeFlags.Synthetic */,\n },\n namespaces: [],\n usings: [],\n locals: undefined,\n inScopeNamespaces: [],\n parseDiagnostics,\n comments,\n printable: treePrintable,\n parseOptions: options,\n ...finishNode(0),\n };\n }\n function parseTypeSpecScriptItemList() {\n const stmts = [];\n let seenBlocklessNs = false;\n let seenDecl = false;\n let seenUsing = false;\n while (token() !== Token.EndOfFile) {\n const [pos, docs] = parseDocList();\n const directives = parseDirectiveList();\n const decorators = parseDecoratorList();\n const tok = token();\n let item;\n switch (tok) {\n case Token.AtAt:\n reportInvalidDecorators(decorators, \"augment decorator statement\");\n item = parseAugmentDecorator();\n break;\n case Token.ImportKeyword:\n reportInvalidDecorators(decorators, \"import statement\");\n item = parseImportStatement();\n break;\n case Token.ModelKeyword:\n item = parseModelStatement(pos, decorators);\n break;\n case Token.ScalarKeyword:\n item = parseScalarStatement(pos, decorators);\n break;\n case Token.NamespaceKeyword:\n item = parseNamespaceStatement(pos, decorators);\n break;\n case Token.InterfaceKeyword:\n item = parseInterfaceStatement(pos, decorators);\n break;\n case Token.UnionKeyword:\n item = parseUnionStatement(pos, decorators);\n break;\n case Token.OpKeyword:\n item = parseOperationStatement(pos, decorators);\n break;\n case Token.EnumKeyword:\n item = parseEnumStatement(pos, decorators);\n break;\n case Token.AliasKeyword:\n reportInvalidDecorators(decorators, \"alias statement\");\n item = parseAliasStatement(pos);\n break;\n case Token.UsingKeyword:\n reportInvalidDecorators(decorators, \"using statement\");\n item = parseUsingStatement(pos);\n break;\n case Token.ProjectionKeyword:\n reportInvalidDecorators(decorators, \"projection statement\");\n item = parseProjectionStatement(pos);\n break;\n case Token.Semicolon:\n reportInvalidDecorators(decorators, \"empty statement\");\n item = parseEmptyStatement(pos);\n break;\n // Start of declaration with modifiers\n case Token.ExternKeyword:\n case Token.FnKeyword:\n case Token.DecKeyword:\n item = parseDeclaration(pos);\n break;\n default:\n item = parseInvalidStatement(pos, decorators);\n break;\n }\n mutate(item).directives = directives;\n mutate(item).docs = docs;\n if (isBlocklessNamespace(item)) {\n if (seenBlocklessNs) {\n error({ code: \"multiple-blockless-namespace\", target: item });\n }\n if (seenDecl) {\n error({ code: \"blockless-namespace-first\", target: item });\n }\n seenBlocklessNs = true;\n }\n else if (item.kind === SyntaxKind.ImportStatement) {\n if (seenDecl || seenBlocklessNs || seenUsing) {\n error({ code: \"import-first\", target: item });\n }\n }\n else if (item.kind === SyntaxKind.UsingStatement) {\n seenUsing = true;\n }\n else {\n seenDecl = true;\n }\n stmts.push(item);\n }\n return stmts;\n }\n function parseStatementList() {\n const stmts = [];\n while (token() !== Token.CloseBrace) {\n const [pos, docs] = parseDocList();\n const directives = parseDirectiveList();\n const decorators = parseDecoratorList();\n const tok = token();\n let item;\n switch (tok) {\n case Token.AtAt:\n reportInvalidDecorators(decorators, \"augment decorator statement\");\n item = parseAugmentDecorator();\n break;\n case Token.ImportKeyword:\n reportInvalidDecorators(decorators, \"import statement\");\n item = parseImportStatement();\n error({ code: \"import-first\", messageId: \"topLevel\", target: item });\n break;\n case Token.ModelKeyword:\n item = parseModelStatement(pos, decorators);\n break;\n case Token.ScalarKeyword:\n item = parseScalarStatement(pos, decorators);\n break;\n case Token.NamespaceKeyword:\n const ns = parseNamespaceStatement(pos, decorators);\n if (!Array.isArray(ns.statements)) {\n error({ code: \"blockless-namespace-first\", messageId: \"topLevel\", target: ns });\n }\n item = ns;\n break;\n case Token.InterfaceKeyword:\n item = parseInterfaceStatement(pos, decorators);\n break;\n case Token.UnionKeyword:\n item = parseUnionStatement(pos, decorators);\n break;\n case Token.OpKeyword:\n item = parseOperationStatement(pos, decorators);\n break;\n case Token.EnumKeyword:\n item = parseEnumStatement(pos, decorators);\n break;\n case Token.AliasKeyword:\n reportInvalidDecorators(decorators, \"alias statement\");\n item = parseAliasStatement(pos);\n break;\n case Token.UsingKeyword:\n reportInvalidDecorators(decorators, \"using statement\");\n item = parseUsingStatement(pos);\n break;\n case Token.ExternKeyword:\n case Token.FnKeyword:\n case Token.DecKeyword:\n item = parseDeclaration(pos);\n break;\n case Token.ProjectionKeyword:\n reportInvalidDecorators(decorators, \"project statement\");\n item = parseProjectionStatement(pos);\n break;\n case Token.EndOfFile:\n parseExpected(Token.CloseBrace);\n return stmts;\n case Token.Semicolon:\n reportInvalidDecorators(decorators, \"empty statement\");\n item = parseEmptyStatement(pos);\n break;\n default:\n item = parseInvalidStatement(pos, decorators);\n break;\n }\n mutate(item).directives = directives;\n mutate(item).docs = docs;\n stmts.push(item);\n }\n return stmts;\n }\n function parseDecoratorList() {\n const decorators = [];\n while (token() === Token.At) {\n decorators.push(parseDecoratorExpression());\n }\n return decorators;\n }\n function parseDirectiveList() {\n const directives = [];\n while (token() === Token.Hash) {\n directives.push(parseDirectiveExpression());\n }\n return directives;\n }\n function parseNamespaceStatement(pos, decorators) {\n parseExpected(Token.NamespaceKeyword);\n let currentName = parseIdentifierOrMemberExpression();\n const nsSegments = [];\n while (currentName.kind !== SyntaxKind.Identifier) {\n nsSegments.push(currentName.id);\n currentName = currentName.base;\n }\n nsSegments.push(currentName);\n const nextTok = parseExpectedOneOf(Token.Semicolon, Token.OpenBrace);\n let statements;\n if (nextTok === Token.OpenBrace) {\n statements = parseStatementList();\n parseExpected(Token.CloseBrace);\n }\n let outerNs = {\n kind: SyntaxKind.NamespaceStatement,\n decorators,\n id: nsSegments[0],\n locals: undefined,\n statements,\n ...finishNode(pos),\n };\n for (let i = 1; i < nsSegments.length; i++) {\n outerNs = {\n kind: SyntaxKind.NamespaceStatement,\n decorators: [],\n id: nsSegments[i],\n statements: outerNs,\n locals: undefined,\n ...finishNode(pos),\n };\n }\n return outerNs;\n }\n function parseInterfaceStatement(pos, decorators) {\n parseExpected(Token.InterfaceKeyword);\n const id = parseIdentifier();\n const templateParameters = parseTemplateParameterList();\n let extendList = [];\n if (token() === Token.ExtendsKeyword) {\n nextToken();\n extendList = parseList(ListKind.Heritage, parseReferenceExpression);\n }\n else if (token() === Token.Identifier) {\n error({ code: \"token-expected\", format: { token: \"'extends' or '{'\" } });\n nextToken();\n }\n const operations = parseList(ListKind.InterfaceMembers, (pos, decorators) => parseOperationStatement(pos, decorators, true));\n return {\n kind: SyntaxKind.InterfaceStatement,\n id,\n templateParameters,\n operations,\n extends: extendList,\n decorators,\n ...finishNode(pos),\n };\n }\n function parseTemplateParameterList() {\n const list = parseOptionalList(ListKind.TemplateParameters, parseTemplateParameter);\n let setDefault = false;\n for (const item of list) {\n if (!item.default && setDefault) {\n error({ code: \"default-required\", target: item });\n continue;\n }\n if (item.default) {\n setDefault = true;\n }\n }\n return list;\n }\n function parseUnionStatement(pos, decorators) {\n parseExpected(Token.UnionKeyword);\n const id = parseIdentifier();\n const templateParameters = parseTemplateParameterList();\n const options = parseList(ListKind.UnionVariants, parseUnionVariant);\n return {\n kind: SyntaxKind.UnionStatement,\n id,\n templateParameters,\n decorators,\n options,\n ...finishNode(pos),\n };\n }\n function parseUnionVariant(pos, decorators) {\n const id = parseIdentifier({\n message: \"property\",\n allowStringLiteral: true,\n });\n parseExpected(Token.Colon);\n const value = parseExpression();\n return {\n kind: SyntaxKind.UnionVariant,\n id,\n value,\n decorators,\n ...finishNode(pos),\n };\n }\n function parseUsingStatement(pos) {\n parseExpected(Token.UsingKeyword);\n const name = parseIdentifierOrMemberExpression(undefined, true);\n parseExpected(Token.Semicolon);\n return {\n kind: SyntaxKind.UsingStatement,\n name,\n ...finishNode(pos),\n };\n }\n function parseOperationStatement(pos, decorators, inInterface) {\n if (inInterface) {\n parseOptional(Token.OpKeyword);\n }\n else {\n parseExpected(Token.OpKeyword);\n }\n const id = parseIdentifier();\n const templateParameters = parseTemplateParameterList();\n // Make sure the next token is one that is expected\n const token = expectTokenIsOneOf(Token.OpenParen, Token.IsKeyword);\n // Check if we're parsing a declaration or reuse of another operation\n let signature;\n const signaturePos = tokenPos();\n if (token === Token.OpenParen) {\n const parameters = parseOperationParameters();\n parseExpected(Token.Colon);\n const returnType = parseExpression();\n signature = {\n kind: SyntaxKind.OperationSignatureDeclaration,\n parameters,\n returnType,\n ...finishNode(signaturePos),\n };\n }\n else {\n parseExpected(Token.IsKeyword);\n const opReference = parseReferenceExpression();\n signature = {\n kind: SyntaxKind.OperationSignatureReference,\n baseOperation: opReference,\n ...finishNode(signaturePos),\n };\n }\n // The interface parser handles semicolon parsing between statements\n if (!inInterface) {\n parseExpected(Token.Semicolon);\n }\n return {\n kind: SyntaxKind.OperationStatement,\n id,\n templateParameters,\n signature,\n decorators,\n ...finishNode(pos),\n };\n }\n function parseOperationParameters() {\n const pos = tokenPos();\n const properties = parseList(ListKind.OperationParameters, parseModelPropertyOrSpread);\n const parameters = {\n kind: SyntaxKind.ModelExpression,\n properties,\n ...finishNode(pos),\n };\n return parameters;\n }\n function parseModelStatement(pos, decorators) {\n parseExpected(Token.ModelKeyword);\n const id = parseIdentifier();\n const templateParameters = parseTemplateParameterList();\n expectTokenIsOneOf(Token.OpenBrace, Token.Equals, Token.ExtendsKeyword, Token.IsKeyword);\n const optionalExtends = parseOptionalModelExtends();\n const optionalIs = optionalExtends ? undefined : parseOptionalModelIs();\n let properties = [];\n if (optionalIs) {\n const tok = expectTokenIsOneOf(Token.Semicolon, Token.OpenBrace);\n if (tok === Token.Semicolon) {\n nextToken();\n }\n else {\n properties = parseList(ListKind.ModelProperties, parseModelPropertyOrSpread);\n }\n }\n else {\n properties = parseList(ListKind.ModelProperties, parseModelPropertyOrSpread);\n }\n return {\n kind: SyntaxKind.ModelStatement,\n id,\n extends: optionalExtends,\n is: optionalIs,\n templateParameters,\n decorators,\n properties,\n ...finishNode(pos),\n };\n }\n function parseOptionalModelExtends() {\n if (parseOptional(Token.ExtendsKeyword)) {\n return parseExpression();\n }\n return undefined;\n }\n function parseOptionalModelIs() {\n if (parseOptional(Token.IsKeyword)) {\n return parseExpression();\n }\n return;\n }\n function parseTemplateParameter() {\n const pos = tokenPos();\n const id = parseIdentifier();\n let constraint;\n if (parseOptional(Token.ExtendsKeyword)) {\n constraint = parseExpression();\n }\n let def;\n if (parseOptional(Token.Equals)) {\n def = parseExpression();\n }\n return {\n kind: SyntaxKind.TemplateParameterDeclaration,\n id,\n constraint,\n default: def,\n ...finishNode(pos),\n };\n }\n function parseModelPropertyOrSpread(pos, decorators) {\n return token() === Token.Ellipsis\n ? parseModelSpreadProperty(pos, decorators)\n : parseModelProperty(pos, decorators);\n }\n function parseModelSpreadProperty(pos, decorators) {\n parseExpected(Token.Ellipsis);\n reportInvalidDecorators(decorators, \"spread property\");\n // This could be broadened to allow any type expression\n const target = parseReferenceExpression();\n return {\n kind: SyntaxKind.ModelSpreadProperty,\n target,\n ...finishNode(pos),\n };\n }\n function parseModelProperty(pos, decorators) {\n const id = parseIdentifier({\n message: \"property\",\n allowStringLiteral: true,\n });\n const optional = parseOptional(Token.Question);\n parseExpected(Token.Colon);\n const value = parseExpression();\n const hasDefault = parseOptional(Token.Equals);\n const defaultValue = hasDefault ? parseExpression() : undefined;\n return {\n kind: SyntaxKind.ModelProperty,\n id,\n decorators,\n value,\n optional,\n default: defaultValue,\n ...finishNode(pos),\n };\n }\n function parseScalarStatement(pos, decorators) {\n parseExpected(Token.ScalarKeyword);\n const id = parseIdentifier();\n const templateParameters = parseTemplateParameterList();\n const optionalExtends = parseOptionalScalarExtends();\n return {\n kind: SyntaxKind.ScalarStatement,\n id,\n templateParameters,\n extends: optionalExtends,\n decorators,\n ...finishNode(pos),\n };\n }\n function parseOptionalScalarExtends() {\n if (parseOptional(Token.ExtendsKeyword)) {\n return parseReferenceExpression();\n }\n return undefined;\n }\n function parseEnumStatement(pos, decorators) {\n parseExpected(Token.EnumKeyword);\n const id = parseIdentifier();\n const members = parseList(ListKind.EnumMembers, parseEnumMemberOrSpread);\n return {\n kind: SyntaxKind.EnumStatement,\n id,\n decorators,\n members,\n ...finishNode(pos),\n };\n }\n function parseEnumMemberOrSpread(pos, decorators) {\n return token() === Token.Ellipsis\n ? parseEnumSpreadMember(pos, decorators)\n : parseEnumMember(pos, decorators);\n }\n function parseEnumSpreadMember(pos, decorators) {\n parseExpected(Token.Ellipsis);\n reportInvalidDecorators(decorators, \"spread enum\");\n const target = parseReferenceExpression();\n return {\n kind: SyntaxKind.EnumSpreadMember,\n target,\n ...finishNode(pos),\n };\n }\n function parseEnumMember(pos, decorators) {\n const id = parseIdentifier({\n message: \"enumMember\",\n allowStringLiteral: true,\n });\n let value;\n if (parseOptional(Token.Colon)) {\n const expr = parseExpression();\n if (expr.kind === SyntaxKind.StringLiteral || expr.kind === SyntaxKind.NumericLiteral) {\n value = expr;\n }\n else if (expr.kind === SyntaxKind.TypeReference &&\n expr.target.flags & 2 /* NodeFlags.ThisNodeHasError */) {\n parseErrorInNextFinishedNode = true;\n }\n else {\n error({ code: \"token-expected\", messageId: \"numericOrStringLiteral\", target: expr });\n }\n }\n return {\n kind: SyntaxKind.EnumMember,\n id,\n value,\n decorators,\n ...finishNode(pos),\n };\n }\n function parseAliasStatement(pos) {\n parseExpected(Token.AliasKeyword);\n const id = parseIdentifier();\n const templateParameters = parseTemplateParameterList();\n parseExpected(Token.Equals);\n const value = parseExpression();\n parseExpected(Token.Semicolon);\n return {\n kind: SyntaxKind.AliasStatement,\n id,\n templateParameters,\n value,\n ...finishNode(pos),\n };\n }\n function parseExpression() {\n return parseUnionExpressionOrHigher();\n }\n function parseUnionExpressionOrHigher() {\n const pos = tokenPos();\n parseOptional(Token.Bar);\n const node = parseIntersectionExpressionOrHigher();\n if (token() !== Token.Bar) {\n return node;\n }\n const options = [node];\n while (parseOptional(Token.Bar)) {\n const expr = parseIntersectionExpressionOrHigher();\n options.push(expr);\n }\n return {\n kind: SyntaxKind.UnionExpression,\n options,\n ...finishNode(pos),\n };\n }\n function parseIntersectionExpressionOrHigher() {\n const pos = tokenPos();\n parseOptional(Token.Ampersand);\n const node = parseArrayExpressionOrHigher();\n if (token() !== Token.Ampersand) {\n return node;\n }\n const options = [node];\n while (parseOptional(Token.Ampersand)) {\n const expr = parseArrayExpressionOrHigher();\n options.push(expr);\n }\n return {\n kind: SyntaxKind.IntersectionExpression,\n options,\n ...finishNode(pos),\n };\n }\n function parseArrayExpressionOrHigher() {\n const pos = tokenPos();\n let expr = parsePrimaryExpression();\n while (parseOptional(Token.OpenBracket)) {\n parseExpected(Token.CloseBracket);\n expr = {\n kind: SyntaxKind.ArrayExpression,\n elementType: expr,\n ...finishNode(pos),\n };\n }\n return expr;\n }\n function parseStandaloneReferenceExpression() {\n const expr = parseReferenceExpression();\n if (parseDiagnostics.length === 0 && token() !== Token.EndOfFile) {\n error({ code: \"token-expected\", messageId: \"unexpected\", format: { token: Token[token()] } });\n }\n return expr;\n }\n function parseValueOfExpression() {\n const pos = tokenPos();\n parseExpected(Token.ValueOfKeyword);\n const target = parseExpression();\n return {\n kind: SyntaxKind.ValueOfExpression,\n target,\n ...finishNode(pos),\n };\n }\n function parseReferenceExpression(message) {\n const pos = tokenPos();\n const target = parseIdentifierOrMemberExpression(message);\n const args = parseOptionalList(ListKind.TemplateArguments, parseExpression);\n return {\n kind: SyntaxKind.TypeReference,\n target,\n arguments: args,\n ...finishNode(pos),\n };\n }\n function parseAugmentDecorator() {\n const pos = tokenPos();\n parseExpected(Token.AtAt);\n // Error recovery: false arg here means don't treat a keyword as an\n // identifier. We want to parse `@ model Foo` as invalid decorator\n // `@<missing identifier>` applied to `model Foo`, and not as `@model`\n // applied to invalid statement `Foo`.\n const target = parseIdentifierOrMemberExpression(undefined, false);\n const args = parseOptionalList(ListKind.DecoratorArguments, parseExpression);\n if (args.length === 0) {\n error({ code: \"augment-decorator-target\" });\n return {\n kind: SyntaxKind.AugmentDecoratorStatement,\n target,\n targetType: {\n kind: SyntaxKind.TypeReference,\n target: createMissingIdentifier(),\n arguments: [],\n ...finishNode(pos),\n },\n arguments: [],\n ...finishNode(pos),\n };\n }\n let [targetEntity, ...decoratorArgs] = args;\n if (targetEntity.kind !== SyntaxKind.TypeReference) {\n error({ code: \"augment-decorator-target\", target: targetEntity });\n targetEntity = {\n kind: SyntaxKind.TypeReference,\n target: createMissingIdentifier(),\n arguments: [],\n ...finishNode(pos),\n };\n }\n return {\n kind: SyntaxKind.AugmentDecoratorStatement,\n target,\n targetType: targetEntity,\n arguments: decoratorArgs,\n ...finishNode(pos),\n };\n }\n function parseImportStatement() {\n const pos = tokenPos();\n parseExpected(Token.ImportKeyword);\n const path = parseStringLiteral();\n parseExpected(Token.Semicolon);\n return {\n kind: SyntaxKind.ImportStatement,\n path,\n ...finishNode(pos),\n };\n }\n function parseDecoratorExpression() {\n const pos = tokenPos();\n parseExpected(Token.At);\n // Error recovery: false arg here means don't treat a keyword as an\n // identifier. We want to parse `@ model Foo` as invalid decorator\n // `@<missing identifier>` applied to `model Foo`, and not as `@model`\n // applied to invalid statement `Foo`.\n const target = parseIdentifierOrMemberExpression(undefined, false);\n const args = parseOptionalList(ListKind.DecoratorArguments, parseExpression);\n return {\n kind: SyntaxKind.DecoratorExpression,\n arguments: args,\n target,\n ...finishNode(pos),\n };\n }\n function parseDirectiveExpression() {\n const pos = tokenPos();\n parseExpected(Token.Hash);\n const target = parseIdentifier();\n if (target.sv !== \"suppress\") {\n error({\n code: \"unknown-directive\",\n format: { id: target.sv },\n target: { pos, end: pos + target.sv.length },\n printable: true,\n });\n }\n // The newline will mark the end of the directive.\n newLineIsTrivia = false;\n const args = [];\n while (token() !== Token.NewLine && token() !== Token.EndOfFile) {\n const param = parseDirectiveParameter();\n if (param) {\n args.push(param);\n }\n }\n newLineIsTrivia = true;\n nextToken();\n return {\n kind: SyntaxKind.DirectiveExpression,\n arguments: args,\n target,\n ...finishNode(pos),\n };\n }\n function parseDirectiveParameter() {\n switch (token()) {\n case Token.Identifier:\n return parseIdentifier();\n case Token.StringLiteral:\n return parseStringLiteral();\n default:\n error({\n code: \"token-expected\",\n messageId: \"unexpected\",\n format: { token: Token[token()] },\n });\n do {\n nextToken();\n } while (!isStatementKeyword(token()) &&\n token() !== Token.NewLine &&\n token() !== Token.At &&\n token() !== Token.Semicolon &&\n token() !== Token.EndOfFile);\n return undefined;\n }\n }\n function parseIdentifierOrMemberExpression(message, recoverFromKeyword = true) {\n const pos = tokenPos();\n let base = parseIdentifier({\n message,\n recoverFromKeyword,\n });\n while (token() !== Token.EndOfFile) {\n if (parseOptional(Token.Dot)) {\n base = {\n kind: SyntaxKind.MemberExpression,\n base,\n // Error recovery: false arg here means don't treat a keyword as an\n // identifier after `.` in member expression. Otherwise we will\n // parse `@Outer.<missing identifier> model M{}` as having decorator\n // `@Outer.model` applied to invalid statement `M {}` instead of\n // having incomplete decorator `@Outer.` applied to `model M {}`.\n id: parseIdentifier({\n recoverFromKeyword: false,\n }),\n selector: \".\",\n ...finishNode(pos),\n };\n }\n else if (parseOptional(Token.ColonColon)) {\n base = {\n kind: SyntaxKind.MemberExpression,\n base,\n id: parseIdentifier(),\n selector: \"::\",\n ...finishNode(pos),\n };\n }\n else {\n break;\n }\n }\n return base;\n }\n function parsePrimaryExpression() {\n while (true) {\n switch (token()) {\n case Token.ValueOfKeyword:\n return parseValueOfExpression();\n case Token.Identifier:\n return parseReferenceExpression();\n case Token.StringLiteral:\n return parseStringLiteral();\n case Token.TrueKeyword:\n case Token.FalseKeyword:\n return parseBooleanLiteral();\n case Token.NumericLiteral:\n return parseNumericLiteral();\n case Token.OpenBrace:\n return parseModelExpression();\n case Token.OpenBracket:\n return parseTupleExpression();\n case Token.OpenParen:\n return parseParenthesizedExpression();\n case Token.At:\n const decorators = parseDecoratorList();\n reportInvalidDecorators(decorators, \"expression\");\n continue;\n case Token.Hash:\n const directives = parseDirectiveList();\n reportInvalidDirective(directives, \"expression\");\n continue;\n case Token.VoidKeyword:\n return parseVoidKeyword();\n case Token.NeverKeyword:\n return parseNeverKeyword();\n case Token.UnknownKeyword:\n return parseUnknownKeyword();\n default:\n return parseReferenceExpression(\"expression\");\n }\n }\n }\n function parseExternKeyword() {\n const pos = tokenPos();\n parseExpected(Token.ExternKeyword);\n return {\n kind: SyntaxKind.ExternKeyword,\n ...finishNode(pos),\n };\n }\n function parseVoidKeyword() {\n const pos = tokenPos();\n parseExpected(Token.VoidKeyword);\n return {\n kind: SyntaxKind.VoidKeyword,\n ...finishNode(pos),\n };\n }\n function parseNeverKeyword() {\n const pos = tokenPos();\n parseExpected(Token.NeverKeyword);\n return {\n kind: SyntaxKind.NeverKeyword,\n ...finishNode(pos),\n };\n }\n function parseUnknownKeyword() {\n const pos = tokenPos();\n parseExpected(Token.UnknownKeyword);\n return {\n kind: SyntaxKind.UnknownKeyword,\n ...finishNode(pos),\n };\n }\n function parseParenthesizedExpression() {\n const pos = tokenPos();\n parseExpected(Token.OpenParen);\n const expr = parseExpression();\n parseExpected(Token.CloseParen);\n return { ...expr, ...finishNode(pos) };\n }\n function parseTupleExpression() {\n const pos = tokenPos();\n const values = parseList(ListKind.Tuple, parseExpression);\n return {\n kind: SyntaxKind.TupleExpression,\n values,\n ...finishNode(pos),\n };\n }\n function parseModelExpression() {\n const pos = tokenPos();\n const properties = parseList(ListKind.ModelProperties, parseModelPropertyOrSpread);\n return {\n kind: SyntaxKind.ModelExpression,\n properties,\n ...finishNode(pos),\n };\n }\n function parseStringLiteral() {\n const pos = tokenPos();\n const value = tokenValue();\n parseExpected(Token.StringLiteral);\n return {\n kind: SyntaxKind.StringLiteral,\n value,\n ...finishNode(pos),\n };\n }\n function parseNumericLiteral() {\n const pos = tokenPos();\n const valueAsString = tokenValue();\n const value = Number(valueAsString);\n parseExpected(Token.NumericLiteral);\n return {\n kind: SyntaxKind.NumericLiteral,\n value,\n valueAsString,\n ...finishNode(pos),\n };\n }\n function parseBooleanLiteral() {\n const pos = tokenPos();\n const token = parseExpectedOneOf(Token.TrueKeyword, Token.FalseKeyword);\n const value = token === Token.TrueKeyword;\n return {\n kind: SyntaxKind.BooleanLiteral,\n value,\n ...finishNode(pos),\n };\n }\n function parseIdentifier(options) {\n var _a;\n if ((options === null || options === void 0 ? void 0 : options.recoverFromKeyword) !== false && isKeyword(token())) {\n error({ code: \"reserved-identifier\" });\n }\n else if (token() !== Token.Identifier &&\n (!(options === null || options === void 0 ? void 0 : options.allowStringLiteral) || token() !== Token.StringLiteral)) {\n // Error recovery: when we fail to parse an identifier or expression,\n // we insert a synthesized identifier with a unique name.\n error({ code: \"token-expected\", messageId: (_a = options === null || options === void 0 ? void 0 : options.message) !== null && _a !== void 0 ? _a : \"identifier\" });\n return createMissingIdentifier();\n }\n const pos = tokenPos();\n const sv = tokenValue();\n nextToken();\n return {\n kind: SyntaxKind.Identifier,\n sv,\n ...finishNode(pos),\n };\n }\n function parseDeclaration(pos) {\n const modifiers = parseModifiers();\n switch (token()) {\n case Token.DecKeyword:\n return parseDecoratorDeclarationStatement(pos, modifiers);\n case Token.FnKeyword:\n return parseFunctionDeclarationStatement(pos, modifiers);\n }\n return parseInvalidStatement(pos, []);\n }\n function parseModifiers() {\n const modifiers = [];\n let modifier;\n while ((modifier = parseModifier())) {\n modifiers.push(modifier);\n }\n return modifiers;\n }\n function parseModifier() {\n switch (token()) {\n case Token.ExternKeyword:\n return parseExternKeyword();\n default:\n return undefined;\n }\n }\n function parseDecoratorDeclarationStatement(pos, modifiers) {\n const modifierFlags = modifiersToFlags(modifiers);\n parseExpected(Token.DecKeyword);\n const id = parseIdentifier();\n let [target, ...parameters] = parseFunctionParameters();\n if (target === undefined) {\n error({ code: \"decorator-decl-target\", target: { pos, end: previousTokenEnd } });\n target = {\n kind: SyntaxKind.FunctionParameter,\n id: createMissingIdentifier(),\n type: createMissingIdentifier(),\n optional: false,\n rest: false,\n ...finishNode(pos),\n };\n }\n if (target.optional) {\n error({ code: \"decorator-decl-target\", messageId: \"required\" });\n }\n parseExpected(Token.Semicolon);\n return {\n kind: SyntaxKind.DecoratorDeclarationStatement,\n modifiers,\n modifierFlags,\n id,\n target,\n parameters,\n ...finishNode(pos),\n };\n }\n function parseFunctionDeclarationStatement(pos, modifiers) {\n const modifierFlags = modifiersToFlags(modifiers);\n parseExpected(Token.FnKeyword);\n const id = parseIdentifier();\n const parameters = parseFunctionParameters();\n let returnType;\n if (parseOptional(Token.Colon)) {\n returnType = parseExpression();\n }\n parseExpected(Token.Semicolon);\n return {\n kind: SyntaxKind.FunctionDeclarationStatement,\n modifiers,\n modifierFlags,\n id,\n parameters,\n returnType,\n ...finishNode(pos),\n };\n }\n function parseFunctionParameters() {\n const parameters = parseList(ListKind.FunctionParameters, parseFunctionParameter);\n let foundOptional = false;\n for (const [index, item] of parameters.entries()) {\n if (!item.optional && foundOptional) {\n error({ code: \"required-parameter-first\", target: item });\n continue;\n }\n if (item.optional) {\n foundOptional = true;\n }\n if (item.rest && item.optional) {\n error({ code: \"rest-parameter-required\", target: item });\n }\n if (item.rest && index !== parameters.length - 1) {\n error({ code: \"rest-parameter-last\", target: item });\n }\n }\n return parameters;\n }\n function parseFunctionParameter() {\n const pos = tokenPos();\n const rest = parseOptional(Token.Ellipsis);\n const id = parseIdentifier({ message: \"property\" });\n const optional = parseOptional(Token.Question);\n let type;\n if (parseOptional(Token.Colon)) {\n type = parseExpression();\n }\n return {\n kind: SyntaxKind.FunctionParameter,\n id,\n type,\n optional,\n rest,\n ...finishNode(pos),\n };\n }\n function modifiersToFlags(modifiers) {\n let flags = 0 /* ModifierFlags.None */;\n for (const modifier of modifiers) {\n switch (modifier.kind) {\n case SyntaxKind.ExternKeyword:\n flags |= 2 /* ModifierFlags.Extern */;\n break;\n }\n }\n return flags;\n }\n function parseProjectionStatement(pos) {\n parseExpected(Token.ProjectionKeyword);\n const selector = parseProjectionSelector();\n parseExpected(Token.Hash);\n const id = parseIdentifier();\n parseExpected(Token.OpenBrace);\n const projectionMap = new Map();\n const projections = [];\n while (token() === Token.Identifier) {\n const projection = parseProjection();\n if (projection.direction !== \"<error>\") {\n if (projectionMap.has(projection.direction)) {\n error({ code: \"duplicate-symbol\", target: projection, format: { name: \"projection\" } });\n }\n else {\n projectionMap.set(projection.direction, projection);\n }\n }\n // NOTE: Don't drop projections with error in direction definition from the AST.\n projections.push(projection);\n }\n parseExpected(Token.CloseBrace);\n return {\n kind: SyntaxKind.ProjectionStatement,\n selector,\n projections,\n preTo: projectionMap.get(\"pre_to\"),\n preFrom: projectionMap.get(\"pre_from\"),\n from: projectionMap.get(\"from\"),\n to: projectionMap.get(\"to\"),\n id,\n ...finishNode(pos),\n };\n }\n function parseProjection() {\n const pos = tokenPos();\n let directionId = parseIdentifier({ message: \"projectionDirection\" });\n let direction;\n const modifierIds = [];\n let isPre = false;\n if (directionId.sv === \"pre\") {\n isPre = true;\n modifierIds.push(directionId);\n directionId = parseIdentifier({ message: \"projectionDirection\" });\n }\n if (directionId.sv !== \"to\" && directionId.sv !== \"from\") {\n error({ code: \"token-expected\", messageId: \"projectionDirection\" });\n direction = \"<error>\";\n }\n else if (isPre) {\n direction = directionId.sv === \"to\" ? \"pre_to\" : \"pre_from\";\n }\n else {\n direction = directionId.sv;\n }\n let parameters;\n if (token() === Token.OpenParen) {\n parameters = parseList(ListKind.ProjectionParameter, parseProjectionParameter);\n }\n else {\n parameters = [];\n }\n parseExpected(Token.OpenBrace);\n const body = parseProjectionStatementList();\n parseExpected(Token.CloseBrace);\n return {\n kind: SyntaxKind.Projection,\n body,\n direction,\n directionId,\n modifierIds,\n parameters,\n ...finishNode(pos),\n };\n }\n function parseProjectionParameter() {\n const pos = tokenPos();\n const id = parseIdentifier();\n return {\n kind: SyntaxKind.ProjectionParameterDeclaration,\n id,\n ...finishNode(pos),\n };\n }\n function parseProjectionStatementList() {\n const stmts = [];\n while (token() !== Token.CloseBrace) {\n const startPos = tokenPos();\n if (token() === Token.EndOfFile) {\n error({ code: \"token-expected\", messageId: \"default\", format: { token: \"}\" } });\n break;\n }\n const expr = parseProjectionExpressionStatement();\n stmts.push(expr);\n if (tokenPos() === startPos) {\n // we didn't manage to parse anything, so break out\n // and we'll report errors elsewhere.\n break;\n }\n }\n return stmts;\n }\n function parseProjectionExpressionStatement() {\n const pos = tokenPos();\n const expr = parseProjectionExpression();\n parseExpected(Token.Semicolon);\n return {\n kind: SyntaxKind.ProjectionExpressionStatement,\n expr,\n ...finishNode(pos),\n };\n }\n function parseProjectionExpression() {\n return parseProjectionReturnExpressionOrHigher();\n }\n function parseProjectionReturnExpressionOrHigher() {\n if (token() === Token.ReturnKeyword) {\n const pos = tokenPos();\n parseExpected(Token.ReturnKeyword);\n return {\n kind: SyntaxKind.Return,\n value: parseProjectionExpression(),\n ...finishNode(pos),\n };\n }\n return parseProjectionLogicalOrExpressionOrHigher();\n }\n function parseProjectionLogicalOrExpressionOrHigher() {\n let expr = parseProjectionLogicalAndExpressionOrHigher();\n while (token() !== Token.EndOfFile) {\n const pos = expr.pos;\n if (parseOptional(Token.BarBar)) {\n expr = {\n kind: SyntaxKind.ProjectionLogicalExpression,\n op: \"||\",\n left: expr,\n right: parseProjectionLogicalAndExpressionOrHigher(),\n ...finishNode(pos),\n };\n }\n else {\n break;\n }\n }\n return expr;\n }\n function parseProjectionLogicalAndExpressionOrHigher() {\n let expr = parseProjectionEqualityExpressionOrHigher();\n while (token() !== Token.EndOfFile) {\n const pos = expr.pos;\n if (parseOptional(Token.AmpsersandAmpersand)) {\n expr = {\n kind: SyntaxKind.ProjectionLogicalExpression,\n op: \"&&\",\n left: expr,\n right: parseProjectionEqualityExpressionOrHigher(),\n ...finishNode(pos),\n };\n }\n else {\n break;\n }\n }\n return expr;\n }\n function parseProjectionEqualityExpressionOrHigher() {\n let expr = parseProjectionRelationalExpressionOrHigher();\n while (token() !== Token.EndOfFile) {\n const pos = expr.pos;\n const tok = token();\n if (tok === Token.EqualsEquals || tok === Token.ExclamationEquals) {\n const op = tokenValue();\n nextToken();\n expr = {\n kind: SyntaxKind.ProjectionEqualityExpression,\n op,\n left: expr,\n right: parseProjectionRelationalExpressionOrHigher(),\n ...finishNode(pos),\n };\n }\n else {\n break;\n }\n }\n return expr;\n }\n function parseProjectionRelationalExpressionOrHigher() {\n let expr = parseProjectionAdditiveExpressionOrHigher();\n while (token() !== Token.EndOfFile) {\n const pos = expr.pos;\n const tok = token();\n if (tok === Token.LessThan ||\n tok === Token.LessThanEquals ||\n tok === Token.GreaterThan ||\n tok === Token.GreaterThanEquals) {\n const op = tokenValue();\n nextToken();\n expr = {\n kind: SyntaxKind.ProjectionRelationalExpression,\n op,\n left: expr,\n right: parseProjectionAdditiveExpressionOrHigher(),\n ...finishNode(pos),\n };\n }\n else {\n break;\n }\n }\n return expr;\n }\n function parseProjectionAdditiveExpressionOrHigher() {\n let expr = parseProjectionMultiplicativeExpressionOrHigher();\n while (token() !== Token.EndOfFile) {\n const pos = expr.pos;\n const tok = token();\n if (tok === Token.Plus || tok === Token.Hyphen) {\n const op = tokenValue();\n nextToken();\n expr = {\n kind: SyntaxKind.ProjectionArithmeticExpression,\n op,\n left: expr,\n right: parseProjectionMultiplicativeExpressionOrHigher(),\n ...finishNode(pos),\n };\n }\n else {\n break;\n }\n }\n return expr;\n }\n function parseProjectionMultiplicativeExpressionOrHigher() {\n let expr = parseProjectionUnaryExpressionOrHigher();\n while (token() !== Token.EndOfFile) {\n const pos = expr.pos;\n const tok = token();\n if (tok === Token.ForwardSlash || tok === Token.Star) {\n const op = tokenValue();\n nextToken();\n expr = {\n kind: SyntaxKind.ProjectionArithmeticExpression,\n op,\n left: expr,\n right: parseProjectionUnaryExpressionOrHigher(),\n ...finishNode(pos),\n };\n }\n else {\n break;\n }\n }\n return expr;\n }\n function parseProjectionUnaryExpressionOrHigher() {\n if (token() === Token.Exclamation) {\n const pos = tokenPos();\n nextToken();\n return {\n kind: SyntaxKind.ProjectionUnaryExpression,\n op: \"!\",\n target: parseProjectionUnaryExpressionOrHigher(),\n ...finishNode(pos),\n };\n }\n return parseProjectionCallExpressionOrHigher();\n }\n function parseProjectionCallExpressionOrHigher() {\n let expr = parseProjectionDecoratorReferenceExpressionOrHigher();\n while (token() !== Token.EndOfFile) {\n const pos = expr.pos;\n expr = parseProjectionMemberExpressionRest(expr, pos);\n if (token() === Token.OpenParen) {\n expr = {\n kind: SyntaxKind.ProjectionCallExpression,\n callKind: \"method\",\n target: expr,\n arguments: parseList(ListKind.CallArguments, parseProjectionExpression),\n ...finishNode(pos),\n };\n }\n else {\n break;\n }\n }\n return expr;\n }\n function parseProjectionDecoratorReferenceExpressionOrHigher() {\n if (token() === Token.At) {\n const pos = tokenPos();\n nextToken();\n return {\n kind: SyntaxKind.ProjectionDecoratorReferenceExpression,\n target: parseIdentifierOrMemberExpression(undefined, true),\n ...finishNode(pos),\n };\n }\n return parseProjectionMemberExpressionOrHigher();\n }\n function parseProjectionMemberExpressionOrHigher() {\n const pos = tokenPos();\n let expr = parseProjectionPrimaryExpression();\n expr = parseProjectionMemberExpressionRest(expr, pos);\n return expr;\n }\n function parseProjectionMemberExpressionRest(expr, pos) {\n while (token() !== Token.EndOfFile) {\n if (parseOptional(Token.Dot)) {\n expr = {\n kind: SyntaxKind.ProjectionMemberExpression,\n base: expr,\n id: parseIdentifier(),\n selector: \".\",\n ...finishNode(pos),\n };\n }\n else if (parseOptional(Token.ColonColon)) {\n expr = {\n kind: SyntaxKind.ProjectionMemberExpression,\n base: expr,\n id: parseIdentifier(),\n selector: \"::\",\n ...finishNode(pos),\n };\n }\n else {\n break;\n }\n }\n return expr;\n }\n function parseProjectionPrimaryExpression() {\n switch (token()) {\n case Token.IfKeyword:\n return parseProjectionIfExpression();\n case Token.NumericLiteral:\n return parseNumericLiteral();\n case Token.StringLiteral:\n return parseStringLiteral();\n case Token.TrueKeyword:\n case Token.FalseKeyword:\n return parseBooleanLiteral();\n case Token.OpenBracket:\n return parseProjectionTupleExpression();\n case Token.OpenBrace:\n return parseProjectionModelExpression();\n case Token.OpenParen:\n return parseProjectionLambdaOrParenthesizedExpression();\n case Token.VoidKeyword:\n return parseVoidKeyword();\n case Token.NeverKeyword:\n return parseNeverKeyword();\n case Token.UnknownKeyword:\n return parseUnknownKeyword();\n default:\n return parseIdentifier({ message: \"expression\" });\n }\n }\n function parseProjectionLambdaOrParenthesizedExpression() {\n const pos = tokenPos();\n const exprs = parseList(ListKind.ProjectionExpression, parseProjectionExpression);\n if (token() === Token.EqualsGreaterThan) {\n // unpack the exprs (which should be just identifiers) into a param list\n const params = [];\n for (const expr of exprs) {\n if (expr.kind === SyntaxKind.Identifier) {\n params.push(withSymbol({\n kind: SyntaxKind.ProjectionLambdaParameterDeclaration,\n id: expr,\n pos: expr.pos,\n end: expr.end,\n flags: 0 /* NodeFlags.None */,\n }));\n }\n else {\n error({ code: \"token-expected\", messageId: \"identifier\", target: expr });\n }\n }\n return parseProjectionLambdaExpressionRest(pos, params);\n }\n else {\n if (exprs.length === 0) {\n error({\n code: \"token-expected\",\n messageId: \"expression\",\n });\n }\n // verify we only have one entry\n for (let i = 1; i < exprs.length; i++) {\n error({\n code: \"token-expected\",\n messageId: \"unexpected\",\n format: { token: \"expression\" },\n target: exprs[i],\n });\n }\n return exprs[0];\n }\n }\n function parseProjectionLambdaExpressionRest(pos, parameters) {\n parseExpected(Token.EqualsGreaterThan);\n const body = parseProjectionBlockExpression();\n return {\n kind: SyntaxKind.ProjectionLambdaExpression,\n parameters,\n body,\n ...finishNode(pos),\n };\n }\n function parseProjectionModelExpression() {\n const pos = tokenPos();\n const properties = parseList(ListKind.ModelProperties, parseProjectionModelPropertyOrSpread);\n return {\n kind: SyntaxKind.ProjectionModelExpression,\n properties,\n ...finishNode(pos),\n };\n }\n function parseProjectionModelPropertyOrSpread(pos, decorators) {\n return token() === Token.Ellipsis\n ? parseProjectionModelSpreadProperty(pos, decorators)\n : parseProjectionModelProperty(pos, decorators);\n }\n function parseProjectionModelSpreadProperty(pos, decorators) {\n parseExpected(Token.Ellipsis);\n reportInvalidDecorators(decorators, \"spread property\");\n const target = parseProjectionExpression();\n return {\n kind: SyntaxKind.ProjectionModelSpreadProperty,\n target,\n ...finishNode(pos),\n };\n }\n function parseProjectionModelProperty(pos, decorators) {\n const id = parseIdentifier({ message: \"property\", allowStringLiteral: true });\n const optional = parseOptional(Token.Question);\n parseExpected(Token.Colon);\n const value = parseProjectionExpression();\n const hasDefault = parseOptional(Token.Equals);\n const defaultValue = hasDefault ? parseProjectionExpression() : undefined;\n return {\n kind: SyntaxKind.ProjectionModelProperty,\n id,\n decorators,\n value,\n optional,\n default: defaultValue,\n ...finishNode(pos),\n };\n }\n function parseProjectionIfExpression() {\n const pos = tokenPos();\n parseExpected(Token.IfKeyword);\n const test = parseProjectionExpression();\n const consequent = parseProjectionBlockExpression();\n let alternate = undefined;\n if (parseOptional(Token.ElseKeyword)) {\n if (token() === Token.IfKeyword) {\n alternate = parseProjectionIfExpression();\n }\n else {\n alternate = parseProjectionBlockExpression();\n }\n }\n return {\n kind: SyntaxKind.ProjectionIfExpression,\n test,\n consequent,\n alternate,\n ...finishNode(pos),\n };\n }\n function parseProjectionBlockExpression() {\n const pos = tokenPos();\n parseExpected(Token.OpenBrace);\n const statements = parseProjectionStatementList();\n parseExpected(Token.CloseBrace);\n return {\n kind: SyntaxKind.ProjectionBlockExpression,\n statements,\n ...finishNode(pos),\n };\n }\n function parseProjectionTupleExpression() {\n const pos = tokenPos();\n const values = parseList(ListKind.Tuple, parseProjectionExpression);\n return {\n kind: SyntaxKind.ProjectionTupleExpression,\n values,\n ...finishNode(pos),\n };\n }\n function parseProjectionSelector() {\n const pos = tokenPos();\n const selectorTok = expectTokenIsOneOf(Token.Identifier, Token.ModelKeyword, Token.OpKeyword, Token.InterfaceKeyword, Token.UnionKeyword, Token.EnumKeyword);\n switch (selectorTok) {\n case Token.Identifier:\n const id = parseIdentifierOrMemberExpression(undefined, true);\n if (id.kind === SyntaxKind.Identifier) {\n switch (id.sv) {\n case \"modelproperty\":\n return {\n kind: SyntaxKind.ProjectionModelPropertySelector,\n ...finishNode(pos),\n };\n case \"unionvariant\":\n return {\n kind: SyntaxKind.ProjectionUnionVariantSelector,\n ...finishNode(pos),\n };\n case \"enummember\":\n return {\n kind: SyntaxKind.ProjectionEnumMemberSelector,\n ...finishNode(pos),\n };\n }\n }\n return id;\n case Token.ModelKeyword:\n nextToken();\n return {\n kind: SyntaxKind.ProjectionModelSelector,\n ...finishNode(pos),\n };\n case Token.OpKeyword:\n nextToken();\n return {\n kind: SyntaxKind.ProjectionOperationSelector,\n ...finishNode(pos),\n };\n case Token.InterfaceKeyword:\n nextToken();\n return {\n kind: SyntaxKind.ProjectionInterfaceSelector,\n ...finishNode(pos),\n };\n case Token.UnionKeyword:\n nextToken();\n return {\n kind: SyntaxKind.ProjectionUnionSelector,\n ...finishNode(pos),\n };\n case Token.EnumKeyword:\n nextToken();\n return {\n kind: SyntaxKind.ProjectionEnumSelector,\n ...finishNode(pos),\n };\n default:\n // recovery: return a missing identifier to use as the selector\n // we don't need to emit a diagnostic here as the `expectTokenOneOf` above\n // will have done so.\n return createMissingIdentifier();\n }\n }\n function parseRange(mode, range, callback) {\n const savedMode = currentMode;\n const result = scanner.scanRange(range, () => {\n currentMode = mode;\n nextToken();\n return callback();\n });\n currentMode = savedMode;\n return result;\n }\n /** Remove leading slash-star-star and trailing star-slash (if terminated) from doc comment range. */\n function innerDocRange(range) {\n return {\n pos: range.pos + 3,\n end: tokenFlags() & TokenFlags.Unterminated ? range.end : range.end - 2,\n };\n }\n function parseDocList() {\n if (docRanges.length === 0 || options.docs === false) {\n return [tokenPos(), []];\n }\n const docs = [];\n for (const range of docRanges) {\n const doc = parseRange(1 /* ParseMode.Doc */, innerDocRange(range), parseDoc);\n docs.push(doc);\n }\n return [docRanges[0].pos, docs];\n }\n function parseDoc() {\n const pos = tokenPos();\n const content = [];\n const tags = [];\n loop: while (true) {\n switch (token()) {\n case Token.EndOfFile:\n break loop;\n case Token.At:\n const tag = parseDocTag();\n tags.push(tag);\n break;\n default:\n content.push(...parseDocContent());\n break;\n }\n }\n return {\n kind: SyntaxKind.Doc,\n content,\n tags,\n ...finishNode(pos),\n };\n }\n function parseDocContent() {\n const parts = [];\n const source = scanner.file.text;\n const pos = tokenPos();\n let start = pos;\n let inCodeFence = false;\n loop: while (true) {\n switch (token()) {\n case Token.DocCodeFenceDelimiter:\n inCodeFence = !inCodeFence;\n nextDocToken();\n break;\n case Token.NewLine:\n parts.push(source.substring(start, tokenPos()));\n parts.push(\"\\n\"); // normalize line endings\n nextDocToken();\n start = tokenPos();\n while (parseOptional(Token.Whitespace))\n ;\n if (parseOptional(Token.Star)) {\n parseOptional(Token.Whitespace);\n start = tokenPos();\n break;\n }\n break;\n case Token.EndOfFile:\n break loop;\n case Token.At:\n if (!inCodeFence) {\n break loop;\n }\n nextDocToken();\n break;\n default:\n nextDocToken();\n break;\n }\n }\n parts.push(source.substring(start, tokenPos()));\n const text = trim(parts.join(\"\"));\n return [\n {\n kind: SyntaxKind.DocText,\n text,\n ...finishNode(pos),\n },\n ];\n }\n function parseDocTag() {\n const pos = tokenPos();\n parseExpected(Token.At);\n const tagName = parseDocIdentifier(\"tag\");\n switch (tagName.sv) {\n case \"param\":\n return parseDocParamLikeTag(pos, tagName, SyntaxKind.DocParamTag, \"param\");\n case \"template\":\n return parseDocParamLikeTag(pos, tagName, SyntaxKind.DocTemplateTag, \"templateParam\");\n case \"return\":\n case \"returns\":\n return parseDocSimpleTag(pos, tagName, SyntaxKind.DocReturnsTag);\n default:\n return parseDocSimpleTag(pos, tagName, SyntaxKind.DocUnknownTag);\n }\n }\n function parseDocParamLikeTag(pos, tagName, kind, messageId) {\n const name = parseDocIdentifier(messageId);\n const content = parseDocContent();\n return {\n kind,\n tagName,\n paramName: name,\n content,\n ...finishNode(pos),\n };\n }\n function parseDocSimpleTag(pos, tagName, kind) {\n const content = parseDocContent();\n return {\n kind,\n tagName,\n content,\n ...finishNode(pos),\n };\n }\n function parseDocIdentifier(messageId) {\n // We don't allow whitespace between @ and tag name, but allow\n // whitespace before all other identifiers.\n if (messageId !== \"tag\") {\n while (parseOptional(Token.Whitespace))\n ;\n }\n const pos = tokenPos();\n let sv;\n if (token() === Token.Identifier) {\n sv = tokenValue();\n nextDocToken();\n }\n else {\n sv = \"\";\n warning({ code: \"doc-invalid-identifier\", messageId });\n }\n return {\n kind: SyntaxKind.Identifier,\n sv,\n ...finishNode(pos),\n };\n }\n // utility functions\n function token() {\n return scanner.token;\n }\n function tokenFlags() {\n return scanner.tokenFlags;\n }\n function tokenValue() {\n return scanner.getTokenValue();\n }\n function tokenPos() {\n return scanner.tokenPosition;\n }\n function tokenEnd() {\n return scanner.position;\n }\n function nextToken() {\n // keep track of the previous token end separately from the current scanner\n // position as these will differ when the previous token had trailing\n // trivia, and we don't want to squiggle the trivia.\n previousTokenEnd = scanner.position;\n return currentMode === 0 /* ParseMode.Syntax */ ? nextSyntaxToken() : nextDocToken();\n }\n function nextSyntaxToken() {\n docRanges = [];\n for (;;) {\n scanner.scan();\n if (isTrivia(token())) {\n if (!newLineIsTrivia && token() === Token.NewLine) {\n break;\n }\n if (tokenFlags() & TokenFlags.DocComment) {\n docRanges.push({\n pos: tokenPos(),\n end: tokenEnd(),\n });\n }\n if (options.comments && isComment(token())) {\n comments.push({\n kind: token() === Token.SingleLineComment\n ? SyntaxKind.LineComment\n : SyntaxKind.BlockComment,\n pos: tokenPos(),\n end: tokenEnd(),\n });\n }\n }\n else {\n break;\n }\n }\n }\n function nextDocToken() {\n // NOTE: trivia tokens are always significant in doc comments.\n scanner.scanDoc();\n }\n function createMissingIdentifier() {\n const pos = tokenPos();\n previousTokenEnd = pos;\n missingIdentifierCounter++;\n return {\n kind: SyntaxKind.Identifier,\n sv: \"<missing identifier>\" + missingIdentifierCounter,\n ...finishNode(pos),\n };\n }\n function finishNode(pos) {\n const flags = parseErrorInNextFinishedNode ? 2 /* NodeFlags.ThisNodeHasError */ : 0 /* NodeFlags.None */;\n parseErrorInNextFinishedNode = false;\n return withSymbol({ pos, end: previousTokenEnd, flags });\n }\n // pretend to add as symbol property, likely to a node that is being created.\n function withSymbol(obj) {\n return obj;\n }\n /**\n * Parse a delimited list of elements, including the surrounding open and\n * close punctuation\n *\n * This shared driver function is used to share sensitive error recovery code.\n * In particular, error recovery by inserting tokens deemed missing is\n * susceptible to getting stalled in a loop iteration without making any\n * progress, and we guard against this in a shared place here.\n *\n * Note that statement and decorator lists do not have this issue. We always\n * consume at least a real '@' for a decorator and if the leading token of a\n * statement is not one of our statement keywords, ';', or '@', it is consumed\n * as part of a bad statement. As such, parsing of decorators and statements\n * do not go through here.\n */\n function parseList(kind, parseItem) {\n if (kind.open !== Token.None) {\n parseExpected(kind.open);\n }\n if (kind.allowEmpty && parseOptional(kind.close)) {\n return [];\n }\n const items = [];\n while (true) {\n let pos = tokenPos();\n let docs;\n if (!kind.invalidAnnotationTarget) {\n [pos, docs] = parseDocList();\n }\n const directives = parseDirectiveList();\n const decorators = parseDecoratorList();\n if (kind.invalidAnnotationTarget) {\n reportInvalidDecorators(decorators, kind.invalidAnnotationTarget);\n reportInvalidDirective(directives, kind.invalidAnnotationTarget);\n }\n if (directives.length === 0 && decorators.length === 0 && atEndOfListWithError(kind)) {\n // Error recovery: end surrounded list at statement keyword or end\n // of file. Note, however, that we must parse a missing element if\n // there were directives or decorators as we cannot drop those from\n // the tree.\n parseExpected(kind.close);\n break;\n }\n let item;\n if (kind.invalidAnnotationTarget) {\n item = parseItem();\n }\n else {\n item = parseItem(pos, decorators);\n mutate(item).docs = docs;\n mutate(item).directives = directives;\n }\n items.push(item);\n const delimiter = token();\n const delimiterPos = tokenPos();\n if (parseOptionalDelimiter(kind)) {\n // Delimiter found: check if it's trailing.\n if (parseOptional(kind.close)) {\n if (!kind.trailingDelimiterIsValid) {\n error({\n code: \"trailing-token\",\n format: { token: TokenDisplay[delimiter] },\n target: {\n pos: delimiterPos,\n end: delimiterPos + 1,\n },\n });\n }\n // It was trailing and we've consumed the close token.\n break;\n }\n // Not trailing. We can safely skip the progress check below here\n // because we know that we consumed a real delimiter.\n continue;\n }\n else if (kind.close === Token.None) {\n // If a list is *not* surrounded by punctuation, then the list ends when\n // there's no delimiter after an item.\n break;\n }\n else if (parseOptional(kind.close)) {\n // If a list *is* surrounded by punctuation, then the list ends when we\n // reach the close token.\n break;\n }\n else if (atEndOfListWithError(kind)) {\n // Error recovery: If a list *is* surrounded by punctuation, then\n // the list ends at statement keyword or end-of-file under the\n // assumption that the closing delimiter is missing. This check is\n // duplicated from above to preempt the parseExpected(delimeter)\n // below.\n parseExpected(kind.close);\n break;\n }\n else {\n // Error recovery: if a list kind *is* surrounded by punctuation and we\n // find neither a delimiter nor a close token after an item, then we\n // assume there is a missing delimiter between items.\n //\n // Example: `model M { a: B <missing semicolon> c: D }\n parseExpected(kind.delimiter);\n }\n if (pos === tokenPos()) {\n // Error recovery: we've inserted everything during this loop iteration\n // and haven't made any progress. Assume that the current token is a bad\n // representation of the end of the the list that we're trying to get\n // through.\n //\n // Simple repro: `model M { ]` would loop forever without this check.\n //\n parseExpected(kind.close);\n nextToken();\n // remove the item that was entirely inserted by error recovery.\n items.pop();\n break;\n }\n }\n return items;\n }\n /**\n * Parse a delimited list with surrounding open and close punctuation if the\n * open token is present. Otherwise, return an empty list.\n */\n function parseOptionalList(kind, parseItem) {\n return token() === kind.open ? parseList(kind, parseItem) : [];\n }\n function parseOptionalDelimiter(kind) {\n if (parseOptional(kind.delimiter)) {\n return true;\n }\n if (token() === kind.toleratedDelimiter) {\n if (!kind.toleratedDelimiterIsValid) {\n parseExpected(kind.delimiter);\n }\n nextToken();\n return true;\n }\n return false;\n }\n function atEndOfListWithError(kind) {\n return (kind.close !== Token.None &&\n (isStatementKeyword(token()) || token() === Token.EndOfFile) &&\n token() !== kind.allowedStatementKeyword);\n }\n function parseEmptyStatement(pos) {\n parseExpected(Token.Semicolon);\n return { kind: SyntaxKind.EmptyStatement, ...finishNode(pos) };\n }\n function parseInvalidStatement(pos, decorators) {\n // Error recovery: avoid an avalanche of errors when we get cornered into\n // parsing statements where none exist. Skip until we find a statement\n // keyword or decorator and only report one error for a contiguous range of\n // neither.\n do {\n nextToken();\n } while (!isStatementKeyword(token()) &&\n token() !== Token.At &&\n token() !== Token.Semicolon &&\n token() !== Token.EndOfFile);\n error({\n code: \"token-expected\",\n messageId: \"statement\",\n target: { pos, end: previousTokenEnd },\n });\n return { kind: SyntaxKind.InvalidStatement, decorators, ...finishNode(pos) };\n }\n function error(report) {\n var _a, _b, _c, _d, _e, _f;\n parseErrorInNextFinishedNode = true;\n const location = {\n file: scanner.file,\n pos: (_b = (_a = report.target) === null || _a === void 0 ? void 0 : _a.pos) !== null && _b !== void 0 ? _b : tokenPos(),\n end: (_d = (_c = report.target) === null || _c === void 0 ? void 0 : _c.end) !== null && _d !== void 0 ? _d : tokenEnd(),\n };\n if (!report.printable) {\n treePrintable = false;\n }\n // Error recovery: don't report more than 1 consecutive error at the same\n // position. The code path taken by error recovery after logging an error\n // can otherwise produce redundant and less decipherable errors, which this\n // suppresses.\n const realPos = (_f = (_e = report.target) === null || _e === void 0 ? void 0 : _e.realPos) !== null && _f !== void 0 ? _f : location.pos;\n if (realPositionOfLastError === realPos) {\n return;\n }\n realPositionOfLastError = realPos;\n const diagnostic = createDiagnostic({\n ...report,\n target: location,\n });\n assert(diagnostic.severity === \"error\", \"This function is for reporting errors. Use warning() for warnings.\");\n parseDiagnostics.push(diagnostic);\n }\n function warning(report) {\n var _a, _b, _c, _d;\n const location = {\n file: scanner.file,\n pos: (_b = (_a = report.target) === null || _a === void 0 ? void 0 : _a.pos) !== null && _b !== void 0 ? _b : tokenPos(),\n end: (_d = (_c = report.target) === null || _c === void 0 ? void 0 : _c.end) !== null && _d !== void 0 ? _d : tokenEnd(),\n };\n const diagnostic = createDiagnostic({\n ...report,\n target: location,\n });\n assert(diagnostic.severity === \"warning\", \"This function is for reporting warnings only. Use error() for errors.\");\n parseDiagnostics.push(diagnostic);\n }\n function reportDiagnostic(diagnostic) {\n if (diagnostic.severity === \"error\") {\n parseErrorInNextFinishedNode = true;\n treePrintable = false;\n }\n parseDiagnostics.push(diagnostic);\n }\n function assert(condition, message) {\n const location = {\n file: scanner.file,\n pos: tokenPos(),\n end: tokenEnd(),\n };\n compilerAssert(condition, message, location);\n }\n function reportInvalidDecorators(decorators, nodeName) {\n for (const decorator of decorators) {\n error({ code: \"invalid-decorator-location\", format: { nodeName }, target: decorator });\n }\n }\n function reportInvalidDirective(directives, nodeName) {\n for (const directive of directives) {\n error({ code: \"invalid-directive-location\", format: { nodeName }, target: directive });\n }\n }\n function parseExpected(expectedToken) {\n if (token() === expectedToken) {\n nextToken();\n return true;\n }\n const location = getAdjustedDefaultLocation(expectedToken);\n error({\n code: \"token-expected\",\n format: { token: TokenDisplay[expectedToken] },\n target: location,\n printable: isPunctuation(expectedToken),\n });\n return false;\n }\n function expectTokenIsOneOf(...args) {\n const tok = token();\n for (const expected of args) {\n if (expected === Token.None) {\n continue;\n }\n if (tok === expected) {\n return tok;\n }\n }\n errorTokenIsNotOneOf(...args);\n return Token.None;\n }\n function parseExpectedOneOf(...args) {\n const tok = expectTokenIsOneOf(...args);\n if (tok !== Token.None) {\n nextToken();\n }\n return tok;\n }\n function errorTokenIsNotOneOf(...args) {\n const location = getAdjustedDefaultLocation(args[0]);\n const displayList = args.map((t, i) => {\n if (i === args.length - 1) {\n return `or ${TokenDisplay[t]}`;\n }\n return TokenDisplay[t];\n });\n error({ code: \"token-expected\", format: { token: displayList.join(\", \") }, target: location });\n }\n function parseOptional(optionalToken) {\n if (token() === optionalToken) {\n nextToken();\n return true;\n }\n return false;\n }\n function getAdjustedDefaultLocation(token) {\n // Put the squiggly immediately after prior token when missing punctuation.\n // Avoids saying ';' is expected far away after a long comment, for example.\n // It's also confusing to squiggle the current token even if its nearby\n // in this case.\n return isPunctuation(token)\n ? { pos: previousTokenEnd, end: previousTokenEnd + 1, realPos: tokenPos() }\n : undefined;\n }\n}\nexport function visitChildren(node, cb) {\n if (node.directives) {\n const result = visitEach(cb, node.directives);\n if (result)\n return result;\n }\n if (node.docs) {\n const result = visitEach(cb, node.docs);\n if (result)\n return result;\n }\n switch (node.kind) {\n case SyntaxKind.TypeSpecScript:\n return visitNode(cb, node.id) || visitEach(cb, node.statements);\n case SyntaxKind.ArrayExpression:\n return visitNode(cb, node.elementType);\n case SyntaxKind.AugmentDecoratorStatement:\n return (visitNode(cb, node.target) ||\n visitNode(cb, node.targetType) ||\n visitEach(cb, node.arguments));\n case SyntaxKind.DecoratorExpression:\n return visitNode(cb, node.target) || visitEach(cb, node.arguments);\n case SyntaxKind.DirectiveExpression:\n return visitNode(cb, node.target) || visitEach(cb, node.arguments);\n case SyntaxKind.ImportStatement:\n return visitNode(cb, node.path);\n case SyntaxKind.OperationStatement:\n return (visitEach(cb, node.decorators) ||\n visitNode(cb, node.id) ||\n visitEach(cb, node.templateParameters) ||\n visitNode(cb, node.signature));\n case SyntaxKind.OperationSignatureDeclaration:\n return visitNode(cb, node.parameters) || visitNode(cb, node.returnType);\n case SyntaxKind.OperationSignatureReference:\n return visitNode(cb, node.baseOperation);\n case SyntaxKind.NamespaceStatement:\n return (visitEach(cb, node.decorators) ||\n visitNode(cb, node.id) ||\n (isArray(node.statements) ? visitEach(cb, node.statements) : visitNode(cb, node.statements)));\n case SyntaxKind.InterfaceStatement:\n return (visitEach(cb, node.decorators) ||\n visitNode(cb, node.id) ||\n visitEach(cb, node.templateParameters) ||\n visitEach(cb, node.extends) ||\n visitEach(cb, node.operations));\n case SyntaxKind.UsingStatement:\n return visitNode(cb, node.name);\n case SyntaxKind.IntersectionExpression:\n return visitEach(cb, node.options);\n case SyntaxKind.MemberExpression:\n return visitNode(cb, node.base) || visitNode(cb, node.id);\n case SyntaxKind.ModelExpression:\n return visitEach(cb, node.properties);\n case SyntaxKind.ModelProperty:\n return (visitEach(cb, node.decorators) ||\n visitNode(cb, node.id) ||\n visitNode(cb, node.value) ||\n visitNode(cb, node.default));\n case SyntaxKind.ModelSpreadProperty:\n return visitNode(cb, node.target);\n case SyntaxKind.ModelStatement:\n return (visitEach(cb, node.decorators) ||\n visitNode(cb, node.id) ||\n visitEach(cb, node.templateParameters) ||\n visitNode(cb, node.extends) ||\n visitNode(cb, node.is) ||\n visitEach(cb, node.properties));\n case SyntaxKind.ScalarStatement:\n return (visitEach(cb, node.decorators) ||\n visitNode(cb, node.id) ||\n visitEach(cb, node.templateParameters) ||\n visitNode(cb, node.extends));\n case SyntaxKind.UnionStatement:\n return (visitEach(cb, node.decorators) ||\n visitNode(cb, node.id) ||\n visitEach(cb, node.templateParameters) ||\n visitEach(cb, node.options));\n case SyntaxKind.UnionVariant:\n return visitEach(cb, node.decorators) || visitNode(cb, node.id) || visitNode(cb, node.value);\n case SyntaxKind.EnumStatement:\n return (visitEach(cb, node.decorators) || visitNode(cb, node.id) || visitEach(cb, node.members));\n case SyntaxKind.EnumMember:\n return visitEach(cb, node.decorators) || visitNode(cb, node.id) || visitNode(cb, node.value);\n case SyntaxKind.EnumSpreadMember:\n return visitNode(cb, node.target);\n case SyntaxKind.AliasStatement:\n return (visitNode(cb, node.id) ||\n visitEach(cb, node.templateParameters) ||\n visitNode(cb, node.value));\n case SyntaxKind.DecoratorDeclarationStatement:\n return (visitEach(cb, node.modifiers) ||\n visitNode(cb, node.id) ||\n visitNode(cb, node.target) ||\n visitEach(cb, node.parameters));\n case SyntaxKind.FunctionDeclarationStatement:\n return (visitEach(cb, node.modifiers) ||\n visitNode(cb, node.id) ||\n visitEach(cb, node.parameters) ||\n visitNode(cb, node.returnType));\n case SyntaxKind.FunctionParameter:\n return visitNode(cb, node.id) || visitNode(cb, node.type);\n case SyntaxKind.TypeReference:\n return visitNode(cb, node.target) || visitEach(cb, node.arguments);\n case SyntaxKind.ValueOfExpression:\n return visitNode(cb, node.target);\n case SyntaxKind.TupleExpression:\n return visitEach(cb, node.values);\n case SyntaxKind.UnionExpression:\n return visitEach(cb, node.options);\n case SyntaxKind.Projection:\n return (visitNode(cb, node.directionId) ||\n visitEach(cb, node.modifierIds) ||\n visitEach(cb, node.parameters) ||\n visitEach(cb, node.body));\n case SyntaxKind.ProjectionExpressionStatement:\n return visitNode(cb, node.expr);\n case SyntaxKind.ProjectionCallExpression:\n return visitNode(cb, node.target) || visitEach(cb, node.arguments);\n case SyntaxKind.ProjectionMemberExpression:\n return visitNode(cb, node.base) || visitNode(cb, node.id);\n // binops\n case SyntaxKind.ProjectionLogicalExpression:\n case SyntaxKind.ProjectionRelationalExpression:\n case SyntaxKind.ProjectionArithmeticExpression:\n case SyntaxKind.ProjectionEqualityExpression:\n return visitNode(cb, node.left) || visitNode(cb, node.right);\n case SyntaxKind.ProjectionUnaryExpression:\n return visitNode(cb, node.target);\n case SyntaxKind.ProjectionModelExpression:\n return visitEach(cb, node.properties);\n case SyntaxKind.ProjectionModelProperty:\n return (visitEach(cb, node.decorators) ||\n visitNode(cb, node.id) ||\n visitNode(cb, node.value) ||\n visitNode(cb, node.default));\n case SyntaxKind.ProjectionModelSpreadProperty:\n return visitNode(cb, node.target);\n case SyntaxKind.ProjectionTupleExpression:\n return visitEach(cb, node.values);\n case SyntaxKind.ProjectionBlockExpression:\n return visitEach(cb, node.statements);\n case SyntaxKind.ProjectionIfExpression:\n return (visitNode(cb, node.test) || visitNode(cb, node.consequent) || visitNode(cb, node.alternate));\n case SyntaxKind.ProjectionLambdaExpression:\n return visitEach(cb, node.parameters) || visitNode(cb, node.body);\n case SyntaxKind.ProjectionStatement:\n return (visitNode(cb, node.id) || visitNode(cb, node.selector) || visitEach(cb, node.projections));\n case SyntaxKind.ProjectionDecoratorReferenceExpression:\n return visitNode(cb, node.target);\n case SyntaxKind.Return:\n return visitNode(cb, node.value);\n case SyntaxKind.InvalidStatement:\n return visitEach(cb, node.decorators);\n case SyntaxKind.TemplateParameterDeclaration:\n return (visitNode(cb, node.id) || visitNode(cb, node.constraint) || visitNode(cb, node.default));\n case SyntaxKind.ProjectionLambdaParameterDeclaration:\n return visitNode(cb, node.id);\n case SyntaxKind.ProjectionParameterDeclaration:\n return visitNode(cb, node.id);\n case SyntaxKind.Doc:\n return visitEach(cb, node.content) || visitEach(cb, node.tags);\n case SyntaxKind.DocParamTag:\n case SyntaxKind.DocTemplateTag:\n return (visitNode(cb, node.tagName) || visitNode(cb, node.paramName) || visitEach(cb, node.content));\n case SyntaxKind.DocReturnsTag:\n case SyntaxKind.DocUnknownTag:\n return visitNode(cb, node.tagName) || visitEach(cb, node.content);\n // no children for the rest of these.\n case SyntaxKind.StringLiteral:\n case SyntaxKind.NumericLiteral:\n case SyntaxKind.BooleanLiteral:\n case SyntaxKind.Identifier:\n case SyntaxKind.EmptyStatement:\n case SyntaxKind.ProjectionModelSelector:\n case SyntaxKind.ProjectionModelPropertySelector:\n case SyntaxKind.ProjectionUnionSelector:\n case SyntaxKind.ProjectionUnionVariantSelector:\n case SyntaxKind.ProjectionInterfaceSelector:\n case SyntaxKind.ProjectionOperationSelector:\n case SyntaxKind.ProjectionEnumSelector:\n case SyntaxKind.ProjectionEnumMemberSelector:\n case SyntaxKind.VoidKeyword:\n case SyntaxKind.NeverKeyword:\n case SyntaxKind.ExternKeyword:\n case SyntaxKind.UnknownKeyword:\n case SyntaxKind.JsSourceFile:\n case SyntaxKind.DocText:\n return;\n default:\n // Dummy const to ensure we handle all node types.\n // If you get an error here, add a case for the new node type\n // you added..\n const _assertNever = node;\n return;\n }\n}\nfunction visitNode(cb, node) {\n return node && cb(node);\n}\nfunction visitEach(cb, nodes) {\n if (!nodes) {\n return;\n }\n for (const node of nodes) {\n const result = cb(node);\n if (result) {\n return result;\n }\n }\n return;\n}\nexport function getNodeAtPosition(script, position, filter = (node) => true) {\n return visit(script);\n function visit(node) {\n // We deliberately include the end position here because we need to hit\n // nodes when the cursor is positioned immediately after an identifier.\n // This is especially vital for completion. It's also generally OK\n // because the language doesn't (and should never) have syntax where you\n // could place the cursor ambiguously between two adjacent,\n // non-punctuation, non-trivia tokens that have no punctuation or trivia\n // separating them.\n if (node.pos <= position && position <= node.end) {\n // We only need to recursively visit children of nodes that satisfied\n // the condition above and therefore contain the given position. If a\n // node does not contain a position, then neither do its children.\n const child = visitChildren(node, visit);\n // A child match here is better than a self-match below as we want the\n // deepest (most specific) node. In other words, the search is depth\n // first. For example, consider `A<B<C>>`: If the cursor is on `B`,\n // then prefer B<C> over A<B<C>>.\n if (child) {\n return child;\n }\n if (filter(node)) {\n return node;\n }\n }\n return undefined;\n }\n}\nexport function hasParseError(node) {\n if (node.flags & 2 /* NodeFlags.ThisNodeHasError */) {\n return true;\n }\n checkForDescendantErrors(node);\n return node.flags & 4 /* NodeFlags.DescendantHasError */;\n}\nfunction checkForDescendantErrors(node) {\n if (node.flags & 1 /* NodeFlags.DescendantErrorsExamined */) {\n return;\n }\n mutate(node).flags |= 1 /* NodeFlags.DescendantErrorsExamined */;\n visitChildren(node, (child) => {\n if (child.flags & 2 /* NodeFlags.ThisNodeHasError */) {\n mutate(node).flags |= 4 /* NodeFlags.DescendantHasError */ | 1 /* NodeFlags.DescendantErrorsExamined */;\n return true;\n }\n checkForDescendantErrors(child);\n if (child.flags & 4 /* NodeFlags.DescendantHasError */) {\n mutate(node).flags |= 4 /* NodeFlags.DescendantHasError */ | 1 /* NodeFlags.DescendantErrorsExamined */;\n return true;\n }\n mutate(child).flags |= 1 /* NodeFlags.DescendantErrorsExamined */;\n return false;\n });\n}\nexport function isImportStatement(node) {\n return node.kind === SyntaxKind.ImportStatement;\n}\nfunction isBlocklessNamespace(node) {\n if (node.kind !== SyntaxKind.NamespaceStatement) {\n return false;\n }\n while (!isArray(node.statements) && node.statements) {\n node = node.statements;\n }\n return node.statements === undefined;\n}\nexport function getFirstAncestor(node, test) {\n for (let n = node.parent; n; n = n.parent) {\n if (test(n)) {\n return n;\n }\n }\n return undefined;\n}\nexport function getIdentifierContext(id) {\n const node = getFirstAncestor(id, (n) => n.kind !== SyntaxKind.MemberExpression);\n compilerAssert(node, \"Identifier with no non-member-expression ancestor.\");\n let kind;\n switch (node.kind) {\n case SyntaxKind.TypeReference:\n kind = IdentifierKind.TypeReference;\n break;\n case SyntaxKind.AugmentDecoratorStatement:\n case SyntaxKind.DecoratorExpression:\n kind = IdentifierKind.Decorator;\n break;\n case SyntaxKind.ProjectionCallExpression:\n kind = IdentifierKind.Function;\n break;\n case SyntaxKind.UsingStatement:\n kind = IdentifierKind.Using;\n break;\n default:\n kind =\n id.parent.id === id\n ? IdentifierKind.Declaration\n : IdentifierKind.Other;\n break;\n }\n return { node, kind };\n}\n//# sourceMappingURL=parser.js.map","import { getSourceLocation } from \"../core/diagnostics.js\";\nimport { parse as typespecParse, visitChildren } from \"../core/parser.js\";\nimport { SyntaxKind } from \"../core/types.js\";\nexport function parse(text, parsers, opts) {\n const result = typespecParse(text, { comments: true, docs: false });\n flattenNamespaces(result);\n const errors = result.parseDiagnostics.filter((x) => x.severity === \"error\");\n if (errors.length > 0 && !result.printable) {\n throw new PrettierParserError(errors[0]);\n }\n return result;\n}\n/**\n * We are patching the syntax tree to flatten the namespace nodes that are created from namespace Foo.Bar; which have the same pos, end\n * This causes prettier to not know where comments belong.\n * https://github.com/microsoft/typespec/pull/2061\n */\nfunction flattenNamespaces(base) {\n visitChildren(base, (node) => {\n if (node.kind === SyntaxKind.NamespaceStatement) {\n let current = node;\n const ids = [node.id];\n while (current.statements && \"kind\" in current.statements) {\n current = current.statements;\n ids.push(current.id);\n }\n Object.assign(node, current, {\n ids,\n });\n flattenNamespaces(current);\n }\n });\n}\nexport class PrettierParserError extends Error {\n constructor(error) {\n var _a, _b;\n super(error.message);\n this.error = error;\n const location = getSourceLocation(error.target);\n this.loc = {\n start: (_a = location === null || location === void 0 ? void 0 : location.pos) !== null && _a !== void 0 ? _a : 0,\n end: (_b = location === null || location === void 0 ? void 0 : location.end) !== null && _b !== void 0 ? _b : 0,\n };\n }\n}\n//# sourceMappingURL=parser.js.map","import { parse } from \"./parser.js\";\nimport { typespecPrinter } from \"./print/index.js\";\nexport const defaultOptions = {};\nexport const languages = [\n {\n name: \"TypeSpec\",\n parsers: [\"typespec\"],\n extensions: [\".tsp\", \".cadl\"],\n vscodeLanguageIds: [\"typespec\"],\n },\n];\nconst TypeSpecParser = {\n parse,\n astFormat: \"typespec-format\",\n locStart(node) {\n return node.pos;\n },\n locEnd(node) {\n return node.end;\n },\n};\nexport const parsers = {\n typespec: TypeSpecParser,\n};\nexport const printers = {\n \"typespec-format\": typespecPrinter,\n};\n//# sourceMappingURL=index.js.map","export * from \"./core/index.js\";\nexport * from \"./lib/decorators.js\";\nexport * as decorators from \"./lib/decorators.js\";\nexport * from \"./server/index.js\";\nimport * as formatter from \"./formatter/index.js\";\nexport const TypeSpecPrettierPlugin = formatter;\n/** @deprecated Use TypeSpecPrettierPlugin */\nexport const CadlPrettierPlugin = TypeSpecPrettierPlugin;\n//# sourceMappingURL=index.js.map","/**\n * Reexport the bare minimum for rollup to do the tree shaking.\n */\nimport { TypeSpecPrettierPlugin } from \"@typespec/compiler\";\nexport default TypeSpecPrettierPlugin;\n"],"names":["this","parse","typespecParse"],"mappings":";;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,qBAAqB,GAAG;AACrC,IAAI,IAAI,EAAE,KAAK;AACf,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,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"}
|