@typespec/compiler 0.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (352) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +9 -0
  3. package/cmd/tsp-server.js +3 -0
  4. package/cmd/tsp.js +3 -0
  5. package/dist/cmd/runner.d.ts +9 -0
  6. package/dist/cmd/runner.d.ts.map +1 -0
  7. package/dist/cmd/runner.js +62 -0
  8. package/dist/cmd/runner.js.map +1 -0
  9. package/dist/config/config-interpolation.d.ts +11 -0
  10. package/dist/config/config-interpolation.d.ts.map +1 -0
  11. package/dist/config/config-interpolation.js +109 -0
  12. package/dist/config/config-interpolation.js.map +1 -0
  13. package/dist/config/config-loader.d.ts +25 -0
  14. package/dist/config/config-loader.d.ts.map +1 -0
  15. package/dist/config/config-loader.js +182 -0
  16. package/dist/config/config-loader.js.map +1 -0
  17. package/dist/config/config-schema.d.ts +4 -0
  18. package/dist/config/config-schema.d.ts.map +1 -0
  19. package/dist/config/config-schema.js +84 -0
  20. package/dist/config/config-schema.js.map +1 -0
  21. package/dist/config/index.d.ts +3 -0
  22. package/dist/config/index.d.ts.map +1 -0
  23. package/dist/config/index.js +3 -0
  24. package/dist/config/index.js.map +1 -0
  25. package/dist/config/types.d.ts +79 -0
  26. package/dist/config/types.d.ts.map +1 -0
  27. package/dist/config/types.js +2 -0
  28. package/dist/config/types.js.map +1 -0
  29. package/dist/core/binder.d.ts +29 -0
  30. package/dist/core/binder.d.ts.map +1 -0
  31. package/dist/core/binder.js +455 -0
  32. package/dist/core/binder.js.map +1 -0
  33. package/dist/core/charcode.d.ts +130 -0
  34. package/dist/core/charcode.d.ts.map +1 -0
  35. package/dist/core/charcode.js +115 -0
  36. package/dist/core/charcode.js.map +1 -0
  37. package/dist/core/checker.d.ts +138 -0
  38. package/dist/core/checker.d.ts.map +1 -0
  39. package/dist/core/checker.js +4070 -0
  40. package/dist/core/checker.js.map +1 -0
  41. package/dist/core/cli/args.d.ts +18 -0
  42. package/dist/core/cli/args.d.ts.map +1 -0
  43. package/dist/core/cli/args.js +108 -0
  44. package/dist/core/cli/args.js.map +1 -0
  45. package/dist/core/cli/cli.d.ts +2 -0
  46. package/dist/core/cli/cli.d.ts.map +1 -0
  47. package/dist/core/cli/cli.js +477 -0
  48. package/dist/core/cli/cli.js.map +1 -0
  49. package/dist/core/cli/index.d.ts +2 -0
  50. package/dist/core/cli/index.d.ts.map +1 -0
  51. package/dist/core/cli/index.js +2 -0
  52. package/dist/core/cli/index.js.map +1 -0
  53. package/dist/core/decorator-utils.d.ts +108 -0
  54. package/dist/core/decorator-utils.d.ts.map +1 -0
  55. package/dist/core/decorator-utils.js +326 -0
  56. package/dist/core/decorator-utils.js.map +1 -0
  57. package/dist/core/diagnostics.d.ts +93 -0
  58. package/dist/core/diagnostics.d.ts.map +1 -0
  59. package/dist/core/diagnostics.js +315 -0
  60. package/dist/core/diagnostics.js.map +1 -0
  61. package/dist/core/emitter-utils.d.ts +14 -0
  62. package/dist/core/emitter-utils.d.ts.map +1 -0
  63. package/dist/core/emitter-utils.js +16 -0
  64. package/dist/core/emitter-utils.js.map +1 -0
  65. package/dist/core/formatter-fs.d.ts +21 -0
  66. package/dist/core/formatter-fs.d.ts.map +1 -0
  67. package/dist/core/formatter-fs.js +79 -0
  68. package/dist/core/formatter-fs.js.map +1 -0
  69. package/dist/core/formatter.d.ts +10 -0
  70. package/dist/core/formatter.d.ts.map +1 -0
  71. package/dist/core/formatter.js +24 -0
  72. package/dist/core/formatter.js.map +1 -0
  73. package/dist/core/helpers/discriminator-utils.d.ts +14 -0
  74. package/dist/core/helpers/discriminator-utils.d.ts.map +1 -0
  75. package/dist/core/helpers/discriminator-utils.js +169 -0
  76. package/dist/core/helpers/discriminator-utils.js.map +1 -0
  77. package/dist/core/helpers/index.d.ts +6 -0
  78. package/dist/core/helpers/index.d.ts.map +1 -0
  79. package/dist/core/helpers/index.js +6 -0
  80. package/dist/core/helpers/index.js.map +1 -0
  81. package/dist/core/helpers/operation-utils.d.ts +15 -0
  82. package/dist/core/helpers/operation-utils.d.ts.map +1 -0
  83. package/dist/core/helpers/operation-utils.js +35 -0
  84. package/dist/core/helpers/operation-utils.js.map +1 -0
  85. package/dist/core/helpers/projected-names-utils.d.ts +20 -0
  86. package/dist/core/helpers/projected-names-utils.d.ts.map +1 -0
  87. package/dist/core/helpers/projected-names-utils.js +40 -0
  88. package/dist/core/helpers/projected-names-utils.js.map +1 -0
  89. package/dist/core/helpers/type-name-utils.d.ts +14 -0
  90. package/dist/core/helpers/type-name-utils.d.ts.map +1 -0
  91. package/dist/core/helpers/type-name-utils.js +122 -0
  92. package/dist/core/helpers/type-name-utils.js.map +1 -0
  93. package/dist/core/helpers/usage-resolver.d.ts +20 -0
  94. package/dist/core/helpers/usage-resolver.d.ts.map +1 -0
  95. package/dist/core/helpers/usage-resolver.js +108 -0
  96. package/dist/core/helpers/usage-resolver.js.map +1 -0
  97. package/dist/core/index.d.ts +26 -0
  98. package/dist/core/index.d.ts.map +1 -0
  99. package/dist/core/index.js +26 -0
  100. package/dist/core/index.js.map +1 -0
  101. package/dist/core/install.d.ts +2 -0
  102. package/dist/core/install.d.ts.map +1 -0
  103. package/dist/core/install.js +26 -0
  104. package/dist/core/install.js.map +1 -0
  105. package/dist/core/library.d.ts +34 -0
  106. package/dist/core/library.d.ts.map +1 -0
  107. package/dist/core/library.js +100 -0
  108. package/dist/core/library.js.map +1 -0
  109. package/dist/core/logger/console-sink.browser.d.ts +4 -0
  110. package/dist/core/logger/console-sink.browser.d.ts.map +1 -0
  111. package/dist/core/logger/console-sink.browser.js +14 -0
  112. package/dist/core/logger/console-sink.browser.js.map +1 -0
  113. package/dist/core/logger/console-sink.d.ts +9 -0
  114. package/dist/core/logger/console-sink.d.ts.map +1 -0
  115. package/dist/core/logger/console-sink.js +81 -0
  116. package/dist/core/logger/console-sink.js.map +1 -0
  117. package/dist/core/logger/index.d.ts +3 -0
  118. package/dist/core/logger/index.d.ts.map +1 -0
  119. package/dist/core/logger/index.js +3 -0
  120. package/dist/core/logger/index.js.map +1 -0
  121. package/dist/core/logger/logger.d.ts +7 -0
  122. package/dist/core/logger/logger.d.ts.map +1 -0
  123. package/dist/core/logger/logger.js +32 -0
  124. package/dist/core/logger/logger.js.map +1 -0
  125. package/dist/core/logger/tracer.d.ts +3 -0
  126. package/dist/core/logger/tracer.d.ts.map +1 -0
  127. package/dist/core/logger/tracer.js +91 -0
  128. package/dist/core/logger/tracer.js.map +1 -0
  129. package/dist/core/manifest.d.ts +21 -0
  130. package/dist/core/manifest.d.ts.map +1 -0
  131. package/dist/core/manifest.js +8 -0
  132. package/dist/core/manifest.js.map +1 -0
  133. package/dist/core/messages.d.ts +2253 -0
  134. package/dist/core/messages.d.ts.map +1 -0
  135. package/dist/core/messages.js +749 -0
  136. package/dist/core/messages.js.map +1 -0
  137. package/dist/core/module-resolver.d.ts +84 -0
  138. package/dist/core/module-resolver.d.ts.map +1 -0
  139. package/dist/core/module-resolver.js +170 -0
  140. package/dist/core/module-resolver.js.map +1 -0
  141. package/dist/core/node-host.browser.d.ts +2 -0
  142. package/dist/core/node-host.browser.d.ts.map +1 -0
  143. package/dist/core/node-host.browser.js +2 -0
  144. package/dist/core/node-host.browser.js.map +1 -0
  145. package/dist/core/node-host.d.ts +7 -0
  146. package/dist/core/node-host.d.ts.map +1 -0
  147. package/dist/core/node-host.js +43 -0
  148. package/dist/core/node-host.js.map +1 -0
  149. package/dist/core/nonascii.d.ts +2 -0
  150. package/dist/core/nonascii.d.ts.map +1 -0
  151. package/dist/core/nonascii.js +712 -0
  152. package/dist/core/nonascii.js.map +1 -0
  153. package/dist/core/options.d.ts +46 -0
  154. package/dist/core/options.d.ts.map +1 -0
  155. package/dist/core/options.js +2 -0
  156. package/dist/core/options.js.map +1 -0
  157. package/dist/core/parser.d.ts +17 -0
  158. package/dist/core/parser.d.ts.map +1 -0
  159. package/dist/core/parser.js +2561 -0
  160. package/dist/core/parser.js.map +1 -0
  161. package/dist/core/path-utils.d.ts +193 -0
  162. package/dist/core/path-utils.d.ts.map +1 -0
  163. package/dist/core/path-utils.js +427 -0
  164. package/dist/core/path-utils.js.map +1 -0
  165. package/dist/core/program.d.ts +104 -0
  166. package/dist/core/program.d.ts.map +1 -0
  167. package/dist/core/program.js +898 -0
  168. package/dist/core/program.js.map +1 -0
  169. package/dist/core/projection-members.d.ts +8 -0
  170. package/dist/core/projection-members.d.ts.map +1 -0
  171. package/dist/core/projection-members.js +387 -0
  172. package/dist/core/projection-members.js.map +1 -0
  173. package/dist/core/projector.d.ts +26 -0
  174. package/dist/core/projector.d.ts.map +1 -0
  175. package/dist/core/projector.js +523 -0
  176. package/dist/core/projector.js.map +1 -0
  177. package/dist/core/scanner.d.ts +125 -0
  178. package/dist/core/scanner.d.ts.map +1 -0
  179. package/dist/core/scanner.js +1012 -0
  180. package/dist/core/scanner.js.map +1 -0
  181. package/dist/core/schema-validator.d.ts +6 -0
  182. package/dist/core/schema-validator.d.ts.map +1 -0
  183. package/dist/core/schema-validator.js +38 -0
  184. package/dist/core/schema-validator.js.map +1 -0
  185. package/dist/core/semantic-walker.d.ts +53 -0
  186. package/dist/core/semantic-walker.d.ts.map +1 -0
  187. package/dist/core/semantic-walker.js +355 -0
  188. package/dist/core/semantic-walker.js.map +1 -0
  189. package/dist/core/type-utils.d.ts +49 -0
  190. package/dist/core/type-utils.d.ts.map +1 -0
  191. package/dist/core/type-utils.js +95 -0
  192. package/dist/core/type-utils.js.map +1 -0
  193. package/dist/core/types.d.ts +1345 -0
  194. package/dist/core/types.d.ts.map +1 -0
  195. package/dist/core/types.js +105 -0
  196. package/dist/core/types.js.map +1 -0
  197. package/dist/core/util.d.ts +150 -0
  198. package/dist/core/util.d.ts.map +1 -0
  199. package/dist/core/util.js +417 -0
  200. package/dist/core/util.js.map +1 -0
  201. package/dist/emitter-framework/asset-emitter.d.ts +5 -0
  202. package/dist/emitter-framework/asset-emitter.d.ts.map +1 -0
  203. package/dist/emitter-framework/asset-emitter.js +610 -0
  204. package/dist/emitter-framework/asset-emitter.js.map +1 -0
  205. package/dist/emitter-framework/builders/array-builder.d.ts +7 -0
  206. package/dist/emitter-framework/builders/array-builder.d.ts.map +1 -0
  207. package/dist/emitter-framework/builders/array-builder.js +45 -0
  208. package/dist/emitter-framework/builders/array-builder.js.map +1 -0
  209. package/dist/emitter-framework/builders/object-builder.d.ts +9 -0
  210. package/dist/emitter-framework/builders/object-builder.d.ts.map +1 -0
  211. package/dist/emitter-framework/builders/object-builder.js +30 -0
  212. package/dist/emitter-framework/builders/object-builder.js.map +1 -0
  213. package/dist/emitter-framework/builders/string-builder.d.ts +13 -0
  214. package/dist/emitter-framework/builders/string-builder.d.ts.map +1 -0
  215. package/dist/emitter-framework/builders/string-builder.js +98 -0
  216. package/dist/emitter-framework/builders/string-builder.js.map +1 -0
  217. package/dist/emitter-framework/custom-key-map.d.ts +29 -0
  218. package/dist/emitter-framework/custom-key-map.d.ts.map +1 -0
  219. package/dist/emitter-framework/custom-key-map.js +62 -0
  220. package/dist/emitter-framework/custom-key-map.js.map +1 -0
  221. package/dist/emitter-framework/index.d.ts +8 -0
  222. package/dist/emitter-framework/index.d.ts.map +1 -0
  223. package/dist/emitter-framework/index.js +8 -0
  224. package/dist/emitter-framework/index.js.map +1 -0
  225. package/dist/emitter-framework/placeholder.d.ts +12 -0
  226. package/dist/emitter-framework/placeholder.d.ts.map +1 -0
  227. package/dist/emitter-framework/placeholder.js +27 -0
  228. package/dist/emitter-framework/placeholder.js.map +1 -0
  229. package/dist/emitter-framework/type-emitter.d.ts +314 -0
  230. package/dist/emitter-framework/type-emitter.d.ts.map +1 -0
  231. package/dist/emitter-framework/type-emitter.js +612 -0
  232. package/dist/emitter-framework/type-emitter.js.map +1 -0
  233. package/dist/emitter-framework/types.d.ts +124 -0
  234. package/dist/emitter-framework/types.d.ts.map +1 -0
  235. package/dist/emitter-framework/types.js +39 -0
  236. package/dist/emitter-framework/types.js.map +1 -0
  237. package/dist/formatter/index.d.ts +11 -0
  238. package/dist/formatter/index.d.ts.map +1 -0
  239. package/dist/formatter/index.js +28 -0
  240. package/dist/formatter/index.js.map +1 -0
  241. package/dist/formatter/parser.d.ts +16 -0
  242. package/dist/formatter/parser.d.ts.map +1 -0
  243. package/dist/formatter/parser.js +23 -0
  244. package/dist/formatter/parser.js.map +1 -0
  245. package/dist/formatter/print/comment-handler.d.ts +7 -0
  246. package/dist/formatter/print/comment-handler.d.ts.map +1 -0
  247. package/dist/formatter/print/comment-handler.js +81 -0
  248. package/dist/formatter/print/comment-handler.js.map +1 -0
  249. package/dist/formatter/print/index.d.ts +3 -0
  250. package/dist/formatter/print/index.d.ts.map +1 -0
  251. package/dist/formatter/print/index.js +3 -0
  252. package/dist/formatter/print/index.js.map +1 -0
  253. package/dist/formatter/print/needs-parens.d.ts +10 -0
  254. package/dist/formatter/print/needs-parens.d.ts.map +1 -0
  255. package/dist/formatter/print/needs-parens.js +27 -0
  256. package/dist/formatter/print/needs-parens.js.map +1 -0
  257. package/dist/formatter/print/printer.d.ts +62 -0
  258. package/dist/formatter/print/printer.d.ts.map +1 -0
  259. package/dist/formatter/print/printer.js +1025 -0
  260. package/dist/formatter/print/printer.js.map +1 -0
  261. package/dist/formatter/print/types.d.ts +9 -0
  262. package/dist/formatter/print/types.d.ts.map +1 -0
  263. package/dist/formatter/print/types.js +2 -0
  264. package/dist/formatter/print/types.js.map +1 -0
  265. package/dist/init/index.d.ts +2 -0
  266. package/dist/init/index.d.ts.map +1 -0
  267. package/dist/init/index.js +2 -0
  268. package/dist/init/index.js.map +1 -0
  269. package/dist/init/init-template.d.ts +45 -0
  270. package/dist/init/init-template.d.ts.map +1 -0
  271. package/dist/init/init-template.js +45 -0
  272. package/dist/init/init-template.js.map +1 -0
  273. package/dist/init/init.d.ts +49 -0
  274. package/dist/init/init.d.ts.map +1 -0
  275. package/dist/init/init.js +224 -0
  276. package/dist/init/init.js.map +1 -0
  277. package/dist/lib/decorators.d.ts +222 -0
  278. package/dist/lib/decorators.d.ts.map +1 -0
  279. package/dist/lib/decorators.js +745 -0
  280. package/dist/lib/decorators.js.map +1 -0
  281. package/dist/lib/service.d.ts +38 -0
  282. package/dist/lib/service.d.ts.map +1 -0
  283. package/dist/lib/service.js +78 -0
  284. package/dist/lib/service.js.map +1 -0
  285. package/dist/manifest.js +4 -0
  286. package/dist/server/completion.d.ts +10 -0
  287. package/dist/server/completion.d.ts.map +1 -0
  288. package/dist/server/completion.js +207 -0
  289. package/dist/server/completion.js.map +1 -0
  290. package/dist/server/index.d.ts +3 -0
  291. package/dist/server/index.d.ts.map +1 -0
  292. package/dist/server/index.js +3 -0
  293. package/dist/server/index.js.map +1 -0
  294. package/dist/server/language-config.d.ts +195 -0
  295. package/dist/server/language-config.d.ts.map +1 -0
  296. package/dist/server/language-config.js +102 -0
  297. package/dist/server/language-config.js.map +1 -0
  298. package/dist/server/server.d.ts +2 -0
  299. package/dist/server/server.d.ts.map +1 -0
  300. package/dist/server/server.js +131 -0
  301. package/dist/server/server.js.map +1 -0
  302. package/dist/server/serverlib.d.ts +72 -0
  303. package/dist/server/serverlib.d.ts.map +1 -0
  304. package/dist/server/serverlib.js +1034 -0
  305. package/dist/server/serverlib.js.map +1 -0
  306. package/dist/server/symbol-structure.d.ts +4 -0
  307. package/dist/server/symbol-structure.d.ts.map +1 -0
  308. package/dist/server/symbol-structure.js +121 -0
  309. package/dist/server/symbol-structure.js.map +1 -0
  310. package/dist/server/tmlanguage.d.ts +3 -0
  311. package/dist/server/tmlanguage.d.ts.map +1 -0
  312. package/dist/server/tmlanguage.js +713 -0
  313. package/dist/server/tmlanguage.js.map +1 -0
  314. package/dist/server/type-details.d.ts +11 -0
  315. package/dist/server/type-details.d.ts.map +1 -0
  316. package/dist/server/type-details.js +72 -0
  317. package/dist/server/type-details.js.map +1 -0
  318. package/dist/server/type-signature.d.ts +2 -0
  319. package/dist/server/type-signature.d.ts.map +1 -0
  320. package/dist/server/type-signature.js +108 -0
  321. package/dist/server/type-signature.js.map +1 -0
  322. package/dist/testing/expect.d.ts +49 -0
  323. package/dist/testing/expect.d.ts.map +1 -0
  324. package/dist/testing/expect.js +83 -0
  325. package/dist/testing/expect.js.map +1 -0
  326. package/dist/testing/index.d.ts +6 -0
  327. package/dist/testing/index.d.ts.map +1 -0
  328. package/dist/testing/index.js +6 -0
  329. package/dist/testing/index.js.map +1 -0
  330. package/dist/testing/test-host.d.ts +14 -0
  331. package/dist/testing/test-host.d.ts.map +1 -0
  332. package/dist/testing/test-host.js +271 -0
  333. package/dist/testing/test-host.js.map +1 -0
  334. package/dist/testing/test-server-host.d.ts +39 -0
  335. package/dist/testing/test-server-host.d.ts.map +1 -0
  336. package/dist/testing/test-server-host.js +112 -0
  337. package/dist/testing/test-server-host.js.map +1 -0
  338. package/dist/testing/test-utils.d.ts +22 -0
  339. package/dist/testing/test-utils.d.ts.map +1 -0
  340. package/dist/testing/test-utils.js +60 -0
  341. package/dist/testing/test-utils.js.map +1 -0
  342. package/dist/testing/types.d.ts +69 -0
  343. package/dist/testing/types.d.ts.map +1 -0
  344. package/dist/testing/types.js +7 -0
  345. package/dist/testing/types.js.map +1 -0
  346. package/dist/typespec.tmLanguage +1760 -0
  347. package/lib/decorators.tsp +420 -0
  348. package/lib/lib.tsp +158 -0
  349. package/lib/main.tsp +4 -0
  350. package/lib/projected-names.tsp +94 -0
  351. package/lib/reflection.tsp +10 -0
  352. package/package.json +119 -0
@@ -0,0 +1,79 @@
1
+ import { Diagnostic } from "../core/index.js";
2
+ /**
3
+ * Represent the normalized user configuration.
4
+ */
5
+ export interface TypeSpecConfig {
6
+ /**
7
+ * Project root.
8
+ */
9
+ projectRoot: string;
10
+ /**
11
+ * Path to the config file used to create this configuration.
12
+ */
13
+ filename?: string;
14
+ /**
15
+ * Diagnostics reported while loading the configuration
16
+ */
17
+ diagnostics: Diagnostic[];
18
+ /**
19
+ * Path to another typespec config to extend.
20
+ */
21
+ extends?: string;
22
+ /**
23
+ * Environment variables configuration
24
+ */
25
+ environmentVariables?: Record<string, ConfigEnvironmentVariable>;
26
+ /**
27
+ * Parameters that can be used
28
+ */
29
+ parameters?: Record<string, ConfigParameter>;
30
+ /**
31
+ * Treat warning as error.
32
+ */
33
+ warnAsError?: boolean;
34
+ /**
35
+ * Output directory
36
+ */
37
+ outputDir: string;
38
+ /**
39
+ * Trace options.
40
+ */
41
+ trace?: string[];
42
+ /**
43
+ * Additional imports.
44
+ */
45
+ imports?: string[];
46
+ /**
47
+ * Name of emitters or path to emitters that should be used.
48
+ */
49
+ emit?: string[];
50
+ /**
51
+ * Name of emitters or path to emitters that should be used.
52
+ */
53
+ options?: Record<string, EmitterOptions>;
54
+ }
55
+ /**
56
+ * Represent the configuration that can be provided in a config file.
57
+ */
58
+ export interface TypeSpecRawConfig {
59
+ extends?: string;
60
+ "environment-variables"?: Record<string, ConfigEnvironmentVariable>;
61
+ parameters?: Record<string, ConfigParameter>;
62
+ "warn-as-error"?: boolean;
63
+ "output-dir"?: string;
64
+ trace?: string | string[];
65
+ imports?: string[];
66
+ emit?: string[];
67
+ options?: Record<string, EmitterOptions>;
68
+ emitters?: Record<string, boolean | EmitterOptions>;
69
+ }
70
+ export interface ConfigEnvironmentVariable {
71
+ default: string;
72
+ }
73
+ export interface ConfigParameter {
74
+ default: string;
75
+ }
76
+ export type EmitterOptions = Record<string, unknown> & {
77
+ "emitter-output-dir"?: string;
78
+ };
79
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../config/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,WAAW,EAAE,UAAU,EAAE,CAAC;IAE1B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;IAEjE;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAE7C;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uBAAuB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAE7C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,cAAc,CAAC,CAAC;CACrD;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IACrD,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../config/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,29 @@
1
+ import { Program } from "./program.js";
2
+ import { JsSourceFileNode, Node, Sym, SymbolFlags, SymbolTable, TypeSpecScriptNode } from "./types.js";
3
+ declare const SymbolTable: {
4
+ new (source?: SymbolTable): {
5
+ duplicates: Map<Sym, Set<Sym>>;
6
+ set(key: string, value: Sym): any;
7
+ clear(): void;
8
+ delete(key: string): boolean;
9
+ forEach(callbackfn: (value: Sym, key: string, map: Map<string, Sym>) => void, thisArg?: any): void;
10
+ get(key: string): Sym | undefined;
11
+ has(key: string): boolean;
12
+ readonly size: number;
13
+ entries(): IterableIterator<[string, Sym]>;
14
+ keys(): IterableIterator<string>;
15
+ values(): IterableIterator<Sym>;
16
+ [Symbol.iterator](): IterableIterator<[string, Sym]>;
17
+ readonly [Symbol.toStringTag]: string;
18
+ };
19
+ readonly [Symbol.species]: MapConstructor;
20
+ };
21
+ export interface Binder {
22
+ bindSourceFile(script: TypeSpecScriptNode): void;
23
+ bindJsSourceFile(sourceFile: JsSourceFileNode): void;
24
+ }
25
+ export declare function createSymbolTable(source?: SymbolTable): SymbolTable;
26
+ export declare function createBinder(program: Program): Binder;
27
+ export declare function createSymbol(node: Node | undefined, name: string, flags: SymbolFlags, parent?: Sym, value?: any): Sym;
28
+ export {};
29
+ //# sourceMappingURL=binder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binder.d.ts","sourceRoot":"","sources":["../../core/binder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAQL,gBAAgB,EAGhB,IAAI,EASJ,GAAG,EACH,WAAW,EACX,WAAW,EAGX,kBAAkB,EAGnB,MAAM,YAAY,CAAC;AAMpB,QAAA,MAAM,WAAW;kBAGM,WAAW;;iBAcvB,MAAM,SAAS,GAAG;;;;;;;;;;;;;;CAkB5B,CAAC;AAEF,MAAM,WAAW,MAAM;IACrB,cAAc,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACjD,gBAAgB,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;CAKtD;AAED,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,WAAW,CAEnE;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAwbrD;AAoBD,wBAAgB,YAAY,CAC1B,IAAI,EAAE,IAAI,GAAG,SAAS,EACtB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,WAAW,EAClB,MAAM,CAAC,EAAE,GAAG,EACZ,KAAK,CAAC,EAAE,GAAG,GACV,GAAG,CAmBL"}
@@ -0,0 +1,455 @@
1
+ import { visitChildren } from "./parser.js";
2
+ import { SyntaxKind, } from "./types.js";
3
+ import { mutate } from "./util.js";
4
+ // Use a regular expression to define the prefix for TypeSpec-exposed functions
5
+ // defined in JavaScript modules
6
+ const DecoratorFunctionPattern = /^\$/;
7
+ const SymbolTable = class extends Map {
8
+ constructor(source) {
9
+ super();
10
+ this.duplicates = new Map();
11
+ if (source) {
12
+ for (const [key, value] of source) {
13
+ // Note: shallow copy of value here so we can mutate flags on set.
14
+ super.set(key, { ...value });
15
+ }
16
+ for (const [key, value] of source.duplicates) {
17
+ this.duplicates.set(key, new Set(value));
18
+ }
19
+ }
20
+ }
21
+ // First set for a given key wins, but record all duplicates for diagnostics.
22
+ set(key, value) {
23
+ const existing = super.get(key);
24
+ if (existing === undefined) {
25
+ super.set(key, value);
26
+ }
27
+ else {
28
+ if (existing.flags & 524288 /* SymbolFlags.Using */) {
29
+ mutate(existing).flags |= 1048576 /* SymbolFlags.DuplicateUsing */;
30
+ }
31
+ const duplicateArray = this.duplicates.get(existing);
32
+ if (duplicateArray) {
33
+ duplicateArray.add(value);
34
+ }
35
+ else {
36
+ this.duplicates.set(existing, new Set([existing, value]));
37
+ }
38
+ }
39
+ return this;
40
+ }
41
+ };
42
+ export function createSymbolTable(source) {
43
+ return new SymbolTable(source);
44
+ }
45
+ export function createBinder(program) {
46
+ let currentFile;
47
+ let parentNode;
48
+ let fileNamespace;
49
+ let scope;
50
+ // tracks which selectors were used with which projection symbols
51
+ // for reporting duplicates
52
+ const projectionSymbolSelectors = new Map();
53
+ return {
54
+ bindSourceFile,
55
+ bindJsSourceFile,
56
+ bindNode,
57
+ };
58
+ function isFunctionName(name) {
59
+ return DecoratorFunctionPattern.test(name);
60
+ }
61
+ function getFunctionName(name) {
62
+ return name.replace(DecoratorFunctionPattern, "");
63
+ }
64
+ function bindJsSourceFile(sourceFile) {
65
+ // cast because it causes TS to make the type of .symbol never other
66
+ if (sourceFile.symbol !== undefined) {
67
+ return;
68
+ }
69
+ const tracer = program.tracer.sub("bind.js");
70
+ fileNamespace = undefined;
71
+ mutate(sourceFile).symbol = createSymbol(sourceFile, sourceFile.file.path, 2097152 /* SymbolFlags.SourceFile */);
72
+ const rootNs = sourceFile.esmExports["namespace"];
73
+ for (const [key, member] of Object.entries(sourceFile.esmExports)) {
74
+ let name;
75
+ let kind;
76
+ let containerSymbol = sourceFile.symbol;
77
+ if (typeof member === "function") {
78
+ // lots of 'any' casts here because control flow narrowing `member` to Function
79
+ // isn't particularly useful it turns out.
80
+ if (isFunctionName(key)) {
81
+ name = getFunctionName(key);
82
+ kind = "decorator";
83
+ if (name === "onValidate") {
84
+ program.onValidate(member);
85
+ continue;
86
+ }
87
+ else if (name === "onEmit") {
88
+ // nothing to do here this is loaded as emitter.
89
+ continue;
90
+ }
91
+ }
92
+ else {
93
+ name = key;
94
+ kind = "function";
95
+ }
96
+ const memberNs = member.namespace;
97
+ const nsParts = [];
98
+ if (rootNs) {
99
+ nsParts.push(...rootNs.split("."));
100
+ }
101
+ if (memberNs) {
102
+ nsParts.push(...memberNs.split("."));
103
+ }
104
+ for (const part of nsParts) {
105
+ const existingBinding = containerSymbol.exports.get(part);
106
+ if (existingBinding) {
107
+ if (existingBinding.flags & 4096 /* SymbolFlags.Namespace */) {
108
+ // since the namespace was "declared" as part of this source file,
109
+ // we can simply re-use it.
110
+ containerSymbol = existingBinding;
111
+ }
112
+ else {
113
+ // we have some conflict, lets report a duplicate binding error.
114
+ mutate(containerSymbol.exports).set(part, createSymbol(sourceFile, part, 4096 /* SymbolFlags.Namespace */, containerSymbol));
115
+ }
116
+ }
117
+ else {
118
+ const sym = createSymbol(sourceFile, part, 4096 /* SymbolFlags.Namespace */, containerSymbol);
119
+ mutate(sym).exports = createSymbolTable();
120
+ mutate(containerSymbol.exports).set(part, sym);
121
+ containerSymbol = sym;
122
+ }
123
+ }
124
+ let sym;
125
+ if (kind === "decorator") {
126
+ tracer.trace("decorator", `Bound decorator "@${name}" in namespace "${nsParts.join(".")}".`);
127
+ sym = createSymbol(sourceFile, "@" + name, 16384 /* SymbolFlags.Decorator */ | 8388608 /* SymbolFlags.Implementation */, containerSymbol);
128
+ }
129
+ else {
130
+ tracer.trace("function", `Bound function "${name}" in namespace "${nsParts.join(".")}".`);
131
+ sym = createSymbol(sourceFile, name, 131072 /* SymbolFlags.Function */ | 8388608 /* SymbolFlags.Implementation */, containerSymbol);
132
+ }
133
+ mutate(sym).value = member;
134
+ mutate(containerSymbol.exports).set(sym.name, sym);
135
+ }
136
+ }
137
+ }
138
+ function bindSourceFile(script) {
139
+ if (script.locals !== undefined) {
140
+ return;
141
+ }
142
+ mutate(script).locals = createSymbolTable();
143
+ mutate(script).symbol = createSymbol(script, script.file.path, 2097152 /* SymbolFlags.SourceFile */);
144
+ mutate(script.symbol).exports = createSymbolTable();
145
+ fileNamespace = undefined;
146
+ currentFile = script;
147
+ scope = script;
148
+ bindNode(script);
149
+ }
150
+ function bindNode(node) {
151
+ if (!node)
152
+ return;
153
+ // set the node's parent since we're going for a walk anyway
154
+ mutate(node).parent = parentNode;
155
+ switch (node.kind) {
156
+ case SyntaxKind.ModelStatement:
157
+ bindModelStatement(node);
158
+ break;
159
+ case SyntaxKind.ScalarStatement:
160
+ bindScalarStatement(node);
161
+ break;
162
+ case SyntaxKind.InterfaceStatement:
163
+ bindInterfaceStatement(node);
164
+ break;
165
+ case SyntaxKind.UnionStatement:
166
+ bindUnionStatement(node);
167
+ break;
168
+ case SyntaxKind.AliasStatement:
169
+ bindAliasStatement(node);
170
+ break;
171
+ case SyntaxKind.EnumStatement:
172
+ bindEnumStatement(node);
173
+ break;
174
+ case SyntaxKind.NamespaceStatement:
175
+ bindNamespaceStatement(node);
176
+ break;
177
+ case SyntaxKind.OperationStatement:
178
+ bindOperationStatement(node);
179
+ break;
180
+ case SyntaxKind.TemplateParameterDeclaration:
181
+ bindTemplateParameterDeclaration(node);
182
+ break;
183
+ case SyntaxKind.UsingStatement:
184
+ bindUsingStatement(node);
185
+ break;
186
+ case SyntaxKind.DecoratorDeclarationStatement:
187
+ bindDecoratorDeclarationStatement(node);
188
+ break;
189
+ case SyntaxKind.FunctionDeclarationStatement:
190
+ bindFunctionDeclarationStatement(node);
191
+ break;
192
+ case SyntaxKind.FunctionParameter:
193
+ bindFunctionParameter(node);
194
+ break;
195
+ case SyntaxKind.Projection:
196
+ bindProjection(node);
197
+ break;
198
+ case SyntaxKind.ProjectionStatement:
199
+ bindProjectionStatement(node);
200
+ break;
201
+ case SyntaxKind.ProjectionParameterDeclaration:
202
+ bindProjectionParameterDeclaration(node);
203
+ break;
204
+ case SyntaxKind.ProjectionLambdaParameterDeclaration:
205
+ bindProjectionLambdaParameterDeclaration(node);
206
+ break;
207
+ case SyntaxKind.ProjectionLambdaExpression:
208
+ bindProjectionLambdaExpression(node);
209
+ }
210
+ const prevParent = parentNode;
211
+ // set parent node when we walk into children
212
+ parentNode = node;
213
+ if (hasScope(node)) {
214
+ const prevScope = scope;
215
+ scope = node;
216
+ visitChildren(node, bindNode);
217
+ if ("locals" in node) {
218
+ program.reportDuplicateSymbols(node.locals);
219
+ }
220
+ scope = prevScope;
221
+ }
222
+ else {
223
+ visitChildren(node, bindNode);
224
+ }
225
+ // restore parent node
226
+ parentNode = prevParent;
227
+ }
228
+ function bindProjection(node) {
229
+ mutate(node).locals = createSymbolTable();
230
+ }
231
+ /**
232
+ * Binding projection statements is interesting because there may be
233
+ * multiple declarations spread across various source files that all
234
+ * contribute to the same symbol because they declare the same
235
+ * projection on different selectors.
236
+ *
237
+ * There is presently an issue where we do not check for duplicate
238
+ * projections when they're applied to a specific type. This could
239
+ * be done with ease in the checker during evaluation, but could
240
+ * probably instead be done in a post-bind phase - we just need
241
+ * all the symbols in place so we know if a projection was declared
242
+ * multiple times for the same symbol.
243
+ *
244
+ */
245
+ function bindProjectionStatement(node) {
246
+ const name = node.id.sv;
247
+ const table = scope.symbol
248
+ .exports;
249
+ let sym;
250
+ if (table.has(name)) {
251
+ sym = table.get(name);
252
+ if (!(sym.flags & 8192 /* SymbolFlags.Projection */)) {
253
+ // clashing with some other decl, report duplicate symbol
254
+ declareSymbol(node, 8192 /* SymbolFlags.Projection */);
255
+ return;
256
+ }
257
+ mutate(sym.declarations).push(node);
258
+ }
259
+ else {
260
+ sym = createSymbol(node, name, 8192 /* SymbolFlags.Projection */, scope.symbol);
261
+ mutate(table).set(name, sym);
262
+ }
263
+ mutate(node).symbol = sym;
264
+ if (node.selector.kind !== SyntaxKind.Identifier &&
265
+ node.selector.kind !== SyntaxKind.MemberExpression) {
266
+ const selectorString = node.selector.kind === SyntaxKind.ProjectionModelSelector
267
+ ? "model"
268
+ : node.selector.kind === SyntaxKind.ProjectionOperationSelector
269
+ ? "op"
270
+ : node.selector.kind === SyntaxKind.ProjectionUnionSelector
271
+ ? "union"
272
+ : node.selector.kind === SyntaxKind.ProjectionEnumSelector
273
+ ? "enum"
274
+ : "interface";
275
+ let existingSelectors = projectionSymbolSelectors.get(sym);
276
+ if (!existingSelectors) {
277
+ existingSelectors = new Set();
278
+ projectionSymbolSelectors.set(sym, existingSelectors);
279
+ }
280
+ if (existingSelectors.has(selectorString)) {
281
+ // clashing with a like-named decl with this selector, so throw.
282
+ declareSymbol(node, 8192 /* SymbolFlags.Projection */);
283
+ return;
284
+ }
285
+ existingSelectors.add(selectorString);
286
+ }
287
+ }
288
+ function bindProjectionParameterDeclaration(node) {
289
+ declareSymbol(node, 65536 /* SymbolFlags.ProjectionParameter */);
290
+ }
291
+ function bindProjectionLambdaParameterDeclaration(node) {
292
+ declareSymbol(node, 262144 /* SymbolFlags.FunctionParameter */);
293
+ }
294
+ function bindProjectionLambdaExpression(node) {
295
+ mutate(node).locals = new SymbolTable();
296
+ }
297
+ function bindTemplateParameterDeclaration(node) {
298
+ declareSymbol(node, 32768 /* SymbolFlags.TemplateParameter */);
299
+ }
300
+ function bindModelStatement(node) {
301
+ declareSymbol(node, 2 /* SymbolFlags.Model */);
302
+ // Initialize locals for type parameters
303
+ mutate(node).locals = new SymbolTable();
304
+ }
305
+ function bindScalarStatement(node) {
306
+ declareSymbol(node, 8 /* SymbolFlags.Scalar */);
307
+ // Initialize locals for type parameters
308
+ mutate(node).locals = new SymbolTable();
309
+ }
310
+ function bindInterfaceStatement(node) {
311
+ declareSymbol(node, 128 /* SymbolFlags.Interface */);
312
+ mutate(node).locals = new SymbolTable();
313
+ }
314
+ function bindUnionStatement(node) {
315
+ declareSymbol(node, 512 /* SymbolFlags.Union */);
316
+ mutate(node).locals = new SymbolTable();
317
+ }
318
+ function bindAliasStatement(node) {
319
+ declareSymbol(node, 2048 /* SymbolFlags.Alias */);
320
+ // Initialize locals for type parameters
321
+ mutate(node).locals = new SymbolTable();
322
+ }
323
+ function bindEnumStatement(node) {
324
+ declareSymbol(node, 32 /* SymbolFlags.Enum */);
325
+ }
326
+ function bindNamespaceStatement(statement) {
327
+ // check if there's an existing symbol for this namespace
328
+ const existingBinding = scope.symbol.exports.get(statement.id.sv);
329
+ if (existingBinding && existingBinding.flags & 4096 /* SymbolFlags.Namespace */) {
330
+ mutate(statement).symbol = existingBinding;
331
+ // locals are never shared.
332
+ mutate(statement).locals = createSymbolTable();
333
+ mutate(existingBinding.declarations).push(statement);
334
+ }
335
+ else {
336
+ // Initialize locals for non-exported symbols
337
+ mutate(statement).locals = createSymbolTable();
338
+ declareSymbol(statement, 4096 /* SymbolFlags.Namespace */);
339
+ }
340
+ currentFile.namespaces.push(statement);
341
+ if (statement.statements === undefined) {
342
+ fileNamespace = statement;
343
+ let current = statement;
344
+ while (current.kind !== SyntaxKind.TypeSpecScript) {
345
+ currentFile.inScopeNamespaces.push(current);
346
+ current = current.parent;
347
+ }
348
+ }
349
+ }
350
+ function bindUsingStatement(statement) {
351
+ mutate(currentFile.usings).push(statement);
352
+ }
353
+ function bindOperationStatement(statement) {
354
+ if (scope.kind !== SyntaxKind.InterfaceStatement) {
355
+ declareSymbol(statement, 16 /* SymbolFlags.Operation */);
356
+ }
357
+ mutate(statement).locals = createSymbolTable();
358
+ }
359
+ function bindDecoratorDeclarationStatement(node) {
360
+ declareSymbol(node, 16384 /* SymbolFlags.Decorator */ | 4194304 /* SymbolFlags.Declaration */, `@${node.id.sv}`);
361
+ }
362
+ function bindFunctionDeclarationStatement(node) {
363
+ declareSymbol(node, 131072 /* SymbolFlags.Function */ | 4194304 /* SymbolFlags.Declaration */);
364
+ }
365
+ function bindFunctionParameter(node) {
366
+ const symbol = createSymbol(node, node.id.sv, 262144 /* SymbolFlags.FunctionParameter */, scope.symbol);
367
+ mutate(node).symbol = symbol;
368
+ }
369
+ function declareSymbol(node, flags, name) {
370
+ switch (scope.kind) {
371
+ case SyntaxKind.NamespaceStatement:
372
+ return declareNamespaceMember(node, flags, name);
373
+ case SyntaxKind.TypeSpecScript:
374
+ case SyntaxKind.JsSourceFile:
375
+ return declareScriptMember(node, flags, name);
376
+ default:
377
+ const key = name !== null && name !== void 0 ? name : node.id.sv;
378
+ const symbol = createSymbol(node, key, flags, scope.symbol);
379
+ mutate(node).symbol = symbol;
380
+ mutate(scope.locals).set(key, symbol);
381
+ return symbol;
382
+ }
383
+ }
384
+ function declareNamespaceMember(node, flags, name) {
385
+ if (flags & 4096 /* SymbolFlags.Namespace */ &&
386
+ mergeNamespaceDeclarations(node, scope)) {
387
+ return;
388
+ }
389
+ const key = name !== null && name !== void 0 ? name : node.id.sv;
390
+ const symbol = createSymbol(node, key, flags, scope.symbol);
391
+ mutate(node).symbol = symbol;
392
+ mutate(scope.symbol.exports).set(key, symbol);
393
+ return symbol;
394
+ }
395
+ function declareScriptMember(node, flags, name) {
396
+ const effectiveScope = fileNamespace !== null && fileNamespace !== void 0 ? fileNamespace : scope;
397
+ if (flags & 4096 /* SymbolFlags.Namespace */ &&
398
+ mergeNamespaceDeclarations(node, effectiveScope)) {
399
+ return;
400
+ }
401
+ const key = name !== null && name !== void 0 ? name : node.id.sv;
402
+ const symbol = createSymbol(node, key, flags, fileNamespace === null || fileNamespace === void 0 ? void 0 : fileNamespace.symbol);
403
+ mutate(node).symbol = symbol;
404
+ mutate(effectiveScope.symbol.exports).set(key, symbol);
405
+ return symbol;
406
+ }
407
+ function mergeNamespaceDeclarations(node, scope) {
408
+ // we are declaring a namespace in either global scope, or a blockless namespace.
409
+ const existingBinding = scope.symbol.exports.get(node.id.sv);
410
+ if (existingBinding && existingBinding.flags & 4096 /* SymbolFlags.Namespace */) {
411
+ // we have an existing binding, so just push this node to its declarations
412
+ mutate(existingBinding.declarations).push(node);
413
+ mutate(node).symbol = existingBinding;
414
+ return true;
415
+ }
416
+ return false;
417
+ }
418
+ }
419
+ function hasScope(node) {
420
+ switch (node.kind) {
421
+ case SyntaxKind.ModelStatement:
422
+ case SyntaxKind.AliasStatement:
423
+ case SyntaxKind.TypeSpecScript:
424
+ case SyntaxKind.InterfaceStatement:
425
+ case SyntaxKind.OperationStatement:
426
+ case SyntaxKind.UnionStatement:
427
+ case SyntaxKind.Projection:
428
+ case SyntaxKind.ProjectionLambdaExpression:
429
+ return true;
430
+ case SyntaxKind.NamespaceStatement:
431
+ return node.statements !== undefined;
432
+ default:
433
+ return false;
434
+ }
435
+ }
436
+ export function createSymbol(node, name, flags, parent, value) {
437
+ let exports;
438
+ if (flags & 2101248 /* SymbolFlags.ExportContainer */) {
439
+ exports = createSymbolTable();
440
+ }
441
+ let members;
442
+ if (flags & 674 /* SymbolFlags.MemberContainer */) {
443
+ members = createSymbolTable();
444
+ }
445
+ return {
446
+ declarations: node ? [node] : [],
447
+ name,
448
+ exports,
449
+ members,
450
+ flags,
451
+ value,
452
+ parent,
453
+ };
454
+ }
455
+ //# sourceMappingURL=binder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binder.js","sourceRoot":"","sources":["../../core/binder.ts"],"names":[],"mappings":"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"}