@singapore-editor/typescript-lsp 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (297) hide show
  1. package/README.md +60 -0
  2. package/dist/assets/lib.d-DwhWWR8Z.js +6 -0
  3. package/dist/assets/lib.d-DwhWWR8Z.js.map +1 -0
  4. package/dist/assets/lib.decorators.d-DuSR_GRf.js +6 -0
  5. package/dist/assets/lib.decorators.d-DuSR_GRf.js.map +1 -0
  6. package/dist/assets/lib.decorators.legacy.d-B-dDdcGG.js +6 -0
  7. package/dist/assets/lib.decorators.legacy.d-B-dDdcGG.js.map +1 -0
  8. package/dist/assets/lib.dom.asynciterable.d-_FO6ryQN.js +6 -0
  9. package/dist/assets/lib.dom.asynciterable.d-_FO6ryQN.js.map +1 -0
  10. package/dist/assets/lib.dom.d-FmoblYYX.js +6 -0
  11. package/dist/assets/lib.dom.d-FmoblYYX.js.map +1 -0
  12. package/dist/assets/lib.dom.iterable.d-ByLwU5Nr.js +6 -0
  13. package/dist/assets/lib.dom.iterable.d-ByLwU5Nr.js.map +1 -0
  14. package/dist/assets/lib.es2015.collection.d-Cn7GxvBn.js +6 -0
  15. package/dist/assets/lib.es2015.collection.d-Cn7GxvBn.js.map +1 -0
  16. package/dist/assets/lib.es2015.core.d-CEe5-Olc.js +6 -0
  17. package/dist/assets/lib.es2015.core.d-CEe5-Olc.js.map +1 -0
  18. package/dist/assets/lib.es2015.d-D32bg7tQ.js +6 -0
  19. package/dist/assets/lib.es2015.d-D32bg7tQ.js.map +1 -0
  20. package/dist/assets/lib.es2015.generator.d-dVupUz58.js +6 -0
  21. package/dist/assets/lib.es2015.generator.d-dVupUz58.js.map +1 -0
  22. package/dist/assets/lib.es2015.iterable.d-C7bZJblq.js +6 -0
  23. package/dist/assets/lib.es2015.iterable.d-C7bZJblq.js.map +1 -0
  24. package/dist/assets/lib.es2015.promise.d-IkGeTpDc.js +6 -0
  25. package/dist/assets/lib.es2015.promise.d-IkGeTpDc.js.map +1 -0
  26. package/dist/assets/lib.es2015.proxy.d-D0hDQX0s.js +6 -0
  27. package/dist/assets/lib.es2015.proxy.d-D0hDQX0s.js.map +1 -0
  28. package/dist/assets/lib.es2015.reflect.d-Civj_UqB.js +6 -0
  29. package/dist/assets/lib.es2015.reflect.d-Civj_UqB.js.map +1 -0
  30. package/dist/assets/lib.es2015.symbol.d-DsPpWPoL.js +6 -0
  31. package/dist/assets/lib.es2015.symbol.d-DsPpWPoL.js.map +1 -0
  32. package/dist/assets/lib.es2015.symbol.wellknown.d-BYA6t3Ou.js +6 -0
  33. package/dist/assets/lib.es2015.symbol.wellknown.d-BYA6t3Ou.js.map +1 -0
  34. package/dist/assets/lib.es2016.array.include.d-C2VMejUq.js +6 -0
  35. package/dist/assets/lib.es2016.array.include.d-C2VMejUq.js.map +1 -0
  36. package/dist/assets/lib.es2016.d-BAvWL1yx.js +6 -0
  37. package/dist/assets/lib.es2016.d-BAvWL1yx.js.map +1 -0
  38. package/dist/assets/lib.es2016.full.d-CpWlQUaG.js +6 -0
  39. package/dist/assets/lib.es2016.full.d-CpWlQUaG.js.map +1 -0
  40. package/dist/assets/lib.es2016.intl.d-BfaDvaD_.js +6 -0
  41. package/dist/assets/lib.es2016.intl.d-BfaDvaD_.js.map +1 -0
  42. package/dist/assets/lib.es2017.arraybuffer.d-BELbsRS9.js +6 -0
  43. package/dist/assets/lib.es2017.arraybuffer.d-BELbsRS9.js.map +1 -0
  44. package/dist/assets/lib.es2017.d-DuXequj2.js +6 -0
  45. package/dist/assets/lib.es2017.d-DuXequj2.js.map +1 -0
  46. package/dist/assets/lib.es2017.date.d-C0q0CGCg.js +6 -0
  47. package/dist/assets/lib.es2017.date.d-C0q0CGCg.js.map +1 -0
  48. package/dist/assets/lib.es2017.full.d-JLz-PuTJ.js +6 -0
  49. package/dist/assets/lib.es2017.full.d-JLz-PuTJ.js.map +1 -0
  50. package/dist/assets/lib.es2017.intl.d-DEp-bfPU.js +6 -0
  51. package/dist/assets/lib.es2017.intl.d-DEp-bfPU.js.map +1 -0
  52. package/dist/assets/lib.es2017.object.d-DF15QOh6.js +6 -0
  53. package/dist/assets/lib.es2017.object.d-DF15QOh6.js.map +1 -0
  54. package/dist/assets/lib.es2017.sharedmemory.d-MqnPgaR9.js +6 -0
  55. package/dist/assets/lib.es2017.sharedmemory.d-MqnPgaR9.js.map +1 -0
  56. package/dist/assets/lib.es2017.string.d-DwuC1fbX.js +6 -0
  57. package/dist/assets/lib.es2017.string.d-DwuC1fbX.js.map +1 -0
  58. package/dist/assets/lib.es2017.typedarrays.d-CpxkvFtX.js +6 -0
  59. package/dist/assets/lib.es2017.typedarrays.d-CpxkvFtX.js.map +1 -0
  60. package/dist/assets/lib.es2018.asyncgenerator.d-Wkg7fB38.js +6 -0
  61. package/dist/assets/lib.es2018.asyncgenerator.d-Wkg7fB38.js.map +1 -0
  62. package/dist/assets/lib.es2018.asynciterable.d-BvEk_5iX.js +6 -0
  63. package/dist/assets/lib.es2018.asynciterable.d-BvEk_5iX.js.map +1 -0
  64. package/dist/assets/lib.es2018.d-BXVwdGZO.js +6 -0
  65. package/dist/assets/lib.es2018.d-BXVwdGZO.js.map +1 -0
  66. package/dist/assets/lib.es2018.full.d-B4RmLSI2.js +6 -0
  67. package/dist/assets/lib.es2018.full.d-B4RmLSI2.js.map +1 -0
  68. package/dist/assets/lib.es2018.intl.d-BvDGuNYR.js +6 -0
  69. package/dist/assets/lib.es2018.intl.d-BvDGuNYR.js.map +1 -0
  70. package/dist/assets/lib.es2018.promise.d-YpJpwYZt.js +6 -0
  71. package/dist/assets/lib.es2018.promise.d-YpJpwYZt.js.map +1 -0
  72. package/dist/assets/lib.es2018.regexp.d-DyHDHf4h.js +6 -0
  73. package/dist/assets/lib.es2018.regexp.d-DyHDHf4h.js.map +1 -0
  74. package/dist/assets/lib.es2019.array.d-1R2LMNDY.js +6 -0
  75. package/dist/assets/lib.es2019.array.d-1R2LMNDY.js.map +1 -0
  76. package/dist/assets/lib.es2019.d-Bm-cqGUH.js +6 -0
  77. package/dist/assets/lib.es2019.d-Bm-cqGUH.js.map +1 -0
  78. package/dist/assets/lib.es2019.full.d-CffTH14l.js +6 -0
  79. package/dist/assets/lib.es2019.full.d-CffTH14l.js.map +1 -0
  80. package/dist/assets/lib.es2019.intl.d-BwWDxo8Q.js +6 -0
  81. package/dist/assets/lib.es2019.intl.d-BwWDxo8Q.js.map +1 -0
  82. package/dist/assets/lib.es2019.object.d-DrUh3ccl.js +6 -0
  83. package/dist/assets/lib.es2019.object.d-DrUh3ccl.js.map +1 -0
  84. package/dist/assets/lib.es2019.string.d-BwcA52yE.js +6 -0
  85. package/dist/assets/lib.es2019.string.d-BwcA52yE.js.map +1 -0
  86. package/dist/assets/lib.es2019.symbol.d-D3ev_C6r.js +6 -0
  87. package/dist/assets/lib.es2019.symbol.d-D3ev_C6r.js.map +1 -0
  88. package/dist/assets/lib.es2020.bigint.d-CsEdGRdM.js +6 -0
  89. package/dist/assets/lib.es2020.bigint.d-CsEdGRdM.js.map +1 -0
  90. package/dist/assets/lib.es2020.d-BLkjC8-i.js +6 -0
  91. package/dist/assets/lib.es2020.d-BLkjC8-i.js.map +1 -0
  92. package/dist/assets/lib.es2020.date.d-DwjUBhDu.js +6 -0
  93. package/dist/assets/lib.es2020.date.d-DwjUBhDu.js.map +1 -0
  94. package/dist/assets/lib.es2020.full.d-HlsaXVND.js +6 -0
  95. package/dist/assets/lib.es2020.full.d-HlsaXVND.js.map +1 -0
  96. package/dist/assets/lib.es2020.intl.d-CDBQbuQi.js +6 -0
  97. package/dist/assets/lib.es2020.intl.d-CDBQbuQi.js.map +1 -0
  98. package/dist/assets/lib.es2020.number.d-CpXrxse_.js +6 -0
  99. package/dist/assets/lib.es2020.number.d-CpXrxse_.js.map +1 -0
  100. package/dist/assets/lib.es2020.promise.d-DR0sx4yx.js +6 -0
  101. package/dist/assets/lib.es2020.promise.d-DR0sx4yx.js.map +1 -0
  102. package/dist/assets/lib.es2020.sharedmemory.d-8MrR7EO9.js +6 -0
  103. package/dist/assets/lib.es2020.sharedmemory.d-8MrR7EO9.js.map +1 -0
  104. package/dist/assets/lib.es2020.string.d-BI6oDFA_.js +6 -0
  105. package/dist/assets/lib.es2020.string.d-BI6oDFA_.js.map +1 -0
  106. package/dist/assets/lib.es2020.symbol.wellknown.d-ORwr4Bzq.js +6 -0
  107. package/dist/assets/lib.es2020.symbol.wellknown.d-ORwr4Bzq.js.map +1 -0
  108. package/dist/assets/lib.es2021.d-CNcCFNpS.js +6 -0
  109. package/dist/assets/lib.es2021.d-CNcCFNpS.js.map +1 -0
  110. package/dist/assets/lib.es2021.full.d-DTy0Vh8p.js +6 -0
  111. package/dist/assets/lib.es2021.full.d-DTy0Vh8p.js.map +1 -0
  112. package/dist/assets/lib.es2021.intl.d-CrCTzh3D.js +6 -0
  113. package/dist/assets/lib.es2021.intl.d-CrCTzh3D.js.map +1 -0
  114. package/dist/assets/lib.es2021.promise.d-BzlY8AcN.js +6 -0
  115. package/dist/assets/lib.es2021.promise.d-BzlY8AcN.js.map +1 -0
  116. package/dist/assets/lib.es2021.string.d-DIlLhmID.js +6 -0
  117. package/dist/assets/lib.es2021.string.d-DIlLhmID.js.map +1 -0
  118. package/dist/assets/lib.es2021.weakref.d-QzlMigs1.js +6 -0
  119. package/dist/assets/lib.es2021.weakref.d-QzlMigs1.js.map +1 -0
  120. package/dist/assets/lib.es2022.array.d-D5QvdSDD.js +6 -0
  121. package/dist/assets/lib.es2022.array.d-D5QvdSDD.js.map +1 -0
  122. package/dist/assets/lib.es2022.d-B09f-wCO.js +6 -0
  123. package/dist/assets/lib.es2022.d-B09f-wCO.js.map +1 -0
  124. package/dist/assets/lib.es2022.error.d-ErJH7uZr.js +6 -0
  125. package/dist/assets/lib.es2022.error.d-ErJH7uZr.js.map +1 -0
  126. package/dist/assets/lib.es2022.full.d-BwSEmz18.js +6 -0
  127. package/dist/assets/lib.es2022.full.d-BwSEmz18.js.map +1 -0
  128. package/dist/assets/lib.es2022.intl.d-BEoK-I_u.js +6 -0
  129. package/dist/assets/lib.es2022.intl.d-BEoK-I_u.js.map +1 -0
  130. package/dist/assets/lib.es2022.object.d-DsEI5S2q.js +6 -0
  131. package/dist/assets/lib.es2022.object.d-DsEI5S2q.js.map +1 -0
  132. package/dist/assets/lib.es2022.regexp.d-CUlcf2UB.js +6 -0
  133. package/dist/assets/lib.es2022.regexp.d-CUlcf2UB.js.map +1 -0
  134. package/dist/assets/lib.es2022.string.d-ILMy0npm.js +6 -0
  135. package/dist/assets/lib.es2022.string.d-ILMy0npm.js.map +1 -0
  136. package/dist/assets/lib.es2023.array.d-GeAK2at2.js +6 -0
  137. package/dist/assets/lib.es2023.array.d-GeAK2at2.js.map +1 -0
  138. package/dist/assets/lib.es2023.collection.d-p3gBlGib.js +6 -0
  139. package/dist/assets/lib.es2023.collection.d-p3gBlGib.js.map +1 -0
  140. package/dist/assets/lib.es2023.d-4j237g35.js +6 -0
  141. package/dist/assets/lib.es2023.d-4j237g35.js.map +1 -0
  142. package/dist/assets/lib.es2023.full.d-oRGXreDe.js +6 -0
  143. package/dist/assets/lib.es2023.full.d-oRGXreDe.js.map +1 -0
  144. package/dist/assets/lib.es2023.intl.d-CtTPndlG.js +6 -0
  145. package/dist/assets/lib.es2023.intl.d-CtTPndlG.js.map +1 -0
  146. package/dist/assets/lib.es2024.arraybuffer.d-DimtN4hG.js +6 -0
  147. package/dist/assets/lib.es2024.arraybuffer.d-DimtN4hG.js.map +1 -0
  148. package/dist/assets/lib.es2024.collection.d-DuFWux5x.js +6 -0
  149. package/dist/assets/lib.es2024.collection.d-DuFWux5x.js.map +1 -0
  150. package/dist/assets/lib.es2024.d-Bc4hm-li.js +6 -0
  151. package/dist/assets/lib.es2024.d-Bc4hm-li.js.map +1 -0
  152. package/dist/assets/lib.es2024.full.d-NcbrywaK.js +6 -0
  153. package/dist/assets/lib.es2024.full.d-NcbrywaK.js.map +1 -0
  154. package/dist/assets/lib.es2024.object.d-Defz7Oqn.js +6 -0
  155. package/dist/assets/lib.es2024.object.d-Defz7Oqn.js.map +1 -0
  156. package/dist/assets/lib.es2024.promise.d-DOyC5VIh.js +6 -0
  157. package/dist/assets/lib.es2024.promise.d-DOyC5VIh.js.map +1 -0
  158. package/dist/assets/lib.es2024.regexp.d-DBmYnpDO.js +6 -0
  159. package/dist/assets/lib.es2024.regexp.d-DBmYnpDO.js.map +1 -0
  160. package/dist/assets/lib.es2024.sharedmemory.d-CM9RzBcy.js +6 -0
  161. package/dist/assets/lib.es2024.sharedmemory.d-CM9RzBcy.js.map +1 -0
  162. package/dist/assets/lib.es2024.string.d-CBDt9d69.js +6 -0
  163. package/dist/assets/lib.es2024.string.d-CBDt9d69.js.map +1 -0
  164. package/dist/assets/lib.es2025.collection.d-CsJViaMe.js +6 -0
  165. package/dist/assets/lib.es2025.collection.d-CsJViaMe.js.map +1 -0
  166. package/dist/assets/lib.es2025.d-De4KdpN7.js +6 -0
  167. package/dist/assets/lib.es2025.d-De4KdpN7.js.map +1 -0
  168. package/dist/assets/lib.es2025.float16.d-HHOhRN2_.js +6 -0
  169. package/dist/assets/lib.es2025.float16.d-HHOhRN2_.js.map +1 -0
  170. package/dist/assets/lib.es2025.full.d-BYMP75tw.js +6 -0
  171. package/dist/assets/lib.es2025.full.d-BYMP75tw.js.map +1 -0
  172. package/dist/assets/lib.es2025.intl.d-DOt7rg8n.js +6 -0
  173. package/dist/assets/lib.es2025.intl.d-DOt7rg8n.js.map +1 -0
  174. package/dist/assets/lib.es2025.iterator.d-u_YfGeZS.js +6 -0
  175. package/dist/assets/lib.es2025.iterator.d-u_YfGeZS.js.map +1 -0
  176. package/dist/assets/lib.es2025.promise.d-UjV5L1SF.js +6 -0
  177. package/dist/assets/lib.es2025.promise.d-UjV5L1SF.js.map +1 -0
  178. package/dist/assets/lib.es2025.regexp.d-Cbb7_cyW.js +6 -0
  179. package/dist/assets/lib.es2025.regexp.d-Cbb7_cyW.js.map +1 -0
  180. package/dist/assets/lib.es5.d-C0w_nusg.js +6 -0
  181. package/dist/assets/lib.es5.d-C0w_nusg.js.map +1 -0
  182. package/dist/assets/lib.es6.d-BQntavOa.js +6 -0
  183. package/dist/assets/lib.es6.d-BQntavOa.js.map +1 -0
  184. package/dist/assets/lib.esnext.array.d-BK-E6Aii.js +6 -0
  185. package/dist/assets/lib.esnext.array.d-BK-E6Aii.js.map +1 -0
  186. package/dist/assets/lib.esnext.collection.d-Caob5U_3.js +6 -0
  187. package/dist/assets/lib.esnext.collection.d-Caob5U_3.js.map +1 -0
  188. package/dist/assets/lib.esnext.d-9bo74I0B.js +6 -0
  189. package/dist/assets/lib.esnext.d-9bo74I0B.js.map +1 -0
  190. package/dist/assets/lib.esnext.date.d-Bkhf31hB.js +6 -0
  191. package/dist/assets/lib.esnext.date.d-Bkhf31hB.js.map +1 -0
  192. package/dist/assets/lib.esnext.decorators.d-CkUHBEKX.js +6 -0
  193. package/dist/assets/lib.esnext.decorators.d-CkUHBEKX.js.map +1 -0
  194. package/dist/assets/lib.esnext.disposable.d-CdKd172C.js +6 -0
  195. package/dist/assets/lib.esnext.disposable.d-CdKd172C.js.map +1 -0
  196. package/dist/assets/lib.esnext.error.d-hRElv0o-.js +6 -0
  197. package/dist/assets/lib.esnext.error.d-hRElv0o-.js.map +1 -0
  198. package/dist/assets/lib.esnext.full.d-C5FEqlya.js +6 -0
  199. package/dist/assets/lib.esnext.full.d-C5FEqlya.js.map +1 -0
  200. package/dist/assets/lib.esnext.intl.d-5-FhAVp5.js +6 -0
  201. package/dist/assets/lib.esnext.intl.d-5-FhAVp5.js.map +1 -0
  202. package/dist/assets/lib.esnext.sharedmemory.d-NLKdJiUE.js +6 -0
  203. package/dist/assets/lib.esnext.sharedmemory.d-NLKdJiUE.js.map +1 -0
  204. package/dist/assets/lib.esnext.temporal.d-DEDOXuwe.js +6 -0
  205. package/dist/assets/lib.esnext.temporal.d-DEDOXuwe.js.map +1 -0
  206. package/dist/assets/lib.esnext.typedarrays.d-BTYT-3iT.js +6 -0
  207. package/dist/assets/lib.esnext.typedarrays.d-BTYT-3iT.js.map +1 -0
  208. package/dist/assets/lib.scripthost.d-BoWSdGmL.js +6 -0
  209. package/dist/assets/lib.scripthost.d-BoWSdGmL.js.map +1 -0
  210. package/dist/assets/lib.webworker.asynciterable.d-CArLMv6Z.js +6 -0
  211. package/dist/assets/lib.webworker.asynciterable.d-CArLMv6Z.js.map +1 -0
  212. package/dist/assets/lib.webworker.d-BckFvR1K.js +6 -0
  213. package/dist/assets/lib.webworker.d-BckFvR1K.js.map +1 -0
  214. package/dist/assets/lib.webworker.importscripts.d-Dq_4ibTw.js +6 -0
  215. package/dist/assets/lib.webworker.importscripts.d-Dq_4ibTw.js.map +1 -0
  216. package/dist/assets/lib.webworker.iterable.d-BnZb0_R7.js +6 -0
  217. package/dist/assets/lib.webworker.iterable.d-BnZb0_R7.js.map +1 -0
  218. package/dist/assets/typescriptLsp.worker-Dv5GKuEN.js +150440 -0
  219. package/dist/assets/typescriptLsp.worker-Dv5GKuEN.js.map +1 -0
  220. package/dist/index.d.ts +9 -0
  221. package/dist/index.d.ts.map +1 -0
  222. package/dist/index.js +6 -0
  223. package/dist/paths.d.ts +4 -0
  224. package/dist/paths.d.ts.map +1 -0
  225. package/dist/paths.js +34 -0
  226. package/dist/paths.js.map +1 -0
  227. package/dist/plugin.d.ts +29 -0
  228. package/dist/plugin.d.ts.map +1 -0
  229. package/dist/plugin.js +140 -0
  230. package/dist/plugin.js.map +1 -0
  231. package/dist/pluginWithWorker.d.ts +3 -0
  232. package/dist/pluginWithWorker.d.ts.map +1 -0
  233. package/dist/pluginWithWorker.js +13 -0
  234. package/dist/pluginWithWorker.js.map +1 -0
  235. package/dist/server.d.ts +14 -0
  236. package/dist/server.d.ts.map +1 -0
  237. package/dist/server.js +50 -0
  238. package/dist/server.js.map +1 -0
  239. package/dist/tsDiagnostics.d.ts +5 -0
  240. package/dist/tsDiagnostics.d.ts.map +1 -0
  241. package/dist/tsDiagnostics.js +46 -0
  242. package/dist/tsDiagnostics.js.map +1 -0
  243. package/dist/types.d.ts +78 -0
  244. package/dist/types.d.ts.map +1 -0
  245. package/dist/typescriptLsp.worker.d.ts +2 -0
  246. package/dist/typescriptLsp.worker.d.ts.map +1 -0
  247. package/dist/worker/bundledLibraries.d.ts +4 -0
  248. package/dist/worker/bundledLibraries.d.ts.map +1 -0
  249. package/dist/worker/codeActions.d.ts +5 -0
  250. package/dist/worker/codeActions.d.ts.map +1 -0
  251. package/dist/worker/completion.d.ts +11 -0
  252. package/dist/worker/completion.d.ts.map +1 -0
  253. package/dist/worker/context.d.ts +39 -0
  254. package/dist/worker/context.d.ts.map +1 -0
  255. package/dist/worker/customMethods.d.ts +10 -0
  256. package/dist/worker/customMethods.d.ts.map +1 -0
  257. package/dist/worker/customMethods.js +14 -0
  258. package/dist/worker/customMethods.js.map +1 -0
  259. package/dist/worker/diagnostics.d.ts +11 -0
  260. package/dist/worker/diagnostics.d.ts.map +1 -0
  261. package/dist/worker/edits.d.ts +10 -0
  262. package/dist/worker/edits.d.ts.map +1 -0
  263. package/dist/worker/formatting.d.ts +16 -0
  264. package/dist/worker/formatting.d.ts.map +1 -0
  265. package/dist/worker/hover.d.ts +7 -0
  266. package/dist/worker/hover.d.ts.map +1 -0
  267. package/dist/worker/libraries.d.ts +16 -0
  268. package/dist/worker/libraries.d.ts.map +1 -0
  269. package/dist/worker/lineIndex.d.ts +21 -0
  270. package/dist/worker/lineIndex.d.ts.map +1 -0
  271. package/dist/worker/navigation.d.ts +9 -0
  272. package/dist/worker/navigation.d.ts.map +1 -0
  273. package/dist/worker/project.d.ts +26 -0
  274. package/dist/worker/project.d.ts.map +1 -0
  275. package/dist/worker/projectHost.d.ts +29 -0
  276. package/dist/worker/projectHost.d.ts.map +1 -0
  277. package/dist/worker/protocol.d.ts +29 -0
  278. package/dist/worker/protocol.d.ts.map +1 -0
  279. package/dist/worker/rename.d.ts +9 -0
  280. package/dist/worker/rename.d.ts.map +1 -0
  281. package/dist/worker/semanticTokens.d.ts +47 -0
  282. package/dist/worker/semanticTokens.d.ts.map +1 -0
  283. package/dist/worker/session.d.ts +14 -0
  284. package/dist/worker/session.d.ts.map +1 -0
  285. package/dist/worker/signatureHelp.d.ts +10 -0
  286. package/dist/worker/signatureHelp.d.ts.map +1 -0
  287. package/dist/worker/symbols.d.ts +10 -0
  288. package/dist/worker/symbols.d.ts.map +1 -0
  289. package/dist/workerOwner.d.ts +44 -0
  290. package/dist/workerOwner.d.ts.map +1 -0
  291. package/dist/workerOwner.js +143 -0
  292. package/dist/workerOwner.js.map +1 -0
  293. package/dist/workspace.d.ts +20 -0
  294. package/dist/workspace.d.ts.map +1 -0
  295. package/dist/workspace.js +74 -0
  296. package/dist/workspace.js.map +1 -0
  297. package/package.json +59 -0
@@ -0,0 +1,143 @@
1
+ import { LSP_SERVER_EXITED } from "@singapore-editor/lsp";
2
+ //#region src/workerOwner.ts
3
+ var TypeScriptLspWorkerOwner = class {
4
+ options;
5
+ listeners = {
6
+ message: /* @__PURE__ */ new Set(),
7
+ error: /* @__PURE__ */ new Set()
8
+ };
9
+ worker = null;
10
+ lifecycle = "ready";
11
+ postedMessages = 0;
12
+ lastError = null;
13
+ constructor(options = {}) {
14
+ this.options = options;
15
+ this.worker = this.createWorker();
16
+ }
17
+ inspect() {
18
+ return {
19
+ lifecycle: this.lifecycle,
20
+ postedMessages: this.postedMessages,
21
+ messageListeners: this.listeners.message.size,
22
+ errorListeners: this.listeners.error.size,
23
+ lastError: this.lastError?.message ?? null
24
+ };
25
+ }
26
+ postMessage(message) {
27
+ const handle = this.worker;
28
+ if (!this.canPost(handle)) throw new Error("TypeScript LSP worker is not available");
29
+ this.postedMessages += 1;
30
+ try {
31
+ handle.postMessage(message);
32
+ } catch (error) {
33
+ const normalized = workerError(error);
34
+ this.fail(normalized, errorEvent(normalized));
35
+ throw normalized;
36
+ }
37
+ }
38
+ addEventListener(type, handler) {
39
+ this.listeners[type].add(handler);
40
+ }
41
+ removeEventListener(type, handler) {
42
+ this.listeners[type].delete(handler);
43
+ }
44
+ terminate() {
45
+ if (this.lifecycle === "disposed") return;
46
+ this.lifecycle = "disposed";
47
+ this.detachWorker();
48
+ this.terminateWorker();
49
+ this.clearListeners();
50
+ }
51
+ dispose() {
52
+ this.terminate();
53
+ }
54
+ createWorker() {
55
+ const handle = (this.options.workerFactory ?? defaultWorkerFactory)();
56
+ handle.addEventListener("message", this.handleMessage);
57
+ handle.addEventListener("error", this.handleError);
58
+ return handle;
59
+ }
60
+ canPost(handle) {
61
+ if (!handle) return false;
62
+ return this.lifecycle === "ready";
63
+ }
64
+ handleMessage = (event) => {
65
+ if (this.lifecycle !== "ready") return;
66
+ for (const listener of this.listeners.message) listener(event);
67
+ };
68
+ handleError = (event) => {
69
+ this.fail(workerEventError(event), event);
70
+ };
71
+ fail(error, event) {
72
+ if (this.lifecycle === "disposed") return;
73
+ this.lifecycle = "crashed";
74
+ this.lastError = error;
75
+ this.detachWorker();
76
+ this.terminateWorker();
77
+ this.announceExit(error);
78
+ for (const listener of this.listeners.error) listener(event);
79
+ this.options.onError?.(error);
80
+ this.clearListeners();
81
+ }
82
+ /**
83
+ * Says why before the error closes the transport, as a server process's host does, so a crashed
84
+ * worker reaches the client as an exit with a reason rather than as a connection that went quiet.
85
+ */
86
+ announceExit(error) {
87
+ const event = new MessageEvent("message", { data: {
88
+ jsonrpc: "2.0",
89
+ method: LSP_SERVER_EXITED,
90
+ params: crashedParams(error)
91
+ } });
92
+ for (const listener of this.listeners.message) listener(event);
93
+ }
94
+ detachWorker() {
95
+ this.worker?.removeEventListener("message", this.handleMessage);
96
+ this.worker?.removeEventListener("error", this.handleError);
97
+ }
98
+ terminateWorker() {
99
+ this.worker?.terminate?.();
100
+ this.worker = null;
101
+ }
102
+ clearListeners() {
103
+ this.listeners.message.clear();
104
+ this.listeners.error.clear();
105
+ }
106
+ };
107
+ function createTypeScriptLspWorkerOwner(options = {}) {
108
+ return new TypeScriptLspWorkerOwner(options);
109
+ }
110
+ function defaultWorkerFactory() {
111
+ return new Worker(new URL("./assets/typescriptLsp.worker-Dv5GKuEN.js", import.meta.url), { type: "module" });
112
+ }
113
+ function crashedParams(error) {
114
+ return {
115
+ outcome: "crashed",
116
+ serverId: "typescript",
117
+ exitCode: null,
118
+ exitSignal: null,
119
+ error: {
120
+ code: "LSP_SERVER_EXITED",
121
+ message: error.message,
122
+ why: "The TypeScript language worker threw and stopped.",
123
+ fix: "Reload the editor to start the TypeScript language worker again."
124
+ }
125
+ };
126
+ }
127
+ function workerEventError(event) {
128
+ const message = event.message;
129
+ if (message) return new Error(message);
130
+ return /* @__PURE__ */ new Error("TypeScript LSP worker failed");
131
+ }
132
+ function workerError(error) {
133
+ if (error instanceof Error) return error;
134
+ return new Error(String(error));
135
+ }
136
+ function errorEvent(error) {
137
+ if (typeof ErrorEvent !== "undefined") return new ErrorEvent("error", { message: error.message });
138
+ return { message: error.message };
139
+ }
140
+ //#endregion
141
+ export { TypeScriptLspWorkerOwner, createTypeScriptLspWorkerOwner, workerEventError };
142
+
143
+ //# sourceMappingURL=workerOwner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workerOwner.js","names":["import.meta.ROLLDOWN_FILE_URL_9TOke_svF$KYEVI$ejk3gQ"],"sources":["../src/workerOwner.ts"],"sourcesContent":["import {\n LSP_SERVER_EXITED,\n type LspServerExitedParams,\n type LspWorkerLike,\n} from '@singapore-editor/lsp'\n\nexport type TypeScriptLspWorkerLifecycleState = 'ready' | 'disposed' | 'crashed'\n\nexport type TypeScriptLspWorkerOwnerSnapshot = {\n readonly lifecycle: TypeScriptLspWorkerLifecycleState\n readonly postedMessages: number\n readonly messageListeners: number\n readonly errorListeners: number\n readonly lastError: string | null\n}\n\nexport type TypeScriptLspWorkerOwnerOptions = {\n readonly workerFactory?: () => LspWorkerLike\n readonly onError?: (error: Error) => void\n}\n\nexport class TypeScriptLspWorkerOwner implements LspWorkerLike {\n private readonly listeners = {\n message: new Set<EventListener>(),\n error: new Set<EventListener>(),\n }\n private worker: LspWorkerLike | null = null\n private lifecycle: TypeScriptLspWorkerLifecycleState = 'ready'\n private postedMessages = 0\n private lastError: Error | null = null\n\n public constructor(private readonly options: TypeScriptLspWorkerOwnerOptions = {}) {\n this.worker = this.createWorker()\n }\n\n public inspect(): TypeScriptLspWorkerOwnerSnapshot {\n return {\n lifecycle: this.lifecycle,\n postedMessages: this.postedMessages,\n messageListeners: this.listeners.message.size,\n errorListeners: this.listeners.error.size,\n lastError: this.lastError?.message ?? null,\n }\n }\n\n public postMessage(message: unknown): void {\n const handle = this.worker\n if (!this.canPost(handle)) throw new Error('TypeScript LSP worker is not available')\n\n this.postedMessages += 1\n try {\n handle.postMessage(message)\n } catch (error) {\n const normalized = workerError(error)\n this.fail(normalized, errorEvent(normalized))\n throw normalized\n }\n }\n\n public addEventListener(type: 'message' | 'error', handler: EventListener): void {\n this.listeners[type].add(handler)\n }\n\n public removeEventListener(type: 'message' | 'error', handler: EventListener): void {\n this.listeners[type].delete(handler)\n }\n\n public terminate(): void {\n if (this.lifecycle === 'disposed') return\n\n this.lifecycle = 'disposed'\n this.detachWorker()\n this.terminateWorker()\n this.clearListeners()\n }\n\n public dispose(): void {\n this.terminate()\n }\n\n private createWorker(): LspWorkerLike {\n const handle = (this.options.workerFactory ?? defaultWorkerFactory)()\n handle.addEventListener('message', this.handleMessage)\n handle.addEventListener('error', this.handleError)\n return handle\n }\n\n private canPost(handle: LspWorkerLike | null): handle is LspWorkerLike {\n if (!handle) return false\n return this.lifecycle === 'ready'\n }\n\n private readonly handleMessage = (event: Event): void => {\n if (this.lifecycle !== 'ready') return\n for (const listener of this.listeners.message) listener(event)\n }\n\n private readonly handleError = (event: Event): void => {\n this.fail(workerEventError(event), event)\n }\n\n private fail(error: Error, event: Event): void {\n if (this.lifecycle === 'disposed') return\n\n this.lifecycle = 'crashed'\n this.lastError = error\n this.detachWorker()\n this.terminateWorker()\n this.announceExit(error)\n for (const listener of this.listeners.error) listener(event)\n this.options.onError?.(error)\n this.clearListeners()\n }\n\n /**\n * Says why before the error closes the transport, as a server process's host does, so a crashed\n * worker reaches the client as an exit with a reason rather than as a connection that went quiet.\n */\n private announceExit(error: Error): void {\n const event = new MessageEvent('message', {\n data: { jsonrpc: '2.0', method: LSP_SERVER_EXITED, params: crashedParams(error) },\n })\n for (const listener of this.listeners.message) listener(event)\n }\n\n private detachWorker(): void {\n this.worker?.removeEventListener('message', this.handleMessage)\n this.worker?.removeEventListener('error', this.handleError)\n }\n\n private terminateWorker(): void {\n this.worker?.terminate?.()\n this.worker = null\n }\n\n private clearListeners(): void {\n this.listeners.message.clear()\n this.listeners.error.clear()\n }\n}\n\nexport function createTypeScriptLspWorkerOwner(\n options: TypeScriptLspWorkerOwnerOptions = {},\n): TypeScriptLspWorkerOwner {\n return new TypeScriptLspWorkerOwner(options)\n}\n\nfunction defaultWorkerFactory(): Worker {\n return new Worker(new URL('./typescriptLsp.worker.ts', import.meta.url), {\n type: 'module',\n })\n}\n\nfunction crashedParams(error: Error): LspServerExitedParams {\n return {\n outcome: 'crashed',\n serverId: 'typescript',\n exitCode: null,\n exitSignal: null,\n error: {\n code: 'LSP_SERVER_EXITED',\n message: error.message,\n why: 'The TypeScript language worker threw and stopped.',\n fix: 'Reload the editor to start the TypeScript language worker again.',\n },\n }\n}\n\nexport function workerEventError(event: Event): Error {\n const message = (event as ErrorEvent).message\n if (message) return new Error(message)\n return new Error('TypeScript LSP worker failed')\n}\n\nfunction workerError(error: unknown): Error {\n if (error instanceof Error) return error\n return new Error(String(error))\n}\n\nfunction errorEvent(error: Error): Event {\n if (typeof ErrorEvent !== 'undefined') return new ErrorEvent('error', { message: error.message })\n return { message: error.message } as ErrorEvent\n}\n"],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { EditorDisposable } from '@singapore-editor/core/extensions';
2
+ import type { LspClient } from '@singapore-editor/lsp';
3
+ export type TypeScriptLspSourceFile = {
4
+ readonly path: string;
5
+ readonly text: string;
6
+ };
7
+ /** One source-file set shared by document plugins borrowing the same worker connection. */
8
+ export declare class TypeScriptLspWorkspace {
9
+ private readonly clients;
10
+ private readonly files;
11
+ private revision;
12
+ setWorkspaceFiles(files: readonly TypeScriptLspSourceFile[]): void;
13
+ upsertWorkspaceFiles(files: readonly TypeScriptLspSourceFile[]): void;
14
+ deleteWorkspaceFiles(paths: readonly string[]): void;
15
+ registerClient(client: LspClient, onError: ((error: unknown) => void) | undefined): EditorDisposable;
16
+ syncClient(client: LspClient): void;
17
+ private notifyClients;
18
+ private notify;
19
+ }
20
+ //# sourceMappingURL=workspace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAOtD,MAAM,MAAM,uBAAuB,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAQtF,2FAA2F;AAC3F,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoC;IAC5D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA4B;IAClD,OAAO,CAAC,QAAQ,CAAI;IAEb,iBAAiB,CAAC,KAAK,EAAE,SAAS,uBAAuB,EAAE,GAAG,IAAI;IAOlE,oBAAoB,CAAC,KAAK,EAAE,SAAS,uBAAuB,EAAE,GAAG,IAAI;IAUrE,oBAAoB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAOpD,cAAc,CACnB,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC,GAAG,SAAS,GAC9C,gBAAgB;IAiBZ,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAS1C,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,MAAM;CAOf"}
@@ -0,0 +1,74 @@
1
+ import { DELETE_WORKSPACE_FILES, SET_WORKSPACE_FILES, UPSERT_WORKSPACE_FILES } from "./worker/customMethods.js";
2
+ //#region src/workspace.ts
3
+ /** One source-file set shared by document plugins borrowing the same worker connection. */
4
+ var TypeScriptLspWorkspace = class {
5
+ clients = /* @__PURE__ */ new Map();
6
+ files = /* @__PURE__ */ new Map();
7
+ revision = 0;
8
+ setWorkspaceFiles(files) {
9
+ this.files.clear();
10
+ for (const file of files) this.files.set(file.path, file.text);
11
+ this.revision++;
12
+ for (const client of this.clients.keys()) this.syncClient(client);
13
+ }
14
+ upsertWorkspaceFiles(files) {
15
+ const changed = files.filter((file) => this.files.get(file.path) !== file.text);
16
+ if (changed.length === 0) return;
17
+ for (const file of changed) this.files.set(file.path, file.text);
18
+ this.revision++;
19
+ this.notifyClients(UPSERT_WORKSPACE_FILES, { files: changed.map(({ path, text }) => ({
20
+ path,
21
+ text
22
+ })) });
23
+ }
24
+ deleteWorkspaceFiles(paths) {
25
+ const removed = paths.filter((path) => this.files.delete(path));
26
+ if (removed.length === 0) return;
27
+ this.revision++;
28
+ this.notifyClients(DELETE_WORKSPACE_FILES, { paths: removed });
29
+ }
30
+ registerClient(client, onError) {
31
+ const state = this.clients.get(client) ?? {
32
+ leases: /* @__PURE__ */ new Set(),
33
+ initialization: null,
34
+ revision: -1
35
+ };
36
+ this.clients.set(client, state);
37
+ const lease = { onError };
38
+ state.leases.add(lease);
39
+ return { dispose: () => {
40
+ if (!state.leases.delete(lease)) return;
41
+ if (state.leases.size === 0) this.clients.delete(client);
42
+ } };
43
+ }
44
+ syncClient(client) {
45
+ const state = this.clients.get(client);
46
+ if (!state || !client.initialized) return;
47
+ if (state.initialization === client.initializeResult && state.revision === this.revision) return;
48
+ this.notify(client, state, SET_WORKSPACE_FILES, { files: Array.from(this.files, ([path, text]) => ({
49
+ path,
50
+ text
51
+ })) });
52
+ }
53
+ notifyClients(method, params) {
54
+ for (const [client, state] of this.clients) {
55
+ if (!client.initialized) continue;
56
+ if (state.initialization !== client.initializeResult) {
57
+ this.syncClient(client);
58
+ continue;
59
+ }
60
+ this.notify(client, state, method, params);
61
+ }
62
+ }
63
+ notify(client, state, method, params) {
64
+ state.initialization = client.initializeResult;
65
+ state.revision = this.revision;
66
+ client.notify(method, params).catch((error) => {
67
+ for (const lease of state.leases) lease.onError?.(error);
68
+ });
69
+ }
70
+ };
71
+ //#endregion
72
+ export { TypeScriptLspWorkspace };
73
+
74
+ //# sourceMappingURL=workspace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.js","names":[],"sources":["../src/workspace.ts"],"sourcesContent":["import type { EditorDisposable } from '@singapore-editor/core/extensions'\nimport type { LspClient } from '@singapore-editor/lsp'\nimport {\n SET_WORKSPACE_FILES,\n UPSERT_WORKSPACE_FILES,\n DELETE_WORKSPACE_FILES,\n} from './worker/customMethods'\n\nexport type TypeScriptLspSourceFile = { readonly path: string; readonly text: string }\ntype Lease = { readonly onError?: (error: unknown) => void }\ntype ClientState = {\n readonly leases: Set<Lease>\n initialization: LspClient['initializeResult']\n revision: number\n}\n\n/** One source-file set shared by document plugins borrowing the same worker connection. */\nexport class TypeScriptLspWorkspace {\n private readonly clients = new Map<LspClient, ClientState>()\n private readonly files = new Map<string, string>()\n private revision = 0\n\n public setWorkspaceFiles(files: readonly TypeScriptLspSourceFile[]): void {\n this.files.clear()\n for (const file of files) this.files.set(file.path, file.text)\n this.revision++\n for (const client of this.clients.keys()) this.syncClient(client)\n }\n\n public upsertWorkspaceFiles(files: readonly TypeScriptLspSourceFile[]): void {\n const changed = files.filter((file) => this.files.get(file.path) !== file.text)\n if (changed.length === 0) return\n for (const file of changed) this.files.set(file.path, file.text)\n this.revision++\n this.notifyClients(UPSERT_WORKSPACE_FILES, {\n files: changed.map(({ path, text }) => ({ path, text })),\n })\n }\n\n public deleteWorkspaceFiles(paths: readonly string[]): void {\n const removed = paths.filter((path) => this.files.delete(path))\n if (removed.length === 0) return\n this.revision++\n this.notifyClients(DELETE_WORKSPACE_FILES, { paths: removed })\n }\n\n public registerClient(\n client: LspClient,\n onError: ((error: unknown) => void) | undefined,\n ): EditorDisposable {\n const state = this.clients.get(client) ?? {\n leases: new Set<Lease>(),\n initialization: null,\n revision: -1,\n }\n this.clients.set(client, state)\n const lease = { onError }\n state.leases.add(lease)\n return {\n dispose: () => {\n if (!state.leases.delete(lease)) return\n if (state.leases.size === 0) this.clients.delete(client)\n },\n }\n }\n\n public syncClient(client: LspClient): void {\n const state = this.clients.get(client)\n if (!state || !client.initialized) return\n if (state.initialization === client.initializeResult && state.revision === this.revision) return\n this.notify(client, state, SET_WORKSPACE_FILES, {\n files: Array.from(this.files, ([path, text]) => ({ path, text })),\n })\n }\n\n private notifyClients(method: string, params: unknown): void {\n for (const [client, state] of this.clients) {\n if (!client.initialized) continue\n if (state.initialization !== client.initializeResult) {\n this.syncClient(client)\n continue\n }\n this.notify(client, state, method, params)\n }\n }\n\n private notify(client: LspClient, state: ClientState, method: string, params: unknown): void {\n state.initialization = client.initializeResult\n state.revision = this.revision\n void client.notify(method, params).catch((error) => {\n for (const lease of state.leases) lease.onError?.(error)\n })\n }\n}\n"],"mappings":";;;AAiBA,IAAa,yBAAb,MAAoC;CAClC,0BAA2B,IAAI,IAA4B;CAC3D,wBAAyB,IAAI,IAAoB;CACjD,WAAmB;CAEnB,kBAAyB,OAAiD;EACxE,KAAK,MAAM,MAAM;EACjB,KAAK,MAAM,QAAQ,OAAO,KAAK,MAAM,IAAI,KAAK,MAAM,KAAK,IAAI;EAC7D,KAAK;EACL,KAAK,MAAM,UAAU,KAAK,QAAQ,KAAK,GAAG,KAAK,WAAW,MAAM;CAClE;CAEA,qBAA4B,OAAiD;EAC3E,MAAM,UAAU,MAAM,QAAQ,SAAS,KAAK,MAAM,IAAI,KAAK,IAAI,MAAM,KAAK,IAAI;EAC9E,IAAI,QAAQ,WAAW,GAAG;EAC1B,KAAK,MAAM,QAAQ,SAAS,KAAK,MAAM,IAAI,KAAK,MAAM,KAAK,IAAI;EAC/D,KAAK;EACL,KAAK,cAAc,wBAAwB,EACzC,OAAO,QAAQ,KAAK,EAAE,MAAM,YAAY;GAAE;GAAM;EAAK,EAAE,EACzD,CAAC;CACH;CAEA,qBAA4B,OAAgC;EAC1D,MAAM,UAAU,MAAM,QAAQ,SAAS,KAAK,MAAM,OAAO,IAAI,CAAC;EAC9D,IAAI,QAAQ,WAAW,GAAG;EAC1B,KAAK;EACL,KAAK,cAAc,wBAAwB,EAAE,OAAO,QAAQ,CAAC;CAC/D;CAEA,eACE,QACA,SACkB;EAClB,MAAM,QAAQ,KAAK,QAAQ,IAAI,MAAM,KAAK;GACxC,wBAAQ,IAAI,IAAW;GACvB,gBAAgB;GAChB,UAAU;EACZ;EACA,KAAK,QAAQ,IAAI,QAAQ,KAAK;EAC9B,MAAM,QAAQ,EAAE,QAAQ;EACxB,MAAM,OAAO,IAAI,KAAK;EACtB,OAAO,EACL,eAAe;GACb,IAAI,CAAC,MAAM,OAAO,OAAO,KAAK,GAAG;GACjC,IAAI,MAAM,OAAO,SAAS,GAAG,KAAK,QAAQ,OAAO,MAAM;EACzD,EACF;CACF;CAEA,WAAkB,QAAyB;EACzC,MAAM,QAAQ,KAAK,QAAQ,IAAI,MAAM;EACrC,IAAI,CAAC,SAAS,CAAC,OAAO,aAAa;EACnC,IAAI,MAAM,mBAAmB,OAAO,oBAAoB,MAAM,aAAa,KAAK,UAAU;EAC1F,KAAK,OAAO,QAAQ,OAAO,qBAAqB,EAC9C,OAAO,MAAM,KAAK,KAAK,QAAQ,CAAC,MAAM,WAAW;GAAE;GAAM;EAAK,EAAE,EAClE,CAAC;CACH;CAEA,cAAsB,QAAgB,QAAuB;EAC3D,KAAK,MAAM,CAAC,QAAQ,UAAU,KAAK,SAAS;GAC1C,IAAI,CAAC,OAAO,aAAa;GACzB,IAAI,MAAM,mBAAmB,OAAO,kBAAkB;IACpD,KAAK,WAAW,MAAM;IACtB;GACF;GACA,KAAK,OAAO,QAAQ,OAAO,QAAQ,MAAM;EAC3C;CACF;CAEA,OAAe,QAAmB,OAAoB,QAAgB,QAAuB;EAC3F,MAAM,iBAAiB,OAAO;EAC9B,MAAM,WAAW,KAAK;EACtB,OAAY,OAAO,QAAQ,MAAM,CAAC,CAAC,OAAO,UAAU;GAClD,KAAK,MAAM,SAAS,MAAM,QAAQ,MAAM,UAAU,KAAK;EACzD,CAAC;CACH;AACF"}
package/package.json ADDED
@@ -0,0 +1,59 @@
1
+ {
2
+ "name": "@singapore-editor/typescript-lsp",
3
+ "version": "0.1.1",
4
+ "files": [
5
+ "README.md",
6
+ "dist"
7
+ ],
8
+ "type": "module",
9
+ "sideEffects": false,
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "import": "./dist/index.js",
14
+ "default": "./dist/index.js"
15
+ },
16
+ "./server": {
17
+ "types": "./dist/server.d.ts",
18
+ "import": "./dist/server.js",
19
+ "default": "./dist/server.js"
20
+ },
21
+ "./ts-diagnostics": {
22
+ "types": "./dist/tsDiagnostics.d.ts",
23
+ "import": "./dist/tsDiagnostics.js",
24
+ "default": "./dist/tsDiagnostics.js"
25
+ }
26
+ },
27
+ "publishConfig": {
28
+ "access": "public",
29
+ "registry": "https://registry.npmjs.org/"
30
+ },
31
+ "scripts": {
32
+ "bench:semantic-classification": "bun bench/semanticClassification.ts",
33
+ "build": "bun ../../scripts/build-package.ts",
34
+ "test": "vitest run",
35
+ "typecheck": "tsgo --noEmit",
36
+ "lint": "oxlint .",
37
+ "format": "oxfmt --write .",
38
+ "format:check": "oxfmt --check ."
39
+ },
40
+ "dependencies": {
41
+ "@singapore-editor/lsp": "0.1.1",
42
+ "@singapore-editor/lsp-plugin": "0.1.1",
43
+ "typescript": "~6.0.3",
44
+ "vscode-languageserver-protocol": "^3.18.4"
45
+ },
46
+ "devDependencies": {
47
+ "@singapore-editor/core": "0.1.2",
48
+ "@singapore-editor/plugin-ui": "0.1.0",
49
+ "@types/node": "^26.6.3",
50
+ "@typescript/native-preview": "7.0.0-dev.20260707.2",
51
+ "happy-dom": "^20.14.5",
52
+ "oxfmt": "0.70.0",
53
+ "oxlint": "1.85.0",
54
+ "vitest": "^5.0.2"
55
+ },
56
+ "peerDependencies": {
57
+ "@singapore-editor/core": "0.1.2"
58
+ }
59
+ }